Re: [HACKERS] dollar quoting

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Andrew Dunstan <andrew(at)dunslane(dot)net>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>, "Patches (PostgreSQL)" <pgsql-patches(at)postgresql(dot)org>
Subject: Re: [HACKERS] dollar quoting
Date: 2004-02-17 03:16:01
Message-ID: 200402170316.i1H3G1r24140@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers pgsql-patches

Tom Lane wrote:
> Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> writes:
> > 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.
>
> That's not the question to ask --- the question is whether a flex lexer
> will be faster or slower than the hand-made lexing code that psql is
> currently using. Lexer generation is a well-understood art, and you
> have to be pretty tense to beat out flex with hand-made code. It's the
> same tradeoff as trying to write better assembly code than a compiler
> does. Look at the lexing loop in psql/mainloop.c (that series of
> if-tests starting at about line 250) and ask yourself if that's really
> going to beat out the state-machine implementation flex uses --- which
> looks to be about two table lookups per character, plus a switch()
> executed at the end of every token. I'll bet on flex being faster.
>
> The reason the lexer shows up in the backend is that it has to grovel
> over every individual character of a query. For sufficiently large
> query strings that's gonna take awhile no matter how you do it.
>
> But in any case, the argument for moving to flex is not about
> performance, it is about making the code more understandable and more
> certain to agree with the backend lexer.

If we go with lex/flex for psql, I would still like someone to test
performance to see that we aren't taking a big hit.

--
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

Browse pgsql-hackers by date

  From Date Subject
Next Message Neil Conway 2004-02-17 03:39:35 casting zero-length strings
Previous Message Tom Lane 2004-02-17 02:54:52 Re: [PATCHES] dollar quoting

Browse pgsql-patches by date

  From Date Subject
Next Message Bruce Momjian 2004-02-17 03:34:49 Re: contrib/dbmirror
Previous Message Neil Conway 2004-02-17 03:00:49 fix oid casting inconsistency