X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-bdb%2Fidl.c;h=ec193efeece06c9cc48c22d26d2b7e4364785819;hb=b7f0983efafb6139d45814978ec376f87c228c37;hp=de1bf459f521055259415697f32cbfa8e2885664;hpb=356a98a363cfc178b3b913eb57f0e9e9eafc1db5;p=openldap diff --git a/servers/slapd/back-bdb/idl.c b/servers/slapd/back-bdb/idl.c index de1bf459f5..ec193efeec 100644 --- a/servers/slapd/back-bdb/idl.c +++ b/servers/slapd/back-bdb/idl.c @@ -18,11 +18,6 @@ #define IDL_CMP(x,y) ( x < y ? -1 : ( x > y ? 1 : 0 ) ) -#ifndef IDL_DEBUG - /* enable basic checks for now */ -#define IDL_DEBUG 1 -#endif - #if IDL_DEBUG > 0 static void idl_check( ID *ids ) { @@ -40,20 +35,35 @@ static void idl_check( ID *ids ) static void idl_dump( ID *ids ) { if( BDB_IDL_IS_RANGE( ids ) ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_INFO, "IDL: range (%ld - %ld)\n", + (long) BDB_IDL_RANGE_FIRST( ids ), + (long) BDB_IDL_RANGE_LAST( ids ) )); +#else Debug( LDAP_DEBUG_ANY, "IDL: range ( %ld - %ld )\n", (long) BDB_IDL_RANGE_FIRST( ids ), (long) BDB_IDL_RANGE_LAST( ids ) ); +#endif } else { ID i; +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_INFO, "IDL: size %ld", + (long) ids[0] )); +#else Debug( LDAP_DEBUG_ANY, "IDL: size %ld", (long) ids[0], 0, 0 ); +#endif for( i=1; i<=ids[0]; i++ ) { if( i % 16 == 1 ) { Debug( LDAP_DEBUG_ANY, "\n", 0, 0, 0 ); } +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_INFO, "%02lx",(long)ids[i] )); +#else Debug( LDAP_DEBUG_ANY, " %02lx", (long) ids[i], 0, 0 ); +#endif } Debug( LDAP_DEBUG_ANY, "\n", 0, 0, 0 ); @@ -128,8 +138,13 @@ int bdb_idl_insert( ID *ids, ID id ) unsigned x = bdb_idl_search( ids, id ); #if IDL_DEBUG > 1 +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_DETAIL1, "insert: %04lx at %d\n", + (long) id, x )); +#else Debug( LDAP_DEBUG_ANY, "insert: %04lx at %d\n", (long) id, x, 0 ); idl_dump( ids ); +#endif #elif IDL_DEBUG > 0 idl_check( ids ); #endif @@ -177,8 +192,13 @@ static int idl_delete( ID *ids, ID id ) unsigned x = bdb_idl_search( ids, id ); #if IDL_DEBUG > 1 +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_DETAIL1, "delete: %04lx at %d\n", + (long) id, x )); +#else Debug( LDAP_DEBUG_ANY, "delete: %04lx at %d\n", (long) id, x, 0 ); idl_dump( ids ); +#endif #elif IDL_DEBUG > 0 idl_check( ids ); #endif @@ -231,26 +251,35 @@ bdb_idl_fetch_key( #ifdef BDB_IDL_MULTI { DBC *cursor; - ID buf[BDB_IDL_UM_SIZE]; - ID *i, *j; + ID buf[BDB_PAGESIZE*4]; + ID *i; void *ptr; size_t len; int rc2; + int flags = bdb->bi_db_opflags | DB_MULTIPLE; data.data = buf; - data.ulen = BDB_IDL_UM_SIZEOF; + data.ulen = sizeof(buf); data.flags = DB_DBT_USERMEM; + if ( tid ) + flags |= DB_RMW; + rc = db->cursor( db, tid, &cursor, bdb->bi_db_opflags ); if( rc != 0 ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_fetch_key: cursor failed: %s (%d)\n", db_strerror(rc), rc )); +#else Debug( LDAP_DEBUG_ANY, "=> bdb_idl_fetch_key: " "cursor failed: %s (%d)\n", db_strerror(rc), rc, 0 ); +#endif return rc; } - rc = cursor->c_get( cursor, key, &data, bdb->bi_db_opflags | - DB_SET | DB_MULTIPLE ); + rc = cursor->c_get( cursor, key, &data, flags | DB_SET ); if (rc == 0) { i = ids; while (rc == 0) { + u_int8_t *j; + DB_MULTIPLE_INIT( ptr, &data ); while (ptr) { DB_MULTIPLE_NEXT(ptr, &data, j, len); @@ -259,17 +288,20 @@ bdb_idl_fetch_key( AC_MEMCPY( i, j, sizeof(ID) ); } } - rc = cursor->c_get( cursor, key, &data, bdb->bi_db_opflags | - DB_NEXT_DUP | DB_MULTIPLE ); + rc = cursor->c_get( cursor, key, &data, flags | DB_NEXT_DUP ); } if ( rc == DB_NOTFOUND ) rc = 0; ids[0] = i - ids; /* On disk, a range is denoted by 0 in the first element */ if (ids[1] == 0) { if (ids[0] != BDB_IDL_RANGE_SIZE) { +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "=> bdb_idl_fetch_key: range size mismatch: expected %ld, got %ld\n", BDB_IDL_RANGE_SIZE, ids[0] )); +#else Debug( LDAP_DEBUG_ANY, "=> bdb_idl_fetch_key: " - "range size mismatch: expected %ld, got %ld\n", + "range size mismatch: expected %d, got %ld\n", BDB_IDL_RANGE_SIZE, ids[0], 0 ); +#endif cursor->c_close( cursor ); return -1; } @@ -279,8 +311,12 @@ bdb_idl_fetch_key( } rc2 = cursor->c_close( cursor ); if (rc2) { +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_fetch_key: close failed: %s (%d)\n", db_strerror(rc2), rc2 )); +#else Debug( LDAP_DEBUG_ANY, "=> bdb_idl_fetch_key: " "close failed: %s (%d)\n", db_strerror(rc2), rc2, 0 ); +#endif return rc2; } } @@ -296,23 +332,35 @@ bdb_idl_fetch_key( return rc; } else if( rc != 0 ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_fetch_key: get failed: %s (%d)\n", db_strerror(rc), rc )); +#else Debug( LDAP_DEBUG_ANY, "=> bdb_idl_fetch_key: " "get failed: %s (%d)\n", db_strerror(rc), rc, 0 ); +#endif return rc; } else if ( data.size == 0 || data.size % sizeof( ID ) ) { /* size not multiple of ID size */ +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_fetch_key: odd size: expected %ld multiple, got %ld\n", (long) sizeof( ID ), (long) data.size )); +#else Debug( LDAP_DEBUG_ANY, "=> bdb_idl_fetch_key: " "odd size: expected %ld multiple, got %ld\n", (long) sizeof( ID ), (long) data.size, 0 ); +#endif return -1; } else if ( data.size != BDB_IDL_SIZEOF(ids) ) { /* size mismatch */ +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_fetch_key: get size mismatch: expected %ld, got %ld\n", (long) ((1 + ids[0]) * sizeof( ID )), (long) data.size )); +#else Debug( LDAP_DEBUG_ANY, "=> bdb_idl_fetch_key: " "get size mismatch: expected %ld, got %ld\n", (long) ((1 + ids[0]) * sizeof( ID )), (long) data.size, 0 ); +#endif return -1; } @@ -334,124 +382,153 @@ bdb_idl_insert_key( ID ids[BDB_IDL_DB_SIZE]; #endif +#if 0 /* for printable keys only */ +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_ARGS, "bdb_idl_insert_key: %s %ld\n", (char *)key->data, (long) id )); +#else Debug( LDAP_DEBUG_ARGS, "=> bdb_idl_insert_key: %s %ld\n", (char *)key->data, (long) id, 0 ); +#endif +#endif assert( id != NOID ); DBTzero( &data ); #ifdef BDB_IDL_MULTI { - ID buf[BDB_IDL_DB_MAX]; DBC *cursor; - ID lo, hi; + ID lo, hi, tmp; char *err; data.size = sizeof( ID ); data.ulen = data.size; data.flags = DB_DBT_USERMEM; - rc = bdb_idl_fetch_key( be, db, tid, key, buf ); - if ( rc && rc != DB_NOTFOUND ) + rc = db->cursor( db, tid, &cursor, bdb->bi_db_opflags ); + if ( rc != 0 ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_insert_key: cursor failed: %s (%d)\n", db_strerror(rc), rc )); +#else + Debug( LDAP_DEBUG_ANY, "=> bdb_idl_insert_key: " + "cursor failed: %s (%d)\n", db_strerror(rc), rc, 0 ); +#endif return rc; - - /* If it never existed, or there's room in the current key, - * just store it. + } + data.data = &tmp; + /* Fetch the first data item for this key, to see if it + * exists and if it's a range. */ - if ( rc == DB_NOTFOUND || ( !BDB_IDL_IS_RANGE(buf) && - BDB_IDL_N(buf) < BDB_IDL_DB_MAX ) ) { - data.data = &id; - rc = db->put( db, tid, key, &data, DB_NODUPDATA ); - } else if ( BDB_IDL_IS_RANGE(buf) ) { - /* If it's a range and we're outside the boundaries, - * rewrite the range boundaries. - */ - if ( id < BDB_IDL_RANGE_FIRST(buf) || - id > BDB_IDL_RANGE_LAST(buf) ) { - rc = db->cursor( db, tid, &cursor, bdb->bi_db_opflags ); + rc = cursor->c_get( cursor, key, &data, DB_SET | DB_RMW ); + err = "c_get"; + if ( rc == 0 ) { + if ( tmp != 0 ) { + /* not a range, count the number of items */ + db_recno_t count; + rc = cursor->c_count( cursor, &count, 0 ); if ( rc != 0 ) { - Debug( LDAP_DEBUG_ANY, "=> bdb_idl_insert_key: " - "cursor failed: %s (%d)\n", db_strerror(rc), rc, 0 ); - return rc; + err = "c_count"; + goto fail; } - if ( id < BDB_IDL_RANGE_FIRST(buf) ) { - data.data = buf+1; + if ( count >= BDB_IDL_DB_SIZE ) { + /* No room, convert to a range */ + lo = tmp; + data.data = &hi; + rc = cursor->c_get( cursor, key, &data, DB_LAST ); + if ( rc != 0 ) { + err = "c_get last"; + goto fail; + } + if ( id < lo ) + lo = id; + else if ( id > hi ) + hi = id; + rc = db->del( db, tid, key, 0 ); + if ( rc != 0 ) { + err = "del"; + goto fail; + } + data.data = &id; + id = 0; + rc = cursor->c_put( cursor, key, &data, DB_KEYFIRST ); + if ( rc != 0 ) { + err = "c_put 0"; + goto fail; + } + id = lo; + rc = cursor->c_put( cursor, key, &data, DB_KEYLAST ); + if ( rc != 0 ) { + err = "c_put lo"; + goto fail; + } + id = hi; + rc = cursor->c_put( cursor, key, &data, DB_KEYLAST ); + if ( rc != 0 ) { + err = "c_put hi"; + goto fail; + } } else { - data.data = buf+2; - } - rc = cursor->c_get( cursor, key, &data, DB_GET_BOTH ); - if ( rc != 0 ) { - err = "c_get"; -fail: Debug( LDAP_DEBUG_ANY, "=> bdb_idl_insert_key: " - "%s failed: %s (%d)\n", err, db_strerror(rc), rc ); - if ( cursor ) cursor->c_close( cursor ); - return rc; + /* There's room, just store it */ + goto put1; } - data.data = &id; - /* We should have been able to just overwrite the old - * value with the new, but apparently we have to delete - * it first. + } else { + /* It's a range, see if we need to rewrite + * the boundaries */ - rc = cursor->c_del( cursor, 0 ); - if ( rc ) { - err = "c_del"; + hi = id; + data.data = &lo; + rc = cursor->c_get( cursor, key, &data, DB_NEXT_DUP ); + if ( rc != 0 ) { + err = "c_get lo"; goto fail; } - rc = cursor->c_put( cursor, key, &data, DB_KEYFIRST ); - if ( rc ) { - err = "c_put"; - goto fail; + if ( id > lo ) { + data.data = &hi; + rc = cursor->c_get( cursor, key, &data, DB_NEXT_DUP ); + if ( rc != 0 ) { + err = "c_get hi"; + goto fail; + } } - rc = cursor->c_close( cursor ); - if ( rc ) { - cursor = NULL; - err = "c_close"; - goto fail; + if ( id < lo || id > hi ) { + /* Delete the current lo/hi */ + rc = cursor->c_del( cursor, 0 ); + if ( rc != 0 ) { + err = "c_del"; + goto fail; + } + data.data = &id; + rc = cursor->c_put( cursor, key, &data, DB_KEYFIRST ); + if ( rc != 0 ) { + err = "c_put lo/hi"; + goto fail; + } } } - } else { /* convert to a range */ - lo = BDB_IDL_FIRST(buf); - hi = BDB_IDL_LAST(buf); - - if (id < lo) - lo = id; - else if (id > hi) - hi = id; - - cursor = NULL; - - /* Delete all of the old IDL so we can replace with a range */ - rc = db->del( db, tid, key, 0 ); - if ( rc ) { - err = "del"; - goto fail; - } - - /* Write the range */ - data.data = &id; - id = 0; - rc = db->put( db, tid, key, &data, 0 ); - if ( rc ) { - err = "put #1"; - goto fail; - } - id = lo; - rc = db->put( db, tid, key, &data, 0 ); - if ( rc ) { - err = "put #2"; - goto fail; - } - id = hi; - rc = db->put( db, tid, key, &data, 0 ); - if ( rc ) { - err = "put #3"; + } else if ( rc == DB_NOTFOUND ) { +put1: data.data = &id; + rc = cursor->c_put( cursor, key, &data, DB_KEYFIRST ); + /* Don't worry if it's already there */ + if ( rc != 0 && rc != DB_KEYEXIST ) { + err = "c_put id"; goto fail; } + } else { + /* initial c_get failed, nothing was done */ +fail: +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_insert_key: %s failed: %s (%d)\n", err, db_strerror(rc), rc )); +#else + Debug( LDAP_DEBUG_ANY, "=> bdb_idl_insert_key: " + "%s failed: %s (%d)\n", err, db_strerror(rc), rc ); +#endif + cursor->c_close( cursor ); + return rc; } + rc = cursor->c_close( cursor ); } -#else +#else /* !BDB_IDL_MULTI */ data.data = ids; data.ulen = sizeof ids; data.flags = DB_DBT_USERMEM; @@ -465,23 +542,35 @@ fail: Debug( LDAP_DEBUG_ANY, "=> bdb_idl_insert_key: " data.size = 2 * sizeof( ID ); } else if ( rc != 0 ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_insert_key: get failed: %s (%d)\n", db_strerror(rc), rc )); +#else Debug( LDAP_DEBUG_ANY, "=> bdb_idl_insert_key: " "get failed: %s (%d)\n", db_strerror(rc), rc, 0 ); +#endif return rc; } else if ( data.size == 0 || data.size % sizeof( ID ) ) { /* size not multiple of ID size */ +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_insert_key: odd size: expected %ld multiple, got %ld\n", (long) sizeof( ID ), (long) data.size )); +#else Debug( LDAP_DEBUG_ANY, "=> bdb_idl_insert_key: " "odd size: expected %ld multiple, got %ld\n", (long) sizeof( ID ), (long) data.size, 0 ); +#endif return -1; } else if ( data.size != BDB_IDL_SIZEOF(ids) ) { /* size mismatch */ +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_insert_key: odd size: expected %ld multiple, got %ld\n", (long) ((1 + ids[0]) * sizeof( ID )), (long) data.size )); +#else Debug( LDAP_DEBUG_ANY, "=> bdb_idl_insert_key: " "get size mismatch: expected %ld, got %ld\n", (long) ((1 + ids[0]) * sizeof( ID )), (long) data.size, 0 ); +#endif return -1; } else if ( BDB_IDL_IS_RANGE(ids) ) { @@ -497,14 +586,22 @@ fail: Debug( LDAP_DEBUG_ANY, "=> bdb_idl_insert_key: " rc = bdb_idl_insert( ids, id ); if( rc == -1 ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_DETAIL1, "bdb_idl_insert_key: dup\n" )); +#else Debug( LDAP_DEBUG_TRACE, "=> bdb_idl_insert_key: dup\n", 0, 0, 0 ); +#endif return 0; } if( rc != 0 ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_insert_key: insert failed: (%d)\n", rc )); +#else Debug( LDAP_DEBUG_ANY, "=> bdb_idl_insert_key: " "bdb_idl_insert failed (%d)\n", rc, 0, 0 ); +#endif return rc; } @@ -518,9 +615,13 @@ fail: Debug( LDAP_DEBUG_ANY, "=> bdb_idl_insert_key: " if( rc == DB_KEYEXIST ) rc = 0; if( rc != 0 ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_insert_key: put failed: (%d)\n", db_strerror(rc), rc )); +#else Debug( LDAP_DEBUG_ANY, "=> bdb_idl_insert_key: " "put failed: %s (%d)\n", db_strerror(rc), rc, 0 ); +#endif } return rc; } @@ -540,10 +641,16 @@ bdb_idl_delete_key( ID ids[BDB_IDL_DB_SIZE]; #endif +#if 0 /* for printable keys only */ +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_ARGS, "bdb_idl_delete_key: %s %ld\n", (char *)key->data, (long) id )); +#else Debug( LDAP_DEBUG_ARGS, "=> bdb_idl_delete_key: %s %ld\n", (char *)key->data, (long) id, 0 ); +#endif +#endif assert( id != NOID ); @@ -551,17 +658,105 @@ bdb_idl_delete_key( #ifdef BDB_IDL_MULTI { DBC *cursor; + ID lo, hi, tmp; + char *err; - data.data = &id; + data.data = &tmp; data.size = sizeof( id ); data.ulen = data.size; data.flags = DB_DBT_USERMEM; rc = db->cursor( db, tid, &cursor, bdb->bi_db_opflags ); - rc = cursor->c_get( cursor, key, &data, bdb->bi_db_opflags | - DB_GET_BOTH | DB_RMW ); - if (rc == 0) - rc = cursor->c_del( cursor, 0 ); + if ( rc != 0 ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_delete_key: cursor failed: %s (%d)\n", db_strerror(rc), rc )); +#else + Debug( LDAP_DEBUG_ANY, "=> bdb_idl_delete_key: " + "cursor failed: %s (%d)\n", db_strerror(rc), rc, 0 ); +#endif + return rc; + } + /* Fetch the first data item for this key, to see if it + * exists and if it's a range. + */ + rc = cursor->c_get( cursor, key, &data, DB_SET | DB_RMW ); + err = "c_get"; + if ( rc == 0 ) { + if ( tmp != 0 ) { + /* Not a range, just delete it */ + data.data = &id; + rc = cursor->c_get( cursor, key, &data, + DB_GET_BOTH | DB_RMW ); + if ( rc == 0 ) { + rc = cursor->c_del( cursor, 0 ); + if ( rc != 0 ) { + err = "c_del id"; + goto fail; + } + } + } else { + /* It's a range, see if we need to rewrite + * the boundaries + */ + hi = 0; + data.data = &lo; + rc = cursor->c_get( cursor, key, &data, DB_NEXT_DUP ); + if ( rc != 0 ) { + err = "c_get lo"; + goto fail; + } + if ( id > lo ) { + data.data = &hi; + rc = cursor->c_get( cursor, key, &data, DB_NEXT_DUP ); + if ( rc != 0 ) { + err = "c_get hi"; + goto fail; + } + } + if ( id == lo || id == hi ) { + if ( id == lo ) { + id++; + lo = id; + } else if ( id == hi ) { + id--; + hi = id; + } + if ( lo >= hi ) { + /* The range has collapsed... */ + rc = db->del( db, tid, key, 0 ); + if ( rc != 0 ) { + err = "del"; + goto fail; + } + } else { + rc = cursor->c_del( cursor, 0 ); + if ( rc != 0 ) { + err = "c_del"; + goto fail; + } + } + if ( lo <= hi ) { + data.data = &id; + rc = cursor->c_put( cursor, key, &data, DB_KEYFIRST ); + if ( rc != 0 ) { + err = "c_put lo/hi"; + goto fail; + } + } + } + } + } else { + /* initial c_get failed, nothing was done */ +fail: +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_delete_key: %s failed: %s (%d)\n", err, db_strerror(rc), rc )); +#else + Debug( LDAP_DEBUG_ANY, "=> bdb_idl_delete_key: " + "%s failed: %s (%d)\n", err, db_strerror(rc), rc ); +#endif + cursor->c_close( cursor ); + return rc; + } rc = cursor->c_close( cursor ); } #else @@ -573,16 +768,24 @@ bdb_idl_delete_key( rc = db->get( db, tid, key, &data, DB_RMW | bdb->bi_db_opflags ); if ( rc != 0 ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_delete_key: get failed: %s (%d)\n", db_strerror(rc), rc )); +#else Debug( LDAP_DEBUG_ANY, "=> bdb_idl_delete_key: " "get failed: %s (%d)\n", db_strerror(rc), rc, 0 ); +#endif return rc; } else if ( data.size == 0 || data.size % sizeof( ID ) ) { /* size not multiple of ID size */ +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_delete_key: odd size: expected: %ld multiple, got %ld\n", (long) sizeof( ID ), (long) data.size )); +#else Debug( LDAP_DEBUG_ANY, "=> bdb_idl_delete_key: " "odd size: expected %ld multiple, got %ld\n", (long) sizeof( ID ), (long) data.size, 0 ); +#endif return -1; } else if ( BDB_IDL_IS_RANGE(ids) ) { @@ -590,18 +793,26 @@ bdb_idl_delete_key( } else if ( data.size != (1 + ids[0]) * sizeof( ID ) ) { /* size mismatch */ +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_delete_key: get size mismatch: expected: %ld, got %ld\n", (long) ((1 + ids[0]) * sizeof( ID )), (long) data.size )); +#else Debug( LDAP_DEBUG_ANY, "=> bdb_idl_delete_key: " "get size mismatch: expected %ld, got %ld\n", (long) ((1 + ids[0]) * sizeof( ID )), (long) data.size, 0 ); +#endif return -1; } else { rc = idl_delete( ids, id ); if( rc != 0 ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_delete_key: delete failed: (%d)\n", rc )); +#else Debug( LDAP_DEBUG_ANY, "=> bdb_idl_delete_key: " "idl_delete failed (%d)\n", rc, 0, 0 ); +#endif return rc; } @@ -609,9 +820,13 @@ bdb_idl_delete_key( /* delete the key */ rc = db->del( db, tid, key, 0 ); if( rc != 0 ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_delete_key: delete failed: %s (%d)\n", db_strerror(rc), rc )); +#else Debug( LDAP_DEBUG_ANY, "=> bdb_idl_delete_key: " "delete failed: %s (%d)\n", db_strerror(rc), rc, 0 ); +#endif } return rc; } @@ -625,9 +840,13 @@ bdb_idl_delete_key( #endif /* BDB_IDL_MULTI */ if( rc != 0 ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_delete_key: put failed: %s (%d)\n", db_strerror(rc), rc )); +#else Debug( LDAP_DEBUG_ANY, "=> bdb_idl_delete_key: put failed: %s (%d)\n", db_strerror(rc), rc, 0 ); +#endif } return rc;