Thread: Passing tokens to a function

Passing tokens to a function

From
Scott Bailey
Date:
I'd like to make an XMLTABLE() function, probably in plpython (not C).
And I'd like to follow the SQL/XML standard. So a function call should
look something like this:

SELECT *
FROM XMLTABLE('//node'
   PASSING xmldoc
   COLUMNS id INT PATH '@id',
     name VARCHAR(30) PATH 'name')

Is this possible to pass in the tokens or do I need to abandon the
standard and just take parameters, probably something more like:

SELECT *
FROM XMLTABLE('//node', xmldoc,
array[xt_column('id', INT, '@id'), xt_column('name', VARCHAR(30), 'name')])

Re: Passing tokens to a function

From
Tom Lane
Date:
Scott Bailey <artacus@comcast.net> writes:
> I'd like to make an XMLTABLE() function, probably in plpython (not C).
> And I'd like to follow the SQL/XML standard. So a function call should
> look something like this:

> SELECT *
> FROM XMLTABLE('//node'
>    PASSING xmldoc
>    COLUMNS id INT PATH '@id',
>      name VARCHAR(30) PATH 'name')

> Is this possible to pass in the tokens or do I need to abandon the
> standard and just take parameters,

The latter, unless you want to modify the parser (see gram.y).

The SQL committee's willingness to invent random syntax like this
is not one of their better habits :-(

            regards, tom lane