BUG #8451: quantile extension: memory corruption?

From: stephane(dot)wustner(at)lip6(dot)fr
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #8451: quantile extension: memory corruption?
Date: 2013-09-13 16:07:15
Message-ID: E1VKVtr-0004tG-4x@wrigleys.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 8451
Logged by: strexxx
Email address: stephane(dot)wustner(at)lip6(dot)fr
PostgreSQL version: 9.1.9
Operating system: Linux 3.8.0-27-generic #40-Ubuntu SMP x86_64
Description:

A query such as this one
COPY (SELECT e,quantile(EXTRACT(EPOCH
FROM(d)),ARRAY[0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1]) AS d FROM (SELECT
e,max(time)-min(time) AS d FROM bb RIGHT JOIN (SELECT s,e FROM ss RIGHT JOIN
(SELECT e FROM ee WHERE h ~* 'blah') AS i0 USING(e)) AS i0 USING
(sessionid) GROUP BY e,ei) AS i1 GROUP BY e) TO 'full_path/d.csv' WITH
CSV;"

generates this
...
403,"{0.101187,0.139183,0.189162,0.271442,0.405427,0.731997,1.178445,2.52971,4.288747,9.544644,8996.364885}"
404,"{8996.364885,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322}"
437,"{0.10007,0.204397,0.266877,0.48238,0.669026,0.911554,1.275652,1.656346,2.445659,3.909159,58915.291602}"
438,"{58915.291602,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322}"
440,"{58915.291602,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322,3.16202013338398e-322}"

...

for row that gets corrupted, the value d, for which quantiles are computed
over, is NULL (there is no such row matching conditions and JOIN).
I would expect the quantiles to be NULL as well.

Additionally there is a strange pattern: the last value of the row preceding
a corrupted one, is repeated as the first value of the corrupted rows that
comes after.
The other values correspond to something somewhat close to 2^-1068 (why ?)
...

This subquery corresponding to one of the corrupted case works correctly
(from my understanding)
SELECT s,quantile(EXTRACT(EPOCH
FROM(d)),ARRAY[0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1]) AS d FROM (SELECT
s,max(time)-min(time) AS d FROM bb WHERE s = 440 GROUP BY s,e) AS i1 GROUP
BY s;
s | d
-----------+----------
(0 rows)

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Tomas Vondra 2013-09-14 12:12:09 Re: BUG #8451: quantile extension: memory corruption?
Previous Message David Johnston 2013-09-13 15:41:31 Re: BUG #8444: ERROR: table name "tblb" specified more than once in subquery