aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/formatting.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils/adt/formatting.c')
-rw-r--r--src/backend/utils/adt/formatting.c33
1 files changed, 15 insertions, 18 deletions
diff --git a/src/backend/utils/adt/formatting.c b/src/backend/utils/adt/formatting.c
index 36353c39c16..946f3e28c65 100644
--- a/src/backend/utils/adt/formatting.c
+++ b/src/backend/utils/adt/formatting.c
@@ -4877,7 +4877,7 @@ NUM_processor(FormatNode *node, NUMDesc *Num, char *inout, char *number,
*/
#define NUM_TOCHAR_prepare \
do { \
- len = VARSIZE_ANY_EXHDR(fmt); \
+ int len = VARSIZE_ANY_EXHDR(fmt); \
if (len <= 0 || len >= (INT_MAX-VARHDRSZ)/NUM_MAX_ITEM_SIZ) \
PG_RETURN_TEXT_P(cstring_to_text("")); \
result = (text *) palloc0((len * NUM_MAX_ITEM_SIZ) + 1 + VARHDRSZ); \
@@ -4890,6 +4890,8 @@ do { \
*/
#define NUM_TOCHAR_finish \
do { \
+ int len; \
+ \
NUM_processor(format, &Num, VARDATA(result), numstr, plen, sign, true, PG_GET_COLLATION()); \
\
if (shouldFree) \
@@ -4961,8 +4963,7 @@ numeric_to_char(PG_FUNCTION_ARGS)
FormatNode *format;
text *result;
bool shouldFree;
- int len = 0,
- plen = 0,
+ int plen = 0,
sign = 0;
char *numstr,
*orgnum,
@@ -5008,16 +5009,15 @@ numeric_to_char(PG_FUNCTION_ARGS)
numstr = (char *) palloc(strlen(orgnum) + 2);
*numstr = ' ';
strcpy(numstr + 1, orgnum);
- len = strlen(numstr);
}
else
{
numstr = orgnum;
- len = strlen(orgnum);
}
}
else
{
+ int len;
Numeric val = value;
if (IS_MULTI(&Num))
@@ -5084,8 +5084,7 @@ int4_to_char(PG_FUNCTION_ARGS)
FormatNode *format;
text *result;
bool shouldFree;
- int len = 0,
- plen = 0,
+ int plen = 0,
sign = 0;
char *numstr,
*orgnum;
@@ -5111,11 +5110,12 @@ int4_to_char(PG_FUNCTION_ARGS)
if (*orgnum == '+')
*orgnum = ' ';
- len = strlen(orgnum);
numstr = orgnum;
}
else
{
+ int len;
+
if (IS_MULTI(&Num))
{
orgnum = DatumGetCString(DirectFunctionCall1(int4out,
@@ -5175,8 +5175,7 @@ int8_to_char(PG_FUNCTION_ARGS)
FormatNode *format;
text *result;
bool shouldFree;
- int len = 0,
- plen = 0,
+ int plen = 0,
sign = 0;
char *numstr,
*orgnum;
@@ -5211,16 +5210,16 @@ int8_to_char(PG_FUNCTION_ARGS)
numstr = (char *) palloc(strlen(orgnum) + 2);
*numstr = ' ';
strcpy(numstr + 1, orgnum);
- len = strlen(numstr);
}
else
{
numstr = orgnum;
- len = strlen(orgnum);
}
}
else
{
+ int len;
+
if (IS_MULTI(&Num))
{
double multi = pow((double) 10, (double) Num.multi);
@@ -5282,8 +5281,7 @@ float4_to_char(PG_FUNCTION_ARGS)
FormatNode *format;
text *result;
bool shouldFree;
- int len = 0,
- plen = 0,
+ int plen = 0,
sign = 0;
char *numstr,
*orgnum,
@@ -5317,13 +5315,13 @@ float4_to_char(PG_FUNCTION_ARGS)
if (*orgnum == '+')
*orgnum = ' ';
- len = strlen(orgnum);
numstr = orgnum;
}
}
else
{
float4 val = value;
+ int len;
if (IS_MULTI(&Num))
{
@@ -5386,8 +5384,7 @@ float8_to_char(PG_FUNCTION_ARGS)
FormatNode *format;
text *result;
bool shouldFree;
- int len = 0,
- plen = 0,
+ int plen = 0,
sign = 0;
char *numstr,
*orgnum,
@@ -5421,13 +5418,13 @@ float8_to_char(PG_FUNCTION_ARGS)
if (*orgnum == '+')
*orgnum = ' ';
- len = strlen(orgnum);
numstr = orgnum;
}
}
else
{
float8 val = value;
+ int len;
if (IS_MULTI(&Num))
{