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
e510293f
Commit
e510293f
authored
Jan 16, 2014
by
Yoni Fogel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refs Tokutek/ft-index#46 Rename dmt_size->num_klpairs, dmt_iterate*->iterate*
parent
e489f7d5
Changes
22
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
87 additions
and
90 deletions
+87
-90
ft/bndata.cc
ft/bndata.cc
+5
-5
ft/bndata.h
ft/bndata.h
+4
-7
ft/ft-flusher.cc
ft/ft-flusher.cc
+11
-11
ft/ft-ops.cc
ft/ft-ops.cc
+28
-28
ft/ft-verify.cc
ft/ft-verify.cc
+1
-1
ft/ft.cc
ft/ft.cc
+1
-1
ft/ft_node-serialize.cc
ft/ft_node-serialize.cc
+4
-4
ft/ftloader.cc
ft/ftloader.cc
+1
-1
ft/tests/ft-serialize-test.cc
ft/tests/ft-serialize-test.cc
+9
-9
ft/tests/make-tree.cc
ft/tests/make-tree.cc
+1
-1
ft/tests/orthopush-flush.cc
ft/tests/orthopush-flush.cc
+5
-5
ft/tests/test-checkpoint-during-merge.cc
ft/tests/test-checkpoint-during-merge.cc
+3
-3
ft/tests/test-checkpoint-during-rebalance.cc
ft/tests/test-checkpoint-during-rebalance.cc
+2
-2
ft/tests/test-checkpoint-during-split.cc
ft/tests/test-checkpoint-during-split.cc
+3
-3
ft/tests/verify-bad-msn.cc
ft/tests/verify-bad-msn.cc
+1
-1
ft/tests/verify-bad-pivots.cc
ft/tests/verify-bad-pivots.cc
+1
-1
ft/tests/verify-dup-in-leaf.cc
ft/tests/verify-dup-in-leaf.cc
+1
-1
ft/tests/verify-dup-pivots.cc
ft/tests/verify-dup-pivots.cc
+1
-1
ft/tests/verify-misrouted-msgs.cc
ft/tests/verify-misrouted-msgs.cc
+1
-1
ft/tests/verify-unsorted-leaf.cc
ft/tests/verify-unsorted-leaf.cc
+1
-1
ft/tests/verify-unsorted-pivots.cc
ft/tests/verify-unsorted-pivots.cc
+1
-1
ft/tokuftdump.cc
ft/tokuftdump.cc
+2
-2
No files found.
ft/bndata.cc
View file @
e510293f
...
@@ -186,7 +186,7 @@ void bn_data::serialize_to_wbuf(struct wbuf *const wb) {
...
@@ -186,7 +186,7 @@ void bn_data::serialize_to_wbuf(struct wbuf *const wb) {
//
//
// iterate over leafentries and place them into the buffer
// iterate over leafentries and place them into the buffer
//
//
dmt_
iterate
<
struct
wbuf
,
wbufwriteleafentry
>
(
wb
);
iterate
<
struct
wbuf
,
wbufwriteleafentry
>
(
wb
);
}
}
}
}
...
@@ -552,7 +552,7 @@ void bn_data::split_klpairs(
...
@@ -552,7 +552,7 @@ void bn_data::split_klpairs(
{
{
// We use move_leafentries_to during a split, and the split algorithm should never call this
// We use move_leafentries_to during a split, and the split algorithm should never call this
// if it's splitting on a boundary, so there must be some leafentries in the range to move.
// if it's splitting on a boundary, so there must be some leafentries in the range to move.
paranoid_invariant
(
split_at
<
dmt_size
());
paranoid_invariant
(
split_at
<
num_klpairs
());
right_bd
->
init_zero
();
right_bd
->
init_zero
();
...
@@ -568,7 +568,7 @@ void bn_data::split_klpairs(
...
@@ -568,7 +568,7 @@ void bn_data::split_klpairs(
left_dmt_builder
.
create
(
split_at
,
m_disksize_of_keys
);
// overkill, but safe (builder will realloc at the end)
left_dmt_builder
.
create
(
split_at
,
m_disksize_of_keys
);
// overkill, but safe (builder will realloc at the end)
klpair_dmt_t
::
builder
right_dmt_builder
;
klpair_dmt_t
::
builder
right_dmt_builder
;
right_dmt_builder
.
create
(
dmt_size
()
-
split_at
,
m_disksize_of_keys
);
// overkill, but safe (builder will realloc at the end)
right_dmt_builder
.
create
(
num_klpairs
()
-
split_at
,
m_disksize_of_keys
);
// overkill, but safe (builder will realloc at the end)
split_klpairs_extra
extra
(
this
,
right_bd
,
&
left_dmt_builder
,
&
right_dmt_builder
,
&
new_left_mp
,
split_at
);
split_klpairs_extra
extra
(
this
,
right_bd
,
&
left_dmt_builder
,
&
right_dmt_builder
,
&
new_left_mp
,
split_at
);
...
@@ -625,7 +625,7 @@ void bn_data::verify_mempool(void) {
...
@@ -625,7 +625,7 @@ void bn_data::verify_mempool(void) {
m_buffer
.
iterate_ptr
<
decltype
(
state
),
verify_le_in_mempool
>
(
&
state
);
m_buffer
.
iterate_ptr
<
decltype
(
state
),
verify_le_in_mempool
>
(
&
state
);
}
}
uint32_t
bn_data
::
dmt_size
(
void
)
const
{
uint32_t
bn_data
::
num_klpairs
(
void
)
const
{
return
m_buffer
.
size
();
return
m_buffer
.
size
();
}
}
...
@@ -648,7 +648,7 @@ void bn_data::set_contents_as_clone_of_sorted_array(
...
@@ -648,7 +648,7 @@ void bn_data::set_contents_as_clone_of_sorted_array(
{
{
//Enforce "just created" invariant.
//Enforce "just created" invariant.
paranoid_invariant_zero
(
m_disksize_of_keys
);
paranoid_invariant_zero
(
m_disksize_of_keys
);
paranoid_invariant_zero
(
dmt_size
());
paranoid_invariant_zero
(
num_klpairs
());
paranoid_invariant_null
(
toku_mempool_get_base
(
&
m_buffer_mempool
));
paranoid_invariant_null
(
toku_mempool_get_base
(
&
m_buffer_mempool
));
paranoid_invariant_zero
(
toku_mempool_get_size
(
&
m_buffer_mempool
));
paranoid_invariant_zero
(
toku_mempool_get_size
(
&
m_buffer_mempool
));
...
...
ft/bndata.h
View file @
e510293f
...
@@ -193,22 +193,19 @@ class bn_data {
...
@@ -193,22 +193,19 @@ class bn_data {
void
verify_mempool
(
void
);
void
verify_mempool
(
void
);
// size() of key dmt
// size() of key dmt
// TODO(yoni): maybe rename to something like num_klpairs
uint32_t
num_klpairs
(
void
)
const
;
uint32_t
dmt_size
(
void
)
const
;
// iterate() on key dmt (and associated leafentries)
// iterate() on key dmt (and associated leafentries)
// TODO(yoni): rename to iterate
template
<
typename
iterate_extra_t
,
template
<
typename
iterate_extra_t
,
int
(
*
f
)(
const
void
*
key
,
const
uint32_t
keylen
,
const
LEAFENTRY
&
,
const
uint32_t
,
iterate_extra_t
*
const
)>
int
(
*
f
)(
const
void
*
key
,
const
uint32_t
keylen
,
const
LEAFENTRY
&
,
const
uint32_t
,
iterate_extra_t
*
const
)>
int
dmt_
iterate
(
iterate_extra_t
*
const
iterate_extra
)
const
{
int
iterate
(
iterate_extra_t
*
const
iterate_extra
)
const
{
return
dmt_iterate_on_range
<
iterate_extra_t
,
f
>
(
0
,
dmt_size
(),
iterate_extra
);
return
iterate_on_range
<
iterate_extra_t
,
f
>
(
0
,
num_klpairs
(),
iterate_extra
);
}
}
// iterate_on_range() on key dmt (and associated leafentries)
// iterate_on_range() on key dmt (and associated leafentries)
// TODO(yoni): rename to iterate_on_range
template
<
typename
iterate_extra_t
,
template
<
typename
iterate_extra_t
,
int
(
*
f
)(
const
void
*
key
,
const
uint32_t
keylen
,
const
LEAFENTRY
&
,
const
uint32_t
,
iterate_extra_t
*
const
)>
int
(
*
f
)(
const
void
*
key
,
const
uint32_t
keylen
,
const
LEAFENTRY
&
,
const
uint32_t
,
iterate_extra_t
*
const
)>
int
dmt_
iterate_on_range
(
const
uint32_t
left
,
const
uint32_t
right
,
iterate_extra_t
*
const
iterate_extra
)
const
{
int
iterate_on_range
(
const
uint32_t
left
,
const
uint32_t
right
,
iterate_extra_t
*
const
iterate_extra
)
const
{
klpair_iterate_extra
<
iterate_extra_t
>
klpair_extra
=
{
iterate_extra
,
this
};
klpair_iterate_extra
<
iterate_extra_t
>
klpair_extra
=
{
iterate_extra
,
this
};
return
m_buffer
.
iterate_on_range
<
klpair_iterate_extra
<
iterate_extra_t
>
,
klpair_iterate_wrapper
<
iterate_extra_t
,
f
>
>
(
left
,
right
,
&
klpair_extra
);
return
m_buffer
.
iterate_on_range
<
klpair_iterate_extra
<
iterate_extra_t
>
,
klpair_iterate_wrapper
<
iterate_extra_t
,
f
>
>
(
left
,
right
,
&
klpair_extra
);
}
}
...
...
ft/ft-flusher.cc
View file @
e510293f
...
@@ -689,16 +689,16 @@ ftleaf_get_split_loc(
...
@@ -689,16 +689,16 @@ ftleaf_get_split_loc(
switch
(
split_mode
)
{
switch
(
split_mode
)
{
case
SPLIT_LEFT_HEAVY
:
{
case
SPLIT_LEFT_HEAVY
:
{
*
num_left_bns
=
node
->
n_children
;
*
num_left_bns
=
node
->
n_children
;
*
num_left_les
=
BLB_DATA
(
node
,
*
num_left_bns
-
1
)
->
dmt_size
();
*
num_left_les
=
BLB_DATA
(
node
,
*
num_left_bns
-
1
)
->
num_klpairs
();
if
(
*
num_left_les
==
0
)
{
if
(
*
num_left_les
==
0
)
{
*
num_left_bns
=
node
->
n_children
-
1
;
*
num_left_bns
=
node
->
n_children
-
1
;
*
num_left_les
=
BLB_DATA
(
node
,
*
num_left_bns
-
1
)
->
dmt_size
();
*
num_left_les
=
BLB_DATA
(
node
,
*
num_left_bns
-
1
)
->
num_klpairs
();
}
}
goto
exit
;
goto
exit
;
}
}
case
SPLIT_RIGHT_HEAVY
:
{
case
SPLIT_RIGHT_HEAVY
:
{
*
num_left_bns
=
1
;
*
num_left_bns
=
1
;
*
num_left_les
=
BLB_DATA
(
node
,
0
)
->
dmt_size
()
?
1
:
0
;
*
num_left_les
=
BLB_DATA
(
node
,
0
)
->
num_klpairs
()
?
1
:
0
;
goto
exit
;
goto
exit
;
}
}
case
SPLIT_EVENLY
:
{
case
SPLIT_EVENLY
:
{
...
@@ -708,7 +708,7 @@ ftleaf_get_split_loc(
...
@@ -708,7 +708,7 @@ ftleaf_get_split_loc(
uint32_t
size_so_far
=
0
;
uint32_t
size_so_far
=
0
;
for
(
int
i
=
0
;
i
<
node
->
n_children
;
i
++
)
{
for
(
int
i
=
0
;
i
<
node
->
n_children
;
i
++
)
{
bn_data
*
bd
=
BLB_DATA
(
node
,
i
);
bn_data
*
bd
=
BLB_DATA
(
node
,
i
);
uint32_t
n_leafentries
=
bd
->
dmt_size
();
uint32_t
n_leafentries
=
bd
->
num_klpairs
();
for
(
uint32_t
j
=
0
;
j
<
n_leafentries
;
j
++
)
{
for
(
uint32_t
j
=
0
;
j
<
n_leafentries
;
j
++
)
{
size_t
size_this_le
;
size_t
size_this_le
;
int
rr
=
bd
->
fetch_klpair_disksize
(
j
,
&
size_this_le
);
int
rr
=
bd
->
fetch_klpair_disksize
(
j
,
&
size_this_le
);
...
@@ -725,7 +725,7 @@ ftleaf_get_split_loc(
...
@@ -725,7 +725,7 @@ ftleaf_get_split_loc(
(
*
num_left_les
)
--
;
(
*
num_left_les
)
--
;
}
else
if
(
*
num_left_bns
>
1
)
{
}
else
if
(
*
num_left_bns
>
1
)
{
(
*
num_left_bns
)
--
;
(
*
num_left_bns
)
--
;
*
num_left_les
=
BLB_DATA
(
node
,
*
num_left_bns
-
1
)
->
dmt_size
();
*
num_left_les
=
BLB_DATA
(
node
,
*
num_left_bns
-
1
)
->
num_klpairs
();
}
else
{
}
else
{
// we are trying to split a leaf with only one
// we are trying to split a leaf with only one
// leafentry in it
// leafentry in it
...
@@ -754,7 +754,7 @@ move_leafentries(
...
@@ -754,7 +754,7 @@ move_leafentries(
)
)
//Effect: move leafentries in the range [lbi, upe) from src_omt to newly created dest_omt
//Effect: move leafentries in the range [lbi, upe) from src_omt to newly created dest_omt
{
{
invariant
(
ube
==
src_bn
->
data_buffer
.
dmt_size
());
invariant
(
ube
==
src_bn
->
data_buffer
.
num_klpairs
());
src_bn
->
data_buffer
.
split_klpairs
(
&
dest_bn
->
data_buffer
,
lbi
);
src_bn
->
data_buffer
.
split_klpairs
(
&
dest_bn
->
data_buffer
,
lbi
);
}
}
...
@@ -852,7 +852,7 @@ ftleaf_split(
...
@@ -852,7 +852,7 @@ ftleaf_split(
ftleaf_get_split_loc
(
node
,
split_mode
,
&
num_left_bns
,
&
num_left_les
);
ftleaf_get_split_loc
(
node
,
split_mode
,
&
num_left_bns
,
&
num_left_les
);
{
{
// did we split right on the boundary between basement nodes?
// did we split right on the boundary between basement nodes?
const
bool
split_on_boundary
=
(
num_left_les
==
0
)
||
(
num_left_les
==
(
int
)
BLB_DATA
(
node
,
num_left_bns
-
1
)
->
dmt_size
());
const
bool
split_on_boundary
=
(
num_left_les
==
0
)
||
(
num_left_les
==
(
int
)
BLB_DATA
(
node
,
num_left_bns
-
1
)
->
num_klpairs
());
// Now we know where we are going to break it
// Now we know where we are going to break it
// the two nodes will have a total of n_children+1 basement nodes
// the two nodes will have a total of n_children+1 basement nodes
// and n_children-1 pivots
// and n_children-1 pivots
...
@@ -913,7 +913,7 @@ ftleaf_split(
...
@@ -913,7 +913,7 @@ ftleaf_split(
move_leafentries
(
BLB
(
B
,
curr_dest_bn_index
),
move_leafentries
(
BLB
(
B
,
curr_dest_bn_index
),
BLB
(
node
,
curr_src_bn_index
),
BLB
(
node
,
curr_src_bn_index
),
num_left_les
,
// first row to be moved to B
num_left_les
,
// first row to be moved to B
BLB_DATA
(
node
,
curr_src_bn_index
)
->
dmt_size
()
// number of rows in basement to be split
BLB_DATA
(
node
,
curr_src_bn_index
)
->
num_klpairs
()
// number of rows in basement to be split
);
);
BLB_MAX_MSN_APPLIED
(
B
,
curr_dest_bn_index
)
=
BLB_MAX_MSN_APPLIED
(
node
,
curr_src_bn_index
);
BLB_MAX_MSN_APPLIED
(
B
,
curr_dest_bn_index
)
=
BLB_MAX_MSN_APPLIED
(
node
,
curr_src_bn_index
);
curr_dest_bn_index
++
;
curr_dest_bn_index
++
;
...
@@ -958,7 +958,7 @@ ftleaf_split(
...
@@ -958,7 +958,7 @@ ftleaf_split(
bn_data
*
bd
=
BLB_DATA
(
node
,
num_left_bns
-
1
);
bn_data
*
bd
=
BLB_DATA
(
node
,
num_left_bns
-
1
);
uint32_t
keylen
;
uint32_t
keylen
;
void
*
key
;
void
*
key
;
int
rr
=
bd
->
fetch_key_and_len
(
bd
->
dmt_size
()
-
1
,
&
keylen
,
&
key
);
int
rr
=
bd
->
fetch_key_and_len
(
bd
->
num_klpairs
()
-
1
,
&
keylen
,
&
key
);
invariant_zero
(
rr
);
invariant_zero
(
rr
);
toku_memdup_dbt
(
splitk
,
key
,
keylen
);
toku_memdup_dbt
(
splitk
,
key
,
keylen
);
}
}
...
@@ -1173,7 +1173,7 @@ merge_leaf_nodes(FTNODE a, FTNODE b)
...
@@ -1173,7 +1173,7 @@ merge_leaf_nodes(FTNODE a, FTNODE b)
// this bool states if the last basement node in a has any items or not
// this bool states if the last basement node in a has any items or not
// If it does, then it stays in the merge. If it does not, the last basement node
// If it does, then it stays in the merge. If it does not, the last basement node
// of a gets eliminated because we do not have a pivot to store for it (because it has no elements)
// of a gets eliminated because we do not have a pivot to store for it (because it has no elements)
const
bool
a_has_tail
=
a_last_bd
->
dmt_size
()
>
0
;
const
bool
a_has_tail
=
a_last_bd
->
num_klpairs
()
>
0
;
// move each basement node from b to a
// move each basement node from b to a
// move the pivots, adding one of what used to be max(a)
// move the pivots, adding one of what used to be max(a)
...
@@ -1200,7 +1200,7 @@ merge_leaf_nodes(FTNODE a, FTNODE b)
...
@@ -1200,7 +1200,7 @@ merge_leaf_nodes(FTNODE a, FTNODE b)
if
(
a_has_tail
)
{
if
(
a_has_tail
)
{
uint32_t
keylen
;
uint32_t
keylen
;
void
*
key
;
void
*
key
;
int
rr
=
a_last_bd
->
fetch_key_and_len
(
a_last_bd
->
dmt_size
()
-
1
,
&
keylen
,
&
key
);
int
rr
=
a_last_bd
->
fetch_key_and_len
(
a_last_bd
->
num_klpairs
()
-
1
,
&
keylen
,
&
key
);
invariant_zero
(
rr
);
invariant_zero
(
rr
);
toku_memdup_dbt
(
&
a
->
childkeys
[
a
->
n_children
-
1
],
key
,
keylen
);
toku_memdup_dbt
(
&
a
->
childkeys
[
a
->
n_children
-
1
],
key
,
keylen
);
a
->
totalchildkeylens
+=
keylen
;
a
->
totalchildkeylens
+=
keylen
;
...
...
ft/ft-ops.cc
View file @
e510293f
...
@@ -419,7 +419,7 @@ get_leaf_num_entries(FTNODE node) {
...
@@ -419,7 +419,7 @@ get_leaf_num_entries(FTNODE node) {
int
i
;
int
i
;
toku_assert_entire_node_in_memory
(
node
);
toku_assert_entire_node_in_memory
(
node
);
for
(
i
=
0
;
i
<
node
->
n_children
;
i
++
)
{
for
(
i
=
0
;
i
<
node
->
n_children
;
i
++
)
{
result
+=
BLB_DATA
(
node
,
i
)
->
dmt_size
();
result
+=
BLB_DATA
(
node
,
i
)
->
num_klpairs
();
}
}
return
result
;
return
result
;
}
}
...
@@ -1910,7 +1910,7 @@ toku_ft_bn_apply_cmd (
...
@@ -1910,7 +1910,7 @@ toku_ft_bn_apply_cmd (
void
*
key
=
NULL
;
void
*
key
=
NULL
;
uint32_t
keylen
=
0
;
uint32_t
keylen
=
0
;
uint32_t
dmt_size
;
uint32_t
num_klpairs
;
int
r
;
int
r
;
struct
cmd_leafval_heaviside_extra
be
=
{
compare_fun
,
desc
,
cmd
->
u
.
id
.
key
};
struct
cmd_leafval_heaviside_extra
be
=
{
compare_fun
,
desc
,
cmd
->
u
.
id
.
key
};
...
@@ -1922,7 +1922,7 @@ toku_ft_bn_apply_cmd (
...
@@ -1922,7 +1922,7 @@ toku_ft_bn_apply_cmd (
case
FT_INSERT
:
{
case
FT_INSERT
:
{
uint32_t
idx
;
uint32_t
idx
;
if
(
doing_seqinsert
)
{
if
(
doing_seqinsert
)
{
idx
=
bn
->
data_buffer
.
dmt_size
();
idx
=
bn
->
data_buffer
.
num_klpairs
();
DBT
kdbt
;
DBT
kdbt
;
r
=
bn
->
data_buffer
.
fetch_key_and_len
(
idx
-
1
,
&
kdbt
.
size
,
&
kdbt
.
data
);
r
=
bn
->
data_buffer
.
fetch_key_and_len
(
idx
-
1
,
&
kdbt
.
size
,
&
kdbt
.
data
);
if
(
r
!=
0
)
goto
fz
;
if
(
r
!=
0
)
goto
fz
;
...
@@ -1950,7 +1950,7 @@ toku_ft_bn_apply_cmd (
...
@@ -1950,7 +1950,7 @@ toku_ft_bn_apply_cmd (
// the leaf then it is sequential
// the leaf then it is sequential
// window = min(32, number of leaf entries/16)
// window = min(32, number of leaf entries/16)
{
{
uint32_t
s
=
bn
->
data_buffer
.
dmt_size
();
uint32_t
s
=
bn
->
data_buffer
.
num_klpairs
();
uint32_t
w
=
s
/
16
;
uint32_t
w
=
s
/
16
;
if
(
w
==
0
)
w
=
1
;
if
(
w
==
0
)
w
=
1
;
if
(
w
>
32
)
w
=
32
;
if
(
w
>
32
)
w
=
32
;
...
@@ -1985,8 +1985,8 @@ toku_ft_bn_apply_cmd (
...
@@ -1985,8 +1985,8 @@ toku_ft_bn_apply_cmd (
case
FT_COMMIT_BROADCAST_ALL
:
case
FT_COMMIT_BROADCAST_ALL
:
case
FT_OPTIMIZE
:
case
FT_OPTIMIZE
:
// Apply to all leafentries
// Apply to all leafentries
dmt_size
=
bn
->
data_buffer
.
dmt_size
();
num_klpairs
=
bn
->
data_buffer
.
num_klpairs
();
for
(
uint32_t
idx
=
0
;
idx
<
dmt_size
;
)
{
for
(
uint32_t
idx
=
0
;
idx
<
num_klpairs
;
)
{
DBT
curr_keydbt
;
DBT
curr_keydbt
;
void
*
curr_keyp
=
NULL
;
void
*
curr_keyp
=
NULL
;
uint32_t
curr_keylen
=
0
;
uint32_t
curr_keylen
=
0
;
...
@@ -2000,26 +2000,26 @@ toku_ft_bn_apply_cmd (
...
@@ -2000,26 +2000,26 @@ toku_ft_bn_apply_cmd (
if
(
!
le_is_clean
(
storeddata
))
{
//If already clean, nothing to do.
if
(
!
le_is_clean
(
storeddata
))
{
//If already clean, nothing to do.
toku_ft_bn_apply_cmd_once
(
bn
,
cmd
,
idx
,
storeddata
,
oldest_referenced_xid_known
,
gc_info
,
workdone
,
stats_to_update
);
toku_ft_bn_apply_cmd_once
(
bn
,
cmd
,
idx
,
storeddata
,
oldest_referenced_xid_known
,
gc_info
,
workdone
,
stats_to_update
);
// at this point, we cannot trust cmd->u.id.key to be valid.
// at this point, we cannot trust cmd->u.id.key to be valid.
uint32_t
new_dmt_size
=
bn
->
data_buffer
.
dmt_size
();
uint32_t
new_dmt_size
=
bn
->
data_buffer
.
num_klpairs
();
if
(
new_dmt_size
!=
dmt_size
)
{
if
(
new_dmt_size
!=
num_klpairs
)
{
paranoid_invariant
(
new_dmt_size
+
1
==
dmt_size
);
paranoid_invariant
(
new_dmt_size
+
1
==
num_klpairs
);
//Item was deleted.
//Item was deleted.
deleted
=
1
;
deleted
=
1
;
}
}
}
}
if
(
deleted
)
if
(
deleted
)
dmt_size
--
;
num_klpairs
--
;
else
else
idx
++
;
idx
++
;
}
}
paranoid_invariant
(
bn
->
data_buffer
.
dmt_size
()
==
dmt_size
);
paranoid_invariant
(
bn
->
data_buffer
.
num_klpairs
()
==
num_klpairs
);
break
;
break
;
case
FT_COMMIT_BROADCAST_TXN
:
case
FT_COMMIT_BROADCAST_TXN
:
case
FT_ABORT_BROADCAST_TXN
:
case
FT_ABORT_BROADCAST_TXN
:
// Apply to all leafentries if txn is represented
// Apply to all leafentries if txn is represented
dmt_size
=
bn
->
data_buffer
.
dmt_size
();
num_klpairs
=
bn
->
data_buffer
.
num_klpairs
();
for
(
uint32_t
idx
=
0
;
idx
<
dmt_size
;
)
{
for
(
uint32_t
idx
=
0
;
idx
<
num_klpairs
;
)
{
DBT
curr_keydbt
;
DBT
curr_keydbt
;
void
*
curr_keyp
=
NULL
;
void
*
curr_keyp
=
NULL
;
uint32_t
curr_keylen
=
0
;
uint32_t
curr_keylen
=
0
;
...
@@ -2032,19 +2032,19 @@ toku_ft_bn_apply_cmd (
...
@@ -2032,19 +2032,19 @@ toku_ft_bn_apply_cmd (
int
deleted
=
0
;
int
deleted
=
0
;
if
(
le_has_xids
(
storeddata
,
cmd
->
xids
))
{
if
(
le_has_xids
(
storeddata
,
cmd
->
xids
))
{
toku_ft_bn_apply_cmd_once
(
bn
,
cmd
,
idx
,
storeddata
,
oldest_referenced_xid_known
,
gc_info
,
workdone
,
stats_to_update
);
toku_ft_bn_apply_cmd_once
(
bn
,
cmd
,
idx
,
storeddata
,
oldest_referenced_xid_known
,
gc_info
,
workdone
,
stats_to_update
);
uint32_t
new_dmt_size
=
bn
->
data_buffer
.
dmt_size
();
uint32_t
new_dmt_size
=
bn
->
data_buffer
.
num_klpairs
();
if
(
new_dmt_size
!=
dmt_size
)
{
if
(
new_dmt_size
!=
num_klpairs
)
{
paranoid_invariant
(
new_dmt_size
+
1
==
dmt_size
);
paranoid_invariant
(
new_dmt_size
+
1
==
num_klpairs
);
//Item was deleted.
//Item was deleted.
deleted
=
1
;
deleted
=
1
;
}
}
}
}
if
(
deleted
)
if
(
deleted
)
dmt_size
--
;
num_klpairs
--
;
else
else
idx
++
;
idx
++
;
}
}
paranoid_invariant
(
bn
->
data_buffer
.
dmt_size
()
==
dmt_size
);
paranoid_invariant
(
bn
->
data_buffer
.
num_klpairs
()
==
num_klpairs
);
break
;
break
;
case
FT_UPDATE
:
{
case
FT_UPDATE
:
{
...
@@ -2073,7 +2073,7 @@ toku_ft_bn_apply_cmd (
...
@@ -2073,7 +2073,7 @@ toku_ft_bn_apply_cmd (
// apply to all leafentries.
// apply to all leafentries.
uint32_t
idx
=
0
;
uint32_t
idx
=
0
;
uint32_t
num_leafentries_before
;
uint32_t
num_leafentries_before
;
while
(
idx
<
(
num_leafentries_before
=
bn
->
data_buffer
.
dmt_size
()))
{
while
(
idx
<
(
num_leafentries_before
=
bn
->
data_buffer
.
num_klpairs
()))
{
void
*
curr_key
=
nullptr
;
void
*
curr_key
=
nullptr
;
uint32_t
curr_keylen
=
0
;
uint32_t
curr_keylen
=
0
;
r
=
bn
->
data_buffer
.
fetch_klpair
(
idx
,
&
storeddata
,
&
curr_keylen
,
&
curr_key
);
r
=
bn
->
data_buffer
.
fetch_klpair
(
idx
,
&
storeddata
,
&
curr_keylen
,
&
curr_key
);
...
@@ -2091,7 +2091,7 @@ toku_ft_bn_apply_cmd (
...
@@ -2091,7 +2091,7 @@ toku_ft_bn_apply_cmd (
r
=
do_update
(
update_fun
,
desc
,
bn
,
cmd
,
idx
,
storeddata
,
curr_key
,
curr_keylen
,
oldest_referenced_xid_known
,
gc_info
,
workdone
,
stats_to_update
);
r
=
do_update
(
update_fun
,
desc
,
bn
,
cmd
,
idx
,
storeddata
,
curr_key
,
curr_keylen
,
oldest_referenced_xid_known
,
gc_info
,
workdone
,
stats_to_update
);
assert_zero
(
r
);
assert_zero
(
r
);
if
(
num_leafentries_before
==
bn
->
data_buffer
.
dmt_size
())
{
if
(
num_leafentries_before
==
bn
->
data_buffer
.
num_klpairs
())
{
// we didn't delete something, so increment the index.
// we didn't delete something, so increment the index.
idx
++
;
idx
++
;
}
}
...
@@ -2404,7 +2404,7 @@ basement_node_gc_all_les(BASEMENTNODE bn,
...
@@ -2404,7 +2404,7 @@ basement_node_gc_all_les(BASEMENTNODE bn,
int
r
=
0
;
int
r
=
0
;
uint32_t
index
=
0
;
uint32_t
index
=
0
;
uint32_t
num_leafentries_before
;
uint32_t
num_leafentries_before
;
while
(
index
<
(
num_leafentries_before
=
bn
->
data_buffer
.
dmt_size
()))
{
while
(
index
<
(
num_leafentries_before
=
bn
->
data_buffer
.
num_klpairs
()))
{
void
*
keyp
=
NULL
;
void
*
keyp
=
NULL
;
uint32_t
keylen
=
0
;
uint32_t
keylen
=
0
;
LEAFENTRY
leaf_entry
;
LEAFENTRY
leaf_entry
;
...
@@ -2423,7 +2423,7 @@ basement_node_gc_all_les(BASEMENTNODE bn,
...
@@ -2423,7 +2423,7 @@ basement_node_gc_all_les(BASEMENTNODE bn,
delta
delta
);
);
// Check if the leaf entry was deleted or not.
// Check if the leaf entry was deleted or not.
if
(
num_leafentries_before
==
bn
->
data_buffer
.
dmt_size
())
{
if
(
num_leafentries_before
==
bn
->
data_buffer
.
num_klpairs
())
{
++
index
;
++
index
;
}
}
}
}
...
@@ -4929,7 +4929,7 @@ ok: ;
...
@@ -4929,7 +4929,7 @@ ok: ;
switch
(
search
->
direction
)
{
switch
(
search
->
direction
)
{
case
FT_SEARCH_LEFT
:
case
FT_SEARCH_LEFT
:
idx
++
;
idx
++
;
if
(
idx
>=
bn
->
data_buffer
.
dmt_size
())
{
if
(
idx
>=
bn
->
data_buffer
.
num_klpairs
())
{
if
(
ftcursor
->
interrupt_cb
&&
ftcursor
->
interrupt_cb
(
ftcursor
->
interrupt_cb_extra
))
{
if
(
ftcursor
->
interrupt_cb
&&
ftcursor
->
interrupt_cb
(
ftcursor
->
interrupt_cb_extra
))
{
return
TOKUDB_INTERRUPTED
;
return
TOKUDB_INTERRUPTED
;
}
}
...
@@ -5604,7 +5604,7 @@ ft_cursor_shortcut (
...
@@ -5604,7 +5604,7 @@ ft_cursor_shortcut (
int
r
=
0
;
int
r
=
0
;
// if we are searching towards the end, limit is last element
// if we are searching towards the end, limit is last element
// if we are searching towards the beginning, limit is the first element
// if we are searching towards the beginning, limit is the first element
uint32_t
limit
=
(
direction
>
0
)
?
(
bd
->
dmt_size
()
-
1
)
:
0
;
uint32_t
limit
=
(
direction
>
0
)
?
(
bd
->
num_klpairs
()
-
1
)
:
0
;
//Starting with the prev, find the first real (non-provdel) leafentry.
//Starting with the prev, find the first real (non-provdel) leafentry.
while
(
index
!=
limit
)
{
while
(
index
!=
limit
)
{
...
@@ -5895,7 +5895,7 @@ keysrange_in_leaf_partition (FT_HANDLE brt, FTNODE node,
...
@@ -5895,7 +5895,7 @@ keysrange_in_leaf_partition (FT_HANDLE brt, FTNODE node,
*
less
=
idx_left
;
*
less
=
idx_left
;
*
equal_left
=
(
r
==
0
)
?
1
:
0
;
*
equal_left
=
(
r
==
0
)
?
1
:
0
;
uint32_t
size
=
bn
->
data_buffer
.
dmt_size
();
uint32_t
size
=
bn
->
data_buffer
.
num_klpairs
();
uint32_t
idx_right
=
size
;
uint32_t
idx_right
=
size
;
r
=
-
1
;
r
=
-
1
;
if
(
single_basement
&&
key_right
)
{
if
(
single_basement
&&
key_right
)
{
...
@@ -6155,7 +6155,7 @@ static int get_key_after_bytes_in_basementnode(FT ft, BASEMENTNODE bn, const DBT
...
@@ -6155,7 +6155,7 @@ static int get_key_after_bytes_in_basementnode(FT ft, BASEMENTNODE bn, const DBT
assert
(
r
==
0
||
r
==
DB_NOTFOUND
);
assert
(
r
==
0
||
r
==
DB_NOTFOUND
);
}
}
struct
get_key_after_bytes_iterate_extra
iter_extra
=
{
skip_len
,
skipped
,
callback
,
cb_extra
};
struct
get_key_after_bytes_iterate_extra
iter_extra
=
{
skip_len
,
skipped
,
callback
,
cb_extra
};
r
=
bn
->
data_buffer
.
dmt_iterate_on_range
<
get_key_after_bytes_iterate_extra
,
get_key_after_bytes_iterate
>
(
idx_left
,
bn
->
data_buffer
.
dmt_size
(),
&
iter_extra
);
r
=
bn
->
data_buffer
.
iterate_on_range
<
get_key_after_bytes_iterate_extra
,
get_key_after_bytes_iterate
>
(
idx_left
,
bn
->
data_buffer
.
num_klpairs
(),
&
iter_extra
);
// Invert the sense of r == 0 (meaning the iterate finished, which means we didn't find what we wanted)
// Invert the sense of r == 0 (meaning the iterate finished, which means we didn't find what we wanted)
if
(
r
==
1
)
{
if
(
r
==
1
)
{
...
@@ -6351,7 +6351,7 @@ toku_dump_ftnode (FILE *file, FT_HANDLE brt, BLOCKNUM blocknum, int depth, const
...
@@ -6351,7 +6351,7 @@ toku_dump_ftnode (FILE *file, FT_HANDLE brt, BLOCKNUM blocknum, int depth, const
});
});
}
}
else
{
else
{
int
size
=
BLB_DATA
(
node
,
i
)
->
dmt_size
();
int
size
=
BLB_DATA
(
node
,
i
)
->
num_klpairs
();
if
(
0
)
if
(
0
)
for
(
int
j
=
0
;
j
<
size
;
j
++
)
{
for
(
int
j
=
0
;
j
<
size
;
j
++
)
{
LEAFENTRY
le
;
LEAFENTRY
le
;
...
@@ -6533,7 +6533,7 @@ static bool is_empty_fast_iter (FT_HANDLE brt, FTNODE node) {
...
@@ -6533,7 +6533,7 @@ static bool is_empty_fast_iter (FT_HANDLE brt, FTNODE node) {
}
else
{
}
else
{
// leaf: If the dmt is empty, we are happy.
// leaf: If the dmt is empty, we are happy.
for
(
int
i
=
0
;
i
<
node
->
n_children
;
i
++
)
{
for
(
int
i
=
0
;
i
<
node
->
n_children
;
i
++
)
{
if
(
BLB_DATA
(
node
,
i
)
->
dmt_size
())
{
if
(
BLB_DATA
(
node
,
i
)
->
num_klpairs
())
{
return
false
;
return
false
;
}
}
}
}
...
...
ft/ft-verify.cc
View file @
e510293f
...
@@ -424,7 +424,7 @@ toku_verify_ftnode_internal(FT_HANDLE brt,
...
@@ -424,7 +424,7 @@ toku_verify_ftnode_internal(FT_HANDLE brt,
}
}
else
{
else
{
BASEMENTNODE
bn
=
BLB
(
node
,
i
);
BASEMENTNODE
bn
=
BLB
(
node
,
i
);
for
(
uint32_t
j
=
0
;
j
<
bn
->
data_buffer
.
dmt_size
();
j
++
)
{
for
(
uint32_t
j
=
0
;
j
<
bn
->
data_buffer
.
num_klpairs
();
j
++
)
{
VERIFY_ASSERTION
((
rootmsn
.
msn
>=
this_msn
.
msn
),
0
,
"leaf may have latest msn, but cannot be greater than root msn"
);
VERIFY_ASSERTION
((
rootmsn
.
msn
>=
this_msn
.
msn
),
0
,
"leaf may have latest msn, but cannot be greater than root msn"
);
DBT
kdbt
=
get_ith_key_dbt
(
bn
,
j
);
DBT
kdbt
=
get_ith_key_dbt
(
bn
,
j
);
if
(
curr_less_pivot
)
{
if
(
curr_less_pivot
)
{
...
...
ft/ft.cc
View file @
e510293f
...
@@ -1078,7 +1078,7 @@ garbage_helper(BLOCKNUM blocknum, int64_t UU(size), int64_t UU(address), void *e
...
@@ -1078,7 +1078,7 @@ garbage_helper(BLOCKNUM blocknum, int64_t UU(size), int64_t UU(address), void *e
}
}
for
(
int
i
=
0
;
i
<
node
->
n_children
;
++
i
)
{
for
(
int
i
=
0
;
i
<
node
->
n_children
;
++
i
)
{
bn_data
*
bd
=
BLB_DATA
(
node
,
i
);
bn_data
*
bd
=
BLB_DATA
(
node
,
i
);
r
=
bd
->
dmt_
iterate
<
struct
garbage_helper_extra
,
garbage_leafentry_helper
>
(
info
);
r
=
bd
->
iterate
<
struct
garbage_helper_extra
,
garbage_leafentry_helper
>
(
info
);
if
(
r
!=
0
)
{
if
(
r
!=
0
)
{
goto
exit
;
goto
exit
;
}
}
...
...
ft/ft_node-serialize.cc
View file @
e510293f
...
@@ -353,7 +353,7 @@ serialize_ftnode_partition(FTNODE node, int i, struct sub_block *sb) {
...
@@ -353,7 +353,7 @@ serialize_ftnode_partition(FTNODE node, int i, struct sub_block *sb) {
bn_data
*
bd
=
BLB_DATA
(
node
,
i
);
bn_data
*
bd
=
BLB_DATA
(
node
,
i
);
wbuf_nocrc_char
(
&
wb
,
ch
);
wbuf_nocrc_char
(
&
wb
,
ch
);
wbuf_nocrc_uint
(
&
wb
,
bd
->
dmt_size
());
wbuf_nocrc_uint
(
&
wb
,
bd
->
num_klpairs
());
bd
->
serialize_to_wbuf
(
&
wb
);
bd
->
serialize_to_wbuf
(
&
wb
);
}
}
...
@@ -518,7 +518,7 @@ rebalance_ftnode_leaf(FTNODE node, unsigned int basementnodesize)
...
@@ -518,7 +518,7 @@ rebalance_ftnode_leaf(FTNODE node, unsigned int basementnodesize)
// Count number of leaf entries in this leaf (num_le).
// Count number of leaf entries in this leaf (num_le).
uint32_t
num_le
=
0
;
uint32_t
num_le
=
0
;
for
(
uint32_t
i
=
0
;
i
<
num_orig_basements
;
i
++
)
{
for
(
uint32_t
i
=
0
;
i
<
num_orig_basements
;
i
++
)
{
num_le
+=
BLB_DATA
(
node
,
i
)
->
dmt_size
();
num_le
+=
BLB_DATA
(
node
,
i
)
->
num_klpairs
();
}
}
uint32_t
num_alloc
=
num_le
?
num_le
:
1
;
// simplify logic below by always having at least one entry per array
uint32_t
num_alloc
=
num_le
?
num_le
:
1
;
// simplify logic below by always having at least one entry per array
...
@@ -545,8 +545,8 @@ rebalance_ftnode_leaf(FTNODE node, unsigned int basementnodesize)
...
@@ -545,8 +545,8 @@ rebalance_ftnode_leaf(FTNODE node, unsigned int basementnodesize)
for
(
uint32_t
i
=
0
;
i
<
num_orig_basements
;
i
++
)
{
for
(
uint32_t
i
=
0
;
i
<
num_orig_basements
;
i
++
)
{
bn_data
*
bd
=
BLB_DATA
(
node
,
i
);
bn_data
*
bd
=
BLB_DATA
(
node
,
i
);
struct
array_info
ai
{.
offset
=
curr_le
,
.
le_array
=
leafpointers
,
.
key_sizes_array
=
key_sizes
,
.
key_ptr_array
=
key_pointers
};
struct
array_info
ai
{.
offset
=
curr_le
,
.
le_array
=
leafpointers
,
.
key_sizes_array
=
key_sizes
,
.
key_ptr_array
=
key_pointers
};
bd
->
dmt_
iterate
<
array_info
,
array_item
>
(
&
ai
);
bd
->
iterate
<
array_info
,
array_item
>
(
&
ai
);
curr_le
+=
bd
->
dmt_size
();
curr_le
+=
bd
->
num_klpairs
();
}
}
// Create an array that will store indexes of new pivots.
// Create an array that will store indexes of new pivots.
...
...
ft/ftloader.cc
View file @
e510293f
...
@@ -2917,7 +2917,7 @@ static void add_pair_to_leafnode (struct leaf_buf *lbuf, unsigned char *key, int
...
@@ -2917,7 +2917,7 @@ static void add_pair_to_leafnode (struct leaf_buf *lbuf, unsigned char *key, int
// #3588 TODO just make a clean ule and append it to the omt
// #3588 TODO just make a clean ule and append it to the omt
// #3588 TODO can do the rebalancing here and avoid a lot of work later
// #3588 TODO can do the rebalancing here and avoid a lot of work later
FTNODE
leafnode
=
lbuf
->
node
;
FTNODE
leafnode
=
lbuf
->
node
;
uint32_t
idx
=
BLB_DATA
(
leafnode
,
0
)
->
dmt_size
();
uint32_t
idx
=
BLB_DATA
(
leafnode
,
0
)
->
num_klpairs
();
DBT
thekey
=
{
.
data
=
key
,
.
size
=
(
uint32_t
)
keylen
};
DBT
thekey
=
{
.
data
=
key
,
.
size
=
(
uint32_t
)
keylen
};
DBT
theval
=
{
.
data
=
val
,
.
size
=
(
uint32_t
)
vallen
};
DBT
theval
=
{
.
data
=
val
,
.
size
=
(
uint32_t
)
vallen
};
FT_MSG_S
cmd
=
{
.
type
=
FT_INSERT
,
FT_MSG_S
cmd
=
{
.
type
=
FT_INSERT
,
...
...
ft/tests/ft-serialize-test.cc
View file @
e510293f
...
@@ -362,7 +362,7 @@ test_serialize_leaf_check_msn(enum ftnode_verify_type bft, bool do_clone) {
...
@@ -362,7 +362,7 @@ test_serialize_leaf_check_msn(enum ftnode_verify_type bft, bool do_clone) {
if
(
bn
>
0
)
{
if
(
bn
>
0
)
{
assert
(
dest_ndd
[
bn
].
start
>=
dest_ndd
[
bn
-
1
].
start
+
dest_ndd
[
bn
-
1
].
size
);
assert
(
dest_ndd
[
bn
].
start
>=
dest_ndd
[
bn
-
1
].
start
+
dest_ndd
[
bn
-
1
].
size
);
}
}
for
(
uint32_t
i
=
0
;
i
<
BLB_DATA
(
dn
,
bn
)
->
dmt_size
();
i
++
)
{
for
(
uint32_t
i
=
0
;
i
<
BLB_DATA
(
dn
,
bn
)
->
num_klpairs
();
i
++
)
{
LEAFENTRY
curr_le
;
LEAFENTRY
curr_le
;
uint32_t
curr_keylen
;
uint32_t
curr_keylen
;
void
*
curr_key
;
void
*
curr_key
;
...
@@ -504,8 +504,8 @@ test_serialize_leaf_with_large_pivots(enum ftnode_verify_type bft, bool do_clone
...
@@ -504,8 +504,8 @@ test_serialize_leaf_with_large_pivots(enum ftnode_verify_type bft, bool do_clone
if
(
bn
>
0
)
{
if
(
bn
>
0
)
{
assert
(
dest_ndd
[
bn
].
start
>=
dest_ndd
[
bn
-
1
].
start
+
dest_ndd
[
bn
-
1
].
size
);
assert
(
dest_ndd
[
bn
].
start
>=
dest_ndd
[
bn
-
1
].
start
+
dest_ndd
[
bn
-
1
].
size
);
}
}
assert
(
BLB_DATA
(
dn
,
bn
)
->
dmt_size
()
>
0
);
assert
(
BLB_DATA
(
dn
,
bn
)
->
num_klpairs
()
>
0
);
for
(
uint32_t
i
=
0
;
i
<
BLB_DATA
(
dn
,
bn
)
->
dmt_size
();
i
++
)
{
for
(
uint32_t
i
=
0
;
i
<
BLB_DATA
(
dn
,
bn
)
->
num_klpairs
();
i
++
)
{
LEAFENTRY
curr_le
;
LEAFENTRY
curr_le
;
uint32_t
curr_keylen
;
uint32_t
curr_keylen
;
void
*
curr_key
;
void
*
curr_key
;
...
@@ -636,8 +636,8 @@ test_serialize_leaf_with_many_rows(enum ftnode_verify_type bft, bool do_clone) {
...
@@ -636,8 +636,8 @@ test_serialize_leaf_with_many_rows(enum ftnode_verify_type bft, bool do_clone) {
if
(
bn
>
0
)
{
if
(
bn
>
0
)
{
assert
(
dest_ndd
[
bn
].
start
>=
dest_ndd
[
bn
-
1
].
start
+
dest_ndd
[
bn
-
1
].
size
);
assert
(
dest_ndd
[
bn
].
start
>=
dest_ndd
[
bn
-
1
].
start
+
dest_ndd
[
bn
-
1
].
size
);
}
}
assert
(
BLB_DATA
(
dn
,
bn
)
->
dmt_size
()
>
0
);
assert
(
BLB_DATA
(
dn
,
bn
)
->
num_klpairs
()
>
0
);
for
(
uint32_t
i
=
0
;
i
<
BLB_DATA
(
dn
,
bn
)
->
dmt_size
();
i
++
)
{
for
(
uint32_t
i
=
0
;
i
<
BLB_DATA
(
dn
,
bn
)
->
num_klpairs
();
i
++
)
{
LEAFENTRY
curr_le
;
LEAFENTRY
curr_le
;
uint32_t
curr_keylen
;
uint32_t
curr_keylen
;
void
*
curr_key
;
void
*
curr_key
;
...
@@ -786,8 +786,8 @@ test_serialize_leaf_with_large_rows(enum ftnode_verify_type bft, bool do_clone)
...
@@ -786,8 +786,8 @@ test_serialize_leaf_with_large_rows(enum ftnode_verify_type bft, bool do_clone)
if
(
bn
>
0
)
{
if
(
bn
>
0
)
{
assert
(
dest_ndd
[
bn
].
start
>=
dest_ndd
[
bn
-
1
].
start
+
dest_ndd
[
bn
-
1
].
size
);
assert
(
dest_ndd
[
bn
].
start
>=
dest_ndd
[
bn
-
1
].
start
+
dest_ndd
[
bn
-
1
].
size
);
}
}
assert
(
BLB_DATA
(
dn
,
bn
)
->
dmt_size
()
>
0
);
assert
(
BLB_DATA
(
dn
,
bn
)
->
num_klpairs
()
>
0
);
for
(
uint32_t
i
=
0
;
i
<
BLB_DATA
(
dn
,
bn
)
->
dmt_size
();
i
++
)
{
for
(
uint32_t
i
=
0
;
i
<
BLB_DATA
(
dn
,
bn
)
->
num_klpairs
();
i
++
)
{
LEAFENTRY
curr_le
;
LEAFENTRY
curr_le
;
uint32_t
curr_keylen
;
uint32_t
curr_keylen
;
void
*
curr_key
;
void
*
curr_key
;
...
@@ -924,7 +924,7 @@ test_serialize_leaf_with_empty_basement_nodes(enum ftnode_verify_type bft, bool
...
@@ -924,7 +924,7 @@ test_serialize_leaf_with_empty_basement_nodes(enum ftnode_verify_type bft, bool
if
(
bn
>
0
)
{
if
(
bn
>
0
)
{
assert
(
dest_ndd
[
bn
].
start
>=
dest_ndd
[
bn
-
1
].
start
+
dest_ndd
[
bn
-
1
].
size
);
assert
(
dest_ndd
[
bn
].
start
>=
dest_ndd
[
bn
-
1
].
start
+
dest_ndd
[
bn
-
1
].
size
);
}
}
for
(
uint32_t
i
=
0
;
i
<
BLB_DATA
(
dn
,
bn
)
->
dmt_size
();
i
++
)
{
for
(
uint32_t
i
=
0
;
i
<
BLB_DATA
(
dn
,
bn
)
->
num_klpairs
();
i
++
)
{
LEAFENTRY
curr_le
;
LEAFENTRY
curr_le
;
uint32_t
curr_keylen
;
uint32_t
curr_keylen
;
void
*
curr_key
;
void
*
curr_key
;
...
@@ -1045,7 +1045,7 @@ test_serialize_leaf_with_multiple_empty_basement_nodes(enum ftnode_verify_type b
...
@@ -1045,7 +1045,7 @@ test_serialize_leaf_with_multiple_empty_basement_nodes(enum ftnode_verify_type b
if
(
i
>
0
)
{
if
(
i
>
0
)
{
assert
(
dest_ndd
[
i
].
start
>=
dest_ndd
[
i
-
1
].
start
+
dest_ndd
[
i
-
1
].
size
);
assert
(
dest_ndd
[
i
].
start
>=
dest_ndd
[
i
-
1
].
start
+
dest_ndd
[
i
-
1
].
size
);
}
}
assert
(
BLB_DATA
(
dn
,
i
)
->
dmt_size
()
==
0
);
assert
(
BLB_DATA
(
dn
,
i
)
->
num_klpairs
()
==
0
);
}
}
}
}
toku_ftnode_free
(
&
dn
);
toku_ftnode_free
(
&
dn
);
...
...
ft/tests/make-tree.cc
View file @
e510293f
...
@@ -119,7 +119,7 @@ append_leaf(FTNODE leafnode, void *key, size_t keylen, void *val, size_t vallen)
...
@@ -119,7 +119,7 @@ append_leaf(FTNODE leafnode, void *key, size_t keylen, void *val, size_t vallen)
DBT
theval
;
toku_fill_dbt
(
&
theval
,
val
,
vallen
);
DBT
theval
;
toku_fill_dbt
(
&
theval
,
val
,
vallen
);
// get an index that we can use to create a new leaf entry
// get an index that we can use to create a new leaf entry
uint32_t
idx
=
BLB_DATA
(
leafnode
,
0
)
->
dmt_size
();
uint32_t
idx
=
BLB_DATA
(
leafnode
,
0
)
->
num_klpairs
();
MSN
msn
=
next_dummymsn
();
MSN
msn
=
next_dummymsn
();
...
...
ft/tests/orthopush-flush.cc
View file @
e510293f
...
@@ -733,7 +733,7 @@ flush_to_leaf(FT_HANDLE t, bool make_leaf_up_to_date, bool use_flush) {
...
@@ -733,7 +733,7 @@ flush_to_leaf(FT_HANDLE t, bool make_leaf_up_to_date, bool use_flush) {
int
total_messages
=
0
;
int
total_messages
=
0
;
for
(
i
=
0
;
i
<
8
;
++
i
)
{
for
(
i
=
0
;
i
<
8
;
++
i
)
{
total_messages
+=
BLB_DATA
(
child
,
i
)
->
dmt_size
();
total_messages
+=
BLB_DATA
(
child
,
i
)
->
num_klpairs
();
}
}
assert
(
total_messages
<=
num_parent_messages
+
num_child_messages
);
assert
(
total_messages
<=
num_parent_messages
+
num_child_messages
);
...
@@ -746,7 +746,7 @@ flush_to_leaf(FT_HANDLE t, bool make_leaf_up_to_date, bool use_flush) {
...
@@ -746,7 +746,7 @@ flush_to_leaf(FT_HANDLE t, bool make_leaf_up_to_date, bool use_flush) {
memset
(
parent_messages_present
,
0
,
sizeof
parent_messages_present
);
memset
(
parent_messages_present
,
0
,
sizeof
parent_messages_present
);
memset
(
child_messages_present
,
0
,
sizeof
child_messages_present
);
memset
(
child_messages_present
,
0
,
sizeof
child_messages_present
);
for
(
int
j
=
0
;
j
<
8
;
++
j
)
{
for
(
int
j
=
0
;
j
<
8
;
++
j
)
{
uint32_t
len
=
BLB_DATA
(
child
,
j
)
->
dmt_size
();
uint32_t
len
=
BLB_DATA
(
child
,
j
)
->
num_klpairs
();
for
(
uint32_t
idx
=
0
;
idx
<
len
;
++
idx
)
{
for
(
uint32_t
idx
=
0
;
idx
<
len
;
++
idx
)
{
LEAFENTRY
le
;
LEAFENTRY
le
;
DBT
keydbt
,
valdbt
;
DBT
keydbt
,
valdbt
;
...
@@ -968,7 +968,7 @@ flush_to_leaf_with_keyrange(FT_HANDLE t, bool make_leaf_up_to_date) {
...
@@ -968,7 +968,7 @@ flush_to_leaf_with_keyrange(FT_HANDLE t, bool make_leaf_up_to_date) {
int
total_messages
=
0
;
int
total_messages
=
0
;
for
(
i
=
0
;
i
<
8
;
++
i
)
{
for
(
i
=
0
;
i
<
8
;
++
i
)
{
total_messages
+=
BLB_DATA
(
child
,
i
)
->
dmt_size
();
total_messages
+=
BLB_DATA
(
child
,
i
)
->
num_klpairs
();
}
}
assert
(
total_messages
<=
num_parent_messages
+
num_child_messages
);
assert
(
total_messages
<=
num_parent_messages
+
num_child_messages
);
...
@@ -1146,8 +1146,8 @@ compare_apply_and_flush(FT_HANDLE t, bool make_leaf_up_to_date) {
...
@@ -1146,8 +1146,8 @@ compare_apply_and_flush(FT_HANDLE t, bool make_leaf_up_to_date) {
for
(
int
j
=
0
;
j
<
8
;
++
j
)
{
for
(
int
j
=
0
;
j
<
8
;
++
j
)
{
bn_data
*
first
=
BLB_DATA
(
child1
,
j
);
bn_data
*
first
=
BLB_DATA
(
child1
,
j
);
bn_data
*
second
=
BLB_DATA
(
child2
,
j
);
bn_data
*
second
=
BLB_DATA
(
child2
,
j
);
uint32_t
len
=
first
->
dmt_size
();
uint32_t
len
=
first
->
num_klpairs
();
assert
(
len
==
second
->
dmt_size
());
assert
(
len
==
second
->
num_klpairs
());
for
(
uint32_t
idx
=
0
;
idx
<
len
;
++
idx
)
{
for
(
uint32_t
idx
=
0
;
idx
<
len
;
++
idx
)
{
LEAFENTRY
le1
,
le2
;
LEAFENTRY
le1
,
le2
;
DBT
key1dbt
,
val1dbt
,
key2dbt
,
val2dbt
;
DBT
key1dbt
,
val1dbt
,
key2dbt
,
val2dbt
;
...
...
ft/tests/test-checkpoint-during-merge.cc
View file @
e510293f
...
@@ -348,7 +348,7 @@ doit (int state) {
...
@@ -348,7 +348,7 @@ doit (int state) {
assert
(
node
->
height
==
0
);
assert
(
node
->
height
==
0
);
assert
(
!
node
->
dirty
);
assert
(
!
node
->
dirty
);
assert
(
node
->
n_children
==
1
);
assert
(
node
->
n_children
==
1
);
assert
(
BLB_DATA
(
node
,
0
)
->
dmt_size
()
==
1
);
assert
(
BLB_DATA
(
node
,
0
)
->
num_klpairs
()
==
1
);
toku_unpin_ftnode_off_client_thread
(
c_ft
->
ft
,
node
);
toku_unpin_ftnode_off_client_thread
(
c_ft
->
ft
,
node
);
toku_pin_ftnode_off_client_thread
(
toku_pin_ftnode_off_client_thread
(
...
@@ -364,7 +364,7 @@ doit (int state) {
...
@@ -364,7 +364,7 @@ doit (int state) {
assert
(
node
->
height
==
0
);
assert
(
node
->
height
==
0
);
assert
(
!
node
->
dirty
);
assert
(
!
node
->
dirty
);
assert
(
node
->
n_children
==
1
);
assert
(
node
->
n_children
==
1
);
assert
(
BLB_DATA
(
node
,
0
)
->
dmt_size
()
==
1
);
assert
(
BLB_DATA
(
node
,
0
)
->
num_klpairs
()
==
1
);
toku_unpin_ftnode_off_client_thread
(
c_ft
->
ft
,
node
);
toku_unpin_ftnode_off_client_thread
(
c_ft
->
ft
,
node
);
}
}
else
if
(
state
==
ft_flush_aflter_merge
||
state
==
flt_flush_before_unpin_remove
)
{
else
if
(
state
==
ft_flush_aflter_merge
||
state
==
flt_flush_before_unpin_remove
)
{
...
@@ -381,7 +381,7 @@ doit (int state) {
...
@@ -381,7 +381,7 @@ doit (int state) {
assert
(
node
->
height
==
0
);
assert
(
node
->
height
==
0
);
assert
(
!
node
->
dirty
);
assert
(
!
node
->
dirty
);
assert
(
node
->
n_children
==
1
);
assert
(
node
->
n_children
==
1
);
assert
(
BLB_DATA
(
node
,
0
)
->
dmt_size
()
==
2
);
assert
(
BLB_DATA
(
node
,
0
)
->
num_klpairs
()
==
2
);
toku_unpin_ftnode_off_client_thread
(
c_ft
->
ft
,
node
);
toku_unpin_ftnode_off_client_thread
(
c_ft
->
ft
,
node
);
}
}
else
{
else
{
...
...
ft/tests/test-checkpoint-during-rebalance.cc
View file @
e510293f
...
@@ -359,7 +359,7 @@ doit (int state) {
...
@@ -359,7 +359,7 @@ doit (int state) {
assert
(
node
->
height
==
0
);
assert
(
node
->
height
==
0
);
assert
(
!
node
->
dirty
);
assert
(
!
node
->
dirty
);
assert
(
node
->
n_children
==
1
);
assert
(
node
->
n_children
==
1
);
assert
(
BLB_DATA
(
node
,
0
)
->
dmt_size
()
==
2
);
assert
(
BLB_DATA
(
node
,
0
)
->
num_klpairs
()
==
2
);
toku_unpin_ftnode_off_client_thread
(
c_ft
->
ft
,
node
);
toku_unpin_ftnode_off_client_thread
(
c_ft
->
ft
,
node
);
toku_pin_ftnode_off_client_thread
(
toku_pin_ftnode_off_client_thread
(
...
@@ -375,7 +375,7 @@ doit (int state) {
...
@@ -375,7 +375,7 @@ doit (int state) {
assert
(
node
->
height
==
0
);
assert
(
node
->
height
==
0
);
assert
(
!
node
->
dirty
);
assert
(
!
node
->
dirty
);
assert
(
node
->
n_children
==
1
);
assert
(
node
->
n_children
==
1
);
assert
(
BLB_DATA
(
node
,
0
)
->
dmt_size
()
==
2
);
assert
(
BLB_DATA
(
node
,
0
)
->
num_klpairs
()
==
2
);
toku_unpin_ftnode_off_client_thread
(
c_ft
->
ft
,
node
);
toku_unpin_ftnode_off_client_thread
(
c_ft
->
ft
,
node
);
...
...
ft/tests/test-checkpoint-during-split.cc
View file @
e510293f
...
@@ -342,7 +342,7 @@ doit (bool after_split) {
...
@@ -342,7 +342,7 @@ doit (bool after_split) {
assert
(
node
->
height
==
0
);
assert
(
node
->
height
==
0
);
assert
(
!
node
->
dirty
);
assert
(
!
node
->
dirty
);
assert
(
node
->
n_children
==
1
);
assert
(
node
->
n_children
==
1
);
assert
(
BLB_DATA
(
node
,
0
)
->
dmt_size
()
==
1
);
assert
(
BLB_DATA
(
node
,
0
)
->
num_klpairs
()
==
1
);
toku_unpin_ftnode_off_client_thread
(
c_ft
->
ft
,
node
);
toku_unpin_ftnode_off_client_thread
(
c_ft
->
ft
,
node
);
toku_pin_ftnode_off_client_thread
(
toku_pin_ftnode_off_client_thread
(
...
@@ -358,7 +358,7 @@ doit (bool after_split) {
...
@@ -358,7 +358,7 @@ doit (bool after_split) {
assert
(
node
->
height
==
0
);
assert
(
node
->
height
==
0
);
assert
(
!
node
->
dirty
);
assert
(
!
node
->
dirty
);
assert
(
node
->
n_children
==
1
);
assert
(
node
->
n_children
==
1
);
assert
(
BLB_DATA
(
node
,
0
)
->
dmt_size
()
==
1
);
assert
(
BLB_DATA
(
node
,
0
)
->
num_klpairs
()
==
1
);
toku_unpin_ftnode_off_client_thread
(
c_ft
->
ft
,
node
);
toku_unpin_ftnode_off_client_thread
(
c_ft
->
ft
,
node
);
}
}
else
{
else
{
...
@@ -375,7 +375,7 @@ doit (bool after_split) {
...
@@ -375,7 +375,7 @@ doit (bool after_split) {
assert
(
node
->
height
==
0
);
assert
(
node
->
height
==
0
);
assert
(
!
node
->
dirty
);
assert
(
!
node
->
dirty
);
assert
(
node
->
n_children
==
1
);
assert
(
node
->
n_children
==
1
);
assert
(
BLB_DATA
(
node
,
0
)
->
dmt_size
()
==
2
);
assert
(
BLB_DATA
(
node
,
0
)
->
num_klpairs
()
==
2
);
toku_unpin_ftnode_off_client_thread
(
c_ft
->
ft
,
node
);
toku_unpin_ftnode_off_client_thread
(
c_ft
->
ft
,
node
);
}
}
...
...
ft/tests/verify-bad-msn.cc
View file @
e510293f
...
@@ -122,7 +122,7 @@ append_leaf(FTNODE leafnode, void *key, size_t keylen, void *val, size_t vallen)
...
@@ -122,7 +122,7 @@ append_leaf(FTNODE leafnode, void *key, size_t keylen, void *val, size_t vallen)
DBT
theval
;
toku_fill_dbt
(
&
theval
,
val
,
vallen
);
DBT
theval
;
toku_fill_dbt
(
&
theval
,
val
,
vallen
);
// get an index that we can use to create a new leaf entry
// get an index that we can use to create a new leaf entry
uint32_t
idx
=
BLB_DATA
(
leafnode
,
0
)
->
dmt_size
();
uint32_t
idx
=
BLB_DATA
(
leafnode
,
0
)
->
num_klpairs
();
MSN
msn
=
next_dummymsn
();
MSN
msn
=
next_dummymsn
();
...
...
ft/tests/verify-bad-pivots.cc
View file @
e510293f
...
@@ -111,7 +111,7 @@ append_leaf(FTNODE leafnode, void *key, size_t keylen, void *val, size_t vallen)
...
@@ -111,7 +111,7 @@ append_leaf(FTNODE leafnode, void *key, size_t keylen, void *val, size_t vallen)
DBT
theval
;
toku_fill_dbt
(
&
theval
,
val
,
vallen
);
DBT
theval
;
toku_fill_dbt
(
&
theval
,
val
,
vallen
);
// get an index that we can use to create a new leaf entry
// get an index that we can use to create a new leaf entry
uint32_t
idx
=
BLB_DATA
(
leafnode
,
0
)
->
dmt_size
();
uint32_t
idx
=
BLB_DATA
(
leafnode
,
0
)
->
num_klpairs
();
// apply an insert to the leaf node
// apply an insert to the leaf node
MSN
msn
=
next_dummymsn
();
MSN
msn
=
next_dummymsn
();
...
...
ft/tests/verify-dup-in-leaf.cc
View file @
e510293f
...
@@ -112,7 +112,7 @@ append_leaf(FTNODE leafnode, void *key, size_t keylen, void *val, size_t vallen)
...
@@ -112,7 +112,7 @@ append_leaf(FTNODE leafnode, void *key, size_t keylen, void *val, size_t vallen)
DBT
theval
;
toku_fill_dbt
(
&
theval
,
val
,
vallen
);
DBT
theval
;
toku_fill_dbt
(
&
theval
,
val
,
vallen
);
// get an index that we can use to create a new leaf entry
// get an index that we can use to create a new leaf entry
uint32_t
idx
=
BLB_DATA
(
leafnode
,
0
)
->
dmt_size
();
uint32_t
idx
=
BLB_DATA
(
leafnode
,
0
)
->
num_klpairs
();
// apply an insert to the leaf node
// apply an insert to the leaf node
MSN
msn
=
next_dummymsn
();
MSN
msn
=
next_dummymsn
();
...
...
ft/tests/verify-dup-pivots.cc
View file @
e510293f
...
@@ -111,7 +111,7 @@ append_leaf(FTNODE leafnode, void *key, size_t keylen, void *val, size_t vallen)
...
@@ -111,7 +111,7 @@ append_leaf(FTNODE leafnode, void *key, size_t keylen, void *val, size_t vallen)
DBT
theval
;
toku_fill_dbt
(
&
theval
,
val
,
vallen
);
DBT
theval
;
toku_fill_dbt
(
&
theval
,
val
,
vallen
);
// get an index that we can use to create a new leaf entry
// get an index that we can use to create a new leaf entry
uint32_t
idx
=
BLB_DATA
(
leafnode
,
0
)
->
dmt_size
();
uint32_t
idx
=
BLB_DATA
(
leafnode
,
0
)
->
num_klpairs
();
// apply an insert to the leaf node
// apply an insert to the leaf node
MSN
msn
=
next_dummymsn
();
MSN
msn
=
next_dummymsn
();
...
...
ft/tests/verify-misrouted-msgs.cc
View file @
e510293f
...
@@ -112,7 +112,7 @@ append_leaf(FTNODE leafnode, void *key, size_t keylen, void *val, size_t vallen)
...
@@ -112,7 +112,7 @@ append_leaf(FTNODE leafnode, void *key, size_t keylen, void *val, size_t vallen)
DBT
theval
;
toku_fill_dbt
(
&
theval
,
val
,
vallen
);
DBT
theval
;
toku_fill_dbt
(
&
theval
,
val
,
vallen
);
// get an index that we can use to create a new leaf entry
// get an index that we can use to create a new leaf entry
uint32_t
idx
=
BLB_DATA
(
leafnode
,
0
)
->
dmt_size
();
uint32_t
idx
=
BLB_DATA
(
leafnode
,
0
)
->
num_klpairs
();
// apply an insert to the leaf node
// apply an insert to the leaf node
MSN
msn
=
next_dummymsn
();
MSN
msn
=
next_dummymsn
();
...
...
ft/tests/verify-unsorted-leaf.cc
View file @
e510293f
...
@@ -114,7 +114,7 @@ append_leaf(FTNODE leafnode, void *key, size_t keylen, void *val, size_t vallen)
...
@@ -114,7 +114,7 @@ append_leaf(FTNODE leafnode, void *key, size_t keylen, void *val, size_t vallen)
toku_fill_dbt
(
&
theval
,
val
,
vallen
);
toku_fill_dbt
(
&
theval
,
val
,
vallen
);
// get an index that we can use to create a new leaf entry
// get an index that we can use to create a new leaf entry
uint32_t
idx
=
BLB_DATA
(
leafnode
,
0
)
->
dmt_size
();
uint32_t
idx
=
BLB_DATA
(
leafnode
,
0
)
->
num_klpairs
();
// apply an insert to the leaf node
// apply an insert to the leaf node
MSN
msn
=
next_dummymsn
();
MSN
msn
=
next_dummymsn
();
...
...
ft/tests/verify-unsorted-pivots.cc
View file @
e510293f
...
@@ -111,7 +111,7 @@ append_leaf(FTNODE leafnode, void *key, size_t keylen, void *val, size_t vallen)
...
@@ -111,7 +111,7 @@ append_leaf(FTNODE leafnode, void *key, size_t keylen, void *val, size_t vallen)
DBT
theval
;
toku_fill_dbt
(
&
theval
,
val
,
vallen
);
DBT
theval
;
toku_fill_dbt
(
&
theval
,
val
,
vallen
);
// get an index that we can use to create a new leaf entry
// get an index that we can use to create a new leaf entry
uint32_t
idx
=
BLB_DATA
(
leafnode
,
0
)
->
dmt_size
();
uint32_t
idx
=
BLB_DATA
(
leafnode
,
0
)
->
num_klpairs
();
// apply an insert to the leaf node
// apply an insert to the leaf node
MSN
msn
=
next_dummymsn
();
MSN
msn
=
next_dummymsn
();
...
...
ft/tokuftdump.cc
View file @
e510293f
...
@@ -315,9 +315,9 @@ dump_node (int f, BLOCKNUM blocknum, FT h) {
...
@@ -315,9 +315,9 @@ dump_node (int f, BLOCKNUM blocknum, FT h) {
}
}
}
else
{
}
else
{
printf
(
" n_bytes_in_buffer= %"
PRIu64
""
,
BLB_DATA
(
n
,
i
)
->
get_disk_size
());
printf
(
" n_bytes_in_buffer= %"
PRIu64
""
,
BLB_DATA
(
n
,
i
)
->
get_disk_size
());
printf
(
" items_in_buffer=%u
\n
"
,
BLB_DATA
(
n
,
i
)
->
dmt_size
());
printf
(
" items_in_buffer=%u
\n
"
,
BLB_DATA
(
n
,
i
)
->
num_klpairs
());
if
(
dump_data
)
{
if
(
dump_data
)
{
BLB_DATA
(
n
,
i
)
->
dmt_
iterate
<
void
,
print_le
>
(
NULL
);
BLB_DATA
(
n
,
i
)
->
iterate
<
void
,
print_le
>
(
NULL
);
}
}
}
}
}
}
...
...
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