mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge with 4.1
BitKeeper/etc/logging_ok: auto-union BitKeeper/deleted/.del-errmsg.txt~11edc4db89248c16: Auto merged BitKeeper/deleted/.del-errmsg.txt~184eb1f09242dc72: Auto merged BitKeeper/deleted/.del-errmsg.txt~2cdeb8d6f80eba72: Auto merged BitKeeper/deleted/.del-errmsg.txt~4617575065d612b9: Auto merged BitKeeper/deleted/.del-errmsg.txt~587903f9311db2d1: Auto merged BitKeeper/deleted/.del-errmsg.txt~606dfaeb9e81aa4e: Auto merged BitKeeper/deleted/.del-errmsg.txt~6bbd9eac7f0e6b89: Auto merged BitKeeper/deleted/.del-errmsg.txt~7397c423c52c6d2c: Auto merged BitKeeper/deleted/.del-errmsg.txt~898865062c970766: Auto merged BitKeeper/deleted/.del-errmsg.txt~8ed1999cbd481dc4: Auto merged BitKeeper/deleted/.del-errmsg.txt~94a93cc742fca24d: Auto merged BitKeeper/deleted/.del-errmsg.txt~9dab24f7fb11b1e1: Auto merged BitKeeper/deleted/.del-errmsg.txt~b44a85a177954da0: Auto merged BitKeeper/deleted/.del-errmsg.txt~b6181e29d8282b06: Auto merged BitKeeper/deleted/.del-errmsg.txt~ba132dc9bc936c8a: Auto merged BitKeeper/deleted/.del-errmsg.txt~e2609fdf7870795: Auto merged BitKeeper/deleted/.del-errmsg.txt~e3183b99fbba0a9c: Auto merged BitKeeper/deleted/.del-errmsg.txt~eeb2c47537ed9c23: Auto merged BitKeeper/deleted/.del-errmsg.txt~ef28b592c7591b7: Auto merged BitKeeper/deleted/.del-errmsg.txt~ef53c33ac0ff8a84: Auto merged BitKeeper/deleted/.del-errmsg.txt~f19bfd5d4c918964: Auto merged BitKeeper/deleted/.del-errmsg.txt~f96b7055cac394e: Auto merged libmysql/libmysql.c: Auto merged 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/r/select.result: Auto merged mysql-test/t/alter_table.test: Auto merged mysql-test/t/innodb.test: Auto merged mysql-test/t/select.test: Auto merged sql/handler.h: Auto merged sql/item_func.cc: Auto merged sql/sql_yacc.yy: Auto merged mysql-test/r/insert_update.result: Auto merged strings/ctype-ucs2.c: Auto merged sql/sql_table.cc: merge sql/unireg.cc: merge
This commit is contained in:
@ -641,8 +641,7 @@ static 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;
|
||||
uint max_key_length= file->max_key_length();
|
||||
ulong pos;
|
||||
ulong record_offset= 0;
|
||||
KEY *key_info;
|
||||
KEY_PART_INFO *key_part_info;
|
||||
int timestamps= 0, timestamps_with_niladic= 0;
|
||||
@ -836,10 +835,10 @@ static int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
|
||||
(*db_options)|= HA_OPTION_PACK_RECORD;
|
||||
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 + total_uneven_bit_length + 7) / 8;
|
||||
|
||||
/* record_offset will be increased with 'length-of-null-bits' later */
|
||||
record_offset= 0;
|
||||
null_fields+= total_uneven_bit_length;
|
||||
|
||||
it.rewind();
|
||||
while ((sql_field=it++))
|
||||
@ -852,10 +851,10 @@ static int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
|
||||
DBUG_RETURN(-1);
|
||||
if (sql_field->sql_type == MYSQL_TYPE_VARCHAR)
|
||||
create_info->varchar= 1;
|
||||
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)
|
||||
{
|
||||
@ -1159,6 +1158,7 @@ static 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;
|
||||
@ -1317,6 +1317,7 @@ static int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
|
||||
/* Sort keys in optimized order */
|
||||
qsort((gptr) *key_info_buffer, *key_count, sizeof(KEY),
|
||||
(qsort_cmp) sort_keys);
|
||||
create_info->null_bits= null_fields;
|
||||
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
@ -3417,12 +3418,14 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name,
|
||||
|
||||
/*
|
||||
better have a negative test here, instead of positive, like
|
||||
alter_info->flags & ALTER_ADD_COLUMN|ALTER_ADD_INDEX|...
|
||||
alter_info->flags & ALTER_ADD_COLUMN|ALTER_ADD_INDEX|...
|
||||
so that ALTER TABLE won't break when somebody will add new flag
|
||||
*/
|
||||
need_copy_table=(alter_info->flags & ~(ALTER_CHANGE_COLUMN_DEFAULT|ALTER_OPTIONS) ||
|
||||
create_info->used_fields & ~(HA_CREATE_USED_COMMENT|HA_CREATE_USED_PASSWORD) ||
|
||||
table->s->tmp_table);
|
||||
need_copy_table= (alter_info->flags &
|
||||
~(ALTER_CHANGE_COLUMN_DEFAULT|ALTER_OPTIONS) ||
|
||||
(create_info->used_fields &
|
||||
~(HA_CREATE_USED_COMMENT|HA_CREATE_USED_PASSWORD)) ||
|
||||
table->s->tmp_table);
|
||||
create_info->frm_only= !need_copy_table;
|
||||
|
||||
/*
|
||||
@ -3827,8 +3830,8 @@ copy_data_between_tables(TABLE *from,TABLE *to,
|
||||
!(sortorder=make_unireg_sortorder(order, &length)) ||
|
||||
(from->sort.found_records = filesort(thd, from, sortorder, length,
|
||||
(SQL_SELECT *) 0, HA_POS_ERROR,
|
||||
&examined_rows))
|
||||
== HA_POS_ERROR)
|
||||
&examined_rows)) ==
|
||||
HA_POS_ERROR)
|
||||
goto err;
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user