#At file:///home/gluh/MySQL/mysql-5.0-bugteam/ based on revid:alexeyk@stripped
2737 Sergey Glukhov 2008-12-09
Bug#35796 SHOW CREATE TABLE and default value for BIT field
show default value for BIT field in printable format
modified:
mysql-test/r/type_bit.result
mysql-test/t/type_bit.test
sql/item.cc
sql/sql_show.cc
per-file messages:
mysql-test/r/type_bit.result
Bug#35796 SHOW CREATE TABLE and default value for BIT field
test result
mysql-test/t/type_bit.test
Bug#35796 SHOW CREATE TABLE and default value for BIT field
test case
sql/item.cc
Bug#35796 SHOW CREATE TABLE and default value for BIT field
issue an error if BIN|HEX deafult value is empty value
(behaviour like for INT fields)
sql/sql_show.cc
Bug#35796 SHOW CREATE TABLE and default value for BIT field
show default value for BIT field in printable format
=== modified file 'mysql-test/r/type_bit.result'
--- a/mysql-test/r/type_bit.result 2008-08-27 21:10:37 +0000
+++ b/mysql-test/r/type_bit.result 2008-12-09 09:53:23 +0000
@@ -708,4 +708,19 @@ HEX(b1) HEX(b2) i2
1 0 100
1 0 200
DROP TABLE t1, t2;
+CREATE TABLE IF NOT EXISTS t1 (
+f1 bit(2) NOT NULL default b'10',
+f2 bit(14) NOT NULL default b'11110000111100'
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f1` bit(2) NOT NULL default b'10',
+ `f2` bit(14) NOT NULL default b'11110000111100'
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci
+DROP TABLE t1;
+CREATE TABLE IF NOT EXISTS t1 (
+f1 bit(2) NOT NULL default b''
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
+ERROR 42000: Invalid default value for 'f1'
End of 5.0 tests
=== modified file 'mysql-test/t/type_bit.test'
--- a/mysql-test/t/type_bit.test 2008-08-27 21:10:37 +0000
+++ b/mysql-test/t/type_bit.test 2008-12-09 09:53:23 +0000
@@ -352,4 +352,19 @@ SELECT HEX(b1), HEX(b2), i2 FROM t2
DROP TABLE t1, t2;
+#
+# Bug #35796 SHOW CREATE TABLE and default value for BIT field
+#
+CREATE TABLE IF NOT EXISTS t1 (
+f1 bit(2) NOT NULL default b'10',
+f2 bit(14) NOT NULL default b'11110000111100'
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+
+--error ER_INVALID_DEFAULT
+CREATE TABLE IF NOT EXISTS t1 (
+f1 bit(2) NOT NULL default b''
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
+
--echo End of 5.0 tests
=== modified file 'sql/item.cc'
--- a/sql/item.cc 2008-10-14 14:04:36 +0000
+++ b/sql/item.cc 2008-12-09 09:53:23 +0000
@@ -4950,6 +4950,9 @@ int Item_hex_string::save_in_field(Field
ulonglong nr;
uint32 length= str_value.length();
+ if (!length)
+ return 1;
+
if (length > 8)
{
nr= field->flags & UNSIGNED_FLAG ? ULONGLONG_MAX : LONGLONG_MAX;
=== modified file 'sql/sql_show.cc'
--- a/sql/sql_show.cc 2008-11-28 14:25:16 +0000
+++ b/sql/sql_show.cc 2008-12-09 09:53:23 +0000
@@ -798,7 +798,7 @@ static bool get_field_default_value(THD
{
bool has_default;
bool has_now_default;
-
+ enum enum_field_types field_type= field->type();
/*
We are using CURRENT_TIMESTAMP instead of NOW because it is
more standard
@@ -806,7 +806,7 @@ static bool get_field_default_value(THD
has_now_default= table->timestamp_field == field &&
field->unireg_check != Field::TIMESTAMP_UN_FIELD;
- has_default= (field->type() != FIELD_TYPE_BLOB &&
+ has_default= (field_type != FIELD_TYPE_BLOB &&
!(field->flags & NO_DEFAULT_VALUE_FLAG) &&
field->unireg_check != Field::NEXT_NUMBER &&
!((thd->variables.sql_mode & (MODE_MYSQL323 | MODE_MYSQL40))
@@ -821,7 +821,19 @@ static bool get_field_default_value(THD
{ // Not null by default
char tmp[MAX_FIELD_WIDTH];
String type(tmp, sizeof(tmp), field->charset());
- field->val_str(&type);
+ if (field_type == MYSQL_TYPE_BIT)
+ {
+ longlong dec= field->val_int();
+ char *ptr= longlong2str(dec, tmp + 2, 2);
+ uint32 length= (uint32) (ptr - tmp);
+ tmp[0]= 'b';
+ tmp[1]= '\'';
+ tmp[length]= '\'';
+ type.length(length + 1);
+ quoted= 0;
+ }
+ else
+ field->val_str(&type);
if (type.length())
{
String def_val;
| Thread |
|---|
| • bzr commit into mysql-5.0-bugteam branch (Sergey.Glukhov:2737)Bug#35796 | Sergey Glukhov | 9 Dec |