Обсуждение: psql \echo strangeness with :variables

Поиск
Список
Период
Сортировка

psql \echo strangeness with :variables

От
Jerry Sievers
Дата:
Hello.  Today I used a shell call in psql to save the runtime date in
a psql variable and use this to dynamically create tables with date
encoded in table name.

For some reason however, the psql \echo command can't  expand the date
though it does expand in the calls to the backend.

See example below;

jsievers@jsievers#
= \set date `date '+%Y%m%d'`

jsievers@jsievers#
= \echo :date
20060524

jsievers@jsievers#
= \echo foo_:date
foo_:date   <--  Was expecting this to expand... see below

jsievers@jsievers#
= create table foo_:date();
CREATE TABLE

jsievers@jsievers#
= \dt
            List of relations
 Schema |     Name     | Type  |  Owner
--------+--------------+-------+----------
 public | foo_20060524 | table | jsievers
(1 row)

Seems there's a bit of asymmetry in the way psql evaluates the
:variables.

FYI

--
-------------------------------------------------------------------------------
Jerry Sievers   305 854-3001 (home)     WWW ECommerce Consultant
                305 321-1144 (mobile    http://www.JerrySievers.com/

Re: psql \echo strangeness with :variables

От
ptjm@interlog.com (Patrick TJ McPhee)
Дата:
In article <m3ejyjp2d8.fsf@prod01.jerrysievers.com>,
Jerry Sievers <jerry@jerrysievers.com> wrote:

% jsievers@jsievers#
% = \set date `date '+%Y%m%d'`
%
% jsievers@jsievers#
% = \echo :date
% 20060524
%
% jsievers@jsievers#
% = \echo foo_:date
% foo_:date   <--  Was expecting this to expand... see below

variables need to be space-delimited in \ contexts. Work-around:

 \set tn 'foo_' :date
 \echo :tn
 create table :tn();

--

Patrick TJ McPhee
North York  Canada
ptjm@interlog.com