Fix for get_immv_def()
Fix that get_immv_def() return NULL when oid is not a Relation.
This commit is contained in:
parent
bd6776c7ff
commit
b2e357612d
3 changed files with 8 additions and 7 deletions
|
|
@ -21,7 +21,7 @@ SELECT immvrelid, get_immv_def(immvrelid) FROM pg_ivm_immv ORDER BY 1;
|
|||
-----------+-----------------------
|
||||
mv | SELECT i +
|
||||
| FROM t
|
||||
mv2 | SELECT i +
|
||||
mv2 | SELECT i AS x +
|
||||
| FROM t +
|
||||
| WHERE ((i % 2) = 0)
|
||||
(2 rows)
|
||||
|
|
@ -35,7 +35,7 @@ DROP TABLE mv;
|
|||
SELECT immvrelid, get_immv_def(immvrelid) FROM pg_ivm_immv ORDER BY 1;
|
||||
immvrelid | get_immv_def
|
||||
-----------+-----------------------
|
||||
mv2 | SELECT i +
|
||||
mv2 | SELECT i AS x +
|
||||
| FROM t +
|
||||
| WHERE ((i % 2) = 0)
|
||||
(1 row)
|
||||
|
|
|
|||
|
|
@ -430,7 +430,7 @@ SELECT * FROM mv_ivm_min_max ORDER BY 1,2,3;
|
|||
ROLLBACK;
|
||||
-- support MIN(), MAX() aggregate functions without GROUP clause
|
||||
BEGIN;
|
||||
SELECT create_immv('mv_ivm_min_max', 'SELECT MIN(j), MAX(j) FROM mv_base_a');
|
||||
SELECT create_immv('mv_ivm_min_max(min_j, max_j)', 'SELECT MIN(j), MAX(j) FROM mv_base_a');
|
||||
create_immv
|
||||
-------------
|
||||
1
|
||||
|
|
|
|||
9
pg_ivm.c
9
pg_ivm.c
|
|
@ -333,18 +333,19 @@ get_immv_def(PG_FUNCTION_ARGS)
|
|||
Query *query = NULL;
|
||||
char *querystring = NULL;
|
||||
|
||||
matviewRel = table_open(matviewOid, AccessShareLock);
|
||||
/* Make sure IMMV is a table. */
|
||||
Assert(matviewRel->rd_rel->relkind == RELKIND_RELATION);
|
||||
if (get_rel_relkind(matviewOid) != RELKIND_RELATION)
|
||||
PG_RETURN_NULL();
|
||||
|
||||
matviewRel = table_open(matviewOid, AccessShareLock);
|
||||
query = get_immv_query(matviewRel);
|
||||
if (query == NULL)
|
||||
{
|
||||
table_close(matviewRel, NoLock);
|
||||
PG_RETURN_TEXT_P(cstring_to_text(""));
|
||||
PG_RETURN_NULL();
|
||||
}
|
||||
|
||||
querystring = pg_ivm_get_querydef(get_immv_query(matviewRel), false);
|
||||
querystring = pg_ivm_get_viewdef(matviewRel, false);
|
||||
|
||||
table_close(matviewRel, NoLock);
|
||||
PG_RETURN_TEXT_P(cstring_to_text(querystring));
|
||||
|
|
|
|||
Loading…
Reference in a new issue