Remove warnings

This commit is contained in:
Adam Guo 2025-03-17 21:26:17 +00:00
parent c4a5ed7fd4
commit 480b52d448
4 changed files with 10 additions and 201 deletions

View file

@ -2,14 +2,14 @@
-- whenever pg_ivm is not in session_preload_libraries. -- whenever pg_ivm is not in session_preload_libraries.
DROP EXTENSION IF EXISTS pg_ivm CASCADE; DROP EXTENSION IF EXISTS pg_ivm CASCADE;
NOTICE: drop cascades to 12 other objects NOTICE: drop cascades to 12 other objects
DETAIL: drop cascades to trigger IVM_trigger_ins_before_17637 on table t DETAIL: drop cascades to trigger IVM_trigger_ins_before_17633 on table t
drop cascades to trigger IVM_trigger_del_before_17638 on table t drop cascades to trigger IVM_trigger_del_before_17634 on table t
drop cascades to trigger IVM_trigger_upd_before_17639 on table t drop cascades to trigger IVM_trigger_upd_before_17635 on table t
drop cascades to trigger IVM_trigger_truncate_before_17640 on table t drop cascades to trigger IVM_trigger_truncate_before_17636 on table t
drop cascades to trigger IVM_trigger_ins_after_17641 on table t drop cascades to trigger IVM_trigger_ins_after_17637 on table t
drop cascades to trigger IVM_trigger_del_after_17642 on table t drop cascades to trigger IVM_trigger_del_after_17638 on table t
drop cascades to trigger IVM_trigger_upd_after_17643 on table t drop cascades to trigger IVM_trigger_upd_after_17639 on table t
drop cascades to trigger IVM_trigger_truncate_after_17644 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_17621 on table mv
drop cascades to trigger IVM_prevent_immv_change_17622 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 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 ALTER EXTENSION pg_ivm UPDATE; -- expect success
DROP EXTENSION pg_ivm; DROP EXTENSION pg_ivm;
CREATE EXTENSION pg_ivm; -- expect success CREATE EXTENSION pg_ivm; -- expect success
-- Verify that the warning is emitted when each SQL function is called. DROP EXTENSION pg_ivm CASCADE;
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');

View file

@ -51,8 +51,6 @@ static void parseNameAndColumns(const char *string, List **names, List **colName
static void PgIvmObjectAccessHook(ObjectAccessType access, Oid classId, static void PgIvmObjectAccessHook(ObjectAccessType access, Oid classId,
Oid objectId, int subId, void *arg); 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 */ /* SQL callable functions */
PG_FUNCTION_INFO_V1(create_immv); PG_FUNCTION_INFO_V1(create_immv);
@ -191,8 +189,6 @@ create_immv(PG_FUNCTION_ARGS)
CreateTableAsStmt *ctas; CreateTableAsStmt *ctas;
StringInfoData command_buf; StringInfoData command_buf;
warnIfPgIvmNotPreloaded();
parseNameAndColumns(relname, &names, &colNames); parseNameAndColumns(relname, &names, &colNames);
initStringInfo(&command_buf); initStringInfo(&command_buf);
@ -252,8 +248,6 @@ refresh_immv(PG_FUNCTION_ARGS)
QueryCompletion qc; QueryCompletion qc;
StringInfoData command_buf; StringInfoData command_buf;
warnIfPgIvmNotPreloaded();
initStringInfo(&command_buf); initStringInfo(&command_buf);
appendStringInfo(&command_buf, "SELECT refresh_immv('%s, %s);", appendStringInfo(&command_buf, "SELECT refresh_immv('%s, %s);",
relname, ispopulated ? "true" : "false"); relname, ispopulated ? "true" : "false");
@ -273,13 +267,6 @@ IVM_prevent_immv_change(PG_FUNCTION_ARGS)
TriggerData *trigdata = (TriggerData *) fcinfo->context; TriggerData *trigdata = (TriggerData *) fcinfo->context;
Relation rel = trigdata->tg_relation; 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()) if (!ImmvIncrementalMaintenanceIsEnabled())
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_WRONG_OBJECT_TYPE), (errcode(ERRCODE_WRONG_OBJECT_TYPE),
@ -369,8 +356,6 @@ get_immv_def(PG_FUNCTION_ARGS)
Query *query = NULL; Query *query = NULL;
char *querystring = NULL; char *querystring = NULL;
warnIfPgIvmNotPreloaded();
/* Make sure IMMV is a table. */ /* Make sure IMMV is a table. */
if (get_rel_relkind(matviewOid) != RELKIND_RELATION) if (get_rel_relkind(matviewOid) != RELKIND_RELATION)
PG_RETURN_NULL(); PG_RETURN_NULL();
@ -474,83 +459,3 @@ PgIvmFuncName(char *name)
{ {
return list_make2(makeString("pgivm"), makeString(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;
}

View file

@ -34,7 +34,6 @@ extern Oid PgIvmImmvRelationId(void);
extern Oid PgIvmImmvPrimaryKeyIndexId(void); extern Oid PgIvmImmvPrimaryKeyIndexId(void);
extern bool isImmv(Oid immv_oid); extern bool isImmv(Oid immv_oid);
extern List *PgIvmFuncName(char *name); extern List *PgIvmFuncName(char *name);
extern void warnIfPgIvmNotPreloaded(void);
/* createas.c */ /* createas.c */

View file

@ -25,27 +25,4 @@ ALTER EXTENSION pg_ivm UPDATE; -- expect success
DROP EXTENSION pg_ivm; DROP EXTENSION pg_ivm;
CREATE EXTENSION pg_ivm; -- expect success CREATE EXTENSION pg_ivm; -- expect success
-- Verify that the warning is emitted when each SQL function is called. DROP EXTENSION pg_ivm CASCADE;
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');