diff --git a/src/common/backend/utils/adt/formatting.cpp b/src/common/backend/utils/adt/formatting.cpp index 0367cf913c5a2cf2ddd14c2187a32a25334e01fc..71d4b7869ac7e02c38e6570c2d8cadfbbffeb18d 100644 --- a/src/common/backend/utils/adt/formatting.cpp +++ b/src/common/backend/utils/adt/formatting.cpp @@ -4638,7 +4638,9 @@ Datum blob_to_char_default(PG_FUNCTION_ARGS) Datum unknown_to_char2(PG_FUNCTION_ARGS) { - Datum result = DirectFunctionCall2(numeric_to_char, PG_GETARG_DATUM(0), PG_GETARG_DATUM(1)); + Datum arg0 = DirectFunctionCall3(numeric_in, PG_GETARG_DATUM(0), NUMERICOID, -1); + Datum arg1 = DirectFunctionCall1(textin, PG_GETARG_DATUM(1)); + Datum result = DirectFunctionCall2(numeric_to_char, arg0, arg1); PG_RETURN_DATUM(result); } diff --git a/src/test/regress/expected/hw_functions.out b/src/test/regress/expected/hw_functions.out index d19360d0be100aa7cb0926a0994de5eef18d1d60..f8604a9272034a530aeeb70148f1e51e00dbe9bc 100644 --- a/src/test/regress/expected/hw_functions.out +++ b/src/test/regress/expected/hw_functions.out @@ -957,4 +957,10 @@ SELECT to_char('',''); (1 row) +SELECT to_char('2020-08-26 14:57:33','yyyy-mon-dd hh24:mi:ss'); +ERROR: invalid input syntax for type numeric: "2020-08-26 14:57:33" +CONTEXT: referenced column: to_char +SELECT to_char('2020','yyyy-mon-dd hh24:mi:ss'); +ERROR: multiple decimal points +CONTEXT: referenced column: to_char drop schema basefunc cascade; diff --git a/src/test/regress/sql/hw_functions.sql b/src/test/regress/sql/hw_functions.sql index f18e611f02aace0928dbb6c77c5daaa2a8a6fb2b..d637c951c6b8958e5400354917e4f4834fb6edce 100644 --- a/src/test/regress/sql/hw_functions.sql +++ b/src/test/regress/sql/hw_functions.sql @@ -373,5 +373,7 @@ SELECT to_char(c1, 873) FROM blob_table ; DROP TABLE blob_table; DROP TABLE blob_t; SELECT to_char('',''); +SELECT to_char('2020-08-26 14:57:33','yyyy-mon-dd hh24:mi:ss'); +SELECT to_char('2020','yyyy-mon-dd hh24:mi:ss'); drop schema basefunc cascade;