mirror of
https://github.com/postgres/postgres.git
synced 2025-07-03 20:02:46 +03:00
Expose internal function for converting int64 to numeric
Existing callers had to take complicated detours via DirectFunctionCall1(). This simplifies a lot of code. Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://www.postgresql.org/message-id/flat/42b73d2d-da12-ba9f-570a-420e0cce19d9@phystech.edu
This commit is contained in:
@ -842,9 +842,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
|
||||
lastjbv = hasNext ? &tmpjbv : palloc(sizeof(*lastjbv));
|
||||
|
||||
lastjbv->type = jbvNumeric;
|
||||
lastjbv->val.numeric =
|
||||
DatumGetNumeric(DirectFunctionCall1(int4_numeric,
|
||||
Int32GetDatum(last)));
|
||||
lastjbv->val.numeric = int64_to_numeric(last);
|
||||
|
||||
res = executeNextItem(cxt, jsp, &elem,
|
||||
lastjbv, found, hasNext);
|
||||
@ -1012,9 +1010,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
|
||||
jb = palloc(sizeof(*jb));
|
||||
|
||||
jb->type = jbvNumeric;
|
||||
jb->val.numeric =
|
||||
DatumGetNumeric(DirectFunctionCall1(int4_numeric,
|
||||
Int32GetDatum(size)));
|
||||
jb->val.numeric = int64_to_numeric(size);
|
||||
|
||||
res = executeNextItem(cxt, jsp, NULL, jb, found, false);
|
||||
}
|
||||
@ -1979,8 +1975,7 @@ executeKeyValueMethod(JsonPathExecContext *cxt, JsonPathItem *jsp,
|
||||
id += (int64) cxt->baseObject.id * INT64CONST(10000000000);
|
||||
|
||||
idval.type = jbvNumeric;
|
||||
idval.val.numeric = DatumGetNumeric(DirectFunctionCall1(int8_numeric,
|
||||
Int64GetDatum(id)));
|
||||
idval.val.numeric = int64_to_numeric(id);
|
||||
|
||||
it = JsonbIteratorInit(jbc);
|
||||
|
||||
|
Reference in New Issue
Block a user