New myisamchk option --sort-recover

Allow delete of crashed MyISAM tables
Fixed bug when BLOB was first part of key
Fixed bug when using result from CASE in GROUP BY
Fixed core-dump bug in monthname()
Optimized calling of check_db_name()


Docs/manual.texi:
  Added more information about myisamchk
client/mysqladmin.c:
  Added error message for CREATE database and fixed possible overflow bug
include/myisam.h:
  New myisamchk option --sort-recover
libmysql/libmysql.c:
  Removed commented code
  Don't define getpwuid (breaks on SCO 3.2)
myisam/mi_check.c:
  Fixed (new) bug when using --recover --optimize
myisam/mi_delete_table.c:
  Allow delete of crashed tables
myisam/mi_key.c:
  Fixed bug when BLOB was first part of key
myisam/myisamchk.c:
  New myisamchk option --sort-recover
mysql-test/r/case.result:
  New test cases to check for reported bugs
mysql-test/r/func_time.result:
  New test cases to check for reported bugs
mysql-test/r/type_blob.result:
  New test cases to check for reported bugs
mysql-test/r/type_datetime.result:
  New test cases to check for reported bugs
mysql-test/t/case.test:
  New test cases to check for reported bugs
mysql-test/t/func_time.test:
  New test cases to check for reported bugs
mysql-test/t/type_blob.test:
  New test cases to check for reported bugs
mysql-test/t/type_datetime.test:
  New test cases to check for reported bugs
mysys/my_bitmap.c:
  Optimize
sql-bench/limits/ms-sql.cfg:
  Updated limits
sql/item_cmpfunc.cc:
  Fixed bug when using result from CASE in GROUP BY
sql/item_cmpfunc.h:
  Fixed bug when using result from CASE in GROUP BY
sql/item_timefunc.cc:
  Fixed core-dump bug in monthname()
sql/sql_db.cc:
  Optimized calling of check_db_name()
sql/sql_parse.cc:
  Optimized calling of check_db_name()
sql/table.cc:
  Fixed typo
This commit is contained in:
unknown 2001-01-31 04:47:25 +02:00
commit 495231ea25
24 changed files with 302 additions and 105 deletions

View file

@ -721,17 +721,41 @@ double Item_func_case::val()
bool
Item_func_case::fix_fields(THD *thd,TABLE_LIST *tables)
{
if (first_expr && first_expr->fix_fields(thd,tables) ||
else_expr && else_expr->fix_fields(thd,tables))
return 1;
if (Item_func::fix_fields(thd,tables))
return 1;
if (first_expr)
{
used_tables_cache|=(first_expr)->used_tables();
const_item_cache&= (first_expr)->const_item();
}
if (else_expr)
{
used_tables_cache|=(else_expr)->used_tables();
const_item_cache&= (else_expr)->const_item();
}
if (!else_expr || else_expr->maybe_null)
maybe_null=1; // The result may be NULL
return 0;
}
void Item_func_case::update_used_tables()
{
Item_func::update_used_tables();
if (first_expr)
{
used_tables_cache|=(first_expr)->used_tables();
const_item_cache&= (first_expr)->const_item();
}
if (else_expr)
{
used_tables_cache|=(else_expr)->used_tables();
const_item_cache&= (else_expr)->const_item();
}
}
void Item_func_case::fix_length_and_dec()
{
@ -750,6 +774,7 @@ void Item_func_case::fix_length_and_dec()
}
}
/* TODO: Fix this so that it prints the whole CASE expression */
void Item_func_case::print(String *str)
{