On Tue, Dec 03, 2013 at 11:15:36AM +0800, Craig Ringer wrote:
> On 11/28/2013 03:24 AM, David Fetter wrote:
> > WITH, or SRF, or whatever, the point is that we need to be able to
> > specify what we're sending--probably single opaque strings delimited
> > just as we do other strings--and what we might get back--errors only,
> > rows, [sets of] refcursors are the ones I can think of offhand.
>
> So, you're thinking of something like:
>
> WITH FOREIGN somecte AS $$... foreign query ...$$
> SELECT ...
> FROM somecte;
I was picturing something a little more like an SRF which would take
one opaque string, the remote command, some descriptor, perhaps an
enum, of what if anything might come back. Long ago, I implemented a
similar thing in DBI-Link. It was called
remote_exec_dbh(data_source_id integer, query text, returns_rows bool)
That covered only some of the cases I've come up with since. My
current idea is something more like
remote_execute( data_source_id integer, /* This corresponds to a "handle" in SQL/MED-speak */ query text, returns
enum( 'void', 'some_type', 'setof some_type', 'setof record', 'refcursor', 'setof
refcursor' )
)
This could appear in a FROM or WITH clause. There might also be some
aliasing and/or syntactic sugar along the lines of remote_execute_void(),
remote_execute_rows(), etc. Given the possibility of cooperation with
the planner and executor, we might want to extend some attributes like
sortedness where applicable.
Cheers,
David.
--
David Fetter <david@fetter.org> http://fetter.org/
Phone: +1 415 235 3778 AIM: dfetter666 Yahoo!: dfetter
Skype: davidfetter XMPP: david.fetter@gmail.com
iCal: webcal://www.tripit.com/feed/ical/people/david74/tripit.ics
Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate