LevelDB storage engine
(MDEV-3841)
|
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Technical task | Priority: | Minor |
| Reporter: | Elena Stepanova | Assignee: | Sergei Petrunia |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | leveldb | ||
| Issue Links: |
|
||||
| Description |
|
Test case:
|
| Comments |
| Comment by Sergei Petrunia [ 2013-01-28 ] |
|
The problem is casused by this statement: UPDATE t1 SET pk = 10 WHERE a = 8; It doesn't delete entries in the secondary index. leveldb contents after the statement: "j2.t1\1\0\0\0\0\2" -> "-7\2\0\0\0\9\0\0\0x" Note
This happens because this function from sql/key.cc: void key_copy(uchar *to_key, uchar *from_record, KEY *key_info, pretends to accept a parameter 'from_record', while internally it calls uint bytes= field->get_key_image(to_key, length, Field::itRAW); And 'field' normally points to table->record[0]. This is why LevelDB SE is trying to delete a wrong entry in the secondary index (which succeeds, because LevelDB's Delete() calls dont fail) |