aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces/odbc/options.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/interfaces/odbc/options.c')
-rw-r--r--src/interfaces/odbc/options.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/interfaces/odbc/options.c b/src/interfaces/odbc/options.c
index bf2707f4dae..80ec7dac68e 100644
--- a/src/interfaces/odbc/options.c
+++ b/src/interfaces/odbc/options.c
@@ -342,14 +342,12 @@ PGAPI_SetConnectOption(
break;
case SQL_AUTOCOMMIT:
+ if (vParam == SQL_AUTOCOMMIT_ON && CC_is_in_autocommit(conn))
+ break;
+ else if (vParam == SQL_AUTOCOMMIT_OFF && !CC_is_in_autocommit(conn))
+ break;
if (CC_is_in_trans(conn))
- {
- conn->errormsg = "Cannot switch commit mode while a transaction is in progress";
- conn->errornumber = CONN_TRANSACT_IN_PROGRES;
- CC_log_error(func, "", conn);
- return SQL_ERROR;
- }
-
+ CC_commit(conn);
mylog("PGAPI_SetConnectOption: AUTOCOMMIT: transact_status=%d, vparam=%d\n", conn->transact_status, vParam);
switch (vParam)
@@ -475,7 +473,7 @@ PGAPI_GetConnectOption(
break;
case SQL_TXN_ISOLATION: /* NOT SUPPORTED */
- *((UDWORD *) pvParam) = SQL_TXN_SERIALIZABLE;
+ *((UDWORD *) pvParam) = SQL_TXN_READ_COMMITTED;
break;
/* These options should be handled by driver manager */