pl/pgSQL, get diagnostics and big data
| От | Andreas 'ads' Scherbaum |
|---|---|
| Тема | pl/pgSQL, get diagnostics and big data |
| Дата | |
| Msg-id | 56AFBEF5.102@wars-nicht.de обсуждение исходный текст |
| Ответы |
Re: pl/pgSQL, get diagnostics and big data
Re: pl/pgSQL, get diagnostics and big data |
| Список | pgsql-hackers |
Hello,
one of our customers approached us and complained, that GET DIAGNOSTICS
row_count returns invalid results if the number of rows is > 2^31. It's
a bit complicated to test for this case, so I set up a separate instance
with this patch, and inserted 2^32+x rows into a table. Internally,
row_count it's a signed integer, the resulting number is negative:
diagnostics=# select testfunc_pg((2^31 + 50000)::bigint);
testfunc_pg
-------------
-2147433648
(1 row)
Going over 2^32 wraps around:
diagnostics=# select testfunc_pg((2^32 + 50000)::bigint);
testfunc_pg
-------------
50000
(1 row)
Attached patch expands the row_count to 64 bit.
diagnostics=# select testfunc_pg((2^32 + 50000)::bigint);
testfunc_pg
-------------
4295017296
(1 row)
I hope, I covered all the places which count the result set.
Regards,
--
Andreas 'ads' Scherbaum
German PostgreSQL User Group
European PostgreSQL User Group - Board of Directors
Volunteer Regional Contact, Germany - PostgreSQL Project
Вложения
В списке pgsql-hackers по дате отправления: