BUG #8451: quantile extension: memory corruption? - Mailing list pgsql-bugs

From stephane.wustner@lip6.fr
Subject BUG #8451: quantile extension: memory corruption?
Date
Msg-id E1VKVtr-0004tG-4x@wrigleys.postgresql.org
Whole thread Raw
Responses Re: BUG #8451: quantile extension: memory corruption?  (Tomas Vondra <tv@fuzzy.cz>)
List pgsql-bugs
The following bug has been logged on the website:

Bug reference:      8451
Logged by:          strexxx
Email address:      stephane.wustner@lip6.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)

pgsql-bugs by date:

Previous
From: David Johnston
Date:
Subject: Re: BUG #8444: ERROR: table name "tblb" specified more than once in subquery
Next
From: Tomas Vondra
Date:
Subject: Re: BUG #8451: quantile extension: memory corruption?