diff --git a/mysql-test/r/ndb_basic.result b/mysql-test/r/ndb_basic.result index 462d738a8bb..9477caf97ab 100644 --- a/mysql-test/r/ndb_basic.result +++ b/mysql-test/r/ndb_basic.result @@ -562,7 +562,7 @@ c125 int, c126 int, c127 int, c128 int, -primary key(c1)) engine=ndb; +primary key using hash(c1)) engine=ndb partition by key(c1); drop table t1; create table t1 ( a1234567890123456789012345678901234567890 int primary key, diff --git a/mysql-test/t/ndb_basic.test b/mysql-test/t/ndb_basic.test index 93bcc9b9050..df94545abea 100644 --- a/mysql-test/t/ndb_basic.test +++ b/mysql-test/t/ndb_basic.test @@ -404,7 +404,9 @@ drop table t1; # # test the limit of no of attributes in one table # - +# also tests bug#17179, more than 31 attributes in +# a partitioned table +# create table t1 ( c1 int, c2 int, @@ -534,7 +536,7 @@ c125 int, c126 int, c127 int, c128 int, -primary key(c1)) engine=ndb; +primary key using hash(c1)) engine=ndb partition by key(c1); drop table t1; # diff --git a/sql/sql_base.cc b/sql/sql_base.cc index a825b307ee3..2d6576bff8b 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -3912,8 +3912,18 @@ Field *find_field_in_table_sef(TABLE *table, const char *name) { Field **field_ptr; if (table->s->name_hash.records) + { field_ptr= (Field**)hash_search(&table->s->name_hash,(byte*) name, strlen(name)); + if (field_ptr) + { + /* + field_ptr points to field in TABLE_SHARE. Convert it to the matching + field in table + */ + field_ptr= (table->field + (field_ptr - table->s->field)); + } + } else { if (!(field_ptr= table->field))