From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Alexey Grishchenko <agrishchenko(at)pivotal(dot)io> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Endless loop calling PL/Python set returning functions |
Date: | 2016-03-10 15:35:56 |
Message-ID: | 1676.1457624156@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Alexey Grishchenko <agrishchenko(at)pivotal(dot)io> writes:
> There is a bug in implementation of set-returning functions in PL/Python.
> When you call the same set-returning function twice in a single query, the
> executor falls to infinite loop which causes OOM.
Ugh.
> Another issue with calling the same set-returning function twice in the
> same query, is that it would delete the input parameter of the function
> from the global variables dictionary at the end of execution. With calling
> the function twice, this code attempts to delete the same entry from global
> variables dict twice, thus causing KeyError. This is why the
> function PLy_function_delete_args is modified as well to check whether the
> key we intend to delete is in the globals dictionary.
That whole business with putting a function's parameters into a global
dictionary makes me itch. Doesn't it mean problems if one plpython
function calls another (presumably via SPI)?
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2016-03-10 15:37:29 | Re: Add generate_series(date,date) and generate_series(date,date,integer) |
Previous Message | Simon Riggs | 2016-03-10 15:30:05 | Re: Add generate_series(date,date) and generate_series(date,date,integer) |