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:

  1. 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.