From 480b52d44873754116e9b75e80b047ce85ee9076 Mon Sep 17 00:00:00 2001 From: Adam Guo Date: Mon, 17 Mar 2025 21:26:17 +0000 Subject: [PATCH] Remove warnings --- expected/preload_libraries_warning.out | 90 +++--------------------- pg_ivm.c | 95 -------------------------- pg_ivm.h | 1 - sql/preload_libraries_warning.sql | 25 +------ 4 files changed, 10 insertions(+), 201 deletions(-) diff --git a/expected/preload_libraries_warning.out b/expected/preload_libraries_warning.out index 91513d7..530e95f 100644 --- a/expected/preload_libraries_warning.out +++ b/expected/preload_libraries_warning.out @@ -2,14 +2,14 @@ -- whenever pg_ivm is not in session_preload_libraries. DROP EXTENSION IF EXISTS pg_ivm CASCADE; NOTICE: drop cascades to 12 other objects -DETAIL: drop cascades to trigger IVM_trigger_ins_before_17637 on table t -drop cascades to trigger IVM_trigger_del_before_17638 on table t -drop cascades to trigger IVM_trigger_upd_before_17639 on table t -drop cascades to trigger IVM_trigger_truncate_before_17640 on table t -drop cascades to trigger IVM_trigger_ins_after_17641 on table t -drop cascades to trigger IVM_trigger_del_after_17642 on table t -drop cascades to trigger IVM_trigger_upd_after_17643 on table t -drop cascades to trigger IVM_trigger_truncate_after_17644 on table t +DETAIL: drop cascades to trigger IVM_trigger_ins_before_17633 on table t +drop cascades to trigger IVM_trigger_del_before_17634 on table t +drop cascades to trigger IVM_trigger_upd_before_17635 on table t +drop cascades to trigger IVM_trigger_truncate_before_17636 on table t +drop cascades to trigger IVM_trigger_ins_after_17637 on table t +drop cascades to trigger IVM_trigger_del_after_17638 on table t +drop cascades to trigger IVM_trigger_upd_after_17639 on table t +drop cascades to trigger IVM_trigger_truncate_after_17640 on table t drop cascades to trigger IVM_prevent_immv_change_17621 on table mv drop cascades to trigger IVM_prevent_immv_change_17622 on table mv drop cascades to trigger IVM_prevent_immv_change_17623 on table mv @@ -48,76 +48,4 @@ CREATE EXTENSION pg_ivm VERSION '1.9'; -- expect success ALTER EXTENSION pg_ivm UPDATE; -- expect success DROP EXTENSION pg_ivm; CREATE EXTENSION pg_ivm; -- expect success --- Verify that the warning is emitted when each SQL function is called. -ALTER SYSTEM RESET session_preload_libraries; -SELECT pg_reload_conf(); - pg_reload_conf ----------------- - t -(1 row) - -\c - -CREATE TABLE mytab (i int primary key, a text); -SELECT pgivm.create_immv('myview', 'SELECT i, reverse(a) FROM mytab'); -WARNING: pg_ivm is not loaded in shared_preload_libraries or session_preload_libraries -HINT: Add pg_ivm to session_preload_libraries and restart the session. Or, add pg_ivm to shared_preload_libraries and restart Postgres. -NOTICE: created index "myview_index" on immv "myview" - create_immv -------------- - 0 -(1 row) - -SELECT pgivm.refresh_immv('myview', true); -WARNING: pg_ivm is not loaded in shared_preload_libraries or session_preload_libraries -HINT: Add pg_ivm to session_preload_libraries and restart the session. Or, add pg_ivm to shared_preload_libraries and restart Postgres. - refresh_immv --------------- - 0 -(1 row) - -SELECT pgivm.get_immv_def('myview'); -WARNING: pg_ivm is not loaded in shared_preload_libraries or session_preload_libraries -HINT: Add pg_ivm to session_preload_libraries and restart the session. Or, add pg_ivm to shared_preload_libraries and restart Postgres. - get_immv_def ---------------------------- - SELECT i, + - reverse(a) AS reverse+ - FROM mytab -(1 row) - --- Verify that the warning is emitted by the maintenance triggers. -INSERT INTO mytab VALUES (1, 'asdf'); -WARNING: pg_ivm is not loaded in shared_preload_libraries or session_preload_libraries -HINT: Add pg_ivm to session_preload_libraries and restart the session. Or, add pg_ivm to shared_preload_libraries and restart Postgres. --- Verify that the warning is not emitted after pg_ivm is added to --- session_preload_libraries. -ALTER SYSTEM SET session_preload_libraries = pg_ivm; -SELECT pg_reload_conf(); - pg_reload_conf ----------------- - t -(1 row) - -\c - -SELECT pgivm.create_immv('myview2', 'SELECT i, reverse(a) FROM mytab'); -NOTICE: created index "myview2_index" on immv "myview2" - create_immv -------------- - 1 -(1 row) - -SELECT pgivm.refresh_immv('myview2', true); - refresh_immv --------------- - 1 -(1 row) - -SELECT pgivm.get_immv_def('myview2'); - get_immv_def ---------------------------- - SELECT i, + - reverse(a) AS reverse+ - FROM mytab -(1 row) - -INSERT INTO mytab VALUES (2, 'qwer'); +DROP EXTENSION pg_ivm CASCADE; diff --git a/pg_ivm.c b/pg_ivm.c index 9603ea8..0a21544 100644 --- a/pg_ivm.c +++ b/pg_ivm.c @@ -51,8 +51,6 @@ static void parseNameAndColumns(const char *string, List **names, List **colName static void PgIvmObjectAccessHook(ObjectAccessType access, Oid classId, Oid objectId, int subId, void *arg); -static bool check_string_in_guc_list(const char *str, const char *guc_var, - const char *guc_name); /* SQL callable functions */ PG_FUNCTION_INFO_V1(create_immv); @@ -191,8 +189,6 @@ create_immv(PG_FUNCTION_ARGS) CreateTableAsStmt *ctas; StringInfoData command_buf; - warnIfPgIvmNotPreloaded(); - parseNameAndColumns(relname, &names, &colNames); initStringInfo(&command_buf); @@ -252,8 +248,6 @@ refresh_immv(PG_FUNCTION_ARGS) QueryCompletion qc; StringInfoData command_buf; - warnIfPgIvmNotPreloaded(); - initStringInfo(&command_buf); appendStringInfo(&command_buf, "SELECT refresh_immv('%s, %s);", relname, ispopulated ? "true" : "false"); @@ -273,13 +267,6 @@ IVM_prevent_immv_change(PG_FUNCTION_ARGS) TriggerData *trigdata = (TriggerData *) fcinfo->context; Relation rel = trigdata->tg_relation; - /* - * This warning is shown regardless of whether the user is manually - * modifying the materialized view, or the extension is performing - * incremental maintenance. - */ - warnIfPgIvmNotPreloaded(); - if (!ImmvIncrementalMaintenanceIsEnabled()) ereport(ERROR, (errcode(ERRCODE_WRONG_OBJECT_TYPE), @@ -369,8 +356,6 @@ get_immv_def(PG_FUNCTION_ARGS) Query *query = NULL; char *querystring = NULL; - warnIfPgIvmNotPreloaded(); - /* Make sure IMMV is a table. */ if (get_rel_relkind(matviewOid) != RELKIND_RELATION) PG_RETURN_NULL(); @@ -474,83 +459,3 @@ PgIvmFuncName(char *name) { return list_make2(makeString("pgivm"), makeString(name)); } - -/* - * pgIvmIsInSharedPreloadLibraries - * - * Check if pg_ivm is in the shared_preload_libraries parameter. - */ -static bool -pgIvmIsInSharedPreloadLibraries() -{ - return check_string_in_guc_list("pg_ivm", shared_preload_libraries_string, - "shared_preload_libraries"); -} - -/* - * pgIvmIsInSessionPreloadLibraries - * - * Check if pg_ivm is in the session_preload_libraries parameter. - */ -static bool -pgIvmIsInSessionPreloadLibraries() -{ - return check_string_in_guc_list("pg_ivm", session_preload_libraries_string, - "session_preload_libraries"); -} - -/* - * warnIfPgIvmNotPreloaded - * - * Emit a warning if pg_ivm is not in shared_preload_libraries or - * session_preload_libraries. - */ -void -warnIfPgIvmNotPreloaded() -{ - if (!pgIvmIsInSharedPreloadLibraries() && - !pgIvmIsInSessionPreloadLibraries()) - ereport(WARNING, - (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("pg_ivm is not loaded in shared_preload_libraries or " - "session_preload_libraries"), - errhint("Add pg_ivm to session_preload_libraries and restart " - "the session. Or, add pg_ivm to " - "shared_preload_libraries and restart Postgres."))); -} - -/* - * check_string_in_guc_list - * - * Check if a string is contained in a GUC parameter consisting of a - * comma-separated list of fields. - */ -static bool -check_string_in_guc_list(const char *str, const char *guc_var, - const char *guc_name) -{ - bool match = false; - char *guc_copy; - List *guc_list = NIL; - ListCell *lc; - - guc_copy = pstrdup(guc_var); - if (!SplitGUCList(guc_copy, ',', &guc_list)) - elog(ERROR, "could not parse %s", guc_name); - - foreach(lc, guc_list) - { - char *guc_str = (char *) lfirst(lc); - - if (strcmp(guc_str, str) == 0) - { - match = true; - break; - } - } - - pfree(guc_copy); - list_free(guc_list); - - return match; -} diff --git a/pg_ivm.h b/pg_ivm.h index c6c8e0e..88d7003 100644 --- a/pg_ivm.h +++ b/pg_ivm.h @@ -34,7 +34,6 @@ extern Oid PgIvmImmvRelationId(void); extern Oid PgIvmImmvPrimaryKeyIndexId(void); extern bool isImmv(Oid immv_oid); extern List *PgIvmFuncName(char *name); -extern void warnIfPgIvmNotPreloaded(void); /* createas.c */ diff --git a/sql/preload_libraries_warning.sql b/sql/preload_libraries_warning.sql index e42aa2b..5d93534 100644 --- a/sql/preload_libraries_warning.sql +++ b/sql/preload_libraries_warning.sql @@ -25,27 +25,4 @@ ALTER EXTENSION pg_ivm UPDATE; -- expect success DROP EXTENSION pg_ivm; CREATE EXTENSION pg_ivm; -- expect success --- Verify that the warning is emitted when each SQL function is called. -ALTER SYSTEM RESET session_preload_libraries; -SELECT pg_reload_conf(); -\c - - -CREATE TABLE mytab (i int primary key, a text); -SELECT pgivm.create_immv('myview', 'SELECT i, reverse(a) FROM mytab'); -SELECT pgivm.refresh_immv('myview', true); -SELECT pgivm.get_immv_def('myview'); - --- Verify that the warning is emitted by the maintenance triggers. -INSERT INTO mytab VALUES (1, 'asdf'); - --- Verify that the warning is not emitted after pg_ivm is added to --- session_preload_libraries. -ALTER SYSTEM SET session_preload_libraries = pg_ivm; -SELECT pg_reload_conf(); -\c - - -SELECT pgivm.create_immv('myview2', 'SELECT i, reverse(a) FROM mytab'); -SELECT pgivm.refresh_immv('myview2', true); -SELECT pgivm.get_immv_def('myview2'); -INSERT INTO mytab VALUES (2, 'qwer'); - +DROP EXTENSION pg_ivm CASCADE;