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
11ff9014
Commit
11ff9014
authored
Jun 09, 2016
by
Alexander Barkov
Committed by
Sergei Golubchik
Jun 30, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
More tests for MDEV-7563 Support CHECK constraint
Adding tests for cast, bit functions, string functions.
parent
ba6646f7
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
666 additions
and
0 deletions
+666
-0
mysql-test/r/default.result
mysql-test/r/default.result
+367
-0
mysql-test/t/default.test
mysql-test/t/default.test
+299
-0
No files found.
mysql-test/r/default.result
View file @
11ff9014
...
...
@@ -1208,6 +1208,8 @@ SELECT * FROM t1;
a b c
01,5,2013 %d,%m,%Y 2013-05-01
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(30), b VARCHAR(30) DEFAULT DATE_FORMAT(a,'%W %M %Y'));
ERROR HY000: Function or expression 'date_format' is not allowed for 'DEFAULT' of column/constraint 'b'
# Item_datefunc
SET time_zone='-10:00';
SET timestamp=UNIX_TIMESTAMP('2001-01-01 23:59:59');
...
...
@@ -1314,6 +1316,169 @@ a b
20010203102030 2001-02-03 10:20:30
DROP TABLE t1;
#
# Functions with temporal input
#
CREATE TABLE t1 (a INT, b INT, c INT DEFAULT PERIOD_ADD(a,b));
INSERT INTO t1 (a,b) VALUES (200801, 2);
SELECT * FROM t1;
a b c
200801 2 200803
DROP TABLE t1;
CREATE TABLE t1 (a INT, b INT, c INT DEFAULT PERIOD_DIFF(a,b));
INSERT INTO t1 (a,b) VALUES (200802, 200703);
SELECT * FROM t1;
a b c
200802 200703 11
DROP TABLE t1;
CREATE TABLE t1 (a INT, b INT DEFAULT TO_DAYS(a));
INSERT INTO t1 (a) VALUES (950501);
SELECT * FROM t1;
a b
950501 728779
DROP TABLE t1;
CREATE TABLE t1 (a DATE, b INT DEFAULT TO_DAYS(a));
INSERT INTO t1 (a) VALUES ('2007-10-07');
SELECT * FROM t1;
a b
2007-10-07 733321
DROP TABLE t1;
CREATE TABLE t1 (a INT, b BIGINT DEFAULT TO_SECONDS(a));
INSERT INTO t1 (a) VALUES (950501);
SELECT * FROM t1;
a b
950501 62966505600
DROP TABLE t1;
CREATE TABLE t1 (a DATE, b BIGINT DEFAULT TO_SECONDS(a));
INSERT INTO t1 (a) VALUES ('2009-11-29');
SELECT * FROM t1;
a b
2009-11-29 63426672000
DROP TABLE t1;
CREATE TABLE t1 (a DATETIME, b BIGINT DEFAULT TO_SECONDS(a));
INSERT INTO t1 (a) VALUES ('2009-11-29 13:43:32');
SELECT * FROM t1;
a b
2009-11-29 13:43:32 63426721412
DROP TABLE t1;
CREATE TABLE t1 (a DATE, b BIGINT DEFAULT DAYOFMONTH(a));
INSERT INTO t1 (a) VALUES ('2007-02-03');
SELECT * FROM t1;
a b
2007-02-03 3
DROP TABLE t1;
CREATE TABLE t1 (a DATE, b BIGINT DEFAULT DAYOFWEEK(a));
INSERT INTO t1 (a) VALUES ('2007-02-03');
SELECT * FROM t1;
a b
2007-02-03 7
DROP TABLE t1;
CREATE TABLE t1 (a DATE, b BIGINT DEFAULT DAYOFYEAR(a));
INSERT INTO t1 (a) VALUES ('2007-02-03');
SELECT * FROM t1;
a b
2007-02-03 34
DROP TABLE t1;
CREATE TABLE t1 (a TIME, b INT DEFAULT HOUR(a));
INSERT INTO t1 (a) VALUES ('10:05:03');
SELECT * FROM t1;
a b
10:05:03 10
DROP TABLE t1;
CREATE TABLE t1 (a TIME, b INT DEFAULT MINUTE(a));
INSERT INTO t1 (a) VALUES ('10:05:03');
SELECT * FROM t1;
a b
10:05:03 5
DROP TABLE t1;
CREATE TABLE t1 (a TIME, b INT DEFAULT SECOND(a));
INSERT INTO t1 (a) VALUES ('10:05:03');
SELECT * FROM t1;
a b
10:05:03 3
DROP TABLE t1;
CREATE TABLE t1 (a DATETIME(6), b INT DEFAULT MICROSECOND(a));
INSERT INTO t1 (a) VALUES ('2009-12-31 23:59:59.000010');
SELECT * FROM t1;
a b
2009-12-31 23:59:59.000010 10
DROP TABLE t1;
CREATE TABLE t1 (a DATE, b INT DEFAULT YEAR(a));
INSERT INTO t1 (a) VALUES ('1987-01-01');
SELECT * FROM t1;
a b
1987-01-01 1987
DROP TABLE t1;
CREATE TABLE t1 (a DATE, b INT DEFAULT MONTH(a));
INSERT INTO t1 (a) VALUES ('1987-01-01');
SELECT * FROM t1;
a b
1987-01-01 1
DROP TABLE t1;
CREATE TABLE t1 (a DATE, b INT DEFAULT WEEK(a));
INSERT INTO t1 (a) VALUES ('1987-02-01');
SELECT * FROM t1;
a b
1987-02-01 5
DROP TABLE t1;
CREATE TABLE t1 (a DATE, b INT DEFAULT YEARWEEK(a));
INSERT INTO t1 (a) VALUES ('2000-01-01');
SELECT * FROM t1;
a b
2000-01-01 199952
DROP TABLE t1;
CREATE TABLE t1 (a DATE, b INT DEFAULT QUARTER(a));
INSERT INTO t1 (a) VALUES ('2008-04-01');
SELECT * FROM t1;
a b
2008-04-01 2
DROP TABLE t1;
CREATE TABLE t1 (a DATE, b VARCHAR(30) DEFAULT DAYNAME(a));
ERROR HY000: Function or expression 'dayname' is not allowed for 'DEFAULT' of column/constraint 'b'
CREATE TABLE t1 (a DATE, b VARCHAR(30) DEFAULT MONTHNAME(a));
ERROR HY000: Function or expression 'monthname' is not allowed for 'DEFAULT' of column/constraint 'b'
CREATE TABLE t1 (a DATE, b INT DEFAULT EXTRACT(YEAR FROM a));
INSERT INTO t1 (a) VALUES ('2009-07-02');
SELECT * FROM t1;
a b
2009-07-02 2009
DROP TABLE t1;
CREATE TABLE t1 (a DATETIME, b INT DEFAULT EXTRACT(YEAR_MONTH FROM a));
INSERT INTO t1 (a) VALUES ('2009-07-02 01:02:03');
SELECT * FROM t1;
a b
2009-07-02 01:02:03 200907
DROP TABLE t1;
CREATE TABLE t1 (a DATETIME, b INT DEFAULT EXTRACT(DAY_MINUTE FROM a));
INSERT INTO t1 (a) VALUES ('2009-07-02 01:02:03');
SELECT * FROM t1;
a b
2009-07-02 01:02:03 20102
DROP TABLE t1;
CREATE TABLE t1 (a DATETIME(6), b INT DEFAULT EXTRACT(MICROSECOND FROM a));
INSERT INTO t1 (a) VALUES ('2009-07-02 01:02:03.000123');
SELECT * FROM t1;
a b
2009-07-02 01:02:03.000123 123
DROP TABLE t1;
CREATE TABLE t1 (a DATE, b DATE, c INT DEFAULT TIMESTAMPDIFF(MONTH,a,b));
INSERT INTO t1 (a,b) VALUES ('2003-02-01','2003-05-01');
SELECT * FROM t1;
a b c
2003-02-01 2003-05-01 3
DROP TABLE t1;
CREATE TABLE t1 (a DATE, b DATE, c INT DEFAULT TIMESTAMPDIFF(YEAR,a,b));
INSERT INTO t1 (a,b) VALUES ('2002-05-01','2001-01-01');
SELECT * FROM t1;
a b c
2002-05-01 2001-01-01 -1
DROP TABLE t1;
CREATE TABLE t1 (a DATE, b DATETIME, c INT DEFAULT TIMESTAMPDIFF(MINUTE,a,b));
INSERT INTO t1 (a,b) VALUES ('2003-02-01','2003-05-01 12:05:55');
SELECT * FROM t1;
a b c
2003-02-01 2003-05-01 12:05:55 128885
DROP TABLE t1;
#
# Hybrid type functions
#
CREATE TABLE t1 (a INT, b INT, c INT DEFAULT COALESCE(a,b));
...
...
@@ -1414,3 +1579,205 @@ SELECT * FROM t1;
a b c
1 2 2
DROP TABLE t1;
#
# CAST
#
CREATE TABLE t1 (a VARCHAR(30), b DECIMAL(10,6) DEFAULT CAST(a AS DECIMAL(10,1)));
INSERT INTO t1 (a) VALUES ('123.456');
SELECT * FROM t1;
a b
123.456 123.500000
DROP TABLE t1;
CREATE TABLE t1 (a DECIMAL(10,3),
b VARCHAR(10) DEFAULT CAST(a AS CHAR(10)),
c VARCHAR(10) DEFAULT CAST(a AS CHAR(4)));
INSERT INTO t1 (a) VALUES (123.456);
Warnings:
Warning 1292 Truncated incorrect CHAR(4) value: '123.456'
SELECT * FROM t1;
a b c
123.456 123.456 123.
DROP TABLE t1;
CREATE TABLE t1 (a INT, b INT UNSIGNED DEFAULT CAST(a AS UNSIGNED));
INSERT INTO t1 (a) VALUES (-1);
Warnings:
Note 1105 Cast to unsigned converted negative integer to it's positive complement
Warning 1264 Out of range value for column 'b' at row 1
SELECT * FROM t1;
a b
-1 4294967295
DROP TABLE t1;
CREATE TABLE t1 (a BIGINT UNSIGNED, b BIGINT SIGNED DEFAULT CAST(a AS SIGNED));
INSERT INTO t1 (a) VALUES (0xFFFFFFFFFFFFFFFF);
SELECT * FROM t1;
a b
18446744073709551615 -1
DROP TABLE t1;
#
# Bit functions
#
CREATE TABLE t1 (a INT, b INT DEFAULT BIT_COUNT(a));
INSERT INTO t1 (a) VALUES (7);
SELECT * FROM t1;
a b
7 3
DROP TABLE t1;
CREATE TABLE t1 (a INT, b INT, c INT DEFAULT a|b);
INSERT INTO t1 (a,b) VALUES (1,2);
SELECT * FROM t1;
a b c
1 2 3
DROP TABLE t1;
CREATE TABLE t1 (a INT, b INT, c INT DEFAULT a&b);
INSERT INTO t1 (a,b) VALUES (5,4);
SELECT * FROM t1;
a b c
5 4 4
DROP TABLE t1;
CREATE TABLE t1 (a INT, b INT, c INT DEFAULT a^b);
INSERT INTO t1 (a,b) VALUES (11,3);
SELECT * FROM t1;
a b c
11 3 8
DROP TABLE t1;
CREATE TABLE t1 (a INT, b INT, c INT DEFAULT a&~b);
INSERT INTO t1 (a,b) VALUES (5,1);
SELECT * FROM t1;
a b c
5 1 4
DROP TABLE t1;
CREATE TABLE t1 (a INT, b INT, c INT DEFAULT a<<b, d INT DEFAULT a>>b);
INSERT INTO t1 (a,b) VALUES (5,1);
SELECT * FROM t1;
a b c d
5 1 10 2
DROP TABLE t1;
#
# String functions
#
CREATE TABLE t1 (a VARCHAR(10), b VARCHAR(20) DEFAULT REVERSE(a));
INSERT INTO t1 (a) VALUES ('abcd');
SELECT * FROM t1;
a b
abcd dcba
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10), b VARCHAR(10) DEFAULT UPPER(a), c VARCHAR(10) DEFAULT LOWER(a));
INSERT INTO t1 (a) VALUES ('ABcd');
SELECT * FROM t1;
a b c
ABcd ABCD abcd
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10), b VARCHAR(10) DEFAULT LEFT(a,1), c VARCHAR(10) DEFAULT RIGHT(a,1), d VARCHAR(10) DEFAULT SUBSTR(a,2,2));
INSERT INTO t1 (a) VALUES ('abcd');
SELECT * FROM t1;
a b c d
abcd a d bc
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(20), b VARCHAR(20) DEFAULT SUBSTRING_INDEX(a,'.',2));
INSERT INTO t1 (a) VALUES ('www.mariadb.org');
SELECT * FROM t1;
a b
www.mariadb.org www.mariadb
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10), b VARCHAR(10), c VARCHAR(20) DEFAULT CONCAT(a,b));
INSERT INTO t1 (a,b) VALUES ('a','b');
SELECT * FROM t1;
a b c
a b ab
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10), b VARCHAR(10), c VARCHAR(20) DEFAULT CONCAT_WS(',',a,b));
INSERT INTO t1 (a,b) VALUES ('a','b');
SELECT * FROM t1;
a b c
a b a,b
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10), b VARCHAR(10) DEFAULT REPLACE(a,'a','A'));
INSERT INTO t1 (a) VALUES ('abc');
SELECT * FROM t1;
a b
abc Abc
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10), b VARCHAR(10) DEFAULT REGEXP_REPLACE(a,'[0-9]','.'));
INSERT INTO t1 (a) VALUES ('a1b2c');
SELECT * FROM t1;
a b
a1b2c a.b.c
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10), b VARCHAR(10) DEFAULT REGEXP_SUBSTR(a,'[0-9]+'));
INSERT INTO t1 (a) VALUES ('ab12cd');
SELECT * FROM t1;
a b
ab12cd 12
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(20), b VARCHAR(20) DEFAULT SOUNDEX(a));
INSERT INTO t1 (a) VALUES ('tester');
SELECT * FROM t1;
a b
tester T236
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(20), b VARCHAR(20) DEFAULT QUOTE(a));
INSERT INTO t1 (a) VALUES ('a\'b');
SELECT * FROM t1;
a b
a'b 'a\'b'
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10), b VARCHAR(10) DEFAULT LPAD(a,10,'.'), c VARCHAR(10) DEFAULT RPAD(a,10,'.'));
INSERT INTO t1 (a) VALUES ('ab');
SELECT * FROM t1;
a b c
ab ........ab ab........
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10), b VARCHAR(10) DEFAULT LTRIM(a), c VARCHAR(10) DEFAULT RTRIM(a));
INSERT INTO t1 (a) VALUES (' ab ');
SELECT a, HEX(b), HEX(c) FROM t1;
a HEX(b) HEX(c)
ab 616220 206162
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10), b VARCHAR(10) DEFAULT TRIM(BOTH 'a' FROM a));
INSERT INTO t1 (a) VALUES ('abba');
SELECT a, b FROM t1;
a b
abba bb
DROP TABLE t1;
CREATE TABLE t1 (a INT, b VARCHAR(10) DEFAULT SPACE(a));
INSERT INTO t1 (a) VALUES (3);
SELECT a, HEX(b) FROM t1;
a HEX(b)
3 202020
DROP TABLE t1;
CREATE TABLE t1 (a INT, b VARCHAR(10), c VARCHAR(10) DEFAULT REPEAT(b,a));
INSERT INTO t1 (a,b) VALUES (3,'x');
SELECT a, b, c FROM t1;
a b c
3 x xxx
DROP TABLE t1;
CREATE TABLE t1 (str VARCHAR(10), pos INT, len INT, newstr VARCHAR(10), result VARCHAR(10) DEFAULT INSERT(str,pos,len,newstr));
INSERT INTO t1 (str,pos,len,newstr) VALUES ('Quadratic', 3, 4, 'What');
SELECT * FROM t1;
str pos len newstr result
Quadratic 3 4 What QuWhattic
DROP TABLE t1;
CREATE TABLE t1 (n INT, res VARCHAR(10) DEFAULT ELT(n,'ej', 'Heja', 'hej', 'foo'));
INSERT INTO t1 (n) VALUES (1);
SELECT * FROM t1;
n res
1 ej
DROP TABLE t1;
CREATE TABLE t1 (bits INT, res VARCHAR(10) DEFAULT MAKE_SET(bits,'a','b','c','d'));
INSERT INTO t1 (bits) VALUES (1|4);
SELECT * FROM t1;
bits res
5 a,c
DROP TABLE t1;
CREATE TABLE t1 (a INT, b VARCHAR(10) DEFAULT CHAR(a));
INSERT INTO t1 (a) VALUES (77);
SELECT * FROM t1;
a b
77 M
DROP TABLE t1;
CREATE TABLE t1 (a INT, b VARCHAR(10) DEFAULT CONV(a,10,16));
INSERT INTO t1 (a) VALUES (64);
SELECT * FROM t1;
a b
64 40
DROP TABLE t1;
mysql-test/t/default.test
View file @
11ff9014
...
...
@@ -935,6 +935,8 @@ INSERT INTO t1 VALUES ('01,5,2013','%d,%m,%Y', DEFAULT);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
--
error
ER_VIRTUAL_COLUMN_FUNCTION_IS_NOT_ALLOWED
CREATE
TABLE
t1
(
a
VARCHAR
(
30
),
b
VARCHAR
(
30
)
DEFAULT
DATE_FORMAT
(
a
,
'%W %M %Y'
));
--
echo
# Item_datefunc
...
...
@@ -1032,6 +1034,139 @@ SELECT * FROM t1;
DROP
TABLE
t1
;
--
echo
#
--
echo
# Functions with temporal input
--
echo
#
CREATE
TABLE
t1
(
a
INT
,
b
INT
,
c
INT
DEFAULT
PERIOD_ADD
(
a
,
b
));
INSERT
INTO
t1
(
a
,
b
)
VALUES
(
200801
,
2
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
INT
,
b
INT
,
c
INT
DEFAULT
PERIOD_DIFF
(
a
,
b
));
INSERT
INTO
t1
(
a
,
b
)
VALUES
(
200802
,
200703
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
INT
,
b
INT
DEFAULT
TO_DAYS
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
950501
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
DATE
,
b
INT
DEFAULT
TO_DAYS
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'2007-10-07'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
INT
,
b
BIGINT
DEFAULT
TO_SECONDS
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
950501
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
DATE
,
b
BIGINT
DEFAULT
TO_SECONDS
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'2009-11-29'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
DATETIME
,
b
BIGINT
DEFAULT
TO_SECONDS
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'2009-11-29 13:43:32'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
DATE
,
b
BIGINT
DEFAULT
DAYOFMONTH
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'2007-02-03'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
DATE
,
b
BIGINT
DEFAULT
DAYOFWEEK
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'2007-02-03'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
DATE
,
b
BIGINT
DEFAULT
DAYOFYEAR
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'2007-02-03'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
TIME
,
b
INT
DEFAULT
HOUR
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'10:05:03'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
TIME
,
b
INT
DEFAULT
MINUTE
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'10:05:03'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
TIME
,
b
INT
DEFAULT
SECOND
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'10:05:03'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
DATETIME
(
6
),
b
INT
DEFAULT
MICROSECOND
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'2009-12-31 23:59:59.000010'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
DATE
,
b
INT
DEFAULT
YEAR
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'1987-01-01'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
DATE
,
b
INT
DEFAULT
MONTH
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'1987-01-01'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
# QQ: this depends on @@default_week_format.
CREATE
TABLE
t1
(
a
DATE
,
b
INT
DEFAULT
WEEK
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'1987-02-01'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
DATE
,
b
INT
DEFAULT
YEARWEEK
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'2000-01-01'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
DATE
,
b
INT
DEFAULT
QUARTER
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'2008-04-01'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
# QQ: this depends on @@lc_time_names
--
error
ER_VIRTUAL_COLUMN_FUNCTION_IS_NOT_ALLOWED
CREATE
TABLE
t1
(
a
DATE
,
b
VARCHAR
(
30
)
DEFAULT
DAYNAME
(
a
));
--
error
ER_VIRTUAL_COLUMN_FUNCTION_IS_NOT_ALLOWED
CREATE
TABLE
t1
(
a
DATE
,
b
VARCHAR
(
30
)
DEFAULT
MONTHNAME
(
a
));
CREATE
TABLE
t1
(
a
DATE
,
b
INT
DEFAULT
EXTRACT
(
YEAR
FROM
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'2009-07-02'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
DATETIME
,
b
INT
DEFAULT
EXTRACT
(
YEAR_MONTH
FROM
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'2009-07-02 01:02:03'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
DATETIME
,
b
INT
DEFAULT
EXTRACT
(
DAY_MINUTE
FROM
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'2009-07-02 01:02:03'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
DATETIME
(
6
),
b
INT
DEFAULT
EXTRACT
(
MICROSECOND
FROM
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'2009-07-02 01:02:03.000123'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
DATE
,
b
DATE
,
c
INT
DEFAULT
TIMESTAMPDIFF
(
MONTH
,
a
,
b
));
INSERT
INTO
t1
(
a
,
b
)
VALUES
(
'2003-02-01'
,
'2003-05-01'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
DATE
,
b
DATE
,
c
INT
DEFAULT
TIMESTAMPDIFF
(
YEAR
,
a
,
b
));
INSERT
INTO
t1
(
a
,
b
)
VALUES
(
'2002-05-01'
,
'2001-01-01'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
DATE
,
b
DATETIME
,
c
INT
DEFAULT
TIMESTAMPDIFF
(
MINUTE
,
a
,
b
));
INSERT
INTO
t1
(
a
,
b
)
VALUES
(
'2003-02-01'
,
'2003-05-01 12:05:55'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
--
echo
#
--
echo
# Hybrid type functions
...
...
@@ -1117,3 +1252,167 @@ CREATE TABLE t1 (a INT, b INT, c INT DEFAULT LAST_VALUE(a,b));
INSERT
INTO
t1
VALUES
(
1
,
2
,
DEFAULT
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
--
echo
#
--
echo
# CAST
--
echo
#
CREATE
TABLE
t1
(
a
VARCHAR
(
30
),
b
DECIMAL
(
10
,
6
)
DEFAULT
CAST
(
a
AS
DECIMAL
(
10
,
1
)));
INSERT
INTO
t1
(
a
)
VALUES
(
'123.456'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
DECIMAL
(
10
,
3
),
b
VARCHAR
(
10
)
DEFAULT
CAST
(
a
AS
CHAR
(
10
)),
c
VARCHAR
(
10
)
DEFAULT
CAST
(
a
AS
CHAR
(
4
)));
INSERT
INTO
t1
(
a
)
VALUES
(
123.456
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
INT
,
b
INT
UNSIGNED
DEFAULT
CAST
(
a
AS
UNSIGNED
));
INSERT
INTO
t1
(
a
)
VALUES
(
-
1
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
BIGINT
UNSIGNED
,
b
BIGINT
SIGNED
DEFAULT
CAST
(
a
AS
SIGNED
));
INSERT
INTO
t1
(
a
)
VALUES
(
0xFFFFFFFFFFFFFFFF
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
--
echo
#
--
echo
# Bit functions
--
echo
#
CREATE
TABLE
t1
(
a
INT
,
b
INT
DEFAULT
BIT_COUNT
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
7
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
INT
,
b
INT
,
c
INT
DEFAULT
a
|
b
);
INSERT
INTO
t1
(
a
,
b
)
VALUES
(
1
,
2
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
INT
,
b
INT
,
c
INT
DEFAULT
a
&
b
);
INSERT
INTO
t1
(
a
,
b
)
VALUES
(
5
,
4
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
INT
,
b
INT
,
c
INT
DEFAULT
a
^
b
);
INSERT
INTO
t1
(
a
,
b
)
VALUES
(
11
,
3
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
INT
,
b
INT
,
c
INT
DEFAULT
a
&~
b
);
INSERT
INTO
t1
(
a
,
b
)
VALUES
(
5
,
1
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
INT
,
b
INT
,
c
INT
DEFAULT
a
<<
b
,
d
INT
DEFAULT
a
>>
b
);
INSERT
INTO
t1
(
a
,
b
)
VALUES
(
5
,
1
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
--
echo
#
--
echo
# String functions
--
echo
#
CREATE
TABLE
t1
(
a
VARCHAR
(
10
),
b
VARCHAR
(
20
)
DEFAULT
REVERSE
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'abcd'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
VARCHAR
(
10
),
b
VARCHAR
(
10
)
DEFAULT
UPPER
(
a
),
c
VARCHAR
(
10
)
DEFAULT
LOWER
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'ABcd'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
VARCHAR
(
10
),
b
VARCHAR
(
10
)
DEFAULT
LEFT
(
a
,
1
),
c
VARCHAR
(
10
)
DEFAULT
RIGHT
(
a
,
1
),
d
VARCHAR
(
10
)
DEFAULT
SUBSTR
(
a
,
2
,
2
));
INSERT
INTO
t1
(
a
)
VALUES
(
'abcd'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
VARCHAR
(
20
),
b
VARCHAR
(
20
)
DEFAULT
SUBSTRING_INDEX
(
a
,
'.'
,
2
));
INSERT
INTO
t1
(
a
)
VALUES
(
'www.mariadb.org'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
VARCHAR
(
10
),
b
VARCHAR
(
10
),
c
VARCHAR
(
20
)
DEFAULT
CONCAT
(
a
,
b
));
INSERT
INTO
t1
(
a
,
b
)
VALUES
(
'a'
,
'b'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
VARCHAR
(
10
),
b
VARCHAR
(
10
),
c
VARCHAR
(
20
)
DEFAULT
CONCAT_WS
(
','
,
a
,
b
));
INSERT
INTO
t1
(
a
,
b
)
VALUES
(
'a'
,
'b'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
VARCHAR
(
10
),
b
VARCHAR
(
10
)
DEFAULT
REPLACE
(
a
,
'a'
,
'A'
));
INSERT
INTO
t1
(
a
)
VALUES
(
'abc'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
VARCHAR
(
10
),
b
VARCHAR
(
10
)
DEFAULT
REGEXP_REPLACE
(
a
,
'[0-9]'
,
'.'
));
INSERT
INTO
t1
(
a
)
VALUES
(
'a1b2c'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
VARCHAR
(
10
),
b
VARCHAR
(
10
)
DEFAULT
REGEXP_SUBSTR
(
a
,
'[0-9]+'
));
INSERT
INTO
t1
(
a
)
VALUES
(
'ab12cd'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
VARCHAR
(
20
),
b
VARCHAR
(
20
)
DEFAULT
SOUNDEX
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'tester'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
VARCHAR
(
20
),
b
VARCHAR
(
20
)
DEFAULT
QUOTE
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'a\'b'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
VARCHAR
(
10
),
b
VARCHAR
(
10
)
DEFAULT
LPAD
(
a
,
10
,
'.'
),
c
VARCHAR
(
10
)
DEFAULT
RPAD
(
a
,
10
,
'.'
));
INSERT
INTO
t1
(
a
)
VALUES
(
'ab'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
VARCHAR
(
10
),
b
VARCHAR
(
10
)
DEFAULT
LTRIM
(
a
),
c
VARCHAR
(
10
)
DEFAULT
RTRIM
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
' ab '
);
SELECT
a
,
HEX
(
b
),
HEX
(
c
)
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
VARCHAR
(
10
),
b
VARCHAR
(
10
)
DEFAULT
TRIM
(
BOTH
'a'
FROM
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
'abba'
);
SELECT
a
,
b
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
INT
,
b
VARCHAR
(
10
)
DEFAULT
SPACE
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
3
);
SELECT
a
,
HEX
(
b
)
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
INT
,
b
VARCHAR
(
10
),
c
VARCHAR
(
10
)
DEFAULT
REPEAT
(
b
,
a
));
INSERT
INTO
t1
(
a
,
b
)
VALUES
(
3
,
'x'
);
SELECT
a
,
b
,
c
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
str
VARCHAR
(
10
),
pos
INT
,
len
INT
,
newstr
VARCHAR
(
10
),
result
VARCHAR
(
10
)
DEFAULT
INSERT
(
str
,
pos
,
len
,
newstr
));
INSERT
INTO
t1
(
str
,
pos
,
len
,
newstr
)
VALUES
(
'Quadratic'
,
3
,
4
,
'What'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
n
INT
,
res
VARCHAR
(
10
)
DEFAULT
ELT
(
n
,
'ej'
,
'Heja'
,
'hej'
,
'foo'
));
INSERT
INTO
t1
(
n
)
VALUES
(
1
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
bits
INT
,
res
VARCHAR
(
10
)
DEFAULT
MAKE_SET
(
bits
,
'a'
,
'b'
,
'c'
,
'd'
));
INSERT
INTO
t1
(
bits
)
VALUES
(
1
|
4
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
INT
,
b
VARCHAR
(
10
)
DEFAULT
CHAR
(
a
));
INSERT
INTO
t1
(
a
)
VALUES
(
77
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
INT
,
b
VARCHAR
(
10
)
DEFAULT
CONV
(
a
,
10
,
16
));
INSERT
INTO
t1
(
a
)
VALUES
(
64
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment