Re: Get Columns from Plan - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Get Columns from Plan
Date
Msg-id 19585.1532317518@sss.pgh.pa.us
Whole thread Raw
In response to Get Columns from Plan  (Ed Behn <ed@behn.us>)
List pgsql-hackers
Ed Behn <ed@behn.us> writes:
> I'm tinkering with the idea of creating a Procedural Language plugin for
> Haskell. As such I'm reading up on the SPI and prepared statements. The
> idea is that a statement will be prepared at compile time and executed at
> run-time. Therefore, I want to be able to determine the columns (names and
> types) that are returned by a plan without executing it. It seems like this
> should be a straight-forward task, but there doesn't seem to be a mechanism
> to do this.

Sure: SPI_plan_get_plan_sources(), iterate through that list of
CachedPlanSources, inspect the resultDesc tupledescs.  The reasons this
isn't terribly well documented include:

* You'll need to decide what your semantics are for cases where there's
more or less than one list entry with a result.

* Consider the possibility that the result tupdesc changes from time to
time, eg the result of "SELECT * FROM foo" can mutate due to ALTER TABLE.

            regards, tom lane


pgsql-hackers by date:

Previous
From: Thomas Munro
Date:
Subject: Re: Possible performance regression in version 10.1 with pgbenchread-write tests.
Next
From: Tom Lane
Date:
Subject: Re: Tips on committing