diff options
-rw-r--r-- | src/backend/utils/adt/xid.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/src/backend/utils/adt/xid.c b/src/backend/utils/adt/xid.c index 76d29ff2a37..da8d1f30d52 100644 --- a/src/backend/utils/adt/xid.c +++ b/src/backend/utils/adt/xid.c @@ -40,13 +40,10 @@ Datum xidout(PG_FUNCTION_ARGS) { TransactionId transactionId = PG_GETARG_TRANSACTIONID(0); + char *result = (char *) palloc(16); - /* maximum 32 bit unsigned integer representation takes 10 chars */ - char *str = palloc(11); - - snprintf(str, 11, "%lu", (unsigned long) transactionId); - - PG_RETURN_CSTRING(str); + snprintf(result, 16, "%lu", (unsigned long) transactionId); + PG_RETURN_CSTRING(result); } /* @@ -132,12 +129,9 @@ xidComparator(const void *arg1, const void *arg2) Datum cidin(PG_FUNCTION_ARGS) { - char *s = PG_GETARG_CSTRING(0); - CommandId c; - - c = atoi(s); + char *str = PG_GETARG_CSTRING(0); - PG_RETURN_COMMANDID(c); + PG_RETURN_COMMANDID((CommandId) strtoul(str, NULL, 0)); } /* @@ -149,7 +143,7 @@ cidout(PG_FUNCTION_ARGS) CommandId c = PG_GETARG_COMMANDID(0); char *result = (char *) palloc(16); - snprintf(result, 16, "%u", (unsigned int) c); + snprintf(result, 16, "%lu", (unsigned long) c); PG_RETURN_CSTRING(result); } |