pgsql: Dodge portability issue (apparent compiler bug) in new tablesamp

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Dodge portability issue (apparent compiler bug) in new tablesamp
Дата
Msg-id E1ZJ95g-0006lP-2W@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Dodge portability issue (apparent compiler bug) in new tablesample code.

Some of the older OS X critters in the buildfarm are failing regression,
with symptoms showing that a request for 100% sampling in BERNOULLI or
SYSTEM methods actually gets only around 50% of the table.  gdb revealed
that the computation of the "cutoff" number was producing 0x7FFFFFFF
rather than the expected 0x100000000.  Inspecting the assembly code,
it looks like gcc is trying to use lrint() instead of rint() and then
fumbling the conversion from long double to uint64.  This seems like a
clear compiler bug, but assigning the intermediate result into a plain
double variable works around it, so let's just do that.  (Another idea
would be to give up one bit of hash width so that we don't need to use
a uint64 cutoff, but let's see if this is enough.)

Branch
------
REL9_5_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/d5b132bb626d126b6d0696f2f4068815053da115

Modified Files
--------------
src/backend/access/tablesample/bernoulli.c |    4 +++-
src/backend/access/tablesample/system.c    |    4 +++-
2 files changed, 6 insertions(+), 2 deletions(-)


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

Предыдущее
От: Andrew Dunstan
Дата:
Сообщение: pgsql: Fix up bad call to exit_nicely from commit af225551ef
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Dodge portability issue (apparent compiler bug) in new tablesamp