psql \echo strangeness with :variables

Started by Jerry Sieversalmost 20 years ago2 messagesgeneral
Jump to latest
#1Jerry Sievers
jerry@jerrysievers.com

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/

#2Noname
ptjm@interlog.com
In reply to: Jerry Sievers (#1)
Re: psql \echo strangeness with :variables

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