summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Docs/manual.texi2
-rw-r--r--mysql-test/r/innodb.result2
-rw-r--r--mysql-test/t/innodb.test8
-rw-r--r--sql/table.cc6
-rw-r--r--sql/unireg.cc20
5 files changed, 29 insertions, 9 deletions
diff --git a/Docs/manual.texi b/Docs/manual.texi
index 416e16ff710..bb8e725c8a4 100644
--- a/Docs/manual.texi
+++ b/Docs/manual.texi
@@ -46839,6 +46839,8 @@ not yet 100% confident in this code.
@appendixsubsec Changes in release 3.23.47
@itemize @bullet
@item
+Fix default values for InnoDB tables.
+@item
Fixed that @code{GROUP BY expr DESC} works.
@item
Fixed bug when using @code{t1 LEFT JOIN t2 ON t2.key=constant}.
diff --git a/mysql-test/r/innodb.result b/mysql-test/r/innodb.result
index 333bbc45196..a422f55767d 100644
--- a/mysql-test/r/innodb.result
+++ b/mysql-test/r/innodb.result
@@ -499,3 +499,5 @@ table type possible_keys key key_len ref rows Extra
t1 index NULL b 4 NULL 4 Using index
table type possible_keys key key_len ref rows Extra
t1 ALL NULL NULL NULL NULL 4
+Field Type Null Key Default Extra
+testint int(11) 1
diff --git a/mysql-test/t/innodb.test b/mysql-test/t/innodb.test
index f0e9f8cf72f..a962f120d4e 100644
--- a/mysql-test/t/innodb.test
+++ b/mysql-test/t/innodb.test
@@ -529,3 +529,11 @@ explain select a,b from t1 order by b;
explain select a,b from t1;
explain select a,b,c from t1;
drop table t1;
+
+#
+# Check describe
+#
+
+create table t1 (testint int not null default 1) type=innodb;
+desc t1;
+drop table t1;
diff --git a/sql/table.cc b/sql/table.cc
index eed4170c14a..1ab6c50add9 100644
--- a/sql/table.cc
+++ b/sql/table.cc
@@ -120,10 +120,8 @@ int openfrm(const char *name, const char *alias, uint db_stat, uint prgflag,
outparam->db_record_offset=1;
if (db_create_options & HA_OPTION_LONG_BLOB_PTR)
outparam->blob_ptr_size=portable_sizeof_char_ptr;
- outparam->db_low_byte_first=test(outparam->db_type == DB_TYPE_MYISAM ||
- outparam->db_type == DB_TYPE_BERKELEY_DB ||
- outparam->db_type == DB_TYPE_HEAP);
-
+ /* Set temporaryly a good value for db_low_byte_first */
+ outparam->db_low_byte_first=test(outparam->db_type != DB_TYPE_ISAM);
error=4;
outparam->max_rows=uint4korr(head+18);
outparam->min_rows=uint4korr(head+22);
diff --git a/sql/unireg.cc b/sql/unireg.cc
index c5bfbbbea88..0bfc462f01a 100644
--- a/sql/unireg.cc
+++ b/sql/unireg.cc
@@ -515,16 +515,23 @@ static bool make_empty_rec(File file,enum db_type table_type,
uchar *buff,*null_pos;
TABLE table;
create_field *field;
+ handler *handler;
DBUG_ENTER("make_empty_rec");
/* We need a table to generate columns for default values */
bzero((char*) &table,sizeof(table));
- table.db_low_byte_first=test(table_type == DB_TYPE_MYISAM ||
- table_type == DB_TYPE_HEAP);
- table.blob_ptr_size=portable_sizeof_char_ptr;
+ handler= get_new_handler((TABLE*) 0, table_type);
- if (!(buff=(uchar*) my_malloc((uint) reclength,MYF(MY_WME | MY_ZEROFILL))))
+ if (!handler ||
+ !(buff=(uchar*) my_malloc((uint) reclength,MYF(MY_WME | MY_ZEROFILL))))
+ {
+ delete handler;
DBUG_RETURN(1);
+ }
+
+ table.db_low_byte_first= handler->low_byte_first();
+ table.blob_ptr_size=portable_sizeof_char_ptr;
+
firstpos=reclength;
null_count=0;
if (!(table_options & HA_OPTION_PACK_RECORD))
@@ -574,8 +581,11 @@ static bool make_empty_rec(File file,enum db_type table_type,
regfield->reset();
delete regfield;
}
- bfill((byte*) buff+null_length,firstpos-null_length,255);/* Fill not used startpos */
+
+ /* Fill not used startpos */
+ bfill((byte*) buff+null_length,firstpos-null_length,255);
error=(int) my_write(file,(byte*) buff,(uint) reclength,MYF_RW);
my_free((gptr) buff,MYF(MY_FAE));
+ delete handler;
DBUG_RETURN(error);
} /* make_empty_rec */