Re: [PORTS] FPE on Alpha in Select with PKEY
От | Bruce Momjian |
---|---|
Тема | Re: [PORTS] FPE on Alpha in Select with PKEY |
Дата | |
Msg-id | 199903070323.WAA10337@candle.pha.pa.us обсуждение исходный текст |
Ответ на | Re: [PORTS] FPE on Alpha in Select with PKEY (Adriaan Joubert <a.joubert@albourne.com>) |
Список | pgsql-ports |
Yes. I have an idea. Did you add a column to the table using ALTER TABLE. There was a bug in 6.4.* and earlier that caused this to happend for added columns. Do a vacuum analyze on the table and the problem will go away. Will be fixed in the next release. > 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 > > -- Bruce Momjian | http://www.op.net/~candle maillist@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
В списке pgsql-ports по дате отправления: