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
2d1c1f82
Commit
2d1c1f82
authored
Oct 28, 2009
by
Mikael Ronstrom
Browse files
Options
Browse Files
Download
Plain Diff
Merge
parents
d9e05040
136ce371
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
28 additions
and
28 deletions
+28
-28
sql/opt_range.cc
sql/opt_range.cc
+14
-14
sql/partition_element.h
sql/partition_element.h
+1
-1
sql/sql_partition.cc
sql/sql_partition.cc
+3
-3
sql/sql_partition.h
sql/sql_partition.h
+10
-10
No files found.
sql/opt_range.cc
View file @
2d1c1f82
...
...
@@ -480,9 +480,9 @@ public:
(
*
range_key_flag
)
|=
key_tree
->
max_flag
;
if
(
key_tree
->
next_key_part
&&
key_tree
->
part
!=
last_part
&&
key_tree
->
next_key_part
->
part
==
key_tree
->
part
+
1
&&
!
(
*
range_key_flag
&
(
NO_MAX_RANGE
|
NEAR_MAX
))
&&
key_tree
->
next_key_part
->
type
==
SEL_ARG
::
KEY_RANGE
)
key_tree
->
next_key_part
->
part
==
key_tree
->
part
+
1
&&
!
(
*
range_key_flag
&
(
NO_MAX_RANGE
|
NEAR_MAX
))
&&
key_tree
->
next_key_part
->
type
==
SEL_ARG
::
KEY_RANGE
)
res
+=
key_tree
->
next_key_part
->
store_max_key
(
key
,
range_key
,
range_key_flag
,
...
...
@@ -3142,8 +3142,9 @@ int find_used_partitions(PART_PRUNE_PARAM *ppar, SEL_ARG *key_tree)
bool
set_full_part_if_bad_ret
=
FALSE
;
bool
ignore_part_fields
=
ppar
->
ignore_part_fields
;
bool
did_set_ignore_part_fields
=
FALSE
;
RANGE_OPT_PARAM
*
range_par
=
&
(
ppar
->
range_param
);
if
(
check_stack_overrun
(
ppar
->
range_param
.
thd
,
3
*
STACK_MIN_SIZE
,
NULL
))
if
(
check_stack_overrun
(
range_par
->
thd
,
3
*
STACK_MIN_SIZE
,
NULL
))
return
-
1
;
if
(
key_tree
->
left
!=
&
null_element
)
...
...
@@ -3239,11 +3240,11 @@ int find_used_partitions(PART_PRUNE_PARAM *ppar, SEL_ARG *key_tree)
else
flag
=
key_tree
->
min_flag
|
key_tree
->
max_flag
;
if
(
tmp_min_key
!=
ppar
->
range_param
.
min_key
)
if
(
tmp_min_key
!=
range_par
->
min_key
)
flag
&=
~
NO_MIN_RANGE
;
else
flag
|=
NO_MIN_RANGE
;
if
(
tmp_max_key
!=
ppar
->
range_param
.
max_key
)
if
(
tmp_max_key
!=
range_par
->
max_key
)
flag
&=
~
NO_MAX_RANGE
;
else
flag
|=
NO_MAX_RANGE
;
...
...
@@ -3270,10 +3271,10 @@ int find_used_partitions(PART_PRUNE_PARAM *ppar, SEL_ARG *key_tree)
get_part_iter_for_interval
(
ppar
->
part_info
,
FALSE
,
store_length_array
,
ppar
->
range_param
.
min_key
,
ppar
->
range_param
.
max_key
,
tmp_min_key
-
ppar
->
range_param
.
min_key
,
tmp_max_key
-
ppar
->
range_param
.
max_key
,
range_par
->
min_key
,
range_par
->
max_key
,
tmp_min_key
-
range_par
->
min_key
,
tmp_max_key
-
range_par
->
max_key
,
flag
,
&
ppar
->
part_iter
);
if
(
!
res
)
...
...
@@ -3309,8 +3310,7 @@ int find_used_partitions(PART_PRUNE_PARAM *ppar, SEL_ARG *key_tree)
{
PARTITION_ITERATOR
subpart_iter
;
DBUG_EXECUTE
(
"info"
,
dbug_print_segment_range
(
key_tree
,
ppar
->
range_param
.
key_parts
););
range_par
->
key_parts
););
res
=
ppar
->
part_info
->
get_subpart_iter_for_interval
(
ppar
->
part_info
,
TRUE
,
...
...
@@ -7726,13 +7726,13 @@ check_quick_keys(PARAM *param, uint idx, SEL_ARG *key_tree,
tmp_min_keypart
+=
key_tree
->
next_key_part
->
store_min_key
(
param
->
key
[
idx
],
&
tmp_min_key
,
&
tmp_min_flag
,
&
tmp_min_flag
,
MAX_KEY
);
if
(
!
tmp_max_flag
)
tmp_max_keypart
+=
key_tree
->
next_key_part
->
store_max_key
(
param
->
key
[
idx
],
&
tmp_max_key
,
&
tmp_max_flag
,
&
tmp_max_flag
,
MAX_KEY
);
min_key_length
=
(
uint
)
(
tmp_min_key
-
param
->
min_key
);
max_key_length
=
(
uint
)
(
tmp_max_key
-
param
->
max_key
);
...
...
sql/partition_element.h
View file @
2d1c1f82
#ifndef PARTITION_ELEMENT_INCLUDED
#define PARTITION_ELEMENT_INCLUDED
/* Copyright
(C) 2006-2008 MySQL AB, Sun Microsystems Inc. 2008-2009
/* Copyright
2005-2008 MySQL AB, 2008-2009 Sun Microsystems, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
...
...
sql/sql_partition.cc
View file @
2d1c1f82
...
...
@@ -3173,7 +3173,7 @@ int get_partition_id_range_col(partition_info *part_info,
{
loc_part_id
=
(
max_part_id
+
min_part_id
+
1
)
>>
1
;
if
(
cmp_rec_and_tuple
(
range_col_array
+
loc_part_id
*
num_columns
,
num_columns
)
>=
0
)
num_columns
)
>=
0
)
min_part_id
=
loc_part_id
+
1
;
else
max_part_id
=
loc_part_id
-
1
;
...
...
@@ -7012,12 +7012,12 @@ uint32 store_tuple_to_record(Field **pfield,
/*
RANGE(columns) partitioning: compare value bound and probe tuple.
The value bound always is a full tuple (but may include the MAX
_
VALUE
The value bound always is a full tuple (but may include the MAXVALUE
special value).
The probe tuple may be a prefix of partitioning tuple. The tail_is_min
parameter specifies whether the suffix components should be assumed to
hold MAX
_
VALUE
hold MAXVALUE
*/
static
int
cmp_rec_and_tuple
(
part_column_list_val
*
val
,
uint32
nvals_in_rec
)
...
...
sql/sql_partition.h
View file @
2d1c1f82
#ifndef SQL_PARTITION_INCLUDED
#define SQL_PARTITION_INCLUDED
/* Copyright
(C) 2006-2008 MySQL AB, Sun Microsystems Inc. 2008-2009
/* Copyright
2005-2008 MySQL AB, 2008-2009 Sun Microsystems, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
...
...
@@ -174,16 +174,16 @@ typedef struct st_partition_iter
SYNOPSIS
get_partitions_in_range_iter()
part_info Partitioning info
part_info
Partitioning info
is_subpart
store_length_array Length of fields packed in opt_range_key format
min_val Left edge, field value in opt_range_key format
max_val Right edge, field value in opt_range_key format
min_len Length of minimum value
max_len Length of maximum value
flags Some combination of NEAR_MIN, NEAR_MAX, NO_MIN_RANGE,
NO_MAX_RANGE
part_iter Iterator structure to be initialized
store_length_array
Length of fields packed in opt_range_key format
min_val
Left edge, field value in opt_range_key format
max_val
Right edge, field value in opt_range_key format
min_len
Length of minimum value
max_len
Length of maximum value
flags
Some combination of NEAR_MIN, NEAR_MAX, NO_MIN_RANGE,
NO_MAX_RANGE
part_iter
Iterator structure to be initialized
DESCRIPTION
Functions with this signature are used to perform "Partitioning Interval
...
...
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