Re: BUG #17951: hashtext('input') returning non-integer value for certain inputs

From: Ilkka Kaakkola <ilkka(dot)kaakkola(at)gmail(dot)com>
To: ilkka(dot)kaakkola+github(at)gmail(dot)com, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #17951: hashtext('input') returning non-integer value for certain inputs
Date: 2023-05-30 07:55:06
Message-ID: 174BE3A1-D529-47F2-9A8B-B9083E0F8514@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Hi,

This is an invalid bug report and can be ignored.

The return value is a signed integer, happening to have the minimum value (-2147483648) which is too large to be represented as a positive integer (with a max value of 2147483647), hence abs() is correctly throwing an error.

Cheers,

Ilkka

> On 30. May 2023, at 10.07, PG Bug reporting form <noreply(at)postgresql(dot)org> wrote:
>
> The following bug has been logged on the website:
>
> Bug reference: 17951
> Logged by: Ilkka Kaakkola
> Email address: ilkka(dot)kaakkola+github(at)gmail(dot)com
> PostgreSQL version: 15.3
> Operating system: Linux (Docker)
> Description:
>
> Startup command:
>
> user(at)host % docker run --rm -d --name psql -e POSTGRES_PASSWORD=password -e
> POSTGRES_DB=app postgres:15.3 postgres
> 028d012d418351520815376f2111d47c105bfa0a0dfcc95125dbcacc3318c7d6
>
> user(at)host % docker exec -it psql bash
>
> (inside container)
> root(at)028d012d4183:/# uname -a
> Linux 028d012d4183 5.15.96-0-virt #1-Alpine SMP Sun, 26 Feb 2023 15:14:12
> +0000 x86_64 GNU/Linux
>
> root(at)028d012d4183:/# psql -U postgres app
> psql (15.3 (Debian 15.3-1.pgdg110+1))
> Type "help" for help.
>
> app=#
>
>
> PostgreSQL version:
>
> app=# select VERSION();
> version
> -----------------------------------------------------------------------------------------------------------------------------
> PostgreSQL 15.3 (Debian 15.3-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled
> by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
> (1 row)
>
> ----
>
> Steps to reproduce:
>
> app=# CREATE TABLE bug ( id varchar(128) );
> CREATE TABLE
>
>
> app=# \d bug
> Table "public.bug"
> Column | Type | Collation | Nullable | Default
> --------+------------------------+-----------+----------+---------
> id | character varying(128) | | |
>
>
> app=# insert into bug (id) values ('18122447326473c034-214042692253025');
> INSERT 0 1
>
>
> app=# select ABS(HASHTEXT(id)) FROM bug;
> ERROR: 22003: integer out of range
> LOCATION: int4abs, int.c:1196
>
> The resulting value of hashtext() for the given input overflows an integer
> by 1 as can be seen by casting it manually
>
> app=# select ABS(CAST(HASHTEXT(ID) as BIGINT)) FROM bug;
> abs
> ------------
> 2147483648
> (1 row)
>
>
> This can also be directly observed by selecting
> HASHTEXT('18122447326473c034-214042692253025'):
>
> app=# SELECT HASHTEXT('18122447326473c034-214042692253025');
> hashtext
> -------------
> -2147483648
> (1 row)
>
> Expected the output from hashtext('input') to always be a valid integer.
>

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Michael Paquier 2023-05-30 11:56:39 Re: BUG #17938: could not open shared memory segment "/PostgreSQL.615216676": No such file or directory
Previous Message PG Bug reporting form 2023-05-30 07:07:58 BUG #17951: hashtext('input') returning non-integer value for certain inputs