Thread: ECPG - Meaning of -400, ECPG_PGSQL?

ECPG - Meaning of -400, ECPG_PGSQL?

From
"William West"
Date:
Goal is to TRUNCATE table, then DROP table, then
VACUUM (everything) then (re)ADD table as part of
an ECPG application's initialization.

From psql, this strategy works just fine, but not from the
ECPG application.

EXEC SQL VACUUM or EXEC SQL TRUNCATE TABLE
gives ecpg program error -400. The message that comes
with it says two different things:

For VACUUM, it says sqlca -400 with sqlca text reading:

'VACUUM cannot run inside a BEGIN/END block'

For TRUNCATE it says sqlca -400 with sqlca text reading:

'TRUNCATE TABLE cannot run inside a transaction block'

These same messages appear in the server log.

Have tried positioning these statements immediately
after the CONNECT, same result.

Have also tried EXEC SQL COMMIT prior to each,
same result.

What could have begun the block the server has in
effect, if it is immediately after a CONNECT?

Shouldn't a COMMIT end any transactions anyway?



Re: ECPG - Meaning of -400, ECPG_PGSQL?

From
"William West"
Date:
Doh! I found the '-t' switch to 'ecpg'.

I am a 'newbie' and there is a >LOT< to read and I somehow
missed it (somehow had it in my head that the >default< was
explicit transaction BEGIN-COMMIT).
.



                                       William
                                                           West/CIV/CSC         To:     pgsql-interfaces@postgresql.org
                                                                               @CSC                 cc:
                                                                                                   Sent by:
Subject:    [INTERFACES] ECPG - Meaning of -400, ECPG_PGSQL?
pgsql-interfa
                   ces-owner


                                                                               07/31/2002
                                                                                                   07:48 PM



                   
 




Goal is to TRUNCATE table, then DROP table, then
VACUUM (everything) then (re)ADD table as part of
an ECPG application's initialization.

From psql, this strategy works just fine, but not from the
ECPG application.

EXEC SQL VACUUM or EXEC SQL TRUNCATE TABLE
gives ecpg program error -400. The message that comes
with it says two different things:

For VACUUM, it says sqlca -400 with sqlca text reading:

'VACUUM cannot run inside a BEGIN/END block'

For TRUNCATE it says sqlca -400 with sqlca text reading:

'TRUNCATE TABLE cannot run inside a transaction block'

These same messages appear in the server log.

Have tried positioning these statements immediately
after the CONNECT, same result.

Have also tried EXEC SQL COMMIT prior to each,
same result.

What could have begun the block the server has in
effect, if it is immediately after a CONNECT?

Shouldn't a COMMIT end any transactions anyway?


---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command   (send "unregister YourEmailAddressHere" to
majordomo@postgresql.org)