diff options
author | Sachin Setiya <sachin.setiya@maridb.com> | 2017-12-28 18:09:28 +0530 |
---|---|---|
committer | Sachin Setiya <sachin.setiya@maridb.com> | 2017-12-28 18:09:28 +0530 |
commit | 1f4d1fbe2c0344c35b109cee45ac22ea69e43fb9 (patch) | |
tree | bf1998c668ce169592e52f3f3455f61688e6555b | |
parent | 7a66e0ab8f52f3bd32850463daa05f9a2401e6b1 (diff) | |
download | mariadb-git-bb-10.3-hidden.tar.gz |
MDEV-14785 SYSTEM_INVISIBLE behavior not Consistentbb-10.3-hidden
//TODO patch commit message
-rw-r--r-- | mysql-test/r/invisible_field_debug.result | 8 | ||||
-rw-r--r-- | mysql-test/t/invisible_field_debug.test | 9 | ||||
-rw-r--r-- | sql/sql_base.cc | 4 |
3 files changed, 20 insertions, 1 deletions
diff --git a/mysql-test/r/invisible_field_debug.result b/mysql-test/r/invisible_field_debug.result index dab95f14d4c..7dfd5dfe329 100644 --- a/mysql-test/r/invisible_field_debug.result +++ b/mysql-test/r/invisible_field_debug.result @@ -11,6 +11,14 @@ t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 insert into t1 values(1); +insert into t1(a, invisible) values(99,99); +ERROR 42S22: Unknown column 'invisible' in 'field list' +alter table t1 add constraint a check (invisble > 2); +ERROR 42S22: Unknown column 'invisble' in 'CHECK' +set debug_dbug= "+d,test_pseudo_invisible"; +create table t2(a int, b int as (invisible +2) virtual); +ERROR 42S22: Unknown column 'invisible' in 'GENERATED ALWAYS AS' +set debug_dbug=@old_debug; select * from t1; a 1 diff --git a/mysql-test/t/invisible_field_debug.test b/mysql-test/t/invisible_field_debug.test index 89a856fe970..3c2febf1606 100644 --- a/mysql-test/t/invisible_field_debug.test +++ b/mysql-test/t/invisible_field_debug.test @@ -8,6 +8,15 @@ set debug_dbug=@old_debug; desc t1; show create table t1; insert into t1 values(1); +##field should not be resolved in Item_field::set_field +--error ER_BAD_FIELD_ERROR +insert into t1(a, invisible) values(99,99); +--error ER_BAD_FIELD_ERROR +alter table t1 add constraint a check (invisble > 2); +set debug_dbug= "+d,test_pseudo_invisible"; +--error ER_BAD_FIELD_ERROR +create table t2(a int, b int as (invisible +2) virtual); +set debug_dbug=@old_debug; select * from t1; select invisible ,a from t1; drop table t1; diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 31cb973551f..c764e99cc5d 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -5627,7 +5627,9 @@ find_field_in_table(THD *thd, TABLE *table, const char *name, uint length, if ((*field_ptr)->field_visibility == COMPLETELY_INVISIBLE && DBUG_EVALUATE_IF("test_completely_invisible", 0, 1)) DBUG_RETURN((Field*)0); - + if ((*field_ptr)->field_visibility == SYSTEM_INVISIBLE && + thd->lex->sql_command != SQLCOM_SELECT) + DBUG_RETURN((Field*)0); *cached_field_index_ptr= field_ptr - table->field; field= *field_ptr; } |