clean up codes

This commit is contained in:
Takuma Hoshiai 2024-03-01 17:01:54 +09:00
parent b3603c776d
commit 6b9df6a8d5
2 changed files with 28 additions and 22 deletions

View file

@ -465,7 +465,7 @@ makeIvmAggColumn(ParseState *pstate, Aggref *aggref, char *resname, AttrNumber *
/* Make a Func with a dummy arg, and then override this by the original agg's args. */ /* Make a Func with a dummy arg, and then override this by the original agg's args. */
node = ParseFuncOrColumn(pstate, fn->funcname, list_make1(dmy_arg), NULL, fn, false, -1); node = ParseFuncOrColumn(pstate, fn->funcname, list_make1(dmy_arg), NULL, fn, false, -1);
((Aggref *)node)->args = aggref->args; ((Aggref *) node)->args = aggref->args;
tle_count = makeTargetEntry((Expr *) node, tle_count = makeTargetEntry((Expr *) node,
*next_resno, *next_resno,
@ -501,7 +501,7 @@ makeIvmAggColumn(ParseState *pstate, Aggref *aggref, char *resname, AttrNumber *
/* Make a Func with dummy args, and then override this by the original agg's args. */ /* Make a Func with dummy args, and then override this by the original agg's args. */
node = ParseFuncOrColumn(pstate, fn->funcname, dmy_args, NULL, fn, false, -1); node = ParseFuncOrColumn(pstate, fn->funcname, dmy_args, NULL, fn, false, -1);
((Aggref *)node)->args = aggref->args; ((Aggref *) node)->args = aggref->args;
tle_count = makeTargetEntry((Expr *) node, tle_count = makeTargetEntry((Expr *) node,
*next_resno, *next_resno,
@ -572,7 +572,7 @@ CreateIvmTriggersOnBaseTablesRecurse(Query *qry, Node *node, Oid matviewOid,
Query *query = (Query *) node; Query *query = (Query *) node;
ListCell *lc; ListCell *lc;
CreateIvmTriggersOnBaseTablesRecurse(qry, (Node *)query->jointree, matviewOid, relids, ex_lock); CreateIvmTriggersOnBaseTablesRecurse(qry, (Node *) query->jointree, matviewOid, relids, ex_lock);
foreach(lc, query->cteList) foreach(lc, query->cteList)
{ {
CommonTableExpr *cte = (CommonTableExpr *) lfirst(lc); CommonTableExpr *cte = (CommonTableExpr *) lfirst(lc);
@ -604,7 +604,7 @@ CreateIvmTriggersOnBaseTablesRecurse(Query *qry, Node *node, Oid matviewOid,
{ {
Query *subquery = rte->subquery; Query *subquery = rte->subquery;
Assert(rte->subquery != NULL); Assert(rte->subquery != NULL);
CreateIvmTriggersOnBaseTablesRecurse(subquery, (Node *)subquery, matviewOid, relids, ex_lock); CreateIvmTriggersOnBaseTablesRecurse(subquery, (Node *) subquery, matviewOid, relids, ex_lock);
} }
} }
break; break;
@ -767,7 +767,7 @@ check_ivm_restriction_walker(Node *node, check_ivm_restriction_context *context)
{ {
case T_Query: case T_Query:
{ {
Query *qry = (Query *)node; Query *qry = (Query *) node;
ListCell *lc; ListCell *lc;
List *vars; List *vars;
@ -823,7 +823,7 @@ check_ivm_restriction_walker(Node *node, check_ivm_restriction_context *context)
if (IsA(lfirst(lc), Var)) if (IsA(lfirst(lc), Var))
{ {
Var *var = (Var *) lfirst(lc); Var *var = (Var *) lfirst(lc);
/* if system column, return error */ /* if the view has a system column, raise an error */
if (var->varattno < 0) if (var->varattno < 0)
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
@ -831,7 +831,7 @@ check_ivm_restriction_walker(Node *node, check_ivm_restriction_context *context)
} }
} }
/* check if type in the top target list had an equality operator */ /* check that each type in the target list has an equality operator */
if (context->sublevels_up == 0) if (context->sublevels_up == 0)
{ {
foreach(lc, qry->targetList) foreach(lc, qry->targetList)
@ -902,6 +902,7 @@ check_ivm_restriction_walker(Node *node, check_ivm_restriction_context *context)
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("VALUES is not supported on incrementally maintainable materialized view"))); errmsg("VALUES is not supported on incrementally maintainable materialized view")));
if (rte->relkind == RELKIND_RELATION && isImmv(rte->relid)) if (rte->relkind == RELKIND_RELATION && isImmv(rte->relid))
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
@ -920,9 +921,11 @@ check_ivm_restriction_walker(Node *node, check_ivm_restriction_context *context)
/* /*
* additional restriction checks for exists subquery * additional restriction checks for exists subquery
* *
* If the query has any EXISTS clauses and columns in them refer to * If the query has an EXISTS subquery and columns of a table in
* columns in tables in the output query, those columns must be * the outer query are used in the EXISTS subquery, those columns
* included in the target list. * must be included in the target list. These columns are required
* to identify tuples in the view to be affected by modification
* of tables in the EXISTS subquery.
*/ */
if (context->exists_qual_vars != NIL && context->sublevels_up == 0) if (context->exists_qual_vars != NIL && context->sublevels_up == 0)
{ {
@ -986,12 +989,13 @@ check_ivm_restriction_walker(Node *node, check_ivm_restriction_context *context)
} }
case T_TargetEntry: case T_TargetEntry:
{ {
TargetEntry *tle = (TargetEntry *)node; TargetEntry *tle = (TargetEntry *) node;
if (isIvmName(tle->resname)) if (isIvmName(tle->resname))
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("column name %s is not supported on incrementally maintainable materialized view", tle->resname))); errmsg("column name %s is not supported on incrementally maintainable materialized view", tle->resname)));
if (context->has_agg && !IsA(tle->expr, Aggref) && contain_aggs_of_level((Node *) tle->expr, 0)) if (context->has_agg && !IsA(tle->expr, Aggref) && contain_aggs_of_level((Node *) tle->expr, 0))
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
@ -1015,7 +1019,7 @@ check_ivm_restriction_walker(Node *node, check_ivm_restriction_context *context)
} }
case T_JoinExpr: case T_JoinExpr:
{ {
JoinExpr *joinexpr = (JoinExpr *)node; JoinExpr *joinexpr = (JoinExpr *) node;
if (joinexpr->jointype > JOIN_INNER) if (joinexpr->jointype > JOIN_INNER)
ereport(ERROR, ereport(ERROR,
@ -1117,7 +1121,8 @@ check_ivm_restriction_walker(Node *node, check_ivm_restriction_context *context)
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("nested sublink is not supported on incrementally maintainable materialized view"))); errmsg("nested sublink is not supported on incrementally maintainable materialized view")));
subselect = (Query *)sublink->subselect; subselect = (Query *) sublink->subselect;
/* raise ERROR if the sublink has CTE */ /* raise ERROR if the sublink has CTE */
if (subselect->cteList) if (subselect->cteList)
ereport(ERROR, ereport(ERROR,
@ -1647,7 +1652,7 @@ get_primary_key_attnos_from_query(Query *query, List **constraintList)
i = 1; i = 1;
foreach(lc, key_attnos_list) foreach(lc, key_attnos_list)
{ {
Bitmapset *bms = (Bitmapset *)lfirst(lc); Bitmapset *bms = (Bitmapset *) lfirst(lc);
if (!bms_is_empty(bms) && bms_is_member(i, rels_in_from)) if (!bms_is_empty(bms) && bms_is_member(i, rels_in_from))
return NULL; return NULL;
i++; i++;

View file

@ -1606,7 +1606,8 @@ rewrite_exists_subquery_walker(Query *query, Node *node, int *count)
if (fromexpr->quals != NULL) if (fromexpr->quals != NULL)
{ {
query = rewrite_exists_subquery_walker(query, fromexpr->quals, count); query = rewrite_exists_subquery_walker(query, fromexpr->quals, count);
/* drop subquery in WHERE clause */
/* drop WHERE clause when it has only one EXISTS */
if (IsA(fromexpr->quals, SubLink)) if (IsA(fromexpr->quals, SubLink))
fromexpr->quals = NULL; fromexpr->quals = NULL;
} }
@ -1691,7 +1692,7 @@ rewrite_exists_subquery_walker(Query *query, Node *node, int *count)
/* assume the new RTE is at the end */ /* assume the new RTE is at the end */
rtr = makeNode(RangeTblRef); rtr = makeNode(RangeTblRef);
rtr->rtindex = list_length(query->rtable); rtr->rtindex = list_length(query->rtable);
((FromExpr *)query->jointree)->fromlist = lappend(((FromExpr *)query->jointree)->fromlist, rtr); ((FromExpr *) query->jointree)->fromlist = lappend(((FromExpr *) query->jointree)->fromlist, rtr);
/* /*
* EXISTS condition is converted to HAVING count(*) > 0. * EXISTS condition is converted to HAVING count(*) > 0.
@ -1699,13 +1700,13 @@ rewrite_exists_subquery_walker(Query *query, Node *node, int *count)
*/ */
opId = OpernameGetOprid(list_make2(makeString("pg_catalog"), makeString(">")), INT8OID, INT4OID); opId = OpernameGetOprid(list_make2(makeString("pg_catalog"), makeString(">")), INT8OID, INT4OID);
opexpr = make_opclause(opId, BOOLOID, false, opexpr = make_opclause(opId, BOOLOID, false,
(Expr *)fn_node, (Expr *) fn_node,
(Expr *)makeConst(INT4OID, -1, InvalidOid, sizeof(int32), Int32GetDatum(0), false, true), (Expr *) makeConst(INT4OID, -1, InvalidOid, sizeof(int32), Int32GetDatum(0), false, true),
InvalidOid, InvalidOid); InvalidOid, InvalidOid);
fix_opfuncids((Node *) opexpr); fix_opfuncids((Node *) opexpr);
query->hasSubLinks = false; query->hasSubLinks = false;
subselect->havingQual = (Node *)opexpr; subselect->havingQual = (Node *) opexpr;
(*count)++; (*count)++;
break; break;
} }
@ -1728,7 +1729,7 @@ rewrite_exists_subquery_walker(Query *query, Node *node, int *count)
* SELECT 1, COUNT(*) AS __ivm_exists_count_0__ * SELECT 1, COUNT(*) AS __ivm_exists_count_0__
* FROM t2 * FROM t2
* WHERE t1.key = t2.key * WHERE t1.key = t2.key
* HAVING __ivm_exists_count_0__ > 0) AS ex * HAVING COUNT(*) > 0) AS ex
*/ */
Query * Query *
rewrite_query_for_exists_subquery(Query *query) rewrite_query_for_exists_subquery(Query *query)
@ -1740,7 +1741,7 @@ rewrite_query_for_exists_subquery(Query *query)
errmsg("this query is not allowed on incrementally maintainable materialized view"), errmsg("this query is not allowed on incrementally maintainable materialized view"),
errhint("aggregate function and EXISTS condition are not supported at the same time"))); errhint("aggregate function and EXISTS condition are not supported at the same time")));
return rewrite_exists_subquery_walker(query, (Node *)query, &count); return rewrite_exists_subquery_walker(query, (Node *) query, &count);
} }
/* /*