MCPcopy Create free account
hub / github.com/apache/cloudberry / transformSubLink

Function transformSubLink

src/backend/parser/parse_expr.c:1766–2001  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1764}
1765
1766static Node *
1767transformSubLink(ParseState *pstate, SubLink *sublink)
1768{
1769 Node *result = (Node *) sublink;
1770 Query *qtree;
1771 const char *err;
1772
1773 /*
1774 * Check to see if the sublink is in an invalid place within the query. We
1775 * allow sublinks everywhere in SELECT/INSERT/UPDATE/DELETE, but generally
1776 * not in utility statements.
1777 */
1778 err = NULL;
1779 switch (pstate->p_expr_kind)
1780 {
1781 case EXPR_KIND_NONE:
1782 Assert(false); /* can't happen */
1783 break;
1784 case EXPR_KIND_OTHER:
1785 /* Accept sublink here; caller must throw error if wanted */
1786 break;
1787 case EXPR_KIND_JOIN_ON:
1788 case EXPR_KIND_JOIN_USING:
1789 case EXPR_KIND_FROM_SUBSELECT:
1790 case EXPR_KIND_FROM_FUNCTION:
1791 case EXPR_KIND_WHERE:
1792 case EXPR_KIND_POLICY:
1793 case EXPR_KIND_HAVING:
1794 case EXPR_KIND_FILTER:
1795 case EXPR_KIND_WINDOW_PARTITION:
1796 case EXPR_KIND_WINDOW_ORDER:
1797 case EXPR_KIND_WINDOW_FRAME_RANGE:
1798 case EXPR_KIND_WINDOW_FRAME_ROWS:
1799 case EXPR_KIND_WINDOW_FRAME_GROUPS:
1800 case EXPR_KIND_SELECT_TARGET:
1801 case EXPR_KIND_INSERT_TARGET:
1802 case EXPR_KIND_UPDATE_SOURCE:
1803 case EXPR_KIND_UPDATE_TARGET:
1804 case EXPR_KIND_GROUP_BY:
1805 case EXPR_KIND_ORDER_BY:
1806 case EXPR_KIND_DISTINCT_ON:
1807 case EXPR_KIND_LIMIT:
1808 case EXPR_KIND_OFFSET:
1809 case EXPR_KIND_RETURNING:
1810 case EXPR_KIND_VALUES:
1811 case EXPR_KIND_VALUES_SINGLE:
1812 case EXPR_KIND_CYCLE_MARK:
1813 /* okay */
1814 break;
1815 case EXPR_KIND_CHECK_CONSTRAINT:
1816 case EXPR_KIND_DOMAIN_CHECK:
1817 err = _("cannot use subquery in check constraint");
1818 break;
1819 case EXPR_KIND_COLUMN_DEFAULT:
1820 case EXPR_KIND_FUNCTION_DEFAULT:
1821 err = _("cannot use subquery in DEFAULT expression");
1822 break;
1823 case EXPR_KIND_INDEX_EXPRESSION:

Callers 1

transformExprRecurseFunction · 0.85

Calls 15

parser_errpositionFunction · 0.85
parse_sub_analyzeFunction · 0.85
makeStringFunction · 0.85
transformExprRecurseFunction · 0.85
exprTypeFunction · 0.85
exprTypmodFunction · 0.85
exprCollationFunction · 0.85
lappendFunction · 0.85
list_lengthFunction · 0.85
make_row_comparison_opFunction · 0.85
errcodeFunction · 0.50

Tested by

no test coverage detected