Re: massive quotes?

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Andreas Pflug <pgadmin(at)pse-consulting(dot)de>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Andrew Dunstan <andrew(at)dunslane(dot)net>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: massive quotes?
Date: 2003-09-11 16:40:47
Message-ID: 200309111640.h8BGelf16785@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Andreas Pflug wrote:
> Bruce Momjian wrote:
>
> >Tom Lane wrote:
> >
> >
> >>The discussion so far today seems to be entirely a rehash of arguments
> >>already made (and in many cases already rebutted). Rather than wasting
> >>list bandwidth with this, I think each camp ought to go off and do their
> >>homework. Give us *details* of how your solution would work.
> >>
> >>
> >
> >Another idea would be to enable another set of quoting characters, like:
> >
> > CREATE FUNCTION xx ...
> > <--
> > x = 'fred';
> > ...
> > -->
> >
> >and have the lexer understand those new quoting characters. We just use
> >'' too much in function bodies to use that also for quoting the function
> >text. Of course, '<--' would have no special meaning inside a quoted
> >string, so we are only eliminating their use as custom operators, and I
> >think that is reasonable.
> >
> >Having heard all the other proposals, I think this will be the clearest.
> >
> >
> >
> This looks quite similar to my proposal. I called it "function body is
> enclosed in keywords", while Bruce will enclose it in new quote strings.
> This is obviously very different for the lexer/parser, while identical
> for the user. Sounds good to me.
> The quoting strings seem a bit suspicious to me, I can imagine comments
> like this "converting abc --> def", which would certainly break the
> function definition (I scanned a part of my sources, I found two
> occurrences of "-->", one of them in SQL code...)
>
> How about quoting strings that look like keywords, e.g. FUNCTIONBODY and
> ENDFUNCTIONBODY?
>
> CREATE FUNCTION foo() RETURNS int4 AS
> FUNCTIONBODY
> DECLARE bar int4;
> BEGIN
> RETURN bar;
> END;
> ENDFUNCTIONBODY
> LANGUAGE 'plpgsql';

Uh, the problem with long keywords is that you are then requiring the
_parser_ to identify those keywords, and at that point, the entire text
between the keywords has been sliced up by the lexer, which will
certainly make it a mess. I might be wrong that we can even use more
then two characters for the start of quote string because I don't think
flex supports more than one character of look-ahead. Again, lookahead
is the key because you have to flag that text as a quoted string before
it gets processed by the lexer.

I was picking <-- --> out of the air. We would have to choose other
character sequences, and probably only two-character ones. However,
looking at scan.l, it seems you could try putting a literal keyword in
there. Of course, it would also match 'identifier' code, but if it is
earlier, I think it gets matched first.

--
Bruce Momjian | http://candle.pha.pa.us
pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2003-09-11 16:53:59 Re: massive quotes?
Previous Message Tom Lane 2003-09-11 16:37:02 Re: massive quotes?