Help Center/
GaussDB/
Developer Guide(Centralized_V2.0-8.x)/
Stored Procedure/
Recompilation upon Expiration/
Dependency Record
Updated on 2025-05-29 GMT+08:00
Dependency Record
When functions, stored procedures, and packages are used, the relationships between objects and other objects are recorded.
Examples
-- Configure the following parameters: SET ddl_invalid_mode='invalid'; SET SET enable_force_create_obj=on; SET -- pkg2 depends on pkg1 by type. CREATE OR REPLACE PACKAGE pkg1 IS TYPE rec1 IS RECORD(id INT, name VARCHAR(2)); END pkg1; / CREATE PACKAGE CREATE OR REPLACE PACKAGE pkg2 IS TYPE rec2 IS RECORD(rec1 pkg1.rec1); END pkg2; / CREATE PACKAGE SELECT DISTINCT p.pkgname AS objname, q.pkgname AS refobjname FROM pg_depend AS dp INNER JOIN gs_package AS p ON dp.objid=p.oid INNER JOIN gs_package AS q ON dp.refobjid=q.oid WHERE p.pkgname='pkg2'; objname | refobjname ---------+------------ pkg2 | pkg1 -- pkg2 depends on pkg1 by variable. CREATE OR REPLACE PACKAGE pkg1 IS var1 INT; END pkg1; / CREATE PACKAGE CREATE OR REPLACE PACKAGE pkg2 IS var2 INT := pkg1.var1; END pkg2; / CREATE PACKAGE SELECT DISTINCT p.pkgname AS objname, q.pkgname AS refobjname FROM pg_depend AS dp INNER JOIN gs_package AS p ON dp.objid=p.oid INNER JOIN gs_package AS q ON dp.refobjid=q.oid WHERE p.pkgname='pkg2'; objname | refobjname ---------+------------ pkg2 | pkg1 (1 row) -- pkg2 depends on pkg1 by direct calling. CREATE OR REPLACE PACKAGE pkg1 IS PROCEDURE proc1(); END pkg1; / CREATE PACKAGE CREATE OR REPLACE PACKAGE BODY pkg1 IS PROCEDURE proc1() AS BEGIN RAISE INFO 'proc1'; END; END pkg1; / CREATE PACKAGE BODY CREATE OR REPLACE PACKAGE pkg2 IS PROCEDURE proc2(); END pkg2; / CREATE PACKAGE CREATE OR REPLACE PACKAGE BODY pkg2 IS PROCEDURE proc2() AS BEGIN RAISE INFO 'proc2'; pkg1.proc1(); END; END pkg2; / CREATE PACKAGE BODY SELECT DISTINCT p.pkgname AS objname, q.pkgname AS refobjname FROM pg_depend AS dp INNER JOIN gs_package AS p ON dp.objid=p.oid INNER JOIN gs_package AS q ON dp.refobjid=q.oid WHERE p.pkgname='pkg2'; objname | refobjname ---------+------------ pkg2 | pkg1 (1 row) -- func2 depends on func1 by direct calling. CREATE OR REPLACE FUNCTION func1 RETURN INT AS BEGIN RETURN 1; END; / CREATE FUNCTION CREATE OR REPLACE FUNCTION func2 RETURN INT AS BEGIN func1(); RETURN 1; END; / CREATE FUNCTION SELECT DISTINCT p.proname AS objname, q.proname AS refobjname FROM pg_depend AS dp INNER JOIN pg_proc AS p ON dp.objid=p.oid INNER JOIN pg_proc AS q ON dp.refobjid=q.oid WHERE p.proname='func2' AND q.proname='func1'; objname | refobjname ---------+------------ func2 | func1 (1 row) -- func2 calls func1 through perform. The dependency is not recorded. CREATE OR REPLACE FUNCTION func1 RETURN INT AS BEGIN RETURN 1; END; / CREATE FUNCTION CREATE OR REPLACE FUNCTION func2 RETURN INT AS BEGIN PERFORM func1(); RETURN 1; END; / CREATE FUNCTION SELECT DISTINCT p.proname AS objname, q.proname AS refobjname FROM pg_depend AS dp INNER JOIN pg_proc AS p ON dp.objid=p.oid INNER JOIN pg_proc AS q ON dp.refobjid=q.oid WHERE p.proname='func2' AND q.proname='func1'; objname | refobjname ---------+------------ (0 rows)
Parent topic: Recompilation upon Expiration
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
The system is busy. Please try again later.
For any further questions, feel free to contact us through the chatbot.
Chatbot