This is \fIhighly experimental\fP and should be used with extreme care.
The API of the layers is not frozen yet, so it is unpublished.
+.TP
+.B autocommit { NO | yes }
+Activates autocommit; by default, it is off.
+
.SH METAINFORMATION USED
.LP
Almost everything mentioned later is illustrated in examples located
#define BSQLF_FETCH_ALL_OPATTRS 0x0400
#define BSQLF_FETCH_ALL_ATTRS (BSQLF_FETCH_ALL_USERATTRS|BSQLF_FETCH_ALL_OPATTRS)
#define BSQLF_CHECK_SCHEMA 0x0800
+#define BSQLF_AUTOCOMMIT_ON 0x1000
#define BACKSQL_ISF(si, f) \
(((si)->sql_flags & f) == f)
BACKSQL_ISF(si, BSQLF_FETCH_ALL_ATTRS)
#define BACKSQL_CHECK_SCHEMA(si) \
BACKSQL_ISF(si, BSQLF_CHECK_SCHEMA)
+#define BACKSQL_AUTOCOMMIT_ON(si) \
+ BACKSQL_ISF(si, BSQLF_AUTOCOMMIT_ON)
Entry *sql_baseObject;
#ifdef BACKSQL_ARBITRARY_KEY
ber_str2bv( argv[ 1 ], 0, 1, &bi->sql_aliasing_quote );
+ } else if ( !strcasecmp( argv[ 0 ], "autocommit" ) ) {
+ if ( argc != 2 ) {
+ Debug( LDAP_DEBUG_TRACE,
+ "<==backsql_db_config (%s line %d): "
+ "missing arg "
+ "in \"autocommit {NO|yes}\" directive\n",
+ fname, lineno, 0 );
+ return 1;
+ }
+
+ if ( !strcasecmp( argv[ 1 ], "yes" ) ||
+ !strcasecmp( argv[ 1 ], "TRUE" ) ||
+ !strcasecmp( argv[ 1 ], "on" ) )
+ {
+ bi->sql_flags |= BSQLF_AUTOCOMMIT_ON;
+
+ } else if ( !strcasecmp( argv[ 1 ], "no" ) ||
+ !strcasecmp( argv[ 1 ], "FALSE" ) ||
+ !strcasecmp( argv[ 1 ], "off" ) )
+ {
+ bi->sql_flags &= ~BSQLF_AUTOCOMMIT_ON;
+
+ } else {
+ Debug( LDAP_DEBUG_TRACE,
+ "<==backsql_db_config (%s line %d): "
+ "invalid arg "
+ "in \"autocommit {NO|yes}\" directive\n",
+ fname, lineno, 0 );
+ return 1;
+ }
+
} else {
return SLAP_CONF_UNKNOWN;
}
* TimesTen : Turn off autocommit. We must explicitly
* commit any transactions.
*/
- SQLSetConnectOption( *dbhp, SQL_AUTOCOMMIT, SQL_AUTOCOMMIT_OFF );
+ SQLSetConnectOption( *dbhp, SQL_AUTOCOMMIT,
+ BACKSQL_AUTOCOMMIT_ON( bi ) ? SQL_AUTOCOMMIT_ON : SQL_AUTOCOMMIT_OFF );
/*
* See if this connection is to TimesTen. If it is,