mirror of
https://github.com/isar/libmdbx.git
synced 2025-02-01 06:08:22 +08:00
mdbx: упрощение выхода по not-found пути из cursor_seek()
.
This commit is contained in:
parent
10e7e5c899
commit
380385c1db
@ -638,7 +638,7 @@ static __always_inline int cursor_step(const bool inner, const bool forward, MDB
|
|||||||
inner_gone(mc);
|
inner_gone(mc);
|
||||||
} else {
|
} else {
|
||||||
if (mc->flags & z_hollow) {
|
if (mc->flags & z_hollow) {
|
||||||
cASSERT(mc, !inner_pointed(mc));
|
cASSERT(mc, !inner_pointed(mc) || inner_hollow(mc));
|
||||||
return MDBX_ENODATA;
|
return MDBX_ENODATA;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1818,8 +1818,9 @@ __hot csr_t cursor_seek(MDBX_cursor *mc, MDBX_val *key, MDBX_val *data, MDBX_cur
|
|||||||
* Поэтому переводим курсор в неустановленное состояние, но без сброса
|
* Поэтому переводим курсор в неустановленное состояние, но без сброса
|
||||||
* top, что позволяет работать fastpath при последующем поиске по дереву
|
* top, что позволяет работать fastpath при последующем поиске по дереву
|
||||||
* страниц. */
|
* страниц. */
|
||||||
mc->flags = z_hollow | (mc->flags & z_clear_mask);
|
mc->flags |= z_hollow;
|
||||||
inner_gone(mc);
|
if (inner_pointed(mc))
|
||||||
|
mc->subcur->cursor.flags |= z_hollow;
|
||||||
ret.err = MDBX_NOTFOUND;
|
ret.err = MDBX_NOTFOUND;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -151,7 +151,7 @@ MDBX_MAYBE_UNUSED MDBX_NOTHROW_PURE_FUNCTION static inline bool is_hollow(const
|
|||||||
cASSERT(mc, mc->top >= 0);
|
cASSERT(mc, mc->top >= 0);
|
||||||
cASSERT(mc, (mc->flags & z_eof_hard) || mc->ki[mc->top] < page_numkeys(mc->pg[mc->top]));
|
cASSERT(mc, (mc->flags & z_eof_hard) || mc->ki[mc->top] < page_numkeys(mc->pg[mc->top]));
|
||||||
} else if (mc->subcur)
|
} else if (mc->subcur)
|
||||||
cASSERT(mc, is_poor(&mc->subcur->cursor));
|
cASSERT(mc, is_poor(&mc->subcur->cursor) || (is_pointed(mc) && mc->subcur->cursor.flags < 0));
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user