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
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? |