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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
a8caa8e0
Commit
a8caa8e0
authored
May 20, 2017
by
Alexander Barkov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
MDEV-12854 Synchronize CREATE..SELECT data type and result set metadata data type for INT functions
parent
d2fec340
Changes
33
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
33 changed files
with
800 additions
and
227 deletions
+800
-227
mysql-test/r/ctype_binary.result
mysql-test/r/ctype_binary.result
+5
-5
mysql-test/r/ctype_cp1251.result
mysql-test/r/ctype_cp1251.result
+5
-5
mysql-test/r/ctype_latin1.result
mysql-test/r/ctype_latin1.result
+5
-5
mysql-test/r/ctype_ucs.result
mysql-test/r/ctype_ucs.result
+5
-5
mysql-test/r/ctype_utf8.result
mysql-test/r/ctype_utf8.result
+5
-5
mysql-test/r/func_json.result
mysql-test/r/func_json.result
+26
-0
mysql-test/r/func_misc.result
mysql-test/r/func_misc.result
+11
-0
mysql-test/r/gis.result
mysql-test/r/gis.result
+23
-0
mysql-test/r/metadata.result
mysql-test/r/metadata.result
+136
-0
mysql-test/suite/compat/oracle/r/func_misc.result
mysql-test/suite/compat/oracle/r/func_misc.result
+11
-0
mysql-test/suite/compat/oracle/r/sp-cursor.result
mysql-test/suite/compat/oracle/r/sp-cursor.result
+23
-1
mysql-test/suite/compat/oracle/r/sp.result
mysql-test/suite/compat/oracle/r/sp.result
+8
-0
mysql-test/suite/compat/oracle/t/func_misc.test
mysql-test/suite/compat/oracle/t/func_misc.test
+15
-0
mysql-test/suite/compat/oracle/t/sp-cursor.test
mysql-test/suite/compat/oracle/t/sp-cursor.test
+23
-0
mysql-test/suite/compat/oracle/t/sp.test
mysql-test/suite/compat/oracle/t/sp.test
+11
-0
mysql-test/suite/sql_sequence/next.result
mysql-test/suite/sql_sequence/next.result
+13
-0
mysql-test/suite/sql_sequence/next.test
mysql-test/suite/sql_sequence/next.test
+14
-0
mysql-test/suite/sql_sequence/setval.result
mysql-test/suite/sql_sequence/setval.result
+10
-0
mysql-test/suite/sql_sequence/setval.test
mysql-test/suite/sql_sequence/setval.test
+13
-0
mysql-test/t/func_json.test
mysql-test/t/func_json.test
+23
-0
mysql-test/t/func_misc.test
mysql-test/t/func_misc.test
+16
-0
mysql-test/t/gis.test
mysql-test/t/gis.test
+19
-0
mysql-test/t/metadata.test
mysql-test/t/metadata.test
+74
-0
sql/item_cmpfunc.cc
sql/item_cmpfunc.cc
+1
-0
sql/item_cmpfunc.h
sql/item_cmpfunc.h
+73
-6
sql/item_func.cc
sql/item_func.cc
+12
-11
sql/item_func.h
sql/item_func.h
+144
-112
sql/item_geofunc.h
sql/item_geofunc.h
+17
-16
sql/item_inetfunc.h
sql/item_inetfunc.h
+2
-2
sql/item_jsonfunc.cc
sql/item_jsonfunc.cc
+4
-3
sql/item_jsonfunc.h
sql/item_jsonfunc.h
+14
-15
sql/item_strfunc.h
sql/item_strfunc.h
+4
-4
sql/item_timefunc.h
sql/item_timefunc.h
+35
-32
No files found.
mysql-test/r/ctype_binary.result
View file @
a8caa8e0
...
...
@@ -382,7 +382,7 @@ create table t1 as select concat(sign(0.5)) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varbinary(2
1
) DEFAULT NULL
`c1` varbinary(2) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
create table t1 as select concat(rand()) as c1;
...
...
@@ -419,7 +419,7 @@ create table t1 as select concat(bit_length('a')) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varbinary(1
0
) DEFAULT NULL
`c1` varbinary(1
1
) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
select hex(concat(coercibility('a')));
...
...
@@ -469,7 +469,7 @@ create table t1 as select concat(ord(61)) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varbinary(
21
) DEFAULT NULL
`c1` varbinary(
7
) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
select hex(concat(find_in_set('b','a,b,c,d')));
...
...
@@ -696,7 +696,7 @@ create table t1 as select concat(sleep(0)) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varbinary(
2
1) DEFAULT NULL
`c1` varbinary(1) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
select hex(concat(is_free_lock('xxxx')));
...
...
@@ -1447,7 +1447,7 @@ create table t1 as select concat(microsecond('12:00:00.123456')) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varbinary(
21
) DEFAULT NULL
`c1` varbinary(
6
) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
select hex(concat(month(20090224)));
...
...
mysql-test/r/ctype_cp1251.result
View file @
a8caa8e0
...
...
@@ -791,7 +791,7 @@ create table t1 as select concat(sign(0.5)) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varchar(2
1
) CHARACTER SET cp1251 DEFAULT NULL
`c1` varchar(2) CHARACTER SET cp1251 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
create table t1 as select concat(rand()) as c1;
...
...
@@ -828,7 +828,7 @@ create table t1 as select concat(bit_length('a')) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varchar(1
0
) CHARACTER SET cp1251 DEFAULT NULL
`c1` varchar(1
1
) CHARACTER SET cp1251 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
select hex(concat(coercibility('a')));
...
...
@@ -878,7 +878,7 @@ create table t1 as select concat(ord(61)) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varchar(
21
) CHARACTER SET cp1251 DEFAULT NULL
`c1` varchar(
7
) CHARACTER SET cp1251 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
select hex(concat(find_in_set('b','a,b,c,d')));
...
...
@@ -1105,7 +1105,7 @@ create table t1 as select concat(sleep(0)) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varchar(
2
1) CHARACTER SET cp1251 DEFAULT NULL
`c1` varchar(1) CHARACTER SET cp1251 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
select hex(concat(is_free_lock('xxxx')));
...
...
@@ -1856,7 +1856,7 @@ create table t1 as select concat(microsecond('12:00:00.123456')) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varchar(
21
) CHARACTER SET cp1251 DEFAULT NULL
`c1` varchar(
6
) CHARACTER SET cp1251 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
select hex(concat(month(20090224)));
...
...
mysql-test/r/ctype_latin1.result
View file @
a8caa8e0
...
...
@@ -1088,7 +1088,7 @@ create table t1 as select concat(sign(0.5)) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varchar(2
1
) DEFAULT NULL
`c1` varchar(2) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
create table t1 as select concat(rand()) as c1;
...
...
@@ -1125,7 +1125,7 @@ create table t1 as select concat(bit_length('a')) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varchar(1
0
) DEFAULT NULL
`c1` varchar(1
1
) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
select hex(concat(coercibility('a')));
...
...
@@ -1175,7 +1175,7 @@ create table t1 as select concat(ord(61)) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varchar(
21
) DEFAULT NULL
`c1` varchar(
7
) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
select hex(concat(find_in_set('b','a,b,c,d')));
...
...
@@ -1402,7 +1402,7 @@ create table t1 as select concat(sleep(0)) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varchar(
2
1) DEFAULT NULL
`c1` varchar(1) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
select hex(concat(is_free_lock('xxxx')));
...
...
@@ -2153,7 +2153,7 @@ create table t1 as select concat(microsecond('12:00:00.123456')) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varchar(
21
) DEFAULT NULL
`c1` varchar(
6
) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
select hex(concat(month(20090224)));
...
...
mysql-test/r/ctype_ucs.result
View file @
a8caa8e0
...
...
@@ -1967,7 +1967,7 @@ create table t1 as select concat(sign(0.5)) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varchar(2
1
) CHARACTER SET ucs2 DEFAULT NULL
`c1` varchar(2) CHARACTER SET ucs2 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
create table t1 as select concat(rand()) as c1;
...
...
@@ -2004,7 +2004,7 @@ create table t1 as select concat(bit_length('a')) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varchar(1
0
) CHARACTER SET ucs2 DEFAULT NULL
`c1` varchar(1
1
) CHARACTER SET ucs2 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
select hex(concat(coercibility('a')));
...
...
@@ -2054,7 +2054,7 @@ create table t1 as select concat(ord(61)) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varchar(
21
) CHARACTER SET ucs2 DEFAULT NULL
`c1` varchar(
7
) CHARACTER SET ucs2 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
select hex(concat(find_in_set('b','a,b,c,d')));
...
...
@@ -2281,7 +2281,7 @@ create table t1 as select concat(sleep(0)) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varchar(
2
1) CHARACTER SET ucs2 DEFAULT NULL
`c1` varchar(1) CHARACTER SET ucs2 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
select hex(concat(is_free_lock('xxxx')));
...
...
@@ -3032,7 +3032,7 @@ create table t1 as select concat(microsecond('12:00:00.123456')) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varchar(
21
) CHARACTER SET ucs2 DEFAULT NULL
`c1` varchar(
6
) CHARACTER SET ucs2 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
select hex(concat(month(20090224)));
...
...
mysql-test/r/ctype_utf8.result
View file @
a8caa8e0
...
...
@@ -2839,7 +2839,7 @@ create table t1 as select concat(sign(0.5)) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varchar(2
1
) CHARACTER SET utf8 DEFAULT NULL
`c1` varchar(2) CHARACTER SET utf8 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
create table t1 as select concat(rand()) as c1;
...
...
@@ -2876,7 +2876,7 @@ create table t1 as select concat(bit_length('a')) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varchar(1
0
) CHARACTER SET utf8 DEFAULT NULL
`c1` varchar(1
1
) CHARACTER SET utf8 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
select hex(concat(coercibility('a')));
...
...
@@ -2926,7 +2926,7 @@ create table t1 as select concat(ord(61)) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varchar(
21
) CHARACTER SET utf8 DEFAULT NULL
`c1` varchar(
7
) CHARACTER SET utf8 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
select hex(concat(find_in_set('b','a,b,c,d')));
...
...
@@ -3153,7 +3153,7 @@ create table t1 as select concat(sleep(0)) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varchar(
2
1) CHARACTER SET utf8 DEFAULT NULL
`c1` varchar(1) CHARACTER SET utf8 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
select hex(concat(is_free_lock('xxxx')));
...
...
@@ -3904,7 +3904,7 @@ create table t1 as select concat(microsecond('12:00:00.123456')) as c1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varchar(
21
) CHARACTER SET utf8 DEFAULT NULL
`c1` varchar(
6
) CHARACTER SET utf8 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
select hex(concat(month(20090224)));
...
...
mysql-test/r/func_json.result
View file @
a8caa8e0
...
...
@@ -642,3 +642,29 @@ SELECT JSON_KEYS(f) FROM t1 ORDER BY 1;
JSON_KEYS(f)
NULL
DROP TABLE t1;
#
# Start of 10.3 tests
#
#
# MDEV-12854 Synchronize CREATE..SELECT data type and result set metadata data type for INT functions
#
SELECT
JSON_VALID('{"id": 1, "name": "Monty"}') AS json_valid,
JSON_EXISTS('{"key1":"xxxx", "key2":[1, 2, 3]}', "$.key2") AS json_exists,
JSON_CONTAINS('{"A": 0, "B": {"C": 1}, "D": 2}', '2', '$.A') AS ison_contains,
JSON_CONTAINS_PATH('{"A": 1, "B": [2], "C": [3, 4]}', 'one', '$.A', '$.D') AS json_contains_path;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def json_valid 3 1 1 Y 32896 0 63
def json_exists 3 1 1 Y 32896 0 63
def ison_contains 3 1 1 Y 32896 0 63
def json_contains_path 3 1 1 Y 32896 0 63
json_valid json_exists ison_contains json_contains_path
1 1 0 1
SELECT
JSON_LENGTH('{"a": 1, "b": {"c": 30}}') AS json_length,
JSON_DEPTH('[10, {"a": 20}]') AS json_depnth;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def json_length 3 10 1 Y 32896 0 63
def json_depnth 3 10 1 N 32897 0 63
json_length json_depnth
2 3
mysql-test/r/func_misc.result
View file @
a8caa8e0
...
...
@@ -1494,3 +1494,14 @@ DROP TABLE t1;
#
# End of 10.2 tests
#
#
# Start of 10.3 tests
#
#
# MDEV-12854 Synchronize CREATE..SELECT data type and result set metadata data type for INT functions
#
SELECT INET_ATON("255.255.255.255.255.255.255.255");
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def INET_ATON("255.255.255.255.255.255.255.255") 8 21 20 Y 32928 0 63
INET_ATON("255.255.255.255.255.255.255.255")
18446744073709551615
mysql-test/r/gis.result
View file @
a8caa8e0
...
...
@@ -4318,5 +4318,28 @@ t1 CREATE TABLE `t1` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# MDEV-12854 Synchronize CREATE..SELECT data type and result set metadata data type for INT functions
#
SELECT
ST_ISSIMPLE(POINT(1,1)),
ST_ISRING(POINT(1,1)),
ST_ISCLOSED(POINT(1,1)),
ST_DIMENSION(POINT(1,1)),
ST_NUMGEOMETRIES(POINT(1,1)),
ST_NUMINTERIORRINGS(POINT(1,1)),
ST_NUMPOINTS(POINT(1,1)),
ST_SRID(POINT(1,1));
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def ST_ISSIMPLE(POINT(1,1)) 3 2 1 Y 32896 0 63
def ST_ISRING(POINT(1,1)) 3 2 2 Y 32896 0 63
def ST_ISCLOSED(POINT(1,1)) 3 2 2 Y 32896 0 63
def ST_DIMENSION(POINT(1,1)) 3 10 1 Y 32896 0 63
def ST_NUMGEOMETRIES(POINT(1,1)) 3 10 0 Y 32896 0 63
def ST_NUMINTERIORRINGS(POINT(1,1)) 3 10 0 Y 32896 0 63
def ST_NUMPOINTS(POINT(1,1)) 3 10 0 Y 32896 0 63
def ST_SRID(POINT(1,1)) 3 10 1 Y 32896 0 63
ST_ISSIMPLE(POINT(1,1)) ST_ISRING(POINT(1,1)) ST_ISCLOSED(POINT(1,1)) ST_DIMENSION(POINT(1,1)) ST_NUMGEOMETRIES(POINT(1,1)) ST_NUMINTERIORRINGS(POINT(1,1)) ST_NUMPOINTS(POINT(1,1)) ST_SRID(POINT(1,1))
1 -1 -1 0 NULL NULL NULL 0
#
# End of 10.3 tests
#
mysql-test/r/metadata.result
View file @
a8caa8e0
...
...
@@ -400,3 +400,139 @@ def cast('01:01:01' as time) 11 10 8 Y 128 0 63
def cast('01:01:01' as time(2)) 11 13 11 Y 128 2 63
cast('01:01:01' as time) cast('01:01:01' as time(2))
01:01:01 01:01:01.00
#
# MDEV-12854 Synchronize CREATE..SELECT data type and result set metadata data type for INT functions
#
SELECT
STRCMP('a','b'),
OCTET_LENGTH('a'),
CHAR_LENGTH('a'),
COERCIBILITY('a'),
ASCII('a'),
ORD('a'),
CRC32('a'),
UNCOMPRESSED_LENGTH(COMPRESS('a'));
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def STRCMP('a','b') 3 2 2 N 32897 0 63
def OCTET_LENGTH('a') 3 10 1 N 32897 0 63
def CHAR_LENGTH('a') 3 10 1 N 32897 0 63
def COERCIBILITY('a') 3 10 1 N 32897 0 63
def ASCII('a') 3 3 2 N 32897 0 63
def ORD('a') 3 7 2 N 32897 0 63
def CRC32('a') 3 10 10 N 32929 0 63
def UNCOMPRESSED_LENGTH(COMPRESS('a')) 3 10 1 Y 32896 0 63
STRCMP('a','b') OCTET_LENGTH('a') CHAR_LENGTH('a') COERCIBILITY('a') ASCII('a') ORD('a') CRC32('a') UNCOMPRESSED_LENGTH(COMPRESS('a'))
-1 1 1 4 97 97 3904355907 1
SELECT
INTERVAL(2,1,2,3),
REGEXP_INSTR('a','a'),
LOCATE('a','a'),
FIND_IN_SET('b','a,b,c,d'),
FIELD('a','a','b');
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def INTERVAL(2,1,2,3) 3 2 1 N 32897 0 63
def REGEXP_INSTR('a','a') 3 11 1 N 32897 0 63
def LOCATE('a','a') 3 11 1 N 32897 0 63
def FIND_IN_SET('b','a,b,c,d') 3 3 1 N 32897 0 63
def FIELD('a','a','b') 3 3 1 N 32897 0 63
INTERVAL(2,1,2,3) REGEXP_INSTR('a','a') LOCATE('a','a') FIND_IN_SET('b','a,b,c,d') FIELD('a','a','b')
2 1 1 2 1
SELECT
SIGN(1),
BIT_COUNT(1);
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def SIGN(1) 3 2 1 N 32897 0 63
def BIT_COUNT(1) 3 2 1 N 32897 0 63
SIGN(1) BIT_COUNT(1)
1 1
SELECT
BENCHMARK(0,0),
SLEEP(0);
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def BENCHMARK(0,0) 3 1 1 N 32897 0 63
def SLEEP(0) 3 1 1 N 32897 0 63
BENCHMARK(0,0) SLEEP(0)
0 0
SELECT
GET_LOCK('metadata',0),
IS_FREE_LOCK('metadata'),
RELEASE_LOCK('metadata');
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def GET_LOCK('metadata',0) 3 1 1 Y 32896 0 63
def IS_FREE_LOCK('metadata') 3 1 1 Y 32896 0 63
def RELEASE_LOCK('metadata') 3 1 1 Y 32896 0 63
GET_LOCK('metadata',0) IS_FREE_LOCK('metadata') RELEASE_LOCK('metadata')
1 0 1
SELECT
PERIOD_ADD(200801,2),
PERIOD_DIFF(200802,200703),
TO_DAYS('2007-10-07'),
DAYOFMONTH('2007-02-03'),
DAYOFWEEK('2007-02-03'),
TO_SECONDS('2013-06-13');
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def PERIOD_ADD(200801,2) 3 6 6 N 32897 0 63
def PERIOD_DIFF(200802,200703) 3 6 2 N 32897 0 63
def TO_DAYS('2007-10-07') 3 6 6 Y 32896 0 63
def DAYOFMONTH('2007-02-03') 3 2 1 Y 32896 0 63
def DAYOFWEEK('2007-02-03') 3 1 1 Y 32896 0 63
def TO_SECONDS('2013-06-13') 3 6 11 Y 32896 0 63
PERIOD_ADD(200801,2) PERIOD_DIFF(200802,200703) TO_DAYS('2007-10-07') DAYOFMONTH('2007-02-03') DAYOFWEEK('2007-02-03') TO_SECONDS('2013-06-13')
200803 11 733321 3 7 63538300800
SELECT
YEAR('2001-02-03 04:05:06.000007'),
DAY('2001-02-03 04:05:06.000007'),
HOUR('2001-02-03 04:05:06.000007'),
MINUTE('2001-02-03 04:05:06.000007'),
SECOND('2001-02-03 04:05:06.000007'),
MICROSECOND('2001-02-03 04:05:06.000007');
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def YEAR('2001-02-03 04:05:06.000007') 3 4 4 Y 32896 0 63
def DAY('2001-02-03 04:05:06.000007') 3 2 1 Y 32896 0 63
def HOUR('2001-02-03 04:05:06.000007') 3 2 1 Y 32896 0 63
def MINUTE('2001-02-03 04:05:06.000007') 3 2 1 Y 32896 0 63
def SECOND('2001-02-03 04:05:06.000007') 3 2 1 Y 32896 0 63
def MICROSECOND('2001-02-03 04:05:06.000007') 3 6 1 Y 32896 0 63
YEAR('2001-02-03 04:05:06.000007') DAY('2001-02-03 04:05:06.000007') HOUR('2001-02-03 04:05:06.000007') MINUTE('2001-02-03 04:05:06.000007') SECOND('2001-02-03 04:05:06.000007') MICROSECOND('2001-02-03 04:05:06.000007')
2001 3 4 5 6 7
SELECT
WEEK('2001-02-03 04:05:06.000007'),
QUARTER('2001-02-03 04:05:06.000007'),
YEARWEEK('2001-02-03 04:05:06.000007');
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def WEEK('2001-02-03 04:05:06.000007') 3 2 1 Y 32896 0 63
def QUARTER('2001-02-03 04:05:06.000007') 3 1 1 Y 32896 0 63
def YEARWEEK('2001-02-03 04:05:06.000007') 3 6 6 Y 32896 0 63
WEEK('2001-02-03 04:05:06.000007') QUARTER('2001-02-03 04:05:06.000007') YEARWEEK('2001-02-03 04:05:06.000007')
4 1 200104
SELECT BIT_LENGTH(10);
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def BIT_LENGTH(10) 8 11 2 N 32897 0 63
BIT_LENGTH(10)
16
SELECT 1|2, 1&2, 1<<2, 1>>2, ~0, 1^2;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def 1|2 8 21 1 N 32929 0 63
def 1&2 8 21 1 N 32929 0 63
def 1<<2 8 21 1 N 32929 0 63
def 1>>2 8 21 1 N 32929 0 63
def ~0 8 21 20 N 32929 0 63
def 1^2 8 21 1 N 32929 0 63
1|2 1&2 1<<2 1>>2 ~0 1^2
3 0 4 0 18446744073709551615 3
SELECT LAST_INSERT_ID();
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def LAST_INSERT_ID() 8 21 1 N 32929 0 63
LAST_INSERT_ID()
0
SELECT ROW_COUNT(), FOUND_ROWS();
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def ROW_COUNT() 8 21 2 N 32897 0 63
def FOUND_ROWS() 8 21 1 N 32897 0 63
ROW_COUNT() FOUND_ROWS()
-1 1
SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01') 8 21 1 Y 32896 0 63
TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01')
3
mysql-test/suite/compat/oracle/r/func_misc.result
View file @
a8caa8e0
...
...
@@ -306,3 +306,14 @@ DROP TABLE t1;
#
# End of MDEV-10578 sql_mode=ORACLE: SP control functions SQLCODE, SQLERRM
#
#
# MDEV-12854 Synchronize CREATE..SELECT data type and result set metadata data type for INT functions
#
BEGIN
SELECT SQLCODE;
END
$$
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def SQLCODE 3 11 1 N 32897 0 63
SQLCODE
0
mysql-test/suite/compat/oracle/r/sp-cursor.result
View file @
a8caa8e0
...
...
@@ -160,7 +160,7 @@ CALL p1();
Table Create Table
t2 CREATE TABLE "t2" (
"c%ISOPEN" int(1) NOT NULL,
"c%ROWCOUNT" bigint(21)
NO
T NULL,
"c%ROWCOUNT" bigint(21)
DEFAUL
T NULL,
"c%FOUND" int(1) DEFAULT NULL,
"c%NOTFOUND" int(1) DEFAULT NULL
)
...
...
@@ -927,3 +927,25 @@ x0 x1.a x1.b
100 10 Tbl-t1.b0
DROP PROCEDURE p1;
DROP TABLE t1;
#
# MDEV-12854 Synchronize CREATE..SELECT data type and result set metadata data type for INT functions
#
DECLARE
CURSOR c IS SELECT 1 AS c FROM DUAL;
BEGIN
OPEN c;
SELECT
c%ISOPEN,
c%NOTFOUND,
c%FOUND,
c%ROWCOUNT;
CLOSE c;
END;
$$
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def c%ISOPEN 3 1 1 N 32897 0 63
def c%NOTFOUND 3 1 0 Y 32896 0 63
def c%FOUND 3 1 0 Y 32896 0 63
def c%ROWCOUNT 8 21 1 Y 32896 0 63
c%ISOPEN c%NOTFOUND c%FOUND c%ROWCOUNT
1 NULL NULL 0
mysql-test/suite/compat/oracle/r/sp.result
View file @
a8caa8e0
...
...
@@ -2274,3 +2274,11 @@ This is p2
DROP PROCEDURE p3;
DROP PROCEDURE p2;
DROP PROCEDURE p1;
#
# MDEV-12854 Synchronize CREATE..SELECT data type and result set metadata data type for INT functions
#
SELECT SQL%ROWCOUNT;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def SQL%ROWCOUNT 8 21 1 N 32897 0 63
SQL%ROWCOUNT
0
mysql-test/suite/compat/oracle/t/func_misc.test
View file @
a8caa8e0
...
...
@@ -329,3 +329,18 @@ DROP TABLE t1;
--
echo
#
--
echo
# End of MDEV-10578 sql_mode=ORACLE: SP control functions SQLCODE, SQLERRM
--
echo
#
--
echo
#
--
echo
# MDEV-12854 Synchronize CREATE..SELECT data type and result set metadata data type for INT functions
--
echo
#
--
enable_metadata
--
disable_ps_protocol
DELIMITER
$$
;
BEGIN
SELECT
SQLCODE
;
END
$$
DELIMITER
;
$$
--
enable_ps_protocol
--
disable_metadata
mysql-test/suite/compat/oracle/t/sp-cursor.test
View file @
a8caa8e0
...
...
@@ -929,3 +929,26 @@ DELIMITER ;$$
CALL
p1
();
DROP
PROCEDURE
p1
;
DROP
TABLE
t1
;
--
echo
#
--
echo
# MDEV-12854 Synchronize CREATE..SELECT data type and result set metadata data type for INT functions
--
echo
#
--
enable_metadata
--
disable_ps_protocol
DELIMITER
$$
;
DECLARE
CURSOR
c
IS
SELECT
1
AS
c
FROM
DUAL
;
BEGIN
OPEN
c
;
SELECT
c
%
ISOPEN
,
c
%
NOTFOUND
,
c
%
FOUND
,
c
%
ROWCOUNT
;
CLOSE
c
;
END
;
$$
DELIMITER
;
$$
--
enable_ps_protocol
--
disable_metadata
mysql-test/suite/compat/oracle/t/sp.test
View file @
a8caa8e0
...
...
@@ -2120,3 +2120,14 @@ CALL p3;
DROP
PROCEDURE
p3
;
DROP
PROCEDURE
p2
;
DROP
PROCEDURE
p1
;
--
echo
#
--
echo
# MDEV-12854 Synchronize CREATE..SELECT data type and result set metadata data type for INT functions
--
echo
#
--
enable_metadata
--
disable_ps_protocol
SELECT
SQL
%
ROWCOUNT
;
--
enable_ps_protocol
--
disable_metadata
mysql-test/suite/sql_sequence/next.result
View file @
a8caa8e0
...
...
@@ -412,3 +412,16 @@ next value for t1
select next value for t1, min_value;
ERROR 42S22: Unknown column 'min_value' in 'field list'
drop sequence t1;
#
# MDEV-12854 Synchronize CREATE..SELECT data type and result set metadata data type for INT functions
#
CREATE SEQUENCE s1;
SELECT
NEXT VALUE FOR s1,
PREVIOUS VALUE FOR s1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def NEXT VALUE FOR s1 8 20 1 Y 32896 0 63
def PREVIOUS VALUE FOR s1 8 20 1 Y 32896 0 63
NEXT VALUE FOR s1 PREVIOUS VALUE FOR s1
1 1
DROP SEQUENCE s1;
mysql-test/suite/sql_sequence/next.test
View file @
a8caa8e0
...
...
@@ -200,3 +200,17 @@ select next value for t1;
--
error
ER_BAD_FIELD_ERROR
select
next
value
for
t1
,
min_value
;
drop
sequence
t1
;
--
echo
#
--
echo
# MDEV-12854 Synchronize CREATE..SELECT data type and result set metadata data type for INT functions
--
echo
#
--
enable_metadata
--
disable_ps_protocol
CREATE
SEQUENCE
s1
;
SELECT
NEXT
VALUE
FOR
s1
,
PREVIOUS
VALUE
FOR
s1
;
DROP
SEQUENCE
s1
;
--
enable_ps_protocol
--
disable_metadata
mysql-test/suite/sql_sequence/setval.result
View file @
a8caa8e0
...
...
@@ -244,3 +244,13 @@ create table t1 (a int);
select setval(t1,10);
ERROR 42S02: 'test.t1' is not a SEQUENCE
drop table t1;
#
# MDEV-12854 Synchronize CREATE..SELECT data type and result set metadata data type for INT functions
#
CREATE SEQUENCE s1;
SELECT SETVAL(s1,10);
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def SETVAL(s1,10) 8 20 2 Y 32896 0 63
SETVAL(s1,10)
10
DROP SEQUENCE s1;
mysql-test/suite/sql_sequence/setval.test
View file @
a8caa8e0
...
...
@@ -124,3 +124,16 @@ create table t1 (a int);
--
error
ER_NOT_SEQUENCE
select
setval
(
t1
,
10
);
drop
table
t1
;
--
echo
#
--
echo
# MDEV-12854 Synchronize CREATE..SELECT data type and result set metadata data type for INT functions
--
echo
#
--
enable_metadata
--
disable_ps_protocol
CREATE
SEQUENCE
s1
;
SELECT
SETVAL
(
s1
,
10
);
DROP
SEQUENCE
s1
;
--
enable_ps_protocol
--
disable_metadata
mysql-test/t/func_json.test
View file @
a8caa8e0
...
...
@@ -296,3 +296,26 @@ INSERT INTO t1 VALUES (0);
SELECT
JSON_KEYS
(
f
)
FROM
t1
ORDER
BY
1
;
DROP
TABLE
t1
;
--
echo
#
--
echo
# Start of 10.3 tests
--
echo
#
--
echo
#
--
echo
# MDEV-12854 Synchronize CREATE..SELECT data type and result set metadata data type for INT functions
--
echo
#
--
enable_metadata
--
disable_ps_protocol
SELECT
JSON_VALID
(
'{"id": 1, "name": "Monty"}'
)
AS
json_valid
,
JSON_EXISTS
(
'{"key1":"xxxx", "key2":[1, 2, 3]}'
,
"$.key2"
)
AS
json_exists
,
JSON_CONTAINS
(
'{"A": 0, "B": {"C": 1}, "D": 2}'
,
'2'
,
'$.A'
)
AS
ison_contains
,
JSON_CONTAINS_PATH
(
'{"A": 1, "B": [2], "C": [3, 4]}'
,
'one'
,
'$.A'
,
'$.D'
)
AS
json_contains_path
;
SELECT
JSON_LENGTH
(
'{"a": 1, "b": {"c": 30}}'
)
AS
json_length
,
JSON_DEPTH
(
'[10, {"a": 20}]'
)
AS
json_depnth
;
--
enable_ps_protocol
--
disable_metadata
mysql-test/t/func_misc.test
View file @
a8caa8e0
...
...
@@ -1127,3 +1127,19 @@ DROP TABLE t1;
--
echo
#
--
echo
# End of 10.2 tests
--
echo
#
--
echo
#
--
echo
# Start of 10.3 tests
--
echo
#
--
echo
#
--
echo
# MDEV-12854 Synchronize CREATE..SELECT data type and result set metadata data type for INT functions
--
echo
#
--
enable_metadata
--
disable_ps_protocol
SELECT
INET_ATON
(
"255.255.255.255.255.255.255.255"
);
--
enable_ps_protocol
--
disable_metadata
mysql-test/t/gis.test
View file @
a8caa8e0
...
...
@@ -2306,6 +2306,25 @@ SHOW CREATE TABLE t1;
DROP
TABLE
t1
;
--
echo
#
--
echo
# MDEV-12854 Synchronize CREATE..SELECT data type and result set metadata data type for INT functions
--
echo
#
--
enable_metadata
--
disable_ps_protocol
SELECT
ST_ISSIMPLE
(
POINT
(
1
,
1
)),
ST_ISRING
(
POINT
(
1
,
1
)),
ST_ISCLOSED
(
POINT
(
1
,
1
)),
ST_DIMENSION
(
POINT
(
1
,
1
)),
ST_NUMGEOMETRIES
(
POINT
(
1
,
1
)),
ST_NUMINTERIORRINGS
(
POINT
(
1
,
1
)),
ST_NUMPOINTS
(
POINT
(
1
,
1
)),
ST_SRID
(
POINT
(
1
,
1
));
--
enable_ps_protocol
--
disable_metadata
--
echo
#
--
echo
# End of 10.3 tests
--
echo
#
mysql-test/t/metadata.test
View file @
a8caa8e0
...
...
@@ -252,3 +252,77 @@ drop table t1;
--
enable_metadata
select
cast
(
'01:01:01'
as
time
),
cast
(
'01:01:01'
as
time
(
2
));
--
disable_metadata
--
echo
#
--
echo
# MDEV-12854 Synchronize CREATE..SELECT data type and result set metadata data type for INT functions
--
echo
#
--
enable_metadata
SELECT
STRCMP
(
'a'
,
'b'
),
OCTET_LENGTH
(
'a'
),
CHAR_LENGTH
(
'a'
),
COERCIBILITY
(
'a'
),
ASCII
(
'a'
),
ORD
(
'a'
),
CRC32
(
'a'
),
UNCOMPRESSED_LENGTH
(
COMPRESS
(
'a'
));
SELECT
INTERVAL
(
2
,
1
,
2
,
3
),
REGEXP_INSTR
(
'a'
,
'a'
),
LOCATE
(
'a'
,
'a'
),
FIND_IN_SET
(
'b'
,
'a,b,c,d'
),
FIELD
(
'a'
,
'a'
,
'b'
);
SELECT
SIGN
(
1
),
BIT_COUNT
(
1
);
SELECT
BENCHMARK
(
0
,
0
),
SLEEP
(
0
);
SELECT
GET_LOCK
(
'metadata'
,
0
),
IS_FREE_LOCK
(
'metadata'
),
RELEASE_LOCK
(
'metadata'
);
# Metadata the following functions is not deterministic
#SELECT CONNECTION_ID();
#SELECT IS_FREE_LOCK('metadata');
#SELECT UUID_SHORT();
SELECT
PERIOD_ADD
(
200801
,
2
),
PERIOD_DIFF
(
200802
,
200703
),
TO_DAYS
(
'2007-10-07'
),
DAYOFMONTH
(
'2007-02-03'
),
DAYOFWEEK
(
'2007-02-03'
),
TO_SECONDS
(
'2013-06-13'
);
SELECT
YEAR
(
'2001-02-03 04:05:06.000007'
),
DAY
(
'2001-02-03 04:05:06.000007'
),
HOUR
(
'2001-02-03 04:05:06.000007'
),
MINUTE
(
'2001-02-03 04:05:06.000007'
),
SECOND
(
'2001-02-03 04:05:06.000007'
),
MICROSECOND
(
'2001-02-03 04:05:06.000007'
);
SELECT
WEEK
(
'2001-02-03 04:05:06.000007'
),
QUARTER
(
'2001-02-03 04:05:06.000007'
),
YEARWEEK
(
'2001-02-03 04:05:06.000007'
);
--
disable_metadata
--
enable_metadata
SELECT
BIT_LENGTH
(
10
);
SELECT
1
|
2
,
1
&
2
,
1
<<
2
,
1
>>
2
,
~
0
,
1
^
2
;
SELECT
LAST_INSERT_ID
();
SELECT
ROW_COUNT
(),
FOUND_ROWS
();
SELECT
TIMESTAMPDIFF
(
MONTH
,
'2003-02-01'
,
'2003-05-01'
);
--
disable_metadata
sql/item_cmpfunc.cc
View file @
a8caa8e0
...
...
@@ -5519,6 +5519,7 @@ Item_func_regexp_instr::fix_length_and_dec()
re
.
init
(
cmp_collation
.
collation
,
0
,
1
);
re
.
fix_owner
(
this
,
args
[
0
],
args
[
1
]);
max_length
=
MY_INT32_NUM_DECIMAL_DIGITS
;
// See also Item_func_locate
}
...
...
sql/item_cmpfunc.h
View file @
a8caa8e0
...
...
@@ -204,7 +204,12 @@ class Item_bool_func :public Item_int_func
Item_bool_func
(
THD
*
thd
,
Item
*
a
,
Item
*
b
,
Item
*
c
)
:
Item_int_func
(
thd
,
a
,
b
,
c
)
{}
Item_bool_func
(
THD
*
thd
,
List
<
Item
>
&
list
)
:
Item_int_func
(
thd
,
list
)
{
}
Item_bool_func
(
THD
*
thd
,
Item_bool_func
*
item
)
:
Item_int_func
(
thd
,
item
)
{}
const
Type_handler
*
type_handler
()
const
{
return
&
type_handler_long
;
}
bool
is_bool_type
()
{
return
true
;
}
Field
*
create_tmp_field
(
bool
group
,
TABLE
*
table
)
{
return
tmp_table_field_from_field_type
(
table
);
}
Field
*
create_field_for_create_select
(
TABLE
*
table
)
{
return
tmp_table_field_from_field_type
(
table
);
}
virtual
CHARSET_INFO
*
compare_collation
()
const
{
return
NULL
;
}
void
fix_length_and_dec
()
{
decimals
=
0
;
max_length
=
1
;
}
uint
decimal_precision
()
const
{
return
1
;
}
...
...
@@ -919,13 +924,13 @@ class Item_func_between :public Item_func_opt_neg
};
class
Item_func_strcmp
:
public
Item_
int
_func
class
Item_func_strcmp
:
public
Item_
long
_func
{
String
value1
,
value2
;
DTCollation
cmp_collation
;
public:
Item_func_strcmp
(
THD
*
thd
,
Item
*
a
,
Item
*
b
)
:
Item_
int
_func
(
thd
,
a
,
b
)
{}
Item_
long
_func
(
thd
,
a
,
b
)
{}
longlong
val_int
();
uint
decimal_precision
()
const
{
return
1
;
}
const
char
*
func_name
()
const
{
return
"strcmp"
;
}
...
...
@@ -946,14 +951,14 @@ struct interval_range
my_decimal
dec
;
};
class
Item_func_interval
:
public
Item_
int
_func
class
Item_func_interval
:
public
Item_
long
_func
{
Item_row
*
row
;
bool
use_decimal_comparison
;
interval_range
*
intervals
;
public:
Item_func_interval
(
THD
*
thd
,
Item_row
*
a
)
:
Item_
int
_func
(
thd
,
a
),
row
(
a
),
intervals
(
0
)
Item_
long
_func
(
thd
,
a
),
row
(
a
),
intervals
(
0
)
{
allowed_arg_cols
=
0
;
// Fetch this value from first argument
}
...
...
@@ -2661,12 +2666,19 @@ class Item_func_regex :public Item_bool_func
};
class
Item_func_regexp_instr
:
public
Item_int_func
/*
In the corner case REGEXP_INSTR could return (2^32 + 1),
which would not fit into Item_long_func range.
But string lengths are limited with max_allowed_packet,
which cannot be bigger than 1024*1024*1024.
*/
class
Item_func_regexp_instr
:
public
Item_long_func
{
Regexp_processor_pcre
re
;
DTCollation
cmp_collation
;
public:
Item_func_regexp_instr
(
THD
*
thd
,
Item
*
a
,
Item
*
b
)
:
Item_int_func
(
thd
,
a
,
b
)
Item_func_regexp_instr
(
THD
*
thd
,
Item
*
a
,
Item
*
b
)
:
Item_long_func
(
thd
,
a
,
b
)
{}
void
cleanup
()
{
...
...
@@ -3130,6 +3142,61 @@ class Item_func_dyncol_exists :public Item_bool_func
{
return
get_item_copy
<
Item_func_dyncol_exists
>
(
thd
,
mem_root
,
this
);
}
};
class
Item_func_cursor_bool_attr
:
public
Item_bool_func
,
public
Cursor_ref
{
public:
Item_func_cursor_bool_attr
(
THD
*
thd
,
const
LEX_CSTRING
*
name
,
uint
offset
)
:
Item_bool_func
(
thd
),
Cursor_ref
(
name
,
offset
)
{
}
bool
check_vcol_func_processor
(
void
*
arg
)
{
return
mark_unsupported_function
(
func_name
(),
arg
,
VCOL_SESSION_FUNC
);
}
void
print
(
String
*
str
,
enum_query_type
query_type
)
{
Cursor_ref
::
print_func
(
str
,
func_name
());
}
};
class
Item_func_cursor_isopen
:
public
Item_func_cursor_bool_attr
{
public:
Item_func_cursor_isopen
(
THD
*
thd
,
const
LEX_CSTRING
*
name
,
uint
offset
)
:
Item_func_cursor_bool_attr
(
thd
,
name
,
offset
)
{
}
const
char
*
func_name
()
const
{
return
"%ISOPEN"
;
}
longlong
val_int
();
Item
*
get_copy
(
THD
*
thd
,
MEM_ROOT
*
mem_root
)
{
return
get_item_copy
<
Item_func_cursor_isopen
>
(
thd
,
mem_root
,
this
);
}
};
class
Item_func_cursor_found
:
public
Item_func_cursor_bool_attr
{
public:
Item_func_cursor_found
(
THD
*
thd
,
const
LEX_CSTRING
*
name
,
uint
offset
)
:
Item_func_cursor_bool_attr
(
thd
,
name
,
offset
)
{
maybe_null
=
true
;
}
const
char
*
func_name
()
const
{
return
"%FOUND"
;
}
longlong
val_int
();
Item
*
get_copy
(
THD
*
thd
,
MEM_ROOT
*
mem_root
)
{
return
get_item_copy
<
Item_func_cursor_found
>
(
thd
,
mem_root
,
this
);
}
};
class
Item_func_cursor_notfound
:
public
Item_func_cursor_bool_attr
{
public:
Item_func_cursor_notfound
(
THD
*
thd
,
const
LEX_CSTRING
*
name
,
uint
offset
)
:
Item_func_cursor_bool_attr
(
thd
,
name
,
offset
)
{
maybe_null
=
true
;
}
const
char
*
func_name
()
const
{
return
"%NOTFOUND"
;
}
longlong
val_int
();
Item
*
get_copy
(
THD
*
thd
,
MEM_ROOT
*
mem_root
)
{
return
get_item_copy
<
Item_func_cursor_notfound
>
(
thd
,
mem_root
,
this
);
}
};
inline
bool
is_cond_or
(
Item
*
item
)
{
if
(
item
->
type
()
!=
Item
::
COND_ITEM
)
...
...
sql/item_func.cc
View file @
a8caa8e0
...
...
@@ -632,7 +632,7 @@ String *Item_int_func::val_str(String *str)
void
Item_func_connection_id
::
fix_length_and_dec
()
{
Item_
int
_func
::
fix_length_and_dec
();
Item_
long
_func
::
fix_length_and_dec
();
max_length
=
10
;
}
...
...
@@ -2709,6 +2709,14 @@ my_decimal *Item_func_min_max::val_decimal_native(my_decimal *dec)
}
longlong
Item_func_bit_length
::
val_int
()
{
DBUG_ASSERT
(
fixed
==
1
);
String
*
res
=
args
[
0
]
->
val_str
(
&
value
);
return
(
null_value
=
!
res
)
?
0
:
(
longlong
)
res
->
length
()
*
8
;
}
longlong
Item_func_octet_length
::
val_int
()
{
DBUG_ASSERT
(
fixed
==
1
);
...
...
@@ -2745,13 +2753,6 @@ longlong Item_func_coercibility::val_int()
}
void
Item_func_locate
::
fix_length_and_dec
()
{
max_length
=
MY_INT32_NUM_DECIMAL_DIGITS
;
agg_arg_charsets_for_comparison
(
cmp_collation
,
args
,
2
);
}
longlong
Item_func_locate
::
val_int
()
{
DBUG_ASSERT
(
fixed
==
1
);
...
...
@@ -6624,14 +6625,14 @@ void Item_func_last_value::fix_length_and_dec()
}
void
Item_func_cursor_int_attr
::
print
(
String
*
str
,
enum_query_type
query_typ
e
)
void
Cursor_ref
::
print_func
(
String
*
str
,
const
char
*
func_nam
e
)
{
append_identifier
(
current_thd
,
str
,
m_cursor_name
.
str
,
m_cursor_name
.
length
);
str
->
append
(
func_name
()
);
str
->
append
(
func_name
);
}
sp_cursor
*
Item_func_cursor_int_attr
::
get_open_cursor_or_error
()
sp_cursor
*
Cursor_ref
::
get_open_cursor_or_error
()
{
THD
*
thd
=
current_thd
;
sp_cursor
*
c
=
thd
->
spcont
->
get_cursor
(
m_cursor_offset
);
...
...
sql/item_func.h
View file @
a8caa8e0
This diff is collapsed.
Click to expand it.
sql/item_geofunc.h
View file @
a8caa8e0
...
...
@@ -506,14 +506,14 @@ class Item_func_isempty: public Item_bool_func
{
return
get_item_copy
<
Item_func_isempty
>
(
thd
,
mem_root
,
this
);
}
};
class
Item_func_issimple
:
public
Item_
int
_func
class
Item_func_issimple
:
public
Item_
long
_func
{
Gcalc_heap
collector
;
Gcalc_function
func
;
Gcalc_scan_iterator
scan_it
;
String
tmp
;
public:
Item_func_issimple
(
THD
*
thd
,
Item
*
a
)
:
Item_
int
_func
(
thd
,
a
)
{}
Item_func_issimple
(
THD
*
thd
,
Item
*
a
)
:
Item_
long
_func
(
thd
,
a
)
{}
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"st_issimple"
;
}
void
fix_length_and_dec
()
{
decimals
=
0
;
max_length
=
2
;
}
...
...
@@ -522,10 +522,10 @@ class Item_func_issimple: public Item_int_func
{
return
get_item_copy
<
Item_func_issimple
>
(
thd
,
mem_root
,
this
);
}
};
class
Item_func_isclosed
:
public
Item_
int
_func
class
Item_func_isclosed
:
public
Item_
long
_func
{
public:
Item_func_isclosed
(
THD
*
thd
,
Item
*
a
)
:
Item_
int
_func
(
thd
,
a
)
{}
Item_func_isclosed
(
THD
*
thd
,
Item
*
a
)
:
Item_
long
_func
(
thd
,
a
)
{}
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"st_isclosed"
;
}
void
fix_length_and_dec
()
{
decimals
=
0
;
max_length
=
2
;
}
...
...
@@ -544,11 +544,11 @@ class Item_func_isring: public Item_func_issimple
{
return
get_item_copy
<
Item_func_isring
>
(
thd
,
mem_root
,
this
);
}
};
class
Item_func_dimension
:
public
Item_
int
_func
class
Item_func_dimension
:
public
Item_
long
_func
{
String
value
;
public:
Item_func_dimension
(
THD
*
thd
,
Item
*
a
)
:
Item_
int
_func
(
thd
,
a
)
{}
Item_func_dimension
(
THD
*
thd
,
Item
*
a
)
:
Item_
long
_func
(
thd
,
a
)
{}
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"st_dimension"
;
}
void
fix_length_and_dec
()
{
max_length
=
10
;
maybe_null
=
1
;
}
...
...
@@ -590,11 +590,11 @@ class Item_func_y: public Item_real_func
};
class
Item_func_numgeometries
:
public
Item_
int
_func
class
Item_func_numgeometries
:
public
Item_
long
_func
{
String
value
;
public:
Item_func_numgeometries
(
THD
*
thd
,
Item
*
a
)
:
Item_
int
_func
(
thd
,
a
)
{}
Item_func_numgeometries
(
THD
*
thd
,
Item
*
a
)
:
Item_
long
_func
(
thd
,
a
)
{}
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"st_numgeometries"
;
}
void
fix_length_and_dec
()
{
max_length
=
10
;
maybe_null
=
1
;
}
...
...
@@ -603,11 +603,11 @@ class Item_func_numgeometries: public Item_int_func
};
class
Item_func_numinteriorring
:
public
Item_
int
_func
class
Item_func_numinteriorring
:
public
Item_
long
_func
{
String
value
;
public:
Item_func_numinteriorring
(
THD
*
thd
,
Item
*
a
)
:
Item_
int
_func
(
thd
,
a
)
{}
Item_func_numinteriorring
(
THD
*
thd
,
Item
*
a
)
:
Item_
long
_func
(
thd
,
a
)
{}
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"st_numinteriorrings"
;
}
void
fix_length_and_dec
()
{
max_length
=
10
;
maybe_null
=
1
;
}
...
...
@@ -616,11 +616,11 @@ class Item_func_numinteriorring: public Item_int_func
};
class
Item_func_numpoints
:
public
Item_
int
_func
class
Item_func_numpoints
:
public
Item_
long
_func
{
String
value
;
public:
Item_func_numpoints
(
THD
*
thd
,
Item
*
a
)
:
Item_
int
_func
(
thd
,
a
)
{}
Item_func_numpoints
(
THD
*
thd
,
Item
*
a
)
:
Item_
long
_func
(
thd
,
a
)
{}
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"st_numpoints"
;
}
void
fix_length_and_dec
()
{
max_length
=
10
;
maybe_null
=
1
;
}
...
...
@@ -663,11 +663,11 @@ class Item_func_glength: public Item_real_func
};
class
Item_func_srid
:
public
Item_
int
_func
class
Item_func_srid
:
public
Item_
long
_func
{
String
value
;
public:
Item_func_srid
(
THD
*
thd
,
Item
*
a
)
:
Item_
int
_func
(
thd
,
a
)
{}
Item_func_srid
(
THD
*
thd
,
Item
*
a
)
:
Item_
long
_func
(
thd
,
a
)
{}
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"srid"
;
}
void
fix_length_and_dec
()
{
max_length
=
10
;
maybe_null
=
1
;
}
...
...
@@ -709,11 +709,12 @@ class Item_func_pointonsurface: public Item_geometry_func
#ifndef DBUG_OFF
class
Item_func_gis_debug
:
public
Item_
int
_func
class
Item_func_gis_debug
:
public
Item_
long
_func
{
public:
Item_func_gis_debug
(
THD
*
thd
,
Item
*
a
)
:
Item_
int
_func
(
thd
,
a
)
Item_func_gis_debug
(
THD
*
thd
,
Item
*
a
)
:
Item_
long
_func
(
thd
,
a
)
{
null_value
=
false
;
}
void
fix_length_and_dec
()
{
fix_char_length
(
10
);
}
const
char
*
func_name
()
const
{
return
"st_gis_debug"
;
}
longlong
val_int
();
bool
check_vcol_func_processor
(
void
*
arg
)
...
...
sql/item_inetfunc.h
View file @
a8caa8e0
...
...
@@ -24,10 +24,10 @@
Item_func_inet_aton implements INET_ATON() SQL-function.
*************************************************************************/
class
Item_func_inet_aton
:
public
Item_
int
_func
class
Item_func_inet_aton
:
public
Item_
longlong
_func
{
public:
Item_func_inet_aton
(
THD
*
thd
,
Item
*
a
)
:
Item_
int
_func
(
thd
,
a
)
{}
Item_func_inet_aton
(
THD
*
thd
,
Item
*
a
)
:
Item_
longlong
_func
(
thd
,
a
)
{}
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"inet_aton"
;
}
void
fix_length_and_dec
()
...
...
sql/item_jsonfunc.cc
View file @
a8caa8e0
...
...
@@ -390,7 +390,7 @@ longlong Item_func_json_valid::val_int()
void
Item_func_json_exists
::
fix_length_and_dec
()
{
Item_
int
_func
::
fix_length_and_dec
();
Item_
bool
_func
::
fix_length_and_dec
();
maybe_null
=
1
;
path
.
set_constant_flag
(
args
[
1
]
->
const_item
());
}
...
...
@@ -890,7 +890,7 @@ void Item_func_json_contains::fix_length_and_dec()
maybe_null
=
1
;
if
(
arg_count
>
2
)
path
.
set_constant_flag
(
args
[
2
]
->
const_item
());
Item_
int
_func
::
fix_length_and_dec
();
Item_
bool
_func
::
fix_length_and_dec
();
}
...
...
@@ -1135,7 +1135,7 @@ void Item_func_json_contains_path::fix_length_and_dec()
ooa_parsed
=
FALSE
;
maybe_null
=
1
;
mark_constant_paths
(
paths
,
args
+
2
,
arg_count
-
2
);
Item_
int
_func
::
fix_length_and_dec
();
Item_
bool
_func
::
fix_length_and_dec
();
}
...
...
@@ -2050,6 +2050,7 @@ void Item_func_json_length::fix_length_and_dec()
if
(
arg_count
>
1
)
path
.
set_constant_flag
(
args
[
1
]
->
const_item
());
maybe_null
=
1
;
max_length
=
10
;
}
...
...
sql/item_jsonfunc.h
View file @
a8caa8e0
...
...
@@ -40,27 +40,26 @@ class json_path_with_flags
};
class
Item_func_json_valid
:
public
Item_
int
_func
class
Item_func_json_valid
:
public
Item_
bool
_func
{
protected:
String
tmp_value
;
public:
Item_func_json_valid
(
THD
*
thd
,
Item
*
json
)
:
Item_
int
_func
(
thd
,
json
)
{}
Item_func_json_valid
(
THD
*
thd
,
Item
*
json
)
:
Item_
bool
_func
(
thd
,
json
)
{}
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"json_valid"
;
}
void
fix_length_and_dec
()
{
Item_
int
_func
::
fix_length_and_dec
();
Item_
bool
_func
::
fix_length_and_dec
();
maybe_null
=
1
;
}
bool
is_bool_type
()
{
return
true
;
}
Item
*
get_copy
(
THD
*
thd
,
MEM_ROOT
*
mem_root
)
{
return
get_item_copy
<
Item_func_json_valid
>
(
thd
,
mem_root
,
this
);
}
};
class
Item_func_json_exists
:
public
Item_
int
_func
class
Item_func_json_exists
:
public
Item_
bool
_func
{
protected:
json_path_with_flags
path
;
...
...
@@ -68,9 +67,8 @@ class Item_func_json_exists: public Item_int_func
public:
Item_func_json_exists
(
THD
*
thd
,
Item
*
js
,
Item
*
i_path
)
:
Item_
int
_func
(
thd
,
js
,
i_path
)
{}
Item_
bool
_func
(
thd
,
js
,
i_path
)
{}
const
char
*
func_name
()
const
{
return
"json_exists"
;
}
bool
is_bool_type
()
{
return
true
;
}
void
fix_length_and_dec
();
Item
*
get_copy
(
THD
*
thd
,
MEM_ROOT
*
mem_root
)
{
return
get_item_copy
<
Item_func_json_exists
>
(
thd
,
mem_root
,
this
);
}
...
...
@@ -170,7 +168,7 @@ class Item_func_json_extract: public Item_json_str_multipath
};
class
Item_func_json_contains
:
public
Item_
int
_func
class
Item_func_json_contains
:
public
Item_
bool
_func
{
protected:
String
tmp_js
;
...
...
@@ -180,7 +178,7 @@ class Item_func_json_contains: public Item_int_func
String
tmp_val
,
*
val
;
public:
Item_func_json_contains
(
THD
*
thd
,
List
<
Item
>
&
list
)
:
Item_
int
_func
(
thd
,
list
)
{}
Item_
bool
_func
(
thd
,
list
)
{}
const
char
*
func_name
()
const
{
return
"json_contains"
;
}
void
fix_length_and_dec
();
longlong
val_int
();
...
...
@@ -189,7 +187,7 @@ class Item_func_json_contains: public Item_int_func
};
class
Item_func_json_contains_path
:
public
Item_
int
_func
class
Item_func_json_contains_path
:
public
Item_
bool
_func
{
protected:
String
tmp_js
;
...
...
@@ -201,7 +199,7 @@ class Item_func_json_contains_path: public Item_int_func
public:
Item_func_json_contains_path
(
THD
*
thd
,
List
<
Item
>
&
list
)
:
Item_
int
_func
(
thd
,
list
),
tmp_paths
(
0
)
{}
Item_
bool
_func
(
thd
,
list
),
tmp_paths
(
0
)
{}
const
char
*
func_name
()
const
{
return
"json_contains_path"
;
}
bool
fix_fields
(
THD
*
thd
,
Item
**
ref
);
void
fix_length_and_dec
();
...
...
@@ -290,7 +288,7 @@ class Item_func_json_merge: public Item_func_json_array
};
class
Item_func_json_length
:
public
Item_
int
_func
class
Item_func_json_length
:
public
Item_
long
_func
{
protected:
json_path_with_flags
path
;
...
...
@@ -298,7 +296,7 @@ class Item_func_json_length: public Item_int_func
String
tmp_path
;
public:
Item_func_json_length
(
THD
*
thd
,
List
<
Item
>
&
list
)
:
Item_
int
_func
(
thd
,
list
)
{}
Item_
long
_func
(
thd
,
list
)
{}
const
char
*
func_name
()
const
{
return
"json_length"
;
}
void
fix_length_and_dec
();
longlong
val_int
();
...
...
@@ -307,13 +305,14 @@ class Item_func_json_length: public Item_int_func
};
class
Item_func_json_depth
:
public
Item_
int
_func
class
Item_func_json_depth
:
public
Item_
long
_func
{
protected:
String
tmp_js
;
public:
Item_func_json_depth
(
THD
*
thd
,
Item
*
js
)
:
Item_
int
_func
(
thd
,
js
)
{}
Item_func_json_depth
(
THD
*
thd
,
Item
*
js
)
:
Item_
long
_func
(
thd
,
js
)
{}
const
char
*
func_name
()
const
{
return
"json_depth"
;
}
void
fix_length_and_dec
()
{
max_length
=
10
;
}
longlong
val_int
();
Item
*
get_copy
(
THD
*
thd
,
MEM_ROOT
*
mem_root
)
{
return
get_item_copy
<
Item_func_json_depth
>
(
thd
,
mem_root
,
this
);
}
...
...
sql/item_strfunc.h
View file @
a8caa8e0
...
...
@@ -1444,11 +1444,11 @@ class Item_func_weight_string :public Item_str_func
{
return
get_item_copy
<
Item_func_weight_string
>
(
thd
,
mem_root
,
this
);
}
};
class
Item_func_crc32
:
public
Item_
int
_func
class
Item_func_crc32
:
public
Item_
long
_func
{
String
value
;
public:
Item_func_crc32
(
THD
*
thd
,
Item
*
a
)
:
Item_
int
_func
(
thd
,
a
)
Item_func_crc32
(
THD
*
thd
,
Item
*
a
)
:
Item_
long
_func
(
thd
,
a
)
{
unsigned_flag
=
1
;
}
const
char
*
func_name
()
const
{
return
"crc32"
;
}
void
fix_length_and_dec
()
{
max_length
=
10
;
}
...
...
@@ -1457,11 +1457,11 @@ class Item_func_crc32 :public Item_int_func
{
return
get_item_copy
<
Item_func_crc32
>
(
thd
,
mem_root
,
this
);
}
};
class
Item_func_uncompressed_length
:
public
Item_
int
_func
class
Item_func_uncompressed_length
:
public
Item_
long
_func
{
String
value
;
public:
Item_func_uncompressed_length
(
THD
*
thd
,
Item
*
a
)
:
Item_
int
_func
(
thd
,
a
)
{}
Item_func_uncompressed_length
(
THD
*
thd
,
Item
*
a
)
:
Item_
long
_func
(
thd
,
a
)
{}
const
char
*
func_name
()
const
{
return
"uncompressed_length"
;}
void
fix_length_and_dec
()
{
max_length
=
10
;
maybe_null
=
true
;
}
longlong
val_int
();
...
...
sql/item_timefunc.h
View file @
a8caa8e0
...
...
@@ -33,10 +33,10 @@ enum date_time_format_types
bool
get_interval_value
(
Item
*
args
,
interval_type
int_type
,
INTERVAL
*
interval
);
class
Item_func_period_add
:
public
Item_
int
_func
class
Item_func_period_add
:
public
Item_
long
_func
{
public:
Item_func_period_add
(
THD
*
thd
,
Item
*
a
,
Item
*
b
)
:
Item_
int
_func
(
thd
,
a
,
b
)
{}
Item_func_period_add
(
THD
*
thd
,
Item
*
a
,
Item
*
b
)
:
Item_
long
_func
(
thd
,
a
,
b
)
{}
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"period_add"
;
}
void
fix_length_and_dec
()
...
...
@@ -48,10 +48,10 @@ class Item_func_period_add :public Item_int_func
};
class
Item_func_period_diff
:
public
Item_
int
_func
class
Item_func_period_diff
:
public
Item_
long
_func
{
public:
Item_func_period_diff
(
THD
*
thd
,
Item
*
a
,
Item
*
b
)
:
Item_
int
_func
(
thd
,
a
,
b
)
{}
Item_func_period_diff
(
THD
*
thd
,
Item
*
a
,
Item
*
b
)
:
Item_
long
_func
(
thd
,
a
,
b
)
{}
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"period_diff"
;
}
void
fix_length_and_dec
()
...
...
@@ -64,10 +64,10 @@ class Item_func_period_diff :public Item_int_func
};
class
Item_func_to_days
:
public
Item_
int
_func
class
Item_func_to_days
:
public
Item_
long
_func
{
public:
Item_func_to_days
(
THD
*
thd
,
Item
*
a
)
:
Item_
int
_func
(
thd
,
a
)
{}
Item_func_to_days
(
THD
*
thd
,
Item
*
a
)
:
Item_
long
_func
(
thd
,
a
)
{}
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"to_days"
;
}
void
fix_length_and_dec
()
...
...
@@ -89,10 +89,10 @@ class Item_func_to_days :public Item_int_func
};
class
Item_func_to_seconds
:
public
Item_
int
_func
class
Item_func_to_seconds
:
public
Item_
long
_func
{
public:
Item_func_to_seconds
(
THD
*
thd
,
Item
*
a
)
:
Item_
int
_func
(
thd
,
a
)
{}
Item_func_to_seconds
(
THD
*
thd
,
Item
*
a
)
:
Item_
long
_func
(
thd
,
a
)
{}
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"to_seconds"
;
}
void
fix_length_and_dec
()
...
...
@@ -115,10 +115,10 @@ class Item_func_to_seconds :public Item_int_func
};
class
Item_func_dayofmonth
:
public
Item_
int
_func
class
Item_func_dayofmonth
:
public
Item_
long
_func
{
public:
Item_func_dayofmonth
(
THD
*
thd
,
Item
*
a
)
:
Item_
int
_func
(
thd
,
a
)
{}
Item_func_dayofmonth
(
THD
*
thd
,
Item
*
a
)
:
Item_
long
_func
(
thd
,
a
)
{}
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"dayofmonth"
;
}
void
fix_length_and_dec
()
...
...
@@ -196,10 +196,10 @@ class Item_func_monthname :public Item_str_func
};
class
Item_func_dayofyear
:
public
Item_
int
_func
class
Item_func_dayofyear
:
public
Item_
long
_func
{
public:
Item_func_dayofyear
(
THD
*
thd
,
Item
*
a
)
:
Item_
int
_func
(
thd
,
a
)
{}
Item_func_dayofyear
(
THD
*
thd
,
Item
*
a
)
:
Item_
long
_func
(
thd
,
a
)
{}
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"dayofyear"
;
}
void
fix_length_and_dec
()
...
...
@@ -219,10 +219,10 @@ class Item_func_dayofyear :public Item_int_func
};
class
Item_func_hour
:
public
Item_
int
_func
class
Item_func_hour
:
public
Item_
long
_func
{
public:
Item_func_hour
(
THD
*
thd
,
Item
*
a
)
:
Item_
int
_func
(
thd
,
a
)
{}
Item_func_hour
(
THD
*
thd
,
Item
*
a
)
:
Item_
long
_func
(
thd
,
a
)
{}
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"hour"
;
}
void
fix_length_and_dec
()
...
...
@@ -242,10 +242,10 @@ class Item_func_hour :public Item_int_func
};
class
Item_func_minute
:
public
Item_
int
_func
class
Item_func_minute
:
public
Item_
long
_func
{
public:
Item_func_minute
(
THD
*
thd
,
Item
*
a
)
:
Item_
int
_func
(
thd
,
a
)
{}
Item_func_minute
(
THD
*
thd
,
Item
*
a
)
:
Item_
long
_func
(
thd
,
a
)
{}
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"minute"
;
}
void
fix_length_and_dec
()
...
...
@@ -265,10 +265,10 @@ class Item_func_minute :public Item_int_func
};
class
Item_func_quarter
:
public
Item_
int
_func
class
Item_func_quarter
:
public
Item_
long
_func
{
public:
Item_func_quarter
(
THD
*
thd
,
Item
*
a
)
:
Item_
int
_func
(
thd
,
a
)
{}
Item_func_quarter
(
THD
*
thd
,
Item
*
a
)
:
Item_
long
_func
(
thd
,
a
)
{}
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"quarter"
;
}
void
fix_length_and_dec
()
...
...
@@ -288,10 +288,10 @@ class Item_func_quarter :public Item_int_func
};
class
Item_func_second
:
public
Item_
int
_func
class
Item_func_second
:
public
Item_
long
_func
{
public:
Item_func_second
(
THD
*
thd
,
Item
*
a
)
:
Item_
int
_func
(
thd
,
a
)
{}
Item_func_second
(
THD
*
thd
,
Item
*
a
)
:
Item_
long
_func
(
thd
,
a
)
{}
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"second"
;
}
void
fix_length_and_dec
()
...
...
@@ -311,11 +311,11 @@ class Item_func_second :public Item_int_func
};
class
Item_func_week
:
public
Item_
int
_func
class
Item_func_week
:
public
Item_
long
_func
{
public:
Item_func_week
(
THD
*
thd
,
Item
*
a
)
:
Item_
int
_func
(
thd
,
a
)
{}
Item_func_week
(
THD
*
thd
,
Item
*
a
,
Item
*
b
)
:
Item_
int
_func
(
thd
,
a
,
b
)
{}
Item_func_week
(
THD
*
thd
,
Item
*
a
)
:
Item_
long
_func
(
thd
,
a
)
{}
Item_func_week
(
THD
*
thd
,
Item
*
a
,
Item
*
b
)
:
Item_
long
_func
(
thd
,
a
,
b
)
{}
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"week"
;
}
void
fix_length_and_dec
()
...
...
@@ -338,10 +338,10 @@ class Item_func_week :public Item_int_func
{
return
get_item_copy
<
Item_func_week
>
(
thd
,
mem_root
,
this
);
}
};
class
Item_func_yearweek
:
public
Item_
int
_func
class
Item_func_yearweek
:
public
Item_
long
_func
{
public:
Item_func_yearweek
(
THD
*
thd
,
Item
*
a
,
Item
*
b
)
:
Item_
int
_func
(
thd
,
a
,
b
)
{}
Item_func_yearweek
(
THD
*
thd
,
Item
*
a
,
Item
*
b
)
:
Item_
long
_func
(
thd
,
a
,
b
)
{}
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"yearweek"
;
}
void
fix_length_and_dec
()
...
...
@@ -361,10 +361,10 @@ class Item_func_yearweek :public Item_int_func
};
class
Item_func_year
:
public
Item_
int
_func
class
Item_func_year
:
public
Item_
long
_func
{
public:
Item_func_year
(
THD
*
thd
,
Item
*
a
)
:
Item_
int
_func
(
thd
,
a
)
{}
Item_func_year
(
THD
*
thd
,
Item
*
a
)
:
Item_
long
_func
(
thd
,
a
)
{}
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"year"
;
}
enum_monotonicity_info
get_monotonicity_info
()
const
;
...
...
@@ -404,7 +404,7 @@ class Item_func_weekday :public Item_func
{
return
(
odbc_type
?
"dayofweek"
:
"weekday"
);
}
const
Type_handler
*
type_handler
()
const
{
return
&
type_handler_long
long
;
}
const
Type_handler
*
type_handler
()
const
{
return
&
type_handler_long
;
}
void
fix_length_and_dec
()
{
decimals
=
0
;
...
...
@@ -1012,6 +1012,8 @@ class Item_extract :public Item_int_func
}
return
true
;
}
Field
*
create_tmp_field
(
bool
group
,
TABLE
*
table
)
{
return
tmp_table_field_from_field_type
(
table
);
}
Field
*
create_field_for_create_select
(
TABLE
*
table
)
{
return
tmp_table_field_from_field_type
(
table
);
}
...
...
@@ -1177,16 +1179,17 @@ class Item_func_maketime :public Item_timefunc
};
class
Item_func_microsecond
:
public
Item_
int
_func
class
Item_func_microsecond
:
public
Item_
long
_func
{
public:
Item_func_microsecond
(
THD
*
thd
,
Item
*
a
)
:
Item_
int
_func
(
thd
,
a
)
{}
Item_func_microsecond
(
THD
*
thd
,
Item
*
a
)
:
Item_
long
_func
(
thd
,
a
)
{}
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"microsecond"
;
}
void
fix_length_and_dec
()
{
decimals
=
0
;
maybe_null
=
1
;
fix_char_length
(
6
);
}
bool
check_partition_func_processor
(
void
*
int_arg
)
{
return
FALSE
;}
bool
check_vcol_func_processor
(
void
*
arg
)
{
return
FALSE
;}
...
...
@@ -1199,12 +1202,12 @@ class Item_func_microsecond :public Item_int_func
};
class
Item_func_timestamp_diff
:
public
Item_
int
_func
class
Item_func_timestamp_diff
:
public
Item_
longlong
_func
{
const
interval_type
int_type
;
public:
Item_func_timestamp_diff
(
THD
*
thd
,
Item
*
a
,
Item
*
b
,
interval_type
type_arg
)
:
Item_
int
_func
(
thd
,
a
,
b
),
int_type
(
type_arg
)
{}
Item_
longlong
_func
(
thd
,
a
,
b
),
int_type
(
type_arg
)
{}
const
char
*
func_name
()
const
{
return
"timestampdiff"
;
}
longlong
val_int
();
void
fix_length_and_dec
()
...
...
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