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

Function exprSetCollation

src/backend/nodes/nodeFuncs.c:1059–1223  ·  view source on GitHub ↗

* exprSetCollation - * Assign collation information to an expression tree node. * * Note: since this is only used during parse analysis, we don't need to * worry about subplans or PlaceHolderVars. */

Source from the content-addressed store, hash-verified

1057 * worry about subplans or PlaceHolderVars.
1058 */
1059void
1060exprSetCollation(Node *expr, Oid collation)
1061{
1062 switch (nodeTag(expr))
1063 {
1064 case T_Var:
1065 ((Var *) expr)->varcollid = collation;
1066 break;
1067 case T_Const:
1068 ((Const *) expr)->constcollid = collation;
1069 break;
1070 case T_Param:
1071 ((Param *) expr)->paramcollid = collation;
1072 break;
1073 case T_Aggref:
1074 ((Aggref *) expr)->aggcollid = collation;
1075 break;
1076 case T_GroupingFunc:
1077 Assert(!OidIsValid(collation));
1078 break;
1079 case T_GroupId:
1080 Assert(!OidIsValid(collation));
1081 break;
1082 case T_GroupingSetId:
1083 Assert(!OidIsValid(collation));
1084 break;
1085 case T_WindowFunc:
1086 ((WindowFunc *) expr)->wincollid = collation;
1087 break;
1088 case T_SubscriptingRef:
1089 ((SubscriptingRef *) expr)->refcollid = collation;
1090 break;
1091 case T_FuncExpr:
1092 ((FuncExpr *) expr)->funccollid = collation;
1093 break;
1094 case T_NamedArgExpr:
1095 Assert(collation == exprCollation((Node *) ((NamedArgExpr *) expr)->arg));
1096 break;
1097 case T_OpExpr:
1098 ((OpExpr *) expr)->opcollid = collation;
1099 break;
1100 case T_DistinctExpr:
1101 ((DistinctExpr *) expr)->opcollid = collation;
1102 break;
1103 case T_NullIfExpr:
1104 ((NullIfExpr *) expr)->opcollid = collation;
1105 break;
1106 case T_ScalarArrayOpExpr:
1107 /* ScalarArrayOpExpr's result is boolean ... */
1108 Assert(!OidIsValid(collation)); /* ... so never set a collation */
1109 break;
1110 case T_BoolExpr:
1111 /* BoolExpr's result is boolean ... */
1112 Assert(!OidIsValid(collation)); /* ... so never set a collation */
1113 break;
1114 case T_SubLink:
1115#ifdef USE_ASSERT_CHECKING
1116 {

Callers 1

assign_collations_walkerFunction · 0.85

Calls 1

exprCollationFunction · 0.85

Tested by

no test coverage detected