diff --git a/client/mysqldump.c b/client/mysqldump.c index be93b48f496..322acbd26c0 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -2059,7 +2059,8 @@ static void dump_table(uint numFields, char *table) we'll dump in hex only BLOB columns. */ is_blob= (opt_hex_blob && field->charsetnr == 63 && - (field->type == MYSQL_TYPE_STRING || + (field->type == MYSQL_TYPE_BIT || + field->type == MYSQL_TYPE_STRING || field->type == MYSQL_TYPE_VAR_STRING || field->type == MYSQL_TYPE_VARCHAR || field->type == MYSQL_TYPE_BLOB || diff --git a/mysql-test/r/ndb_bitfield.result b/mysql-test/r/ndb_bitfield.result index e2326459a8c..bf5a9b1ade1 100644 --- a/mysql-test/r/ndb_bitfield.result +++ b/mysql-test/r/ndb_bitfield.result @@ -188,14 +188,14 @@ INSERT INTO `t1` VALUES (6,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'100000',b'010010',b'011111',4,5,5,5,5,5,5,5,5,5,3,2,1), (7,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'000000',b'001100',b'111111',4,5,5,5,5,5,5,5,5,5,3,2,1), (8,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'111111',b'000000',b'000000',4,5,5,5,5,5,5,5,5,5,3,2,1); -INSERT INTO `t1` VALUES (1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'','?','>',4,5,5,5,5,5,5,5,5,5,3,2,1); -INSERT INTO `t1` VALUES (2,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'','\0','=',4,5,5,5,5,5,5,5,5,5,3,2,1); -INSERT INTO `t1` VALUES (3,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'','',';',4,5,5,5,5,5,5,5,5,5,3,2,1); -INSERT INTO `t1` VALUES (4,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'','0','7',4,5,5,5,5,5,5,5,5,5,3,2,1); -INSERT INTO `t1` VALUES (5,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'','!','/',4,5,5,5,5,5,5,5,5,5,3,2,1); -INSERT INTO `t1` VALUES (6,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,' ','','',4,5,5,5,5,5,5,5,5,5,3,2,1); -INSERT INTO `t1` VALUES (7,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'\0',' ','?',4,5,5,5,5,5,5,5,5,5,3,2,1); -INSERT INTO `t1` VALUES (8,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'?','\0','\0',4,5,5,5,5,5,5,5,5,5,3,2,1); +INSERT INTO `t1` VALUES (1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x01,0x3F,0x3E,4,5,5,5,5,5,5,5,5,5,3,2,1); +INSERT INTO `t1` VALUES (2,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x02,0x00,0x3D,4,5,5,5,5,5,5,5,5,5,3,2,1); +INSERT INTO `t1` VALUES (3,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x04,0x0F,0x3B,4,5,5,5,5,5,5,5,5,5,3,2,1); +INSERT INTO `t1` VALUES (4,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x08,0x30,0x37,4,5,5,5,5,5,5,5,5,5,3,2,1); +INSERT INTO `t1` VALUES (5,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x10,0x21,0x2F,4,5,5,5,5,5,5,5,5,5,3,2,1); +INSERT INTO `t1` VALUES (6,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x20,0x12,0x1F,4,5,5,5,5,5,5,5,5,5,3,2,1); +INSERT INTO `t1` VALUES (7,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x00,0x0C,0x3F,4,5,5,5,5,5,5,5,5,5,3,2,1); +INSERT INTO `t1` VALUES (8,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x3F,0x00,0x00,4,5,5,5,5,5,5,5,5,5,3,2,1); drop table t1; create table t1 ( pk1 bit(9) not null primary key, diff --git a/mysql-test/r/ndb_partition_key.result b/mysql-test/r/ndb_partition_key.result index e3522106f98..9cc7147bd77 100644 --- a/mysql-test/r/ndb_partition_key.result +++ b/mysql-test/r/ndb_partition_key.result @@ -68,4 +68,13 @@ PRIMARY KEY(a, b, c) - UniqueHashIndex NDBT_ProgramExit: 0 - OK +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) NOT NULL default '0', + `b` char(10) character set latin1 collate latin1_bin NOT NULL default '', + `c` int(11) NOT NULL default '0', + `d` int(11) default NULL, + PRIMARY KEY USING HASH (`a`,`b`,`c`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (b) DROP TABLE t1; diff --git a/mysql-test/r/ndb_partition_range.result b/mysql-test/r/ndb_partition_range.result index 63bd89e1d1c..e66152851c0 100644 --- a/mysql-test/r/ndb_partition_range.result +++ b/mysql-test/r/ndb_partition_range.result @@ -102,4 +102,13 @@ a b c 1 1 1 DELETE from t1 WHERE b = 6; DELETE from t1 WHERE a = 6; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) NOT NULL, + `b` int(11) NOT NULL, + `c` int(11) NOT NULL, + PRIMARY KEY (`b`), + UNIQUE KEY `a` (`a`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY RANGE (b) (PARTITION x1 VALUES LESS THAN (5) ENGINE = NDBCLUSTER, PARTITION x2 VALUES LESS THAN (10) ENGINE = NDBCLUSTER, PARTITION x3 VALUES LESS THAN (20) ENGINE = NDBCLUSTER) drop table t1; diff --git a/mysql-test/t/ndb_bitfield.test b/mysql-test/t/ndb_bitfield.test index 6b805c2f1cd..0256ecf89ed 100644 --- a/mysql-test/t/ndb_bitfield.test +++ b/mysql-test/t/ndb_bitfield.test @@ -96,7 +96,7 @@ INSERT INTO `t1` VALUES (6,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'100000',b'010010',b'011111',4,5,5,5,5,5,5,5,5,5,3,2,1), (7,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'000000',b'001100',b'111111',4,5,5,5,5,5,5,5,5,5,3,2,1), (8,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'111111',b'000000',b'000000',4,5,5,5,5,5,5,5,5,5,3,2,1); ---exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test t1 +--exec $MYSQL_DUMP --hex-blob --compact --order-by-primary --skip-extended-insert --no-create-info test t1 drop table t1; --error 1005 diff --git a/mysql-test/t/ndb_partition_key.test b/mysql-test/t/ndb_partition_key.test index a0a4f079d6f..76c36924618 100644 --- a/mysql-test/t/ndb_partition_key.test +++ b/mysql-test/t/ndb_partition_key.test @@ -55,4 +55,11 @@ insert into t1 values (1,"a",1,1),(2,"a",1,1),(3,"a",1,1); # should show only one attribute with DISTRIBUTION KEY --exec $NDB_TOOLS_DIR/ndb_desc --no-defaults -d test t1 | sed 's/Version: [0-9]*//' | sed 's/\(Length of frm data: \)[0-9]*/\1#/' +# +# Test that explicit partition info is not shown in show create table +# result should not contain (PARTITION P0 ... etc) since this is what shows up in +# mysqldump, and we don't want that info there +# +show create table t1; + DROP TABLE t1; diff --git a/mysql-test/t/ndb_partition_range.test b/mysql-test/t/ndb_partition_range.test index 35d2d33a722..fb62fac044f 100644 --- a/mysql-test/t/ndb_partition_range.test +++ b/mysql-test/t/ndb_partition_range.test @@ -82,5 +82,11 @@ select * from t1 where a=1 and b in (1,6,10,21) order by b; DELETE from t1 WHERE b = 6; DELETE from t1 WHERE a = 6; +# +# Test that explicit partition info _is_ shown in show create table +# result _should_ contain (PARTITION x1 ... etc) +# +show create table t1; + drop table t1; diff --git a/sql/handler.h b/sql/handler.h index 53b53d08f26..86d96ede4dd 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -675,7 +675,8 @@ bool check_partition_info(partition_info *part_info,enum db_type eng_type, handler *file, ulonglong max_rows); bool fix_partition_func(THD *thd, const char *name, TABLE *table); char *generate_partition_syntax(partition_info *part_info, - uint *buf_length, bool use_sql_alloc); + uint *buf_length, bool use_sql_alloc, + bool add_default_info); bool partition_key_modified(TABLE *table, List &fields); void get_partition_set(const TABLE *table, byte *buf, const uint index, const key_range *key_spec, diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index 1f24806dc5e..b2efada1a49 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -1961,6 +1961,7 @@ static int add_partition_values(File fptr, partition_info *part_info, buf_length A pointer to the returned buffer length use_sql_alloc Allocate buffer from sql_alloc if true otherwise use my_malloc + add_default_info Add info generated by default RETURN VALUES NULL error buf, buf_length Buffer and its length @@ -1986,7 +1987,8 @@ static int add_partition_values(File fptr, partition_info *part_info, char *generate_partition_syntax(partition_info *part_info, uint *buf_length, - bool use_sql_alloc) + bool use_sql_alloc, + bool add_default_info) { uint i,j, no_parts, no_subparts; partition_element *part_elem; @@ -2013,9 +2015,11 @@ char *generate_partition_syntax(partition_info *part_info, switch (part_info->part_type) { case RANGE_PARTITION: + add_default_info= TRUE; err+= add_part_key_word(fptr, range_str); break; case LIST_PARTITION: + add_default_info= TRUE; err+= add_part_key_word(fptr, list_str); break; case HASH_PARTITION: @@ -2051,6 +2055,8 @@ char *generate_partition_syntax(partition_info *part_info, err+= add_end_parenthesis(fptr); err+= add_space(fptr); } + if (add_default_info) + { err+= add_begin_parenthesis(fptr); List_iterator part_it(part_info->partitions); no_parts= part_info->no_parts; @@ -2095,6 +2101,7 @@ char *generate_partition_syntax(partition_info *part_info, else err+= add_end_parenthesis(fptr); } while (++i < no_parts); + } if (err) goto close_file; buffer_length= my_seek(fptr, 0L,MY_SEEK_END,MYF(0)); diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 8399f2135fa..f5c82fe00e1 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -961,7 +961,7 @@ store_create_info(THD *thd, TABLE_LIST *table_list, String *packet) packet->append("\n)", 2); if (!(thd->variables.sql_mode & MODE_NO_TABLE_OPTIONS) && !foreign_db_mode) { -#ifdef HAVE_PARTITION_DB +#if 0 //def HAVE_PARTITION_DB if (!table->s->part_info) #endif { @@ -1047,7 +1047,7 @@ store_create_info(THD *thd, TABLE_LIST *table_list, String *packet) if (table->s->part_info && ((part_syntax= generate_partition_syntax(table->s->part_info, &part_syntax_len, - FALSE)))) + FALSE,FALSE)))) { packet->append(part_syntax, part_syntax_len); my_free(part_syntax, MYF(0)); diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 50b00fe2716..bd0683ff5af 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -1629,7 +1629,7 @@ bool mysql_create_table(THD *thd,const char *db, const char *table_name, */ if (!(part_syntax_buf= generate_partition_syntax(part_info, &syntax_len, - TRUE))) + TRUE,TRUE))) DBUG_RETURN(TRUE); part_info->part_info_string= part_syntax_buf; part_info->part_info_len= syntax_len; @@ -4274,7 +4274,7 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, /*select_field_count*/ 0); if (!(part_syntax_buf= generate_partition_syntax(part_info, &syntax_len, - TRUE))) + TRUE,TRUE))) { DBUG_RETURN(TRUE); } @@ -4310,7 +4310,7 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, } if (!(part_syntax_buf= generate_partition_syntax(part_info, &syntax_len, - TRUE))) + TRUE,TRUE))) { DBUG_RETURN(TRUE); } diff --git a/strings/my_strtoll10.c b/strings/my_strtoll10.c index cca7c8ab396..1f4cf1435fe 100644 --- a/strings/my_strtoll10.c +++ b/strings/my_strtoll10.c @@ -19,7 +19,13 @@ #include #undef ULONGLONG_MAX +/* Needed under MetroWerks Compiler, since MetroWerks compiler does not properly handle a constant expression containing a mod operator */ +#if defined(__NETWARE__) && defined(__MWERKS__) +ulonglong tmp; +#define ULONGLONG_MAX (tmp =(~(ulonglong) 0)) +#else #define ULONGLONG_MAX (~(ulonglong) 0) +#endif /* __NETWARE__ && __MWERKS__ */ #define MAX_NEGATIVE_NUMBER ((ulonglong) LL(0x8000000000000000)) #define INIT_CNT 9 #define LFACTOR ULL(1000000000)