Bug in PostGreSQL 8.2

Lists: pgsql-hackers
From: Hubert FONGARNAND <informatique(dot)internet(at)fiducial(dot)fr>
To: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Bug in PostGreSQL 8.2
Date: 2006-12-06 13:51:34
Message-ID: 1165413094.24076.7.camel@hublinux.fidudev.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

I've seen this morning that PostGreSQL 8.2 was released!

I've updated my dev. server, and : this SQLstatement fail :

select count(*)
from NODE
where NODE_ID
in (select NODE_ID from NODE where NODE_TRASH=0 limit 1 offset 0)

with :

ERREUR: failed to find unique expression in subplan tlist
État SQL :XX000

I downgrade to PostGreSQL 8.1.5...

Thanks to fix this!

_______________________________________________
Ce message et les ventuels documents joints peuvent contenir des informations confidentielles.
Au cas o il ne vous serait pas destin, nous vous remercions de bien vouloir le supprimer et en aviser immdiatement l'expditeur. Toute utilisation de ce message non conforme sa destination, toute diffusion ou publication, totale ou partielle et quel qu'en soit le moyen est formellement interdite.
Les communications sur internet n'tant pas scurises, l'intgrit de ce message n'est pas assure et la socit mettrice ne peut tre tenue pour responsable de son contenu.


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Hubert FONGARNAND <informatique(dot)internet(at)fiducial(dot)fr>
Cc: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Bug in PostGreSQL 8.2
Date: 2006-12-06 15:12:51
Message-ID: 25913.1165417971@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Hubert FONGARNAND <informatique(dot)internet(at)fiducial(dot)fr> writes:
> select count(*)=20
> from NODE =20
> where NODE_ID=20
> in (select NODE_ID from NODE where NODE_TRASH=3D0 limit 1 offset 0)
> ERREUR: failed to find unique expression in subplan tlist

Please provide a *complete* example --- I am unable to reproduce this.

regards, tom lane


From: Hubert FONGARNAND <informatique(dot)internet(at)fiducial(dot)fr>
To: "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Bug in PostGreSQL 8.2
Date: 2006-12-06 16:15:59
Message-ID: 1165421759.24076.14.camel@hublinux.fidudev.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Complete example :

../configure --prefix=/opt/pg82--with-perl --with-python --with-tcl
--enable-nls
make
make install

/opt/pg82/bin/initdb -D /var/lib/postgresql/data82/ --locale=fr_FR.utf8
-W
/opt/pg82/bin/pg_ctl -D /var/lib/postgresql/data82 -l journaltrace start

and with pgadmin 3

CREATE TABLE node
(
node_id character varying(36) NOT NULL ,
node_trash integer NOT NULL DEFAULT 0,
CONSTRAINT pk_node PRIMARY KEY (node_id)
)
WITH OIDS;

select count(*)
from NODE
where NODE_ID
in (select NODE_ID from NODE where NODE_TRASH=0 limit 1 offset 0)

and

ERREUR: failed to find unique expression in subplan tlist
État SQL :XX000

Le mercredi 06 décembre 2006 à 14:51 +0100, Hubert FONGARNAND a écrit :

> I've seen this morning that PostGreSQL 8.2 was released!
>
> I've updated my dev. server, and : this SQLstatement fail :
>
>
> select count(*)
> from NODE
> where NODE_ID
> in (select NODE_ID from NODE where NODE_TRASH=0 limit 1 offset 0)
>
>
> with :
>
> ERREUR: failed to find unique expression in subplan tlist
> État SQL :XX000
>
> I downgrade to PostGreSQL 8.1.5...
>
> Thanks to fix this!
>
> _______________________________________________
> Ce message et les ventuels documents joints peuvent contenir des
> informations confidentielles.
> Au cas o挰 il ne vous serait pas destin, nous vous remercions de bien
> vouloir le supprimer et en aviser imm柩diatement l'expditeur. Toute
> utilisation de ce message non conforme † sa destination, toute
> diffusion ou publication, totale ou partielle et quel qu'en soit le
> moyen est formellement interdite.
> Les communications sur internet n'tant pas s整curises, l'intउgrit de
> ce message n'est pas assur獡e et la socitて mettrice ne peut 汢tre
> tenue pour responsable de son contenu.
_______________________________________________
Ce message et les ventuels documents joints peuvent contenir des informations confidentielles.
Au cas o il ne vous serait pas destin, nous vous remercions de bien vouloir le supprimer et en aviser immdiatement l'expditeur. Toute utilisation de ce message non conforme sa destination, toute diffusion ou publication, totale ou partielle et quel qu'en soit le moyen est formellement interdite.
Les communications sur internet n'tant pas scurises, l'intgrit de ce message n'est pas assure et la socit mettrice ne peut tre tenue pour responsable de son contenu.


From: "Thomas H(dot)" <me(at)alternize(dot)com>
To: "Hubert FONGARNAND" <informatique(dot)internet(at)fiducial(dot)fr>, <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Bug in PostGreSQL 8.2
Date: 2006-12-06 16:36:13
Message-ID: 04c501c71954$a56b2c00$0201a8c0@iwing
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

for what its worth: i have just encountered the same problem with a different query:

-------------------
UPDATE logs.pagehits SET page = lower(page)
WHERE page IN
(
SELECT DISTINCT ON (lower(page)) page
FROM logs.pagehits
WHERE lower(page) <> page AND NOT lower(page) IN (SELECT page FROM logs.pagehits WHERE page = lower(page))
)
-------------------

this will result in:
ERROR: failed to find unique expression in subplan tlist

it can be easily "fixed" by doing an additional subselect:

-------------------
UPDATE logs.pagehits SET page = lower(page)
WHERE page IN
(
SELECT page FROM
(
SELECT DISTINCT ON (lower(page)) page
FROM logs.pagehits
WHERE lower(page) <> page AND NOT lower(page) IN (SELECT page FROM logs.pagehits WHERE page = lower(page))
AS upperpages
)
)
-------------------

"page" field is a varchar(255)

(the query finds those page hits entries that are non-lowercase and for which no lowercase version exists. page ressembles the url. if more than one way of writing exists, for example "/Faq/" and "/FAQ", only one is changed to comply with the primary key)

- thomas

----- Original Message -----
From: Hubert FONGARNAND
To: pgsql-hackers(at)postgresql(dot)org
Sent: Wednesday, December 06, 2006 5:15 PM
Subject: Re: [HACKERS] Bug in PostGreSQL 8.2

Complete example :

./configure --prefix=/opt/pg82--with-perl --with-python --with-tcl --enable-nls
make
make install

/opt/pg82/bin/initdb -D /var/lib/postgresql/data82/ --locale=fr_FR.utf8 -W
/opt/pg82/bin/pg_ctl -D /var/lib/postgresql/data82 -l journaltrace start

and with pgadmin 3

CREATE TABLE node
(
node_id character varying(36) NOT NULL ,
node_trash integer NOT NULL DEFAULT 0,
CONSTRAINT pk_node PRIMARY KEY (node_id)
)
WITH OIDS;

select count(*)
from NODE
where NODE_ID
in (select NODE_ID from NODE where NODE_TRASH=0 limit 1 offset 0)

and

ERREUR: failed to find unique expression in subplan tlist
État SQL :XX000

Le mercredi 06 décembre 2006 à 14:51 +0100, Hubert FONGARNAND a écrit :

I've seen this morning that PostGreSQL 8.2 was released!

I've updated my dev. server, and : this SQLstatement fail :

select count(*)
from NODE
where NODE_ID
in (select NODE_ID from NODE where NODE_TRASH=0 limit 1 offset 0)

with :

ERREUR: failed to find unique expression in subplan tlist
État SQL :XX000

I downgrade to PostGreSQL 8.1.5...

Thanks to fix this!

_______________________________________________
Ce message et les ventuels documents joints peuvent contenir des informations confidentielles.
Au cas o挰 il ne vous serait pas destin, nous vous remercions de bien vouloir le supprimer et en aviser imm柩diatement l'expditeur. Toute utilisation de ce message non conforme † sa destination, toute diffusion ou publication, totale ou partielle et quel qu'en soit le moyen est formellement interdite.
Les communications sur internet n'tant pas s整curises, l'intउgrit de ce message n'est pas assur獡e et la socitて mettrice ne peut 汢tre tenue pour responsable de son contenu.
_______________________________________________
Ce message et les �ventuels documents joints peuvent contenir des informations confidentielles.
Au cas o� il ne vous serait pas destin�, nous vous remercions de bien vouloir le supprimer et en aviser imm�diatement l'exp�diteur. Toute utilisation de ce message non conforme � sa destination, toute diffusion ou publication, totale ou partielle et quel qu'en soit le moyen est formellement interdite.
Les communications sur internet n'�tant pas s�curis�es, l'int�grit� de ce message n'est pas assur�e et la soci�t� �mettrice ne peut �tre tenue pour responsable de son contenu.


From: Hubert FONGARNAND <informatique(dot)internet(at)fiducial(dot)fr>
To: "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Bug in PostGreSQL 8.2
Date: 2006-12-06 16:51:56
Message-ID: 1165423916.24076.16.camel@hublinux.fidudev.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

PS : It works well with older pgsql version (<8.2)

Le mercredi 06 décembre 2006 à 17:15 +0100, Hubert FONGARNAND a écrit :

> Complete example :
>
> ./configure --prefix=/opt/pg82--with-perl --with-python --with-tcl
> --enable-nls
> make
> make install
>
> /opt/pg82/bin/initdb -D /var/lib/postgresql/data82/
> --locale=fr_FR.utf8 -W
> /opt/pg82/bin/pg_ctl -D /var/lib/postgresql/data82 -l journaltrace
> start
>
> and with pgadmin 3
>
>
> CREATE TABLE node
> (
> node_id character varying(36) NOT NULL ,
> node_trash integer NOT NULL DEFAULT 0,
> CONSTRAINT pk_node PRIMARY KEY (node_id)
> )
> WITH OIDS;
>
> select count(*)
> from NODE
> where NODE_ID
> in (select NODE_ID from NODE where NODE_TRASH=0 limit 1 offset 0)
>
>
> and
>
> ERREUR: failed to find unique expression in subplan tlist
> État SQL :XX000
>
> Le mercredi 06 décembre 2006 à 14:51 +0100, Hubert FONGARNAND a
> écrit :
>
> > I've seen this morning that PostGreSQL 8.2 was released!
> >
> > I've updated my dev. server, and : this SQLstatement fail :
> >
> >
> > select count(*)
> > from NODE
> > where NODE_ID
> > in (select NODE_ID from NODE where NODE_TRASH=0 limit 1 offset 0)
> >
> >
> > with :
> >
> > ERREUR: failed to find unique expression in subplan tlist
> > État SQL :XX000
> >
> > I downgrade to PostGreSQL 8.1.5...
> >
> > Thanks to fix this!
> >
> > _______________________________________________
> > Ce message et les ventuels documents joints peuvent contenir des
> > informations confidentielles.
> > Au cas o挰 il ne vous serait pas destin, nous vous remercions de
> > bien vouloir le supprimer et en aviser imm柩diatement l'expditeur.
> > Toute utilisation de ce message non conforme † sa destination, toute
> > diffusion ou publication, totale ou partielle et quel qu'en soit le
> > moyen est formellement interdite.
> > Les communications sur internet n'tant pas s整curises, l'intउgrit de
> > ce message n'est pas assur獡e et la socitて mettrice ne peut 汢tre
> > tenue pour responsable de son contenu.
>
> _______________________________________________
> Ce message et les ventuels documents joints peuvent contenir des
> informations confidentielles.
> Au cas oK il ne vous serait pas destin, nous vous remercions de bien
> vouloir le supprimer et en aviser immediatement l'expditeur. Toute
> utilisation de ce message non conforme e sa destination, toute
> diffusion ou publication, totale ou partielle et quel qu'en soit le
> moyen est formellement interdite.
> Les communications sur internet n'tant pas sOcurises, l'intwgrit de ce
> message n'est pas assur"e et la socits mettrice ne peut tre tenue pour
> responsable de son contenu.
_______________________________________________
Ce message et les ventuels documents joints peuvent contenir des informations confidentielles.
Au cas o il ne vous serait pas destin, nous vous remercions de bien vouloir le supprimer et en aviser immdiatement l'expditeur. Toute utilisation de ce message non conforme sa destination, toute diffusion ou publication, totale ou partielle et quel qu'en soit le moyen est formellement interdite.
Les communications sur internet n'tant pas scurises, l'intgrit de ce message n'est pas assure et la socit mettrice ne peut tre tenue pour responsable de son contenu.


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Hubert FONGARNAND <informatique(dot)internet(at)fiducial(dot)fr>
Cc: "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Bug in PostGreSQL 8.2
Date: 2006-12-06 19:43:05
Message-ID: 364.1165434185@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Hubert FONGARNAND <informatique(dot)internet(at)fiducial(dot)fr> writes:
> CREATE TABLE node
> (
> node_id character varying(36) NOT NULL ,
> node_trash integer NOT NULL DEFAULT 0,
> CONSTRAINT pk_node PRIMARY KEY (node_id)
> )
> WITH OIDS;

> select count(*)
> from NODE
> where NODE_ID
> in (select NODE_ID from NODE where NODE_TRASH=3D0 limit 1 offset 0)

OK, it seems the key bit here is that the IN's subselect has a
varchar(N) column ... you don't see the failure unless the subselect
result column has a nondefault typmod. So a possibly helpful workaround
until 8.2.1 comes out is to cast NODE_ID to text in the subselect.

Patch committed; thanks for the report!

regards, tom lane


From: Hubert FONGARNAND <informatique(dot)internet(at)fiducial(dot)fr>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Bug in PostGreSQL 8.2
Date: 2006-12-07 11:28:50
Message-ID: 1165490930.1366.11.camel@hublinux.fidudev.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Ok, thanks,

We will wait for 8.2.1 to upgrade! (we don't want to introduce bad
hacks... on our apps)

Le mercredi 06 décembre 2006 à 14:43 -0500, Tom Lane a écrit :

> Hubert FONGARNAND <informatique(dot)internet(at)fiducial(dot)fr> writes:
> > CREATE TABLE node
> > (
> > node_id character varying(36) NOT NULL ,
> > node_trash integer NOT NULL DEFAULT 0,
> > CONSTRAINT pk_node PRIMARY KEY (node_id)
> > )
> > WITH OIDS;
>
> > select count(*)
> > from NODE
> > where NODE_ID
> > in (select NODE_ID from NODE where NODE_TRASH=3D0 limit 1 offset 0)
>
> OK, it seems the key bit here is that the IN's subselect has a
> varchar(N) column ... you don't see the failure unless the subselect
> result column has a nondefault typmod. So a possibly helpful workaround
> until 8.2.1 comes out is to cast NODE_ID to text in the subselect.
>
> Patch committed; thanks for the report!
>
> regards, tom lane
_______________________________________________
Ce message et les ventuels documents joints peuvent contenir des informations confidentielles.
Au cas o il ne vous serait pas destin, nous vous remercions de bien vouloir le supprimer et en aviser immdiatement l'expditeur. Toute utilisation de ce message non conforme sa destination, toute diffusion ou publication, totale ou partielle et quel qu'en soit le moyen est formellement interdite.
Les communications sur internet n'tant pas scurises, l'intgrit de ce message n'est pas assure et la socit mettrice ne peut tre tenue pour responsable de son contenu.