Re: psql client quits after 1st command

From: Douglas McNaught <doug(at)mcnaught(dot)org>
To: Vincenzo Romano <vincenzo(dot)romano(at)gmail(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: psql client quits after 1st command
Date: 2007-03-02 16:07:37
Message-ID: 87zm6vochi.fsf@suzuka.mcnaught.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Vincenzo Romano <vincenzo(dot)romano(at)gmail(dot)com> writes:

> Hi all.
>
> Under Linux I'm trying to communicate to an instance of the psql client
> running in the background through a couple of named pipes.
> I'd like to do something like this:
>
> $ mkfifo /tmp/pg_ipipe /tmp/pg_opipe
> $ psql -d testdb -U testuser < /tmp/pg_ipipe > /tmp/pg_opipe &
> ...
> $ echo "\t" > /tmp/pg_ipipe
> $ echo "select count(*) from test_table;" > /tmp/pg_ipipe
> $ read COUNT < /tmp/pg_opipe
>
> The psql client connects to the DB abd waits for the first commad coming from
> the "pg_ipipe" and executes it. Fine.
> The problem is that it quits soon after instead of waiting for the second (and
> any subsequent) command, as we all see in the usual command line usage.
> I've also tried to add a "--file -" with no luck.
> It seems that when the psql is getting the input from a named pipe acts as if
> the "--command" option were active.
>
> I'm sure I'm missing something. But don't know what.
> Is there any hint?

psql gets an EOF on the named pipe when the first shell command
exits. You need to batch all your commands and send them in one shell
command, so it keeps the pipe open until it's done.

-Doug

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Scott Ribe 2007-03-02 16:12:09 Re: PostgreSQL primary (sequence) key issue (Ruby/Rails)
Previous Message Tom Lane 2007-03-02 16:03:18 Re: pg_dump, serial