更新时间:2026-10-21 GMT+08:00
失效重编译函数
- transform_view_dep_source()
描述:刷新GS_DEP_SOURCE系统表的source字段。即将视图定义语句中SELECT *的星号扩展;将视图创建时对象使用的schema补充写入;刷新视图依赖关系。该函数仅支持管理员用户调用。
参数:无
返回值类型:void
- gs_compile_schema(schema_name in varchar2 default null, compile_all in boolean default false, retry_times in int default 10)
参数:参数说明如表1所示。
返回值类型:boolean,true表示重编译成功,false表示重编译失败。
表1 gs_compile_schema参数说明 参数
类型
入参/出参
是否可以为空
描述
schema_name
VARCHAR2
IN
是
命名空间名称。
compile_all
BOOLEAN
IN
是
是否对全部对象进行重编译,包括当前处于有效状态的视图。
- false:编译PG_OBJECT表中失效状态的视图。
- true:编译PG_OBJECT表中所有的视图。
retry_times
INT
IN
是
重编译失败,重试次数。
示例:
-- 开启失效重编译参数。 gaussdb=# SET enable_view_invalidation='on'; -- 创建schema、表,视图依赖表,视图依赖视图。 gaussdb=# DROP SCHEMA IF EXISTS tesch2 CASCADE; gaussdb=# CREATE SCHEMA tesch2; gaussdb=# SET current_schema = tesch2; gaussdb=# CREATE TABLE tab1 (c1 INT, c2 INT); NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'c1' as the distribution column by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. CREATE TABLE gaussdb=# CREATE VIEW v_tab1 AS SELECT * FROM tab1; gaussdb=# CREATE VIEW v_tab2 AS SELECT * FROM v_tab1; gaussdb=# CREATE VIEW v_tab3 AS SELECT * FROM tab1; -- 删除表。 gaussdb=# DROP TABLE tab1; -- 查询对象有效性。 gaussdb=# SELECT c.relname, o.valid FROM pg_catalog.pg_object o JOIN pg_catalog.pg_class c ON c.oid = o.object_oid WHERE c.relname = 'v_tab1' or c.relname = 'v_tab2' or c.relname = 'v_tab3'; relname | valid ---------+------- v_tab1 | f v_tab2 | f v_tab3 | f (3 rows) -- 恢复删除的表。 gaussdb=# CREATE TABLE tab1 (c1 INT, c2 INT); NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'c1' as the distribution column by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. CREATE TABLE -- 重编译tesch2命名空间下视图对象。 gaussdb=# CALL pg_catalog.gs_compile_schema('tesch2', true, 1); INFO: successful CONTEXT: referenced column: gs_compile_schema SQL statement "select pkg_util.gs_compile_schema(:schema_name, :compile_all, :retry_times);" PL/pgSQL function gs_compile_schema(character varying,boolean,integer) line 24 at EXECUTE statement INFO: The number of executions is 1 INFO: successful gs_compile_schema ------------------- t (1 row) -- 再次查询视图有效性。 gaussdb=# SELECT c.relname, o.valid FROM pg_catalog.pg_object o JOIN pg_catalog.pg_class c ON c.oid = o.object_oid WHERE c.relname = 'v_tab1' or c.relname = 'v_tab2' or c.relname = 'v_tab3'; relname | valid ---------+------- v_tab1 | t v_tab2 | t v_tab3 | t (3 rows) -- 删除视图。 gaussdb=# DROP VIEW v_tab3; gaussdb=# DROP VIEW v_tab2; gaussdb=# DROP VIEW v_tab1; -- 删除表。 gaussdb=# DROP TABLE tab1; gaussdb=# RESET current_schema; -- 删除schema。 gaussdb=# DROP SCHEMA tesch2 CASCADE;
父主题: 函数和操作符