Skip site navigation (1) Skip section navigation (2)

exporting raw parser

From: Tatsuo Ishii <ishii(at)postgresql(dot)org>
To: pgsql-hackers(at)postgresql(dot)org
Subject: exporting raw parser
Date: 2010-05-27 01:02:49
Message-ID: (view raw, whole thread or download thread mbox)
Lists: pgsql-hackers
I'm thinking about exporting the raw parser and related modules as a C
library. Though this will not be an immediate benefit of PostgreSQL
itself, it will be a huge benefit for any PostgreSQL
applications/middle ware those need to parse SQL statements.

For example, pgpool-II parses queries to know if it's a read query or
not. In other case, it needs to know if a SELECT statement includes
any temporal constructor such as CURRENT_TIME_STAMP. These are not a
trivial job since SQL grammar is complex. For this purpose pgpool-II
copies PostgreSQL parser code and use it. Of course maintaining the
part is pain since PostgreSQL's parser will be changed from release to

I believe not only pgpool-II but some connection pooling middle wares
need SQL parser as well(pgbouncer?). Also any tool which accepts SQL
statement as its input would also need SQL parser(pgAdmin?). For them
exported raw parser will be a huge benefit.

The implementation will not be very difficult since pgpool-II has
already done most of necessary work for this:

- extract raw parser part from parser directory, which include gram.y,
  scan.l and keywords.c

- extract utility functions needed to handle raw parse tree:
  nodes/nodes.c makefunc.c etc.

- create an exportable version of memory manager

- create an exportable exception handling routines(i.e. elog)

- wrap all of above into a libXX*.so

I think those works are essentially a refactoring of existing raw
parser, and will not add performance degration nor maintenance cost.

Tatsuo Ishii
SRA OSS, Inc. Japan


pgsql-hackers by date

Next:From: Heikki LinnakangasDate: 2010-05-27 01:06:17
Subject: Re: functional call named notation clashes with SQL feature
Previous:From: Robert HaasDate: 2010-05-27 01:00:43
Subject: Re: Distclean does not remove gram.c

Privacy Policy | About PostgreSQL
Copyright © 1996-2017 The PostgreSQL Global Development Group