Two questions really...
(1) Is there a way to turn off the implicit BEGIN that PsqlODBC sends to PostgreSQL? I want to use multiple SQL statements within transactions.
(2) Is there a way to stop PsqlODBC from sending ABORT when disconnnected and there is no transaction in progress? (Not so critical as first question.)
I know that the ODBC driver is sending the BEGIN and ABORT on its own by viewing the psqlodbc_%.log file and observing postmaster response.
I am using...
+ PostgreSQL v7.0.3 (on Linux)
+ PsqlODBC v6.50
+ Microsoft Windows NT SP6a
+ Microsoft Visual Basic 6 SP4
+ Microsoft ADO v3.520.5303.2
Following is a code sample with comments.
-------------------------------------------------------------------
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
With cn
.ConnectionString = MyConnectionString
.Open
.BeginTrans '<--- Seems to be ignored by ODBC driver.
.CommitTrans '<--- Seems to be ignored by ODBC driver.
End With
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
With rs
.ActiveConnection = cn
.Source = "BEGIN WORK;"
.Open
'-- At this point, the ODBC driver sends "BEGIN" and "BEGIN WORK;"
'-- to PostgreSQL and the postmaster complains by displaying the
'-- message "BEGIN: already a transaction in progress.
.Source = "COMMIT WORK;"
.Open '<--- Seems to work OK.
End With
cn.Close
Set rs = Nothing
Set cn = Nothing
End
'-- The ODBC driver sends "ABORT" to PostgreSQL. The postmaster
'-- displays "ROLLBACK: no transaction in progress" and displays the
'-- message "pg_recvbuf: unexpected EOF on client connection".
-------------------------------------------------------------------
Any help would be appreciated.
Thanks!
Doug