summaryrefslogtreecommitdiff
path: root/sql/sql_table.cc
diff options
context:
space:
mode:
authorunknown <monty@mysql.com>2005-05-14 00:01:40 +0300
committerunknown <monty@mysql.com>2005-05-14 00:01:40 +0300
commit037b0a7b14288f078bb3e6e75c14b4fc3181b4f0 (patch)
treef66bb31f8c3bb3a7c23d82b86abf8f0810f05403 /sql/sql_table.cc
parent04890a2e20d338a2f1b4b279c6dd6da3cd6d0f95 (diff)
parentcdd6bc9bfeb1a82e7c7cfd8880f8e014ca5d9ff8 (diff)
downloadmariadb-git-037b0a7b14288f078bb3e6e75c14b4fc3181b4f0.tar.gz
Merge with 4.0
BitKeeper/etc/logging_ok: auto-union mysql-test/r/outfile2.result: Merge rename: mysql-test/r/outfile.result -> mysql-test/r/outfile2.result myisam/mi_key.c: Auto merged mysql-test/r/alter_table.result: Auto merged mysql-test/r/auto_increment.result: Auto merged mysql-test/r/innodb.result: Auto merged mysql-test/t/auto_increment.test: Auto merged mysql-test/t/innodb.test: Auto merged sql/handler.h: Auto merged mysql-test/t/alter_table.test: Merge mysql-test/t/outfile.test: Merge sql/item_func.cc: Merge sql/share/czech/errmsg.txt: Merge sql/share/danish/errmsg.txt: Merge sql/share/dutch/errmsg.txt: Merge sql/share/english/errmsg.txt: Merge sql/share/estonian/errmsg.txt: Merge sql/share/french/errmsg.txt: Merge sql/share/german/errmsg.txt: Merge sql/share/greek/errmsg.txt: Merge sql/share/hungarian/errmsg.txt: Merge sql/share/italian/errmsg.txt: Merge sql/share/japanese/errmsg.txt: Merge sql/share/korean/errmsg.txt: Merge sql/share/norwegian-ny/errmsg.txt: Merge sql/share/norwegian/errmsg.txt: Merge sql/share/polish/errmsg.txt: Merge sql/share/portuguese/errmsg.txt: Merge sql/share/romanian/errmsg.txt: Merge sql/share/russian/errmsg.txt: Merge sql/share/slovak/errmsg.txt: Merge sql/share/spanish/errmsg.txt: Merge sql/share/swedish/errmsg.txt: Merge sql/share/ukrainian/errmsg.txt: Merge sql/sql_table.cc: Merge sql/sql_yacc.yy: Keep old sql/unireg.cc: Merge
Diffstat (limited to 'sql/sql_table.cc')
-rw-r--r--sql/sql_table.cc15
1 files changed, 8 insertions, 7 deletions
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index c03edfdb012..7b0f24bcc45 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -451,7 +451,7 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
const char *key_name;
create_field *sql_field,*dup_field;
uint field,null_fields,blob_columns;
- ulong pos;
+ ulong record_offset= 0;
KEY *key_info;
KEY_PART_INFO *key_part_info;
int timestamps= 0, timestamps_with_niladic= 0;
@@ -629,10 +629,9 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
}
it2.rewind();
}
- /* If fixed row records, we need one bit to check for deleted rows */
- if (!(db_options & HA_OPTION_PACK_RECORD))
- null_fields++;
- pos=(null_fields+7)/8;
+
+ /* record_offset will be increased with 'length-of-null-bits' later */
+ record_offset= 0;
it.rewind();
while ((sql_field=it++))
@@ -737,10 +736,10 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
}
if (!(sql_field->flags & NOT_NULL_FLAG))
sql_field->pack_flag|=FIELDFLAG_MAYBE_NULL;
- sql_field->offset= pos;
+ sql_field->offset= record_offset;
if (MTYP_TYPENR(sql_field->unireg_check) == Field::NEXT_NUMBER)
auto_increment++;
- pos+=sql_field->pack_length;
+ record_offset+= sql_field->pack_length;
}
if (timestamps_with_niladic > 1)
{
@@ -1048,6 +1047,7 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
/* Implicitly set primary key fields to NOT NULL for ISO conf. */
sql_field->flags|= NOT_NULL_FLAG;
sql_field->pack_flag&= ~FIELDFLAG_MAYBE_NULL;
+ null_fields--;
}
else
key_info->flags|= HA_NULL_PART_KEY;
@@ -1392,6 +1392,7 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name,
if (thd->variables.sql_mode & MODE_NO_DIR_IN_CREATE)
create_info->data_file_name= create_info->index_file_name= 0;
create_info->table_options=db_options;
+ create_info->null_bits= null_fields;
if (rea_create_table(thd, path, create_info, fields, key_count,
key_info_buffer))