ITS#9135 fix index error on collapsed range

This commit is contained in:
Howard Chu 2020-08-13 18:17:45 +01:00
parent 9c78a81d05
commit b0d7308371

View File

@ -642,9 +642,30 @@ mdb_idl_delete_keys(
} }
if ( lo2 >= hi2 ) { if ( lo2 >= hi2 ) {
/* The range has collapsed... */ /* The range has collapsed... */
rc = mdb_cursor_del( cursor, MDB_NODUPDATA ); /* delete the range marker */
rc = mdb_cursor_del( cursor, 0 );
if ( rc != 0 ) { if ( rc != 0 ) {
err = "c_del dup"; err = "c_del dup1";
goto fail;
}
/* skip past deleted marker */
rc = mdb_cursor_get( cursor, &key, &data, MDB_NEXT_DUP );
if ( rc != 0 ) {
err = "c_get dup1";
goto fail;
}
/* delete the requested id */
if ( id == hi ) {
/* skip lo */
rc = mdb_cursor_get( cursor, &key, &data, MDB_NEXT_DUP );
if ( rc != 0 ) {
err = "c_get dup2";
goto fail;
}
}
rc = mdb_cursor_del( cursor, 0 );
if ( rc != 0 ) {
err = "c_del dup2";
goto fail; goto fail;
} }
} else { } else {