Skip to content

Commit ed3682f

Browse files
committed
fix issue
Signed-off-by: Rohit Bhagat <rohitbgt@amazon.com>
1 parent 3444c14 commit ed3682f

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

src/backend/parser/parse_clause.c

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3430,6 +3430,20 @@ addTargetToSortList(ParseState *pstate, TargetEntry *tle,
34303430
COERCION_IMPLICIT,
34313431
COERCE_IMPLICIT_CAST,
34323432
-1);
3433+
else if (IsA(tle->expr, Const) && !((Const *) tle->expr)->constisnull)
3434+
{
3435+
Oid sys_varcharoid;
3436+
int32 typmod = strlen(DatumGetCString(((Const *) tle->expr)->constvalue)) + VARHDRSZ;
3437+
TypeName *varcharTypeName = makeTypeNameFromNameList(list_make2(makeString("sys"),
3438+
makeString("varchar")));
3439+
3440+
sys_varcharoid = typenameTypeId(NULL, (const TypeName *) varcharTypeName);
3441+
tle->expr = (Expr *) coerce_to_target_type(pstate, (Node *) tle->expr,
3442+
restype, sys_varcharoid, typmod,
3443+
COERCION_IMPLICIT,
3444+
COERCE_IMPLICIT_CAST,
3445+
-1);
3446+
}
34333447
restype = TEXTOID;
34343448
}
34353449

@@ -3572,6 +3586,20 @@ addTargetToGroupList(ParseState *pstate, TargetEntry *tle,
35723586
COERCION_IMPLICIT,
35733587
COERCE_IMPLICIT_CAST,
35743588
-1);
3589+
else if (IsA(tle->expr, Const) && !((Const *) tle->expr)->constisnull)
3590+
{
3591+
Oid sys_varcharoid;
3592+
int32 typmod = strlen(DatumGetCString(((Const *) tle->expr)->constvalue)) + VARHDRSZ;
3593+
TypeName *varcharTypeName = makeTypeNameFromNameList(list_make2(makeString("sys"),
3594+
makeString("varchar")));
3595+
3596+
sys_varcharoid = typenameTypeId(NULL, (const TypeName *) varcharTypeName);
3597+
tle->expr = (Expr *) coerce_to_target_type(pstate, (Node *) tle->expr,
3598+
restype, sys_varcharoid, typmod,
3599+
COERCION_IMPLICIT,
3600+
COERCE_IMPLICIT_CAST,
3601+
-1);
3602+
}
35753603
restype = TEXTOID;
35763604
}
35773605

0 commit comments

Comments
 (0)