Commit 2c8f0828 authored by unknown's avatar unknown

Merge bk-internal:/home/bk/mysql-5.0

into mysql.com:/home/jimw/my/mysql-5.0-clean
parents c5ff7f98 de98197f
...@@ -59,6 +59,7 @@ gerberb@ou800.zenez.com ...@@ -59,6 +59,7 @@ gerberb@ou800.zenez.com
gluh@eagle.intranet.mysql.r18.ru gluh@eagle.intranet.mysql.r18.ru
gluh@gluh.(none) gluh@gluh.(none)
gluh@gluh.mysql.r18.ru gluh@gluh.mysql.r18.ru
gluh@mysql.com
gordon@zero.local.lan gordon@zero.local.lan
greg@gcw.ath.cx greg@gcw.ath.cx
greg@mysql.com greg@mysql.com
......
...@@ -2364,7 +2364,9 @@ row_sel_field_store_in_mysql_format( ...@@ -2364,7 +2364,9 @@ row_sel_field_store_in_mysql_format(
ut_a(templ->mbmaxlen > templ->mbminlen ut_a(templ->mbmaxlen > templ->mbminlen
|| templ->mysql_col_len == len); || templ->mysql_col_len == len);
ut_a(!templ->mbmaxlen /* The following assertion would fail for old tables
containing UTF-8 ENUM columns due to Bug #9526. */
ut_ad(!templ->mbmaxlen
|| !(templ->mysql_col_len % templ->mbmaxlen)); || !(templ->mysql_col_len % templ->mbmaxlen));
ut_a(len * templ->mbmaxlen >= templ->mysql_col_len); ut_a(len * templ->mbmaxlen >= templ->mysql_col_len);
......
...@@ -22,11 +22,11 @@ mysql ...@@ -22,11 +22,11 @@ mysql
test test
show databases where `database` = 't%'; show databases where `database` = 't%';
Database Database
create database testtets; create database mysqltest;
create table testtets.t1(a int, b VARCHAR(30), KEY string_data (b)); create table mysqltest.t1(a int, b VARCHAR(30), KEY string_data (b));
create table test.t2(a int); create table test.t2(a int);
create table t3(a int, KEY a_data (a)); create table t3(a int, KEY a_data (a));
create table testtets.t4(a int); create table mysqltest.t4(a int);
create view v1 (c) as select table_name from information_schema.TABLES; create view v1 (c) as select table_name from information_schema.TABLES;
select * from v1; select * from v1;
c c
...@@ -62,11 +62,11 @@ time_zone_name ...@@ -62,11 +62,11 @@ time_zone_name
time_zone_transition time_zone_transition
time_zone_transition_type time_zone_transition_type
user user
t1
t4
t2 t2
t3 t3
v1 v1
t1
t4
select c,table_name from v1 select c,table_name from v1
left join information_schema.TABLES v2 on (v1.c=v2.table_name) left join information_schema.TABLES v2 on (v1.c=v2.table_name)
where v1.c like "t%"; where v1.c like "t%";
...@@ -80,10 +80,10 @@ time_zone_leap_second time_zone_leap_second ...@@ -80,10 +80,10 @@ time_zone_leap_second time_zone_leap_second
time_zone_name time_zone_name time_zone_name time_zone_name
time_zone_transition time_zone_transition time_zone_transition time_zone_transition
time_zone_transition_type time_zone_transition_type time_zone_transition_type time_zone_transition_type
t2 t2
t3 t3
t1 t1 t1 t1
t4 t4 t4 t4
t2 t2
t3 t3
select c, v2.table_name from v1 select c, v2.table_name from v1
right join information_schema.TABLES v2 on (v1.c=v2.table_name) right join information_schema.TABLES v2 on (v1.c=v2.table_name)
where v1.c like "t%"; where v1.c like "t%";
...@@ -97,18 +97,18 @@ time_zone_leap_second time_zone_leap_second ...@@ -97,18 +97,18 @@ time_zone_leap_second time_zone_leap_second
time_zone_name time_zone_name time_zone_name time_zone_name
time_zone_transition time_zone_transition time_zone_transition time_zone_transition
time_zone_transition_type time_zone_transition_type time_zone_transition_type time_zone_transition_type
t2 t2
t3 t3
t1 t1 t1 t1
t4 t4 t4 t4
t2 t2
t3 t3
select table_name from information_schema.TABLES select table_name from information_schema.TABLES
where table_schema = "testtets" and table_name like "t%"; where table_schema = "mysqltest" and table_name like "t%";
table_name table_name
t1 t1
t4 t4
select * from information_schema.STATISTICS where TABLE_SCHEMA = "testtets"; select * from information_schema.STATISTICS where TABLE_SCHEMA = "mysqltest";
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT
NULL testtets t1 1 testtets string_data 1 b A NULL NULL NULL YES BTREE NULL mysqltest t1 1 mysqltest string_data 1 b A NULL NULL NULL YES BTREE
show keys from t3 where Key_name = "a_data"; show keys from t3 where Key_name = "a_data";
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t3 1 a_data 1 a A NULL NULL NULL YES BTREE t3 1 a_data 1 a A NULL NULL NULL YES BTREE
...@@ -133,13 +133,22 @@ c varchar(64) utf8_general_ci NO select,insert,update,references ...@@ -133,13 +133,22 @@ c varchar(64) utf8_general_ci NO select,insert,update,references
select * from information_schema.COLUMNS where table_name="t1" select * from information_schema.COLUMNS where table_name="t1"
and column_name= "a"; and column_name= "a";
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
NULL testtets t1 a 1 NULL YES int NULL NULL 11 0 NULL NULL int(11) select,insert,update,references NULL mysqltest t1 a 1 NULL YES int NULL NULL 11 0 NULL NULL int(11) select,insert,update,references
show columns from testtets.t1 where field like "%a%"; show columns from mysqltest.t1 where field like "%a%";
Field Type Null Key Default Extra
a int(11) YES NULL
grant select (a) on mysqltest.t1 to mysqltest_2@localhost;
select table_name, column_name, privileges from information_schema.columns
where table_schema = 'mysqltest' and table_name = 't1';
table_name column_name privileges
t1 a select
show columns from mysqltest.t1;
Field Type Null Key Default Extra Field Type Null Key Default Extra
a int(11) YES NULL a int(11) YES NULL
b varchar(30) YES MUL NULL
drop view v1; drop view v1;
drop tables testtets.t4, testtets.t1, t2, t3; drop tables mysqltest.t4, mysqltest.t1, t2, t3;
drop database testtets; drop database mysqltest;
select * from information_schema.CHARACTER_SETS select * from information_schema.CHARACTER_SETS
where CHARACTER_SET_NAME like 'latin1%'; where CHARACTER_SET_NAME like 'latin1%';
CHARACTER_SET_NAME DEFAULT_COLLATE_NAME DESCRIPTION MAXLEN CHARACTER_SET_NAME DEFAULT_COLLATE_NAME DESCRIPTION MAXLEN
...@@ -352,8 +361,8 @@ GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRAN ...@@ -352,8 +361,8 @@ GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRAN
'mysqltest_1'@'localhost' NULL test t1 a REFERENCES NO 'mysqltest_1'@'localhost' NULL test t1 a REFERENCES NO
delete from mysql.user where user='mysqltest_1' or user='mysqltest_2'; delete from mysql.user where user='mysqltest_1' or user='mysqltest_2';
delete from mysql.db where user='mysqltest_1' or user='mysqltest_2'; delete from mysql.db where user='mysqltest_1' or user='mysqltest_2';
delete from mysql.tables_priv where user='mysqltest_1'; delete from mysql.tables_priv where user='mysqltest_1' or user='mysqltest_2';
delete from mysql.columns_priv where user='mysqltest_1'; delete from mysql.columns_priv where user='mysqltest_1' or user='mysqltest_2';
flush privileges; flush privileges;
drop table t1; drop table t1;
create table t1 (a int null, primary key(a)); create table t1 (a int null, primary key(a));
......
...@@ -524,3 +524,21 @@ execute stmt using @a, @b, @c; ...@@ -524,3 +524,21 @@ execute stmt using @a, @b, @c;
a b c a b c a b c a b c
deallocate prepare stmt; deallocate prepare stmt;
drop table t1,t2; drop table t1,t2;
SET @aux= "SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS A,
INFORMATION_SCHEMA.COLUMNS B
WHERE A.TABLE_SCHEMA = B.TABLE_SCHEMA
AND A.TABLE_NAME = B.TABLE_NAME
AND A.COLUMN_NAME = B.COLUMN_NAME AND
A.TABLE_NAME = 'user'";
prepare my_stmt from @aux;
execute my_stmt;
COUNT(*)
37
execute my_stmt;
COUNT(*)
37
execute my_stmt;
COUNT(*)
37
deallocate prepare my_stmt;
...@@ -377,3 +377,6 @@ hex(concat(a)) hex(concat(b)) ...@@ -377,3 +377,6 @@ hex(concat(a)) hex(concat(b))
07 0FFE 07 0FFE
01 01FF 01 01FF
drop table t1; drop table t1;
create table t1(a int, b bit not null);
alter table t1 add primary key (a);
drop table t1;
...@@ -17,11 +17,11 @@ show databases where `database` = 't%'; ...@@ -17,11 +17,11 @@ show databases where `database` = 't%';
# Test for information_schema.tables & # Test for information_schema.tables &
# show tables # show tables
create database testtets; create database mysqltest;
create table testtets.t1(a int, b VARCHAR(30), KEY string_data (b)); create table mysqltest.t1(a int, b VARCHAR(30), KEY string_data (b));
create table test.t2(a int); create table test.t2(a int);
create table t3(a int, KEY a_data (a)); create table t3(a int, KEY a_data (a));
create table testtets.t4(a int); create table mysqltest.t4(a int);
create view v1 (c) as select table_name from information_schema.TABLES; create view v1 (c) as select table_name from information_schema.TABLES;
select * from v1; select * from v1;
select c,table_name from v1 select c,table_name from v1
...@@ -33,9 +33,9 @@ right join information_schema.TABLES v2 on (v1.c=v2.table_name) ...@@ -33,9 +33,9 @@ right join information_schema.TABLES v2 on (v1.c=v2.table_name)
where v1.c like "t%"; where v1.c like "t%";
select table_name from information_schema.TABLES select table_name from information_schema.TABLES
where table_schema = "testtets" and table_name like "t%"; where table_schema = "mysqltest" and table_name like "t%";
select * from information_schema.STATISTICS where TABLE_SCHEMA = "testtets"; select * from information_schema.STATISTICS where TABLE_SCHEMA = "mysqltest";
show keys from t3 where Key_name = "a_data"; show keys from t3 where Key_name = "a_data";
show tables like 't%'; show tables like 't%';
...@@ -46,11 +46,19 @@ show full columns from mysql.db like "Insert%"; ...@@ -46,11 +46,19 @@ show full columns from mysql.db like "Insert%";
show full columns from v1; show full columns from v1;
select * from information_schema.COLUMNS where table_name="t1" select * from information_schema.COLUMNS where table_name="t1"
and column_name= "a"; and column_name= "a";
show columns from testtets.t1 where field like "%a%"; show columns from mysqltest.t1 where field like "%a%";
grant select (a) on mysqltest.t1 to mysqltest_2@localhost;
connect (user3,localhost,mysqltest_2,,);
connection user3;
select table_name, column_name, privileges from information_schema.columns
where table_schema = 'mysqltest' and table_name = 't1';
show columns from mysqltest.t1;
connection default;
drop view v1; drop view v1;
drop tables testtets.t4, testtets.t1, t2, t3; drop tables mysqltest.t4, mysqltest.t1, t2, t3;
drop database testtets; drop database mysqltest;
# Test for information_schema.CHARACTER_SETS & # Test for information_schema.CHARACTER_SETS &
# SHOW CHARACTER SET # SHOW CHARACTER SET
...@@ -107,7 +115,6 @@ mysql.proc b where a.ROUTINE_NAME = convert(b.name using utf8); ...@@ -107,7 +115,6 @@ mysql.proc b where a.ROUTINE_NAME = convert(b.name using utf8);
select count(*) from information_schema.ROUTINES; select count(*) from information_schema.ROUTINES;
connect (user1,localhost,mysqltest_1,,); connect (user1,localhost,mysqltest_1,,);
connect (user3,localhost,mysqltest_2,,);
connection user1; connection user1;
select ROUTINE_NAME, ROUTINE_DEFINITION from information_schema.ROUTINES; select ROUTINE_NAME, ROUTINE_DEFINITION from information_schema.ROUTINES;
--error 1305 --error 1305
...@@ -166,8 +173,8 @@ select * from information_schema.TABLE_PRIVILEGES where grantee like '%mysqltest ...@@ -166,8 +173,8 @@ select * from information_schema.TABLE_PRIVILEGES where grantee like '%mysqltest
select * from information_schema.COLUMN_PRIVILEGES where grantee like '%mysqltest_1%'; select * from information_schema.COLUMN_PRIVILEGES where grantee like '%mysqltest_1%';
delete from mysql.user where user='mysqltest_1' or user='mysqltest_2'; delete from mysql.user where user='mysqltest_1' or user='mysqltest_2';
delete from mysql.db where user='mysqltest_1' or user='mysqltest_2'; delete from mysql.db where user='mysqltest_1' or user='mysqltest_2';
delete from mysql.tables_priv where user='mysqltest_1'; delete from mysql.tables_priv where user='mysqltest_1' or user='mysqltest_2';
delete from mysql.columns_priv where user='mysqltest_1'; delete from mysql.columns_priv where user='mysqltest_1' or user='mysqltest_2';
flush privileges; flush privileges;
drop table t1; drop table t1;
......
...@@ -540,3 +540,24 @@ deallocate prepare stmt; ...@@ -540,3 +540,24 @@ deallocate prepare stmt;
drop table t1,t2; drop table t1,t2;
#
# Bug#9383: INFORMATION_SCHEMA.COLUMNS, JOIN, Crash, prepared statement
#
eval SET @aux= "SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS A,
INFORMATION_SCHEMA.COLUMNS B
WHERE A.TABLE_SCHEMA = B.TABLE_SCHEMA
AND A.TABLE_NAME = B.TABLE_NAME
AND A.COLUMN_NAME = B.COLUMN_NAME AND
A.TABLE_NAME = 'user'";
let $exec_loop_count= 3;
eval prepare my_stmt from @aux;
while ($exec_loop_count)
{
eval execute my_stmt;
dec $exec_loop_count;
}
deallocate prepare my_stmt;
...@@ -112,3 +112,11 @@ insert into t1 values (7,(1<<12)-2), (0x01,0x01ff); ...@@ -112,3 +112,11 @@ insert into t1 values (7,(1<<12)-2), (0x01,0x01ff);
select hex(a),hex(b) from t1; select hex(a),hex(b) from t1;
select hex(concat(a)),hex(concat(b)) from t1; select hex(concat(a)),hex(concat(b)) from t1;
drop table t1; drop table t1;
#
# Bug #9571: problem with primary key creation
#
create table t1(a int, b bit not null);
alter table t1 add primary key (a);
drop table t1;
...@@ -701,8 +701,9 @@ typedef struct st_lex ...@@ -701,8 +701,9 @@ typedef struct st_lex
TABLE_LIST *query_tables; /* global list of all tables in this query */ TABLE_LIST *query_tables; /* global list of all tables in this query */
/* /*
last element next_global of previous list (used only for list building last element next_global of previous list (used only for list building
during parsing and VIEW processing. This pointer is not valid in during parsing and VIEW processing. This pointer could be invalid during
mysql_execute_command processing of information schema tables(see get_schema_tables_result
function)
*/ */
TABLE_LIST **query_tables_last; TABLE_LIST **query_tables_last;
TABLE_LIST *proc_table; /* refer to mysql.proc if it was opened by VIEW */ TABLE_LIST *proc_table; /* refer to mysql.proc if it was opened by VIEW */
......
...@@ -2290,8 +2290,32 @@ static int get_schema_column_record(THD *thd, struct st_table_list *tables, ...@@ -2290,8 +2290,32 @@ static int get_schema_column_record(THD *thd, struct st_table_list *tables,
char tmp[MAX_FIELD_WIDTH]; char tmp[MAX_FIELD_WIDTH];
char tmp1[MAX_FIELD_WIDTH]; char tmp1[MAX_FIELD_WIDTH];
String type(tmp,sizeof(tmp), system_charset_info); String type(tmp,sizeof(tmp), system_charset_info);
char *end= tmp;
count++; count++;
restore_record(table, s->default_values); restore_record(table, s->default_values);
#ifndef NO_EMBEDDED_ACCESS_CHECKS
uint col_access;
check_access(thd,SELECT_ACL | EXTRA_ACL, base_name,
&tables->grant.privilege, 0, 0);
col_access= get_column_grant(thd, &tables->grant, tables->db,
tables->table_name,
field->field_name) & COL_ACLS;
if (lex->orig_sql_command != SQLCOM_SHOW_FIELDS && !col_access)
continue;
for (uint bitnr=0; col_access ; col_access>>=1,bitnr++)
{
if (col_access & 1)
{
*end++=',';
end=strmov(end,grant_types.type_names[bitnr]);
}
}
#else
end=strmov(end,"");
#endif
table->field[17]->store(tmp+1,end == tmp ? 0 : (uint) (end-tmp-1), cs);
table->field[1]->store(base_name, strlen(base_name), cs); table->field[1]->store(base_name, strlen(base_name), cs);
table->field[2]->store(file_name, strlen(file_name), cs); table->field[2]->store(file_name, strlen(file_name), cs);
table->field[3]->store(field->field_name, strlen(field->field_name), table->field[3]->store(field->field_name, strlen(field->field_name),
...@@ -2334,25 +2358,13 @@ static int get_schema_column_record(THD *thd, struct st_table_list *tables, ...@@ -2334,25 +2358,13 @@ static int get_schema_column_record(THD *thd, struct st_table_list *tables,
"NO" : "YES"); "NO" : "YES");
table->field[6]->store((const char*) pos, table->field[6]->store((const char*) pos,
strlen((const char*) pos), cs); strlen((const char*) pos), cs);
switch (field->type()) {
case FIELD_TYPE_TINY_BLOB:
case FIELD_TYPE_MEDIUM_BLOB:
case FIELD_TYPE_LONG_BLOB:
case FIELD_TYPE_BLOB:
case FIELD_TYPE_VAR_STRING:
case FIELD_TYPE_STRING:
if (field->has_charset()) if (field->has_charset())
{
table->field[8]->store((longlong) field->representation_length()/ table->field[8]->store((longlong) field->representation_length()/
field->charset()->mbmaxlen); field->charset()->mbmaxlen);
else
table->field[8]->store((longlong) field->representation_length());
table->field[8]->set_notnull(); table->field[8]->set_notnull();
table->field[9]->store((longlong) field->representation_length()); table->field[9]->store((longlong) field->representation_length());
table->field[9]->set_notnull(); table->field[9]->set_notnull();
break;
default:
break;
} }
{ {
...@@ -2410,31 +2422,12 @@ static int get_schema_column_record(THD *thd, struct st_table_list *tables, ...@@ -2410,31 +2422,12 @@ static int get_schema_column_record(THD *thd, struct st_table_list *tables,
(field->flags & MULTIPLE_KEY_FLAG) ? "MUL":""); (field->flags & MULTIPLE_KEY_FLAG) ? "MUL":"");
table->field[15]->store((const char*) pos, table->field[15]->store((const char*) pos,
strlen((const char*) pos), cs); strlen((const char*) pos), cs);
char *end= tmp; end= tmp;
if (field->unireg_check == Field::NEXT_NUMBER) if (field->unireg_check == Field::NEXT_NUMBER)
end=strmov(tmp,"auto_increment"); end=strmov(tmp,"auto_increment");
table->field[16]->store(tmp, (uint) (end-tmp), cs); table->field[16]->store(tmp, (uint) (end-tmp), cs);
end=tmp; end=tmp;
#ifndef NO_EMBEDDED_ACCESS_CHECKS
uint col_access;
check_access(thd,SELECT_ACL | EXTRA_ACL, base_name,
&tables->grant.privilege, 0, 0);
col_access= get_column_grant(thd, &tables->grant, tables->db,
tables->table_name,
field->field_name) & COL_ACLS;
for (uint bitnr=0; col_access ; col_access>>=1,bitnr++)
{
if (col_access & 1)
{
*end++=',';
end=strmov(end,grant_types.type_names[bitnr]);
}
}
#else
end=strmov(end,"");
#endif
table->field[17]->store(tmp+1,end == tmp ? 0 : (uint) (end-tmp-1), cs);
table->field[18]->store(field->comment.str, field->comment.length, cs); table->field[18]->store(field->comment.str, field->comment.length, cs);
if (schema_table_store_record(thd, table)) if (schema_table_store_record(thd, table))
DBUG_RETURN(1); DBUG_RETURN(1);
...@@ -3449,12 +3442,11 @@ bool get_schema_tables_result(JOIN *join) ...@@ -3449,12 +3442,11 @@ bool get_schema_tables_result(JOIN *join)
TABLE_LIST *table_list= tab->table->pos_in_table_list; TABLE_LIST *table_list= tab->table->pos_in_table_list;
if (table_list->schema_table && thd->fill_derived_tables()) if (table_list->schema_table && thd->fill_derived_tables())
{ {
TABLE_LIST *save_next_global= table_list->next_global;
TABLE_LIST **query_tables_last= lex->query_tables_last; TABLE_LIST **query_tables_last= lex->query_tables_last;
TABLE *old_derived_tables= thd->derived_tables; TABLE *old_derived_tables= thd->derived_tables;
MYSQL_LOCK *sql_lock= thd->lock; MYSQL_LOCK *sql_lock= thd->lock;
lex->sql_command= SQLCOM_SHOW_FIELDS; lex->sql_command= SQLCOM_SHOW_FIELDS;
DBUG_ASSERT(!*query_tables_last);
if (&lex->unit != lex->current_select->master_unit()) // is subselect if (&lex->unit != lex->current_select->master_unit()) // is subselect
{ {
table_list->table->file->extra(HA_EXTRA_RESET_STATE); table_list->table->file->extra(HA_EXTRA_RESET_STATE);
...@@ -3473,8 +3465,8 @@ bool get_schema_tables_result(JOIN *join) ...@@ -3473,8 +3465,8 @@ bool get_schema_tables_result(JOIN *join)
thd->lock= sql_lock; thd->lock= sql_lock;
lex->sql_command= SQLCOM_SELECT; lex->sql_command= SQLCOM_SELECT;
thd->derived_tables= old_derived_tables; thd->derived_tables= old_derived_tables;
table_list->next_global= save_next_global;
lex->query_tables_last= query_tables_last; lex->query_tables_last= query_tables_last;
*query_tables_last= 0;
} }
} }
thd->no_warnings_for_error= 0; thd->no_warnings_for_error= 0;
......
...@@ -679,15 +679,14 @@ static bool make_empty_rec(THD *thd, File file,enum db_type table_type, ...@@ -679,15 +679,14 @@ static bool make_empty_rec(THD *thd, File file,enum db_type table_type,
null_count++; null_count++;
} }
bfill(buff,(null_length=(null_fields+7)/8),255); bfill(buff,(null_length=(null_fields+7)/8),255);
null_pos=buff; null_pos= buff + null_count / 8;
List_iterator<create_field> it(create_fields); List_iterator<create_field> it(create_fields);
thd->count_cuted_fields= CHECK_FIELD_WARN; // To find wrong default values thd->count_cuted_fields= CHECK_FIELD_WARN; // To find wrong default values
while ((field=it++)) while ((field=it++))
{ {
Field *regfield=make_field((char*) buff+field->offset,field->length, Field *regfield=make_field((char*) buff+field->offset,field->length,
field->flags & NOT_NULL_FLAG ? 0: null_pos,
null_pos+null_count/8,
null_count & 7, null_count & 7,
field->pack_flag, field->pack_flag,
field->sql_type, field->sql_type,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment