Re: Use strtoi64() in pgbench, replacing its open-coded implementation - Mailing list pgsql-hackers

From Yuefei Shi
Subject Re: Use strtoi64() in pgbench, replacing its open-coded implementation
Date
Msg-id CAD43U4WV2yvdp0132NjhGsrcFQgpyCpbH1-8w6twGMpREv=8Wg@mail.gmail.com
Whole thread Raw
In response to Use strtoi64() in pgbench, replacing its open-coded implementation  (Heikki Linnakangas <hlinnaka@iki.fi>)
List pgsql-hackers
Hi Heikki:

On Thu, Nov 20, 2025 at 8:45 AM Heikki Linnakangas <hlinnaka@iki.fi> wrote:
Here's a small patch to replace the int64 parsing code in pgbench with a
call to strtoi64(). Makes it a little simpler.

Spotted this while grepping for all the different integer parsing
functions we have. We could probably consolidate them some more, we
still have quite a different integer-parsing routines in the backend and
in the frontend. But this is one small, straightforward step in that
direction.

I wrote a small program to test your patch and found that for strings like " 12 ", it does not handle the trailing spaces and considers the input invalid. However, the original "strtoint64" function processes the trailing spaces correctly. Below is the small program I used: 

#include <stdio.h>
#include <errno.h>

typedef unsigned long long int64;
#define strtoi64(str, endptr, base) ((int64) strtol(str, endptr, base))

int main(int argc, char **argv)
{
    unsigned long long result;
    char *end;
    char *str = argv[1];

    result = strtoi64(str, &end, 10);
    if (errno != 0)
    {
        printf("%s\n", strerror(errno));
        return 1;
    }

    if (end == str || *end != '\0')
    {
        printf("invalid input syntax for type bigint: \"%s\"\n", str);
        return 1;
    }

    return 0;
}

When running ./test " 12 ", the output is:
invalid input syntax for type bigint: " 12 "

$ uname -a
Linux dev 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Regards,
Shi Yuefei

pgsql-hackers by date:

Previous
From: Corey Huinker
Date:
Subject: Re: vacuumdb: add --dry-run
Next
From: Peter Smith
Date:
Subject: Re: CREATE/ALTER PUBLICATION improvements for syntax synopsis