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.
Is there a way to get the columns for a plan at compile time? If not, why?