PL/Python SD dict wiped?

2018-01-08 Thread Ken Huffman
Is there a known issue with the PL/Python extension clearing the SD dict under 
some circumstances? As suggested by the documentation, my plpythonu uses the SD 
dict for one-time (prepare and ConfigParser) logic:

CREATE OR REPLACE FUNCTION change_notify() RETURN TRIGGER AS $$
...
If len(SD) == 0:
# one time logic
config = ConfigParser.RawConfigParser()
config.read('...')
SD['x'] = config.get('...','...')
SD['plan'] = plpy.prepare('...')
...
x = SD['x']
plan = SD['plan']

To test this trigger after creation, I use psql and force a db update to cause 
it to fire. If I do multiple updates within psql, the SD dict is only empty for 
the first update. Yeah!

But if I quit and restart psql and do a subsequent db update, the SD dict is 
empty again and the one-time logic has to run again. What is clearing the dict? 
Is that expected?

Ken

Disclaimer

The information contained in this communication from the sender is 
confidential. It is intended solely for use by the recipient and others 
authorized to receive it. If you are not the recipient, you are hereby notified 
that any disclosure, copying, distribution or taking action in relation of the 
contents of this information is strictly prohibited and may be unlawful.

This email has been scanned for viruses and malware, and may have been 
automatically archived by Mimecast Ltd, an innovator in Software as a Service 
(SaaS) for business. Providing a safer and more useful place for your human 
generated data. Specializing in; Security, archiving and compliance. To find 
out more visit the Mimecast website.


RE: PL/Python SD dict wiped?

2018-01-08 Thread Ken Huffman
I'm fine with per-session initializing of prepared statements, but is there 
PL/Python mechanism that spans sessions to minimize ConfigParser calls?

-Original Message-
From: Tom Lane [mailto:t...@sss.pgh.pa.us] 
Sent: Monday, January 08, 2018 10:23 AM
To: Ken Huffman 
Cc: Pg Hackers 
Subject: Re: PL/Python SD dict wiped?

Ken Huffman  writes:
> But if I quit and restart psql and do a subsequent db update, the SD dict is 
> empty again and the one-time logic has to run again. What is clearing the 
> dict? Is that expected?

You've got a new backend process.  That dict (or any other Python state) is 
only kept within a session.

regards, tom lane

Disclaimer

The information contained in this communication from the sender is 
confidential. It is intended solely for use by the recipient and others 
authorized to receive it. If you are not the recipient, you are hereby notified 
that any disclosure, copying, distribution or taking action in relation of the 
contents of this information is strictly prohibited and may be unlawful.

This email has been scanned for viruses and malware, and may have been 
automatically archived by Mimecast Ltd, an innovator in Software as a Service 
(SaaS) for business. Providing a safer and more useful place for your human 
generated data. Specializing in; Security, archiving and compliance. To find 
out more visit the Mimecast website.