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
e38f6bc5
Commit
e38f6bc5
authored
Apr 21, 2006
by
tomas@poseidon.ndb.mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.1-new
into poseidon.ndb.mysql.com:/home/tomas/mysql-5.1-new
parents
b665ee57
dc8a0bd6
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
97 additions
and
19 deletions
+97
-19
mysql-test/r/partition_pruning.result
mysql-test/r/partition_pruning.result
+5
-5
mysql-test/r/partition_range.result
mysql-test/r/partition_range.result
+24
-0
mysql-test/t/partition_range.test
mysql-test/t/partition_range.test
+28
-0
sql/partition_info.cc
sql/partition_info.cc
+38
-13
sql/partition_info.h
sql/partition_info.h
+2
-1
No files found.
mysql-test/r/partition_pruning.result
View file @
e38f6bc5
...
@@ -596,7 +596,7 @@ f_int1
...
@@ -596,7 +596,7 @@ f_int1
NULL
NULL
explain partitions select * from t1 where f_int1 is null;
explain partitions select * from t1 where f_int1 is null;
id select_type table partitions type possible_keys key key_len ref rows Extra
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 part4_p
2
sp0 system NULL NULL NULL NULL 1
1 SIMPLE t1 part4_p
art4
sp0 system NULL NULL NULL NULL 1
drop table t1;
drop table t1;
create table t1 (a int not null, b int not null)
create table t1 (a int not null, b int not null)
partition by list(a)
partition by list(a)
...
@@ -625,16 +625,16 @@ insert into t1 values (1,1),(1,2),(1,3),(1,4),
...
@@ -625,16 +625,16 @@ insert into t1 values (1,1),(1,2),(1,3),(1,4),
(2,1),(2,2),(2,3),(2,4), (NULL,1);
(2,1),(2,2),(2,3),(2,4), (NULL,1);
explain partitions select * from t1 where a IS NULL AND (b=1 OR b=2);
explain partitions select * from t1 where a IS NULL AND (b=1 OR b=2);
id select_type table partitions type possible_keys key key_len ref rows Extra
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 pn_p
3sp0,pn_p3
sp1 system NULL NULL NULL NULL 1
1 SIMPLE t1 pn_p
nsp0,pn_pn
sp1 system NULL NULL NULL NULL 1
explain partitions select * from t1 where (a IS NULL or a < 1) AND (b=1 OR b=2);
explain partitions select * from t1 where (a IS NULL or a < 1) AND (b=1 OR b=2);
id select_type table partitions type possible_keys key key_len ref rows Extra
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 pn_p
3sp0,pn_p3
sp1 system NULL NULL NULL NULL 1
1 SIMPLE t1 pn_p
nsp0,pn_pn
sp1 system NULL NULL NULL NULL 1
explain partitions select * from t1 where (a IS NULL or a < 2) AND (b=1 OR b=2);
explain partitions select * from t1 where (a IS NULL or a < 2) AND (b=1 OR b=2);
id select_type table partitions type possible_keys key key_len ref rows Extra
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0_p0sp0,p0_p0sp1,pn_p
3sp0,pn_p3
sp1 ALL NULL NULL NULL NULL 5 Using where
1 SIMPLE t1 p0_p0sp0,p0_p0sp1,pn_p
nsp0,pn_pn
sp1 ALL NULL NULL NULL NULL 5 Using where
explain partitions select * from t1 where (a IS NULL or a <= 1) AND (b=1 OR b=2);
explain partitions select * from t1 where (a IS NULL or a <= 1) AND (b=1 OR b=2);
id select_type table partitions type possible_keys key key_len ref rows Extra
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0_p0sp0,p0_p0sp1,pn_p
3sp0,pn_p3
sp1 ALL NULL NULL NULL NULL 5 Using where
1 SIMPLE t1 p0_p0sp0,p0_p0sp1,pn_p
nsp0,pn_pn
sp1 ALL NULL NULL NULL NULL 5 Using where
drop table t1;
drop table t1;
create table t1 ( a int) partition by list (MOD(a, 10))
create table t1 ( a int) partition by list (MOD(a, 10))
( partition p0 values in (0), partition p1 values in (1),
( partition p0 values in (0), partition p1 values in (1),
...
...
mysql-test/r/partition_range.result
View file @
e38f6bc5
...
@@ -363,3 +363,27 @@ SELECT COUNT(*) FROM t1 WHERE c3 < '2000-12-31';
...
@@ -363,3 +363,27 @@ SELECT COUNT(*) FROM t1 WHERE c3 < '2000-12-31';
COUNT(*)
COUNT(*)
10
10
DROP TABLE t1;
DROP TABLE t1;
create table t1 (a int)
partition by range (MOD(a,3))
subpartition by hash(a)
subpartitions 2
(partition p0 values less than (1),
partition p1 values less than (2),
partition p2 values less than (3),
partition p3 values less than (4));
ALTER TABLE t1 DROP PARTITION p3;
ALTER TABLE t1 DROP PARTITION p1;
ALTER TABLE t1 DROP PARTITION p2;
drop table t1;
create table t1 (a int)
partition by range (MOD(a,3))
subpartition by hash(a)
subpartitions 2
(partition p0 values less than (1),
partition p1 values less than (2),
partition p2 values less than (3),
partition p3 values less than (4));
ALTER TABLE t1 DROP PARTITION p0;
ALTER TABLE t1 DROP PARTITION p1;
ALTER TABLE t1 DROP PARTITION p2;
drop table t1;
mysql-test/t/partition_range.test
View file @
e38f6bc5
...
@@ -388,3 +388,31 @@ SELECT COUNT(*) FROM t1 WHERE c3 BETWEEN '1996-12-31' AND '2000-12-31';
...
@@ -388,3 +388,31 @@ SELECT COUNT(*) FROM t1 WHERE c3 BETWEEN '1996-12-31' AND '2000-12-31';
SELECT
COUNT
(
*
)
FROM
t1
WHERE
c3
<
'2000-12-31'
;
SELECT
COUNT
(
*
)
FROM
t1
WHERE
c3
<
'2000-12-31'
;
DROP
TABLE
t1
;
DROP
TABLE
t1
;
#
# BUG 18962 Errors in DROP PARTITION
#
create
table
t1
(
a
int
)
partition
by
range
(
MOD
(
a
,
3
))
subpartition
by
hash
(
a
)
subpartitions
2
(
partition
p0
values
less
than
(
1
),
partition
p1
values
less
than
(
2
),
partition
p2
values
less
than
(
3
),
partition
p3
values
less
than
(
4
));
ALTER
TABLE
t1
DROP
PARTITION
p3
;
ALTER
TABLE
t1
DROP
PARTITION
p1
;
ALTER
TABLE
t1
DROP
PARTITION
p2
;
drop
table
t1
;
create
table
t1
(
a
int
)
partition
by
range
(
MOD
(
a
,
3
))
subpartition
by
hash
(
a
)
subpartitions
2
(
partition
p0
values
less
than
(
1
),
partition
p1
values
less
than
(
2
),
partition
p2
values
less
than
(
3
),
partition
p3
values
less
than
(
4
));
ALTER
TABLE
t1
DROP
PARTITION
p0
;
ALTER
TABLE
t1
DROP
PARTITION
p1
;
ALTER
TABLE
t1
DROP
PARTITION
p2
;
drop
table
t1
;
sql/partition_info.cc
View file @
e38f6bc5
...
@@ -88,10 +88,10 @@ partition_info *partition_info::get_clone()
...
@@ -88,10 +88,10 @@ partition_info *partition_info::get_clone()
The external routine needing this code is check_partition_info
The external routine needing this code is check_partition_info
*/
*/
#define MAX_PART_NAME_SIZE
16
#define MAX_PART_NAME_SIZE
8
char
*
partition_info
::
create_default_partition_names
(
uint
part_no
,
uint
no_parts
,
char
*
partition_info
::
create_default_partition_names
(
uint
part_no
,
uint
no_parts
,
uint
start_no
,
bool
is_subpart
)
uint
start_no
)
{
{
char
*
ptr
=
sql_calloc
(
no_parts
*
MAX_PART_NAME_SIZE
);
char
*
ptr
=
sql_calloc
(
no_parts
*
MAX_PART_NAME_SIZE
);
char
*
move_ptr
=
ptr
;
char
*
move_ptr
=
ptr
;
...
@@ -102,10 +102,7 @@ char *partition_info::create_default_partition_names(uint part_no, uint no_parts
...
@@ -102,10 +102,7 @@ char *partition_info::create_default_partition_names(uint part_no, uint no_parts
{
{
do
do
{
{
if
(
is_subpart
)
my_sprintf
(
move_ptr
,
(
move_ptr
,
"p%u"
,
(
start_no
+
i
)));
my_sprintf
(
move_ptr
,
(
move_ptr
,
"p%usp%u"
,
part_no
,
(
start_no
+
i
)));
else
my_sprintf
(
move_ptr
,
(
move_ptr
,
"p%u"
,
(
start_no
+
i
)));
move_ptr
+=
MAX_PART_NAME_SIZE
;
move_ptr
+=
MAX_PART_NAME_SIZE
;
}
while
(
++
i
<
no_parts
);
}
while
(
++
i
<
no_parts
);
}
}
...
@@ -117,6 +114,36 @@ char *partition_info::create_default_partition_names(uint part_no, uint no_parts
...
@@ -117,6 +114,36 @@ char *partition_info::create_default_partition_names(uint part_no, uint no_parts
}
}
/*
Create a unique name for the subpartition as part_name'sp''subpart_no'
SYNOPSIS
create_subpartition_name()
subpart_no Number of subpartition
part_name Name of partition
RETURN VALUES
>0 A reference to the created name string
0 Memory allocation error
*/
char
*
partition_info
::
create_subpartition_name
(
uint
subpart_no
,
const
char
*
part_name
)
{
uint
size_alloc
=
strlen
(
part_name
)
+
MAX_PART_NAME_SIZE
;
char
*
ptr
=
sql_calloc
(
size_alloc
);
DBUG_ENTER
(
"create_subpartition_name"
);
if
(
likely
(
ptr
!=
NULL
))
{
my_sprintf
(
ptr
,
(
ptr
,
"%ssp%u"
,
part_name
,
subpart_no
));
}
else
{
mem_alloc_error
(
size_alloc
);
}
DBUG_RETURN
(
ptr
);
}
/*
/*
Set up all the default partitions not set-up by the user in the SQL
Set up all the default partitions not set-up by the user in the SQL
statement. Also perform a number of checks that the user hasn't tried
statement. Also perform a number of checks that the user hasn't tried
...
@@ -167,8 +194,7 @@ bool partition_info::set_up_default_partitions(handler *file, ulonglong max_rows
...
@@ -167,8 +194,7 @@ bool partition_info::set_up_default_partitions(handler *file, ulonglong max_rows
goto
end
;
goto
end
;
}
}
if
(
unlikely
((
!
(
default_name
=
create_default_partition_names
(
0
,
no_parts
,
if
(
unlikely
((
!
(
default_name
=
create_default_partition_names
(
0
,
no_parts
,
start_no
,
start_no
)))))
FALSE
)))))
goto
end
;
goto
end
;
i
=
0
;
i
=
0
;
do
do
...
@@ -238,18 +264,17 @@ bool partition_info::set_up_default_subpartitions(handler *file,
...
@@ -238,18 +264,17 @@ bool partition_info::set_up_default_subpartitions(handler *file,
{
{
part_elem
=
part_it
++
;
part_elem
=
part_it
++
;
j
=
0
;
j
=
0
;
name_ptr
=
create_default_partition_names
(
i
,
no_subparts
,
(
uint
)
0
,
TRUE
);
if
(
unlikely
(
!
name_ptr
))
goto
end
;
do
do
{
{
partition_element
*
subpart_elem
=
new
partition_element
();
partition_element
*
subpart_elem
=
new
partition_element
();
if
(
likely
(
subpart_elem
!=
0
&&
if
(
likely
(
subpart_elem
!=
0
&&
(
!
part_elem
->
subpartitions
.
push_back
(
subpart_elem
))))
(
!
part_elem
->
subpartitions
.
push_back
(
subpart_elem
))))
{
{
char
*
ptr
=
create_subpartition_name
(
j
,
part_elem
->
partition_name
);
if
(
!
ptr
)
goto
end
;
subpart_elem
->
engine_type
=
default_engine_type
;
subpart_elem
->
engine_type
=
default_engine_type
;
subpart_elem
->
partition_name
=
name_ptr
;
subpart_elem
->
partition_name
=
ptr
;
name_ptr
+=
MAX_PART_NAME_SIZE
;
}
}
else
else
{
{
...
...
sql/partition_info.h
View file @
e38f6bc5
...
@@ -256,7 +256,8 @@ private:
...
@@ -256,7 +256,8 @@ private:
uint
start_no
);
uint
start_no
);
bool
set_up_default_subpartitions
(
handler
*
file
,
ulonglong
max_rows
);
bool
set_up_default_subpartitions
(
handler
*
file
,
ulonglong
max_rows
);
char
*
create_default_partition_names
(
uint
part_no
,
uint
no_parts
,
char
*
create_default_partition_names
(
uint
part_no
,
uint
no_parts
,
uint
start_no
,
bool
is_subpart
);
uint
start_no
);
char
*
create_subpartition_name
(
uint
subpart_no
,
const
char
*
part_name
);
bool
has_unique_name
(
partition_element
*
element
);
bool
has_unique_name
(
partition_element
*
element
);
};
};
...
...
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