PostgreSQL Source Code  git master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
parse_expr.h File Reference
Include dependency graph for parse_expr.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

NodetransformExpr (ParseState *pstate, Node *expr, ParseExprKind exprKind)
 
const char * ParseExprKindName (ParseExprKind exprKind)
 

Variables

bool operator_precedence_warning
 
bool Transform_null_equals
 

Function Documentation

const char* ParseExprKindName ( ParseExprKind  exprKind)

Definition at line 3393 of file parse_expr.c.

References EXPR_KIND_ALTER_COL_TRANSFORM, EXPR_KIND_CHECK_CONSTRAINT, EXPR_KIND_COLUMN_DEFAULT, EXPR_KIND_DISTINCT_ON, EXPR_KIND_DOMAIN_CHECK, EXPR_KIND_EXECUTE_PARAMETER, EXPR_KIND_FILTER, EXPR_KIND_FROM_FUNCTION, EXPR_KIND_FROM_SUBSELECT, EXPR_KIND_FUNCTION_DEFAULT, EXPR_KIND_GROUP_BY, EXPR_KIND_HAVING, EXPR_KIND_INDEX_EXPRESSION, EXPR_KIND_INDEX_PREDICATE, EXPR_KIND_INSERT_TARGET, EXPR_KIND_JOIN_ON, EXPR_KIND_JOIN_USING, EXPR_KIND_LIMIT, EXPR_KIND_NONE, EXPR_KIND_OFFSET, EXPR_KIND_ORDER_BY, EXPR_KIND_OTHER, EXPR_KIND_PARTITION_EXPRESSION, EXPR_KIND_POLICY, EXPR_KIND_RETURNING, EXPR_KIND_SELECT_TARGET, EXPR_KIND_TRIGGER_WHEN, EXPR_KIND_UPDATE_SOURCE, EXPR_KIND_UPDATE_TARGET, EXPR_KIND_VALUES, EXPR_KIND_VALUES_SINGLE, EXPR_KIND_WHERE, EXPR_KIND_WINDOW_FRAME_RANGE, EXPR_KIND_WINDOW_FRAME_ROWS, EXPR_KIND_WINDOW_ORDER, and EXPR_KIND_WINDOW_PARTITION.

Referenced by check_agglevels_and_constraints(), check_srf_call_placement(), checkTargetlistEntrySQL92(), findTargetlistEntrySQL92(), and transformWindowFuncCall().

3394 {
3395  switch (exprKind)
3396  {
3397  case EXPR_KIND_NONE:
3398  return "invalid expression context";
3399  case EXPR_KIND_OTHER:
3400  return "extension expression";
3401  case EXPR_KIND_JOIN_ON:
3402  return "JOIN/ON";
3403  case EXPR_KIND_JOIN_USING:
3404  return "JOIN/USING";
3406  return "sub-SELECT in FROM";
3408  return "function in FROM";
3409  case EXPR_KIND_WHERE:
3410  return "WHERE";
3411  case EXPR_KIND_POLICY:
3412  return "POLICY";
3413  case EXPR_KIND_HAVING:
3414  return "HAVING";
3415  case EXPR_KIND_FILTER:
3416  return "FILTER";
3418  return "window PARTITION BY";
3420  return "window ORDER BY";
3422  return "window RANGE";
3424  return "window ROWS";
3426  return "SELECT";
3428  return "INSERT";
3431  return "UPDATE";
3432  case EXPR_KIND_GROUP_BY:
3433  return "GROUP BY";
3434  case EXPR_KIND_ORDER_BY:
3435  return "ORDER BY";
3436  case EXPR_KIND_DISTINCT_ON:
3437  return "DISTINCT ON";
3438  case EXPR_KIND_LIMIT:
3439  return "LIMIT";
3440  case EXPR_KIND_OFFSET:
3441  return "OFFSET";
3442  case EXPR_KIND_RETURNING:
3443  return "RETURNING";
3444  case EXPR_KIND_VALUES:
3446  return "VALUES";
3449  return "CHECK";
3452  return "DEFAULT";
3454  return "index expression";
3456  return "index predicate";
3458  return "USING";
3460  return "EXECUTE";
3462  return "WHEN";
3464  return "PARTITION BY";
3465 
3466  /*
3467  * There is intentionally no default: case here, so that the
3468  * compiler will warn if we add a new ParseExprKind without
3469  * extending this switch. If we do see an unrecognized value at
3470  * runtime, we'll fall through to the "unrecognized" return.
3471  */
3472  }
3473  return "unrecognized expression kind";
3474 }
Node* transformExpr ( ParseState pstate,
Node expr,
ParseExprKind  exprKind 
)

Definition at line 146 of file parse_expr.c.

References Assert, EXPR_KIND_NONE, ParseState::p_expr_kind, and transformExprRecurse().

Referenced by cookConstraint(), cookDefault(), domainAddConstraint(), EvaluateParams(), ExpandIndirectionStar(), findTargetlistEntrySQL99(), interpret_function_parameter_list(), resolve_unique_index_expr(), transformAlterTableStmt(), transformArraySubscripts(), transformExpressionList(), transformFrameOffset(), transformFuncCall(), transformGroupingFunc(), transformIndexStmt(), transformJoinUsingClause(), transformLimitClause(), transformOnConflictArbiter(), transformPartitionSpec(), transformRangeFunction(), transformRangeTableFunc(), transformRangeTableSample(), transformTargetEntry(), and transformWhereClause().

147 {
148  Node *result;
149  ParseExprKind sv_expr_kind;
150 
151  /* Save and restore identity of expression type we're parsing */
152  Assert(exprKind != EXPR_KIND_NONE);
153  sv_expr_kind = pstate->p_expr_kind;
154  pstate->p_expr_kind = exprKind;
155 
156  result = transformExprRecurse(pstate, expr);
157 
158  pstate->p_expr_kind = sv_expr_kind;
159 
160  return result;
161 }
static Node * transformExprRecurse(ParseState *pstate, Node *expr)
Definition: parse_expr.c:164
Definition: nodes.h:510
ParseExprKind
Definition: parse_node.h:33
ParseExprKind p_expr_kind
Definition: parse_node.h:186
#define Assert(condition)
Definition: c.h:681

Variable Documentation

bool Transform_null_equals

Definition at line 45 of file parse_expr.c.

Referenced by transformAExprOp().