Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
139634dc
Commit
139634dc
authored
Apr 18, 2014
by
Rich Prohaska
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
#202 allow non-null AND null key index cursor operations (2nd try)
parent
4990d188
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
13 additions
and
12 deletions
+13
-12
storage/tokudb/ha_tokudb.cc
storage/tokudb/ha_tokudb.cc
+12
-11
storage/tokudb/ha_tokudb.h
storage/tokudb/ha_tokudb.h
+0
-1
storage/tokudb/hatoku_defines.h
storage/tokudb/hatoku_defines.h
+1
-0
No files found.
storage/tokudb/ha_tokudb.cc
View file @
139634dc
...
...
@@ -2848,7 +2848,7 @@ DBT *ha_tokudb::pack_key(
int8_t
inf_byte
)
{
TOKUDB_HANDLER_DBUG_ENTER
(
"
%u null=%u inf=%d"
,
key_length
,
key_length
>
0
?
key_ptr
[
0
]
:
0
,
inf_byte
);
TOKUDB_HANDLER_DBUG_ENTER
(
"
key %p %u:%2.2x inf=%d"
,
key_ptr
,
key_length
,
key_length
>
0
?
key_ptr
[
0
]
:
0
,
inf_byte
);
#if TOKU_INCLUDE_EXTENDED_KEYS
if
(
keynr
!=
primary_key
&&
!
tokudb_test
(
hidden_primary_key
))
{
DBUG_RETURN
(
pack_ext_key
(
key
,
keynr
,
buff
,
key_ptr
,
key_length
,
inf_byte
));
...
...
@@ -4527,7 +4527,6 @@ int ha_tokudb::index_init(uint keynr, bool sorted) {
remove_from_trx_handler_list
();
}
active_index
=
keynr
;
index_init_sorted
=
sorted
;
if
(
active_index
<
MAX_KEY
)
{
DBUG_ASSERT
(
keynr
<=
table
->
s
->
keys
);
...
...
@@ -4833,9 +4832,11 @@ int ha_tokudb::index_next_same(uchar * buf, const uchar * key, uint keylen) {
// error otherwise
//
int
ha_tokudb
::
index_read
(
uchar
*
buf
,
const
uchar
*
key
,
uint
key_len
,
enum
ha_rkey_function
find_flag
)
{
TOKUDB_HANDLER_DBUG_ENTER
(
"
%p %u null=%u
find=%u"
,
key
,
key_len
,
key
?
key
[
0
]
:
0
,
find_flag
);
TOKUDB_HANDLER_DBUG_ENTER
(
"
key %p %u:%2.2x
find=%u"
,
key
,
key_len
,
key
?
key
[
0
]
:
0
,
find_flag
);
invalidate_bulk_fetch
();
// TOKUDB_DBUG_DUMP("key=", key, key_len);
if
(
tokudb_debug
&
TOKUDB_DEBUG_INDEX_KEY
)
{
TOKUDB_DBUG_DUMP
(
"mysql key="
,
key
,
key_len
);
}
DBT
row
;
DBT
lookup_key
;
int
error
=
0
;
...
...
@@ -4847,11 +4848,10 @@ int ha_tokudb::index_read(uchar * buf, const uchar * key, uint key_len, enum ha_
HANDLE_INVALID_CURSOR
();
// if we locked a non-null key range and we now have a null key, then
get a new cursor without any bounds on the cursor's key range
// if we locked a non-null key range and we now have a null key, then
remove the bounds from the cursor
if
(
range_lock_grabbed
&&
!
range_lock_grabbed_null
&&
index_key_is_null
(
table
,
tokudb_active_index
,
key
,
key_len
))
{
error
=
index_init
(
active_index
,
index_init_sorted
);
if
(
error
)
goto
cleanup
;
range_lock_grabbed
=
range_lock_grabbed_null
=
false
;
cursor
->
c_remove_restriction
(
cursor
);
}
ha_statistic_increment
(
&
SSV
::
ha_read_key_count
);
...
...
@@ -4868,10 +4868,11 @@ int ha_tokudb::index_read(uchar * buf, const uchar * key, uint key_len, enum ha_
switch
(
find_flag
)
{
case
HA_READ_KEY_EXACT
:
/* Find first record else error */
pack_key
(
&
lookup_key
,
tokudb_active_index
,
key_buff3
,
key
,
key_len
,
COL_NEG_INF
);
if
(
tokudb_debug
&
TOKUDB_DEBUG_INDEX_KEY
)
{
TOKUDB_DBUG_DUMP
(
"tokudb key="
,
lookup_key
.
data
,
lookup_key
.
size
);
}
ir_info
.
orig_key
=
&
lookup_key
;
error
=
cursor
->
c_getf_set_range
(
cursor
,
flags
,
&
lookup_key
,
SMART_DBT_IR_CALLBACK
(
key_read
),
&
ir_info
);
error
=
cursor
->
c_getf_set_range
(
cursor
,
flags
,
&
lookup_key
,
SMART_DBT_IR_CALLBACK
(
key_read
),
&
ir_info
);
if
(
ir_info
.
cmp
)
{
error
=
DB_NOTFOUND
;
}
...
...
storage/tokudb/ha_tokudb.h
View file @
139634dc
...
...
@@ -494,7 +494,6 @@ class ha_tokudb : public handler {
// 0 <= active_index < table_share->keys || active_index == MAX_KEY
// tokudb_active_index = active_index if active_index < table_share->keys, else tokudb_active_index = primary_key = table_share->keys
uint
tokudb_active_index
;
bool
index_init_sorted
;
public:
ha_tokudb
(
handlerton
*
hton
,
TABLE_SHARE
*
table_arg
);
...
...
storage/tokudb/hatoku_defines.h
View file @
139634dc
...
...
@@ -237,6 +237,7 @@ extern ulong tokudb_debug;
#define TOKUDB_DEBUG_ERROR 16
#define TOKUDB_DEBUG_TXN 32
#define TOKUDB_DEBUG_AUTO_INCREMENT 64
#define TOKUDB_DEBUG_INDEX_KEY 128
#define TOKUDB_DEBUG_LOCK 256
#define TOKUDB_DEBUG_CHECK_KEY 1024
#define TOKUDB_DEBUG_HIDE_DDL_LOCK_ERRORS 2048
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment