Add restriction of SubLink in pg_ivm
sublink in targetlist is not supported, so add this restrict and testcase.
This commit is contained in:
parent
60e6a358b5
commit
d5bfa72a4a
3 changed files with 10 additions and 0 deletions
|
|
@ -968,6 +968,12 @@ check_ivm_restriction_walker(Node *node, check_ivm_restriction_context *context)
|
|||
case T_TargetEntry:
|
||||
{
|
||||
TargetEntry *tle = (TargetEntry *)node;
|
||||
if (IsA(tle->expr, SubLink))
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||
errmsg("this query is not allowed on incrementally maintainable materialized view"),
|
||||
errhint("sublink only supports subquery with EXISTS clause in WHERE clause")));
|
||||
|
||||
if (isIvmName(tle->resname))
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||
|
|
|
|||
|
|
@ -845,6 +845,9 @@ ERROR: this query is not allowed on incrementally maintainable materialized vie
|
|||
HINT: OR or NOT conditions and EXISTS condition are not used together
|
||||
SELECT create_immv('mv_ivm_subquery', 'SELECT a.j FROM mv_base_a a WHERE EXISTS(SELECT 1 FROM mv_base_a a2 WHERE EXISTS(SELECT 1 FROM mv_base_b b WHERE a2.i = b.i))');
|
||||
ERROR: nested sublink is not supported on incrementally maintainable materialized view
|
||||
SELECT create_immv('mv_ivm_subquery', 'SELECT EXISTS(SELECT 1 from mv_base_b) FROM mv_base_a a');
|
||||
ERROR: this query is not allowed on incrementally maintainable materialized view
|
||||
HINT: sublink only supports subquery with EXISTS clause in WHERE clause
|
||||
-- support join subquery in FROM clause
|
||||
BEGIN;
|
||||
SELECT create_immv('mv_ivm_join_subquery', 'SELECT i, j, k FROM ( SELECT i, a.j, b.k FROM mv_base_b b INNER JOIN mv_base_a a USING(i)) tmp');
|
||||
|
|
|
|||
|
|
@ -271,6 +271,7 @@ SELECT create_immv('mv_ivm_subquery', 'SELECT * FROM generate_series(1, (SELECT
|
|||
SELECT create_immv('mv_ivm_subquery', 'SELECT a.j FROM mv_base_a a WHERE EXISTS(SELECT 1 FROM mv_base_b b WHERE a.i = b.i)');
|
||||
SELECT create_immv('mv_ivm_subquery', 'SELECT a.i,a.j FROM mv_base_a a WHERE EXISTS(SELECT 1 FROM mv_base_b b WHERE a.i = b.i) OR a.i > 2');
|
||||
SELECT create_immv('mv_ivm_subquery', 'SELECT a.j FROM mv_base_a a WHERE EXISTS(SELECT 1 FROM mv_base_a a2 WHERE EXISTS(SELECT 1 FROM mv_base_b b WHERE a2.i = b.i))');
|
||||
SELECT create_immv('mv_ivm_subquery', 'SELECT EXISTS(SELECT 1 from mv_base_b) FROM mv_base_a a');
|
||||
|
||||
-- support join subquery in FROM clause
|
||||
BEGIN;
|
||||
|
|
|
|||
Loading…
Reference in a new issue