On Sat, 26 Jul 2008, Steve Atkins wrote:
> The obvious thing to do is write a wrapper that will transparently run the
> right version of psql for the database it's connecting to. Has anyone already
> done that?
Several times, and I never seem to have the previous rev around when
writing a new one (writing useful error checks is the time consuming
part). The archives to my rescue: the attached is something I just
whipped together which hopefully will be the last time I do this from
scratch again 'cause I can just find this post instead. This presumes
you've installed all the versions into a directory tree at
/opt/pgsql/<version>, and you have to tweak the end of the script to make
it run that command instead of just printing the output.
Sample session using the script:
$ cat systems
aaa hosta 5432 8.2
bbb hostb 5432 8.3
$ ./runpsql aaa
/opt/pgsql/8.2/bin/psql -h hosta -p 5432
$ ./runpsql bbb
/opt/pgsql/8.3/bin/psql -h hostb -p 5432
$ ./runpsql ccc
system "ccc" not found in systems listing file at: systems
It appends the stuff after the system name to the psql command, but you do
have to worry about shell escaping with this simple implementation;
example:
$ ./runpsql bbb -Atc \"select 1\"
/opt/pgsql/8.3/bin/psql -h hostb -p 5432 -Atc "select 1"
--
* Greg Smith gsmith@gregsmith.com http://www.gregsmith.com Baltimore, MD