[Commits] Rev 3770: MDEV-5446: Assertion `!table || (!table->read_set || bitmap_is_set(table->read_set, field_index))' fails on EXPLAIN EXTENDED with VALUES function in file:///home/bell/maria/bzr/work-maria-5.3-MDEV-5446/

sanja at montyprogram.com sanja at montyprogram.com
Thu Mar 13 22:04:55 EET 2014


At file:///home/bell/maria/bzr/work-maria-5.3-MDEV-5446/

------------------------------------------------------------
revno: 3770
revision-id: sanja at montyprogram.com-20140313200455-yivo3d5dbz2ytfqh
parent: sanja at montyprogram.com-20140312164719-l3aqinh6cd2c8n90
committer: sanja at montyprogram.com
branch nick: work-maria-5.3-MDEV-5446
timestamp: Thu 2014-03-13 22:04:55 +0200
message:
  MDEV-5446: Assertion `!table || (!table->read_set || bitmap_is_set(table->read_set, field_index))' fails on EXPLAIN EXTENDED with VALUES function
  
  field_index should be set correctly for null field created by Item_insert_value::fix_fields().
-------------- next part --------------
=== removed file 'mysql-test/r/func_misc.result'
--- a/mysql-test/r/func_misc.result	2014-02-12 20:17:28 +0000
+++ b/mysql-test/r/func_misc.result	1970-01-01 00:00:00 +0000
@@ -1,274 +0,0 @@
-DROP TABLE IF EXISTS t1, t2;
-select format(1.5555,0),format(123.5555,1),format(1234.5555,2),format(12345.55555,3),format(123456.5555,4),format(1234567.5555,5),format("12345.2399",2);
-format(1.5555,0)	format(123.5555,1)	format(1234.5555,2)	format(12345.55555,3)	format(123456.5555,4)	format(1234567.5555,5)	format("12345.2399",2)
-2	123.6	1,234.56	12,345.556	123,456.5555	1,234,567.55550	12,345.24
-select inet_ntoa(inet_aton("255.255.255.255.255.255.255.255"));
-inet_ntoa(inet_aton("255.255.255.255.255.255.255.255"))
-NULL
-select inet_aton("255.255.255.255.255"),inet_aton("255.255.1.255"),inet_aton("0.1.255");
-inet_aton("255.255.255.255.255")	inet_aton("255.255.1.255")	inet_aton("0.1.255")
-1099511627775	4294902271	65791
-select inet_ntoa(1099511627775),inet_ntoa(4294902271),inet_ntoa(511);
-inet_ntoa(1099511627775)	inet_ntoa(4294902271)	inet_ntoa(511)
-NULL	255.255.1.255	0.0.1.255
-select hex(inet_aton('127'));
-hex(inet_aton('127'))
-7F
-select hex(inet_aton('127.1'));
-hex(inet_aton('127.1'))
-7F000001
-select hex(inet_aton('127.1.1'));
-hex(inet_aton('127.1.1'))
-7F010001
-select length(uuid()), charset(uuid()), length(unhex(replace(uuid(),_utf8'-',_utf8'')));
-length(uuid())	charset(uuid())	length(unhex(replace(uuid(),_utf8'-',_utf8'')))
-36	utf8	16
-set @a= uuid_short();
-set @b= uuid_short();
-select cast(@a - @b as signed);
-cast(@a - @b as signed)
--1
-select length(format('nan', 2)) > 0;
-length(format('nan', 2)) > 0
-1
-Warnings:
-Warning	1292	Truncated incorrect DOUBLE value: 'nan'
-select concat("$",format(2500,2));
-concat("$",format(2500,2))
-$2,500.00
-create table t1 ( a timestamp );
-insert into t1 values ( '2004-01-06 12:34' );
-select a from t1 where left(a+0,6) in ( left(20040106,6) );
-a
-2004-01-06 12:34:00
-select a from t1 where left(a+0,6) = ( left(20040106,6) );
-a
-2004-01-06 12:34:00
-select a from t1 where right(a+0,6) in ( right(20040106123400,6) );
-a
-2004-01-06 12:34:00
-select a from t1 where right(a+0,6) = ( right(20040106123400,6) );
-a
-2004-01-06 12:34:00
-select a from t1 where mid(a+0,6,3) in ( mid(20040106123400,6,3) );
-a
-2004-01-06 12:34:00
-select a from t1 where mid(a+0,6,3) = ( mid(20040106123400,6,3) );
-a
-2004-01-06 12:34:00
-drop table t1;
-CREATE TABLE t1 (conn CHAR(7), connection_id INT);
-INSERT INTO t1 VALUES ('default', CONNECTION_ID());
-SELECT GET_LOCK('bug16501',600);
-GET_LOCK('bug16501',600)
-1
-INSERT INTO t1 VALUES ('con1', CONNECTION_ID());
-SELECT IS_USED_LOCK('bug16501') = connection_id
-FROM t1
-WHERE conn = 'default';
-IS_USED_LOCK('bug16501') = connection_id
-1
-SELECT GET_LOCK('bug16501',600);
-SELECT IS_USED_LOCK('bug16501') = CONNECTION_ID();
-IS_USED_LOCK('bug16501') = CONNECTION_ID()
-1
-SELECT RELEASE_LOCK('bug16501');
-RELEASE_LOCK('bug16501')
-1
-GET_LOCK('bug16501',600)
-1
-SELECT IS_USED_LOCK('bug16501') = connection_id
-FROM t1
-WHERE conn = 'con1';
-IS_USED_LOCK('bug16501') = connection_id
-1
-SELECT IS_USED_LOCK('bug16501') = CONNECTION_ID();
-IS_USED_LOCK('bug16501') = CONNECTION_ID()
-1
-SELECT RELEASE_LOCK('bug16501');
-RELEASE_LOCK('bug16501')
-1
-SELECT IS_USED_LOCK('bug16501');
-IS_USED_LOCK('bug16501')
-NULL
-DROP TABLE t1;
-select export_set(3, _latin1'foo', _utf8'bar', ',', 4);
-export_set(3, _latin1'foo', _utf8'bar', ',', 4)
-foo,foo,bar,bar
-End of 4.1 tests
-create table t1 as select uuid(), length(uuid());
-show create table t1;
-Table	Create Table
-t1	CREATE TABLE `t1` (
-  `uuid()` varchar(36) CHARACTER SET utf8 NOT NULL DEFAULT '',
-  `length(uuid())` int(10) NOT NULL DEFAULT '0'
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-drop table t1;
-create table t1 select INET_ATON('255.255.0.1') as `a`;
-show create table t1;
-Table	Create Table
-t1	CREATE TABLE `t1` (
-  `a` bigint(21) unsigned DEFAULT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-drop table t1;
-drop table if exists table_26093;
-drop function if exists func_26093_a;
-drop function if exists func_26093_b;
-create table table_26093(a int);
-insert into table_26093 values
-(1), (2), (3), (4), (5),
-(6), (7), (8), (9), (10);
-create function func_26093_a(x int) returns int
-begin
-set @invoked := @invoked + 1;
-return x;
-end//
-create function func_26093_b(x int, y int) returns int
-begin
-set @invoked := @invoked + 1;
-return x;
-end//
-select avg(a) from table_26093;
-avg(a)
-5.5000
-select benchmark(100, (select avg(a) from table_26093));
-benchmark(100, (select avg(a) from table_26093))
-0
-set @invoked := 0;
-select benchmark(100, (select avg(func_26093_a(a)) from table_26093));
-benchmark(100, (select avg(func_26093_a(a)) from table_26093))
-0
-select @invoked;
- at invoked
-10
-set @invoked := 0;
-select benchmark(100, (select avg(func_26093_b(a, rand())) from table_26093));
-benchmark(100, (select avg(func_26093_b(a, rand())) from table_26093))
-0
-select @invoked;
- at invoked
-1000
-select benchmark(100, (select (a) from table_26093));
-ERROR 21000: Subquery returns more than 1 row
-select benchmark(100, (select 1, 1));
-ERROR 21000: Operand should contain 1 column(s)
-drop table table_26093;
-drop function func_26093_a;
-drop function func_26093_b;
-SELECT NAME_CONST('test', NOW());
-ERROR HY000: Incorrect arguments to NAME_CONST
-SELECT NAME_CONST('test', UPPER('test'));
-ERROR HY000: Incorrect arguments to NAME_CONST
-SELECT NAME_CONST('test', NULL);
-test
-NULL
-SELECT NAME_CONST('test', 1);
-test
-1
-SELECT NAME_CONST('test', -1);
-test
--1
-SELECT NAME_CONST('test', 1.0);
-test
-1.0
-SELECT NAME_CONST('test', -1.0);
-test
--1.0
-SELECT NAME_CONST('test', 'test');
-test
-test
-CREATE TABLE t1 (a INT);
-INSERT INTO t1 VALUES (1),(2),(3);
-SELECT NAME_CONST('flag',1)    * MAX(a) FROM t1;
-NAME_CONST('flag',1)    * MAX(a)
-3
-SELECT NAME_CONST('flag',1.5)  * MAX(a) FROM t1;
-NAME_CONST('flag',1.5)  * MAX(a)
-4.5
-SELECT NAME_CONST('flag',-1)   * MAX(a) FROM t1;
-NAME_CONST('flag',-1)   * MAX(a)
--3
-SELECT NAME_CONST('flag',-1.5) * MAX(a) FROM t1;
-NAME_CONST('flag',-1.5) * MAX(a)
--4.5
-SELECT NAME_CONST('flag', SQRT(4)) * MAX(a) FROM t1;
-ERROR HY000: Incorrect arguments to NAME_CONST
-SELECT NAME_CONST('flag',-SQRT(4)) * MAX(a) FROM t1;
-ERROR HY000: Incorrect arguments to NAME_CONST
-DROP TABLE t1;
-CREATE TABLE t1 (a int);
-INSERT INTO t1 VALUES (5), (2);
-SELECT NAME_CONST(x,2) FROM (SELECT a x FROM t1) t;
-ERROR HY000: Incorrect arguments to NAME_CONST
-DROP TABLE t1;
-CREATE TABLE t1(a INT);
-INSERT INTO t1 VALUES (), (), ();
-SELECT NAME_CONST(a, '1') FROM t1;
-ERROR HY000: Incorrect arguments to NAME_CONST
-SET INSERT_ID= NAME_CONST(a, a);
-ERROR HY000: Incorrect arguments to NAME_CONST
-DROP TABLE t1;
-create table t1 (a int not null);
-insert into t1 values (-1), (-2);
-select min(a) from t1 group by inet_ntoa(a);
-min(a)
--2
-drop table t1;
-SELECT NAME_CONST('var', 'value') COLLATE latin1_general_cs;
-NAME_CONST('var', 'value') COLLATE latin1_general_cs
-value
-select @@session.time_zone into @save_tz;
-set @@session.time_zone='UTC';
-select uuid() into @my_uuid;
-select mid(@my_uuid,15,1);
-mid(@my_uuid,15,1)
-1
-select 24 * 60 * 60 * 1000 * 1000 * 10 into @my_uuid_one_day;
-select concat('0',mid(@my_uuid,16,3),mid(@my_uuid,10,4),left(@my_uuid,8)) into @my_uuidate;
-select floor(conv(@my_uuidate,16,10)/@my_uuid_one_day) into @my_uuid_date;
-select 141427 + datediff(curdate(),'1970-01-01') into @my_uuid_synthetic;
-select @my_uuid_date - @my_uuid_synthetic;
- at my_uuid_date - @my_uuid_synthetic
-0
-set @@session.time_zone=@save_tz;
-CREATE TABLE t1 (a DATE);
-SELECT * FROM t1 WHERE a = NAME_CONST('reportDate',
-_binary'2009-01-09' COLLATE 'binary');
-a
-DROP TABLE t1;
-select NAME_CONST('_id',1234) as id;
-id
-1234
-End of 5.0 tests
-select connection_id() > 0;
-connection_id() > 0
-1
-#
-# Bug #54461: crash with longblob and union or update with subquery
-#
-CREATE TABLE t1 (a INT, b LONGBLOB);
-INSERT INTO t1 VALUES (1, '2'), (2, '3'), (3, '2');
-SELECT DISTINCT LEAST(a, (SELECT b FROM t1 LIMIT 1)) FROM t1 UNION SELECT 1;
-LEAST(a, (SELECT b FROM t1 LIMIT 1))
-1
-2
-SELECT DISTINCT GREATEST(a, (SELECT b FROM t1 LIMIT 1)) FROM t1 UNION SELECT 1;
-GREATEST(a, (SELECT b FROM t1 LIMIT 1))
-2
-3
-1
-DROP TABLE t1;
-SELECT INET_NTOA(0);
-INET_NTOA(0)
-0.0.0.0
-SELECT '1' IN ('1', INET_NTOA(0));
-'1' IN ('1', INET_NTOA(0))
-1
-End of tests
-SELECT NAME_CONST('a', -(1 OR 2)) OR 1;
-ERROR HY000: Incorrect arguments to NAME_CONST
-SELECT NAME_CONST('a', -(1 AND 2)) AND 1;
-ERROR HY000: Incorrect arguments to NAME_CONST
-SELECT NAME_CONST('a', -(1)) OR 1;
-NAME_CONST('a', -(1)) OR 1
-1

=== modified file 'mysql-test/t/func_misc.test'
--- a/mysql-test/t/func_misc.test	2014-02-12 20:17:28 +0000
+++ b/mysql-test/t/func_misc.test	2014-03-13 20:04:55 +0000
@@ -310,3 +310,18 @@ SELECT NAME_CONST('a', -(1 OR 2)) OR 1;
 SELECT NAME_CONST('a', -(1 AND 2)) AND 1;
 SELECT NAME_CONST('a', -(1)) OR 1;
 
+--echo #
+--echo #MDEV-5446: Assertion `!table || (!table->read_set ||
+--echo #bitmap_is_set(table->read_set, field_index))' fails on
+--echo #EXPLAIN EXTENDED with VALUES function
+--echo #
+CREATE TABLE t1 (a INT, b INT) ENGINE=MyISAM;
+INSERT INTO t1 VALUES (1,10);
+CREATE VIEW v1 AS SELECT * FROM t1;
+
+EXPLAIN EXTENDED SELECT VALUES(b) FROM v1;
+
+drop view v1;
+drop table t1;
+
+--echo End of 5.3 tests

=== modified file 'sql/item.cc'
--- a/sql/item.cc	2014-02-13 09:15:03 +0000
+++ b/sql/item.cc	2014-03-13 20:04:55 +0000
@@ -7897,6 +7897,8 @@ bool Item_insert_value::fix_fields(THD *
     {
       tmp_field->init(field_arg->field->table);
       set_field(tmp_field);
+      // the index is important when read bits set
+      tmp_field->field_index= field_arg->field->field_index;
     }
   }
   return FALSE;



More information about the commits mailing list