@@ -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