size 2 PostgreSQL fonksiyonları, 'called_function' ve 'caller_function', ikincisi birincinin çağırıyor olduğunu varsayalım. Tam: 'caller_function' diğer bazı işlevini çağırırsaPostgreSQL işlevleri arasında bağımlılık bulmak mümkün mü? Ben</strong></p> <p>PostgreSQL <strong>9.2.10 kullanıyorum
CREATE FUNCTION called_function() RETURNS varchar AS
$BODY$
BEGIN
RETURN 'something';
END;
CREATE FUNCTION caller_function() RETURNS varchar AS
$BODY$
BEGIN
RETURN called_function();
END;
Şimdi, SQL kullanarak ve tek fonksiyon adını bilerek, bunu öğrenmek istiyorum. Ya da 'called_function' başka bir işlev tarafından çağrılırsa. Mümkün mü?
Ben işlevin OID (en çok '123' olduğunu varsayalım) almaya çalıştı ve sonra pg_depend tabloya baktı:SELECT * FROM pg_catalog.pg_depend dep WHERE dep.objid = 123 OR dep.objsubid = 123 OR dep.refobjid = 123 OR dep.refobjsubid = 123 OR dep.refobjsubid = 123;
Ama sadece pg_language ve pg_namespace bağımlılık bulur. Daha fazla bir şey yok. örneğin masa pg_proc de
Mümkün olduğunu sanmıyorum. Üstelik postgres, C de dahil olmak üzere farklı dilleri destekler ve bunlara bağımlılıkları bulmak o kadar kolay değildir. Plpgsql ve sql işlevleri için bir geçici çözüm düşünebilirim: pg_proc tablosunda arama yapabilirsiniz, örneğin: 'oid'i seçin, pg_proc'dan proname, prosrc'nin null olmadığı ve '%%' gibi prosrc'yi seçmediğini seçin. Ama bu çok güvenilir bir yol değil. –