From d50c38d2d25952f214cc0e95ed2c49f88737fb12 Mon Sep 17 00:00:00 2001 From: chenxiaobin19 <1025221611@qq.com> Date: Tue, 23 Apr 2024 20:43:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DUserVar=E6=97=A0=E6=95=88coll?= =?UTF-8?q?ation=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/backend/nodes/nodeFuncs.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/common/backend/nodes/nodeFuncs.cpp b/src/common/backend/nodes/nodeFuncs.cpp index e5f7aed02..2f805f678 100644 --- a/src/common/backend/nodes/nodeFuncs.cpp +++ b/src/common/backend/nodes/nodeFuncs.cpp @@ -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;