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
cc135454
Commit
cc135454
authored
May 16, 2005
by
sergefp@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/psergey/mysql-4.1-bug10095
parents
8b1673f1
480957e7
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
64 additions
and
1 deletion
+64
-1
myisam/mi_check.c
myisam/mi_check.c
+35
-1
mysql-test/r/myisam.result
mysql-test/r/myisam.result
+14
-0
mysql-test/t/myisam.test
mysql-test/t/myisam.test
+15
-0
No files found.
myisam/mi_check.c
View file @
cc135454
...
@@ -3243,6 +3243,9 @@ static int sort_key_write(MI_SORT_PARAM *sort_param, const void *a)
...
@@ -3243,6 +3243,9 @@ static int sort_key_write(MI_SORT_PARAM *sort_param, const void *a)
cmp
=
ha_key_cmp
(
sort_param
->
seg
,
sort_info
->
key_block
->
lastkey
,
cmp
=
ha_key_cmp
(
sort_param
->
seg
,
sort_info
->
key_block
->
lastkey
,
(
uchar
*
)
a
,
USE_WHOLE_KEY
,
SEARCH_FIND
|
SEARCH_UPDATE
,
(
uchar
*
)
a
,
USE_WHOLE_KEY
,
SEARCH_FIND
|
SEARCH_UPDATE
,
&
diff_pos
);
&
diff_pos
);
ha_key_cmp
(
sort_param
->
seg
,
sort_info
->
key_block
->
lastkey
,
(
uchar
*
)
a
,
USE_WHOLE_KEY
,
SEARCH_FIND
|
SEARCH_NULL_ARE_NOT_EQUAL
,
&
diff_pos
);
sort_param
->
unique
[
diff_pos
-
1
]
++
;
sort_param
->
unique
[
diff_pos
-
1
]
++
;
}
}
else
else
...
@@ -3955,7 +3958,38 @@ void update_auto_increment_key(MI_CHECK *param, MI_INFO *info,
...
@@ -3955,7 +3958,38 @@ void update_auto_increment_key(MI_CHECK *param, MI_INFO *info,
return
;
return
;
}
}
/* calculate unique keys for each part key */
/*
Update statistics for each part of an index
SYNOPSIS
update_key_parts()
keyinfo Index information (only key->keysegs used)
rec_per_key_part OUT Store statistics here
unique IN Array of #distinct values collected over index
run.
records Number of records in the table
NOTES
Unique is an array:
unique[0]= (#different values of {keypart1}) - 1
unique[1]= (#different values of {keypart2,keypart1} tuple) - unique[0] - 1
...
Here we assume that NULL != NULL (see SEARCH_NULL_ARE_NOT_EQUAL). The
'unique' array is collected in one sequential scan through the entire
index. This is done in two places: in chk_index() and in sort_key_write().
Output is an array:
rec_per_key_part[k] =
= E(#records in the table such that keypart_1=c_1 AND ... AND
keypart_k=c_k for arbitrary constants c_1 ... c_k)
= {assuming that values have uniform distribution and index contains all
tuples from the domain (or that {c_1, ..., c_k} tuple is choosen from
index tuples}
= #tuples-in-the-index / #distinct-tuples-in-the-index.
*/
void
update_key_parts
(
MI_KEYDEF
*
keyinfo
,
ulong
*
rec_per_key_part
,
void
update_key_parts
(
MI_KEYDEF
*
keyinfo
,
ulong
*
rec_per_key_part
,
ulonglong
*
unique
,
ulonglong
records
)
ulonglong
*
unique
,
ulonglong
records
)
...
...
mysql-test/r/myisam.result
View file @
cc135454
...
@@ -581,3 +581,17 @@ check table t1;
...
@@ -581,3 +581,17 @@ check table t1;
Table Op Msg_type Msg_text
Table Op Msg_type Msg_text
test.t1 check status OK
test.t1 check status OK
drop table t1;
drop table t1;
create table t1 (a int, key(a));
insert into t1 values (1),(2),(3),(4),(NULL),(NULL),(NULL),(NULL);
analyze table t1;
Table Op Msg_type Msg_text
test.t1 analyze status OK
show keys from t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t1 1 a 1 a A 8 NULL NULL YES BTREE
alter table t1 disable keys;
alter table t1 enable keys;
show keys from t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t1 1 a 1 a A 8 NULL NULL YES BTREE
drop table t1;
mysql-test/t/myisam.test
View file @
cc135454
...
@@ -560,3 +560,18 @@ update t1 set c2='A B' where c1=2;
...
@@ -560,3 +560,18 @@ update t1 set c2='A B' where c1=2;
check
table
t1
;
check
table
t1
;
drop
table
t1
;
drop
table
t1
;
# BUG#9622 - ANALYZE TABLE and ALTER TABLE .. ENABLE INDEX produce
# different statistics on the same table with NULL values.
create
table
t1
(
a
int
,
key
(
a
));
insert
into
t1
values
(
1
),(
2
),(
3
),(
4
),(
NULL
),(
NULL
),(
NULL
),(
NULL
);
analyze
table
t1
;
show
keys
from
t1
;
alter
table
t1
disable
keys
;
alter
table
t1
enable
keys
;
show
keys
from
t1
;
drop
table
t1
;
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