On Tue, Aug 04, 2009 at 10:55:07PM -0400, Tom Lane wrote:
> Dan Colish <dan@unencrypted.org> writes:
> > On Tue, Aug 04, 2009 at 10:00:24PM -0400, Tom Lane wrote:
> >> Hmm, you mean a Query, or a raw unanalyzed InsertStmt?
>
> > In this case, its a raw InsertStmt. I would like to pass this back to
> > parse_analyze, but I need to have a queryString to go with that call, so
> > crafting a function to rate that seems to be the only way, atm.
>
> Hm, so you have an InsertStmt but not the text it was generated from?
> Where? By and large the design plan is that the source text should
> still be available anyplace that's dealing with raw parsetrees.
>
> I believe you can just pass NULL as the querystring --- the only thing
> you lose from that is syntax location pointers in error messages. But
> in ordinary situations you shouldn't have to. (Also, the fact that
> that's what the string is used for means that ginning up a string from
> the nodetree is a bit pointless. It won't contain the detail that it's
> meant to provide.)
>
> regards, tom lane
Well the problem with declaring it null is that the first parse_analyze
Assert will fail.
Assert(sourceText != NULL); /* required as of 8.4 */
What I am doing here is taking one Create stmt of a new type and
breaking it up into the various operations I need it to perform. One is
a this InsertStmt. Another is a CreateStmt. I'll also need to add
CreateTrigStmt's.
Recently, I've been thinking this would be best to do
in gram.y and then pass those parts as distinct nodes. I still might hit
this queryString issue although. I haven't thought about that enough.
--
--Dan