Thread: Statement cancel or transaction cancel?

Statement cancel or transaction cancel?

From
"Qingqing Zhou"
Date:
Pg8.0.1

backend> begin;
backend> create table a (i int);
backend> insert into a values(1);
         1: i   (typeid = 23, len = 4, typmod = -1, byval = t)
        ----
backend> select * from pg_class;
         1: relname     (typeid = 19, len = 64, typmod = -1, byval = f)
         2: relnamespace        (typeid = 26, len = 4, typmod = -1, byval =
t)
         3: reltype     (typeid = 26, len = 4, typmod = -1, byval = t)
         4: relowner    (typeid = 23, len = 4, typmod = -1, byval = t)

... before the query is finished, press a ctrl_c here ...

ERROR:  canceling query due to user request
backend> select * from a;
ERROR:  current transaction is aborted, commands ignored until end of
transaction block
backend> commit;
backend> select * from a;
ERROR:  relation "a" does not exist

So ctrl_c in a backend actually means cancel the whole transaction (instead
of statement)?


Thanks,
Qingqing




Re: Statement cancel or transaction cancel?

From
Sean Davis
Date:
On Mar 11, 2005, at 4:07 AM, Qingqing Zhou wrote:

> Pg8.0.1
>
> backend> begin;
> backend> create table a (i int);
> backend> insert into a values(1);
>          1: i   (typeid = 23, len = 4, typmod = -1, byval = t)
>         ----
> backend> select * from pg_class;
>          1: relname     (typeid = 19, len = 64, typmod = -1, byval = f)
>          2: relnamespace        (typeid = 26, len = 4, typmod = -1,
> byval =
> t)
>          3: reltype     (typeid = 26, len = 4, typmod = -1, byval = t)
>          4: relowner    (typeid = 23, len = 4, typmod = -1, byval = t)
>
> ... before the query is finished, press a ctrl_c here ...
>
> ERROR:  canceling query due to user request
> backend> select * from a;
> ERROR:  current transaction is aborted, commands ignored until end of
> transaction block
> backend> commit;
> backend> select * from a;
> ERROR:  relation "a" does not exist
>
> So ctrl_c in a backend actually means cancel the whole transaction
> (instead
> of statement)?

CTRL-C yields an error, which I think will cause the transaction to
fail, yes.

Sean