aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils/adt')
-rw-r--r--src/backend/utils/adt/jsonb.c19
-rw-r--r--src/backend/utils/adt/numeric.c24
-rw-r--r--src/backend/utils/adt/pgstatfuncs.c2
3 files changed, 26 insertions, 19 deletions
diff --git a/src/backend/utils/adt/jsonb.c b/src/backend/utils/adt/jsonb.c
index e99bbc482a9..9d2b89f90cf 100644
--- a/src/backend/utils/adt/jsonb.c
+++ b/src/backend/utils/adt/jsonb.c
@@ -343,6 +343,7 @@ jsonb_in_scalar(void *pstate, char *token, JsonTokenType tokentype)
{
JsonbInState *_state = (JsonbInState *) pstate;
JsonbValue v;
+ Datum numd;
switch (tokentype)
{
@@ -361,18 +362,19 @@ jsonb_in_scalar(void *pstate, char *token, JsonTokenType tokentype)
*/
Assert(token != NULL);
v.type = jbvNumeric;
- v.val.numeric = DatumGetNumeric(DirectFunctionCall3(numeric_in, CStringGetDatum(token), 0, -1));
-
+ numd = DirectFunctionCall3(numeric_in,
+ CStringGetDatum(token),
+ ObjectIdGetDatum(InvalidOid),
+ Int32GetDatum(-1));
+ v.val.numeric = DatumGetNumeric(numd);
break;
case JSON_TOKEN_TRUE:
v.type = jbvBool;
v.val.boolean = true;
-
break;
case JSON_TOKEN_FALSE:
v.type = jbvBool;
v.val.boolean = false;
-
break;
case JSON_TOKEN_NULL:
v.type = jbvNull;
@@ -772,9 +774,14 @@ datum_to_jsonb(Datum val, bool is_null, JsonbInState *result,
strchr(outputstr, 'n') != NULL);
if (!numeric_error)
{
- jb.type = jbvNumeric;
- jb.val.numeric = DatumGetNumeric(DirectFunctionCall3(numeric_in, CStringGetDatum(outputstr), 0, -1));
+ Datum numd;
+ jb.type = jbvNumeric;
+ numd = DirectFunctionCall3(numeric_in,
+ CStringGetDatum(outputstr),
+ ObjectIdGetDatum(InvalidOid),
+ Int32GetDatum(-1));
+ jb.val.numeric = DatumGetNumeric(numd);
pfree(outputstr);
}
else
diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c
index c56d5afcb3b..dcf31e340c1 100644
--- a/src/backend/utils/adt/numeric.c
+++ b/src/backend/utils/adt/numeric.c
@@ -3818,8 +3818,8 @@ numeric_avg_deserialize(PG_FUNCTION_ARGS)
/* sumX */
temp = DirectFunctionCall3(numeric_recv,
PointerGetDatum(&buf),
- InvalidOid,
- -1);
+ ObjectIdGetDatum(InvalidOid),
+ Int32GetDatum(-1));
init_var_from_num(DatumGetNumeric(temp), &tmp_var);
accum_sum_add(&(result->sumX), &tmp_var);
@@ -3941,16 +3941,16 @@ numeric_deserialize(PG_FUNCTION_ARGS)
/* sumX */
temp = DirectFunctionCall3(numeric_recv,
PointerGetDatum(&buf),
- InvalidOid,
- -1);
+ ObjectIdGetDatum(InvalidOid),
+ Int32GetDatum(-1));
init_var_from_num(DatumGetNumeric(temp), &sumX_var);
accum_sum_add(&(result->sumX), &sumX_var);
/* sumX2 */
temp = DirectFunctionCall3(numeric_recv,
PointerGetDatum(&buf),
- InvalidOid,
- -1);
+ ObjectIdGetDatum(InvalidOid),
+ Int32GetDatum(-1));
init_var_from_num(DatumGetNumeric(temp), &sumX2_var);
accum_sum_add(&(result->sumX2), &sumX2_var);
@@ -4340,14 +4340,14 @@ numeric_poly_deserialize(PG_FUNCTION_ARGS)
/* sumX */
sumX = DirectFunctionCall3(numeric_recv,
PointerGetDatum(&buf),
- InvalidOid,
- -1);
+ ObjectIdGetDatum(InvalidOid),
+ Int32GetDatum(-1));
/* sumX2 */
sumX2 = DirectFunctionCall3(numeric_recv,
PointerGetDatum(&buf),
- InvalidOid,
- -1);
+ ObjectIdGetDatum(InvalidOid),
+ Int32GetDatum(-1));
init_var_from_num(DatumGetNumeric(sumX), &sumX_var);
#ifdef HAVE_INT128
@@ -4550,8 +4550,8 @@ int8_avg_deserialize(PG_FUNCTION_ARGS)
/* sumX */
temp = DirectFunctionCall3(numeric_recv,
PointerGetDatum(&buf),
- InvalidOid,
- -1);
+ ObjectIdGetDatum(InvalidOid),
+ Int32GetDatum(-1));
init_var_from_num(DatumGetNumeric(temp), &num);
#ifdef HAVE_INT128
numericvar_to_int128(&num, &result->sumX);
diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c
index 6110e40d3e1..e95e3471846 100644
--- a/src/backend/utils/adt/pgstatfuncs.c
+++ b/src/backend/utils/adt/pgstatfuncs.c
@@ -813,7 +813,7 @@ pg_stat_get_activity(PG_FUNCTION_ARGS)
*/
nulls[12] = true;
nulls[13] = true;
- values[14] = DatumGetInt32(-1);
+ values[14] = Int32GetDatum(-1);
}
else
{