diff options
-rw-r--r-- | mysql-test/r/ndb_condition_pushdown.result | 18 | ||||
-rw-r--r-- | mysql-test/t/ndb_condition_pushdown.test | 12 | ||||
-rw-r--r-- | sql/ha_ndbcluster.cc | 5 |
3 files changed, 32 insertions, 3 deletions
diff --git a/mysql-test/r/ndb_condition_pushdown.result b/mysql-test/r/ndb_condition_pushdown.result index 3e46a487c07..c516740d02c 100644 --- a/mysql-test/r/ndb_condition_pushdown.result +++ b/mysql-test/r/ndb_condition_pushdown.result @@ -1766,5 +1766,21 @@ select * from t3 left join t4 on t4.attr2 = t3.attr2 where t4.attr1 > 1 and t4.a id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t3 ALL NULL NULL NULL NULL 6 Using temporary; Using filesort 1 SIMPLE t4 ALL NULL NULL NULL NULL 6 Using where +create table t5 (a int primary key auto_increment, b tinytext not null) +engine = ndb; +insert into t5 (b) values ('jonas'), ('jensing'), ('johan'); +set engine_condition_pushdown = off; +select * from t5 where b like '%jo%' order by a; +a b +1 jonas +3 johan +set engine_condition_pushdown = on; +explain select * from t5 where b like '%jo%'; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t5 ALL NULL NULL NULL NULL 3 Using where +select * from t5 where b like '%jo%' order by a; +a b +1 jonas +3 johan set engine_condition_pushdown = @old_ecpd; -DROP TABLE t1,t2,t3,t4; +DROP TABLE t1,t2,t3,t4,t5; diff --git a/mysql-test/t/ndb_condition_pushdown.test b/mysql-test/t/ndb_condition_pushdown.test index 9f512430085..1e6e105bc61 100644 --- a/mysql-test/t/ndb_condition_pushdown.test +++ b/mysql-test/t/ndb_condition_pushdown.test @@ -1639,5 +1639,15 @@ select * from t2 where (attr1 < 2) = (attr2 < 2) order by pk1; explain select * from t3 left join t4 on t4.attr2 = t3.attr2 where t4.attr1 > 1 and t4.attr3 < 5 or t4.attr1 is null order by t4.pk1; +# bug#15722 +create table t5 (a int primary key auto_increment, b tinytext not null) +engine = ndb; +insert into t5 (b) values ('jonas'), ('jensing'), ('johan'); +set engine_condition_pushdown = off; +select * from t5 where b like '%jo%' order by a; +set engine_condition_pushdown = on; +explain select * from t5 where b like '%jo%'; +select * from t5 where b like '%jo%' order by a; + set engine_condition_pushdown = @old_ecpd; -DROP TABLE t1,t2,t3,t4; +DROP TABLE t1,t2,t3,t4,t5; diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 692d62574f3..14bdb529aee 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -6587,7 +6587,10 @@ void ndb_serialize_cond(const Item *item, void *arg) context->expecting_field_result(INT_RESULT)) : true)) && // Bit fields no yet supported in scan filter - type != MYSQL_TYPE_BIT) + type != MYSQL_TYPE_BIT && + // No BLOB support in scan filter + type != MYSQL_TYPE_TINY_BLOB && + type != MYSQL_TYPE_BLOB) { const NDBCOL *col= tab->getColumn(field->field_name); DBUG_ASSERT(col); |