Bruce,
Attached is a modified patch, using DefElem instead of the 'roll your own'
method of collecting optional parameters to CopyStmt.
Naturally, DoCopy() as well as a few support functions needed to be
modified to get this going.
In order to check if parameters were being passed more than once (COPY
... WITH OIDS FROM ... WITH DELIMITER '\t' OIDS), I have added a function
defelemmember() to list.c. I could not think, off the top of my head, of a
more elegant way to do this.
Gavin
On Sun, 14 Apr 2002, Bruce Momjian wrote:
>
> Gavin, I will do the legwork on this if you wish. I think we need to
> use DefElem to store the COPY params, rather than using specific fields
> in CopyStmt.
>
> Would you send me your original patch so I am make sure I hit
> everything. I can't seem to find a copy. If you would like to work on
> it, I can give you what I have and walk you through the process.
>
> ---------------------------------------------------------------------------
>
> Gavin Sherry wrote:
> > Hi Bruce,
> >
> > On Tue, 5 Mar 2002, Bruce Momjian wrote:
> >
> > >
> > > Seems the original title about "feature causes performance in COPY" was
> > > confusing.
> >
> > Oops.
> >
> > > This patch merely fixes the identified TODO item in the
> > > grammar about using WITH in COPY.
> >
> > Now that I look at this patch again I don't think I like the
> > syntax.
> >
> > COPY [BINARY] <relation> [WITH OIDS] TO | FROM <file> [[USING DELIMITERS |
> > WITH DELIMITER] <delimiter> [WITH NULL AS <char>]
> >
> > It isn't very elegant.
> >
> > 1) I forced the parser to be able to handle multiple WITHs, but that
> > doesn't mean its right. I can't remember why I didn't propose a better
> > syntax back then, such as:
> >
> > ... [WITH [DELIMITER <delimiter>,] [NULL AS <char>]]
> >
> > 2) Given (1), Why does WITH OIDS belong where it is now? Why not have it
> > as an 'option' at the end?
> >
> > Anyone have any opinion on this?
> >
> >
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
> >
>
>