static int
backsql_make_attr_query(
+ backsql_info *bi,
backsql_oc_map_rec *oc_map,
backsql_at_map_rec *at_map )
{
struct berbuf bb = BB_NULL;
-#ifdef BACKSQL_ALIASING_QUOTE
- backsql_strfcat( &bb, "lblcbclblbcbl",
+ backsql_strfcat( &bb, "lblbbbblblbcbl",
(ber_len_t)STRLENOF( "SELECT " ), "SELECT ",
&at_map->bam_sel_expr,
- (ber_len_t)STRLENOF( " " BACKSQL_ALIASING ), " " BACKSQL_ALIASING,
- BACKSQL_ALIASING_QUOTE,
+ (ber_len_t)STRLENOF( " " ), " ",
+ &bi->sql_aliasing,
+ &bi->sql_aliasing_quote,
&at_map->bam_ad->ad_cname,
- BACKSQL_ALIASING_QUOTE,
+ &bi->sql_aliasing_quote,
(ber_len_t)STRLENOF( " FROM " ), " FROM ",
&at_map->bam_from_tbls,
(ber_len_t)STRLENOF( " WHERE " ), " WHERE ",
'.',
&oc_map->bom_keycol,
(ber_len_t)STRLENOF( "=?" ), "=?" );
-#else /* ! BACKSQL_ALIASING_QUOTE */
- backsql_strfcat( &bb, "lblblblbcbl",
- (ber_len_t)STRLENOF( "SELECT " ), "SELECT ",
- &at_map->bam_sel_expr,
- (ber_len_t)STRLENOF( " " BACKSQL_ALIASING ), " " BACKSQL_ALIASING,
- &at_map->bam_ad->ad_cname,
- (ber_len_t)STRLENOF( " FROM " ), " FROM ",
- &at_map->bam_from_tbls,
- (ber_len_t)STRLENOF( " WHERE " ), " WHERE ",
- &oc_map->bom_keytbl,
- '.',
- &oc_map->bom_keycol,
- (ber_len_t)STRLENOF( "=?" ), "=?" );
-#endif /* ! BACKSQL_ALIASING_QUOTE */
if ( !BER_BVISNULL( &at_map->bam_join_where ) ) {
backsql_strfcat( &bb, "lb",
&at_map->bam_join_where );
}
-#ifdef BACKSQL_ALIASING_QUOTE
- backsql_strfcat( &bb, "lcbc",
- (ber_len_t)STRLENOF( " ORDER BY " ), " ORDER BY ",
- BACKSQL_ALIASING_QUOTE,
- &at_map->bam_sel_expr,
- BACKSQL_ALIASING_QUOTE );
-#else /* ! BACKSQL_ALIASING_QUOTE */
- backsql_strfcat( &bb, "lb",
+ backsql_strfcat( &bb, "lbbb",
(ber_len_t)STRLENOF( " ORDER BY " ), " ORDER BY ",
- &at_map->bam_sel_expr );
-#endif /* ! BACKSQL_ALIASING_QUOTE */
+ &bi->sql_aliasing_quote,
+ &at_map->bam_ad->ad_cname,
+ &bi->sql_aliasing_quote );
at_map->bam_query = bb.bb_val.bv_val;
}
static int
-backsql_add_sysmaps( backsql_oc_map_rec *oc_map )
+backsql_add_sysmaps( backsql_info *bi, backsql_oc_map_rec *oc_map )
{
backsql_at_map_rec *at_map;
char s[] = "+9223372036854775807L";
bb.bb_len = at_map->bam_from_tbls.bv_len + 1;
bb.bb_val = at_map->bam_from_tbls;
- backsql_merge_from_clause( &bb, &oc_map->bom_keytbl );
+ backsql_merge_from_clause( bi, &bb, &oc_map->bom_keytbl );
at_map->bam_from_tbls = bb.bb_val;
BER_BVZERO( &bb.bb_val );
snprintf( tmp, sizeof(tmp),
"DELETE FROM ldap_entry_objclasses "
"WHERE entry_id=(SELECT id FROM ldap_entries "
- "WHERE oc_map_id=%lu"
+ "WHERE oc_map_id=%lu "
"AND keyval=?) AND oc_name=?",
oc_map->bom_id );
at_map->bam_delete_proc = ch_strdup( tmp );
at_map->bam_expect_return = 0;
at_map->bam_next = NULL;
- backsql_make_attr_query( oc_map, at_map );
+ backsql_make_attr_query( bi, oc_map, at_map );
if ( avl_insert( &oc_map->bom_attrs, at_map, backsql_cmp_attr, backsql_dup_attr ) == BACKSQL_DUPLICATE ) {
Debug( LDAP_DEBUG_TRACE, "backsql_add_sysmaps(): "
"duplicate attribute \"%s\" in objectClass \"%s\" map\n",
}
ber_str2bv( at_row.cols[ 2 ], 0, 0, &bv );
- backsql_merge_from_clause( &bb, &bv );
+ backsql_merge_from_clause( bas->bas_bi, &bb, &bv );
at_map->bam_from_tbls = bb.bb_val;
if ( at_row.value_len[ 3 ] < 0 ) {
BER_BVZERO( &at_map->bam_join_where );
if ( next == at_row.cols[ 7 ] || next[0] != '\0' ) {
/* error */
}
- backsql_make_attr_query( oc_map, at_map );
+ backsql_make_attr_query( bas->bas_bi, oc_map, at_map );
Debug( LDAP_DEBUG_TRACE, "backsql_oc_get_attr_mapping(): "
"preconstructed query \"%s\"\n",
at_map->bam_query, 0, 0 );
"autoadding 'objectClass' and 'ref' mappings\n",
BACKSQL_OC_NAME( oc_map ), 0, 0 );
- (void)backsql_add_sysmaps( oc_map );
+ (void)backsql_add_sysmaps( bas->bas_bi, oc_map );
return BACKSQL_AVL_CONTINUE;
}
struct supad2at_t va = { 0 };
int rc;
- assert( objclass );
- assert( supad );
- assert( pret );
+ assert( objclass != NULL );
+ assert( supad != NULL );
+ assert( pret != NULL );
*pret = NULL;
ch_free( at->bam_query );
}
+#ifdef BACKSQL_COUNTQUERY
+ if ( at->bam_countquery != NULL ) {
+ ch_free( at->bam_countquery );
+ }
+#endif /* BACKSQL_COUNTQUERY */
+
/* TimesTen */
if ( !BER_BVISNULL( &at->bam_sel_expr_u ) ) {
ch_free( at->bam_sel_expr_u.bv_val );