need a function to extract list items from pg_node_tree

Started by Peter Eisentrautabout 13 years ago4 messages
#1Peter Eisentraut
peter_e@gmx.net

In order to implement the PARAMETER_DEFAULT column in the information
schema I need a way to get the expressions out of the proargdefaults
column. pg_get_expr(proargdefaults, 0) gives me all expressions
comma-separated, but I need them individually. I think a function like
pg_get_list_nth (to keep consistent with the internal list API) could
work. Alternatively, a list-to-array function might do the trick. Are
there are any other potential uses cases that should be considered here?
AFAICT, indexprs is the only other system catalog column that contains
an expression list.

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#2Andres Freund
andres@2ndquadrant.com
In reply to: Peter Eisentraut (#1)
Re: need a function to extract list items from pg_node_tree

On 2012-12-21 07:20:00 -0500, Peter Eisentraut wrote:

In order to implement the PARAMETER_DEFAULT column in the information
schema I need a way to get the expressions out of the proargdefaults
column. pg_get_expr(proargdefaults, 0) gives me all expressions
comma-separated, but I need them individually. I think a function like
pg_get_list_nth (to keep consistent with the internal list API) could
work. Alternatively, a list-to-array function might do the trick. Are
there are any other potential uses cases that should be considered here?
AFAICT, indexprs is the only other system catalog column that contains
an expression list.

Hm. Wouldn't it be better to create a pg_node_tree[] and use that in
pg_attribute? Its already in the variable length part of pg_proc
anyway...

Greetings,

Andres Freund

--
Andres Freund http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#3Peter Eisentraut
peter_e@gmx.net
In reply to: Andres Freund (#2)
Re: need a function to extract list items from pg_node_tree

On 12/21/12 7:26 AM, Andres Freund wrote:

On 2012-12-21 07:20:00 -0500, Peter Eisentraut wrote:

In order to implement the PARAMETER_DEFAULT column in the information
schema I need a way to get the expressions out of the proargdefaults
column. pg_get_expr(proargdefaults, 0) gives me all expressions
comma-separated, but I need them individually. I think a function like
pg_get_list_nth (to keep consistent with the internal list API) could
work. Alternatively, a list-to-array function might do the trick. Are
there are any other potential uses cases that should be considered here?
AFAICT, indexprs is the only other system catalog column that contains
an expression list.

Hm. Wouldn't it be better to create a pg_node_tree[] and use that in
pg_attribute? Its already in the variable length part of pg_proc
anyway...

That sounds like a good idea. I don't know why they are currently
stored as a list.

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Eisentraut (#3)
Re: need a function to extract list items from pg_node_tree

Peter Eisentraut <peter_e@gmx.net> writes:

On 12/21/12 7:26 AM, Andres Freund wrote:

Hm. Wouldn't it be better to create a pg_node_tree[] and use that in
pg_attribute? Its already in the variable length part of pg_proc
anyway...

That sounds like a good idea. I don't know why they are currently
stored as a list.

They're stored as a list because that's what's convenient for use by the
parser/planner. I believe that a change like this would be quite
inconvenient on that end, and that that is not where we want to put the
inconvenience. I'm also concerned about possibly breaking any
third-party code that's already coping with the current representation.

regards, tom lane

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers