修复UserVar无效collation的问题

This commit is contained in:
chenxiaobin19
2024-04-23 20:43:06 +08:00
committed by yaoxin
parent 0ef5579fca
commit d50c38d2d2

View File

@ -834,7 +834,14 @@ Oid exprCollation(const Node* expr)
coll = exprCollation((Node*)((const NamedArgExpr*)expr)->arg);
break;
case T_UserVar:
coll = ((const Const*)(((UserVar*)expr)->value))->constcollid;
if (IsA(((UserVar*)expr)->value, FuncExpr)) {
coll = ((const FuncExpr*)(((UserVar*)expr)->value))->funccollid;
} else {
coll = ((const Const*)(((UserVar*)expr)->value))->constcollid;
}
if (!OidIsValid(coll)) {
coll = get_typcollation(exprType((const Node*)(((UserVar*)expr)->value)));
}
break;
case T_OpExpr:
coll = ((const OpExpr*)expr)->opcollid;