diff --git a/src/backend/utils/adt/formatting.c b/src/backend/utils/adt/formatting.c index ef5ec3227a1..4a5112bd49d 100644 --- a/src/backend/utils/adt/formatting.c +++ b/src/backend/utils/adt/formatting.c @@ -5804,14 +5804,14 @@ NUM_numpart_to_char(NUMProc *Np, int id) ++Np->inout_p; } } - else + else if (*Np->number_p) { *Np->inout_p = *Np->number_p; /* Write DIGIT */ ++Np->inout_p; Np->num_in = true; } } - /* do no exceed string length */ + /* do not advance past end of string */ if (*Np->number_p) ++Np->number_p; } diff --git a/src/test/regress/expected/numeric.out b/src/test/regress/expected/numeric.out index c58e232a263..79c2eae8e61 100644 --- a/src/test/regress/expected/numeric.out +++ b/src/test/regress/expected/numeric.out @@ -2116,6 +2116,12 @@ SELECT to_char('100'::numeric, 'FM999.'); 100 (1 row) +SELECT to_char('100'::numeric, 'FM999.SG "items"'); + to_char +------------ + 100+ items +(1 row) + SELECT to_char('100'::numeric, 'FM999'); to_char --------- diff --git a/src/test/regress/sql/numeric.sql b/src/test/regress/sql/numeric.sql index 640c6d92f4c..140fe30e8b7 100644 --- a/src/test/regress/sql/numeric.sql +++ b/src/test/regress/sql/numeric.sql @@ -1033,6 +1033,7 @@ FROM v; SELECT to_char('100'::numeric, 'FM999.9'); SELECT to_char('100'::numeric, 'FM999.'); +SELECT to_char('100'::numeric, 'FM999.SG "items"'); SELECT to_char('100'::numeric, 'FM999'); SELECT to_char('12345678901'::float8, 'FM9999999999D9999900000000000000000');