Commit graph

1491 commits

Author SHA1 Message Date
unknown
f00620ba2a Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-5.1-maint
into  mysql.com:/home/ram/work/b29980/b29980.5.1


sql/sql_table.cc:
  Auto merged
2007-07-27 21:17:05 +05:00
unknown
0936976e8d A fix and a test case for Bug#24918 drop table and lock / inconsistent
between perm and temp tables. Review fixes.

The original bug report complains that if we locked a temporary table
with LOCK TABLES statement, we would not leave LOCK TABLES mode
when this temporary table is dropped.

Additionally, the bug was escalated when it was discovered than
when a temporary transactional table that was previously
locked with LOCK TABLES statement was dropped, futher actions with
this table, such as UNLOCK TABLES, would lead to a crash.

The problem originates from incomplete support of transactional temporary
tables. When we added calls to handler::store_lock()/handler::external_lock()
to operations that work with such tables, we only covered the normal
server code flow and did not cover LOCK TABLES mode. 
In LOCK TABLES mode, ::external_lock(LOCK) would sometimes be called without
matching ::external_lock(UNLOCK), e.g. when a transactional temporary table
was dropped. Additionally, this table would be left in the list of LOCKed 
TABLES.

The patch aims to address this inadequacy. Now, whenever an instance
of 'handler' is destroyed, we assert that it was priorly
external_lock(UNLOCK)-ed. All the places that violate this assert
were fixed.

This patch introduces no changes in behavior -- the discrepancy in
behavior will be fixed when we start calling ::store_lock()/::external_lock()
for all tables, regardless whether they are transactional or not, 
temporary or not.


mysql-test/r/innodb_mysql.result:
  Update test results (Bug#24918)
mysql-test/t/innodb_mysql.test:
  Add a test case for Bug#24918
sql/handler.h:
  Make handler::external_lock() a protected method. Backport from 5.1 its
  public wrapper handler::ha_external_lock().
  Assert that the handler is not closed if it is still locked.
sql/lock.cc:
  In mysql_lock_tables only call lock_external() for the list of tables that
  we called store_lock() for. 
  E.g. get_lock_data() does not add non-transactional temporary tables to the
  lock list, so lock_external() should not be called for them.
  
  Use handler::ha_external_lock() instead of handler::external_lock().
  
  Add comments for mysql_lock_remove(), parameterize one strange
  side effect that it has. At least in one place where mysql_lock_remove
  is used, this side effect is not desired (DROP TABLE). The parameter
  will be dropped in 5.1, along with the side effect.
sql/mysql_priv.h:
  Update declaration of mysql_lock_remove().
sql/opt_range.cc:
  Deploy handler::ha_external_lock() instead of handler::external_lock()
sql/sql_base.cc:
  When closing a temporary table, remove the table from the list of LOCKed 
  TABLES of this thread, in case it's there. 
  It's there if it is a transactional temporary table.
  Use a new declaration of mysql_lock_remove().
sql/sql_class.h:
  Extend the comment for THD::temporary_tables.
sql/sql_table.cc:
  Deploy handler::ha_external_lock() instead of handler::external_lock()
2007-07-27 16:37:29 +04:00
unknown
4462578a1c WL#3984 (Revise locking of mysql.general_log and mysql.slow_log)
Bug#25422 (Hang with log tables)
Bug 17876 (Truncating mysql.slow_log in a SP after using cursor locks the
          thread)
Bug 23044 (Warnings on flush of a log table)
Bug 29129 (Resetting general_log while the GLOBAL READ LOCK is set causes
           a deadlock)

Prior to this fix, the server would hang when performing concurrent
ALTER TABLE or TRUNCATE TABLE statements against the LOG TABLES,
which are mysql.general_log and mysql.slow_log.

The root cause traces to the following code:
in sql_base.cc, open_table()
  if (table->in_use != thd)
  {
    /* wait_for_condition will unlock LOCK_open for us */
    wait_for_condition(thd, &LOCK_open, &COND_refresh);
  }
The problem with this code is that the current implementation of the
LOGGER creates 'fake' THD objects, like
- Log_to_csv_event_handler::general_log_thd
- Log_to_csv_event_handler::slow_log_thd
which are not associated to a real thread running in the server,
so that waiting for these non-existing threads to release table locks
cause the dead lock.

In general, the design of Log_to_csv_event_handler does not fit into the
general architecture of the server, so that the concept of general_log_thd
and slow_log_thd has to be abandoned:
- this implementation does not work with table locking
- it will not work with commands like SHOW PROCESSLIST
- having the log tables always opened does not integrate well with DDL
operations / FLUSH TABLES / SET GLOBAL READ_ONLY

With this patch, the fundamental design of the LOGGER has been changed to:
- always open and close a log table when writing a log
- remove totally the usage of fake THD objects
- clarify how locking of log tables is implemented in general.

See WL#3984 for details related to the new locking design.

Additional changes (misc bugs exposed and fixed):

1)

mysqldump which would ignore some tables in dump_all_tables_in_db(),
 but forget to ignore the same in dump_all_views_in_db().

2)

mysqldump would also issue an empty "LOCK TABLE" command when all the tables
to lock are to be ignored (numrows == 0), instead of not issuing the query.

3)

Internal errors handlers could intercept errors but not warnings
(see sql_error.cc).

4)

Implementing a nested call to open tables, for the performance schema tables,
exposed an existing bug in remove_table_from_cache(), which would perform:
  in_use->some_tables_deleted=1;
against another thread, without any consideration about thread locking.
This call inside remove_table_from_cache() was not required anyway,
since calling mysql_lock_abort() takes care of aborting -- cleanly -- threads
that might hold a lock on a table.
This line (in_use->some_tables_deleted=1) has been removed.


sql/handler.cc:
  Moved logic for system / log tables in the SQL layer.
sql/handler.h:
  Moved logic for system / log tables in the SQL layer.
sql/lock.cc:
  Revised locking of log tables
sql/log.cc:
  Major cleanup: changed how log tables are locked / written to.
sql/log.h:
  Major cleanup: changed how log tables are locked / written to.
sql/mysql_priv.h:
  performance schema helpers
sql/slave.cc:
  open_ltable() lock flags
sql/sp.cc:
  open_ltable() lock flags
sql/sql_acl.cc:
  open_ltable() lock flags
sql/sql_class.h:
  performance schema helpers
sql/sql_delete.cc:
  log tables cleanup in TRUNCATE
sql/sql_error.cc:
  Internal handlers can also intercept warnings
sql/sql_insert.cc:
  open_ltable() lock flags
sql/sql_parse.cc:
  performance schema helpers
sql/sql_plugin.cc:
  open_ltable() lock flags
sql/sql_rename.cc:
  log tables cleanup in RENAME
sql/sql_servers.cc:
  open_ltable() lock flags
sql/sql_show.cc:
  Move INFORMATION_SCHEMA_NAME to table.cc
sql/sql_table.cc:
  log tables cleanup (admin operations, ALTER TABLE)
sql/sql_udf.cc:
  open_ltable() lock flags
sql/table.cc:
  Implemented TABLE_CATEGORY.
sql/share/errmsg.txt:
  Changed the wording and name of ER_CANT_READ_LOCK_LOG_TABLE
sql/table.h:
  Implemented TABLE_CATEGORY.
storage/csv/ha_tina.cc:
  Moved logic for system / log tables in the SQL layer.
storage/csv/ha_tina.h:
  Moved logic for system / log tables in the SQL layer.
storage/myisam/ha_myisam.cc:
  Moved logic for system / log tables in the SQL layer.
storage/myisam/ha_myisam.h:
  Moved logic for system / log tables in the SQL layer.
client/mysqldump.c:
  Don't lock tables in the ignore list.
  Don't issue empty LOCK TABLES queries.
sql/sql_base.cc:
  log tables cleanup
  performance schema helpers
mysql-test/r/ps.result:
  Adjust test results
mysql-test/r/show_check.result:
  Adjust test results
mysql-test/r/status.result:
  Adjust test results
mysql-test/t/log_state.test:
  Added tests for Bug#29129
mysql-test/t/ps.test:
  Make the test output deterministic
mysql-test/t/show_check.test:
  Make the test output deterministic
mysql-test/r/log_state.result:
  Changed the default location of the log output to LOG_FILE,
  for backward compatibility with MySQL 5.0
  ---
  Adjust test results
mysql-test/r/log_tables.result:
  cleanup for -ps-protocol
mysql-test/t/log_tables.test:
  cleanup for -ps-protocol
sql/set_var.cc:
  Changed the default location of the log output to LOG_FILE,
  for backward compatibility with MySQL 5.0
  ---
  log tables cleanup
2007-07-27 00:31:06 -06:00
unknown
365bbf9814 Fix for bug #29980: 5.1.20 ate my table
Problem: trying to repair an old (e.g. with "old" varstring fields) corrupted 
table with use_frm option we don't actually repair the table, just altering it
which may couse data loss.

Fix: if use_frm repair option is set, do repair instead of altering even 
if the table needs upgrade.


sql/sql_table.cc:
  Fix for bug #29980: 5.1.20 ate my table
2007-07-26 13:07:01 +05:00
unknown
e716c2bc6d Merge ramayana.hindu.god:/home/tsmith/m/bk/51
into  ramayana.hindu.god:/home/tsmith/m/bk/maint/jul24/51


mysql-test/r/innodb_mysql.result:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sql_table.cc:
  Auto merged
mysql-test/include/mix1.inc:
  Manual merge
2007-07-24 16:16:16 -06:00
unknown
1370b325c6 Merge ramayana.hindu.god:/home/tsmith/m/bk/50
into  ramayana.hindu.god:/home/tsmith/m/bk/maint/jul24/50


sql/sql_table.cc:
  Auto merged
2007-07-24 16:12:23 -06:00
unknown
0a6543687c Merge chilla.local:/home/mydev/mysql-5.0-amain
into  chilla.local:/home/mydev/mysql-5.0-axmrg


sql/sql_table.cc:
  Auto merged
2007-07-22 19:08:25 +02:00
unknown
3da32da0d2 Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  chilla.local:/home/mydev/mysql-5.1-axmrg


mysql-test/t/disabled.def:
  Auto merged
sql/sql_table.cc:
  Auto merged
2007-07-21 03:13:59 +02:00
unknown
36b431d869 Merge chilla.local:/home/mydev/mysql-5.1-ateam
into  chilla.local:/home/mydev/mysql-5.1-axmrg


sql/sql_table.cc:
  Auto merged
2007-07-21 03:10:23 +02:00
unknown
dfc8353c55 Merge mysql.com:/home/svoj/devel/mysql/BUG28838/mysql-5.0-engines
into  mysql.com:/home/svoj/devel/mysql/BUG28838/mysql-5.1-engines


sql/sql_table.cc:
  Manual merge
2007-07-20 11:08:31 +05:00
unknown
dae4ffda3e Merge mysql.com:/home/ram/work/b28125/b28125.5.0
into  mysql.com:/home/ram/work/b28125/b28125.5.1


sql/sql_table.cc:
  Auto merged
mysql-test/include/mix1.inc:
  manual merge
2007-07-20 10:30:40 +05:00
unknown
e395b0ace2 Merge gleb.loc:/home/uchum/work/bk/5.1
into  gleb.loc:/home/uchum/work/bk/5.1-opt


client/mysqldump.c:
  Auto merged
include/my_base.h:
  Auto merged
mysql-test/include/mix1.inc:
  Auto merged
mysql-test/r/innodb_mysql.result:
  Auto merged
mysql-test/t/disabled.def:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_update.cc:
  Auto merged
storage/myisam/ha_myisam.cc:
  Auto merged
2007-07-19 20:01:13 +05:00
unknown
035b06b4e1 BUG#28838 - duplicate external_lock in mysql_alter_table
Removed duplicate call to handler::external_lock() when
ALTER TABLE that doesn't need to copy a table (quick
ALTER TABLE) was executed.

Also quick ALTER TABLE doesn't hold LOCK_open anymore when
it enables/disables indexes.


sql/sql_table.cc:
  Do not call handler::external_lock() as table is already locked
  by open_ltable().
  
  Also do not hold LOCK_open mutex for alter_table_manage_keys() as
  this function doesn't require LOCK_open (LOCK_open is required by
  wait_while_table_is_used() only).
2007-07-18 15:39:13 +05:00
unknown
6947f2d131 Fix for bug #28125: ERROR 2013 when adding index.
Problem: we may break a multibyte char sequence using a key 
reduced to maximum allowed length for a storage engine
(that leads to failed assertion in the innodb code, 
see also #17530). 

Fix: align truncated key length to multibyte char boundary.


mysql-test/r/innodb_mysql.result:
  Fix for bug #28125: ERROR 2013 when adding index.
    - test result.
mysql-test/t/innodb_mysql.test:
  Fix for bug #28125: ERROR 2013 when adding index.
    - test case.
sql/sql_table.cc:
  Fix for bug #28125: ERROR 2013 when adding index.
    - align truncated key length to multibyte char boundary.
    - display real key length in bytes raising warnings.
2007-07-18 12:13:45 +05:00
unknown
31ea7d042b A follow up after the patch for Bug#21074 - even though
we now have exclusive name lock on the table name in mysql_rm_table_part2,
we still should keep LOCK_open - some storage engines are not
ready for locking scope change and assume that LOCK_open is kept.
Still, the binary logging and query cache invalidation calls
moved out of LOCK_open scope.
Fixes some of the broken 5.1-runtime tests (tests break on asserts).


sql/ha_ndbcluster.cc:
  Do not lock LOCK_open for mysql_rm_table_part2 - it does that
  for us now.
sql/mysql_priv.h:
  Remove an unused flag.
sql/sql_class.h:
  Fix an unrelated compiler warning.
sql/sql_db.cc:
  Adjust to the changed signature.
sql/sql_table.cc:
  mysql_rm_table_part2: we need to keep LOCK_open while calling
  storage engine functions, even though now 
  we have an exclusive lock on the table name. Some of them assume that it's 
  kept and attempt to unlock it.
2007-07-14 02:04:48 +04:00
unknown
2ca32b764b Merge magare.gmz:/home/kgeorge/mysql/work/B29325-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/work/B29325-5.1-opt


include/my_base.h:
  Auto merged
mysql-test/t/create.test:
  Auto merged
storage/myisam/ha_myisam.cc:
  Auto merged
storage/myisam/mi_create.c:
  Auto merged
mysql-test/r/create.result:
  5.0-opt -> 5.1-opt merge
sql/set_var.cc:
  5.0-opt -> 5.1-opt merge
sql/sql_class.h:
  5.0-opt -> 5.1-opt merge
sql/sql_table.cc:
  5.0-opt -> 5.1-opt merge
sql/unireg.cc:
  5.0-opt -> 5.1-opt merge
2007-07-11 11:57:49 +03:00
unknown
1abab6c7c7 Bug #29325:
By default MyISAM overwrites .MYD and .MYI files no 
DATA DIRECTORY option is used. This can lead to two tables
using the same .MYD and .MYI files (that can't be dropped).

To prevent CREATE TABLE from overwriting a file a new option
is introduced : keep_files_on_create
When this is on the CREATE TABLE throws an error if either
the .MYD or .MYI exists for a MyISAM table.
The option is off by default (resulting in compatible behavior).


include/my_base.h:
  Bug #29325: introduce keep_files_on_create
myisam/mi_create.c:
  Bug #29325: introduce keep_files_on_create
mysql-test/r/create.result:
  Bug #29325: test case
mysql-test/t/create.test:
  Bug #29325: test case
sql/ha_myisam.cc:
  Bug #29325: introduce keep_files_on_create
sql/set_var.cc:
  Bug #29325: introduce keep_files_on_create
sql/sql_class.h:
  Bug #29325: introduce keep_files_on_create
sql/sql_table.cc:
  Bug #29325: introduce keep_files_on_create
sql/unireg.cc:
  Bug #29325: introduce keep_files_on_create
2007-07-11 10:49:54 +03:00
unknown
be11de7a8e Merge adventure.(none):/home/thek/Development/cpp/bug21074/my51-bug21074
into  adventure.(none):/home/thek/Development/cpp/mysql-5.1-runtime


sql/ha_ndbcluster.cc:
  Auto merged
sql/lock.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sql_db.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_rename.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_trigger.cc:
  Auto merged
sql/sql_cache.cc:
  Manual merge.
2007-07-02 21:03:10 +02:00
unknown
289cc26c64 Bug#21074 Large query_cache freezes mysql server sporadically under heavy load
Invaldating a subset of a sufficiently large query cache can take a long time.
During this time the server is efficiently frozen and no other operation can
be executed. This patch addresses this problem by moving the locks which cause
the freezing and also by temporarily disable the query cache while the 
invalidation takes place.


sql/ha_ndbcluster.cc:
  - mysql_rm_table_part2 has a new parameter to indicate if OPEN_lock mutex 
    protection is needed.
sql/lock.cc:
  - Added function for acquiring table name exclusive locks.
  - Added function for asserting that table name lock is acquired.
sql/mysql_priv.h:
  - Added function for acquiring table name exclusive locks.
  - Added function for asserting that table name lock is acquired.
  - Added parameter to mysql_rm_table_part2 to indicate whether OPEN_lock mutex
    protection is needed or not.
sql/sql_cache.cc:
  - Changed flush_in_progress-flag into a state and added a function, 
    is_flushing() to reflect on this state. A new state was needed to indicate
    that a partial invalidation was in progress.
  - An unused parameter 'under_guard' was removed.
  - The Query_cache mutex structural_guard was pushed down into one
    invalidate_table function to avoid multiple entry points which makes
    maintainens more difficult.
  - Instead of keeping the structural_guard mutex during the entire invalidation
    we set the query cache status state to TABLE_FLUSH_IN_PROGRESS to
    temporarily disable the cache and avoid locking other threads needing the
    Query_cache resource.
sql/sql_cache.h:
  - Changed flush_in_progress-flag into a state and added a function, 
    is_flushing() to reflect on this state. A new state was needed to indicate
    that a partial invalidation was in progress.
  - An unused parameter 'under_guard' was removed.
  - The Query_cache mutex structural_guard was pushed down into one
    invalidate_table function to avoid multiple entry points which makes
    maintainens more difficult.
  - Instead of keeping the structural_guard mutex during the entire invalidation
    we set the query cache status state to TABLE_FLUSH_IN_PROGRESS to
    temporarily disable the cache and avoid locking other threads needing the
    the Query_cache resource.
sql/sql_db.cc:
  - mysql_rm_table_part2_with_lock is redundant and replaced
  with mysql_rm_table_part2.
sql/sql_parse.cc:
  - Function query_cache_invalidate3 isn't protect by a lock and we have a 
    race condition.
  - Moving this function into mysql_rename_tables and make sure it is protected
    by a exclusive table name lock.
sql/sql_rename.cc:
  - Function query_cache_invalidation3 isn't protect by a lock and we have a 
    race condition.
  - Moving this function into mysql_rename_tables and make sure it is protected
    by a exclusive table name lock.
  - Instead of using LOCK_open mutex, which excludes all other threads, the lock
    is changed into exclusive table name locks instead. This prevents us from
    locking the server if a query cache invalidation would take a long time to
    complete.
sql/sql_table.cc:
  - Instead of using LOCK_open mutex, which excludes all other threads, the lock
    is changed into exclusive table name locks instead. This prevents us from
    locking the server if a query cache invalidation would take a long time to
    complete.
  - Added new parameter to mysql_rm_table_part2 to control whether OPEN_lock mutex
    needs to be aquired or not. This is currently needed by the NDB implemenation.
sql/sql_trigger.cc:
  - Table_triggers don't need to be protexted by LOCK_open mutex. This 
    patch cancel this restriction.
  - Refactored comments to doxygen style.
2007-07-02 19:14:48 +02:00
unknown
9c1671267a Merge mysqldev@production.mysql.com:my/mysql-5.0-release
into  zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-community


BitKeeper/triggers/post-commit:
  Auto merged
client/CMakeLists.txt:
  Auto merged
extra/CMakeLists.txt:
  Auto merged
libmysql/CMakeLists.txt:
  Auto merged
libmysqld/Makefile.am:
  Auto merged
myisam/CMakeLists.txt:
  Auto merged
mysql-test/r/func_in.result:
  Auto merged
mysql-test/r/information_schema_db.result:
  Auto merged
mysql-test/t/func_in.test:
  Auto merged
mysql-test/t/information_schema.test:
  Auto merged
server-tools/instance-manager/CMakeLists.txt:
  Auto merged
sql/Makefile.am:
  Auto merged
sql/ha_archive.cc:
  Auto merged
sql/ha_myisam.cc:
  Auto merged
sql/ha_ndbcluster.cc:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/lock.cc:
  Auto merged
sql/log_event.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/slave.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_cache.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_delete.cc:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_lex.cc:
  Auto merged
sql/sql_lex.h:
  Auto merged
sql/sql_prepare.cc:
  Auto merged
sql/sql_repl.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_update.cc:
  Auto merged
sql/sql_view.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
sql/structs.h:
  Auto merged
sql/table.h:
  Auto merged
support-files/mysql.spec.sh:
  Auto merged
win/Makefile.am:
  Auto merged
win/README:
  Auto merged
win/configure.js:
  Auto merged
CMakeLists.txt:
  manual merge.
configure.in:
  manual merge.
mysql-test/r/information_schema.result:
  manual merge.
sql/CMakeLists.txt:
  manual merge.
sql/set_var.cc:
  manual merge.
sql/sql_parse.cc:
  manual merge.
sql/sql_select.cc:
  manual merge.
2007-07-02 10:46:46 -04:00
unknown
a790eb7570 Manual merge.
mysql-test/r/sp.result:
  Auto merged
mysql-test/t/query_cache.test:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
sql/handler.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2007-06-19 15:02:08 +04:00
unknown
3883e4b62a Merge chilla.local:/home/mydev/mysql-5.1-amain
into  chilla.local:/home/mydev/mysql-5.1-axmrg


mysql-test/r/view.result:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
sql/table.cc:
  Auto merged
sql/mysql_priv.h:
  SCCS merged
2007-06-15 20:23:20 +02:00
unknown
a43723673f Merge weblab.(none):/home/marcsql/TREE/mysql-5.1-base
into  weblab.(none):/home/marcsql/TREE/mysql-5.1-rt-merge


mysql-test/r/trigger.result:
  Auto merged
mysql-test/t/trigger.test:
  Auto merged
sql/field.cc:
  Auto merged
sql/field.h:
  Auto merged
sql/handler.cc:
  Auto merged
sql/item.h:
  Auto merged
sql/log.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_partition.cc:
  Auto merged
sql/sql_prepare.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2007-06-15 11:36:31 -06:00
unknown
30057f678b Merge chilla.local:/home/mydev/mysql-5.0-amain
into  chilla.local:/home/mydev/mysql-5.0-axmrg


mysql-test/r/view.result:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
2007-06-15 17:47:02 +02:00
unknown
0662a9b78a Merge bk@192.168.21.1:mysql-5.1
into  mysql.com:/d2/hf/mrg/mysql-5.1-opt


client/mysqltest.c:
  Auto merged
sql/field.cc:
  Auto merged
sql/field.h:
  Auto merged
sql/item.cc:
  Auto merged
sql/item.h:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_prepare.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
mysql-test/include/mix1.inc:
  merging
mysql-test/r/innodb_mysql.result:
  merging
sql/sql_select.cc:
  merging
2007-06-14 16:42:43 +05:00
unknown
6f168d1255 Merge bk@192.168.21.1:mysql-5.0
into  mysql.com:/d2/hf/mrg/mysql-5.0-opt


client/mysqltest.c:
  Auto merged
sql/field.cc:
  Auto merged
sql/field.h:
  Auto merged
sql/item.cc:
  Auto merged
sql/item.h:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_prepare.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
mysql-test/r/innodb_mysql.result:
  merging
mysql-test/t/innodb_mysql.test:
  merging
sql/sql_select.cc:
  merging
2007-06-14 16:41:10 +05:00
unknown
805c446ca4 Bug#26402 Server crashes with old-style named table
Problem: crash on attempt to open a table
  having "#mysql50#" prefix in db or table name.
  Fix: This prefix is reserved for "mysql_upgrade"
  to access 5.0 tables  whose file names are not encoded
  according to "5.1 tablename to filename encoded".
  Don't try open tables whose db name or table name
  has this prefix.


mysql-test/r/show_check.result:
  Adding test case.
mysql-test/t/show_check.test:
  Adding test case.
sql/mysql_priv.h:
  Moving 5.0 prefix declarations into mysql_priv.h
sql/sql_table.cc:
  Moving 5.0 prefix declarations into mysql_priv.h
sql/table.cc:
  Don't try to do "normal" open of tables having '#mysql50#' prefix in
  db or table name. This prefix is reserved to access to unencoded
  table names when upgrading from 5.0 to 5.1.
2007-06-14 16:28:33 +05:00
unknown
ab84fb1d1b Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.1-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B27816-5.1-opt


sql/sql_table.cc:
  Auto merged
2007-06-12 19:24:48 +03:00
unknown
9ab7ce8dcb Merge weblab.(none):/home/marcsql/TREE/mysql-5.1-base
into  weblab.(none):/home/marcsql/TREE/mysql-5.1-rt-merge


sql/field.cc:
  Auto merged
sql/field.h:
  Auto merged
sql/item.h:
  Auto merged
sql/item_sum.cc:
  Auto merged
sql/item_timefunc.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_lex.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2007-06-11 15:57:59 -06:00
unknown
bbef78f412 Merge moonbone.local:/mnt/gentoo64/work/test-5.0-opt-mysql
into  moonbone.local:/mnt/gentoo64/work/test-5.1-opt-mysql


mysql-test/r/view.result:
  Auto merged
mysql-test/t/grant2.test:
  Auto merged
mysql-test/t/view.test:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
mysql-test/r/grant2.result:
  SCCS merged
mysql-test/r/information_schema.result:
  SCCS merged
mysql-test/t/information_schema.test:
  SCCS merged
sql/sql_table.cc:
  SCCS merged
2007-06-11 17:14:16 +04:00
unknown
97cf2694a1 Follow up after work on Bug 4968
Coding style: classes start with a capital letter.
Rename some classes related to parsing:
create_field -> Create_field
foreign_key -> Foreign_key
key_part_spec -> Key_part_spec


sql/field.cc:
  create_field -> Create_field
sql/field.h:
  create_field -> Create_field
sql/item.h:
  create_field -> Create_field
sql/item_sum.cc:
  create_field -> Create_field
sql/mysql_priv.h:
  create_field -> Create_field
sql/sp_head.cc:
  create_field -> Create_field
sql/sp_head.h:
  create_field -> Create_field
sql/sp_pcontext.cc:
  create_field -> Create_field
sql/sp_pcontext.h:
  create_field -> Create_field
sql/sp_rcontext.cc:
  create_field -> Create_field
sql/sql_class.cc:
  create_field -> Create_field
  key_part_spec -> Key_part_spec
  foreign_key -> Foreign_key
sql/sql_class.h:
  create_field -> Create_field
  key_part_spec -> Key_part_spec
  foreign_key -> Foreign_key
sql/sql_insert.cc:
  create_field -> Create_field
sql/sql_lex.cc:
  Coding style: classes start with a capital, create_field -> Create_field
sql/sql_lex.h:
  create_field -> Create_field
  key_part_spec -> Key_part_spec
sql/sql_parse.cc:
  create_field -> Create_field
  key_part_spec -> Key_part_spec
sql/sql_select.cc:
  create_field -> Create_field
sql/sql_table.cc:
  create_field -> Create_field
sql/sql_yacc.yy:
  create_field -> Create_field
  key_part_spec -> Key_part_spec
  foreign_key -> Foreign_key
sql/unireg.cc:
  create_field -> Create_field
2007-06-10 14:43:57 +04:00
unknown
a9ce138822 Bug #27816: Log tables ran with partitions crashes the server
when logging is enabled.
Currently the partition engine doesn't allow log tables to
be partitioned. But this was not checked and the server crashed.
Fixed by adding a check in ALTER TABLE to disable partitioning the
log tables.
While working on the cause of the problem improved the way the log
thread structures are initialized before opening the log tables.


mysql-test/r/partition.result:
  Bug #27816: test case
mysql-test/t/partition.test:
  Bug #27816: test case
sql/log.cc:
  Bug #27816: optional
   Improved initialization of the log threads before opening 
   the log table.
   Remedies problems that arise from open_table() et. al. 
   depending on a correctly initialized thd.
   Prerequisite for handling partitioned log tables :
   they call the parser while reading the .frm file.
sql/sql_table.cc:
  Bug #27816: throw an error when paritioning the log tables : 
   not supported by the partition engine.
2007-06-08 17:12:42 +03:00
unknown
2b274a60d5 Bug #28754: RPM builds differ from tar.gz in "ALTER ... RENAME" on views
When constructing the path to the original .frm file ALTER .. RENAME
 was unnecessary (and incorrectly) lowercasing the whole path when not 
 on a case-insensitive filesystem.
 This path should not be modified because of lower_case_table_names
 as it is already in the correct case according to that setting.
 Fixed by removing the lowercasing.
 Unfortunately testing this would require running the tests on a case
 sensitive filesystem in a directory that has uppercase letters.
 This cannot be guaranteed in all setups so no test case added.


sql/sql_table.cc:
  Bug #28754: don't downcase the .frm path
2007-06-08 13:42:10 +03:00
unknown
5f26429db4 BUG#26976 - Missing table in merge not noted in related error msg +
SHOW CREATE TABLE fails

After merge fixes.


mysql-test/r/backup.result:
  Fixed test result.
mysql-test/r/sp.result:
  Fixed test result.
sql/sql_table.cc:
  Fixed wrongly merged line. Moved "deprecated" warnings from sql_yacc.yy
  to mysql_backup_tables/mysql_restore_table.
sql/sql_yacc.yy:
  Moved "deprecated" warnings from sql_yacc.yy to
  mysql_backup_tables/mysql_restore_table.
storage/myisam/ha_myisam.cc:
  Do not report the same error twice.
storage/myisammrg/ha_myisammrg.cc:
  Removed wrongly merged line.
2007-06-08 11:20:50 +05:00
unknown
97a7a6d45c Merge mysql.com:/home/svoj/devel/mysql/BUG26976/mysql-5.0-engines
into  mysql.com:/home/svoj/devel/mysql/BUG26976/mysql-5.1-engines


mysql-test/r/key_cache.result:
  Auto merged
mysql-test/r/lock.result:
  Auto merged
mysql-test/r/merge.result:
  Auto merged
mysql-test/r/preload.result:
  Auto merged
mysql-test/r/ps.result:
  Auto merged
mysql-test/r/repair.result:
  Auto merged
mysql-test/r/rpl_failed_optimize.result:
  Auto merged
mysql-test/r/view.result:
  Auto merged
mysql-test/t/merge.test:
  Auto merged
storage/myisammrg/myrg_def.h:
  Auto merged
storage/myisammrg/myrg_open.c:
  Auto merged
mysql-test/r/backup.result:
  Use local.
mysql-test/r/sp.result:
  Use local.
sql/sql_error.cc:
  Use local.
sql/sql_error.h:
  Use local.
sql/share/errmsg.txt:
  Manual merge.
sql/sql_table.cc:
  Manual merge.
storage/myisam/ha_myisam.cc:
  Manual merge.
storage/myisammrg/ha_myisammrg.cc:
  Manual merge.
storage/myisammrg/ha_myisammrg.h:
  Manual merge.
2007-06-07 13:53:23 +05:00
unknown
3ee66aa65e Merge 81.176.158.240:devel/mysql/BUG26976/mysql-5.0-engines
into  mysql.com:/home/svoj/devel/mysql/BUG26976/mysql-5.0-engines


mysql-test/r/ps.result:
  Auto merged
mysql-test/r/sp.result:
  Auto merged
mysql-test/r/view.result:
  Auto merged
sql/sql_table.cc:
  Auto merged
2007-06-07 12:07:41 +05:00
unknown
a6f7f8a4fd merging fix 2007-06-06 14:23:56 +05:00
unknown
55c765925d BUG#26976 - Missing table in merge not noted in related error msg +
SHOW CREATE TABLE fails

Underlying table names, that merge engine fails to open were not
reported.

With this fix CHECK TABLE issued against merge table reports all
underlying table names that it fails to open. Other statements
are unaffected, that is underlying table names are not included
into error message.

This fix doesn't solve SHOW CREATE TABLE issue.


myisammrg/myrg_def.h:
  Added myrg_print_wrong_table declaration.
myisammrg/myrg_open.c:
  If HA_OPEN_FOR_REPAIR is passed to merge engine open function,
  report names of tables that we fail to open.
mysql-test/r/backup.result:
  Updated test result.
mysql-test/r/key_cache.result:
  Updated test result - removed duplicate error.
mysql-test/r/lock.result:
  Updated test result - added summary row.
mysql-test/r/merge.result:
  A test case for BUG#26976.
mysql-test/r/preload.result:
  Updated test result - removed duplicate error, added summary row.
mysql-test/r/ps.result:
  Updated test result - removed duplicate error, added summary row.
mysql-test/r/repair.result:
  Updated test result - removed duplicate error, added summary row.
mysql-test/r/rpl_failed_optimize.result:
  Updated test result - removed duplicate error, added summary row.
mysql-test/r/sp.result:
  Updated test result - removed duplicate error, added summary row.
mysql-test/r/view.result:
  Updated test result - removed duplicate error, added summary row.
mysql-test/t/merge.test:
  A test case for BUG#26976.
sql/ha_myisam.cc:
  Do not report same error twice.
sql/ha_myisammrg.cc:
  If HA_OPEN_FOR_REPAIR is passed to merge engine open function,
  report names of tables that we fail to open.
  
  Added dummy ha_myisammrg::check to not confuse users with
  "not implemented" error in case all underlying tables are
  fine.
sql/ha_myisammrg.h:
   Added ha_myisammrg::check declaration.
sql/share/errmsg.txt:
  Added ER_ADMIN_WRONG_MRG_TABLE errno. It is used instead
  of ER_WRONG_MRG_TABLE in case HA_OPEN_FOR_REPAIR is
  passed to merge engine handler open function.
sql/sql_error.cc:
  warning_level_* are now public. It is required by mysql_admin_table to
  report message level.
sql/sql_error.h:
  warning_level_* are now public. It is required by mysql_admin_table to
  report message level.
sql/sql_table.cc:
  Reorder mysql_admin_table arguments to meet it's definition.
  
  Report errors that are pending in thd->warn_list as results of
  admin function.
2007-06-06 04:42:41 +05:00
unknown
6d7cd0b2c0 Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-5.1
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/jun05/51


client/mysqldump.c:
  Auto merged
mysql-test/mysql-test-run.pl:
  Auto merged
mysql-test/r/innodb_mysql.result:
  Auto merged
sql/field.cc:
  Auto merged
sql/field.h:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2007-06-05 23:06:43 +02:00
unknown
f5bc5381ae Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-5.0
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/jun05/50


client/mysqldump.c:
  Auto merged
mysql-test/mysql-test-run.pl:
  Auto merged
sql/field.cc:
  Auto merged
sql/field.h:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2007-06-05 23:04:40 +02:00
unknown
2c3f615738 Merge bk@192.168.21.1:mysql-5.1-opt
into  mysql.com:/home/hf/work/28477/my51-28477


sql/sql_table.cc:
  Auto merged
sql/table.cc:
  Auto merged
sql/table.h:
  Auto merged
2007-06-06 00:20:01 +05:00
unknown
38ed1be3ec Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/51
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/jun05/51


client/mysqldump.c:
  Auto merged
include/m_string.h:
  Auto merged
include/mysql_com.h:
  Auto merged
include/violite.h:
  Auto merged
libmysql/libmysql.c:
  Auto merged
mysql-test/include/mix1.inc:
  Auto merged
mysql-test/mysql-test-run.pl:
  Auto merged
mysql-test/r/innodb_mysql.result:
  Auto merged
mysql-test/r/ps.result:
  Auto merged
mysql-test/t/mysqltest.test:
  Auto merged
mysql-test/t/ps.test:
  Auto merged
mysys/my_init.c:
  Auto merged
server-tools/instance-manager/mysql_connection.cc:
  Auto merged
sql/field.cc:
  Auto merged
sql/item.cc:
  Auto merged
sql/item.h:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/log_event.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/net_serv.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/sql_connect.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_prepare.cc:
  Auto merged
sql/sql_repl.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql-common/client.c:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
strings/ctype-mb.c:
  Auto merged
strings/ctype-ucs2.c:
  Auto merged
strings/strtod.c:
  Auto merged
vio/vio_priv.h:
  Auto merged
vio/viosocket.c:
  Auto merged
client/mysqltest.c:
  SCCS merged
include/my_global.h:
  SCCS merged
sql/field.h:
  SCCS merged
sql/sql_table.cc:
  Manual merge
strings/ctype-bin.c:
  Manual merge
2007-06-05 17:51:30 +02:00
unknown
1c72c3a8c1 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/50
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/jun05/50


mysql-test/mysql-test-run.pl:
  Auto merged
mysql-test/t/mysqltest.test:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2007-06-05 17:28:49 +02:00
unknown
467d3669cf Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.1-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B28488-5.1-opt


sql/mysql_priv.h:
  Auto merged
sql/sql_partition.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
2007-06-05 10:42:47 +03:00
unknown
fce63f8f3f Bug #28488: Incorrect information in file: './test/t1_test#.frm'
While executing ALTER TABLE ... PARTITION the server uses 
a temporary "shadow" table to create the updated table.
This shadow table then gets renamed as the original table.
The shadow table was not prefixed with the special prefix that
marks temporary tables so it was picked up by SHOW TABLE STATUS.
Fixed by isolating the code to create the shadow table name in a
separate function and prefixing the shadow table name with the
special prefix to exclude it from the list of user tables.
See bug 18775 and WL1324 for details.


mysql-test/r/partition.result:
  Bug #28488: test case
mysql-test/t/partition.test:
  Bug #28488: test case
sql/mysql_priv.h:
  Bug #28488: prefix shadow file with the temp prefix
sql/sql_partition.cc:
  Bug #28488: prefix shadow file with the temp prefix
sql/sql_table.cc:
  Bug #28488: prefix shadow file with the temp prefix
2007-06-04 18:56:29 +03:00
unknown
e65eb0e447 Post-merge fix. 2007-06-04 03:03:15 -07:00
unknown
f4caa3025a Merge olga.mysql.com:/home/igor/mysql-5.1
into  olga.mysql.com:/home/igor/mysql-5.1-opt-merge


mysql-test/r/alter_table.result:
  Auto merged
mysql-test/r/create.result:
  Auto merged
mysql-test/r/innodb_mysql.result:
  Auto merged
mysql-test/r/sp.result:
  Auto merged
mysql-test/r/user_var.result:
  Auto merged
mysql-test/t/alter_table.test:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
mysql-test/t/strict.test:
  Auto merged
mysql-test/t/subselect3.test:
  Auto merged
sql/field.h:
  Auto merged
sql/handler.h:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/item_func.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_update.cc:
  Auto merged
mysql-test/r/ps_2myisam.result:
  Manual merge.
mysql-test/r/ps_3innodb.result:
  Manual merge.
mysql-test/r/ps_4heap.result:
  Manual merge.
mysql-test/r/ps_5merge.result:
  Manual merge.
mysql-test/r/ps_7ndb.result:
  Manual merge.
sql/sql_table.cc:
  Manual merge.
sql/sql_view.cc:
  Manual merge.
2007-06-03 22:52:02 -07:00
unknown
ec30069a2e Merge mysql.com:/home/ram/work/b28652/b28652.5.0
into  mysql.com:/home/ram/work/b28652/b28652.5.1


mysql-test/include/mix1.inc:
  manual merge
mysql-test/r/innodb_mysql.result:
  manual merge
sql/sql_table.cc:
  manual merge
2007-06-04 10:14:28 +05:00
unknown
b85d7da25d BUG#28427: fix typo, s/bool/uint/ 2007-06-02 21:43:04 +04:00
unknown
5697c0c10c Merge bk-internal.mysql.com:/data0/bk/mysql-5.0
into  bk-internal.mysql.com:/data0/bk/mysql-5.0-opt


mysql-test/r/sp.result:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
mysql-test/t/strict.test:
  Auto merged
mysql-test/t/subselect3.test:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_update.cc:
  Auto merged
sql/sql_view.cc:
  Manual merge
2007-06-02 00:57:25 +02:00