Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
> >> No, it won't. The problem is that it should, because the backend will
> >> see that as '42' followed by a $foo$ quote start.
>
> > Ok, I see what you are saying. This mismatch would only happen on
> > invalid input, though. I believe that what I did will work on all legal
> > input.
>
> I'm unconvinced. Even if there are not any current syntaxes in which a
> numeric literal can be adjacent to a string literal (I'm not totally
> sure about that), what of the future? We should solve the problem
> rather than assuming it won't bite us.
>
> > I think that this might be cured by having psql recognise a legal
> > identifier or keyword and eating it as a word, rather than treating it
> > as just another set of bytes in the stream.
>
> Hm, might work ... will think about it ...
I am a little concerned about adding the overhead of lex to psql. Right
now, some folks have reported that lex/yacc take a considerable amount
of processing time in the backend as part of a query, and adding that to
psql just to do $$ seems questionable. Of course, we can alway test and
see what the overhead shows.
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073