I haven't got the opportunity to recompile Postgres right now, but will do that. Just reading the code, I can't figure
outthe exact difference, but who knows...
Did someone already applied this ?
Nicolas Huillard
-----Message d'origine-----
De: Hiroshi Inoue [SMTP:Inoue@tpf.co.jp]
Date: jeudi 27 janvier 2000 17:31
À: Nicolas Huillard
Cc: pgsql-general@hub.org; pgsql-sql@hub.org
Objet: RE: [GENERAL] Problem with SELECT on large negative INT4
> -----Original Message-----
> From: owner-pgsql-general@postgresql.org
> [mailto:owner-pgsql-general@postgresql.org]On Behalf Of Nicolas Huillard
>
> I have a DB with is updated using MS Access. Primary keys are
> Int4 with default random values ("NuméroAuto" + "Aléatoire" in Access).
> The DB is migrated as-is in Postgres, with tbl_prod.cle_prod
> field containing values from -2057496808 to 2139583719.
> When I SELECT in the table, using the INT4 cle_prod value, PG
> doesn't find the tuple. When I SELECT using the VARCHAR(10)
> ref_prod value, PG finds the tuple, and show the right value for
> the cle_prod filed : the same as the one I SELECTed for...
>
> This sounds like the long negative integer values given in PSQL
> is not converted correctly while executing.
> Using a long positive integer value, all works like a charm...
>
> Below is the queries type sto sho what append.
> I'm using Postgres 6.5.2 from the RPMs.
>
Could you try the follwoing patch ?
Regards.
Hiroshi Inoue
*** nbtcompare.c 2000/01/11 03:33:34 1.3
--- nbtcompare.c 2000/01/19 05:42:06
***************
*** 34,40 ****
int32
btint4cmp(int32 a, int32 b)
{
! return a - b;
}
int32
--- 34,45 ----
int32
btint4cmp(int32 a, int32 b)
{
! if (a > b)
! return 1;
! else if (a == b)
! return 0;
! else
! return -1;
}
int32
************