mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
ea1b25046c
When updating a table with virtual BLOB columns, the following might happen: - an old record is read from the table, it has no virtual blob values - update_virtual_fields() is run, vcol blob gets its value into the record. But only a pointer to the value is in the table->record[0], the value is in Field_blob::value String (but it doesn't have to be! it can be in the record, if the column is just a copy of another columns: ... b VARCHAR, c BLOB AS (b) ...) - store_record(table,record[1]), old record now is in record[1] - fill_record() prepares new values in record[0], vcol blob is updated, new value replaces the old one in the Field_blob::value - now both record[1] and record[0] have a pointer that points to the *new* vcol blob value. Or record[1] has a pointer to nowhere if Field_blob::value had to realloc. To fix this I have introduced a new String object 'read_value' in Field_blob. When updating virtual columns when a row has been read, the allocated value is stored in 'read_value' instead of 'value'. The allocated blobs for the new row is stored in 'value' as before. I also made, as a safety precaution, the insert delayed handling of blobs more general by using value to store strings instead of the record. This ensures that virtual functions on delayed insert should work in as in the case of normal insert. Triggers are now properly updating the read, write and vcol maps for used fields. This means that we don't need VCOL_UPDATE_FOR_READ_WRITE anymore and there is no need for any other special handling of triggers in update_virtual_fields(). To be able to test how many times virtual fields are invoked, I also relaxed rules that one can use local (@) variables in DEFAULT and non persistent virtual field expressions.
3313 lines
98 KiB
Text
3313 lines
98 KiB
Text
drop table if exists t1,t2,t3,t4,t5,t6;
|
||
drop database if exists mysqltest;
|
||
set sql_mode="";
|
||
CREATE TABLE t1 (a varchar(30) binary NOT NULL DEFAULT ' ',
|
||
b varchar(1) binary NOT NULL DEFAULT ' ',
|
||
c varchar(4) binary NOT NULL DEFAULT '0000',
|
||
d tinyblob NULL,
|
||
e tinyblob NULL,
|
||
f tinyblob NULL,
|
||
g tinyblob NULL,
|
||
h tinyblob NULL,
|
||
i tinyblob NULL,
|
||
j tinyblob NULL,
|
||
k tinyblob NULL,
|
||
l tinyblob NULL,
|
||
m tinyblob NULL,
|
||
n tinyblob NULL,
|
||
o tinyblob NULL,
|
||
p tinyblob NULL,
|
||
q varchar(30) binary NOT NULL DEFAULT ' ',
|
||
r varchar(30) binary NOT NULL DEFAULT ' ',
|
||
s tinyblob NULL,
|
||
t varchar(4) binary NOT NULL DEFAULT ' ',
|
||
u varchar(1) binary NOT NULL DEFAULT ' ',
|
||
v varchar(30) binary NOT NULL DEFAULT ' ',
|
||
w varchar(30) binary NOT NULL DEFAULT ' ',
|
||
x tinyblob NULL,
|
||
y varchar(5) binary NOT NULL DEFAULT ' ',
|
||
z varchar(20) binary NOT NULL DEFAULT ' ',
|
||
a1 varchar(30) binary NOT NULL DEFAULT ' ',
|
||
b1 tinyblob NULL)
|
||
ENGINE=InnoDB DEFAULT CHARACTER SET = latin1 COLLATE latin1_bin;
|
||
set sql_mode=default;
|
||
INSERT into t1 (b) values ('1');
|
||
SHOW WARNINGS;
|
||
Level Code Message
|
||
SELECT * from t1;
|
||
a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1
|
||
1 0000 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
||
CREATE TABLE t2 (a varchar(30) binary NOT NULL DEFAULT ' ',
|
||
b varchar(1) binary NOT NULL DEFAULT ' ',
|
||
c varchar(4) binary NOT NULL DEFAULT '0000',
|
||
d tinyblob NULL,
|
||
e tinyblob NULL,
|
||
f tinyblob NULL,
|
||
g tinyblob NULL,
|
||
h tinyblob NULL,
|
||
i tinyblob NULL,
|
||
j tinyblob NULL,
|
||
k tinyblob NULL,
|
||
l tinyblob NULL,
|
||
m tinyblob NULL,
|
||
n tinyblob NULL,
|
||
o tinyblob NULL,
|
||
p tinyblob NULL,
|
||
q varchar(30) binary NOT NULL DEFAULT ' ',
|
||
r varchar(30) binary NOT NULL DEFAULT ' ',
|
||
s tinyblob NULL,
|
||
t varchar(4) binary NOT NULL DEFAULT ' ',
|
||
u varchar(1) binary NOT NULL DEFAULT ' ',
|
||
v varchar(30) binary NOT NULL DEFAULT ' ',
|
||
w varchar(30) binary NOT NULL DEFAULT ' ',
|
||
x tinyblob NULL,
|
||
y varchar(5) binary NOT NULL DEFAULT ' ',
|
||
z varchar(20) binary NOT NULL DEFAULT ' ',
|
||
a1 varchar(30) binary NOT NULL DEFAULT ' ',
|
||
b1 tinyblob NULL)
|
||
ENGINE=MyISAM DEFAULT CHARACTER SET = latin1 COLLATE latin1_bin;
|
||
SHOW CREATE TABLE t2;
|
||
Table Create Table
|
||
t2 CREATE TABLE `t2` (
|
||
`a` varchar(30) COLLATE latin1_bin NOT NULL DEFAULT ' ',
|
||
`b` varchar(1) COLLATE latin1_bin NOT NULL DEFAULT ' ',
|
||
`c` varchar(4) COLLATE latin1_bin NOT NULL DEFAULT '0000',
|
||
`d` tinyblob DEFAULT NULL,
|
||
`e` tinyblob DEFAULT NULL,
|
||
`f` tinyblob DEFAULT NULL,
|
||
`g` tinyblob DEFAULT NULL,
|
||
`h` tinyblob DEFAULT NULL,
|
||
`i` tinyblob DEFAULT NULL,
|
||
`j` tinyblob DEFAULT NULL,
|
||
`k` tinyblob DEFAULT NULL,
|
||
`l` tinyblob DEFAULT NULL,
|
||
`m` tinyblob DEFAULT NULL,
|
||
`n` tinyblob DEFAULT NULL,
|
||
`o` tinyblob DEFAULT NULL,
|
||
`p` tinyblob DEFAULT NULL,
|
||
`q` varchar(30) COLLATE latin1_bin NOT NULL DEFAULT ' ',
|
||
`r` varchar(30) COLLATE latin1_bin NOT NULL DEFAULT ' ',
|
||
`s` tinyblob DEFAULT NULL,
|
||
`t` varchar(4) COLLATE latin1_bin NOT NULL DEFAULT ' ',
|
||
`u` varchar(1) COLLATE latin1_bin NOT NULL DEFAULT ' ',
|
||
`v` varchar(30) COLLATE latin1_bin NOT NULL DEFAULT ' ',
|
||
`w` varchar(30) COLLATE latin1_bin NOT NULL DEFAULT ' ',
|
||
`x` tinyblob DEFAULT NULL,
|
||
`y` varchar(5) COLLATE latin1_bin NOT NULL DEFAULT ' ',
|
||
`z` varchar(20) COLLATE latin1_bin NOT NULL DEFAULT ' ',
|
||
`a1` varchar(30) COLLATE latin1_bin NOT NULL DEFAULT ' ',
|
||
`b1` tinyblob DEFAULT NULL
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_bin
|
||
INSERT into t2 (b) values ('1');
|
||
SHOW WARNINGS;
|
||
Level Code Message
|
||
SELECT * from t2;
|
||
a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1
|
||
1 0000 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
||
drop table t1;
|
||
drop table t2;
|
||
create table bug20691 (i int, d datetime NOT NULL, dn datetime not null default '0000-00-00 00:00:00');
|
||
insert into bug20691 values (1, DEFAULT, DEFAULT), (1, '1975-07-10 07:10:03', '1978-01-13 14:08:51'), (1, DEFAULT, DEFAULT);
|
||
Warnings:
|
||
Warning 1364 Field 'd' doesn't have a default value
|
||
Warning 1364 Field 'd' doesn't have a default value
|
||
insert into bug20691 (i) values (2);
|
||
Warnings:
|
||
Warning 1364 Field 'd' doesn't have a default value
|
||
desc bug20691;
|
||
Field Type Null Key Default Extra
|
||
i int(11) YES NULL
|
||
d datetime NO NULL
|
||
dn datetime NO 0000-00-00 00:00:00
|
||
insert into bug20691 values (3, DEFAULT, DEFAULT), (3, '1975-07-10 07:10:03', '1978-01-13 14:08:51'), (3, DEFAULT, DEFAULT);
|
||
Warnings:
|
||
Warning 1364 Field 'd' doesn't have a default value
|
||
Warning 1364 Field 'd' doesn't have a default value
|
||
insert into bug20691 (i) values (4);
|
||
Warnings:
|
||
Warning 1364 Field 'd' doesn't have a default value
|
||
insert into bug20691 values (5, DEFAULT, DEFAULT), (5, '1975-07-10 07:10:03', '1978-01-13 14:08:51'), (5, DEFAULT, DEFAULT);
|
||
Warnings:
|
||
Warning 1364 Field 'd' doesn't have a default value
|
||
Warning 1364 Field 'd' doesn't have a default value
|
||
SET sql_mode = 'ALLOW_INVALID_DATES';
|
||
insert into bug20691 values (6, DEFAULT, DEFAULT), (6, '1975-07-10 07:10:03', '1978-01-13 14:08:51'), (6, DEFAULT, DEFAULT);
|
||
Warnings:
|
||
Warning 1364 Field 'd' doesn't have a default value
|
||
Warning 1364 Field 'd' doesn't have a default value
|
||
SET sql_mode = 'STRICT_ALL_TABLES';
|
||
insert into bug20691 values (7, DEFAULT, DEFAULT), (7, '1975-07-10 07:10:03', '1978-01-13 14:08:51'), (7, DEFAULT, DEFAULT);
|
||
ERROR HY000: Field 'd' doesn't have a default value
|
||
select * from bug20691 order by i asc;
|
||
i d dn
|
||
1 0000-00-00 00:00:00 0000-00-00 00:00:00
|
||
1 1975-07-10 07:10:03 1978-01-13 14:08:51
|
||
1 0000-00-00 00:00:00 0000-00-00 00:00:00
|
||
2 0000-00-00 00:00:00 0000-00-00 00:00:00
|
||
3 0000-00-00 00:00:00 0000-00-00 00:00:00
|
||
3 1975-07-10 07:10:03 1978-01-13 14:08:51
|
||
3 0000-00-00 00:00:00 0000-00-00 00:00:00
|
||
4 0000-00-00 00:00:00 0000-00-00 00:00:00
|
||
5 0000-00-00 00:00:00 0000-00-00 00:00:00
|
||
5 1975-07-10 07:10:03 1978-01-13 14:08:51
|
||
5 0000-00-00 00:00:00 0000-00-00 00:00:00
|
||
6 0000-00-00 00:00:00 0000-00-00 00:00:00
|
||
6 1975-07-10 07:10:03 1978-01-13 14:08:51
|
||
6 0000-00-00 00:00:00 0000-00-00 00:00:00
|
||
drop table bug20691;
|
||
SET sql_mode = '';
|
||
create table bug20691 (
|
||
a set('one', 'two', 'three') not null,
|
||
b enum('small', 'medium', 'large', 'enormous', 'ellisonego') not null,
|
||
c time not null,
|
||
d date not null,
|
||
e int not null,
|
||
f long not null,
|
||
g blob not null,
|
||
h datetime not null,
|
||
i decimal not null,
|
||
x int);
|
||
insert into bug20691 values (2, 3, 5, '0007-01-01', 11, 13, 17, '0019-01-01 00:00:00', 23, 1);
|
||
insert into bug20691 (x) values (2);
|
||
Warnings:
|
||
Warning 1364 Field 'a' doesn't have a default value
|
||
Warning 1364 Field 'c' doesn't have a default value
|
||
Warning 1364 Field 'd' doesn't have a default value
|
||
Warning 1364 Field 'e' doesn't have a default value
|
||
Warning 1364 Field 'f' doesn't have a default value
|
||
Warning 1364 Field 'g' doesn't have a default value
|
||
Warning 1364 Field 'h' doesn't have a default value
|
||
Warning 1364 Field 'i' doesn't have a default value
|
||
insert into bug20691 values (2, 3, 5, '0007-01-01', 11, 13, 17, '0019-01-01 00:00:00', 23, 3);
|
||
insert into bug20691 values (DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, 4);
|
||
Warnings:
|
||
Warning 1364 Field 'a' doesn't have a default value
|
||
Warning 1364 Field 'c' doesn't have a default value
|
||
Warning 1364 Field 'd' doesn't have a default value
|
||
Warning 1364 Field 'e' doesn't have a default value
|
||
Warning 1364 Field 'f' doesn't have a default value
|
||
Warning 1364 Field 'g' doesn't have a default value
|
||
Warning 1364 Field 'h' doesn't have a default value
|
||
Warning 1364 Field 'i' doesn't have a default value
|
||
select * from bug20691 order by x asc;
|
||
a b c d e f g h i x
|
||
two large 00:00:05 0007-01-01 11 13 17 0019-01-01 00:00:00 23 1
|
||
small 00:00:00 0000-00-00 0 0000-00-00 00:00:00 0 2
|
||
two large 00:00:05 0007-01-01 11 13 17 0019-01-01 00:00:00 23 3
|
||
small 00:00:00 0000-00-00 0 0000-00-00 00:00:00 0 4
|
||
drop table bug20691;
|
||
create table t1 (id int not null);
|
||
insert into t1 values(default);
|
||
Warnings:
|
||
Warning 1364 Field 'id' doesn't have a default value
|
||
create view v1 (c) as select id from t1;
|
||
insert into t1 values(default);
|
||
Warnings:
|
||
Warning 1364 Field 'id' doesn't have a default value
|
||
drop view v1;
|
||
drop table t1;
|
||
create table t1 (a int unique);
|
||
create table t2 (b int default 10);
|
||
insert into t1 (a) values (1);
|
||
insert into t2 (b) values (1);
|
||
insert into t1 (a) select b from t2 on duplicate key update a=default;
|
||
select * from t1;
|
||
a
|
||
NULL
|
||
insert into t1 (a) values (1);
|
||
insert into t1 (a) select b from t2 on duplicate key update a=default(b);
|
||
select * from t1;
|
||
a
|
||
NULL
|
||
10
|
||
drop table t1, t2;
|
||
# End of 5.0 tests
|
||
#
|
||
# Start of 10.0 tests
|
||
#
|
||
#
|
||
# MDEV-11265 Access defied when CREATE VIIEW v1 AS SELECT DEFAULT(column) FROM t1
|
||
#
|
||
CREATE TABLE t1 (a INT DEFAULT 10);
|
||
INSERT INTO t1 VALUES (11);
|
||
CREATE VIEW v1 AS SELECT a AS a FROM t1;
|
||
CREATE VIEW v2 AS SELECT DEFAULT(a) AS a FROM t1;
|
||
CREATE VIEW v3 AS SELECT VALUES(a) AS a FROM t1;
|
||
SELECT * FROM v1;
|
||
a
|
||
11
|
||
SELECT * FROM v2;
|
||
a
|
||
10
|
||
SELECT * FROM v3;
|
||
a
|
||
NULL
|
||
UPDATE v2 SET a=123;
|
||
ERROR HY000: Column 'a' is not updatable
|
||
UPDATE v3 SET a=123;
|
||
ERROR HY000: Column 'a' is not updatable
|
||
DROP VIEW v3;
|
||
DROP VIEW v2;
|
||
DROP VIEW v1;
|
||
DROP TABLE t1;
|
||
#
|
||
# MDEV-10780 Server crashes in in create_tmp_table
|
||
#
|
||
connect con1,localhost,root,,test;
|
||
CREATE TABLE t1 (pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=MyISAM;
|
||
INSERT INTO t1 VALUES ();
|
||
INSERT INTO t1 VALUES ();
|
||
SELECT DISTINCT DEFAULT (pk) FROM t1 GROUP BY RAND() WITH ROLLUP;
|
||
DEFAULT (pk)
|
||
0
|
||
disconnect con1;
|
||
connection default;
|
||
DROP TABLE t1;
|
||
#
|
||
# End of 10.0 tests
|
||
#
|
||
#
|
||
# Start of 10.1 tests
|
||
#
|
||
CREATE TABLE t1 (a INT DEFAULT 100, b INT DEFAULT NULL);
|
||
INSERT INTO t1 VALUES ();
|
||
SELECT * FROM t1 WHERE DEFAULT(a);
|
||
a b
|
||
100 NULL
|
||
SELECT * FROM t1 WHERE DEFAULT(b);
|
||
a b
|
||
DROP TABLE IF EXISTS t1;
|
||
#
|
||
# End of 10.1 tests
|
||
#
|
||
#
|
||
# Start of 10.2 tests
|
||
#
|
||
SET timestamp=UNIX_TIMESTAMP('2001-01-01 10:20:30.123456');
|
||
#
|
||
# Check that CURRENT_TIMESTAMP works as before
|
||
#
|
||
CREATE or replace TABLE t1 (event_time TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`event_time` timestamp(6) NOT NULL DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
CREATE or replace TABLE t1 (event_time TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(2) ON UPDATE CURRENT_TIMESTAMP);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`event_time` timestamp(6) NOT NULL DEFAULT current_timestamp(2) ON UPDATE current_timestamp(6)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
CREATE or replace TABLE t1 (event_time TIMESTAMP(6) NOT NULL DEFAULT SYSDATE(2) ON UPDATE CURRENT_TIMESTAMP);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`event_time` timestamp(6) NOT NULL DEFAULT sysdate(2) ON UPDATE current_timestamp(6)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
drop table t1;
|
||
#
|
||
# Check default expressions
|
||
#
|
||
create or replace table t1 (a int default 1, b int default (a+1), c int default (a+b)) engine myisam;
|
||
show create table t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT 1,
|
||
`b` int(11) DEFAULT (`a` + 1),
|
||
`c` int(11) DEFAULT (`a` + `b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
insert into t1 values ();
|
||
insert into t1 (a) values (2);
|
||
insert into t1 (a,b) values (10,20);
|
||
insert into t1 (a,b,c) values (100,200,400);
|
||
select * from t1;
|
||
a b c
|
||
1 2 3
|
||
2 3 5
|
||
10 20 30
|
||
100 200 400
|
||
truncate table t1;
|
||
insert delayed into t1 values ();
|
||
insert delayed into t1 (a) values (2);
|
||
insert delayed into t1 (a,b) values (10,20);
|
||
insert delayed into t1 (a,b,c) values (100,200,400);
|
||
flush tables t1;
|
||
select * from t1;
|
||
a b c
|
||
1 2 3
|
||
2 3 5
|
||
10 20 30
|
||
100 200 400
|
||
create or replace table t1 (a int, b blob default (1), c blob default "hello", t text default concat(a,b,c)) engine=myisam;
|
||
show create table t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` blob DEFAULT 1,
|
||
`c` blob DEFAULT 'hello',
|
||
`t` text DEFAULT concat(`a`,`b`,`c`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
insert into t1 (a) values (2);
|
||
insert into t1 (a,b) values (10,"test1");
|
||
insert into t1 (a,b,c) values (10,"test2","test3");
|
||
insert delayed into t1 (a,b) values (10,"test4");
|
||
flush tables t1;
|
||
select * from t1;
|
||
a b c t
|
||
2 1 hello 21hello
|
||
10 test1 hello 10test1hello
|
||
10 test2 test3 10test2test3
|
||
10 test4 hello 10test4hello
|
||
drop table t1;
|
||
create or replace table t1 (a bigint default uuid_short());
|
||
insert into t1 values();
|
||
select a > 0 from t1;
|
||
a > 0
|
||
1
|
||
drop table t1;
|
||
create or replace table t1 (param_list int DEFAULT (1+1) NOT NULL);
|
||
create or replace table t1 (param_list int DEFAULT 1+1 NOT NULL);
|
||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '+1 NOT NULL)' at line 1
|
||
create or replace table t1 (param_list blob DEFAULT "" NOT NULL);
|
||
drop table t1;
|
||
create table t1 (a int);
|
||
insert into t1 values(-1);
|
||
alter table t1 add b int default 1, add c int default -1, add d int default (1+1), add e timestamp;
|
||
select a,b,c,d,e from t1;
|
||
a b c d e
|
||
-1 1 -1 2 2001-01-01 10:20:30
|
||
insert into t1 values(10,10,10,10,0);
|
||
alter table t1 add f int default (1+1+1) null, add g int default (1+1+1+1) not null,add h int default (2+2+2+2);
|
||
select a,b,c,d,e,f,g,h from t1;
|
||
a b c d e f g h
|
||
-1 1 -1 2 2001-01-01 10:20:30 3 4 8
|
||
10 10 10 10 0000-00-00 00:00:00 3 4 8
|
||
show create table t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT 1,
|
||
`c` int(11) DEFAULT -1,
|
||
`d` int(11) DEFAULT (1 + 1),
|
||
`e` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
||
`f` int(11) DEFAULT (1 + 1 + 1),
|
||
`g` int(11) NOT NULL DEFAULT (1 + 1 + 1 + 1),
|
||
`h` int(11) DEFAULT (2 + 2 + 2 + 2)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
create table t2 like t1;
|
||
show create table t2;
|
||
Table Create Table
|
||
t2 CREATE TABLE `t2` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT 1,
|
||
`c` int(11) DEFAULT -1,
|
||
`d` int(11) DEFAULT (1 + 1),
|
||
`e` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
||
`f` int(11) DEFAULT (1 + 1 + 1),
|
||
`g` int(11) NOT NULL DEFAULT (1 + 1 + 1 + 1),
|
||
`h` int(11) DEFAULT (2 + 2 + 2 + 2)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
insert into t2 (a) values (100);
|
||
select a,b,c,d,e,f,g,h from t2;
|
||
a b c d e f g h
|
||
100 1 -1 2 2001-01-01 10:20:30 3 4 8
|
||
drop table t1,t2;
|
||
create table t1 (a int default (1----1), b int default - 1, c int default +1, e int default (--1));
|
||
show create table t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT (1 - -1),
|
||
`b` int(11) DEFAULT -1,
|
||
`c` int(11) DEFAULT 1,
|
||
`e` int(11) DEFAULT 1
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
insert into t1 values();
|
||
insert into t1 values();
|
||
select * from t1;
|
||
a b c e
|
||
2 -1 1 1
|
||
2 -1 1 1
|
||
drop table t1;
|
||
#
|
||
# Create or replace can delete a table on error
|
||
#
|
||
create table t1 (a int);
|
||
create or replace table t1 (a int default b, b int default a);
|
||
ERROR 01000: Expression for field `a` is refering to uninitialized field `b`
|
||
show create table t1;
|
||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||
#
|
||
# Refering to other columns
|
||
#
|
||
create or replace table t1 (a int default 1, b int default a);
|
||
create or replace table t1 (a int default 1, b int as (a));
|
||
create or replace table t1 (a int default b, b int default 1);
|
||
create or replace table t1 (a int as (b), b int default 1);
|
||
create or replace table t1 (a int as (b), b int default (1+1));
|
||
create or replace table t1 (a int default 1, b int as (c), c int default (a+1));
|
||
create or replace table t1 (a int default (1+1), b int as (c), c int default (a+1));
|
||
create or replace table t1 (a varchar(128) default @@version);
|
||
create or replace table t1 (a int not null, b int as (a));
|
||
create or replace table t1 (a int not null, b int default (a+1));
|
||
create or replace table t1 (a int default a);
|
||
ERROR 01000: Expression for field `a` is refering to uninitialized field `a`
|
||
create or replace table t1 (a int default b, b int default (1+1));
|
||
create or replace table t1 (a int default 1, b int as (c), c int as (a+1));
|
||
ERROR 01000: Expression for field `b` is refering to uninitialized field `c`
|
||
CREATE TABLE t1 (a INT DEFAULT (DEFAULT(a)));
|
||
ERROR 01000: Expression for field `a` is refering to uninitialized field `a`
|
||
CREATE TABLE t1 (a INT DEFAULT(DEFAULT(b)), b INT DEFAULT(DEFAULT(a)));
|
||
ERROR 01000: Expression for field `a` is refering to uninitialized field `b`
|
||
CREATE TABLE t1 (a INT DEFAULT(DEFAULT(b)) NOT NULL, b INT DEFAULT(DEFAULT(a)) NOT NULL);
|
||
ERROR 01000: Expression for field `a` is refering to uninitialized field `b`
|
||
#
|
||
# Allow defaults to refer to not default fields
|
||
#
|
||
create or replace table t1 (a int default b, b int not null);
|
||
insert into t1 values();
|
||
Warnings:
|
||
Warning 1364 Field 'b' doesn't have a default value
|
||
insert into t1 (a) values(1);
|
||
Warnings:
|
||
Warning 1364 Field 'b' doesn't have a default value
|
||
insert into t1 (b) values(2);
|
||
insert into t1 (a,b) values(3,4);
|
||
select * from t1;
|
||
a b
|
||
0 0
|
||
1 0
|
||
2 2
|
||
3 4
|
||
drop table t1;
|
||
CREATE OR REPLACE TABLE t1 (a INT DEFAULT @v);
|
||
drop table t1;
|
||
CREATE TABLE t1 (a INT DEFAULT @v:=1);
|
||
drop table t1;
|
||
#
|
||
# Error handling
|
||
#
|
||
create or replace table t1 (a bigint default xxx());
|
||
ERROR HY000: Function or expression '`xxx`()' cannot be used in the DEFAULT clause of `a`
|
||
create or replace table t1 (a bigint default (select (1)));
|
||
ERROR HY000: Function or expression 'select ...' cannot be used in the DEFAULT clause of `a`
|
||
create or replace table t1 (a bigint default (1,2,3));
|
||
ERROR 21000: Operand should contain 1 column(s)
|
||
create or replace table t1 (a bigint default ((1,2,3)));
|
||
ERROR 21000: Operand should contain 1 column(s)
|
||
CREATE TABLE t1 (a INT, b INT, c INT DEFAULT a DIV b);
|
||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DIV b)' at line 1
|
||
CREATE TABLE t1 (a INT, b INT DEFAULT -a);
|
||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'a)' at line 1
|
||
#
|
||
# Invalid DEFAULT expressions
|
||
#
|
||
CREATE TABLE t1 (a INT DEFAULT ((SELECT 1)));
|
||
ERROR HY000: Function or expression 'select ...' cannot be used in the DEFAULT clause of `a`
|
||
CREATE TABLE t1 (a INT DEFAULT (EXISTS (SELECT 1)));
|
||
ERROR HY000: Function or expression 'select ...' cannot be used in the DEFAULT clause of `a`
|
||
CREATE TABLE t1 (a INT DEFAULT (1=ANY (SELECT 1)));
|
||
ERROR HY000: Function or expression 'select ...' cannot be used in the DEFAULT clause of `a`
|
||
CREATE TABLE t1 (a INT DEFAULT ROW(1,1));
|
||
ERROR 21000: Operand should contain 1 column(s)
|
||
CREATE TABLE t1 (a INT DEFAULT (1,1));
|
||
ERROR 21000: Operand should contain 1 column(s)
|
||
CREATE TABLE t1 (a INT DEFAULT ((1,1)));
|
||
ERROR 21000: Operand should contain 1 column(s)
|
||
CREATE TABLE t1 (a INT DEFAULT ?);
|
||
Got one of the listed errors
|
||
CREATE TABLE t1 (a INT DEFAULT(?));
|
||
Got one of the listed errors
|
||
CREATE TABLE t1 (a INT DEFAULT (b), b INT DEFAULT(a));
|
||
ERROR 01000: Expression for field `a` is refering to uninitialized field `b`
|
||
CREATE TABLE t1 (a INT DEFAULT(NAME_CONST('xxx', 'yyy'));
|
||
ERROR HY000: Function or expression 'name_const()' cannot be used in the DEFAULT clause of `a`
|
||
CREATE TABLE t1 (a INT DEFAULT COUNT(*));
|
||
ERROR HY000: Function or expression 'count()' cannot be used in the DEFAULT clause of `a`
|
||
CREATE TABLE t1 (a INT DEFAULT COUNT(1));
|
||
ERROR HY000: Function or expression 'count()' cannot be used in the DEFAULT clause of `a`
|
||
CREATE TABLE t1 (a INT DEFAULT AVG(1));
|
||
ERROR HY000: Function or expression 'avg()' cannot be used in the DEFAULT clause of `a`
|
||
CREATE TABLE t1 (a INT DEFAULT MIN(1));
|
||
ERROR HY000: Function or expression 'min()' cannot be used in the DEFAULT clause of `a`
|
||
CREATE TABLE t1 (a INT DEFAULT GROUP_CONCAT(1));
|
||
ERROR HY000: Function or expression 'group_concat()' cannot be used in the DEFAULT clause of `a`
|
||
CREATE TABLE t1 (a INT DEFAULT ROW_NUMBER() OVER ());
|
||
ERROR HY000: Function or expression 'row_number()' cannot be used in the DEFAULT clause of `a`
|
||
CREATE FUNCTION f1() RETURNS INT RETURN 1;
|
||
CREATE TABLE t1 (a INT DEFAULT f1());
|
||
ERROR HY000: Function or expression '`f1`()' cannot be used in the DEFAULT clause of `a`
|
||
DROP FUNCTION f1;
|
||
CREATE PROCEDURE p1(par INT) CREATE TABLE t1 (a INT DEFAULT par);
|
||
ERROR HY000: Function or expression 'par' cannot be used in the DEFAULT clause of `a`
|
||
CREATE TABLE t1 (a INT DEFAULT par);
|
||
ERROR 42S22: Unknown column 'par' in 'virtual column function'
|
||
CREATE PROCEDURE p1() CREATE TABLE t1 (a INT DEFAULT par);
|
||
CALL p1;
|
||
ERROR 42S22: Unknown column 'par' in 'virtual column function'
|
||
DROP PROCEDURE p1;
|
||
CREATE TABLE t1 (a INT DEFAULT VALUES(a));
|
||
ERROR HY000: Function or expression 'values()' cannot be used in the DEFAULT clause of `a`
|
||
CREATE TABLE t1 (a INT);
|
||
CREATE TRIGGER tr1 AFTER INSERT ON t1 FOR EACH ROW CREATE TABLE t2 (a INT DEFAULT NEW.a);
|
||
ERROR HY000: Function or expression 'NEW.a' cannot be used in the DEFAULT clause of `a`
|
||
CREATE TRIGGER tr1 AFTER INSERT ON t1 FOR EACH ROW CREATE TEMPORARY TABLE t2 (a INT DEFAULT NEW.a);
|
||
ERROR HY000: Function or expression 'NEW.a' cannot be used in the DEFAULT clause of `a`
|
||
DROP TABLE t1;
|
||
#
|
||
# Prepared statements
|
||
#
|
||
PREPARE stmt FROM 'CREATE TABLE t1 (a INT DEFAULT(?))';
|
||
set @a=1;
|
||
execute stmt using @a;
|
||
show create table t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT 1
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
drop table t1;
|
||
set @a=-1;
|
||
execute stmt using @a;
|
||
show create table t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT -1
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
drop table t1;
|
||
DEALLOCATE PREPARE stmt;
|
||
PREPARE stmt FROM 'CREATE TABLE t1 (a INT DEFAULT(?), b INT DEFAULT(?))';
|
||
set @a=1, @b=2;
|
||
execute stmt using @a,@b;
|
||
show create table t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT 1,
|
||
`b` int(11) DEFAULT 2
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
drop table t1;
|
||
DEALLOCATE PREPARE stmt;
|
||
prepare stmt from 'create table t1 (a int default(?+?))';
|
||
set @a=1;
|
||
execute stmt using @a,@a;
|
||
deallocate prepare stmt;
|
||
show create table t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT (1 + 1)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
drop table t1;
|
||
#
|
||
# Parenthesized Item_basic_constant
|
||
#
|
||
CREATE TABLE t1 (
|
||
i01 INT DEFAULT (((1))),
|
||
i02 INT DEFAULT (((0x3939))),
|
||
i03 INT DEFAULT (((1.0))),
|
||
i04 INT DEFAULT (((1e0))),
|
||
i05 INT DEFAULT (((NULL))),
|
||
f01 DOUBLE DEFAULT (((PI()))),
|
||
s01 VARCHAR(10) DEFAULT (((_latin1'test'))),
|
||
s02 VARCHAR(10) DEFAULT ((('test'))),
|
||
s03 VARCHAR(10) DEFAULT (((0x40))),
|
||
s04 VARCHAR(10) DEFAULT (((X'40'))),
|
||
s05 VARCHAR(10) DEFAULT (((B'1000000'))),
|
||
d01 TIME DEFAULT (((TIME'10:20:30'))),
|
||
d02 DATE DEFAULT (((DATE'2001-01-01'))),
|
||
d03 DATETIME DEFAULT (((TIMESTAMP'2001-01-01 10:20:30')))
|
||
);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`i01` int(11) DEFAULT 1,
|
||
`i02` int(11) DEFAULT 14649,
|
||
`i03` int(11) DEFAULT 1,
|
||
`i04` int(11) DEFAULT 1,
|
||
`i05` int(11) DEFAULT NULL,
|
||
`f01` double DEFAULT 3.141592653589793,
|
||
`s01` varchar(10) DEFAULT 'test',
|
||
`s02` varchar(10) DEFAULT 'test',
|
||
`s03` varchar(10) DEFAULT '@',
|
||
`s04` varchar(10) DEFAULT '@',
|
||
`s05` varchar(10) DEFAULT '@',
|
||
`d01` time DEFAULT '10:20:30',
|
||
`d02` date DEFAULT '2001-01-01',
|
||
`d03` datetime DEFAULT '2001-01-01 10:20:30'
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES ();
|
||
SELECT * FROM t1;
|
||
i01 1
|
||
i02 14649
|
||
i03 1
|
||
i04 1
|
||
i05 NULL
|
||
f01 3.141592653589793
|
||
s01 test
|
||
s02 test
|
||
s03 @
|
||
s04 @
|
||
s05 @
|
||
d01 10:20:30
|
||
d02 2001-01-01
|
||
d03 2001-01-01 10:20:30
|
||
DROP TABLE t1;
|
||
#
|
||
# COALESCE(Item_basic_constant)
|
||
#
|
||
CREATE TABLE t1 (
|
||
i01 INT DEFAULT COALESCE(1),
|
||
i02 INT DEFAULT COALESCE(0x3939),
|
||
i03 INT DEFAULT COALESCE(1.0),
|
||
i04 INT DEFAULT COALESCE(1e0),
|
||
i05 INT DEFAULT COALESCE(NULL),
|
||
f01 DOUBLE DEFAULT COALESCE(PI()),
|
||
s01 VARCHAR(10) DEFAULT COALESCE(_latin1'test'),
|
||
s02 VARCHAR(10) DEFAULT COALESCE('test'),
|
||
s03 VARCHAR(10) DEFAULT COALESCE(0x40),
|
||
s04 VARCHAR(10) DEFAULT COALESCE(X'40'),
|
||
s05 VARCHAR(10) DEFAULT COALESCE(B'1000000'),
|
||
d01 TIME DEFAULT COALESCE(TIME'10:20:30'),
|
||
d02 DATE DEFAULT COALESCE(DATE'2001-01-01'),
|
||
d03 DATETIME DEFAULT COALESCE(TIMESTAMP'2001-01-01 10:20:30')
|
||
);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`i01` int(11) DEFAULT coalesce(1),
|
||
`i02` int(11) DEFAULT coalesce(0x3939),
|
||
`i03` int(11) DEFAULT coalesce(1.0),
|
||
`i04` int(11) DEFAULT coalesce(1e0),
|
||
`i05` int(11) DEFAULT coalesce(NULL),
|
||
`f01` double DEFAULT coalesce(pi()),
|
||
`s01` varchar(10) DEFAULT coalesce(_latin1'test'),
|
||
`s02` varchar(10) DEFAULT coalesce('test'),
|
||
`s03` varchar(10) DEFAULT coalesce(0x40),
|
||
`s04` varchar(10) DEFAULT coalesce(X'40'),
|
||
`s05` varchar(10) DEFAULT coalesce(0x40),
|
||
`d01` time DEFAULT coalesce(TIME'10:20:30'),
|
||
`d02` date DEFAULT coalesce(DATE'2001-01-01'),
|
||
`d03` datetime DEFAULT coalesce(TIMESTAMP'2001-01-01 10:20:30')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES ();
|
||
SELECT * FROM t1;
|
||
i01 1
|
||
i02 99
|
||
i03 1
|
||
i04 1
|
||
i05 NULL
|
||
f01 3.141592653589793
|
||
s01 test
|
||
s02 test
|
||
s03 @
|
||
s04 @
|
||
s05 @
|
||
d01 10:20:30
|
||
d02 2001-01-01
|
||
d03 2001-01-01 10:20:30
|
||
DROP TABLE t1;
|
||
#
|
||
# TINYINT: out of range
|
||
#
|
||
CREATE TABLE t1 (a TINYINT DEFAULT 300 NOT NULL);
|
||
ERROR 42000: Invalid default value for 'a'
|
||
CREATE TABLE t1 (a TINYINT DEFAULT 128 NOT NULL);
|
||
ERROR 42000: Invalid default value for 'a'
|
||
CREATE TABLE t1 (a TINYINT DEFAULT -500 NOT NULL);
|
||
ERROR 42000: Invalid default value for 'a'
|
||
#
|
||
# INT: simple numeric expressions
|
||
#
|
||
CREATE TABLE t1 (a INT DEFAULT 1 NOT NULL);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) NOT NULL DEFAULT 1
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (DEFAULT);
|
||
SELECT * FROM t1;
|
||
a
|
||
1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT DEFAULT COALESCE(1) NOT NULL);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) NOT NULL DEFAULT coalesce(1)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (DEFAULT);
|
||
SELECT * FROM t1;
|
||
a
|
||
1
|
||
DROP TABLE t1;
|
||
#
|
||
# INT: simple string expressions
|
||
#
|
||
CREATE TABLE t1 (a INT DEFAULT '1' NOT NULL);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) NOT NULL DEFAULT 1
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (DEFAULT);
|
||
SELECT * FROM t1;
|
||
a
|
||
1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT DEFAULT CONCAT('1') NOT NULL);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) NOT NULL DEFAULT concat('1')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (DEFAULT);
|
||
SELECT * FROM t1;
|
||
a
|
||
1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT DEFAULT COALESCE('1') NOT NULL);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) NOT NULL DEFAULT coalesce('1')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (DEFAULT);
|
||
SELECT * FROM t1;
|
||
a
|
||
1
|
||
DROP TABLE t1;
|
||
#
|
||
# INT: string expressions with garbage
|
||
#
|
||
CREATE TABLE t1 (a INT DEFAULT 'x');
|
||
ERROR 42000: Invalid default value for 'a'
|
||
CREATE TABLE t1 (a INT DEFAULT CONCAT('x'));
|
||
ERROR 42000: Invalid default value for 'a'
|
||
CREATE TABLE t1 (a INT DEFAULT COALESCE('x'));
|
||
ERROR 42000: Invalid default value for 'a'
|
||
CREATE TABLE t1 (a INT DEFAULT (((((COALESCE('x')))))));
|
||
ERROR 42000: Invalid default value for 'a'
|
||
#
|
||
# INT: string expressions with numbers + garbage
|
||
#
|
||
CREATE TABLE t1 (a INT DEFAULT '1x');
|
||
ERROR 42000: Invalid default value for 'a'
|
||
CREATE TABLE t1 (a INT DEFAULT COALESCE('1x'));
|
||
ERROR 42000: Invalid default value for 'a'
|
||
CREATE TABLE t1 (a INT DEFAULT CONCAT('1x'));
|
||
ERROR 42000: Invalid default value for 'a'
|
||
#
|
||
# INT: string expressions with numbers + trailing space
|
||
#
|
||
CREATE TABLE t1 (a INT DEFAULT '1 ');
|
||
Warnings:
|
||
Note 1265 Data truncated for column 'a' at row 1
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT 1
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (DEFAULT);
|
||
SELECT * FROM t1;
|
||
a
|
||
1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT DEFAULT CONCAT('1 '));
|
||
Warnings:
|
||
Note 1265 Data truncated for column 'a' at row 1
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT concat('1 ')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (DEFAULT);
|
||
Warnings:
|
||
Note 1265 Data truncated for column 'a' at row 1
|
||
SELECT * FROM t1;
|
||
a
|
||
1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT DEFAULT COALESCE('1 '));
|
||
Warnings:
|
||
Note 1265 Data truncated for column 'a' at row 1
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT coalesce('1 ')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (DEFAULT);
|
||
Warnings:
|
||
Note 1265 Data truncated for column 'a' at row 1
|
||
SELECT * FROM t1;
|
||
a
|
||
1
|
||
DROP TABLE t1;
|
||
#
|
||
# INT: a HEX value
|
||
#
|
||
CREATE TABLE t1 (a INT DEFAULT 0x61 NOT NULL);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) NOT NULL DEFAULT 97
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (DEFAULT);
|
||
SELECT * FROM t1;
|
||
a
|
||
97
|
||
DROP TABLE t1;
|
||
#
|
||
# VARCHAR: good defaults
|
||
#
|
||
CREATE TABLE t1 (a VARCHAR(30) DEFAULT 'xxx' NOT NULL);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(30) NOT NULL DEFAULT 'xxx'
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (DEFAULT);
|
||
SELECT * FROM t1;
|
||
a
|
||
xxx
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(2) DEFAULT 0x41 NOT NULL);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(2) NOT NULL DEFAULT 'A'
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(2) DEFAULT CONCAT(0x41) NOT NULL);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(2) NOT NULL DEFAULT concat(0x41)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (DEFAULT);
|
||
SELECT * FROM t1;
|
||
a
|
||
A
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(2) DEFAULT COALESCE(0x41) NOT NULL);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(2) NOT NULL DEFAULT coalesce(0x41)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (DEFAULT);
|
||
SELECT * FROM t1;
|
||
a
|
||
A
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(2) DEFAULT CONCAT(_utf8 0x41) NOT NULL);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(2) NOT NULL DEFAULT concat(_utf8'A')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (DEFAULT);
|
||
SELECT * FROM t1;
|
||
a
|
||
A
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(2) DEFAULT CONCAT(_utf8 X'41') NOT NULL);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(2) NOT NULL DEFAULT concat(_utf8'A')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (DEFAULT);
|
||
SELECT * FROM t1;
|
||
a
|
||
A
|
||
DROP TABLE t1;
|
||
#
|
||
# VARCHAR: Too long default
|
||
#
|
||
CREATE TABLE t1 (a VARCHAR(2) DEFAULT 'xxx' NOT NULL);
|
||
ERROR 42000: Invalid default value for 'a'
|
||
CREATE TABLE t1 (a VARCHAR(2) DEFAULT CONCAT('xxx') NOT NULL);
|
||
ERROR 42000: Invalid default value for 'a'
|
||
#
|
||
# VARCHAR: Too long default with non-important data
|
||
#
|
||
CREATE TABLE t1 (a VARCHAR(2) DEFAULT 'xx ' NOT NULL);
|
||
ERROR 42000: Invalid default value for 'a'
|
||
CREATE TABLE t1 (a VARCHAR(2) DEFAULT CONCAT('xx ') NOT NULL);
|
||
ERROR 42000: Invalid default value for 'a'
|
||
#
|
||
# VARCHAR: conversion failures
|
||
#
|
||
CREATE TABLE t1 (a VARCHAR(2) CHARACTER SET latin1 DEFAULT _utf8 X'D18F' NOT NULL);
|
||
ERROR 42000: Invalid default value for 'a'
|
||
CREATE TABLE t1 (a VARCHAR(2) CHARACTER SET latin1 DEFAULT CONCAT(_utf8 X'D18F') NOT NULL);
|
||
ERROR 42000: Invalid default value for 'a'
|
||
CREATE TABLE t1 (a VARCHAR(2) CHARACTER SET latin1 DEFAULT CONCAT(_utf8 0xD18F) NOT NULL);
|
||
ERROR 42000: Invalid default value for 'a'
|
||
#
|
||
# Field as a default value
|
||
#
|
||
CREATE TABLE t1 (a INT, b INT DEFAULT (a));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT `a`
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (1, 1);
|
||
INSERT INTO t1 VALUES (DEFAULT, DEFAULT);
|
||
INSERT INTO t1 VALUES (1, DEFAULT);
|
||
INSERT INTO t1 VALUES (DEFAULT, 1);
|
||
SELECT * FROM t1;
|
||
a b
|
||
1 1
|
||
NULL NULL
|
||
1 1
|
||
NULL 1
|
||
DROP TABLE t1;
|
||
#
|
||
# Function DEFAULT(field)
|
||
#
|
||
CREATE TABLE t1 (a INT DEFAULT(DEFAULT(b)), b INT DEFAULT 1);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT default(`b`),
|
||
`b` int(11) DEFAULT 1
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (DEFAULT, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b
|
||
1 1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT DEFAULT 1, b INT DEFAULT(DEFAULT(a)));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT 1,
|
||
`b` int(11) DEFAULT default(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (DEFAULT, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b
|
||
1 1
|
||
DROP TABLE t1;
|
||
#
|
||
# SQL Standard <datetime value function> as a <default option>
|
||
#
|
||
CREATE TABLE t1 (a DATETIME DEFAULT CURRENT_TIMESTAMP);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` datetime DEFAULT current_timestamp()
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a TIME DEFAULT CURRENT_TIME);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` time DEFAULT curtime()
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a DATE DEFAULT CURRENT_DATE);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` date DEFAULT curdate()
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
DROP TABLE t1;
|
||
#
|
||
# DECIMAL + CURRENT_TIMESTAMP, no truncation
|
||
#
|
||
CREATE TABLE t1 (a DECIMAL(30,6) DEFAULT CURRENT_TIMESTAMP(6));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` decimal(30,6) DEFAULT current_timestamp(6)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES ();
|
||
SELECT * FROM t1;
|
||
a
|
||
20010101102030.123456
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a DECIMAL(30,6) DEFAULT COALESCE(CURRENT_TIMESTAMP(6)));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` decimal(30,6) DEFAULT coalesce(current_timestamp(6))
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES();
|
||
Warnings:
|
||
Warning 1265 Data truncated for column 'a' at row 1
|
||
INSERT IGNORE INTO t1 VALUES();
|
||
Warnings:
|
||
Warning 1265 Data truncated for column 'a' at row 1
|
||
SET sql_mode = 'STRICT_ALL_TABLES';
|
||
INSERT INTO t1 VALUES();
|
||
ERROR 01000: Data truncated for column 'a' at row 1
|
||
SET sql_mode = DEFAULT;
|
||
DROP TABLE t1;
|
||
#
|
||
# DECIMAL + CURRENT_TIME, no truncation
|
||
#
|
||
CREATE TABLE t1 (a DECIMAL(30,6) DEFAULT COALESCE(CURRENT_TIME(6)));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` decimal(30,6) DEFAULT coalesce(curtime(6))
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES();
|
||
Warnings:
|
||
Warning 1265 Data truncated for column 'a' at row 1
|
||
DROP TABLE t1;
|
||
#
|
||
# DECIMAL + CURRENT_DATE, no truncation
|
||
#
|
||
CREATE TABLE t1 (a DECIMAL(30,6) DEFAULT COALESCE(CURRENT_DATE));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` decimal(30,6) DEFAULT coalesce(curdate())
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES();
|
||
Warnings:
|
||
Warning 1265 Data truncated for column 'a' at row 1
|
||
DROP TABLE t1;
|
||
#
|
||
# COALESCE for SQL Standard <datetime value function>
|
||
#
|
||
CREATE TABLE t1 (a TIMESTAMP DEFAULT COALESCE(CURRENT_TIMESTAMP));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` timestamp NOT NULL DEFAULT coalesce(current_timestamp())
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a DATE DEFAULT COALESCE(CURRENT_DATE));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` date DEFAULT coalesce(curdate())
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a TIME DEFAULT COALESCE(CURRENT_TIME));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` time DEFAULT coalesce(curtime())
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (
|
||
a TIMESTAMP DEFAULT CURRENT_TIMESTAMP(6),
|
||
b TIMESTAMP DEFAULT COALESCE(CURRENT_TIMESTAMP(6))
|
||
);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` timestamp NOT NULL DEFAULT current_timestamp(),
|
||
`b` timestamp NOT NULL DEFAULT coalesce(current_timestamp(6))
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES ();
|
||
SELECT CURRENT_TIMESTAMP(6);
|
||
CURRENT_TIMESTAMP(6)
|
||
2001-01-01 10:20:30.123456
|
||
SELECT * FROM t1;
|
||
a b
|
||
2001-01-01 10:20:30 2001-01-01 10:20:30
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (
|
||
a DECIMAL(30,0) DEFAULT CURRENT_TIMESTAMP(6),
|
||
b DECIMAL(30,0) DEFAULT COALESCE(CURRENT_TIMESTAMP(6))
|
||
);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` decimal(30,0) DEFAULT current_timestamp(6),
|
||
`b` decimal(30,0) DEFAULT coalesce(current_timestamp(6))
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES ();
|
||
Warnings:
|
||
Note 1265 Data truncated for column 'a' at row 1
|
||
Warning 1265 Data truncated for column 'b' at row 1
|
||
SELECT * FROM t1;
|
||
a b
|
||
20010101102030 2001
|
||
DROP TABLE t1;
|
||
#
|
||
# Check DEFAULT() function
|
||
#
|
||
CREATE TABLE `t1` (`a` int(11) DEFAULT (3+3),`b` int(11) DEFAULT '1000');
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT (3 + 3),
|
||
`b` int(11) DEFAULT 1000
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
insert into t1 values (1,1),(2,2);
|
||
insert into t1 values (default,default);
|
||
select * from t1;
|
||
a b
|
||
1 1
|
||
2 2
|
||
6 1000
|
||
select default(a),b from t1;
|
||
default(a) b
|
||
6 1
|
||
6 2
|
||
6 1000
|
||
select a,default(b) from t1;
|
||
a default(b)
|
||
1 1000
|
||
2 1000
|
||
6 1000
|
||
drop table t1;
|
||
#
|
||
# Real functions
|
||
#
|
||
CREATE TABLE t1 (a DECIMAL(10,1), b DOUBLE DEFAULT CAST(a AS DOUBLE));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` decimal(10,1) DEFAULT NULL,
|
||
`b` double DEFAULT (cast(`a` as double))
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (10.1, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b
|
||
10.1 10.1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a DOUBLE, b DOUBLE DEFAULT EXP(a), c DOUBLE DEFAULT LOG(b), d DOUBLE DEFAULT LOG(4, b));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` double DEFAULT NULL,
|
||
`b` double DEFAULT exp(`a`),
|
||
`c` double DEFAULT log(`b`),
|
||
`d` double DEFAULT log(4,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (2, DEFAULT, DEFAULT, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b c d
|
||
2 7.38905609893065 2 1.4426950408889634
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT, b DOUBLE DEFAULT LOG2(a), c DOUBLE DEFAULT LOG10(a));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` double DEFAULT log2(`a`),
|
||
`c` double DEFAULT log10(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (4, DEFAULT, DEFAULT);
|
||
INSERT INTO t1 VALUES (100, DEFAULT, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b c
|
||
4 2 0.6020599913279624
|
||
100 6.643856189774725 2
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a DOUBLE, b DOUBLE DEFAULT SQRT(a), c DOUBLE DEFAULT POW(a,3));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` double DEFAULT NULL,
|
||
`b` double DEFAULT sqrt(`a`),
|
||
`c` double DEFAULT pow(`a`,3)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (4, DEFAULT, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b c
|
||
4 2 64
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a DOUBLE, b DOUBLE DEFAULT ACOS(a), c DOUBLE DEFAULT ASIN(a), d DOUBLE DEFAULT ATAN(a));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` double DEFAULT NULL,
|
||
`b` double DEFAULT acos(`a`),
|
||
`c` double DEFAULT asin(`a`),
|
||
`d` double DEFAULT atan(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (1, DEFAULT, DEFAULT, DEFAULT);
|
||
SELECT a, b/PI(), c/PI(), d/PI() FROM t1;
|
||
a b/PI() c/PI() d/PI()
|
||
1 0 0.5 0.25
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a DOUBLE, b DOUBLE DEFAULT COS(a), c DOUBLE DEFAULT SIN(a), d DOUBLE DEFAULT TAN(a), e DOUBLE DEFAULT COT(a));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` double DEFAULT NULL,
|
||
`b` double DEFAULT cos(`a`),
|
||
`c` double DEFAULT sin(`a`),
|
||
`d` double DEFAULT tan(`a`),
|
||
`e` double DEFAULT cot(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES (PI()/3);
|
||
SELECT ROUND(a,3), ROUND(b,3), ROUND(c,3), ROUND(d,3), ROUND(e,3) FROM t1;
|
||
ROUND(a,3) ROUND(b,3) ROUND(c,3) ROUND(d,3) ROUND(e,3)
|
||
1.047 0.500 0.866 1.732 0.577
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a DOUBLE DEFAULT RAND());
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` double DEFAULT rand()
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (DEFAULT);
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a DOUBLE, b DOUBLE DEFAULT DEGREES(a), c DOUBLE DEFAULT RADIANS(b));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` double DEFAULT NULL,
|
||
`b` double DEFAULT degrees(`a`),
|
||
`c` double DEFAULT radians(`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (PI(), DEFAULT, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b c
|
||
3.141592653589793 180 3.141592653589793
|
||
DROP TABLE t1;
|
||
#
|
||
# INT result functions
|
||
#
|
||
CREATE TABLE t1 (a INT, b INT DEFAULT INTERVAL(a, 10, 20, 30, 40));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT interval(`a`,10,20,30,40)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES (34);
|
||
SELECT * FROM t1;
|
||
a b
|
||
34 3
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT, b INT, c INT DEFAULT (a DIV b));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT NULL,
|
||
`c` int(11) DEFAULT (`a` DIV `b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a, b) VALUES (13, 3);
|
||
SELECT * FROM t1;
|
||
a b c
|
||
13 3 4
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT, b INT DEFAULT SIGN(a));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT sign(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES (-10),(0), (10);
|
||
SELECT * FROM t1;
|
||
a b
|
||
-10 -1
|
||
0 0
|
||
10 1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(30), b INT DEFAULT FIELD(a, 'Hej', 'ej', 'Heja', 'hej', 'foo'));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(30) DEFAULT NULL,
|
||
`b` int(11) DEFAULT field(`a`,'Hej','ej','Heja','hej','foo')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES ('ej');
|
||
SELECT * FROM t1;
|
||
a b
|
||
ej 2
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(30), b INT DEFAULT FIND_IN_SET(a, 'Hej,ej,Heja,hej,foo'));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(30) DEFAULT NULL,
|
||
`b` int(11) DEFAULT find_in_set(`a`,'Hej,ej,Heja,hej,foo')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES ('ej');
|
||
SELECT * FROM t1;
|
||
a b
|
||
ej 2
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(30), b INT DEFAULT ASCII(a), c INT DEFAULT ORD(a));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(30) DEFAULT NULL,
|
||
`b` int(11) DEFAULT ascii(`a`),
|
||
`c` int(11) DEFAULT ord(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES ('a');
|
||
SELECT * FROM t1;
|
||
a b c
|
||
a 97 97
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a TEXT DEFAULT UUID_SHORT());
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` text DEFAULT uuid_short()
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES ();
|
||
SELECT a>0 FROM t1;
|
||
a>0
|
||
1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT DEFAULT BENCHMARK(1,1));
|
||
ERROR HY000: Function or expression 'benchmark()' cannot be used in the DEFAULT clause of `a`
|
||
CREATE TABLE t1 (a INT DEFAULT GET_LOCK('a',1));
|
||
ERROR HY000: Function or expression 'get_lock()' cannot be used in the DEFAULT clause of `a`
|
||
CREATE TABLE t1 (a INT DEFAULT RELEASE_LOCK('a'));
|
||
ERROR HY000: Function or expression 'release_lock()' cannot be used in the DEFAULT clause of `a`
|
||
CREATE TABLE t1 (a INT DEFAULT IS_USED_LOCK('a'));
|
||
ERROR HY000: Function or expression 'is_used_lock()' cannot be used in the DEFAULT clause of `a`
|
||
CREATE TABLE t1 (a INT DEFAULT IS_FREE_LOCK('a'));
|
||
ERROR HY000: Function or expression 'is_free_lock()' cannot be used in the DEFAULT clause of `a`
|
||
CREATE TABLE t1 (a INT DEFAULT SLEEP(1));
|
||
ERROR HY000: Function or expression 'sleep()' cannot be used in the DEFAULT clause of `a`
|
||
CREATE TABLE t1 (a INT DEFAULT ROW_COUNT());
|
||
ERROR HY000: Function or expression 'row_count()' cannot be used in the DEFAULT clause of `a`
|
||
CREATE TABLE t1 (a INT DEFAULT FOUND_ROWS());
|
||
ERROR HY000: Function or expression 'found_rows()' cannot be used in the DEFAULT clause of `a`
|
||
CREATE TABLE t1 (a INT DEFAULT MASTER_POS_WAIT('test',100));
|
||
ERROR HY000: Function or expression 'master_pos_wait()' cannot be used in the DEFAULT clause of `a`
|
||
CREATE TABLE t1 (a INT DEFAULT MASTER_GTID_WAIT('test'));
|
||
ERROR HY000: Function or expression 'master_gtid_wait()' cannot be used in the DEFAULT clause of `a`
|
||
CREATE TABLE t1 (a VARCHAR(30), b DOUBLE DEFAULT MATCH (a) AGAINST('bbbb' IN BOOLEAN MODE));
|
||
ERROR HY000: Function or expression 'match ... against()' cannot be used in the DEFAULT clause of `b`
|
||
#
|
||
# Temporal functions
|
||
#
|
||
# Item_temporal_hybrid_func
|
||
CREATE TABLE t1 (a DATE, b INT, c DATE DEFAULT DATE_ADD(a, INTERVAL b DAY));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` date DEFAULT NULL,
|
||
`b` int(11) DEFAULT NULL,
|
||
`c` date DEFAULT (`a` + interval `b` day)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES ('2001-01-01', 30, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b c
|
||
2001-01-01 30 2001-01-31
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a DATE, b TIME, c DATETIME DEFAULT ADDTIME(a, b));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` date DEFAULT NULL,
|
||
`b` time DEFAULT NULL,
|
||
`c` datetime DEFAULT addtime(`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES ('2001-01-01', '10:20:30', DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b c
|
||
2001-01-01 10:20:30 2001-01-01 10:20:30
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(32), b VARCHAR(32), c DATE DEFAULT STR_TO_DATE(a,b));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(32) DEFAULT NULL,
|
||
`b` varchar(32) DEFAULT NULL,
|
||
`c` date DEFAULT str_to_date(`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES ('01,5,2013','%d,%m,%Y', DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b c
|
||
01,5,2013 %d,%m,%Y 2013-05-01
|
||
DROP TABLE t1;
|
||
# Item_datefunc
|
||
SET time_zone='-10:00';
|
||
SET timestamp=UNIX_TIMESTAMP('2001-01-01 23:59:59');
|
||
CREATE TABLE t1 (a DATE DEFAULT CURDATE(), b DATE DEFAULT UTC_DATE());
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` date DEFAULT curdate(),
|
||
`b` date DEFAULT utc_date()
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES ();
|
||
SELECT * FROM t1;
|
||
a b
|
||
2001-01-01 2001-01-02
|
||
DROP TABLE t1;
|
||
SET time_zone=DEFAULT, timestamp= DEFAULT;
|
||
CREATE TABLE t1 (a INT, b DATE DEFAULT FROM_DAYS(a));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` date DEFAULT from_days(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (730669, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b
|
||
730669 2000-07-03
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a DATE, b DATE DEFAULT LAST_DAY(a));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` date DEFAULT NULL,
|
||
`b` date DEFAULT last_day(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES ('2003-02-05', DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b
|
||
2003-02-05 2003-02-28
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (yy INT, yd INT, d DATE DEFAULT MAKEDATE(yy, yd));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`yy` int(11) DEFAULT NULL,
|
||
`yd` int(11) DEFAULT NULL,
|
||
`d` date DEFAULT makedate(`yy`,`yd`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (2011,32,DEFAULT);
|
||
SELECT * FROM t1;
|
||
yy yd d
|
||
2011 32 2011-02-01
|
||
DROP TABLE t1;
|
||
# Item_timefunc
|
||
SET time_zone='-10:00';
|
||
SET timestamp=UNIX_TIMESTAMP('2001-01-01 23:59:59');
|
||
CREATE TABLE t1 (a TIME DEFAULT CURTIME(), b TIME DEFAULT UTC_TIME());
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` time DEFAULT curtime(),
|
||
`b` time DEFAULT utc_time()
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES ();
|
||
SELECT * FROM t1;
|
||
a b
|
||
23:59:59 09:59:59
|
||
DROP TABLE t1;
|
||
SET time_zone=DEFAULT, timestamp= DEFAULT;
|
||
CREATE TABLE t1 (a INT, b TIME DEFAULT SEC_TO_TIME(a));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` time DEFAULT sec_to_time(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (2378, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b
|
||
2378 00:39:38
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a DATETIME, b DATETIME, c TIME DEFAULT TIMEDIFF(a,b));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` datetime DEFAULT NULL,
|
||
`b` datetime DEFAULT NULL,
|
||
`c` time DEFAULT timediff(`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES ('2000:01:01 00:00:00', '2000:01:02 10:20:30', DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b c
|
||
2000-01-01 00:00:00 2000-01-02 10:20:30 -34:20:30
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (hh INT, mm INT, ss INT, t TIME DEFAULT MAKETIME(hh,mm,ss));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`hh` int(11) DEFAULT NULL,
|
||
`mm` int(11) DEFAULT NULL,
|
||
`ss` int(11) DEFAULT NULL,
|
||
`t` time DEFAULT maketime(`hh`,`mm`,`ss`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (10,20,30,DEFAULT);
|
||
SELECT * FROM t1;
|
||
hh mm ss t
|
||
10 20 30 10:20:30
|
||
DROP TABLE t1;
|
||
# Item_datetimefunc
|
||
SET time_zone='-10:00';
|
||
SET timestamp=UNIX_TIMESTAMP('2001-01-01 23:59:59');
|
||
CREATE TABLE t1 (a TIMESTAMP DEFAULT NOW(), b TIMESTAMP DEFAULT UTC_TIMESTAMP());
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` timestamp NOT NULL DEFAULT current_timestamp(),
|
||
`b` timestamp NOT NULL DEFAULT utc_timestamp()
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES ();
|
||
SELECT * FROM t1;
|
||
a b
|
||
2001-01-01 23:59:59 2001-01-02 09:59:59
|
||
DROP TABLE t1;
|
||
SET time_zone=DEFAULT, timestamp= DEFAULT;
|
||
CREATE TABLE t1 (a TIMESTAMP(6) DEFAULT SYSDATE(6), s INT, b TIMESTAMP(6) DEFAULT SYSDATE(6));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` timestamp(6) NOT NULL DEFAULT sysdate(6),
|
||
`s` int(11) DEFAULT NULL,
|
||
`b` timestamp(6) NOT NULL DEFAULT sysdate(6)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (DEFAULT, SLEEP(0.1), DEFAULT);
|
||
SELECT b>a FROM t1;
|
||
b>a
|
||
1
|
||
DROP TABLE t1;
|
||
SET time_zone='+00:00';
|
||
CREATE TABLE t1 (a INT, b TIMESTAMP DEFAULT FROM_UNIXTIME(a));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` timestamp NOT NULL DEFAULT from_unixtime(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (1447430881, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b
|
||
1447430881 2015-11-13 16:08:01
|
||
DROP TABLE t1;
|
||
SET time_zone=DEFAULT;
|
||
CREATE TABLE t1 (a TIMESTAMP, b TIMESTAMP DEFAULT CONVERT_TZ(a, '-10:00', '+10:00'));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
||
`b` timestamp NOT NULL DEFAULT convert_tz(`a`,'-10:00','+10:00')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES ('2001-01-01 10:20:30', DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b
|
||
2001-01-01 10:20:30 2001-01-02 06:20:30
|
||
DROP TABLE t1;
|
||
# Item_temporal_typecast
|
||
CREATE TABLE t1 (a INT, b DATE DEFAULT CAST(a AS DATE));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` date DEFAULT cast(`a` as date)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (20010203, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b
|
||
20010203 2001-02-03
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT, b TIME DEFAULT CAST(a AS TIME));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` time DEFAULT cast(`a` as time)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (102030, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b
|
||
102030 10:20:30
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a BIGINT, b DATETIME DEFAULT CAST(a AS DATETIME));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` bigint(20) DEFAULT NULL,
|
||
`b` datetime DEFAULT cast(`a` as datetime)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (20010203102030, DEFAULT);
|
||
SELECT * FROM t1;
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT NULL,
|
||
`c` int(11) DEFAULT period_add(`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT NULL,
|
||
`c` int(11) DEFAULT period_diff(`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT to_days(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` date DEFAULT NULL,
|
||
`b` int(11) DEFAULT to_days(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` bigint(20) DEFAULT to_seconds(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` date DEFAULT NULL,
|
||
`b` bigint(20) DEFAULT to_seconds(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` datetime DEFAULT NULL,
|
||
`b` bigint(20) DEFAULT to_seconds(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` date DEFAULT NULL,
|
||
`b` bigint(20) DEFAULT dayofmonth(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` date DEFAULT NULL,
|
||
`b` bigint(20) DEFAULT dayofweek(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` date DEFAULT NULL,
|
||
`b` bigint(20) DEFAULT dayofyear(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` time DEFAULT NULL,
|
||
`b` int(11) DEFAULT hour(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` time DEFAULT NULL,
|
||
`b` int(11) DEFAULT minute(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` time DEFAULT NULL,
|
||
`b` int(11) DEFAULT second(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` datetime(6) DEFAULT NULL,
|
||
`b` int(11) DEFAULT microsecond(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` date DEFAULT NULL,
|
||
`b` int(11) DEFAULT year(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` date DEFAULT NULL,
|
||
`b` int(11) DEFAULT month(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` date DEFAULT NULL,
|
||
`b` int(11) DEFAULT week(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` date DEFAULT NULL,
|
||
`b` int(11) DEFAULT yearweek(`a`,0)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` date DEFAULT NULL,
|
||
`b` int(11) DEFAULT quarter(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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 INT DEFAULT EXTRACT(YEAR FROM a));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` date DEFAULT NULL,
|
||
`b` int(11) DEFAULT extract(year from `a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` datetime DEFAULT NULL,
|
||
`b` int(11) DEFAULT extract(year_month from `a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` datetime DEFAULT NULL,
|
||
`b` int(11) DEFAULT extract(day_minute from `a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` datetime(6) DEFAULT NULL,
|
||
`b` int(11) DEFAULT extract(microsecond from `a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` date DEFAULT NULL,
|
||
`b` date DEFAULT NULL,
|
||
`c` int(11) DEFAULT timestampdiff(MONTH,`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` date DEFAULT NULL,
|
||
`b` date DEFAULT NULL,
|
||
`c` int(11) DEFAULT timestampdiff(YEAR,`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` date DEFAULT NULL,
|
||
`b` datetime DEFAULT NULL,
|
||
`c` int(11) DEFAULT timestampdiff(MINUTE,`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT NULL,
|
||
`c` int(11) DEFAULT coalesce(`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (NULL, 1, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b c
|
||
NULL 1 1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT, b INT, c INT DEFAULT IFNULL(a,b));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT NULL,
|
||
`c` int(11) DEFAULT ifnull(`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (NULL, 2, DEFAULT);
|
||
INSERT INTO t1 VALUES (1, 2, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b c
|
||
NULL 2 2
|
||
1 2 1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT, b INT, c INT DEFAULT NULLIF(a,b));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT NULL,
|
||
`c` int(11) DEFAULT nullif(`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (1, 1, DEFAULT);
|
||
INSERT INTO t1 VALUES (1, 2, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b c
|
||
1 1 NULL
|
||
1 2 1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT, b INT, c INT DEFAULT IF(a,b,2));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT NULL,
|
||
`c` int(11) DEFAULT if(`a`,`b`,2)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (0, 1, DEFAULT);
|
||
INSERT INTO t1 VALUES (1, 1, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b c
|
||
0 1 2
|
||
1 1 1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT, b INT, c INT DEFAULT CASE WHEN a THEN b ELSE 2 END);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT NULL,
|
||
`c` int(11) DEFAULT (case when `a` then `b` else 2 end)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (0, 1, DEFAULT);
|
||
INSERT INTO t1 VALUES (1, 1, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b c
|
||
0 1 2
|
||
1 1 1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT, b INT DEFAULT (-a));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT (-`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT (-`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (10, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b
|
||
10 -10
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT, b INT DEFAULT ABS(a));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT abs(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (-10, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b
|
||
-10 10
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a DOUBLE, b INT DEFAULT CEILING(a), c INT DEFAULT FLOOR(a), d INT DEFAULT ROUND(a));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` double DEFAULT NULL,
|
||
`b` int(11) DEFAULT ceiling(`a`),
|
||
`c` int(11) DEFAULT floor(`a`),
|
||
`d` int(11) DEFAULT round(`a`,0)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (1.5, DEFAULT, DEFAULT, DEFAULT);
|
||
INSERT INTO t1 VALUES (-1.5, DEFAULT, DEFAULT, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b c d
|
||
1.5 2 1 2
|
||
-1.5 -1 -2 -2
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT, b INT, c INT DEFAULT (a+b), d INT DEFAULT (a-b));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT NULL,
|
||
`c` int(11) DEFAULT (`a` + `b`),
|
||
`d` int(11) DEFAULT (`a` - `b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (2, 1, DEFAULT, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b c d
|
||
2 1 3 1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT, b INT, c INT DEFAULT (a*b), d INT DEFAULT (a/b), e INT DEFAULT (a MOD b));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT NULL,
|
||
`c` int(11) DEFAULT (`a` * `b`),
|
||
`d` int(11) DEFAULT (`a` / `b`),
|
||
`e` int(11) DEFAULT (`a` % `b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT NULL,
|
||
`c` int(11) DEFAULT (`a` * `b`),
|
||
`d` int(11) DEFAULT (`a` / `b`),
|
||
`e` int(11) DEFAULT (`a` % `b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (7, 3, DEFAULT, DEFAULT, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b c d e
|
||
7 3 21 2 1
|
||
DROP TABLE t1;
|
||
SET time_zone='+00:00';
|
||
CREATE TABLE t1 (a DATETIME, b INT DEFAULT UNIX_TIMESTAMP(a));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` datetime DEFAULT NULL,
|
||
`b` int(11) DEFAULT unix_timestamp(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES ('2001-01-01 10:20:30', DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b
|
||
2001-01-01 10:20:30 978344430
|
||
DROP TABLE t1;
|
||
SET time_zone=DEFAULT;
|
||
CREATE TABLE t1 (a TIME, b INT DEFAULT TIME_TO_SEC(a));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` time DEFAULT NULL,
|
||
`b` int(11) DEFAULT time_to_sec(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES ('22:23:00', DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b
|
||
22:23:00 80580
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT, b INT, c INT DEFAULT LEAST(a,b), d INT DEFAULT GREATEST(a,b));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT NULL,
|
||
`c` int(11) DEFAULT least(`a`,`b`),
|
||
`d` int(11) DEFAULT greatest(`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (0, 1, DEFAULT, DEFAULT);
|
||
INSERT INTO t1 VALUES (1, 1, DEFAULT, DEFAULT);
|
||
SELECT * FROM t1;
|
||
a b c d
|
||
0 1 0 1
|
||
1 1 1 1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT, b INT, c INT DEFAULT LAST_VALUE(a,b));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT NULL,
|
||
`c` int(11) DEFAULT last_value(`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (1, 2, DEFAULT);
|
||
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)));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(30) DEFAULT NULL,
|
||
`b` decimal(10,6) DEFAULT (cast(`a` as decimal(10,1)))
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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)));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` decimal(10,3) DEFAULT NULL,
|
||
`b` varchar(10) DEFAULT (cast(`a` as char(10) charset latin1)),
|
||
`c` varchar(10) DEFAULT (cast(`a` as char(4) charset latin1))
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(10) unsigned DEFAULT (cast(`a` as unsigned))
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` bigint(20) unsigned DEFAULT NULL,
|
||
`b` bigint(20) DEFAULT (cast(`a` as signed))
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES (0xFFFFFFFFFFFFFFFF);
|
||
SELECT * FROM t1;
|
||
a b
|
||
18446744073709551615 -1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (
|
||
a VARCHAR(10) CHARACTER SET latin1,
|
||
b VARCHAR(10) CHARACTER SET latin1 DEFAULT a COLLATE latin1_bin,
|
||
c VARCHAR(10) CHARACTER SET utf8 DEFAULT CONVERT(a USING utf8),
|
||
d VARBINARY(10) DEFAULT (BINARY(a))
|
||
);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` varchar(10) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT `a`,
|
||
`c` varchar(10) CHARACTER SET utf8 DEFAULT convert(`a` using utf8),
|
||
`d` varbinary(10) DEFAULT (cast(`a` as char charset binary))
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES ('a');
|
||
SELECT * FROM t1;
|
||
a b c d
|
||
a a a a
|
||
DROP TABLE t1;
|
||
#
|
||
# Bit functions
|
||
#
|
||
CREATE TABLE t1 (a INT, b INT DEFAULT BIT_COUNT(a));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT bit_count(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT NULL,
|
||
`c` int(11) DEFAULT (`a` | `b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT NULL,
|
||
`c` int(11) DEFAULT (`a` & `b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT NULL,
|
||
`c` int(11) DEFAULT (`a` ^ `b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT NULL,
|
||
`c` int(11) DEFAULT (`a` & ~`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT NULL,
|
||
`c` int(11) DEFAULT (`a` << `b`),
|
||
`d` int(11) DEFAULT (`a` >> `b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` varchar(20) DEFAULT reverse(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` varchar(10) DEFAULT ucase(`a`),
|
||
`c` varchar(10) DEFAULT lcase(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` varchar(10) DEFAULT left(`a`,1),
|
||
`c` varchar(10) DEFAULT right(`a`,1),
|
||
`d` varchar(10) DEFAULT substr(`a`,2,2)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(20) DEFAULT NULL,
|
||
`b` varchar(20) DEFAULT substring_index(`a`,'.',2)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` varchar(10) DEFAULT NULL,
|
||
`c` varchar(20) DEFAULT concat(`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` varchar(10) DEFAULT NULL,
|
||
`c` varchar(20) DEFAULT concat_ws(',',`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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'));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` varchar(10) DEFAULT replace(`a`,'a','A')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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]','.'));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` varchar(10) DEFAULT regexp_replace(`a`,'[0-9]','.')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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]+'));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` varchar(10) DEFAULT regexp_substr(`a`,'[0-9]+')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(20) DEFAULT NULL,
|
||
`b` varchar(20) DEFAULT soundex(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(20) DEFAULT NULL,
|
||
`b` varchar(20) DEFAULT quote(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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,'.'));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` varchar(10) DEFAULT lpad(`a`,10,'.'),
|
||
`c` varchar(10) DEFAULT rpad(`a`,10,'.')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` varchar(10) DEFAULT ltrim(`a`),
|
||
`c` varchar(10) DEFAULT rtrim(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` varchar(10) DEFAULT trim(both 'a' from `a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` varchar(10) DEFAULT space(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` varchar(10) DEFAULT NULL,
|
||
`c` varchar(10) DEFAULT repeat(`b`,`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`str` varchar(10) DEFAULT NULL,
|
||
`pos` int(11) DEFAULT NULL,
|
||
`len` int(11) DEFAULT NULL,
|
||
`newstr` varchar(10) DEFAULT NULL,
|
||
`result` varchar(10) DEFAULT insert(`str`,`pos`,`len`,`newstr`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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'));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`n` int(11) DEFAULT NULL,
|
||
`res` varchar(10) DEFAULT elt(`n`,'ej','Heja','hej','foo')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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'));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`bits` int(11) DEFAULT NULL,
|
||
`res` varchar(10) DEFAULT make_set(`bits`,'a','b','c','d')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` varchar(10) DEFAULT char(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
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));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` varchar(10) DEFAULT conv(`a`,10,16)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES (64);
|
||
SELECT * FROM t1;
|
||
a b
|
||
64 40
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT, b INT, c VARCHAR(30) DEFAULT FORMAT(a,b));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT NULL,
|
||
`c` varchar(30) DEFAULT format(`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a,b) VALUES (10000,3);
|
||
SELECT * FROM t1;
|
||
a b c
|
||
10000 3 10,000.000
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT, b INT, l VARCHAR(10), c VARCHAR(30) DEFAULT FORMAT(a,b,l));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT NULL,
|
||
`l` varchar(10) DEFAULT NULL,
|
||
`c` varchar(30) DEFAULT format(`a`,`b`,`l`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a,b,l) VALUES (10000,2,'no_NO'),(10000,2,'ru_RU'),(10000,2,'ar_BH');
|
||
SELECT * FROM t1;
|
||
a b l c
|
||
10000 2 no_NO 10.000,00
|
||
10000 2 ru_RU 10 000,00
|
||
10000 2 ar_BH 10,000.00
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(10), b VARCHAR(20) DEFAULT GET_FORMAT(DATE,a));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` varchar(20) DEFAULT get_format(DATE, `a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES ('EUR'),('USA'),('JIS'),('ISO'),('INTERNAL');
|
||
SELECT * FROM t1;
|
||
a b
|
||
EUR %d.%m.%Y
|
||
USA %m.%d.%Y
|
||
JIS %Y-%m-%d
|
||
ISO %Y-%m-%d
|
||
INTERNAL %Y%m%d
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (
|
||
bits INT,
|
||
v_on VARCHAR(10),
|
||
v_off VARCHAR(10),
|
||
v_separator VARCHAR(10),
|
||
number_of_bits INT,
|
||
x VARCHAR(30) DEFAULT EXPORT_SET(bits, v_on, v_off, v_separator, number_of_bits)
|
||
);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`bits` int(11) DEFAULT NULL,
|
||
`v_on` varchar(10) DEFAULT NULL,
|
||
`v_off` varchar(10) DEFAULT NULL,
|
||
`v_separator` varchar(10) DEFAULT NULL,
|
||
`number_of_bits` int(11) DEFAULT NULL,
|
||
`x` varchar(30) DEFAULT export_set(`bits`,`v_on`,`v_off`,`v_separator`,`number_of_bits`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES (0x50006,'Y','N','',64,DEFAULT);
|
||
Warnings:
|
||
Warning 1265 Data truncated for column 'x' at row 1
|
||
SELECT * FROM t1;
|
||
bits v_on v_off v_separator number_of_bits x
|
||
327686 Y N 64 NYYNNNNNNNNNNNNNYNYNNNNNNNNNNN
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(30), b BLOB DEFAULT LOAD_FILE(a));
|
||
ERROR HY000: Function or expression 'load_file()' cannot be used in the DEFAULT clause of `b`
|
||
#
|
||
# Predicates
|
||
#
|
||
CREATE TABLE t1 (a INT, b INT DEFAULT (NOT a));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT (`a` = 0)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES (NULL),(0),(1);
|
||
SELECT * FROM t1;
|
||
a b
|
||
NULL NULL
|
||
0 1
|
||
1 0
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT, b INT, x INT DEFAULT (a XOR b));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT NULL,
|
||
`x` int(11) DEFAULT (`a` xor `b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a,b) VALUES (0,0),(0,1),(1,0),(1,1);
|
||
SELECT * FROM t1;
|
||
a b x
|
||
0 0 0
|
||
0 1 1
|
||
1 0 1
|
||
1 1 0
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT, b INT DEFAULT (a IS TRUE), c INT DEFAULT (a IS NOT TRUE));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT (`a` is true),
|
||
`c` int(11) DEFAULT (`a` is not true)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES (NULL),(0),(1);
|
||
SELECT * FROM t1;
|
||
a b c
|
||
NULL 0 1
|
||
0 0 1
|
||
1 1 0
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT, b INT DEFAULT (a IS FALSE), c INT DEFAULT (a IS NOT FALSE));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT (`a` is false),
|
||
`c` int(11) DEFAULT (`a` is not false)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES (NULL),(0),(1);
|
||
SELECT * FROM t1;
|
||
a b c
|
||
NULL 0 1
|
||
0 1 0
|
||
1 0 1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT, b INT DEFAULT (a IS NULL), c INT DEFAULT (a IS NOT NULL));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT (`a` is null),
|
||
`c` int(11) DEFAULT (`a` is not null)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES (NULL),(0),(1);
|
||
SELECT * FROM t1;
|
||
a b c
|
||
NULL 1 0
|
||
0 0 1
|
||
1 0 1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT, b INT DEFAULT (a IS UNKNOWN), c INT DEFAULT (a IS NOT UNKNOWN));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT (`a` is null),
|
||
`c` int(11) DEFAULT (`a` is not null)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES (NULL),(0),(1);
|
||
SELECT * FROM t1;
|
||
a b c
|
||
NULL 1 0
|
||
0 0 1
|
||
1 0 1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT,
|
||
eq INT DEFAULT (a=0), equal INT DEFAULT (a<=>0),
|
||
ne INT DEFAULT (a<>0),
|
||
lt INT DEFAULT (a<0), le INT DEFAULT (a<=0),
|
||
gt INT DEFAULT (a>0), ge INT DEFAULT (a>=0));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`eq` int(11) DEFAULT (`a` = 0),
|
||
`equal` int(11) DEFAULT (`a` <=> 0),
|
||
`ne` int(11) DEFAULT (`a` <> 0),
|
||
`lt` int(11) DEFAULT (`a` < 0),
|
||
`le` int(11) DEFAULT (`a` <= 0),
|
||
`gt` int(11) DEFAULT (`a` > 0),
|
||
`ge` int(11) DEFAULT (`a` >= 0)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES (NULL),(-1),(0),(1);
|
||
SELECT * FROM t1;
|
||
a eq equal ne lt le gt ge
|
||
NULL NULL 0 NULL NULL NULL NULL NULL
|
||
-1 0 0 1 1 1 0 0
|
||
0 1 1 0 0 1 0 1
|
||
1 0 0 1 0 0 1 1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(10), b INT DEFAULT (a LIKE 'a%'));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` int(11) DEFAULT (`a` like 'a%')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES ('AAA'),('aaa'),('bbb');
|
||
SELECT * FROM t1;
|
||
a b
|
||
AAA 1
|
||
aaa 1
|
||
bbb 0
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(10), b INT DEFAULT (a RLIKE 'a$'));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` int(11) DEFAULT (`a` regexp 'a$')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES ('AAA'),('aaa'),('bbb');
|
||
SELECT * FROM t1;
|
||
a b
|
||
AAA 1
|
||
aaa 1
|
||
bbb 0
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(10), b INT DEFAULT (a IN ('aaa','bbb')));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` int(11) DEFAULT (`a` in ('aaa','bbb'))
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES ('AAA'),('aaa'),('bbb'),('ccc');
|
||
SELECT * FROM t1;
|
||
a b
|
||
AAA 1
|
||
aaa 1
|
||
bbb 1
|
||
ccc 0
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(10), b INT DEFAULT (a NOT IN ('aaa','bbb')));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` int(11) DEFAULT (`a` not in ('aaa','bbb'))
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES ('AAA'),('aaa'),('bbb'),('ccc');
|
||
SELECT * FROM t1;
|
||
a b
|
||
AAA 0
|
||
aaa 0
|
||
bbb 0
|
||
ccc 1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(10), b INT DEFAULT (a BETWEEN 'aaa' AND 'bbb'));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` int(11) DEFAULT (`a` between 'aaa' and 'bbb')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES ('AAA'),('aaa'),('bbb'),('ccc');
|
||
SELECT * FROM t1;
|
||
a b
|
||
AAA 1
|
||
aaa 1
|
||
bbb 1
|
||
ccc 0
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(10), b INT DEFAULT (a NOT BETWEEN 'aaa' AND 'bbb'));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` int(11) DEFAULT (`a` not between 'aaa' and 'bbb')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES ('AAA'),('aaa'),('bbb'),('ccc');
|
||
SELECT * FROM t1;
|
||
a b
|
||
AAA 0
|
||
aaa 0
|
||
bbb 0
|
||
ccc 1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a TEXT DEFAULT UUID());
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` text DEFAULT uuid()
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES ();
|
||
SELECT LENGTH(a)>0 FROM t1;
|
||
LENGTH(a)>0
|
||
1
|
||
DROP TABLE t1;
|
||
#
|
||
# Numeric result functions with string input
|
||
#
|
||
CREATE TABLE t1 (a VARCHAR(10), b INT DEFAULT STRCMP(a,'b'));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` int(11) DEFAULT strcmp(`a`,'b')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES ('A'),('a'),('B'),('b'),('C'),('c');
|
||
SELECT * FROM t1;
|
||
a b
|
||
A -1
|
||
a -1
|
||
B 0
|
||
b 0
|
||
C 1
|
||
c 1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(10), b INT DEFAULT LENGTH(a), c INT DEFAULT CHAR_LENGTH(a), d INT DEFAULT BIT_LENGTH(a));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` int(11) DEFAULT length(`a`),
|
||
`c` int(11) DEFAULT char_length(`a`),
|
||
`d` int(11) DEFAULT bit_length(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES ('a'),('aa'),('aaa');
|
||
SELECT * FROM t1;
|
||
a b c d
|
||
a 1 1 8
|
||
aa 2 2 16
|
||
aaa 3 3 24
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(10), b INT DEFAULT LOCATE('a',a));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` int(11) DEFAULT locate('a',`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES ('xa'),('xxa'),('xxxa');
|
||
SELECT * FROM t1;
|
||
a b
|
||
xa 2
|
||
xxa 3
|
||
xxxa 4
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(10), b INT DEFAULT REGEXP_INSTR(a, 'a'));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` int(11) DEFAULT regexp_instr(`a`,'a')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES ('xa'),('xxa'),('xxxa');
|
||
SELECT * FROM t1;
|
||
a b
|
||
xa 2
|
||
xxa 3
|
||
xxxa 4
|
||
DROP TABLE t1;
|
||
#
|
||
# INT result metadata functions
|
||
#
|
||
CREATE TABLE t1
|
||
(
|
||
id SERIAL PRIMARY KEY,
|
||
b INT DEFAULT LAST_INSERT_ID()
|
||
);
|
||
ERROR HY000: Function or expression 'last_insert_id()' cannot be used in the DEFAULT clause of `b`
|
||
CREATE TABLE t1 (a INT DEFAULT CONNECTION_ID());
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT connection_id()
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 VALUES();
|
||
SELECT a>0 FROM t1;
|
||
a>0
|
||
1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(10), b INT DEFAULT COERCIBILITY(a), c INT DEFAULT COERCIBILITY(b));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` int(11) DEFAULT coercibility(`a`),
|
||
`c` int(11) DEFAULT coercibility(`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES ('test');
|
||
SELECT * FROM t1;
|
||
a b c
|
||
test 2 5
|
||
DROP TABLE t1;
|
||
#
|
||
# String result metadata functions
|
||
#
|
||
CREATE TABLE t1 (
|
||
a VARCHAR(10) CHARACTER SET latin1,
|
||
b VARCHAR(20) DEFAULT CHARSET(a),
|
||
c VARCHAR(20) DEFAULT COLLATION(a)
|
||
);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` varchar(20) DEFAULT charset(`a`),
|
||
`c` varchar(20) DEFAULT collation(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES ('test');
|
||
SELECT * FROM t1;
|
||
a b c
|
||
test latin1 latin1_swedish_ci
|
||
DROP TABLE t1;
|
||
#
|
||
# Hash, compression, encode/decode
|
||
#
|
||
CREATE TABLE t1 (a VARCHAR(10), b BIGINT DEFAULT CRC32(a), c TEXT DEFAULT MD5(a));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` bigint(20) DEFAULT crc32(`a`),
|
||
`c` text DEFAULT md5(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES ('a');
|
||
SELECT * FROM t1;
|
||
a b c
|
||
a 3904355907 0cc175b9c0f1b6a831c399e269772661
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(10), b TEXT DEFAULT TO_BASE64(a), c TEXT DEFAULT FROM_BASE64(b));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` text DEFAULT to_base64(`a`),
|
||
`c` text DEFAULT from_base64(`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES ('aaaabbbb');
|
||
SELECT * FROM t1;
|
||
a b c
|
||
aaaabbbb YWFhYWJiYmI= aaaabbbb
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(10), b TEXT DEFAULT HEX(a), c TEXT DEFAULT UNHEX(b));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` text DEFAULT hex(`a`),
|
||
`c` text DEFAULT unhex(`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES ('aaaabbbb');
|
||
SELECT * FROM t1;
|
||
a b c
|
||
aaaabbbb 6161616162626262 aaaabbbb
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(10), b TEXT DEFAULT ENCODE(a,'test'), c TEXT DEFAULT DECODE(b,'test'));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(10) DEFAULT NULL,
|
||
`b` text DEFAULT encode(`a`,'test'),
|
||
`c` text DEFAULT decode(`b`,'test')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES ('aaaabbbb');
|
||
SELECT a, HEX(b), c FROM t1;
|
||
a HEX(b) c
|
||
aaaabbbb 059AEEE33E4AF848 aaaabbbb
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a VARCHAR(30), b TEXT DEFAULT PASSWORD(a));
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(30) DEFAULT NULL,
|
||
`b` text DEFAULT password(`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES ('notagoodpwd');
|
||
SELECT * FROM t1;
|
||
a b
|
||
notagoodpwd *3A70EE9FC6594F88CE9E959CD51C5A1C002DC937
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (
|
||
a VARCHAR(30),
|
||
b BLOB DEFAULT AES_ENCRYPT(a, 'passwd'),
|
||
c TEXT DEFAULT AES_DECRYPT(b, 'passwd')
|
||
);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` varchar(30) DEFAULT NULL,
|
||
`b` blob DEFAULT aes_encrypt(`a`,'passwd'),
|
||
`c` text DEFAULT aes_decrypt(`b`,'passwd')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
INSERT INTO t1 (a) VALUES ('test');
|
||
SELECT c FROM t1;
|
||
c
|
||
test
|
||
DROP TABLE t1;
|
||
#
|
||
# Collations
|
||
#
|
||
CREATE TABLE t1 (a VARCHAR(20) CHARACTER SET latin1 DEFAULT CONCAT('<27>')) CHARACTER SET koi8r COLLATE koi8r_bin;
|
||
ERROR 22007: Encountered illegal value '<27>' when converting to koi8r
|
||
CREATE OR REPLACE TABLE t1 (a char(2) default concat('A') COLLATE utf8mb4_unicode_ci);
|
||
SHOW CREATE TABLE t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT concat('A')
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
DROP TABLE t1;
|
||
create table t1 (a int default 1, b int default (rand()*0+2), c int);
|
||
insert t1 (c) values (a);
|
||
insert t1 (c) values (b);
|
||
select * from t1;
|
||
a b c
|
||
1 2 1
|
||
1 2 NULL
|
||
drop table t1;
|
||
create table t1 (a int default 1, b int default (1+1), c int);
|
||
show create table t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT 1,
|
||
`b` int(11) DEFAULT (1 + 1),
|
||
`c` int(11) DEFAULT NULL
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
alter table t1 alter a set default (2+3), alter b set default 4,
|
||
alter c set default (-a);
|
||
alter table t1 alter a set default 1+2;
|
||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '+2' at line 1
|
||
show create table t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT (2 + 3),
|
||
`b` int(11) DEFAULT 4,
|
||
`c` int(11) DEFAULT (-`a`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
drop table t1;
|
||
create table t1 (a int default 5 check (a>10), b int default (5+5), c int as (a+b));
|
||
create table t2 as select a, b, c from t1;
|
||
create table t3 as select max(a), max(b), max(c) from t1;
|
||
show create table t2;
|
||
Table Create Table
|
||
t2 CREATE TABLE `t2` (
|
||
`a` int(11) DEFAULT 5 CHECK (`a` > 10),
|
||
`b` int(11) DEFAULT (5 + 5),
|
||
`c` int(11) DEFAULT NULL
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
show create table t3;
|
||
Table Create Table
|
||
t3 CREATE TABLE `t3` (
|
||
`max(a)` int(11) DEFAULT NULL,
|
||
`max(b)` int(11) DEFAULT NULL,
|
||
`max(c)` int(11) DEFAULT NULL
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
drop table t1, t2, t3;
|
||
# MDEV-11359: Implement IGNORE for bulk operation
|
||
create table t1 (a int primary key default 0, b int default 3);
|
||
insert into t1 values (1, ignore);
|
||
insert into t1 values (2, ignore);
|
||
replace into t1 values (2, ignore);
|
||
replace into t1 values (3, ignore);
|
||
replace into t1 values (4, 6);
|
||
replace into t1 values (5, 7);
|
||
update t1 set a=6,b=ignore where a=5;
|
||
insert into t1 values (ignore, ignore);
|
||
insert into t1 values (ignore, ignore);
|
||
ERROR 23000: Duplicate entry '0' for key 'PRIMARY'
|
||
select * from t1 order by a;
|
||
a b
|
||
0 3
|
||
1 3
|
||
2 3
|
||
3 3
|
||
4 6
|
||
6 7
|
||
delete from t1 where a < 4;
|
||
# actually insert default instead of ignoring
|
||
# (but REPLACE is non standard operator)
|
||
replace into t1 values (4, ignore);
|
||
select * from t1 order by a;
|
||
a b
|
||
4 3
|
||
6 7
|
||
drop table t1;
|
||
create table t1 (a int default 100, b int, c varchar(60) default 'x');
|
||
load data infile '../../std_data/rpl_loaddata.dat' into table t1 (a, @b) set b=@b+10, c=ignore;
|
||
select * from t1;
|
||
a b c
|
||
NULL 20 x
|
||
NULL 25 x
|
||
drop table t1;
|
||
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY AUTO_INCREMENT);
|
||
CREATE TABLE t2 (a INT);
|
||
INSERT INTO t2 VALUES (1),(2),(3),(2);
|
||
INSERT INTO t1 SELECT a FROM t2 ON DUPLICATE KEY UPDATE a=DEFAULT;
|
||
SELECT * FROM t1 order by a;
|
||
a
|
||
0
|
||
1
|
||
3
|
||
truncate table t1;
|
||
INSERT INTO t1 SELECT a FROM t2 ON DUPLICATE KEY UPDATE a=IGNORE;
|
||
SELECT * FROM t1 order by a;
|
||
a
|
||
0
|
||
1
|
||
3
|
||
DROP TABLE t1,t2;
|
||
create table t1 (a int primary key default 0, b int default 3);
|
||
prepare insstmt from "insert into t1 values (?, ?)";
|
||
prepare repstmt from "replace into t1 values (?, ?)";
|
||
prepare updstmt from "update t1 set a=6,b=? where a=5";
|
||
execute insstmt using 1, ignore;
|
||
execute insstmt using 2, ignore;
|
||
execute repstmt using 2, ignore;
|
||
execute repstmt using 3, ignore;
|
||
execute repstmt using 4, 6;
|
||
execute repstmt using 5, 7;
|
||
execute updstmt using ignore;
|
||
execute insstmt using ignore, ignore;
|
||
execute insstmt using ignore, ignore;
|
||
ERROR 23000: Duplicate entry '0' for key 'PRIMARY'
|
||
select * from t1 order by a;
|
||
a b
|
||
0 3
|
||
1 3
|
||
2 3
|
||
3 3
|
||
4 6
|
||
6 7
|
||
delete from t1 where a < 4;
|
||
execute repstmt using 4, ignore;
|
||
select * from t1 order by a;
|
||
a b
|
||
4 3
|
||
6 7
|
||
drop table t1;
|
||
#
|
||
# DEVAULT & PS adoption
|
||
#
|
||
CREATE TABLE t1 (a INT DEFAULT 10, b INT DEFAULT NULL);
|
||
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (?,?)' USING IGNORE, IGNORE;
|
||
SELECT * FROM t1;
|
||
a b
|
||
10 NULL
|
||
UPDATE t1 SET a=20, b=30;
|
||
SELECT * FROM t1;
|
||
a b
|
||
20 30
|
||
EXECUTE IMMEDIATE 'UPDATE t1 SET a=?,b=?' USING IGNORE, IGNORE;
|
||
SELECT * FROM t1;
|
||
a b
|
||
20 30
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT DEFAULT 10);
|
||
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (?+1)' USING IGNORE;
|
||
ERROR HY000: Default/ignore value is not supported for such parameter usage
|
||
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (CONCAT(?,?))' USING IGNORE, 'test';
|
||
ERROR HY000: Default/ignore value is not supported for such parameter usage
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (a INT DEFAULT 10);
|
||
INSERT INTO t1 VALUES (20);
|
||
EXECUTE IMMEDIATE 'UPDATE t1 SET a=?+1' USING IGNORE;
|
||
ERROR HY000: Default/ignore value is not supported for such parameter usage
|
||
EXECUTE IMMEDIATE 'UPDATE t1 SET a=CONCAT(?,?)' USING IGNORE, 'test';
|
||
ERROR HY000: Default/ignore value is not supported for such parameter usage
|
||
DROP TABLE t1;
|
||
EXECUTE IMMEDIATE 'SELECT CAST(? AS SIGNED)' USING IGNORE;
|
||
ERROR HY000: Default/ignore value is not supported for such parameter usage
|
||
EXECUTE IMMEDIATE 'SELECT CAST(? AS DOUBLE)' USING IGNORE;
|
||
ERROR HY000: Default/ignore value is not supported for such parameter usage
|
||
EXECUTE IMMEDIATE 'SELECT CAST(? AS CHAR)' USING IGNORE;
|
||
ERROR HY000: Default/ignore value is not supported for such parameter usage
|
||
EXECUTE IMMEDIATE 'SELECT CAST(? AS DECIMAL(10,1))' USING IGNORE;
|
||
ERROR HY000: Default/ignore value is not supported for such parameter usage
|
||
EXECUTE IMMEDIATE 'SELECT CAST(? AS TIME)' USING IGNORE;
|
||
ERROR HY000: Default/ignore value is not supported for such parameter usage
|
||
EXECUTE IMMEDIATE 'SELECT CAST(? AS DATE)' USING IGNORE;
|
||
ERROR HY000: Default/ignore value is not supported for such parameter usage
|
||
EXECUTE IMMEDIATE 'SELECT CAST(? AS DATETIME)' USING IGNORE;
|
||
ERROR HY000: Default/ignore value is not supported for such parameter usage
|
||
EXECUTE IMMEDIATE 'SELECT ?+1' USING IGNORE;
|
||
ERROR HY000: Default/ignore value is not supported for such parameter usage
|
||
EXECUTE IMMEDIATE 'SELECT CONCAT(?,?)' USING IGNORE,'test';
|
||
ERROR HY000: Default/ignore value is not supported for such parameter usage
|
||
EXECUTE IMMEDIATE 'SELECT 1 LIMIT ?' USING IGNORE;
|
||
ERROR HY000: Default/ignore value is not supported for such parameter usage
|
||
CREATE TABLE t1 (a INT DEFAULT 10);
|
||
INSERT INTO t1 VALUES (1),(2),(3);
|
||
EXECUTE IMMEDIATE 'SELECT * FROM t1 LIMIT ?' USING IGNORE;
|
||
ERROR HY000: Default/ignore value is not supported for such parameter usage
|
||
DROP TABLE t1;
|
||
# The output of this query in 'Note' is a syntactically incorrect query.
|
||
# But as it's never logged, it's ok. It should be human readable only.
|
||
EXECUTE IMMEDIATE 'EXPLAIN EXTENDED SELECT ?' USING IGNORE;
|
||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||
Warnings:
|
||
Note 1003 select ignore AS `?`
|
||
CREATE TABLE t1 (a INT);
|
||
INSERT INTO t1 VALUES (1),(2),(3);
|
||
EXECUTE IMMEDIATE 'EXPLAIN EXTENDED SELECT * FROM t1 WHERE ?+a<=>?+a' USING DEFAULT,DEFAULT;
|
||
ERROR HY000: Default/ignore value is not supported for such parameter usage
|
||
DROP TABLE t1;
|
||
# end of 10.2 test
|
||
set sql_mode=ansi_quotes;
|
||
create table t1 (a int, b int default (a+1));
|
||
show create table t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE "t1" (
|
||
"a" int(11) DEFAULT NULL,
|
||
"b" int(11) DEFAULT ("a" + 1)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
insert t1 (a) values (10);
|
||
set sql_mode='';
|
||
show create table t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT (`a` + 1)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
insert t1 (a) values (20);
|
||
flush tables;
|
||
show create table t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`a` int(11) DEFAULT NULL,
|
||
`b` int(11) DEFAULT (`a` + 1)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
insert t1 (a) values (30);
|
||
select * from t1;
|
||
a b
|
||
10 11
|
||
20 21
|
||
30 31
|
||
drop table t1;
|
||
set sql_mode=default;
|