- ldap_pvt_thread_mutex_lock( &si->dbconn_mutex );
- backsql_free_db_env( si );
- ldap_pvt_thread_mutex_unlock( &si->dbconn_mutex );
- ldap_pvt_thread_mutex_destroy( &si->dbconn_mutex );
- ldap_pvt_thread_mutex_lock( &si->schema_mutex );
- backsql_destroy_schema_map( si );
- ldap_pvt_thread_mutex_unlock( &si->schema_mutex );
- ldap_pvt_thread_mutex_destroy( &si->schema_mutex );
- free( si->dbname );
- free( si->dbuser );
- if ( si->dbpasswd ) {
- free( si->dbpasswd );
- }
- if ( si->dbhost ) {
- free( si->dbhost );
- }
- if ( si->upper_func.bv_val ) {
- free( si->upper_func.bv_val );
- free( si->upper_func_open.bv_val );
- free( si->upper_func_close.bv_val );
+
+ ldap_pvt_thread_mutex_lock( &bi->sql_dbconn_mutex );
+ backsql_free_db_env( bi );
+ ldap_pvt_thread_mutex_unlock( &bi->sql_dbconn_mutex );
+ ldap_pvt_thread_mutex_destroy( &bi->sql_dbconn_mutex );
+ ldap_pvt_thread_mutex_lock( &bi->sql_schema_mutex );
+ backsql_destroy_schema_map( bi );
+ ldap_pvt_thread_mutex_unlock( &bi->sql_schema_mutex );
+ ldap_pvt_thread_mutex_destroy( &bi->sql_schema_mutex );
+
+ if ( bi->sql_dbname ) {
+ ch_free( bi->sql_dbname );
+ }
+ if ( bi->sql_dbuser ) {
+ ch_free( bi->sql_dbuser );
+ }
+ if ( bi->sql_dbpasswd ) {
+ ch_free( bi->sql_dbpasswd );
+ }
+ if ( bi->sql_dbhost ) {
+ ch_free( bi->sql_dbhost );
+ }
+ if ( bi->sql_upper_func.bv_val ) {
+ ch_free( bi->sql_upper_func.bv_val );
+ ch_free( bi->sql_upper_func_open.bv_val );
+ ch_free( bi->sql_upper_func_close.bv_val );
+ }
+ if ( bi->sql_concat_func ) {
+ ber_bvarray_free( bi->sql_concat_func );
+ }
+ if ( !BER_BVISNULL( &bi->sql_strcast_func ) ) {
+ ch_free( bi->sql_strcast_func.bv_val );
+ }
+ if ( !BER_BVISNULL( &bi->sql_children_cond ) ) {
+ ch_free( bi->sql_children_cond.bv_val );
+ }
+ if ( !BER_BVISNULL( &bi->sql_subtree_cond ) ) {
+ ch_free( bi->sql_subtree_cond.bv_val );
+ }
+ if ( !BER_BVISNULL( &bi->sql_dn_oc_aliasing ) ) {
+ ch_free( bi->sql_dn_oc_aliasing.bv_val );
+ }
+ if ( bi->sql_oc_query ) {
+ ch_free( bi->sql_oc_query );
+ }
+ if ( bi->sql_at_query ) {
+ ch_free( bi->sql_at_query );
+ }
+ if ( bi->sql_id_query ) {
+ ch_free( bi->sql_id_query );
+ }
+ if ( bi->sql_has_children_query ) {
+ ch_free( bi->sql_has_children_query );
+ }
+ if ( bi->sql_insentry_stmt ) {
+ ch_free( bi->sql_insentry_stmt );
+ }
+ if ( bi->sql_delentry_stmt ) {
+ ch_free( bi->sql_delentry_stmt );
+ }
+ if ( bi->sql_renentry_stmt ) {
+ ch_free( bi->sql_renentry_stmt );
+ }
+ if ( bi->sql_delobjclasses_stmt ) {
+ ch_free( bi->sql_delobjclasses_stmt );
+ }
+ if ( !BER_BVISNULL( &bi->sql_aliasing ) ) {
+ ch_free( bi->sql_aliasing.bv_val );
+ }
+ if ( !BER_BVISNULL( &bi->sql_aliasing_quote ) ) {
+ ch_free( bi->sql_aliasing_quote.bv_val );
+ }
+
+ if ( bi->sql_anlist ) {
+ int i;
+
+ for ( i = 0; !BER_BVISNULL( &bi->sql_anlist[ i ].an_name ); i++ )
+ {
+ ch_free( bi->sql_anlist[ i ].an_name.bv_val );
+ }
+ ch_free( bi->sql_anlist );
+ }
+
+ if ( bi->sql_baseObject ) {
+ entry_free( bi->sql_baseObject );