Create a stack of pl/python "execution contexts".
Tom Lane <tgl@sss.pgh.pa.us>
Create a stack of pl/python "execution contexts". This replaces the former global variable PLy_curr_procedure, and provides a place to stash per-call-level information. In particular we create a per-call-level scratch memory context. For the moment, the scratch context is just used to avoid leaking memory from datatype output function calls in PLyDict_FromTuple. There probably will be more use-cases in future. Although this is a fix for a pre-existing memory leakage bug, it seems sufficiently invasive to not want to back-patch; it feels better as part of the major rearrangement of plpython code that we've already done as part of 9.2. Jan Urbański
Files
| Path | Change | +/− |
|---|---|---|
| src/pl/plpython/plpy_cursorobject.c | modified | +5 −2 |
| src/pl/plpython/plpy_elog.c | modified | +5 −3 |
| src/pl/plpython/plpy_exec.c | modified | +6 −2 |
| src/pl/plpython/plpy_main.c | modified | +90 −24 |
| src/pl/plpython/plpy_main.h | modified | +15 −0 |
| src/pl/plpython/plpy_procedure.c | modified | +0 −3 |
| src/pl/plpython/plpy_procedure.h | modified | +0 −4 |
| src/pl/plpython/plpy_spi.c | modified | +6 −2 |
| src/pl/plpython/plpy_typeio.c | modified | +14 −0 |