Re: Get Columns from Plan
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Ed Behn <ed@behn.us>
Cc: pgsql-hackers@postgresql.org
Date: 2018-07-23T03:45:18Z
Lists: 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