Hello team,
Can you please let me know, when using *mdb_cursor_get* with *MDB_SET* operation, in case the key is not present in the db, where is the cursor left pointing?
My scenario is that i want to retrieve two adjacent keys.
1. first *mdb_cursor_get* with *MDB_SET* 2. after that, *mdb_cursor_get* with *MDB_NEXT*
I'm wondering what can i expect the cursor to point at in case the key is not found in step 1.
Kind Regards, Maxim Gurschi
M Gurschi wrote:
Hello team,
Can you please let me know, when using *mdb_cursor_get* with *MDB_SET* operation, in case the key is not present in the db, where is the cursor left pointing?
My scenario is that i want to retrieve two adjacent keys.
- first *mdb_cursor_get* with *MDB_SET*
- after that, *mdb_cursor_get* with *MDB_NEXT*
I'm wondering what can i expect the cursor to point at in case the key is not found in step 1.
You cannot expect anything in particular.
Use MDB_SET_RANGE instead.
Understood, thank you!
Kind Regards, Maxim Gurschi
On 1 Feb 2024, at 17:53, Howard Chu hyc@symas.com wrote:
M Gurschi wrote:
Hello team,
Can you please let me know, when using *mdb_cursor_get* with *MDB_SET* operation, in case the key is not present in the db, where is the cursor left pointing?
My scenario is that i want to retrieve two adjacent keys.
- first *mdb_cursor_get* with *MDB_SET*
- after that, *mdb_cursor_get* with *MDB_NEXT*
I'm wondering what can i expect the cursor to point at in case the key is not found in step 1.
You cannot expect anything in particular.
Use MDB_SET_RANGE instead.
Hello Howard,
Tell me please, after *mdb_cursor_get(key, data, MDB_SET_RANGE)*, if i want to consume the key, if i understand correctly the key will be updated (on success). Will the reference to data also be updated or do i need to do: *mdb_cursor_get(key, data, MDB_GET_CURRENT)* to get data to point at the data from the key?
Kind Regards, Maxim Gurschi
On 1 Feb 2024, at 20:21, M Gurschi max.gurschi@gmail.com wrote:
Understood, thank you!
Kind Regards, Maxim Gurschi
On 1 Feb 2024, at 17:53, Howard Chu hyc@symas.com wrote:
M Gurschi wrote:
Hello team,
Can you please let me know, when using *mdb_cursor_get* with *MDB_SET* operation, in case the key is not present in the db, where is the cursor left pointing?
My scenario is that i want to retrieve two adjacent keys.
- first *mdb_cursor_get* with *MDB_SET*
- after that, *mdb_cursor_get* with *MDB_NEXT*
I'm wondering what can i expect the cursor to point at in case the key is not found in step 1.
You cannot expect anything in particular.
Use MDB_SET_RANGE instead.
...in addition,
Can i rely that for both: *mdb_cursor_get(key, data, MDB_SET_RANGE)* and *mdb_cursor_get(key, data, MDB_NEXT)*
, if the call returns *MDB_NOTFOUND*, then the key i passed in the call will be left unmodified?
Kind Regards, Maxim Gurschi
On 2 Feb 2024, at 11:23, M Gurschi max.gurschi@gmail.com wrote:
Hello Howard,
Tell me please, after *mdb_cursor_get(key, data, MDB_SET_RANGE)*, if i want to consume the key, if i understand correctly the key will be updated (on success). Will the reference to data also be updated or do i need to do: *mdb_cursor_get(key, data, MDB_GET_CURRENT)* to get data to point at the data from the key?
Kind Regards, Maxim Gurschi
On 1 Feb 2024, at 20:21, M Gurschi max.gurschi@gmail.com wrote:
Understood, thank you!
Kind Regards, Maxim Gurschi
On 1 Feb 2024, at 17:53, Howard Chu hyc@symas.com wrote:
M Gurschi wrote:
Hello team,
Can you please let me know, when using *mdb_cursor_get* with *MDB_SET* operation, in case the key is not present in the db, where is the cursor left pointing?
My scenario is that i want to retrieve two adjacent keys.
- first *mdb_cursor_get* with *MDB_SET*
- after that, *mdb_cursor_get* with *MDB_NEXT*
I'm wondering what can i expect the cursor to point at in case the key is not found in step 1.
You cannot expect anything in particular.
Use MDB_SET_RANGE instead.
M Gurschi wrote:
...in addition,
Can i rely that for both: *mdb_cursor_get(key, data, MDB_SET_RANGE)* and *mdb_cursor_get(key, data, MDB_NEXT)*
, if the call returns *MDB_NOTFOUND*, then the key i passed in the call will be left unmodified?
Of course. If the return code is NOTFOUND, there is nothing to return to you.
Kind Regards, Maxim Gurschi
On 2 Feb 2024, at 11:23, M Gurschi max.gurschi@gmail.com wrote:
Hello Howard,
Tell me please, after *mdb_cursor_get(key, data, MDB_SET_RANGE)*, if i want to consume the key, if i understand correctly the key will be updated (on success). Will the reference to data also be updated or do i need to do: *mdb_cursor_get(key, data, MDB_GET_CURRENT)* to get data to point at the data from the key?
Kind Regards, Maxim Gurschi
On 1 Feb 2024, at 20:21, M Gurschi max.gurschi@gmail.com wrote:
Understood, thank you!
Kind Regards, Maxim Gurschi
On 1 Feb 2024, at 17:53, Howard Chu hyc@symas.com wrote:
M Gurschi wrote:
Hello team,
Can you please let me know, when using *mdb_cursor_get* with *MDB_SET* operation, in case the key is not present in the db, where is the cursor left pointing?
My scenario is that i want to retrieve two adjacent keys.
- first *mdb_cursor_get* with *MDB_SET*
- after that, *mdb_cursor_get* with *MDB_NEXT*
I'm wondering what can i expect the cursor to point at in case the key is not found in step 1.
You cannot expect anything in particular.
Use MDB_SET_RANGE instead.
M Gurschi wrote:
Hello Howard,
Tell me please, after *mdb_cursor_get(key, data, MDB_SET_RANGE)*, if i want to consume the key, if i understand correctly the key will be updated (on success). Will the reference to data also be updated or do i need to do: *mdb_cursor_get(key, data, MDB_GET_CURRENT)* to get data to point at the data from the key?
That would be a useless behavior for the API if it required that, wouldn't it.
Kind Regards, Maxim Gurschi
On 1 Feb 2024, at 20:21, M Gurschi max.gurschi@gmail.com wrote:
Understood, thank you!
Kind Regards, Maxim Gurschi
On 1 Feb 2024, at 17:53, Howard Chu hyc@symas.com wrote:
M Gurschi wrote:
Hello team,
Can you please let me know, when using *mdb_cursor_get* with *MDB_SET* operation, in case the key is not present in the db, where is the cursor left pointing?
My scenario is that i want to retrieve two adjacent keys.
- first *mdb_cursor_get* with *MDB_SET*
- after that, *mdb_cursor_get* with *MDB_NEXT*
I'm wondering what can i expect the cursor to point at in case the key is not found in step 1.
You cannot expect anything in particular.
Use MDB_SET_RANGE instead.
Cheers Howard!
Kind Regards, Maxim Gurschi
On 3 Feb 2024, at 16:30, Howard Chu hyc@symas.com wrote:
M Gurschi wrote:
Hello Howard,
Tell me please, after *mdb_cursor_get(key, data, MDB_SET_RANGE)*, if i want to consume the key, if i understand correctly the key will be updated (on success). Will the reference to data also be updated or do i need to do: *mdb_cursor_get(key, data, MDB_GET_CURRENT)* to get data to point at the data from the key?
That would be a useless behavior for the API if it required that, wouldn't it.
Kind Regards, Maxim Gurschi
On 1 Feb 2024, at 20:21, M Gurschi max.gurschi@gmail.com wrote:
Understood, thank you!
Kind Regards, Maxim Gurschi
On 1 Feb 2024, at 17:53, Howard Chu hyc@symas.com wrote:
M Gurschi wrote:
Hello team,
Can you please let me know, when using *mdb_cursor_get* with *MDB_SET* operation, in case the key is not present in the db, where is the cursor left pointing?
My scenario is that i want to retrieve two adjacent keys.
- first *mdb_cursor_get* with *MDB_SET*
- after that, *mdb_cursor_get* with *MDB_NEXT*
I'm wondering what can i expect the cursor to point at in case the key is not found in step 1.
You cannot expect anything in particular.
Use MDB_SET_RANGE instead.
openldap-technical@openldap.org