Remove warnings
This commit is contained in:
parent
c4a5ed7fd4
commit
480b52d448
4 changed files with 10 additions and 201 deletions
|
|
@ -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;
|
||||
|
|
|
|||
95
pg_ivm.c
95
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;
|
||||
}
|
||||
|
|
|
|||
1
pg_ivm.h
1
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 */
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in a new issue