Re: [SQL] Wierd stuff

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: [SQL] Wierd stuff
Дата
Msg-id 18398.944493242@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: [SQL] Wierd stuff  (Mario Jorge Nunes Filipe <mjnf@neptuno.sc.uevora.pt>)
Список 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 по дате отправления:

Предыдущее
От: "Nikolay Mijaylov"
Дата:
Сообщение: Whats happen here?
Следующее
От: "Nikolay Mijaylov"
Дата:
Сообщение: Fw: Whats happen here?