Thread: function to filter out tokens (sql syntax lexical)?

function to filter out tokens (sql syntax lexical)?

From
Wim Bertels
Date:
Hallo,

according to
http://www.postgresql.org/docs/8.4/interactive/sql-syntax-lexical.htm
A token can be a key word, an identifier, a quoted identifier, a literal
(or constant), or a special character symbol.

I suppose these different tokens are used by the internal parser?
So my questions is,
is there a function one could use to filter out the specific tokes?

Example:

Given the statement: INSERT INTO MY_TABLE VALUES (3, 'hi there');

We can do something like:

select filter_tokens($$INSERT INTO MY_TABLE VALUES (3, 'hi there');$$);

With output:

token     |     type
Insert        keyword
into        keyword
my_table    identifier
values        keyword
..
'hi there'    literal

or in another way with similar functionality?

mvg,
Wim


Re: function to filter out tokens (sql syntax lexical)?

From
Tom Lane
Date:
Wim Bertels <wim.bertels@khleuven.be> writes:
> is there a function one could use to filter out the specific tokes?

In 8.4 and up, pg_get_keywords() might help.

            regards, tom lane

Re: function to filter out tokens (sql syntax lexical)?

From
Wim Bertels
Date:
On Thu, 2011-04-14 at 16:53 -0400, Tom Lane wrote:
> Wim Bertels <wim.bertels@khleuven.be> writes:
> > is there a function one could use to filter out the specific tokes?
>
> In 8.4 and up, pg_get_keywords() might help.

indeed something i could use as reference

i'm actually looking for a way to compare two sql statement,
and to check if they are equivalent (not only semantically,
since this usually makes a difference in execution plan).

i suppose the postgresql internal must have some sort of functions
handling this, while parsing the statement.
i would be handy to have this function available as a db user.

tnx,
Wim

>
>             regards, tom lane
>