Re: Queries w/ "computed" table names? (eval in Pg?) - Mailing list pgsql-general

From Steve Atkins
Subject Re: Queries w/ "computed" table names? (eval in Pg?)
Date
Msg-id F78A9EC3-DA79-49B4-BADF-994FFC547A10@blighty.com
Whole thread Raw
In response to Queries w/ "computed" table names? (eval in Pg?)  ("Kynn Jones" <kynnjo@gmail.com>)
Responses Re: Queries w/ "computed" table names? (eval in Pg?)
List pgsql-general
On Feb 22, 2008, at 3:40 PM, Kynn Jones wrote:

> Hi.  Suppose I have a database that contains a "meta table" that
> holds the names of other the tables in the database, keyed by human-
> readable but longish strings.  I would like to write queries that
> first "compute" the names of some tables (i.e. by looking them up in
> "meta table"), and after that they execute subqueries using these
> computed table names.  The following invalid SQL illustrates the
> kind of maneuver I'd like to do:
>
> SELECT x, y, z
>   FROM [ SELECT table_name FROM meta_table
>           WHERE human_readable_key =
>           'some veeeery long and unwieldy string' ];
>
> The stuff in [ brackets ] is not meant to be valid SQL, but rather
> to suggest that the name of the table for the "outer" query
> corresponds to the string returned by the "inner" (bracketed) query.
>
> Some programming languages allow the run-time evaluation of a string
> representing some code in the language.  One way to do what I'd like
> to do is based on this idea: I would construct the source code for
> the desired subquery as a string (including the name of the table
> obtained at run-time from meta_table), and "somehow" evaluate this
> string.  This "somehow" is what I'm missing.  Is there a way in
> PostgreSQL to evaluate a string as SQL?
>

You can do it from within pl/pgsql - see
http://www.postgresql.org/docs/8.3/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN

I don't think there's any way to do it from plain sql, but you could
probably create a small pl/pgsql wrapper function to do it.

Cheers,
   Steve


pgsql-general by date:

Previous
From: Jeff Davis
Date:
Subject: Re: Queries w/ "computed" table names? (eval in Pg?)
Next
From: Stephen Davies
Date:
Subject: Re: ts_headline