Re: [SQL] Wierd stuff

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: mjnf(at)uevora(dot)pt
Cc: pgsql-sql(at)postgreSQL(dot)org
Subject: Re: [SQL] Wierd stuff
Date: 1999-12-06 15:14:02
Message-ID: 18398.944493242@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Mario Jorge Nunes Filipe <mjnf(at)neptuno(dot)sc(dot)uevora(dot)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

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Nikolay Mijaylov 1999-12-06 15:17:59 Fw: Whats happen here?
Previous Message Nikolay Mijaylov 1999-12-06 15:13:00 Whats happen here?