pgsql: Fix performance regression in pg_strtointNN_safe functions

From: David Rowley <drowley(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix performance regression in pg_strtointNN_safe functions
Date: 2023-08-02 00:05:58
Message-ID: E1qQzNF-0001tR-Ud@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix performance regression in pg_strtointNN_safe functions

Between 6fcda9aba and 1b6f632a3, the pg_strtoint functions became quite
a bit slower in v16, despite efforts in 6b423ec67 to speed these up.

Since the majority of cases for these functions will only contain
base-10 digits, perhaps prefixed by a '-', it makes sense to have a
special case for this and just fall back on the more complex version
which processes hex, octal, binary and underscores if the fast path
version fails to parse the string.

While we're here, update the header comments for these functions to
mention that hex, octal and binary formats along with underscore
separators are now supported.

Author: Andres Freund, David Rowley
Reported-by: Masahiko Sawada
Reviewed-by: Dean Rasheed, John Naylor
Discussion: https://postgr.es/m/CAD21AoDvDmUQeJtZrau1ovnT_smN940%3DKp6mszNGK3bq9yRN6g%40mail.gmail.com
Backpatch-through: 16, where 6fcda9aba and 1b6f632a3 were added

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/3845577cb55eab3e06b3724e307ebbcac31f4841

Modified Files
--------------
src/backend/utils/adt/numutils.c | 306 +++++++++++++++++++++++++++++++++++----
1 file changed, 279 insertions(+), 27 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message David Rowley 2023-08-02 00:06:26 pgsql: Fix performance regression in pg_strtointNN_safe functions
Previous Message Jeff Davis 2023-08-01 23:40:45 Re: pgsql: Fix search_path to a safe value during maintenance operations.