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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
e33a1c54
Commit
e33a1c54
authored
Jun 07, 2002
by
ram@gw.udmsearch.izhnet.ru
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
check_one_rb_key() func
parent
ab1a2731
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
51 additions
and
4 deletions
+51
-4
heap/_check.c
heap/_check.c
+51
-4
No files found.
heap/_check.c
View file @
e33a1c54
...
...
@@ -20,10 +20,12 @@
static
int
check_one_key
(
HP_KEYDEF
*
keydef
,
uint
keynr
,
ulong
records
,
ulong
blength
,
my_bool
print_status
);
static
int
check_one_rb_key
(
HP_INFO
*
info
,
uint
keynr
,
ulong
records
,
my_bool
print_status
);
/* Returns 0 if the HEAP is ok */
int
heap_check_heap
(
HP_INFO
*
info
,
my_bool
print_status
)
int
heap_check_heap
(
HP_INFO
*
info
,
my_bool
print_status
)
{
int
error
;
uint
key
;
...
...
@@ -32,9 +34,11 @@ int heap_check_heap(HP_INFO *info,my_bool print_status)
for
(
error
=
key
=
0
;
key
<
share
->
keys
;
key
++
)
{
if
(
!
(
share
->
keydef
[
key
].
algorithm
==
HA_KEY_ALG_BTREE
))
error
|=
check_one_key
(
share
->
keydef
+
key
,
key
,
share
->
records
,
share
->
blength
,
print_status
);
if
(
share
->
keydef
[
key
].
algorithm
==
HA_KEY_ALG_BTREE
)
error
|=
check_one_rb_key
(
info
,
key
,
share
->
records
,
print_status
);
else
error
|=
check_one_key
(
share
->
keydef
+
key
,
key
,
share
->
records
,
share
->
blength
,
print_status
);
}
DBUG_RETURN
(
error
);
...
...
@@ -90,3 +94,46 @@ static int check_one_key(HP_KEYDEF *keydef, uint keynr, ulong records,
(
float
)
seek
/
(
float
)
(
records
?
records
:
1
));
return
error
;
}
static
int
check_one_rb_key
(
HP_INFO
*
info
,
uint
keynr
,
ulong
records
,
my_bool
print_status
)
{
HP_KEYDEF
*
keydef
=
info
->
s
->
keydef
+
keynr
;
int
error
=
0
;
ulong
found
=
0
;
byte
*
key
,
*
recpos
;
uint
key_length
;
uint
not_used
;
if
((
key
=
tree_search_edge
(
&
keydef
->
rb_tree
,
info
->
parents
,
&
info
->
last_pos
,
offsetof
(
TREE_ELEMENT
,
left
))))
{
do
{
memcpy
(
&
recpos
,
key
+
(
*
keydef
->
get_key_length
)(
keydef
,
key
),
sizeof
(
byte
*
));
key_length
=
hp_rb_make_key
(
keydef
,
info
->
recbuf
,
recpos
,
0
);
if
(
ha_key_cmp
(
keydef
->
seg
,
info
->
recbuf
,
key
,
key_length
,
SEARCH_FIND
|
SEARCH_SAME
,
&
not_used
))
{
error
=
1
;
DBUG_PRINT
(
"error"
,(
"Record in wrong link: Link %d Record: %lx
\n
"
,
link
,
recpos
));
}
else
{
found
++
;
}
key
=
tree_search_next
(
&
keydef
->
rb_tree
,
&
info
->
last_pos
,
offsetof
(
TREE_ELEMENT
,
left
),
offsetof
(
TREE_ELEMENT
,
right
));
}
while
(
key
);
}
if
(
found
!=
records
)
{
DBUG_PRINT
(
"error"
,(
"Found %ld of %ld records"
));
error
=
1
;
}
if
(
print_status
)
printf
(
"Key: %d records: %ld
\n
"
,
keynr
,
records
);
return
error
;
}
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