Re: some question about SavePoint ? - Mailing list pgsql-odbc

From Ludek Finstrle
Subject Re: some question about SavePoint ?
Date
Msg-id 20060119111957.GA31571@soptik.pzkagis.cz
Whole thread Raw
In response to some question about SavePoint ?  (zhaoxin <zhaox@necas.nec.com.cn>)
Responses Re: some question about SavePoint ?  (zhaoxin <zhaox@necas.nec.com.cn>)
List pgsql-odbc
> After I execute a SQL , I want to ignore some error ,and continue to
> execute my SQL.but I will get some error like that :
>
> "current transaction is aborted, commands ignored until end of
> transaction block"

There is some common known bugs in 08.01.0102 in implicit rollback.
Do you try latest development snapshot?
Maybe 08.01.0106 could better fit you. I don't know. We have some report
about similar problem (but reporter doesn't mentioned his psqlodbc version).

> I try to use SavePoint to solve this trouble , but I got some problem .
> example:
>  .....
>  1. set SQL_AUTOCOMMIT_OFF

In this case you may call BEGIN (START TRANSACTION is supported since
08.01.0107).

>  2. SQLConnect()
>  ..............
>  3. SQLExecDirect() -> SavePoint sp ;
>  4. SQLExecDirect() -> insert into test values(...) ;
>  5. SQLExecDirect() -> Release SavePoint sp;
>  6. SQLEndTran()    -> commit ;
>  7. SQLExecDirect() -> SavePoint sp ;
>                      ^^^^^^^^^^^^^^^^
>  8. SQLExecDirect() -> update test;
>  .............
>
> Until 6, it return OK, but at 7 , it will return some error like
>
>     "SAVEPOINT may only be used in transaction blocks"
>
> so , I have to use "begin" to start another transaction after I execute
> the  "commit" at 6 ?
> Why can I use savepoint at 3 without execute any "begin" ???
> Or I have some mistake ?

Yes you do ... When you use autocommit = off you have to start and end
transaction manually. There is hack in psqlodbc which start transaction
automatically even in autocommit = off when you use select, insert, update
or delete SQL statement.

> My psqlodbc version is 8.01.01.02(Unicode)
>
> And, I have to use SavePoint to rollback to current SQL?
> Don't I have another way in psqlodbc ?

What about try the latest development snapshot as I mentioned above?

Regards,

Luf

pgsql-odbc by date:

Previous
From: "Dave Page"
Date:
Subject: Odbcapi30.c - 64 bit compiler warning cleanup
Next
From: Ludek Finstrle
Date:
Subject: Re: Odbcapi30.c - 64 bit compiler warning cleanup