mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 21:12:26 +01:00
b3886f46da
DECIMAL and TIMESTAMP used to have NUM_FLAG, but NEWDECIMAL was forgotten. It's correct that TIMESTAMP does not have the flag nowadays (manual will be updated, connectors developers will be notified).
189 lines
4.8 KiB
Text
189 lines
4.8 KiB
Text
#
|
|
# Test metadata
|
|
#
|
|
|
|
--disable_warnings
|
|
drop table if exists t1,t2;
|
|
--enable_warnings
|
|
--enable_metadata
|
|
# PS protocol gives slightly different metadata
|
|
--disable_ps_protocol
|
|
|
|
#
|
|
# First some simple tests
|
|
#
|
|
|
|
select 1, 1.0, -1, "hello", NULL;
|
|
|
|
create table t1 (a tinyint, b smallint, c mediumint, d int, e bigint, f float(3,2), g double(4,3), h decimal(5,4), i year, j date, k timestamp, l datetime, m enum('a','b'), n set('a','b'), o char(10));
|
|
select * from t1;
|
|
select a b, b c from t1 as t2;
|
|
drop table t1;
|
|
|
|
#
|
|
# Test metadata from ORDER BY (Bug #2654)
|
|
#
|
|
|
|
CREATE TABLE t1 (id tinyint(3) default NULL, data varchar(255) default NULL);
|
|
INSERT INTO t1 VALUES (1,'male'),(2,'female');
|
|
CREATE TABLE t2 (id tinyint(3) unsigned default NULL, data char(3) default '0');
|
|
INSERT INTO t2 VALUES (1,'yes'),(2,'no');
|
|
|
|
select t1.id, t1.data, t2.data from t1, t2 where t1.id = t2.id;
|
|
select t1.id, t1.data, t2.data from t1, t2 where t1.id = t2.id order by t1.id;
|
|
select t1.id from t1 union select t2.id from t2;
|
|
drop table t1,t2;
|
|
|
|
#
|
|
# variables union and derived tables metadata test
|
|
#
|
|
create table t1 ( a int, b varchar(30), primary key(a));
|
|
insert into t1 values (1,'one');
|
|
insert into t1 values (2,'two');
|
|
set @arg00=1 ;
|
|
select @arg00 FROM t1 where a=1 union distinct select 1 FROM t1 where a=1;
|
|
select * from (select @arg00) aaa;
|
|
select 1 union select 1;
|
|
select * from (select 1 union select 1) aaa;
|
|
drop table t1;
|
|
|
|
--disable_metadata
|
|
|
|
#
|
|
# Bug #11688: Bad mysql_info() results in multi-results
|
|
#
|
|
--enable_info
|
|
delimiter //;
|
|
create table t1 (i int);
|
|
insert into t1 values (1),(2),(3);
|
|
select * from t1 where i = 2;
|
|
drop table t1;//
|
|
delimiter ;//
|
|
--disable_info
|
|
|
|
#
|
|
# Bug #20191: getTableName gives wrong or inconsistent result when using VIEWs
|
|
#
|
|
--enable_metadata
|
|
create table t1 (id int(10));
|
|
insert into t1 values (1);
|
|
CREATE VIEW v1 AS select t1.id as id from t1;
|
|
CREATE VIEW v2 AS select t1.id as renamed from t1;
|
|
CREATE VIEW v3 AS select t1.id + 12 as renamed from t1;
|
|
select * from v1 group by id limit 1;
|
|
select * from v1 group by id limit 0;
|
|
select * from v1 where id=1000 group by id;
|
|
select * from v1 where id=1 group by id;
|
|
select * from v2 where renamed=1 group by renamed;
|
|
select * from v3 where renamed=1 group by renamed;
|
|
drop table t1;
|
|
drop view v1,v2,v3;
|
|
--disable_metadata
|
|
|
|
# End of 4.1 tests
|
|
|
|
#
|
|
# Bug #28492: subselect returns LONG in >5.0.24a and LONGLONG in <=5.0.24a
|
|
#
|
|
--enable_metadata
|
|
select a.* from (select 2147483648 as v_large) a;
|
|
select a.* from (select 214748364 as v_small) a;
|
|
--disable_metadata
|
|
|
|
#
|
|
# Bug #28898: table alias and database name of VIEW columns is empty in the
|
|
# metadata of # SELECT statement where join is executed via temporary table.
|
|
#
|
|
|
|
CREATE TABLE t1 (c1 CHAR(1));
|
|
CREATE TABLE t2 (c2 CHAR(1));
|
|
CREATE VIEW v1 AS SELECT t1.c1 FROM t1;
|
|
CREATE VIEW v2 AS SELECT t2.c2 FROM t2;
|
|
INSERT INTO t1 VALUES ('1'), ('2'), ('3');
|
|
INSERT INTO t2 VALUES ('1'), ('2'), ('3'), ('2');
|
|
|
|
--enable_metadata
|
|
SELECT v1.c1 FROM v1 JOIN t2 ON c1=c2 ORDER BY 1;
|
|
SELECT v1.c1, v2.c2 FROM v1 JOIN v2 ON c1=c2;
|
|
SELECT v1.c1, v2.c2 FROM v1 JOIN v2 ON c1=c2 GROUP BY v1.c1;
|
|
SELECT v1.c1, v2.c2 FROM v1 JOIN v2 ON c1=c2 GROUP BY v1.c1 ORDER BY v2.c2;
|
|
--disable_metadata
|
|
|
|
DROP VIEW v1,v2;
|
|
DROP TABLE t1,t2;
|
|
|
|
#
|
|
# Bug #39283: Date returned as VARBINARY to client for queries
|
|
# with COALESCE and JOIN
|
|
#
|
|
|
|
CREATE TABLE t1 (i INT, d DATE);
|
|
INSERT INTO t1 VALUES (1, '2008-01-01'), (2, '2008-01-02'), (3, '2008-01-03');
|
|
|
|
--enable_metadata
|
|
--sorted_result
|
|
SELECT COALESCE(d, d), IFNULL(d, d), IF(i, d, d),
|
|
CASE i WHEN i THEN d ELSE d END, GREATEST(d, d), LEAST(d, d)
|
|
FROM t1 ORDER BY RAND(); # force filesort
|
|
--disable_metadata
|
|
|
|
DROP TABLE t1;
|
|
|
|
--echo End of 5.0 tests
|
|
|
|
# Verify that column metadata is correct for all possible data types.
|
|
# Originally about BUG#42980 "Client doesn't set NUM_FLAG for DECIMAL"
|
|
|
|
create table t1(
|
|
# numeric types
|
|
bool_col bool,
|
|
boolean_col boolean,
|
|
bit_col bit(5),
|
|
tiny tinyint,
|
|
tiny_uns tinyint unsigned,
|
|
small smallint,
|
|
small_uns smallint unsigned,
|
|
medium mediumint,
|
|
medium_uns mediumint unsigned,
|
|
int_col int,
|
|
int_col_uns int unsigned,
|
|
big bigint,
|
|
big_uns bigint unsigned,
|
|
decimal_col decimal(10,5),
|
|
# synonyms of DECIMAL
|
|
numeric_col numeric(10),
|
|
fixed_col fixed(10),
|
|
dec_col dec(10),
|
|
decimal_col_uns decimal(10,5) unsigned,
|
|
fcol float,
|
|
fcol_uns float unsigned,
|
|
dcol double,
|
|
double_precision_col double precision,
|
|
dcol_uns double unsigned,
|
|
# date/time types
|
|
date_col date,
|
|
time_col time,
|
|
timestamp_col timestamp,
|
|
year_col year,
|
|
datetime_col datetime,
|
|
# string types
|
|
char_col char(5),
|
|
varchar_col varchar(10),
|
|
binary_col binary(10),
|
|
varbinary_col varbinary(10),
|
|
tinyblob_col tinyblob,
|
|
blob_col blob,
|
|
mediumblob_col mediumblob,
|
|
longblob_col longblob,
|
|
text_col text,
|
|
mediumtext_col mediumtext,
|
|
longtext_col longtext,
|
|
enum_col enum("A","B","C"),
|
|
set_col set("F","E","D")
|
|
);
|
|
|
|
--enable_metadata
|
|
select * from t1;
|
|
--disable_metadata
|
|
|
|
drop table t1;
|