BUG #1725: psql --command and PQexec do not work and fail silently

Started by Charlie Monktonalmost 21 years ago2 messagesbugs
Jump to latest
#1Charlie Monkton
charlie@hwhc.net

The following bug has been logged online:

Bug reference: 1725
Logged by: Charlie Monkton
Email address: charlie@hwhc.net
PostgreSQL version: 7.4.6
Operating system: Solaris 9
Description: psql --command and PQexec do not work and fail silently
Details:

Create the following tables:

create table test
(
i int primary key not null
);
create table test_ref
(
i int references test(i) on delete cascade
);

Executing the following SQL via the psql -c option (or PQexec does not
work:

psql -c "delete from test;insert into test values ( 1 );insert into
test_ref values ( 1 );"
INSERT 30816 1

#select * from test_ref;
i
---
(0 rows)

echo "delete from test;insert into test values ( 1 );insert into test_ref
values ( 1 );" | /usr/local/pgsql/bin/psql
DELETE 1
INSERT 30813 1
INSERT 30814 1

# select * from test_ref;
i
---
1
(1 row)

This is very bad as multiple statement executed by PQexec fail and do not
return an error message.

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Charlie Monkton (#1)
Re: BUG #1725: psql --command and PQexec do not work and fail silently

"Charlie Monkton" <charlie@hwhc.net> writes:

Executing the following SQL via the psql -c option (or PQexec does not
work:

psql -c "delete from test;insert into test values ( 1 );insert into
test_ref values ( 1 );"

In 7.4 and before, test's ON DELETE trigger won't be fired until the end
of that command string, so it deletes both the old and new rows in
test_ref. We changed the timing of trigger firing in 8.0, and now that
example works as you expect.

regards, tom lane