pg_variables — Oturum Değişkenleri
pg_variables uzantısı, istemci oturumlarında değişkenleri tanımlamak ve kullanmak için fonksiyonlar sağlar. Bu uzantı, pgv_set ve pgv_get fonksiyonlarıyla skaler değişkenleri tanımlamanıza ve kullanmanıza olanak tanır. Değişkenler yalnızca oturum bağlamında erişilebilir ve işlemlerden bağımsızdır.
Değişkenler, oturum verilerini depolamak, sorgu sonuçlarını önbelleğe almak gibi amaçlarla kullanılabilir ve birçok durumda geçici tabloların etkili bir alternatifi olabilir.
Açıklama
pg_variables uzantısı, PostgreSQL'de oturum bazlı değişkenler kullanmanıza olanak tanır. Bu değişkenler, oturum boyunca kalıcıdır ve işlemlerden bağımsızdır. Değişkenler, oturum sonlandığında otomatik olarak temizlenir.
Özellikler
- Skaler değişkenler için pgv_set ve pgv_get fonksiyonları
- Kayıt tipi için birkaç fonksiyon
- Değişkenler yalnızca oturum bağlamında erişilebilir
- Değişkenler işlem bağımsızdır
- Oturum verilerini depolamak için kullanılabilir
- Sorgu sonuçlarını önbelleğe almak için kullanılabilir
- Geçici tabloların etkili bir alternatifi olabilir
<strong>Not:</strong> İşlemler ve savepoint'ler için destek Postgres Pro 11 için planlanmıştır.
Kurulum
pg_variables uzantısını kurmak için aşağıdaki adımları izleyin:
- pg_variables uzantısını veritabanında oluşturun:
CREATE EXTENSION pg_variables;
Uzantı, her veritabanında ayrı ayrı oluşturulmalıdır. Uzantıyı kullanmak istediğiniz her veritabanında CREATE EXTENSION komutunu çalıştırın.
Kullanım
pg_variables uzantısı kurulduktan sonra, pgv_set ve pgv_get fonksiyonlarını kullanarak değişkenleri tanımlayabilir ve kullanabilirsiniz.
Temel Kullanım
Bir değişken tanımlamak için pgv_set fonksiyonunu kullanın:
SELECT pgv_set('myvar', 'value');
Bir değişkenin değerini almak için pgv_get fonksiyonunu kullanın:
SELECT pgv_get('myvar');
Değişken Tipleri
pg_variables uzantısı aşağıdaki veri tiplerini destekler:
- Skaler tipler (text, integer, numeric, boolean, vb.)
- Kayıt tipleri (record)
- Diziler (arrays)
Fonksiyonlar
pg_variables uzantısı aşağıdaki fonksiyonları sağlar:
Skaler Değişken Fonksiyonları
pgv_set
pgv_set(variable_name text, value anyelement) returns void
Belirtilen adla bir değişken tanımlar veya mevcut bir değişkenin değerini günceller.
<strong>Parametreler:</strong>
- <code>variable_name</code> — Değişken adı
- <code>value</code> — Değişken değeri (herhangi bir veri tipi)
pgv_get
pgv_get(variable_name text) returns anyelement
Belirtilen adla bir değişkenin değerini döndürür. Değişken yoksa NULL döndürür.
<strong>Parametreler:</strong>
- <code>variable_name</code> — Değişken adı
pgv_free
pgv_free(variable_name text) returns void
Belirtilen adla bir değişkeni siler.
<strong>Parametreler:</strong>
- <code>variable_name</code> — Silinecek değişken adı
pgv_free_all
pgv_free_all() returns void
Oturumdaki tüm değişkenleri siler.
Kayıt Tipi Fonksiyonları
pg_variables uzantısı, kayıt tipleri için de birkaç fonksiyon sağlar. Bu fonksiyonlar, kayıt tipi değişkenlerini tanımlamak ve kullanmak için kullanılabilir.
<strong>Not:</strong> Kayıt tipi fonksiyonları için detaylı dokümantasyon, uzantının kaynak kodunda bulunabilir.
Örnekler
Aşağıda pg_variables uzantısının kullanımına ilişkin örnekler verilmiştir:
Örnek 1: Temel Kullanım
-- Bir değişken tanımla
SELECT pgv_set('username', 'john_doe');
-- Değişkenin değerini al
SELECT pgv_get('username');
-- Sonuç: 'john_doe'
-- Değişkenin değerini güncelle
SELECT pgv_set('username', 'jane_doe');
-- Güncellenmiş değeri al
SELECT pgv_get('username');
-- Sonuç: 'jane_doe'
Örnek 2: Farklı Veri Tipleri
-- Metin değişkeni
SELECT pgv_set('message', 'Hello, World!');
SELECT pgv_get('message');
-- Tamsayı değişkeni
SELECT pgv_set('counter', 42);
SELECT pgv_get('counter');
-- Boolean değişkeni
SELECT pgv_set('is_active', true);
SELECT pgv_get('is_active');
-- Numeric değişkeni
SELECT pgv_set('price', 99.99);
SELECT pgv_get('price');
Örnek 3: Sorgu Sonuçlarını Önbelleğe Alma
-- Sorgu sonucunu önbelleğe al
DO $$
DECLARE
result_count integer;
BEGIN
-- Önce önbellekten kontrol et
result_count := pgv_get('user_count');
IF result_count IS NULL THEN
-- Önbellekte yoksa, sorguyu çalıştır ve önbelleğe al
SELECT COUNT(*) INTO result_count FROM users;
PERFORM pgv_set('user_count', result_count);
END IF;
-- Önbellekten veya sorgudan gelen değeri kullan
RAISE NOTICE 'User count: %', result_count;
END $$;
Örnek 4: Değişkenleri Temizleme
-- Tek bir değişkeni sil
SELECT pgv_free('username');
-- Tüm değişkenleri sil
SELECT pgv_free_all();Kullanılabilirlik
pg_variables uzantısı aşağıdaki şekillerde kullanılabilir:
- <strong>GitHub:</strong> Kaynak kodu GitHub'da mevcuttur
- <strong>Postgres Pro Standard:</strong> Postgres Pro Standard'ın bir parçası olarak dahildir
- <strong>Postgres Pro Enterprise:</strong> Postgres Pro Enterprise'ın bir parçası olarak dahildir
<strong>Not:</strong> pg_variables uzantısının en güncel sürümü için GitHub deposunu ziyaret edin.