Re: [HACKERS] SELECT BUG
Jose Soares <jose@sferacarta.com>
From: José Soares <jose@sferacarta.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: hackers <pgsql-hackers@postgresql.org>
Date: 1999-09-01T16:22:27Z
Lists: pgsql-hackers
You mean that "a1 " is not equal to "a1 " ?
but PostgreSQL has a different behavior in the following example:
hygea=> select code,len(code) as len_of_code,code1, len(code1) as
len_of_code1
from master1 where code = code1;
code |len_of_code|code1 |len_of_code1
----------+-----------+------------+------------
a1 | 10|a1 | 15
(1 row)
in this case the test code = code1 is true even if these fields have
different number of trailling spaces.
Therefore if the above test is OK there's a bug on:
select m.*, d.* from master1 m, detail1 d where m.code=d.code;
José
Tom Lane ha scritto:
> =?iso-8859-1?Q?Jos=E9?= Soares <jose@sferacarta.com> writes:
> > --I have the following test data into these tables:
>
> > hygea=> select * from master1;
> > code
> > -----------
> > a
> > a1
> > a13
> > (3 rows)
>
> > hygea=> select * from detail1;
> > code
> > ----------------
> > a13
> > a13
> > a1
> > (3 rows)
>
> > --if I try to join these two tables I have the following (nothing):
>
> > hygea=> select m.*, d.* from master1 m, detail1 d where m.code=d.code;
> > code|code
> > ----+----
> > (0 rows)
> > --and now trying with TRIM function... it works!
>
> > hygea=> select m.*, d.* from master1 m, detail1 d where
> > trim(m.code)=trim(d.code
> > code |code
> > -----------+----------------
> > a13 |a13
> > a13 |a13
> > a1 |a1
> > (3 rows)
>
> Looks to me like you have differing numbers of trailing spaces in the
> entries in each table. If so, this is not a bug.
>
> regards, tom lane