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
032d208b
Commit
032d208b
authored
Jul 21, 2006
by
mikael/pappa@dator5.(none)
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
BUG#18198: Partition function handling
Review fixes
parent
21f8aef4
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
127 additions
and
177 deletions
+127
-177
sql/item.h
sql/item.h
+14
-32
sql/item_cmpfunc.h
sql/item_cmpfunc.h
+14
-23
sql/item_func.h
sql/item_func.h
+30
-36
sql/item_strfunc.h
sql/item_strfunc.h
+14
-26
sql/item_timefunc.h
sql/item_timefunc.h
+30
-32
sql/item_xmlfunc.h
sql/item_xmlfunc.h
+1
-2
sql/partition_info.cc
sql/partition_info.cc
+7
-6
sql/partition_info.h
sql/partition_info.h
+1
-5
sql/sql_partition.cc
sql/sql_partition.cc
+15
-14
sql/sql_yacc.yy
sql/sql_yacc.yy
+1
-1
No files found.
sql/item.h
View file @
032d208b
...
@@ -807,26 +807,10 @@ public:
...
@@ -807,26 +807,10 @@ public:
below should be defined in the new Item class.
below should be defined in the new Item class.
*/
*/
#define PF_SAFE_BINARY_COLLATION 3
#define PF_SAFE_SINGLE_CHAR_COLLATION 2
#define PF_SAFE 1
#define PF_UNSAFE 0
bool
safe_for_binary_collation
(
byte
*
int_arg
)
{
if
(
*
(
int
*
)
int_arg
!=
PF_UNSAFE
)
*
(
int
*
)
int_arg
=
PF_SAFE_BINARY_COLLATION
;
return
0
;
}
bool
safe_for_single_char_collation
(
byte
*
int_arg
)
{
if
(
*
(
int
*
)
int_arg
==
PF_SAFE
)
*
(
int
*
)
int_arg
=
PF_SAFE_SINGLE_CHAR_COLLATION
;
return
0
;
}
virtual
bool
check_partition_func_processor
(
byte
*
int_arg
)
virtual
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
{
*
(
int
*
)
int_arg
=
PF_UNSAFE
;
*
(
int
*
)
int_arg
=
0
;
return
0
;
return
FALSE
;
}
}
virtual
Item
*
equal_fields_propagator
(
byte
*
arg
)
{
return
this
;
}
virtual
Item
*
equal_fields_propagator
(
byte
*
arg
)
{
return
this
;
}
...
@@ -1126,8 +1110,7 @@ public:
...
@@ -1126,8 +1110,7 @@ public:
Item
::
maybe_null
=
TRUE
;
Item
::
maybe_null
=
TRUE
;
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);
}
bool
fix_fields
(
THD
*
,
Item
**
);
bool
fix_fields
(
THD
*
,
Item
**
);
enum
Type
type
()
const
;
enum
Type
type
()
const
;
...
@@ -1174,7 +1157,7 @@ public:
...
@@ -1174,7 +1157,7 @@ public:
Item_num
()
{}
/* Remove gcc warning */
Item_num
()
{}
/* Remove gcc warning */
virtual
Item_num
*
neg
()
=
0
;
virtual
Item_num
*
neg
()
=
0
;
Item
*
safe_charset_converter
(
CHARSET_INFO
*
tocs
);
Item
*
safe_charset_converter
(
CHARSET_INFO
*
tocs
);
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
#define NO_CACHED_FIELD_INDEX ((uint)(-1))
#define NO_CACHED_FIELD_INDEX ((uint)(-1))
...
@@ -1310,7 +1293,7 @@ public:
...
@@ -1310,7 +1293,7 @@ public:
bool
collect_item_field_processor
(
byte
*
arg
);
bool
collect_item_field_processor
(
byte
*
arg
);
bool
find_item_in_field_list_processor
(
byte
*
arg
);
bool
find_item_in_field_list_processor
(
byte
*
arg
);
bool
register_field_in_read_map
(
byte
*
arg
);
bool
register_field_in_read_map
(
byte
*
arg
);
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
void
cleanup
();
void
cleanup
();
bool
result_as_longlong
()
bool
result_as_longlong
()
{
{
...
@@ -1358,7 +1341,7 @@ public:
...
@@ -1358,7 +1341,7 @@ public:
bool
is_null
()
{
return
1
;
}
bool
is_null
()
{
return
1
;
}
void
print
(
String
*
str
)
{
str
->
append
(
STRING_WITH_LEN
(
"NULL"
));
}
void
print
(
String
*
str
)
{
str
->
append
(
STRING_WITH_LEN
(
"NULL"
));
}
Item
*
safe_charset_converter
(
CHARSET_INFO
*
tocs
);
Item
*
safe_charset_converter
(
CHARSET_INFO
*
tocs
);
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_null_result
:
public
Item_null
class
Item_null_result
:
public
Item_null
...
@@ -1372,7 +1355,7 @@ public:
...
@@ -1372,7 +1355,7 @@ public:
save_in_field
(
result_field
,
no_conversions
);
save_in_field
(
result_field
,
no_conversions
);
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
*
(
int
*
)
int_arg
=
PF_UNSAFE
;
return
0
;
}
{
*
(
int
*
)
int_arg
=
0
;
return
FALSE
;
}
};
};
/* Item represents one placeholder ('?') of prepared statement */
/* Item represents one placeholder ('?') of prepared statement */
...
@@ -1664,7 +1647,7 @@ public:
...
@@ -1664,7 +1647,7 @@ public:
void
print
(
String
*
str
)
{
str
->
append
(
func_name
);
}
void
print
(
String
*
str
)
{
str
->
append
(
func_name
);
}
Item
*
safe_charset_converter
(
CHARSET_INFO
*
tocs
);
Item
*
safe_charset_converter
(
CHARSET_INFO
*
tocs
);
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
*
(
int
*
)
int_arg
=
PF_UNSAFE
;
return
0
;
}
{
*
(
int
*
)
int_arg
=
0
;
return
FALSE
;
}
};
};
...
@@ -1742,7 +1725,7 @@ public:
...
@@ -1742,7 +1725,7 @@ public:
void
print
(
String
*
str
);
void
print
(
String
*
str
);
// to prevent drop fixed flag (no need parent cleanup call)
// to prevent drop fixed flag (no need parent cleanup call)
void
cleanup
()
{}
void
cleanup
()
{}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -1758,7 +1741,7 @@ public:
...
@@ -1758,7 +1741,7 @@ public:
Item
*
safe_charset_converter
(
CHARSET_INFO
*
tocs
);
Item
*
safe_charset_converter
(
CHARSET_INFO
*
tocs
);
void
print
(
String
*
str
)
{
str
->
append
(
func_name
);
}
void
print
(
String
*
str
)
{
str
->
append
(
func_name
);
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
*
(
int
*
)
int_arg
=
PF_UNSAFE
;
return
0
;
}
{
*
(
int
*
)
int_arg
=
0
;
return
FALSE
;
}
};
};
...
@@ -1772,7 +1755,7 @@ public:
...
@@ -1772,7 +1755,7 @@ public:
{
max_length
=
19
;}
{
max_length
=
19
;}
enum_field_types
field_type
()
const
{
return
MYSQL_TYPE_DATETIME
;
}
enum_field_types
field_type
()
const
{
return
MYSQL_TYPE_DATETIME
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
*
(
int
*
)
int_arg
=
PF_UNSAFE
;
return
0
;
}
{
*
(
int
*
)
int_arg
=
0
;
return
FALSE
;
}
};
};
class
Item_empty_string
:
public
Item_string
class
Item_empty_string
:
public
Item_string
...
@@ -1796,7 +1779,7 @@ public:
...
@@ -1796,7 +1779,7 @@ public:
}
}
enum_field_types
field_type
()
const
{
return
int_field_type
;
}
enum_field_types
field_type
()
const
{
return
int_field_type
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
*
(
int
*
)
int_arg
=
PF_UNSAFE
;
return
0
;
}
{
*
(
int
*
)
int_arg
=
0
;
return
FALSE
;
}
};
};
...
@@ -1820,8 +1803,7 @@ public:
...
@@ -1820,8 +1803,7 @@ public:
void
cleanup
()
{}
void
cleanup
()
{}
bool
eq
(
const
Item
*
item
,
bool
binary_cmp
)
const
;
bool
eq
(
const
Item
*
item
,
bool
binary_cmp
)
const
;
virtual
Item
*
safe_charset_converter
(
CHARSET_INFO
*
tocs
);
virtual
Item
*
safe_charset_converter
(
CHARSET_INFO
*
tocs
);
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_binary_collation
(
int_arg
);}
};
};
...
@@ -2049,7 +2031,7 @@ public:
...
@@ -2049,7 +2031,7 @@ public:
Item
*
new_item
();
Item
*
new_item
();
virtual
Item
*
real_item
()
{
return
ref
;
}
virtual
Item
*
real_item
()
{
return
ref
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
*
(
int
*
)
int_arg
=
PF_UNSAFE
;
return
0
;
}
{
*
(
int
*
)
int_arg
=
0
;
return
FALSE
;
}
};
};
#ifdef MYSQL_SERVER
#ifdef MYSQL_SERVER
...
...
sql/item_cmpfunc.h
View file @
032d208b
...
@@ -240,8 +240,7 @@ public:
...
@@ -240,8 +240,7 @@ public:
}
}
Item
*
neg_transformer
(
THD
*
thd
);
Item
*
neg_transformer
(
THD
*
thd
);
virtual
Item
*
negated_item
();
virtual
Item
*
negated_item
();
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);
}
};
};
class
Item_func_not
:
public
Item_bool_func
class
Item_func_not
:
public
Item_bool_func
...
@@ -252,8 +251,7 @@ public:
...
@@ -252,8 +251,7 @@ public:
enum
Functype
functype
()
const
{
return
NOT_FUNC
;
}
enum
Functype
functype
()
const
{
return
NOT_FUNC
;
}
const
char
*
func_name
()
const
{
return
"not"
;
}
const
char
*
func_name
()
const
{
return
"not"
;
}
Item
*
neg_transformer
(
THD
*
thd
);
Item
*
neg_transformer
(
THD
*
thd
);
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);
}
};
};
class
Item_maxmin_subselect
;
class
Item_maxmin_subselect
;
...
@@ -468,8 +466,7 @@ public:
...
@@ -468,8 +466,7 @@ public:
bool
is_bool_func
()
{
return
1
;
}
bool
is_bool_func
()
{
return
1
;
}
CHARSET_INFO
*
compare_collation
()
{
return
cmp_collation
.
collation
;
}
CHARSET_INFO
*
compare_collation
()
{
return
cmp_collation
.
collation
;
}
uint
decimal_precision
()
const
{
return
1
;
}
uint
decimal_precision
()
const
{
return
1
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);
}
};
};
...
@@ -481,8 +478,7 @@ public:
...
@@ -481,8 +478,7 @@ public:
optimize_type
select_optimize
()
const
{
return
OPTIMIZE_NONE
;
}
optimize_type
select_optimize
()
const
{
return
OPTIMIZE_NONE
;
}
const
char
*
func_name
()
const
{
return
"strcmp"
;
}
const
char
*
func_name
()
const
{
return
"strcmp"
;
}
void
print
(
String
*
str
)
{
Item_func
::
print
(
str
);
}
void
print
(
String
*
str
)
{
Item_func
::
print
(
str
);
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);
}
};
};
...
@@ -545,7 +541,7 @@ public:
...
@@ -545,7 +541,7 @@ public:
const
char
*
func_name
()
const
{
return
"ifnull"
;
}
const
char
*
func_name
()
const
{
return
"ifnull"
;
}
Field
*
tmp_table_field
(
TABLE
*
table
);
Field
*
tmp_table_field
(
TABLE
*
table
);
uint
decimal_precision
()
const
;
uint
decimal_precision
()
const
;
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
...
@@ -586,7 +582,7 @@ public:
...
@@ -586,7 +582,7 @@ public:
void
print
(
String
*
str
)
{
Item_func
::
print
(
str
);
}
void
print
(
String
*
str
)
{
Item_func
::
print
(
str
);
}
table_map
not_null_tables
()
const
{
return
0
;
}
table_map
not_null_tables
()
const
{
return
0
;
}
bool
is_null
();
bool
is_null
();
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
...
@@ -629,8 +625,7 @@ public:
...
@@ -629,8 +625,7 @@ public:
void
print
(
String
*
str
);
void
print
(
String
*
str
);
Item
*
find_item
(
String
*
str
);
Item
*
find_item
(
String
*
str
);
CHARSET_INFO
*
compare_collation
()
{
return
cmp_collation
.
collation
;
}
CHARSET_INFO
*
compare_collation
()
{
return
cmp_collation
.
collation
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);
}
};
};
...
@@ -981,8 +976,7 @@ public:
...
@@ -981,8 +976,7 @@ public:
bool
nulls_in_row
();
bool
nulls_in_row
();
bool
is_bool_func
()
{
return
1
;
}
bool
is_bool_func
()
{
return
1
;
}
CHARSET_INFO
*
compare_collation
()
{
return
cmp_collation
.
collation
;
}
CHARSET_INFO
*
compare_collation
()
{
return
cmp_collation
.
collation
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);
}
};
};
/* Functions used by where clause */
/* Functions used by where clause */
...
@@ -1024,7 +1018,7 @@ public:
...
@@ -1024,7 +1018,7 @@ public:
optimize_type
select_optimize
()
const
{
return
OPTIMIZE_NULL
;
}
optimize_type
select_optimize
()
const
{
return
OPTIMIZE_NULL
;
}
Item
*
neg_transformer
(
THD
*
thd
);
Item
*
neg_transformer
(
THD
*
thd
);
CHARSET_INFO
*
compare_collation
()
{
return
args
[
0
]
->
collation
.
collation
;
}
CHARSET_INFO
*
compare_collation
()
{
return
args
[
0
]
->
collation
.
collation
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
/* Functions used by HAVING for rewriting IN subquery */
/* Functions used by HAVING for rewriting IN subquery */
...
@@ -1047,7 +1041,7 @@ public:
...
@@ -1047,7 +1041,7 @@ public:
table_map
used_tables
()
const
table_map
used_tables
()
const
{
return
used_tables_cache
|
RAND_TABLE_BIT
;
}
{
return
used_tables_cache
|
RAND_TABLE_BIT
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
*
(
int
*
)
int_arg
=
PF_UNSAFE
;
return
0
;
}
{
*
(
int
*
)
int_arg
=
0
;
return
FALSE
;
}
};
};
...
@@ -1070,7 +1064,7 @@ public:
...
@@ -1070,7 +1064,7 @@ public:
void
print
(
String
*
str
);
void
print
(
String
*
str
);
CHARSET_INFO
*
compare_collation
()
{
return
args
[
0
]
->
collation
.
collation
;
}
CHARSET_INFO
*
compare_collation
()
{
return
args
[
0
]
->
collation
.
collation
;
}
void
top_level_item
()
{
abort_on_null
=
1
;
}
void
top_level_item
()
{
abort_on_null
=
1
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
...
@@ -1109,8 +1103,7 @@ public:
...
@@ -1109,8 +1103,7 @@ public:
const
char
*
func_name
()
const
{
return
"like"
;
}
const
char
*
func_name
()
const
{
return
"like"
;
}
bool
fix_fields
(
THD
*
thd
,
Item
**
ref
);
bool
fix_fields
(
THD
*
thd
,
Item
**
ref
);
void
cleanup
();
void
cleanup
();
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);
}
};
};
#ifdef USE_REGEX
#ifdef USE_REGEX
...
@@ -1133,8 +1126,7 @@ public:
...
@@ -1133,8 +1126,7 @@ public:
const
char
*
func_name
()
const
{
return
"regexp"
;
}
const
char
*
func_name
()
const
{
return
"regexp"
;
}
void
print
(
String
*
str
)
{
print_op
(
str
);
}
void
print
(
String
*
str
)
{
print_op
(
str
);
}
CHARSET_INFO
*
compare_collation
()
{
return
cmp_collation
.
collation
;
}
CHARSET_INFO
*
compare_collation
()
{
return
cmp_collation
.
collation
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_binary_collation
(
int_arg
);
}
};
};
#else
#else
...
@@ -1191,8 +1183,7 @@ public:
...
@@ -1191,8 +1183,7 @@ public:
Item
*
transform
(
Item_transformer
transformer
,
byte
*
arg
);
Item
*
transform
(
Item_transformer
transformer
,
byte
*
arg
);
void
traverse_cond
(
Cond_traverser
,
void
*
arg
,
traverse_order
order
);
void
traverse_cond
(
Cond_traverser
,
void
*
arg
,
traverse_order
order
);
void
neg_arguments
(
THD
*
thd
);
void
neg_arguments
(
THD
*
thd
);
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);
}
};
};
...
...
sql/item_func.h
View file @
032d208b
...
@@ -247,7 +247,7 @@ public:
...
@@ -247,7 +247,7 @@ public:
void
fix_num_length_and_dec
();
void
fix_num_length_and_dec
();
void
find_num_type
();
void
find_num_type
();
String
*
str_op
(
String
*
str
)
{
DBUG_ASSERT
(
0
);
return
0
;
}
String
*
str_op
(
String
*
str
)
{
DBUG_ASSERT
(
0
);
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
...
@@ -260,7 +260,7 @@ class Item_num_op :public Item_func_numhybrid
...
@@ -260,7 +260,7 @@ class Item_num_op :public Item_func_numhybrid
void
print
(
String
*
str
)
{
print_op
(
str
);
}
void
print
(
String
*
str
)
{
print_op
(
str
);
}
void
find_num_type
();
void
find_num_type
();
String
*
str_op
(
String
*
str
)
{
DBUG_ASSERT
(
0
);
return
0
;
}
String
*
str_op
(
String
*
str
)
{
DBUG_ASSERT
(
0
);
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
...
@@ -311,7 +311,7 @@ public:
...
@@ -311,7 +311,7 @@ public:
{
max_length
=
args
[
0
]
->
max_length
;
unsigned_flag
=
0
;
}
{
max_length
=
args
[
0
]
->
max_length
;
unsigned_flag
=
0
;
}
void
print
(
String
*
str
);
void
print
(
String
*
str
);
uint
decimal_precision
()
const
{
return
args
[
0
]
->
decimal_precision
();
}
uint
decimal_precision
()
const
{
return
args
[
0
]
->
decimal_precision
();
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
...
@@ -345,7 +345,7 @@ public:
...
@@ -345,7 +345,7 @@ public:
void
fix_length_and_dec
()
{};
void
fix_length_and_dec
()
{};
const
char
*
func_name
()
const
{
return
"decimal_typecast"
;
}
const
char
*
func_name
()
const
{
return
"decimal_typecast"
;
}
void
print
(
String
*
);
void
print
(
String
*
);
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
...
@@ -414,7 +414,7 @@ public:
...
@@ -414,7 +414,7 @@ public:
const
char
*
func_name
()
const
{
return
"DIV"
;
}
const
char
*
func_name
()
const
{
return
"DIV"
;
}
void
fix_length_and_dec
();
void
fix_length_and_dec
();
void
print
(
String
*
str
)
{
print_op
(
str
);
}
void
print
(
String
*
str
)
{
print_op
(
str
);
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
...
@@ -487,7 +487,7 @@ public:
...
@@ -487,7 +487,7 @@ public:
Item_func_exp
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
Item_func_exp
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"exp"
;
}
const
char
*
func_name
()
const
{
return
"exp"
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
...
@@ -497,7 +497,7 @@ public:
...
@@ -497,7 +497,7 @@ public:
Item_func_ln
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
Item_func_ln
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"ln"
;
}
const
char
*
func_name
()
const
{
return
"ln"
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
...
@@ -508,7 +508,7 @@ public:
...
@@ -508,7 +508,7 @@ public:
Item_func_log
(
Item
*
a
,
Item
*
b
)
:
Item_dec_func
(
a
,
b
)
{}
Item_func_log
(
Item
*
a
,
Item
*
b
)
:
Item_dec_func
(
a
,
b
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"log"
;
}
const
char
*
func_name
()
const
{
return
"log"
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
...
@@ -518,7 +518,7 @@ public:
...
@@ -518,7 +518,7 @@ public:
Item_func_log2
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
Item_func_log2
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"log2"
;
}
const
char
*
func_name
()
const
{
return
"log2"
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
...
@@ -528,7 +528,7 @@ public:
...
@@ -528,7 +528,7 @@ public:
Item_func_log10
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
Item_func_log10
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"log10"
;
}
const
char
*
func_name
()
const
{
return
"log10"
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
...
@@ -538,7 +538,7 @@ public:
...
@@ -538,7 +538,7 @@ public:
Item_func_sqrt
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
Item_func_sqrt
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"sqrt"
;
}
const
char
*
func_name
()
const
{
return
"sqrt"
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
...
@@ -548,7 +548,7 @@ public:
...
@@ -548,7 +548,7 @@ public:
Item_func_pow
(
Item
*
a
,
Item
*
b
)
:
Item_dec_func
(
a
,
b
)
{}
Item_func_pow
(
Item
*
a
,
Item
*
b
)
:
Item_dec_func
(
a
,
b
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"pow"
;
}
const
char
*
func_name
()
const
{
return
"pow"
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
...
@@ -558,7 +558,7 @@ public:
...
@@ -558,7 +558,7 @@ public:
Item_func_acos
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
Item_func_acos
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"acos"
;
}
const
char
*
func_name
()
const
{
return
"acos"
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
class
Item_func_asin
:
public
Item_dec_func
class
Item_func_asin
:
public
Item_dec_func
...
@@ -567,7 +567,7 @@ public:
...
@@ -567,7 +567,7 @@ public:
Item_func_asin
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
Item_func_asin
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"asin"
;
}
const
char
*
func_name
()
const
{
return
"asin"
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
class
Item_func_atan
:
public
Item_dec_func
class
Item_func_atan
:
public
Item_dec_func
...
@@ -577,7 +577,7 @@ public:
...
@@ -577,7 +577,7 @@ public:
Item_func_atan
(
Item
*
a
,
Item
*
b
)
:
Item_dec_func
(
a
,
b
)
{}
Item_func_atan
(
Item
*
a
,
Item
*
b
)
:
Item_dec_func
(
a
,
b
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"atan"
;
}
const
char
*
func_name
()
const
{
return
"atan"
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
class
Item_func_cos
:
public
Item_dec_func
class
Item_func_cos
:
public
Item_dec_func
...
@@ -586,7 +586,7 @@ public:
...
@@ -586,7 +586,7 @@ public:
Item_func_cos
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
Item_func_cos
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"cos"
;
}
const
char
*
func_name
()
const
{
return
"cos"
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
class
Item_func_sin
:
public
Item_dec_func
class
Item_func_sin
:
public
Item_dec_func
...
@@ -595,7 +595,7 @@ public:
...
@@ -595,7 +595,7 @@ public:
Item_func_sin
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
Item_func_sin
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"sin"
;
}
const
char
*
func_name
()
const
{
return
"sin"
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
class
Item_func_tan
:
public
Item_dec_func
class
Item_func_tan
:
public
Item_dec_func
...
@@ -604,7 +604,7 @@ public:
...
@@ -604,7 +604,7 @@ public:
Item_func_tan
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
Item_func_tan
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"tan"
;
}
const
char
*
func_name
()
const
{
return
"tan"
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
class
Item_func_integer
:
public
Item_int_func
class
Item_func_integer
:
public
Item_int_func
...
@@ -681,7 +681,7 @@ public:
...
@@ -681,7 +681,7 @@ public:
Item_func_sign
(
Item
*
a
)
:
Item_int_func
(
a
)
{}
Item_func_sign
(
Item
*
a
)
:
Item_int_func
(
a
)
{}
const
char
*
func_name
()
const
{
return
"sign"
;
}
const
char
*
func_name
()
const
{
return
"sign"
;
}
longlong
val_int
();
longlong
val_int
();
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
...
@@ -696,7 +696,7 @@ public:
...
@@ -696,7 +696,7 @@ public:
const
char
*
func_name
()
const
{
return
name
;
}
const
char
*
func_name
()
const
{
return
name
;
}
void
fix_length_and_dec
()
void
fix_length_and_dec
()
{
decimals
=
NOT_FIXED_DEC
;
max_length
=
float_length
(
decimals
);
}
{
decimals
=
NOT_FIXED_DEC
;
max_length
=
float_length
(
decimals
);
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
...
@@ -714,7 +714,7 @@ public:
...
@@ -714,7 +714,7 @@ public:
my_decimal
*
val_decimal
(
my_decimal
*
);
my_decimal
*
val_decimal
(
my_decimal
*
);
void
fix_length_and_dec
();
void
fix_length_and_dec
();
enum
Item_result
result_type
()
const
{
return
cmp_type
;
}
enum
Item_result
result_type
()
const
{
return
cmp_type
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
class
Item_func_min
:
public
Item_func_min_max
class
Item_func_min
:
public
Item_func_min_max
...
@@ -740,8 +740,7 @@ public:
...
@@ -740,8 +740,7 @@ public:
longlong
val_int
();
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"length"
;
}
const
char
*
func_name
()
const
{
return
"length"
;
}
void
fix_length_and_dec
()
{
max_length
=
10
;
}
void
fix_length_and_dec
()
{
max_length
=
10
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);}
};
};
class
Item_func_bit_length
:
public
Item_func_length
class
Item_func_bit_length
:
public
Item_func_length
...
@@ -761,8 +760,7 @@ public:
...
@@ -761,8 +760,7 @@ public:
longlong
val_int
();
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"char_length"
;
}
const
char
*
func_name
()
const
{
return
"char_length"
;
}
void
fix_length_and_dec
()
{
max_length
=
10
;
}
void
fix_length_and_dec
()
{
max_length
=
10
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);}
};
};
class
Item_func_coercibility
:
public
Item_int_func
class
Item_func_coercibility
:
public
Item_int_func
...
@@ -786,8 +784,7 @@ public:
...
@@ -786,8 +784,7 @@ public:
longlong
val_int
();
longlong
val_int
();
void
fix_length_and_dec
();
void
fix_length_and_dec
();
void
print
(
String
*
str
);
void
print
(
String
*
str
);
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);}
};
};
...
@@ -812,8 +809,7 @@ public:
...
@@ -812,8 +809,7 @@ public:
longlong
val_int
();
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"ascii"
;
}
const
char
*
func_name
()
const
{
return
"ascii"
;
}
void
fix_length_and_dec
()
{
max_length
=
3
;
}
void
fix_length_and_dec
()
{
max_length
=
3
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);}
};
};
class
Item_func_ord
:
public
Item_int_func
class
Item_func_ord
:
public
Item_int_func
...
@@ -823,8 +819,7 @@ public:
...
@@ -823,8 +819,7 @@ public:
Item_func_ord
(
Item
*
a
)
:
Item_int_func
(
a
)
{}
Item_func_ord
(
Item
*
a
)
:
Item_int_func
(
a
)
{}
longlong
val_int
();
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"ord"
;
}
const
char
*
func_name
()
const
{
return
"ord"
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);}
};
};
class
Item_func_find_in_set
:
public
Item_int_func
class
Item_func_find_in_set
:
public
Item_int_func
...
@@ -838,8 +833,7 @@ public:
...
@@ -838,8 +833,7 @@ public:
longlong
val_int
();
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"find_in_set"
;
}
const
char
*
func_name
()
const
{
return
"find_in_set"
;
}
void
fix_length_and_dec
();
void
fix_length_and_dec
();
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);}
};
};
/* Base class for all bit functions: '~', '|', '^', '&', '>>', '<<' */
/* Base class for all bit functions: '~', '|', '^', '&', '>>', '<<' */
...
@@ -851,7 +845,7 @@ public:
...
@@ -851,7 +845,7 @@ public:
Item_func_bit
(
Item
*
a
)
:
Item_int_func
(
a
)
{}
Item_func_bit
(
Item
*
a
)
:
Item_int_func
(
a
)
{}
void
fix_length_and_dec
()
{
unsigned_flag
=
1
;
}
void
fix_length_and_dec
()
{
unsigned_flag
=
1
;
}
void
print
(
String
*
str
)
{
print_op
(
str
);
}
void
print
(
String
*
str
)
{
print_op
(
str
);
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
class
Item_func_bit_or
:
public
Item_func_bit
class
Item_func_bit_or
:
public
Item_func_bit
...
@@ -877,7 +871,7 @@ public:
...
@@ -877,7 +871,7 @@ public:
longlong
val_int
();
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"bit_count"
;
}
const
char
*
func_name
()
const
{
return
"bit_count"
;
}
void
fix_length_and_dec
()
{
max_length
=
2
;
}
void
fix_length_and_dec
()
{
max_length
=
2
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
class
Item_func_shift_left
:
public
Item_func_bit
class
Item_func_shift_left
:
public
Item_func_bit
...
@@ -1314,7 +1308,7 @@ public:
...
@@ -1314,7 +1308,7 @@ public:
longlong
val_int
();
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"inet_aton"
;
}
const
char
*
func_name
()
const
{
return
"inet_aton"
;
}
void
fix_length_and_dec
()
{
decimals
=
0
;
max_length
=
21
;
maybe_null
=
1
;}
void
fix_length_and_dec
()
{
decimals
=
0
;
max_length
=
21
;
maybe_null
=
1
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
...
...
sql/item_strfunc.h
View file @
032d208b
...
@@ -47,8 +47,7 @@ public:
...
@@ -47,8 +47,7 @@ public:
String
*
val_str
(
String
*
);
String
*
val_str
(
String
*
);
void
fix_length_and_dec
();
void
fix_length_and_dec
();
const
char
*
func_name
()
const
{
return
"md5"
;
}
const
char
*
func_name
()
const
{
return
"md5"
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);}
};
};
...
@@ -89,8 +88,7 @@ public:
...
@@ -89,8 +88,7 @@ public:
String
*
val_str
(
String
*
);
String
*
val_str
(
String
*
);
void
fix_length_and_dec
();
void
fix_length_and_dec
();
const
char
*
func_name
()
const
{
return
"concat"
;
}
const
char
*
func_name
()
const
{
return
"concat"
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);}
};
};
class
Item_func_concat_ws
:
public
Item_str_func
class
Item_func_concat_ws
:
public
Item_str_func
...
@@ -111,8 +109,7 @@ public:
...
@@ -111,8 +109,7 @@ public:
String
*
val_str
(
String
*
);
String
*
val_str
(
String
*
);
void
fix_length_and_dec
();
void
fix_length_and_dec
();
const
char
*
func_name
()
const
{
return
"reverse"
;
}
const
char
*
func_name
()
const
{
return
"reverse"
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);}
};
};
...
@@ -150,8 +147,7 @@ protected:
...
@@ -150,8 +147,7 @@ protected:
public:
public:
Item_str_conv
(
Item
*
item
)
:
Item_str_func
(
item
)
{}
Item_str_conv
(
Item
*
item
)
:
Item_str_func
(
item
)
{}
String
*
val_str
(
String
*
);
String
*
val_str
(
String
*
);
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_binary_collation
(
int_arg
);}
};
};
...
@@ -419,8 +415,7 @@ public:
...
@@ -419,8 +415,7 @@ public:
String
*
val_str
(
String
*
);
String
*
val_str
(
String
*
);
void
fix_length_and_dec
();
void
fix_length_and_dec
();
const
char
*
func_name
()
const
{
return
"soundex"
;
}
const
char
*
func_name
()
const
{
return
"soundex"
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);}
};
};
...
@@ -528,8 +523,7 @@ public:
...
@@ -528,8 +523,7 @@ public:
String
*
val_str
(
String
*
);
String
*
val_str
(
String
*
);
void
fix_length_and_dec
();
void
fix_length_and_dec
();
const
char
*
func_name
()
const
{
return
"rpad"
;
}
const
char
*
func_name
()
const
{
return
"rpad"
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);}
};
};
...
@@ -542,8 +536,7 @@ public:
...
@@ -542,8 +536,7 @@ public:
String
*
val_str
(
String
*
);
String
*
val_str
(
String
*
);
void
fix_length_and_dec
();
void
fix_length_and_dec
();
const
char
*
func_name
()
const
{
return
"lpad"
;
}
const
char
*
func_name
()
const
{
return
"lpad"
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);}
};
};
...
@@ -558,8 +551,7 @@ public:
...
@@ -558,8 +551,7 @@ public:
collation
.
set
(
default_charset
());
collation
.
set
(
default_charset
());
max_length
=
64
;
max_length
=
64
;
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);}
};
};
...
@@ -576,8 +568,7 @@ public:
...
@@ -576,8 +568,7 @@ public:
decimals
=
0
;
decimals
=
0
;
max_length
=
args
[
0
]
->
max_length
*
2
*
collation
.
collation
->
mbmaxlen
;
max_length
=
args
[
0
]
->
max_length
*
2
*
collation
.
collation
->
mbmaxlen
;
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_binary_collation
(
int_arg
);}
};
};
class
Item_func_unhex
:
public
Item_str_func
class
Item_func_unhex
:
public
Item_str_func
...
@@ -593,8 +584,7 @@ public:
...
@@ -593,8 +584,7 @@ public:
decimals
=
0
;
decimals
=
0
;
max_length
=
(
1
+
args
[
0
]
->
max_length
)
/
2
;
max_length
=
(
1
+
args
[
0
]
->
max_length
)
/
2
;
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_binary_collation
(
int_arg
);}
};
};
...
@@ -618,8 +608,7 @@ public:
...
@@ -618,8 +608,7 @@ public:
}
}
void
print
(
String
*
str
);
void
print
(
String
*
str
);
const
char
*
func_name
()
const
{
return
"cast_as_binary"
;
}
const
char
*
func_name
()
const
{
return
"cast_as_binary"
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);}
};
};
...
@@ -659,7 +648,7 @@ public:
...
@@ -659,7 +648,7 @@ public:
String
*
val_str
(
String
*
str
);
String
*
val_str
(
String
*
str
);
const
char
*
func_name
()
const
{
return
"inet_ntoa"
;
}
const
char
*
func_name
()
const
{
return
"inet_ntoa"
;
}
void
fix_length_and_dec
()
{
decimals
=
0
;
max_length
=
3
*
8
+
7
;
}
void
fix_length_and_dec
()
{
decimals
=
0
;
max_length
=
3
*
8
+
7
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
class
Item_func_quote
:
public
Item_str_func
class
Item_func_quote
:
public
Item_str_func
...
@@ -674,7 +663,7 @@ public:
...
@@ -674,7 +663,7 @@ public:
collation
.
set
(
args
[
0
]
->
collation
);
collation
.
set
(
args
[
0
]
->
collation
);
max_length
=
args
[
0
]
->
max_length
*
2
+
2
;
max_length
=
args
[
0
]
->
max_length
*
2
+
2
;
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
};
};
class
Item_func_conv_charset
:
public
Item_str_func
class
Item_func_conv_charset
:
public
Item_str_func
...
@@ -775,8 +764,7 @@ public:
...
@@ -775,8 +764,7 @@ public:
const
char
*
func_name
()
const
{
return
"crc32"
;
}
const
char
*
func_name
()
const
{
return
"crc32"
;
}
void
fix_length_and_dec
()
{
max_length
=
10
;
}
void
fix_length_and_dec
()
{
max_length
=
10
;
}
longlong
val_int
();
longlong
val_int
();
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);}
};
};
class
Item_func_uncompressed_length
:
public
Item_int_func
class
Item_func_uncompressed_length
:
public
Item_int_func
...
...
sql/item_timefunc.h
View file @
032d208b
...
@@ -39,7 +39,7 @@ public:
...
@@ -39,7 +39,7 @@ public:
{
{
max_length
=
6
*
MY_CHARSET_BIN_MB_MAXLEN
;
max_length
=
6
*
MY_CHARSET_BIN_MB_MAXLEN
;
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -54,7 +54,7 @@ public:
...
@@ -54,7 +54,7 @@ public:
decimals
=
0
;
decimals
=
0
;
max_length
=
6
*
MY_CHARSET_BIN_MB_MAXLEN
;
max_length
=
6
*
MY_CHARSET_BIN_MB_MAXLEN
;
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -71,7 +71,7 @@ public:
...
@@ -71,7 +71,7 @@ public:
maybe_null
=
1
;
maybe_null
=
1
;
}
}
enum_monotonicity_info
get_monotonicity_info
()
const
;
enum_monotonicity_info
get_monotonicity_info
()
const
;
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -87,7 +87,7 @@ public:
...
@@ -87,7 +87,7 @@ public:
max_length
=
2
*
MY_CHARSET_BIN_MB_MAXLEN
;
max_length
=
2
*
MY_CHARSET_BIN_MB_MAXLEN
;
maybe_null
=
1
;
maybe_null
=
1
;
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -112,7 +112,7 @@ public:
...
@@ -112,7 +112,7 @@ public:
max_length
=
2
*
MY_CHARSET_BIN_MB_MAXLEN
;
max_length
=
2
*
MY_CHARSET_BIN_MB_MAXLEN
;
maybe_null
=
1
;
maybe_null
=
1
;
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -145,7 +145,7 @@ public:
...
@@ -145,7 +145,7 @@ public:
max_length
=
3
*
MY_CHARSET_BIN_MB_MAXLEN
;
max_length
=
3
*
MY_CHARSET_BIN_MB_MAXLEN
;
maybe_null
=
1
;
maybe_null
=
1
;
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -161,7 +161,7 @@ public:
...
@@ -161,7 +161,7 @@ public:
max_length
=
2
*
MY_CHARSET_BIN_MB_MAXLEN
;
max_length
=
2
*
MY_CHARSET_BIN_MB_MAXLEN
;
maybe_null
=
1
;
maybe_null
=
1
;
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -177,7 +177,7 @@ public:
...
@@ -177,7 +177,7 @@ public:
max_length
=
2
*
MY_CHARSET_BIN_MB_MAXLEN
;
max_length
=
2
*
MY_CHARSET_BIN_MB_MAXLEN
;
maybe_null
=
1
;
maybe_null
=
1
;
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -193,7 +193,7 @@ public:
...
@@ -193,7 +193,7 @@ public:
max_length
=
1
*
MY_CHARSET_BIN_MB_MAXLEN
;
max_length
=
1
*
MY_CHARSET_BIN_MB_MAXLEN
;
maybe_null
=
1
;
maybe_null
=
1
;
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -209,7 +209,7 @@ public:
...
@@ -209,7 +209,7 @@ public:
max_length
=
2
*
MY_CHARSET_BIN_MB_MAXLEN
;
max_length
=
2
*
MY_CHARSET_BIN_MB_MAXLEN
;
maybe_null
=
1
;
maybe_null
=
1
;
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -225,7 +225,7 @@ public:
...
@@ -225,7 +225,7 @@ public:
max_length
=
2
*
MY_CHARSET_BIN_MB_MAXLEN
;
max_length
=
2
*
MY_CHARSET_BIN_MB_MAXLEN
;
maybe_null
=
1
;
maybe_null
=
1
;
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_func_yearweek
:
public
Item_int_func
class
Item_func_yearweek
:
public
Item_int_func
...
@@ -240,7 +240,7 @@ public:
...
@@ -240,7 +240,7 @@ public:
max_length
=
6
*
MY_CHARSET_BIN_MB_MAXLEN
;
max_length
=
6
*
MY_CHARSET_BIN_MB_MAXLEN
;
maybe_null
=
1
;
maybe_null
=
1
;
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -257,7 +257,7 @@ public:
...
@@ -257,7 +257,7 @@ public:
max_length
=
4
*
MY_CHARSET_BIN_MB_MAXLEN
;
max_length
=
4
*
MY_CHARSET_BIN_MB_MAXLEN
;
maybe_null
=
1
;
maybe_null
=
1
;
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -287,7 +287,7 @@ public:
...
@@ -287,7 +287,7 @@ public:
max_length
=
1
*
MY_CHARSET_BIN_MB_MAXLEN
;
max_length
=
1
*
MY_CHARSET_BIN_MB_MAXLEN
;
maybe_null
=
1
;
maybe_null
=
1
;
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_func_dayname
:
public
Item_func_weekday
class
Item_func_dayname
:
public
Item_func_weekday
...
@@ -320,7 +320,7 @@ public:
...
@@ -320,7 +320,7 @@ public:
decimals
=
0
;
decimals
=
0
;
max_length
=
10
*
MY_CHARSET_BIN_MB_MAXLEN
;
max_length
=
10
*
MY_CHARSET_BIN_MB_MAXLEN
;
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -335,7 +335,7 @@ public:
...
@@ -335,7 +335,7 @@ public:
decimals
=
0
;
decimals
=
0
;
max_length
=
10
*
MY_CHARSET_BIN_MB_MAXLEN
;
max_length
=
10
*
MY_CHARSET_BIN_MB_MAXLEN
;
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -545,7 +545,7 @@ public:
...
@@ -545,7 +545,7 @@ public:
Item_func_from_days
(
Item
*
a
)
:
Item_date
(
a
)
{}
Item_func_from_days
(
Item
*
a
)
:
Item_date
(
a
)
{}
const
char
*
func_name
()
const
{
return
"from_days"
;
}
const
char
*
func_name
()
const
{
return
"from_days"
;
}
bool
get_date
(
TIME
*
res
,
uint
fuzzy_date
);
bool
get_date
(
TIME
*
res
,
uint
fuzzy_date
);
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -563,7 +563,7 @@ public:
...
@@ -563,7 +563,7 @@ public:
void
fix_length_and_dec
();
void
fix_length_and_dec
();
uint
format_length
(
const
String
*
format
);
uint
format_length
(
const
String
*
format
);
bool
eq
(
const
Item
*
item
,
bool
binary_cmp
)
const
;
bool
eq
(
const
Item
*
item
,
bool
binary_cmp
)
const
;
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -582,7 +582,7 @@ class Item_func_from_unixtime :public Item_date_func
...
@@ -582,7 +582,7 @@ class Item_func_from_unixtime :public Item_date_func
const
char
*
func_name
()
const
{
return
"from_unixtime"
;
}
const
char
*
func_name
()
const
{
return
"from_unixtime"
;
}
void
fix_length_and_dec
();
void
fix_length_and_dec
();
bool
get_date
(
TIME
*
res
,
uint
fuzzy_date
);
bool
get_date
(
TIME
*
res
,
uint
fuzzy_date
);
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -651,7 +651,7 @@ public:
...
@@ -651,7 +651,7 @@ public:
return
tmp_table_field_from_field_type
(
table
,
0
);
return
tmp_table_field_from_field_type
(
table
,
0
);
}
}
bool
result_as_longlong
()
{
return
TRUE
;
}
bool
result_as_longlong
()
{
return
TRUE
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -674,7 +674,7 @@ public:
...
@@ -674,7 +674,7 @@ public:
bool
get_date
(
TIME
*
res
,
uint
fuzzy_date
);
bool
get_date
(
TIME
*
res
,
uint
fuzzy_date
);
bool
eq
(
const
Item
*
item
,
bool
binary_cmp
)
const
;
bool
eq
(
const
Item
*
item
,
bool
binary_cmp
)
const
;
void
print
(
String
*
str
);
void
print
(
String
*
str
);
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -692,8 +692,7 @@ class Item_extract :public Item_int_func
...
@@ -692,8 +692,7 @@ class Item_extract :public Item_int_func
void
fix_length_and_dec
();
void
fix_length_and_dec
();
bool
eq
(
const
Item
*
item
,
bool
binary_cmp
)
const
;
bool
eq
(
const
Item
*
item
,
bool
binary_cmp
)
const
;
void
print
(
String
*
str
);
void
print
(
String
*
str
);
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
{
return
safe_for_single_char_collation
(
int_arg
);
}
};
};
...
@@ -730,7 +729,7 @@ public:
...
@@ -730,7 +729,7 @@ public:
max_length
=
args
[
0
]
->
max_length
;
max_length
=
args
[
0
]
->
max_length
;
maybe_null
=
1
;
maybe_null
=
1
;
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -750,8 +749,7 @@ public:
...
@@ -750,8 +749,7 @@ public:
String
*
val_str
(
String
*
a
);
String
*
val_str
(
String
*
a
);
void
fix_length_and_dec
();
void
fix_length_and_dec
();
void
print
(
String
*
str
);
void
print
(
String
*
str
);
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
{
return
safe_for_single_char_collation
(
int_arg
);
}
};
};
...
@@ -831,7 +829,7 @@ public:
...
@@ -831,7 +829,7 @@ public:
}
}
bool
result_as_longlong
()
{
return
TRUE
;
}
bool
result_as_longlong
()
{
return
TRUE
;
}
longlong
val_int
();
longlong
val_int
();
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -854,7 +852,7 @@ public:
...
@@ -854,7 +852,7 @@ public:
}
}
void
print
(
String
*
str
);
void
print
(
String
*
str
);
const
char
*
func_name
()
const
{
return
"add_time"
;
}
const
char
*
func_name
()
const
{
return
"add_time"
;
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_func_timediff
:
public
Item_str_func
class
Item_func_timediff
:
public
Item_str_func
...
@@ -894,7 +892,7 @@ public:
...
@@ -894,7 +892,7 @@ public:
{
{
return
tmp_table_field_from_field_type
(
table
,
0
);
return
tmp_table_field_from_field_type
(
table
,
0
);
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_func_microsecond
:
public
Item_int_func
class
Item_func_microsecond
:
public
Item_int_func
...
@@ -908,7 +906,7 @@ public:
...
@@ -908,7 +906,7 @@ public:
decimals
=
0
;
decimals
=
0
;
maybe_null
=
1
;
maybe_null
=
1
;
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -926,7 +924,7 @@ public:
...
@@ -926,7 +924,7 @@ public:
maybe_null
=
1
;
maybe_null
=
1
;
}
}
void
print
(
String
*
str
);
void
print
(
String
*
str
);
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -973,7 +971,7 @@ public:
...
@@ -973,7 +971,7 @@ public:
{
{
return
tmp_table_field_from_field_type
(
table
,
1
);
return
tmp_table_field_from_field_type
(
table
,
1
);
}
}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
0
;}
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;}
};
};
...
...
sql/item_xmlfunc.h
View file @
032d208b
...
@@ -42,8 +42,7 @@ public:
...
@@ -42,8 +42,7 @@ public:
Item_func_xml_extractvalue
(
Item
*
a
,
Item
*
b
)
:
Item_xml_str_func
(
a
,
b
)
{}
Item_func_xml_extractvalue
(
Item
*
a
,
Item
*
b
)
:
Item_xml_str_func
(
a
,
b
)
{}
const
char
*
func_name
()
const
{
return
"extractvalue"
;
}
const
char
*
func_name
()
const
{
return
"extractvalue"
;
}
String
*
val_str
(
String
*
);
String
*
val_str
(
String
*
);
bool
check_partition_func_processor
(
byte
*
int_arg
)
bool
check_partition_func_processor
(
byte
*
int_arg
)
{
return
FALSE
;
}
{
return
safe_for_single_char_collation
(
int_arg
);}
};
};
...
...
sql/partition_info.cc
View file @
032d208b
...
@@ -718,25 +718,26 @@ bool partition_info::check_partition_info(THD *thd, handlerton **eng_type,
...
@@ -718,25 +718,26 @@ bool partition_info::check_partition_info(THD *thd, handlerton **eng_type,
uint
i
,
tot_partitions
;
uint
i
,
tot_partitions
;
bool
result
=
TRUE
;
bool
result
=
TRUE
;
char
*
same_name
;
char
*
same_name
;
int
part_expression_ok
=
PF_SAFE
;
DBUG_ENTER
(
"partition_info::check_partition_info"
);
DBUG_ENTER
(
"partition_info::check_partition_info"
);
pf_collation_allowed
=
PF_SAFE
;
spf_collation_allowed
=
PF_SAFE
;
if
(
check_partition_function
)
if
(
check_partition_function
)
{
{
int
part_expression_ok
=
1
;
int
pf_collation_allowed
=
1
;
int
spf_collation_allowed
=
1
;
if
(
part_type
!=
HASH_PARTITION
||
!
list_of_part_fields
)
if
(
part_type
!=
HASH_PARTITION
||
!
list_of_part_fields
)
{
{
part_expr
->
walk
(
&
Item
::
check_partition_func_processor
,
0
,
part_expr
->
walk
(
&
Item
::
check_partition_func_processor
,
0
,
(
byte
*
)(
&
part_expression_ok
));
(
byte
*
)(
&
part_expression_ok
));
pf_collation_allowed
=
(
char
)
part_expression_ok
;
pf_collation_allowed
=
part_expression_ok
;
part_expression_ok
=
PF_SAFE
;
part_expression_ok
=
1
;
if
(
is_sub_partitioned
()
&&
!
list_of_subpart_fields
)
if
(
is_sub_partitioned
()
&&
!
list_of_subpart_fields
)
{
{
subpart_expr
->
walk
(
&
Item
::
check_partition_func_processor
,
0
,
subpart_expr
->
walk
(
&
Item
::
check_partition_func_processor
,
0
,
(
byte
*
)(
&
part_expression_ok
));
(
byte
*
)(
&
part_expression_ok
));
}
}
spf_collation_allowed
=
(
char
)
part_expression_ok
;
spf_collation_allowed
=
part_expression_ok
;
}
}
if
(
!
pf_collation_allowed
||
if
(
!
pf_collation_allowed
||
!
spf_collation_allowed
)
!
spf_collation_allowed
)
...
...
sql/partition_info.h
View file @
032d208b
...
@@ -188,8 +188,6 @@ public:
...
@@ -188,8 +188,6 @@ public:
bool
is_auto_partitioned
;
bool
is_auto_partitioned
;
bool
from_openfrm
;
bool
from_openfrm
;
bool
has_null_value
;
bool
has_null_value
;
char
pf_collation_allowed
;
char
spf_collation_allowed
;
partition_info
()
partition_info
()
...
@@ -219,9 +217,7 @@ public:
...
@@ -219,9 +217,7 @@ public:
list_of_part_fields
(
FALSE
),
list_of_subpart_fields
(
FALSE
),
list_of_part_fields
(
FALSE
),
list_of_subpart_fields
(
FALSE
),
linear_hash_ind
(
FALSE
),
fixed
(
FALSE
),
linear_hash_ind
(
FALSE
),
fixed
(
FALSE
),
is_auto_partitioned
(
FALSE
),
from_openfrm
(
FALSE
),
is_auto_partitioned
(
FALSE
),
from_openfrm
(
FALSE
),
has_null_value
(
FALSE
),
has_null_value
(
FALSE
)
pf_collation_allowed
(
0
),
spf_collation_allowed
(
0
)
{
{
all_fields_in_PF
.
clear_all
();
all_fields_in_PF
.
clear_all
();
all_fields_in_PPF
.
clear_all
();
all_fields_in_PPF
.
clear_all
();
...
...
sql/sql_partition.cc
View file @
032d208b
...
@@ -1376,7 +1376,7 @@ static uint32 get_part_id_from_linear_hash(longlong hash_value, uint mask,
...
@@ -1376,7 +1376,7 @@ static uint32 get_part_id_from_linear_hash(longlong hash_value, uint mask,
Check that partition function do not contain any forbidden
Check that partition function do not contain any forbidden
character sets and collations.
character sets and collations.
SYNOPSIS
SYNOPSIS
check_part_func_
collation
()
check_part_func_
fields
()
part_info Partition info
part_info Partition info
ptr Array of Field pointers
ptr Array of Field pointers
RETURN VALUES
RETURN VALUES
...
@@ -1384,19 +1384,24 @@ static uint32 get_part_id_from_linear_hash(longlong hash_value, uint mask,
...
@@ -1384,19 +1384,24 @@ static uint32 get_part_id_from_linear_hash(longlong hash_value, uint mask,
TRUE Error
TRUE Error
*/
*/
static
bool
check_part_func_collation
(
int
collation_allowed
,
static
bool
check_part_func_fields
(
Field
**
ptr
)
Field
**
ptr
)
{
{
Field
*
field
;
Field
*
field
;
while
((
field
=
*
(
ptr
++
)))
while
((
field
=
*
(
ptr
++
)))
{
{
if
(
field
->
result_type
()
==
STRING_RESULT
)
/*
For CHAR/VARCHAR fields we need to take special precautions.
Binary collation with CHAR is automatically supported. Other
types need some kind of standardisation function handling
*/
if
(
field
->
type
()
==
MYSQL_TYPE_STRING
||
field
->
type
()
==
MYSQL_TYPE_VARCHAR
)
{
{
CHARSET_INFO
*
cs
=
((
Field_str
*
)
field
)
->
charset
();
CHARSET_INFO
*
cs
=
((
Field_str
*
)
field
)
->
charset
();
if
(
use_strnxfrm
(
cs
)
||
if
(
field
->
type
()
==
MYSQL_TYPE_STRING
&&
(
collation_allowed
==
PF_SAFE_BINARY_COLLATION
&&
cs
->
state
&
MY_CS_BINSORT
)
(
!
(
cs
->
state
&
MY_CS_BINSORT
))))
return
FALSE
;
return
TRUE
;
return
TRUE
;
}
}
}
}
return
FALSE
;
return
FALSE
;
...
@@ -1548,13 +1553,9 @@ bool fix_partition_func(THD *thd, TABLE *table,
...
@@ -1548,13 +1553,9 @@ bool fix_partition_func(THD *thd, TABLE *table,
goto
end
;
goto
end
;
}
}
}
}
if
(((
part_info
->
pf_collation_allowed
!=
PF_SAFE
)
&&
if
((
check_part_func_fields
(
part_info
->
part_field_array
))
||
check_part_func_collation
(
part_info
->
pf_collation_allowed
,
part_info
->
part_field_array
))
||
(
part_info
->
is_sub_partitioned
()
&&
(
part_info
->
is_sub_partitioned
()
&&
part_info
->
spf_collation_allowed
!=
PF_SAFE
&&
check_part_func_fields
(
part_info
->
subpart_field_array
)))
check_part_func_collation
(
part_info
->
spf_collation_allowed
,
part_info
->
subpart_field_array
)))
{
{
my_error
(
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
,
MYF
(
0
));
my_error
(
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
,
MYF
(
0
));
goto
end
;
goto
end
;
...
...
sql/sql_yacc.yy
View file @
032d208b
...
@@ -3619,7 +3619,7 @@ part_bit_expr:
...
@@ -3619,7 +3619,7 @@ part_bit_expr:
{
{
Item *part_expr= $1;
Item *part_expr= $1;
bool not_corr_func;
bool not_corr_func;
bool part_expression_ok= TRUE
;
int part_expression_ok= 1
;
LEX *lex= Lex;
LEX *lex= Lex;
THD *thd= YYTHD;
THD *thd= YYTHD;
longlong item_value;
longlong item_value;
...
...
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