DROP DATABASE IF EXISTS test1;
CREATE DATABASE test1;
USE test;
USE test;
USE test;
DROP TABLE IF EXISTS t1, t2, t4, t10, t11;
CREATE TABLE t1  (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
ENGINE = ndb;
CREATE TABLE t2  (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
ENGINE = ndb;
CREATE TABLE t4  (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
ENGINE = ndb;
CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
ENGINE = ndb;
CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
ENGINE = ndb;
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t1;
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t2;
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t4;
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t10;
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t11;
drop TABLE if exists t3;
CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = ndb;
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t3.txt' INTO TABLE t3;
drop database if exists test4;
CREATE database test4;
use test4;
CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int)
ENGINE = ndb;
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t6;
use test;
drop TABLE if exists t7, t8;
CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = ndb;
CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = ndb;
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t7.txt' INTO TABLE t7;
Warnings:
Warning	1265	Data truncated for column 'f3' at row 1
Warning	1265	Data truncated for column 'f3' at row 2
Warning	1265	Data truncated for column 'f3' at row 3
Warning	1265	Data truncated for column 'f3' at row 4
Warning	1265	Data truncated for column 'f3' at row 5
Warning	1265	Data truncated for column 'f3' at row 6
Warning	1265	Data truncated for column 'f3' at row 7
Warning	1265	Data truncated for column 'f3' at row 8
Warning	1265	Data truncated for column 'f3' at row 9
Warning	1265	Data truncated for column 'f3' at row 10
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t7.txt' INTO TABLE t8;
Warnings:
Warning	1265	Data truncated for column 'f3' at row 1
Warning	1265	Data truncated for column 'f3' at row 2
Warning	1265	Data truncated for column 'f3' at row 3
Warning	1265	Data truncated for column 'f3' at row 4
Warning	1265	Data truncated for column 'f3' at row 5
Warning	1265	Data truncated for column 'f3' at row 6
Warning	1265	Data truncated for column 'f3' at row 7
Warning	1265	Data truncated for column 'f3' at row 8
Warning	1265	Data truncated for column 'f3' at row 9
Warning	1265	Data truncated for column 'f3' at row 10
drop TABLE if exists t9;
CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = ndb;
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t9.txt' INTO TABLE t9;
SELECT * FROM information_schema.columns
WHERE table_schema LIKE 'test%'
ORDER BY table_schema, table_name, column_name;
TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	COLUMN_NAME	ORDINAL_POSITION	COLUMN_DEFAULT	IS_NULLABLE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	COLUMN_TYPE	COLUMN_KEY	EXTRA	PRIVILEGES	COLUMN_COMMENT
NULL	test	t1	f1	1	NULL	YES	char	20	20	NULL	NULL	latin1	latin1_swedish_ci	char(20)			select,insert,update,references	
NULL	test	t1	f2	2	NULL	YES	char	25	25	NULL	NULL	latin1	latin1_swedish_ci	char(25)			select,insert,update,references	
NULL	test	t1	f3	3	NULL	YES	date	NULL	NULL	NULL	NULL	NULL	NULL	date			select,insert,update,references	
NULL	test	t1	f4	4	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(11)			select,insert,update,references	
NULL	test	t1	f5	5	NULL	YES	char	25	25	NULL	NULL	latin1	latin1_swedish_ci	char(25)			select,insert,update,references	
NULL	test	t1	f6	6	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(11)			select,insert,update,references	
NULL	test	t10	f1	1	NULL	YES	char	20	20	NULL	NULL	latin1	latin1_swedish_ci	char(20)			select,insert,update,references	
NULL	test	t10	f2	2	NULL	YES	char	25	25	NULL	NULL	latin1	latin1_swedish_ci	char(25)			select,insert,update,references	
NULL	test	t10	f3	3	NULL	YES	date	NULL	NULL	NULL	NULL	NULL	NULL	date			select,insert,update,references	
NULL	test	t10	f4	4	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(11)			select,insert,update,references	
NULL	test	t10	f5	5	NULL	YES	char	25	25	NULL	NULL	latin1	latin1_swedish_ci	char(25)			select,insert,update,references	
NULL	test	t10	f6	6	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(11)			select,insert,update,references	
NULL	test	t11	f1	1	NULL	YES	char	20	20	NULL	NULL	latin1	latin1_swedish_ci	char(20)			select,insert,update,references	
NULL	test	t11	f2	2	NULL	YES	char	25	25	NULL	NULL	latin1	latin1_swedish_ci	char(25)			select,insert,update,references	
NULL	test	t11	f3	3	NULL	YES	date	NULL	NULL	NULL	NULL	NULL	NULL	date			select,insert,update,references	
NULL	test	t11	f4	4	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(11)			select,insert,update,references	
NULL	test	t11	f5	5	NULL	YES	char	25	25	NULL	NULL	latin1	latin1_swedish_ci	char(25)			select,insert,update,references	
NULL	test	t11	f6	6	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(11)			select,insert,update,references	
NULL	test	t2	f1	1	NULL	YES	char	20	20	NULL	NULL	latin1	latin1_swedish_ci	char(20)			select,insert,update,references	
NULL	test	t2	f2	2	NULL	YES	char	25	25	NULL	NULL	latin1	latin1_swedish_ci	char(25)			select,insert,update,references	
NULL	test	t2	f3	3	NULL	YES	date	NULL	NULL	NULL	NULL	NULL	NULL	date			select,insert,update,references	
NULL	test	t2	f4	4	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(11)			select,insert,update,references	
NULL	test	t2	f5	5	NULL	YES	char	25	25	NULL	NULL	latin1	latin1_swedish_ci	char(25)			select,insert,update,references	
NULL	test	t2	f6	6	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(11)			select,insert,update,references	
NULL	test	t3	f1	1	NULL	YES	char	20	20	NULL	NULL	latin1	latin1_swedish_ci	char(20)			select,insert,update,references	
NULL	test	t3	f2	2	NULL	YES	char	20	20	NULL	NULL	latin1	latin1_swedish_ci	char(20)			select,insert,update,references	
NULL	test	t3	f3	3	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(11)			select,insert,update,references	
NULL	test	t4	f1	1	NULL	YES	char	20	20	NULL	NULL	latin1	latin1_swedish_ci	char(20)			select,insert,update,references	
NULL	test	t4	f2	2	NULL	YES	char	25	25	NULL	NULL	latin1	latin1_swedish_ci	char(25)			select,insert,update,references	
NULL	test	t4	f3	3	NULL	YES	date	NULL	NULL	NULL	NULL	NULL	NULL	date			select,insert,update,references	
NULL	test	t4	f4	4	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(11)			select,insert,update,references	
NULL	test	t4	f5	5	NULL	YES	char	25	25	NULL	NULL	latin1	latin1_swedish_ci	char(25)			select,insert,update,references	
NULL	test	t4	f6	6	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(11)			select,insert,update,references	
NULL	test	t7	f1	1	NULL	YES	char	20	20	NULL	NULL	latin1	latin1_swedish_ci	char(20)			select,insert,update,references	
NULL	test	t7	f2	2	NULL	YES	char	25	25	NULL	NULL	latin1	latin1_swedish_ci	char(25)			select,insert,update,references	
NULL	test	t7	f3	3	NULL	YES	date	NULL	NULL	NULL	NULL	NULL	NULL	date			select,insert,update,references	
NULL	test	t7	f4	4	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(11)			select,insert,update,references	
NULL	test	t8	f1	1	NULL	YES	char	20	20	NULL	NULL	latin1	latin1_swedish_ci	char(20)			select,insert,update,references	
NULL	test	t8	f2	2	NULL	YES	char	25	25	NULL	NULL	latin1	latin1_swedish_ci	char(25)			select,insert,update,references	
NULL	test	t8	f3	3	NULL	YES	date	NULL	NULL	NULL	NULL	NULL	NULL	date			select,insert,update,references	
NULL	test	t8	f4	4	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(11)			select,insert,update,references	
NULL	test	t9	f1	1	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(11)			select,insert,update,references	
NULL	test	t9	f2	2	NULL	YES	char	25	25	NULL	NULL	latin1	latin1_swedish_ci	char(25)			select,insert,update,references	
NULL	test	t9	f3	3	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(11)			select,insert,update,references	
NULL	test4	t6	f1	1	NULL	YES	char	20	20	NULL	NULL	latin1	latin1_swedish_ci	char(20)			select,insert,update,references	
NULL	test4	t6	f2	2	NULL	YES	char	25	25	NULL	NULL	latin1	latin1_swedish_ci	char(25)			select,insert,update,references	
NULL	test4	t6	f3	3	NULL	YES	date	NULL	NULL	NULL	NULL	NULL	NULL	date			select,insert,update,references	
NULL	test4	t6	f4	4	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(11)			select,insert,update,references	
NULL	test4	t6	f5	5	NULL	YES	char	25	25	NULL	NULL	latin1	latin1_swedish_ci	char(25)			select,insert,update,references	
NULL	test4	t6	f6	6	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(11)			select,insert,update,references	
##########################################################################
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
##########################################################################
SELECT DISTINCT
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
DATA_TYPE,
CHARACTER_SET_NAME,
COLLATION_NAME
FROM information_schema.columns
WHERE table_schema LIKE 'test%'
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH = 1
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
COL_CML	DATA_TYPE	CHARACTER_SET_NAME	COLLATION_NAME
1.0000	char	latin1	latin1_swedish_ci
SELECT DISTINCT
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
DATA_TYPE,
CHARACTER_SET_NAME,
COLLATION_NAME
FROM information_schema.columns
WHERE table_schema LIKE 'test%'
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH <> 1
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
COL_CML	DATA_TYPE	CHARACTER_SET_NAME	COLLATION_NAME
SELECT DISTINCT
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
DATA_TYPE,
CHARACTER_SET_NAME,
COLLATION_NAME
FROM information_schema.columns
WHERE table_schema LIKE 'test%'
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH IS NULL
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
COL_CML	DATA_TYPE	CHARACTER_SET_NAME	COLLATION_NAME
NULL	date	NULL	NULL
NULL	int	NULL	NULL
--> CHAR(0) is allowed (see manual), and here both CHARACHTER_* values
--> are 0, which is intended behavior, and the result of 0 / 0 IS NULL
SELECT CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME,
DATA_TYPE,
CHARACTER_MAXIMUM_LENGTH,
CHARACTER_OCTET_LENGTH,
CHARACTER_SET_NAME,
COLLATION_NAME,
COLUMN_TYPE
FROM information_schema.columns
WHERE table_schema LIKE 'test%'
ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
COL_CML	TABLE_SCHEMA	TABLE_NAME	COLUMN_NAME	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	CHARACTER_SET_NAME	COLLATION_NAME	COLUMN_TYPE
1.0000	test	t1	f1	char	20	20	latin1	latin1_swedish_ci	char(20)
1.0000	test	t1	f2	char	25	25	latin1	latin1_swedish_ci	char(25)
NULL	test	t1	f3	date	NULL	NULL	NULL	NULL	date
NULL	test	t1	f4	int	NULL	NULL	NULL	NULL	int(11)
1.0000	test	t1	f5	char	25	25	latin1	latin1_swedish_ci	char(25)
NULL	test	t1	f6	int	NULL	NULL	NULL	NULL	int(11)
1.0000	test	t10	f1	char	20	20	latin1	latin1_swedish_ci	char(20)
1.0000	test	t10	f2	char	25	25	latin1	latin1_swedish_ci	char(25)
NULL	test	t10	f3	date	NULL	NULL	NULL	NULL	date
NULL	test	t10	f4	int	NULL	NULL	NULL	NULL	int(11)
1.0000	test	t10	f5	char	25	25	latin1	latin1_swedish_ci	char(25)
NULL	test	t10	f6	int	NULL	NULL	NULL	NULL	int(11)
1.0000	test	t11	f1	char	20	20	latin1	latin1_swedish_ci	char(20)
1.0000	test	t11	f2	char	25	25	latin1	latin1_swedish_ci	char(25)
NULL	test	t11	f3	date	NULL	NULL	NULL	NULL	date
NULL	test	t11	f4	int	NULL	NULL	NULL	NULL	int(11)
1.0000	test	t11	f5	char	25	25	latin1	latin1_swedish_ci	char(25)
NULL	test	t11	f6	int	NULL	NULL	NULL	NULL	int(11)
1.0000	test	t2	f1	char	20	20	latin1	latin1_swedish_ci	char(20)
1.0000	test	t2	f2	char	25	25	latin1	latin1_swedish_ci	char(25)
NULL	test	t2	f3	date	NULL	NULL	NULL	NULL	date
NULL	test	t2	f4	int	NULL	NULL	NULL	NULL	int(11)
1.0000	test	t2	f5	char	25	25	latin1	latin1_swedish_ci	char(25)
NULL	test	t2	f6	int	NULL	NULL	NULL	NULL	int(11)
1.0000	test	t3	f1	char	20	20	latin1	latin1_swedish_ci	char(20)
1.0000	test	t3	f2	char	20	20	latin1	latin1_swedish_ci	char(20)
NULL	test	t3	f3	int	NULL	NULL	NULL	NULL	int(11)
1.0000	test	t4	f1	char	20	20	latin1	latin1_swedish_ci	char(20)
1.0000	test	t4	f2	char	25	25	latin1	latin1_swedish_ci	char(25)
NULL	test	t4	f3	date	NULL	NULL	NULL	NULL	date
NULL	test	t4	f4	int	NULL	NULL	NULL	NULL	int(11)
1.0000	test	t4	f5	char	25	25	latin1	latin1_swedish_ci	char(25)
NULL	test	t4	f6	int	NULL	NULL	NULL	NULL	int(11)
1.0000	test	t7	f1	char	20	20	latin1	latin1_swedish_ci	char(20)
1.0000	test	t7	f2	char	25	25	latin1	latin1_swedish_ci	char(25)
NULL	test	t7	f3	date	NULL	NULL	NULL	NULL	date
NULL	test	t7	f4	int	NULL	NULL	NULL	NULL	int(11)
1.0000	test	t8	f1	char	20	20	latin1	latin1_swedish_ci	char(20)
1.0000	test	t8	f2	char	25	25	latin1	latin1_swedish_ci	char(25)
NULL	test	t8	f3	date	NULL	NULL	NULL	NULL	date
NULL	test	t8	f4	int	NULL	NULL	NULL	NULL	int(11)
NULL	test	t9	f1	int	NULL	NULL	NULL	NULL	int(11)
1.0000	test	t9	f2	char	25	25	latin1	latin1_swedish_ci	char(25)
NULL	test	t9	f3	int	NULL	NULL	NULL	NULL	int(11)
1.0000	test4	t6	f1	char	20	20	latin1	latin1_swedish_ci	char(20)
1.0000	test4	t6	f2	char	25	25	latin1	latin1_swedish_ci	char(25)
NULL	test4	t6	f3	date	NULL	NULL	NULL	NULL	date
NULL	test4	t6	f4	int	NULL	NULL	NULL	NULL	int(11)
1.0000	test4	t6	f5	char	25	25	latin1	latin1_swedish_ci	char(25)
NULL	test4	t6	f6	int	NULL	NULL	NULL	NULL	int(11)
DROP DATABASE test1;
DROP DATABASE test4;
DROP TABLE test.t1;
DROP TABLE test.t2;
DROP TABLE test.t3;
DROP TABLE test.t4;
DROP TABLE test.t7;
DROP TABLE test.t8;
DROP TABLE test.t9;
DROP TABLE test.t10;
DROP TABLE test.t11;
