Re: [SQL] Wierd stuff - Mailing list pgsql-sql

From Tom Lane
Subject Re: [SQL] Wierd stuff
Date
Msg-id 18398.944493242@sss.pgh.pa.us
Whole thread Raw
In response to Re: [SQL] Wierd stuff  (Mario Jorge Nunes Filipe <mjnf@neptuno.sc.uevora.pt>)
List pgsql-sql
Mario Jorge Nunes Filipe <mjnf@neptuno.sc.uevora.pt> writes:
> Tom Lane wrote:
>> Actually, I think that this may indeed be the root of the problem.
>> I killed several bugs in cross-data-type joins a while back ... for
>> example, IIRC pre-6.5 Postgres thought it could use hash joins for
>> cross-data-type equality operators, but that doesn't work properly in
>> general.  Mario, what does EXPLAIN show about how the join query is
>> being done?

>     To awnser your question... EXPLAIN shows this:
> sac=> explain select c.nome from aluno a, concelho c where
> sac-> a.concelho_naturalidade=c.codigo and a.numero_aluno=13792;
> NOTICE:  QUERY PLAN:

> Hash Join  (cost=27.44 size=164 width=18)
>  -> Seq Scan on c  (cost=13.16 size=308 width=16)
>    -> Hash  (cost=0.00 size=0 width=0)
>      -> Index Scan on a  (cost=2.05 size=2 width=2)

Yup, that's what I suspected.  Hashing 2-byte and 4-byte integers
doesn't deliver the same result --- at least not all the time, there
are special cases such as zero.  So this explains all your observed
misbehaviors.

You can work around it for now by remaking the tables with consistent
data types.
        regards, tom lane


pgsql-sql by date:

Previous
From: "Nikolay Mijaylov"
Date:
Subject: Whats happen here?
Next
From: "Nikolay Mijaylov"
Date:
Subject: Fw: Whats happen here?