Re: [PORTS] FPE on Alpha in Select with PKEY

Поиск
Список
Период
Сортировка
От Adriaan Joubert
Тема Re: [PORTS] FPE on Alpha in Select with PKEY
Дата
Msg-id 36DAC657.F39E56F4@albourne.com
обсуждение исходный текст
Ответ на FPE on Alpha in Select with PKEY  (Adriaan Joubert <a.joubert@albourne.com>)
Ответы Re: [PORTS] FPE on Alpha in Select with PKEY
Список pgsql-ports
Further to the above: the error occurs on line 136 of the file
src/backend/optimizer/path/orindxpath.c

>   136    clausenode->selectivity = (Cost) floatVal(selecs);



floatVal is a macro

#define floatVal(v)             (((Value *)v)->val.dval)

where value is

typedef struct Value
{
        NodeTag         type;                   /* tag appropriately
(eg. T_String) */
        union ValUnion
        {
                char       *str;                /* string */
                long            ival;
                double          dval;
        }                       val;
} Value;

The variable selecs is of type list, i.e.

typedef struct List
{
        NodeTag         type;
        union
        {
                void       *ptr_value;
                int                     int_value;
        }                       elem;
        struct List *next;
} List;


The variable selecs is filled in in the routine best_or_subclause_index
in orindxpath.c, where the value that is read via the floatVal macro is
assigned from a float (called selec as well). So this seems wrong
anyway.

Unfortunately casting ptr_value to float gives garbage as well:

(ladebug) p *(double*)selecs->elem.ptr_value
2.48515019858147e-321
(ladebug) p *(float*)selecs->elem.ptr_value
1.3342e-312


Any ideas?

Adriaan

В списке pgsql-ports по дате отправления:

Предыдущее
От: Adriaan Joubert
Дата:
Сообщение: Re: [PORTS] FPE on Alpha in Select with PKEY
Следующее
От: Unprivileged user
Дата:
Сообщение: Port Bug Report: y.tab.h not exist