Alternative to psql -c ?

From: James Le Cuirot <chewi(at)aura-online(dot)co(dot)uk>
To: pgsql-general(at)postgresql(dot)org
Subject: Alternative to psql -c ?
Date: 2014-06-25 13:43:25
Message-ID: 20140625144325.49d1124d@red.yakaraplc.local
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hello,

I've been using the Chef database cookbook and found it
frustrating because it doesn't allow you to use peer
authentication. The client process generally runs as root and
connects to PostgreSQL using the Ruby pg gem.

I have patched it to shell out to psql instead. This has the
added benefit of not having to install "build-essential" on boxes
that might otherwise be very minimal. This is normally needed to
build the pg gem. I would therefore like to push the shell out
approach but one problem remains.

The cookbook currently uses PQexec so multiple SQL commands are
wrapped in a transaction unless an explicit transaction
instruction appears. I don't want to change this behaviour but
the only way to get exactly the same effect from psql is to use
the -c option.

I suspect some may shove rather large SQL scripts through this to the
extent that it may break the command line limit, if not on Linux, then
perhaps on Windows, where I gather it's 32,768. Passing these scripts
on the command line doesn't seem particularly elegant in any case. I'd
really like to use stdin but this has different transactional
behaviour. I thought about looking for instances of transaction
instructions in advance but I have seen that PostgreSQL does not do
this naively; it uses the lexer.

Is there another way?

Regards,
James

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Igor Neyman 2014-06-25 13:46:10 Re: Getting "cache lookup failed for aggregate" error
Previous Message Karthik Iyer 2014-06-25 11:29:17 DATA corruption after promoting slave to master