On Sep29, 2011, at 16:43 , Dickson S. Guedes wrote: > 2011/9/29 Florian Pflug <f...@phlo.org>: >> You could use a hash table, allocated in the top-level memory context, >> to store one authentication token per combination of server and local user. > > In fact I started something in this way, with ldap_fdw, stashing the > connection away using memory context and something using es_query_cxt > from EState, just testing until now. How do this from PlanForeignScan > I couldn't figure out yet.
Maybe I'm missing something, but I'd say just allocate the hash table in TopMemoryContext (or however that's called) and store a reference to in a global variable. At least in the RESTful API case, you don't really need to worry about purging entries from the table I think. You might want to use <server, remote user> instead of <server, local user> as the key, though. That should avoid unnecessary authentication steps and hashtable entries if multiple local users are mapped to the same remote user, which is probably quite common for webservices. >> I suggest you look at the MySQL FDW (https://github.com/dpage/mysql_fdw) >> - they presumably re-use the same connection over multiple foreign scans, >> which seems to be a problem similar to yours. > > From what I understand they re-use between BeginForeignScan and the > subsequent IterateForeignScans and freeing at end. In my tests, there > is a (re)connection for each SELECT * FROM ... Oh, OK, I didn't know that. They're probably not the best model, then... best regards, Florian Pflug -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers