[MDEV-7693] MariaDB - mysql-test - SUITE:funcs_1 - funcs_1.is_tables_mysql is failing on TABLE_COLLATION /DATABASE_COLLATION Created: 2015-03-10  Updated: 2016-04-24  Resolved: 2016-04-24

Status: Closed
Project: MariaDB Server
Component/s: Character Sets, Tests
Affects Version/s: 10.0.16
Fix Version/s: 10.0.25

Type: Bug Priority: Major
Reporter: Nirbhay Choubey (Inactive) Assignee: Sergei Golubchik
Resolution: Fixed Votes: 0
Labels: SUSE
Environment:

SLES-12, x86_64


Issue Links:
Relates
relates to MDEV-8487 mysql-test - main.information_schema ... Closed
relates to MDEV-8486 mysql-test - main.bootstrap fails Closed

 Description   

Completed: Failed 3/131 tests, 97.71% were successful.
 
Failing test(s): funcs_1.is_tables_mysql funcs_1.is_triggers

(not regression to v11)

==========================================================

funcs_1.is_tables_mysql 'innodb_plugin'  [ fail ]
        Test ended at 2015-03-09 12:57:56
 
CURRENT_TEST: funcs_1.is_tables_mysql
--- /usr/share/mysql-test/suite/funcs_1/r/is_tables_mysql.result	2015-01-25 16:21:38.000000000 +0100
+++ /usr/share/mysql-test/suite/funcs_1/r/is_tables_mysql.reject	2015-03-09 12:57:56.586524508 +0100
@@ -167,7 +167,7 @@
 CREATE_TIME	#CRT#
 UPDATE_TIME	#UT#
 CHECK_TIME	#CT#
-TABLE_COLLATION	latin1_swedish_ci
+TABLE_COLLATION	utf8_general_ci
 CHECKSUM	NULL
 CREATE_OPTIONS	#CO#
 TABLE_COMMENT	#TC#
 
mysqltest: Result length mismatch
 
 - saving '/usr/share/mysql-test/var/log/funcs_1.is_tables_mysql-innodb_plugin/' to '/usr/share/mysql-test/var/log/funcs_1.is_tables_mysql-innodb_plugin/'

==========================================================

funcs_1.is_tables_mysql 'xtradb'         [ fail ]
        Test ended at 2015-03-09 12:58:19
 
CURRENT_TEST: funcs_1.is_tables_mysql
--- /usr/share/mysql-test/suite/funcs_1/r/is_tables_mysql.result	2015-01-25 16:21:38.000000000 +0100
+++ /usr/share/mysql-test/suite/funcs_1/r/is_tables_mysql.reject	2015-03-09 12:58:19.602524087 +0100
@@ -167,7 +167,7 @@
 CREATE_TIME	#CRT#
 UPDATE_TIME	#UT#
 CHECK_TIME	#CT#
-TABLE_COLLATION	latin1_swedish_ci
+TABLE_COLLATION	utf8_general_ci
 CHECKSUM	NULL
 CREATE_OPTIONS	#CO#
 TABLE_COMMENT	#TC#
 
mysqltest: Result length mismatch
 
 - saving '/usr/share/mysql-test/var/log/funcs_1.is_tables_mysql-xtradb/' to '/usr/share/mysql-test/var/log/funcs_1.is_tables_mysql-xtradb/'

==========================================================

funcs_1.is_triggers                      [ fail ]
        Test ended at 2015-03-09 12:58:42
 
CURRENT_TEST: funcs_1.is_triggers
--- /usr/share/mysql-test/suite/funcs_1/r/is_triggers.result	2015-01-25 16:21:35.000000000 +0100
+++ /usr/share/mysql-test/suite/funcs_1/r/is_triggers.reject	2015-03-09 12:58:42.466523671 +0100
@@ -105,8 +105,8 @@
 OR action_condition IS NOT NULL OR action_reference_old_table IS NOT NULL
 OR action_reference_new_table IS NOT NULL;
 TRIGGER_CATALOG	TRIGGER_SCHEMA	TRIGGER_NAME	EVENT_MANIPULATION	EVENT_OBJECT_CATALOG	EVENT_OBJECT_SCHEMA	EVENT_OBJECT_TABLE	ACTION_ORDER	ACTION_CONDITION	ACTION_STATEMENTACTION_ORIENTATION	ACTION_TIMING	ACTION_REFERENCE_OLD_TABLE	ACTION_REFERENCE_NEW_TABLE	ACTION_REFERENCE_OLD_ROW	ACTION_REFERENCE_NEW_ROW	CREATED	SQL_MODE	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-def	mtr	gs_insert	INSERT	def	mtr	global_suppressions	0	NULL	BEGIN   DECLARE dummy INT;   SELECT "" REGEXP NEW.pattern INTO dummy; END	ROW	BEFORE	NULL	NULL	OLD	NEW	NULL		root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
-def	mtr	ts_insert	INSERT	def	mtr	test_suppressions	0	NULL	BEGIN   DECLARE dummy INT;   SELECT "" REGEXP NEW.pattern INTO dummy; END	ROW	BEFORE	NULL	NULL	OLD	NEW	NULL		root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
+def	mtr	gs_insert	INSERT	def	mtr	global_suppressions	0	NULL	BEGIN   DECLARE dummy INT;   SELECT "" REGEXP NEW.pattern INTO dummy; END	ROW	BEFORE	NULL	NULL	OLD	NEW	NULL		root@localhost	latin1	latin1_swedish_ci	utf8_general_ci
+def	mtr	ts_insert	INSERT	def	mtr	test_suppressions	0	NULL	BEGIN   DECLARE dummy INT;   SELECT "" REGEXP NEW.pattern INTO dummy; END	ROW	BEFORE	NULL	NULL	OLD	NEW	NULL		root@localhost	latin1	latin1_swedish_ci	utf8_general_ci
 ##################################################################################
 # Testcase 3.2.18.2 + 3.2.18.3: INFORMATION_SCHEMA.TRIGGERS accessible information
 ##################################################################################
 
mysqltest: Result length mismatch
 
 - saving '/usr/share/mysql-test/var/log/funcs_1.is_triggers/' to '/usr/share/mysql-test/var/log/funcs_1.is_triggers/'

https://bugzilla.suse.com/show_bug.cgi?id=921308



 Comments   
Comment by Elena Stepanova [ 2015-03-12 ]

I assume they build the server with -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

Comment by Elena Stepanova [ 2015-03-13 ]

Other tests that fail on a server built this way:

main.mysql_client_test

main.mysql_client_test                   w4 [ fail ]
        Test ended at 2015-03-13 01:14:49
 
CURRENT_TEST: main.mysql_client_test
mysqltest: At line 17: exec of '/home/elenst/git/5.5/tests/mysql_client_test --defaults-file=/home/elenst/git/5.5/mysql-test/var/4/my.cnf --testcase --vardir=/home/elenst/git/5.5/mysql-test/var/4 --getopt-ll-test=25600M >> /home/elenst/git/5.5/mysql-test/var/4/log/mysql_client_test.out.log 2>&1' failed, error: 256, status: 1, errno: 0
Output from before failure:
SET @old_slow_query_log= @@global.slow_query_log;
 
 
 
The result from queries just before the failure was:
SET @old_general_log= @@global.general_log;
SET @old_slow_query_log= @@global.slow_query_log;

The failure is here:

 Establishing a test connection ...OK
 total parameters in stmt: `2` (expected: `2`)
 row 1: 1, hh(2)
 row 2: 2, hh(2)
 row 3: 1, ii(2)
 row 1: 1, hh(2)
 row 2: 2, hh(2)
 row 3: 1, ii(2)
 row 1: 1, hh(2)
 row 2: 1, ii(2)
 row 3: 2, ii(2)/home/elenst/git/5.5/tests/mysql_client_test.c:2399: check failed: 'hits1-hits2 == 1'
MySQL error 0: 

Apparently when the server/client are built with UTF8, the query cache isn't hit when it should be. The actual SQL that is executed is this:

                  107 Query     SET SQL_MODE=''
                  107 Query     drop table if exists t1
                  107 Query     create table t1 (id1 int(11) NOT NULL default '0', value2 varchar(100), value1 varchar(100))
                  107 Query     insert into t1 values (1, 'hh', 'hh'), (2, 'hh', 'hh'), (1, 'ii', 'ii'), (2, 'ii', 'ii')
                  107 Query     set global query_cache_size=1000000
                  107 Prepare   select id1, value1 from t1 where id1= ? or CONVERT(value1 USING utf8)= ?
                  107 Execute   select id1, value1 from t1 where id1= 1 or CONVERT(value1 USING utf8)= 'hh'
                  107 Query     show status like 'qcache_hits'
                  107 Query     show status like 'qcache_hits'
                  107 Execute   select id1, value1 from t1 where id1= 1 or CONVERT(value1 USING utf8)= 'ii'
                  107 Query     show status like 'qcache_hits'
                  107 Query     show status like 'qcache_hits'
                  107 Close stmt        
                  121 Connect   root@localhost as anonymous on client_test_db
                  121 Query     SET SQL_MODE=''
                  121 Prepare   select id1, value1 from t1 where id1= ? or CONVERT(value1 USING utf8)= ?
                  121 Execute   select id1, value1 from t1 where id1= 1 or CONVERT(value1 USING utf8)= 'hh'
                  121 Query     show status like 'qcache_hits'
                  121 Query     show status like 'qcache_hits'
                  121 Execute   select id1, value1 from t1 where id1= 1 or CONVERT(value1 USING utf8)= 'ii'
                  121 Query     show status like 'qcache_hits'

But I couldn't reproduce it just running via a client, maybe there is something about the connector. Needs further investigation.

main.mysql_client_test_nonblock

I assume it's similar to main.mysql_client_test

main.mysql_client_test_nonblock          w4 [ fail ]
        Test ended at 2015-03-13 01:14:53
 
CURRENT_TEST: main.mysql_client_test_nonblock
mysqltest: At line 17: exec of '/home/elenst/git/5.5/tests/mysql_client_test --defaults-file=/home/elenst/git/5.5/mysql-test/var/4/my.cnf --testcase --vardir=/home/elenst/git/5.5/mysql-test/var/4 --non-blocking-api --getopt-ll-test=25600M >> /home/elenst/git/5.5/mysql-test/var/4/log/mysql_client_test.out.log 2>&1' failed, error: 256, status: 1, errno: 0
Output from before failure:
SET @old_slow_query_log= @@global.slow_query_log;
 
 
 
The result from queries just before the failure was:
SET @old_general_log= @@global.general_log;
SET @old_slow_query_log= @@global.slow_query_log;
 
 - saving '/home/elenst/git/5.5/mysql-test/var/4/log/main.mysql_client_test_nonblock/' to '/home/elenst/git/5.5/mysql-test/var/log/main.mysql_client_test_nonblock/'

main.information_schema

main.information_schema 'xtradb'         w1 [ fail ]
        Test ended at 2015-03-13 01:14:51
 
CURRENT_TEST: main.information_schema
--- /home/elenst/git/5.5/mysql-test/r/information_schema.result 2015-03-12 18:47:38.585927342 +0200
+++ /home/elenst/git/5.5/mysql-test/r/information_schema.reject 2015-03-13 01:14:51.281132062 +0200
@@ -9,7 +9,7 @@
 create user mysqltest_3;
 select * from information_schema.SCHEMATA where schema_name > 'm';
 CATALOG_NAME   SCHEMA_NAME     DEFAULT_CHARACTER_SET_NAME      DEFAULT_COLLATION_NAME  SQL_PATH
-def    mtr     latin1  latin1_swedish_ci       NULL
+def    mtr     utf8    utf8_general_ci NULL
 def    mysql   latin1  latin1_swedish_ci       NULL
 def    performance_schema      utf8    utf8_general_ci NULL
 def    test    latin1  latin1_swedish_ci       NULL

main.mysqld--help 'unix' w4 [ fail ]
Test ended at 2015-03-13 01:28:42

main.mysqld--help

CURRENT_TEST: main.mysqld--help
--- /home/elenst/git/5.5/mysql-test/r/mysqld--help.result       2015-03-12 18:47:38.593927391 +0200
+++ /home/elenst/git/5.5/mysql-test/r/mysqld--help.reject       2015-03-13 01:28:42.629254492 +0200
@@ -876,10 +876,10 @@
 bulk-insert-buffer-size 8388608
 character-set-client-handshake TRUE
 character-set-filesystem binary
-character-set-server latin1
+character-set-server utf8
 character-sets-dir MYSQL_CHARSETSDIR/
 chroot (No default value)
-collation-server latin1_swedish_ci
+collation-server utf8_general_ci
 completion-type NO_CHAIN
 concurrent-insert AUTO
 connect-timeout 10

funcs_1.is_columns_mysql

funcs_1.is_columns_mysql                 w4 [ fail ]
        Test ended at 2015-03-13 01:40:28
 
CURRENT_TEST: funcs_1.is_columns_mysql
--- /home/elenst/git/5.5/mysql-test/suite/funcs_1/r/is_columns_mysql.result     2015-03-12 18:47:38.697927900 +0200
+++ /home/elenst/git/5.5/mysql-test/suite/funcs_1/r/is_columns_mysql.reject     2015-03-13 01:40:28.504754747 +0200
@@ -99,7 +99,7 @@
 def    mysql   host    Update_priv     5       N       NO      enum    1       3       NULL    NULL    NULL    utf8    utf8_general_ci enum('N','Y')                   select,insert,update,references 
 def    mysql   ndb_binlog_index        deletes 6       NULL    NO      bigint  NULL    NULL    20      0       NULL    NULL    NULL    bigint(20) unsigned                     select,insert,update,references 
 def    mysql   ndb_binlog_index        epoch   3       NULL    NO      bigint  NULL    NULL    20      0       NULL    NULL    NULL    bigint(20) unsigned     PRI             select,insert,update,references 
-def    mysql   ndb_binlog_index        File    2       NULL    NO      varchar 255     255     NULL    NULL    NULL    latin1  latin1_swedish_ci       varchar(255)                    select,insert,update,references 
+def    mysql   ndb_binlog_index        File    2       NULL    NO      varchar 255     765     NULL    NULL    NULL    utf8    utf8_general_ci varchar(255)                    select,insert,update,references 
 def    mysql   ndb_binlog_index        inserts 4       NULL    NO      bigint  NULL    NULL    20      0       NULL    NULL    NULL    bigint(20) unsigned                     select,insert,update,references 
 def    mysql   ndb_binlog_index        Position        1       NULL    NO      bigint  NULL    NULL    20      0       NULL    NULL    NULL    bigint(20) unsigned                     select,insert,update,references 
 def    mysql   ndb_binlog_index        schemaops       7       NULL    NO      bigint  NULL    NULL    20      0       NULL    NULL    NULL    bigint(20) unsigned                     select,insert,update,references 
@@ -242,7 +242,6 @@
 1.0000 longblob        NULL    NULL
 1.0000 char    latin1  latin1_bin
 1.0000 char    latin1  latin1_swedish_ci
-1.0000 varchar latin1  latin1_swedish_ci
 1.0000 text    utf8    utf8_bin
 1.0000 mediumtext      utf8    utf8_general_ci
 1.0000 text    utf8    utf8_general_ci
@@ -391,7 +390,7 @@
 3.0000 mysql   host    Execute_priv    enum    1       3       utf8    utf8_general_ci enum('N','Y')
 3.0000 mysql   host    Trigger_priv    enum    1       3       utf8    utf8_general_ci enum('N','Y')
 NULL   mysql   ndb_binlog_index        Position        bigint  NULL    NULL    NULL    NULL    bigint(20) unsigned
-1.0000 mysql   ndb_binlog_index        File    varchar 255     255     latin1  latin1_swedish_ci       varchar(255)
+3.0000 mysql   ndb_binlog_index        File    varchar 255     765     utf8    utf8_general_ci varchar(255)
 NULL   mysql   ndb_binlog_index        epoch   bigint  NULL    NULL    NULL    NULL    bigint(20) unsigned
 NULL   mysql   ndb_binlog_index        inserts bigint  NULL    NULL    NULL    NULL    bigint(20) unsigned
 NULL   mysql   ndb_binlog_index        updates bigint  NULL    NULL    NULL    NULL    bigint(20) unsigned
 
mysqltest: Result length mismatch

funcs_1.is_triggers

funcs_1.is_triggers                      w4 [ fail ]
        Test ended at 2015-03-13 01:40:56
 
CURRENT_TEST: funcs_1.is_triggers
--- /home/elenst/git/5.5/mysql-test/suite/funcs_1/r/is_triggers.result  2015-03-12 18:47:25.941864645 +0200
+++ /home/elenst/git/5.5/mysql-test/suite/funcs_1/r/is_triggers.reject  2015-03-13 01:40:56.544893781 +0200
@@ -105,8 +105,8 @@
 OR action_condition IS NOT NULL OR action_reference_old_table IS NOT NULL
 OR action_reference_new_table IS NOT NULL;
 TRIGGER_CATALOG        TRIGGER_SCHEMA  TRIGGER_NAME    EVENT_MANIPULATION      EVENT_OBJECT_CATALOG    EVENT_OBJECT_SCHEMA     EVENT_OBJECT_TABLE      ACTION_ORDER    ACTION_CONDITION        ACTION_STATEMENT        ACTION_ORIENTATION      ACTION_TIMING   ACTION_REFERENCE_OLD_TABLE      ACTION_REFERENCE_NEW_TABLE      ACTION_REFERENCE_OLD_ROW        ACTION_REFERENCE_NEW_ROW        CREATED SQL_MODE        DEFINER CHARACTER_SET_CLIENT    COLLATION_CONNECTION    DATABASE_COLLATION
-def    mtr     gs_insert       INSERT  def     mtr     global_suppressions     0       NULL    BEGIN   DECLARE dummy INT;   SELECT "" REGEXP NEW.pattern INTO dummy; END       ROW     BEFORE  NULL    NULL    OLD     NEW     NULL            root@localhost  latin1  latin1_swedish_ci       latin1_swedish_ci
-def    mtr     ts_insert       INSERT  def     mtr     test_suppressions       0       NULL    BEGIN   DECLARE dummy INT;   SELECT "" REGEXP NEW.pattern INTO dummy; END       ROW     BEFORE  NULL    NULL    OLD     NEW     NULL            root@localhost  latin1  latin1_swedish_ci       latin1_swedish_ci
+def    mtr     gs_insert       INSERT  def     mtr     global_suppressions     0       NULL    BEGIN   DECLARE dummy INT;   SELECT "" REGEXP NEW.pattern INTO dummy; END       ROW     BEFORE  NULL    NULL    OLD     NEW     NULL            root@localhost  latin1  latin1_swedish_ci       utf8_general_ci
+def    mtr     ts_insert       INSERT  def     mtr     test_suppressions       0       NULL    BEGIN   DECLARE dummy INT;   SELECT "" REGEXP NEW.pattern INTO dummy; END       ROW     BEFORE  NULL    NULL    OLD     NEW     NULL            root@localhost  latin1  latin1_swedish_ci       utf8_general_ci
 ##################################################################################
 # Testcase 3.2.18.2 + 3.2.18.3: INFORMATION_SCHEMA.TRIGGERS accessible information
 ##################################################################################

Comment by Nirbhay Choubey (Inactive) [ 2015-03-13 ]

Yes, the binaries were built with -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci.

Comment by Elena Stepanova [ 2015-03-13 ]

Client tests should be analyzed anyway, there might be a bug in there.
For the rest, including the initially reported failure, the question is whether MTR suite should support non-default builds like this, and whether it should do it by generalizing (masking) results, or by skipping sensitive tests.

serg, what do you think?
No need to spend time actually fixing the test suite, I can do it (for this particular flavor of non-defaultness, anyway).

Comment by Nirbhay Choubey (Inactive) [ 2015-05-11 ]

elenst It there anything else needed besides possibly masking out the differences?

Comment by Elena Stepanova [ 2015-05-11 ]

nirbhay_c
As said above:

Client tests should be analyzed anyway, there might be a bug in there.
For the rest, including the initially reported failure, the question is whether MTR suite should support non-default builds like this, and whether it should do it by generalizing (masking) results, or by skipping sensitive tests.

The problem is, I doubt it's realistic to support all arbitrary build configurations. We can adjust to a particular one, but it will be more efficient to know in advance all non-default options that they are using.

Generated at Thu Feb 08 07:21:33 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.