226 Assert(cte->search_clause || cte->cycle_clause);
252 if (cte->search_clause)
254 if (cte->search_clause->search_breadth_first)
263 if (cte->search_clause)
265 if (cte->cycle_clause)
269 if (cte->search_clause)
281 newq1->canSetTag =
true;
315 if (cte->search_clause)
320 if (cte->search_clause->search_breadth_first)
332 cte->search_clause->search_seq_column,
336 if (cte->cycle_clause)
340 cte->cycle_clause->cycle_mark_column,
346 cte->cycle_clause->cycle_path_column,
353 if (cte->search_clause)
357 if (cte->cycle_clause)
368 newq2->canSetTag =
true;
373 if (cte->search_clause)
377 if (cte->cycle_clause)
410 errmsg(
"with a SEARCH or CYCLE clause, the recursive reference to WITH query \"%s\" must be at the top level of its right-hand SELECT",
419 if (cte->search_clause)
428 cte->search_clause->search_seq_column,
432 if (cte->cycle_clause)
438 cte->cycle_clause->cycle_mark_type,
439 cte->cycle_clause->cycle_mark_typmod,
440 cte->cycle_clause->cycle_mark_collation, 0);
443 cte->cycle_clause->cycle_mark_column,
452 cte->cycle_clause->cycle_path_column,
464 if (cte->cycle_clause)
473 cte->cycle_clause->cycle_mark_type,
474 cte->cycle_clause->cycle_mark_typmod,
475 cte->cycle_clause->cycle_mark_collation, 0),
476 (
Expr *) cte->cycle_clause->cycle_mark_value,
478 cte->cycle_clause->cycle_mark_collation);
503 if (cte->search_clause)
507 if (cte->search_clause->search_breadth_first)
522 fs->resulttypmod = -1;
539 cte->search_clause->search_seq_column,
544 if (cte->cycle_clause)
563 caseexpr->casetype = cte->cycle_clause->cycle_mark_type;
564 caseexpr->casecollid = cte->cycle_clause->cycle_mark_collation;
568 casewhen->result = (
Expr *) cte->cycle_clause->cycle_mark_value;
570 caseexpr->defresult = (
Expr *) cte->cycle_clause->cycle_mark_default;
574 cte->cycle_clause->cycle_mark_column,
583 cte->cycle_clause->cycle_path_column,
590 if (cte->search_clause)
594 if (cte->cycle_clause)
603 if (cte->search_clause)
612 if (cte->cycle_clause)
615 sos->colTypmods =
lappend_int(
sos->colTypmods, cte->cycle_clause->cycle_mark_typmod);
616 sos->colCollations =
lappend_oid(
sos->colCollations, cte->cycle_clause->cycle_mark_collation);
632 if (cte->search_clause)
638 cte->search_clause->search_seq_column,
641 if (cte->cycle_clause)
645 cte->cycle_clause->cycle_mark_type,
646 cte->cycle_clause->cycle_mark_typmod,
647 cte->cycle_clause->cycle_mark_collation, 0),
649 cte->cycle_clause->cycle_mark_column,
655 cte->cycle_clause->cycle_path_column,
662 cte->ctecolnames =
ewcl;
663 if (cte->search_clause)
666 cte->ctecoltypmods =
lappend_int(cte->ctecoltypmods, -1);
669 if (cte->cycle_clause)
671 cte->ctecoltypes =
lappend_oid(cte->ctecoltypes, cte->cycle_clause->cycle_mark_type);
672 cte->ctecoltypmods =
lappend_int(cte->ctecoltypmods, cte->cycle_clause->cycle_mark_typmod);
673 cte->ctecolcollations =
lappend_oid(cte->ctecolcollations, cte->cycle_clause->cycle_mark_collation);
676 cte->ctecoltypmods =
lappend_int(cte->ctecoltypmods, -1);
Expr * make_opclause(Oid opno, Oid opresulttype, bool opretset, Expr *leftop, Expr *rightop, Oid opcollid, Oid inputcollid)
Const * makeConst(Oid consttype, int32 consttypmod, Oid constcollid, int constlen, Datum constvalue, bool constisnull, bool constbyval)
static Datum Int64GetDatum(int64 X)