fix an irregular case of get_immv_def()
Add test case, when an argument of immvrelid is not IMMV oids.
This commit is contained in:
parent
2d9abee78c
commit
bd6776c7ff
3 changed files with 32 additions and 1 deletions
|
|
@ -1043,6 +1043,24 @@ DELETE FROM mv_ivm_1;
|
|||
ERROR: cannot change materialized view "mv_ivm_1"
|
||||
TRUNCATE mv_ivm_1;
|
||||
ERROR: cannot change materialized view "mv_ivm_1"
|
||||
-- get_immv_def function
|
||||
SELECT immvrelid, get_immv_def(immvrelid) FROM pg_ivm_immv ORDER BY 1;
|
||||
immvrelid | get_immv_def
|
||||
-----------+----------------------------------
|
||||
mv_ivm_1 | SELECT a.i, +
|
||||
| a.j, +
|
||||
| b.k +
|
||||
| FROM (mv_base_a a +
|
||||
| JOIN mv_base_b b USING (i))
|
||||
(1 row)
|
||||
|
||||
-- mv_base_b is not immv
|
||||
SELECT 'mv_base_b'::regclass, get_immv_def('mv_base_b');
|
||||
regclass | get_immv_def
|
||||
-----------+--------------
|
||||
mv_base_b |
|
||||
(1 row)
|
||||
|
||||
DROP TABLE mv_base_b CASCADE;
|
||||
NOTICE: drop cascades to 3 other objects
|
||||
DETAIL: drop cascades to table mv_ivm_1
|
||||
|
|
|
|||
10
pg_ivm.c
10
pg_ivm.c
|
|
@ -330,12 +330,20 @@ get_immv_def(PG_FUNCTION_ARGS)
|
|||
{
|
||||
Oid matviewOid = PG_GETARG_OID(0);
|
||||
Relation matviewRel = NULL;
|
||||
char * querystring = NULL;
|
||||
Query *query = NULL;
|
||||
char *querystring = NULL;
|
||||
|
||||
matviewRel = table_open(matviewOid, AccessShareLock);
|
||||
/* Make sure IMMV is a table. */
|
||||
Assert(matviewRel->rd_rel->relkind == RELKIND_RELATION);
|
||||
|
||||
query = get_immv_query(matviewRel);
|
||||
if (query == NULL)
|
||||
{
|
||||
table_close(matviewRel, NoLock);
|
||||
PG_RETURN_TEXT_P(cstring_to_text(""));
|
||||
}
|
||||
|
||||
querystring = pg_ivm_get_querydef(get_immv_query(matviewRel), false);
|
||||
|
||||
table_close(matviewRel, NoLock);
|
||||
|
|
|
|||
|
|
@ -460,5 +460,10 @@ UPDATE mv_ivm_1 SET k = 1 WHERE i = 1;
|
|||
DELETE FROM mv_ivm_1;
|
||||
TRUNCATE mv_ivm_1;
|
||||
|
||||
-- get_immv_def function
|
||||
SELECT immvrelid, get_immv_def(immvrelid) FROM pg_ivm_immv ORDER BY 1;
|
||||
-- mv_base_b is not immv
|
||||
SELECT 'mv_base_b'::regclass, get_immv_def('mv_base_b');
|
||||
|
||||
DROP TABLE mv_base_b CASCADE;
|
||||
DROP TABLE mv_base_a CASCADE;
|
||||
|
|
|
|||
Loading…
Reference in a new issue