1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-10 04:22:00 +03:00
Commit Graph

22189 Commits

Author SHA1 Message Date
180068ddce save the data from mysql.db that we delete (side effect that made read_only fail) 2007-07-27 17:12:53 +10:00
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
32d29bbe86 point to bugs needing to be addressed before rpl_ndb_ctype_ucs2_def can be enabled 2007-07-27 15:08:51 +10:00
4591169429 Merge debian.(none):/M51/rowlock-5.1
into  debian.(none):/M51/push-5.1
2007-07-26 21:15:44 +02:00
22e618b3dd Merge bk-internal.mysql.com:/data0/bk/mysql-5.1
into  bk-internal.mysql.com:/data0/bk/mysql-5.1-arch
2007-07-26 20:48:44 +02:00
1a6ced2cfa Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  mysql.com:/home/psergey/mysql-5.0-bdb-fix
2007-07-26 20:54:28 +04:00
9206f68477 BUG#28591: make the fix work for BDB tables too:
- make ha_berkeley::cmp_ref() take into account that auto-generated PKs 
   are stored in LSB-first order. 
 - Remove the temporary code that made the bugfix work for innodb only 


mysql-test/r/bdb.result:
  Adjust test-results.
sql/ha_berkeley.cc:
  BUG#28591: make the fix work for BDB tables too:
   - make ha_berkeley::cmp_ref() take into account that auto-generated PKs 
     are stored in LSB-first order.
sql/sql_select.cc:
  BUG#28591: Remove "innodb only" clause as the fix now works for BDB too
sql/table.cc:
  BUG#28591: Remove "innodb only" clause as the fix now works for BDB too
2007-07-26 20:52:53 +04:00
299fc364e2 Merge debian.(none):/M50/rowlock-5.0
into  debian.(none):/M51/rowlock-5.1


BitKeeper/deleted/.del-readme.txt~3:
  Merge rename: BitKeeper/deleted/.del-readme.txt -> BitKeeper/deleted/.del-readme.txt~3
Makefile.am:
  Manual merge: "row_lock" suite is deleted.
2007-07-26 18:40:46 +02:00
e1feaa848c Merge debian.(none):/M50/rowlock-5.0
into  debian.(none):/M50/push-5.0
2007-07-26 18:26:04 +02:00
c7150fd814 Bug #30036: SHOW TABLE TYPES causes the debug client to crash
SHOW TABLE TYPES is a (to be deprecated) synonym for 
SHOW STORAGE ENGINES.
Fixed to use the right schema table in addition to 
issuing a warning.


mysql-test/r/show_check.result:
  Bug #30036: test case
mysql-test/t/show_check.test:
  Bug #30036: test case
sql/sql_yacc.yy:
  Bug #30036: use the right schema table
2007-07-26 18:33:05 +03:00
d8c8c3437f Remove the "row_lock" suite from the sources.
For more information, see WL#3866 and the bugs numbered 28685 and 20390.


BitKeeper/deleted/.del-readme.txt:
  Delete: mysql-test/suite/row_lock/readme.txt
BitKeeper/deleted/.del-summary_of_sel_test.txt:
  Delete: mysql-test/suite/row_lock/summary_of_sel_test.txt
BitKeeper/deleted/.del-innodb_row_lock_1.result:
  Delete: mysql-test/suite/row_lock/r/innodb_row_lock_1.result
BitKeeper/deleted/.del-innodb_row_lock_2.result:
  Delete: mysql-test/suite/row_lock/r/innodb_row_lock_2.result
BitKeeper/deleted/.del-innodb_row_lock_3.result:
  Delete: mysql-test/suite/row_lock/r/innodb_row_lock_3.result
BitKeeper/deleted/.del-innodb_row_lock_4.result:
  Delete: mysql-test/suite/row_lock/r/innodb_row_lock_4.result
BitKeeper/deleted/.del-innodb_row_lock_5.result:
  Delete: mysql-test/suite/row_lock/r/innodb_row_lock_5.result
BitKeeper/deleted/.del-innodb_row_lock_big_tab.result:
  Delete: mysql-test/suite/row_lock/r/innodb_row_lock_big_tab.result
BitKeeper/deleted/.del-innodb_row_lock_big_tab_1.result:
  Delete: mysql-test/suite/row_lock/r/innodb_row_lock_big_tab_1.result
BitKeeper/deleted/.del-innodb_row_lock_big_tab_2.result:
  Delete: mysql-test/suite/row_lock/r/innodb_row_lock_big_tab_2.result
BitKeeper/deleted/.del-innodb_row_lock_trig_1.result:
  Delete: mysql-test/suite/row_lock/r/innodb_row_lock_trig_1.result
BitKeeper/deleted/.del-innodb_row_lock_trig_2.result:
  Delete: mysql-test/suite/row_lock/r/innodb_row_lock_trig_2.result
BitKeeper/deleted/.del-innodb_row_lock_view_1.result:
  Delete: mysql-test/suite/row_lock/r/innodb_row_lock_view_1.result
BitKeeper/deleted/.del-row_lock.inc:
  Delete: mysql-test/suite/row_lock/include/row_lock.inc
BitKeeper/deleted/.del-row_lock_big_tab.inc:
  Delete: mysql-test/suite/row_lock/include/row_lock_big_tab.inc
BitKeeper/deleted/.del-row_lock_big_tab_1.inc:
  Delete: mysql-test/suite/row_lock/include/row_lock_big_tab_1.inc
BitKeeper/deleted/.del-row_lock_big_tab_2.inc:
  Delete: mysql-test/suite/row_lock/include/row_lock_big_tab_2.inc
BitKeeper/deleted/.del-row_lock_trig.inc:
  Delete: mysql-test/suite/row_lock/include/row_lock_trig.inc
BitKeeper/deleted/.del-row_lock_view.inc:
  Delete: mysql-test/suite/row_lock/include/row_lock_view.inc
BitKeeper/deleted/.del-row_lock_view_mix.inc:
  Delete: mysql-test/suite/row_lock/include/row_lock_view_mix.inc
BitKeeper/deleted/.del-row_lock_view_storedp.inc:
  Delete: mysql-test/suite/row_lock/include/row_lock_view_storedp.inc
BitKeeper/deleted/.del-row_lock_view_trig.inc:
  Delete: mysql-test/suite/row_lock/include/row_lock_view_trig.inc
BitKeeper/deleted/.del-innodb_row_lock_view_2.result:
  Delete: mysql-test/suite/row_lock/r/innodb_row_lock_view_2.result
BitKeeper/deleted/.del-innodb_row_lock_view_mix_1.result:
  Delete: mysql-test/suite/row_lock/r/innodb_row_lock_view_mix_1.result
BitKeeper/deleted/.del-innodb_row_lock_view_mix_2.result:
  Delete: mysql-test/suite/row_lock/r/innodb_row_lock_view_mix_2.result
BitKeeper/deleted/.del-innodb_row_lock_view_storedp_1.result:
  Delete: mysql-test/suite/row_lock/r/innodb_row_lock_view_storedp_1.result
BitKeeper/deleted/.del-innodb_row_lock_view_storedp_2.result:
  Delete: mysql-test/suite/row_lock/r/innodb_row_lock_view_storedp_2.result
BitKeeper/deleted/.del-innodb_row_lock_view_trig_1.result:
  Delete: mysql-test/suite/row_lock/r/innodb_row_lock_view_trig_1.result
BitKeeper/deleted/.del-innodb_row_lock_view_trig_2.result:
  Delete: mysql-test/suite/row_lock/r/innodb_row_lock_view_trig_2.result
BitKeeper/deleted/.del-ndb_row_lock_1.result:
  Delete: mysql-test/suite/row_lock/r/ndb_row_lock_1.result
BitKeeper/deleted/.del-ndb_row_lock_2.result:
  Delete: mysql-test/suite/row_lock/r/ndb_row_lock_2.result
BitKeeper/deleted/.del-ndb_row_lock_3.result:
  Delete: mysql-test/suite/row_lock/r/ndb_row_lock_3.result
BitKeeper/deleted/.del-ndb_row_lock_4.result:
  Delete: mysql-test/suite/row_lock/r/ndb_row_lock_4.result
BitKeeper/deleted/.del-ndb_row_lock_5.result:
  Delete: mysql-test/suite/row_lock/r/ndb_row_lock_5.result
BitKeeper/deleted/.del-ndb_row_lock_big_tab.result:
  Delete: mysql-test/suite/row_lock/r/ndb_row_lock_big_tab.result
BitKeeper/deleted/.del-ndb_row_lock_big_tab_1.result:
  Delete: mysql-test/suite/row_lock/r/ndb_row_lock_big_tab_1.result
BitKeeper/deleted/.del-ndb_row_lock_big_tab_2.result:
  Delete: mysql-test/suite/row_lock/r/ndb_row_lock_big_tab_2.result
BitKeeper/deleted/.del-ndb_row_lock_trig_1.result:
  Delete: mysql-test/suite/row_lock/r/ndb_row_lock_trig_1.result
BitKeeper/deleted/.del-ndb_row_lock_trig_2.result:
  Delete: mysql-test/suite/row_lock/r/ndb_row_lock_trig_2.result
BitKeeper/deleted/.del-ndb_row_lock_view_1.result:
  Delete: mysql-test/suite/row_lock/r/ndb_row_lock_view_1.result
BitKeeper/deleted/.del-ndb_row_lock_view_2.result:
  Delete: mysql-test/suite/row_lock/r/ndb_row_lock_view_2.result
BitKeeper/deleted/.del-innodb_row_lock_1.test:
  Delete: mysql-test/suite/row_lock/t/innodb_row_lock_1.test
BitKeeper/deleted/.del-innodb_row_lock_2.test:
  Delete: mysql-test/suite/row_lock/t/innodb_row_lock_2.test
BitKeeper/deleted/.del-innodb_row_lock_3.test:
  Delete: mysql-test/suite/row_lock/t/innodb_row_lock_3.test
BitKeeper/deleted/.del-innodb_row_lock_4.test:
  Delete: mysql-test/suite/row_lock/t/innodb_row_lock_4.test
BitKeeper/deleted/.del-innodb_row_lock_5.test:
  Delete: mysql-test/suite/row_lock/t/innodb_row_lock_5.test
BitKeeper/deleted/.del-innodb_row_lock_big_tab.test:
  Delete: mysql-test/suite/row_lock/t/innodb_row_lock_big_tab.test
BitKeeper/deleted/.del-innodb_row_lock_big_tab_1.test:
  Delete: mysql-test/suite/row_lock/t/innodb_row_lock_big_tab_1.test
BitKeeper/deleted/.del-innodb_row_lock_big_tab_2.test:
  Delete: mysql-test/suite/row_lock/t/innodb_row_lock_big_tab_2.test
BitKeeper/deleted/.del-innodb_row_lock_trig_1.test:
  Delete: mysql-test/suite/row_lock/t/innodb_row_lock_trig_1.test
BitKeeper/deleted/.del-innodb_row_lock_trig_2.test:
  Delete: mysql-test/suite/row_lock/t/innodb_row_lock_trig_2.test
BitKeeper/deleted/.del-innodb_row_lock_view_1.test:
  Delete: mysql-test/suite/row_lock/t/innodb_row_lock_view_1.test
BitKeeper/deleted/.del-innodb_row_lock_view_2.test:
  Delete: mysql-test/suite/row_lock/t/innodb_row_lock_view_2.test
BitKeeper/deleted/.del-innodb_row_lock_view_mix_1.test:
  Delete: mysql-test/suite/row_lock/t/innodb_row_lock_view_mix_1.test
BitKeeper/deleted/.del-ndb_row_lock_view_mix_1.result:
  Delete: mysql-test/suite/row_lock/r/ndb_row_lock_view_mix_1.result
BitKeeper/deleted/.del-ndb_row_lock_view_mix_2.result:
  Delete: mysql-test/suite/row_lock/r/ndb_row_lock_view_mix_2.result
BitKeeper/deleted/.del-ndb_row_lock_view_storedp_1.result:
  Delete: mysql-test/suite/row_lock/r/ndb_row_lock_view_storedp_1.result
BitKeeper/deleted/.del-ndb_row_lock_view_storedp_2.result:
  Delete: mysql-test/suite/row_lock/r/ndb_row_lock_view_storedp_2.result
BitKeeper/deleted/.del-ndb_row_lock_view_trig_1.result:
  Delete: mysql-test/suite/row_lock/r/ndb_row_lock_view_trig_1.result
BitKeeper/deleted/.del-ndb_row_lock_view_trig_2.result:
  Delete: mysql-test/suite/row_lock/r/ndb_row_lock_view_trig_2.result
BitKeeper/deleted/.del-innodb_row_lock_view_mix_2.test:
  Delete: mysql-test/suite/row_lock/t/innodb_row_lock_view_mix_2.test
BitKeeper/deleted/.del-innodb_row_lock_view_storedp_1.test:
  Delete: mysql-test/suite/row_lock/t/innodb_row_lock_view_storedp_1.test
BitKeeper/deleted/.del-innodb_row_lock_view_storedp_2.test:
  Delete: mysql-test/suite/row_lock/t/innodb_row_lock_view_storedp_2.test
BitKeeper/deleted/.del-innodb_row_lock_view_trig_1.test:
  Delete: mysql-test/suite/row_lock/t/innodb_row_lock_view_trig_1.test
BitKeeper/deleted/.del-innodb_row_lock_view_trig_2.test:
  Delete: mysql-test/suite/row_lock/t/innodb_row_lock_view_trig_2.test
BitKeeper/deleted/.del-ndb_row_lock_1.test:
  Delete: mysql-test/suite/row_lock/t/ndb_row_lock_1.test
BitKeeper/deleted/.del-ndb_row_lock_2.test:
  Delete: mysql-test/suite/row_lock/t/ndb_row_lock_2.test
BitKeeper/deleted/.del-ndb_row_lock_3.test:
  Delete: mysql-test/suite/row_lock/t/ndb_row_lock_3.test
BitKeeper/deleted/.del-ndb_row_lock_4.test:
  Delete: mysql-test/suite/row_lock/t/ndb_row_lock_4.test
BitKeeper/deleted/.del-ndb_row_lock_5.test:
  Delete: mysql-test/suite/row_lock/t/ndb_row_lock_5.test
BitKeeper/deleted/.del-ndb_row_lock_big_tab.test:
  Delete: mysql-test/suite/row_lock/t/ndb_row_lock_big_tab.test
BitKeeper/deleted/.del-ndb_row_lock_big_tab_1.test:
  Delete: mysql-test/suite/row_lock/t/ndb_row_lock_big_tab_1.test
BitKeeper/deleted/.del-ndb_row_lock_big_tab_2.test:
  Delete: mysql-test/suite/row_lock/t/ndb_row_lock_big_tab_2.test
BitKeeper/deleted/.del-ndb_row_lock_trig_1.test:
  Delete: mysql-test/suite/row_lock/t/ndb_row_lock_trig_1.test
BitKeeper/deleted/.del-ndb_row_lock_trig_2.test:
  Delete: mysql-test/suite/row_lock/t/ndb_row_lock_trig_2.test
BitKeeper/deleted/.del-ndb_row_lock_view_1.test:
  Delete: mysql-test/suite/row_lock/t/ndb_row_lock_view_1.test
BitKeeper/deleted/.del-ndb_row_lock_view_2.test:
  Delete: mysql-test/suite/row_lock/t/ndb_row_lock_view_2.test
BitKeeper/deleted/.del-ndb_row_lock_view_mix_1.test:
  Delete: mysql-test/suite/row_lock/t/ndb_row_lock_view_mix_1.test
BitKeeper/deleted/.del-ndb_row_lock_view_mix_2.test:
  Delete: mysql-test/suite/row_lock/t/ndb_row_lock_view_mix_2.test
BitKeeper/deleted/.del-ndb_row_lock_view_storedp_1.test:
  Delete: mysql-test/suite/row_lock/t/ndb_row_lock_view_storedp_1.test
BitKeeper/deleted/.del-ndb_row_lock_view_storedp_2.test:
  Delete: mysql-test/suite/row_lock/t/ndb_row_lock_view_storedp_2.test
BitKeeper/deleted/.del-ndb_row_lock_view_trig_1.test:
  Delete: mysql-test/suite/row_lock/t/ndb_row_lock_view_trig_1.test
BitKeeper/deleted/.del-ndb_row_lock_view_trig_2.test:
  Delete: mysql-test/suite/row_lock/t/ndb_row_lock_view_trig_2.test
Makefile.am:
  Remove the "row_lock" suite from the "test-bt" target.
  
  Also, a formatting change: empty line for better readability.
2007-07-26 17:25:03 +02:00
dd1d665a34 Merge xiphis.org:/anubis/antony/work/mysql-5.1-engines
into  xiphis.org:/anubis/antony/work/mysql-5.1-engines.merge
2007-07-26 07:57:50 -07:00
b7eca8bc16 Merge xiphis.org:/anubis/antony/work/mysql-5.0-engines
into  xiphis.org:/anubis/antony/work/mysql-5.0-engines.merge
2007-07-26 07:56:37 -07:00
36f16bf862 BUG#29809 (Slave SQL errors in warnings file):
Adding code to filter out slave SQL errors since these are checked by
the tests themselves.


mysql-test/lib/mtr_report.pl:
  Filtering out slave SQL errors since these are handled by the
  tests themselves.
mysql-test/suite/rpl/t/disabled.def:
  Enabling disabled tests.
mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result:
  Result change.
mysql-test/suite/rpl_ndb/t/disabled.def:
  Enabling disabled tests.
2007-07-26 16:44:57 +02:00
f2a91e55c8 Addendum to bug 29571: wait for INSERT DELAYED to finish on master 2007-07-26 16:59:21 +03:00
690f0df5a2 Merge debian.(none):/M50/mysql-5.0
into  debian.(none):/M50/push-5.0
2007-07-26 15:37:45 +02:00
58bfa0f841 Merge willster.(none):/home/stewart/Documents/MySQL/5.0/ndb-merge
into  willster.(none):/home/stewart/Documents/MySQL/5.1/ndb-merge


sql/ha_ndbcluster.cc:
  Auto merged
2007-07-26 20:26:06 +10:00
b50015f280 [PATCH] BUG#26793 test: mysqld crashes in NDB on I_S query
Reduce case and formalise into something we should be
able to use in mysql-test-run.

Index: ndb-work/mysql-test/t/ndb_bug26793.test
===================================================================


mysql-test/r/ndb_bug26793.result:
  BUG#26793 test: mysqld crashes in NDB on I_S query
mysql-test/t/ndb_bug26793.test:
  BUG#26793 test: mysqld crashes in NDB on I_S query
2007-07-26 20:24:54 +10:00
935ce76278 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B29571-5.0-opt


sql/sql_insert.cc:
  Auto merged
2007-07-26 11:32:27 +03:00
5babac539d Bug #29571: INSERT DELAYED IGNORE written to binary log on
the master but on the slave

MySQL can decide to "downgrade" a INSERT DELAYED statement
to normal insert in certain situations.
One such situation is when the slave is replaying a 
replication feed.
However INSERT DELAYED is logged even if there're no updates
whereas the NORMAL INSERT is not logged in such cases.

Fixed by always logging a "downgraded" INSERT DELAYED: even 
if there were no updates.


mysql-test/r/rpl_insert_delayed.result:
  Bug #29571: test case
mysql-test/t/rpl_insert_delayed.test:
  Bug #29571: test case
sql/sql_insert.cc:
  Bug #29571: log INSERT DELAYED even if it was 
  "downgraded" to INSERT (and there were no updates)
2007-07-26 11:31:10 +03:00
a4b9f7f7c4 Merge acurtis@bk-internal.mysql.com:/home/bk/mysql-5.1-engines
into  pcg5ppc.xiphis.org:/Users/antony/Work/p1-bug29522.1
2007-07-25 21:21:02 -07:00
217a35d64f Merge gleb.loc:/home/uchum/work/bk/5.1
into  gleb.loc:/home/uchum/work/bk/5.1-opt


mysql-test/r/sp.result:
  Auto merged
mysql-test/t/create.test:
  Auto merged
sql/field.cc:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_lex.cc:
  Auto merged
sql/sql_lex.h:
  Auto merged
sql/table.cc:
  Auto merged
mysql-test/r/create.result:
  Merge with 5.1 (main).
2007-07-26 05:13:32 +05:00
b37ca18ab9 Bug#29522
"log.cc:1448: failed assertion `mysql_bin_log.is_open() && rex_data->empty()'"
  When Federated's transaction support was disabled by bug29875,
  this assertion became unreproducable.


mysql-test/t/disabled.def:
  bug29522
    reenable federated_innodb test
2007-07-25 16:01:43 -07:00
2df3b7b0ea Merge gleb.loc:/home/uchum/work/bk/5.0
into  gleb.loc:/home/uchum/work/bk/5.0-opt


mysql-test/t/create.test:
  Auto merged
sql/field.cc:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/table.cc:
  Auto merged
mysql-test/r/create.result:
  Merge with 5.0 (main).
2007-07-26 03:33:43 +05:00
21b83ab756 Merge gleb.loc:/home/uchum/work/bk/5.0-opt
into  gleb.loc:/home/uchum/work/bk/5.1-opt


mysql-test/r/having.result:
  Auto merged
mysql-test/t/create.test:
  Auto merged
mysql-test/t/having.test:
  Auto merged
sql/field.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
mysql-test/include/mix1.inc:
  Merge with 5.0-opt.
mysql-test/r/create.result:
  Merge with 5.0-opt.
mysql-test/r/innodb_mysql.result:
  Merge with 5.0-opt.
mysql-test/r/type_enum.result:
  Merge with 5.0-opt.
mysql-test/t/type_enum.test:
  Merge with 5.0-opt.
sql/filesort.cc:
  Merge with 5.0-opt.
sql/sql_base.cc:
  Merge with 5.0-opt.
sql/table.cc:
  Merge with 5.0-opt.
storage/innobase/handler/ha_innodb.cc:
  Merge with 5.0-opt.
2007-07-26 01:23:39 +05:00
c6a0b22419 Merge xiphis.org:/anubis/antony/work/p2-bug25679.3
into  xiphis.org:/anubis/antony/work/p2-bug25679.3.merge-5.1


mysql-test/r/federated.result:
  Auto merged
mysql-test/t/federated.test:
  Auto merged
storage/federated/ha_federated.h:
  Auto merged
storage/federated/ha_federated.cc:
  manual merge 5.0 to 5.1
2007-07-25 12:29:44 -07:00
b42247bca8 Bug#25679
"Federated Denial of Service"
  Federated storage engine used to attempt to open connections within
  the ::create() and ::open() methods which are invoked while LOCK_open
  mutex is being held by mysqld. As a result, no other client sessions
  can open tables while Federated is attempting to open a connection.
  Long DNS lookup times would stall mysqld's operation and a rogue
  connection string which connects to a remote server which simply
  stalls during handshake can stall mysqld for a much longer period of
  time.
  This patch moves the opening of the connection much later, when the
  federated actually issues queries, by which time the LOCK_open mutex is
  no longer being held.


mysql-test/r/federated.result:
  change of test/results due to patch for bug25679
mysql-test/t/federated.test:
  change of test/results due to patch for bug25679
sql/ha_federated.cc:
  bug25679
    remove function check_foreign_fata_source()
    ha_federated::open() no longer opens the federated connection.
    ha_federated::create() no longer opens and tests connection.
    ha_federated::real_connect() opens connection and tests presence of table.
    ha_federated::real_query() sends query, calling real_connect() if neccessary.
sql/ha_federated.h:
  bug25679
    new methods real_query() and real_connect()
2007-07-25 12:23:24 -07:00
9cb234b2d5 Merge bk-internal.mysql.com:/data0/bk/mysql-5.1
into  bk-internal.mysql.com:/data0/bk/mysql-5.1-arch
2007-07-25 19:58:48 +02:00
2612fc43b5 Patch inspired by BUG#10491: Server returns data as charset
binary SHOW CREATE TABLE or SELECT FROM I_S.

The problem is that mysqldump generates incorrect dump for a table
with non-ASCII column name if the mysqldump's character set is
ASCII.

The fix is to:
  1. Switch character_set_client for the mysqldump's connection
  to binary before issuing SHOW CREATE TABLE statement in order
  to avoid conversion.
  
  2. Dump switch character_set_client statements to UTF8 and back
  for CREATE TABLE statement.


client/mysqldump.c:
  1. Switch character_set_client for the mysqldump's connection
  to binary before issuing SHOW CREATE TABLE statement in order
  to avoid conversion.
  
  2. Dump switch character_set_client statements to UTF8 and back
  for CREATE TABLE statement.
mysql-test/r/mysqldump-max.result:
  Update result file.
mysql-test/r/mysqldump.result:
  Update result file.
mysql-test/r/openssl_1.result:
  Update result file.
mysql-test/r/show_check.result:
  Update result file.
mysql-test/t/show_check.test:
  Test case:
    - create a table with non-ASCII column name;
    - dump the database by mysqldump using ASCII character set;
    - drop the database;
    - load the dump;
    - check that the table has been re-created properly.
2007-07-25 19:46:50 +04:00
34864af8fd Merge mysql.com:/home/svoj/devel/bk/mysql-5.1-engines
into  mysql.com:/home/svoj/devel/mysql/BUG29806/mysql-5.1-engines


sql/ha_ndbcluster.cc:
  Auto merged
sql/lock.cc:
  Auto merged
2007-07-25 19:58:18 +05:00
4537a0c9e9 BUG#29806 - binlog_innodb.test creates a server log
Stopping mysql server could result in an entry in mysql error
file: "InnoDB: Error: MySQL is freeing a thd".

This happened because InnoDB assumes that the server will never
call external_lock(F_UNLCK) in case external_lock(READ/WRITE)
failed.

Prior to this patch we haven't had strict definition whether
external_lock(F_UNLCK) must be called in case external_lock(READ/WRITE)
fails.

This patch states that we never call external_lock(F_UNLCK) in case
external_lock(READ/WRITE) fails.


mysql-test/suite/binlog/t/disabled.def:
  Re-enabled binlog_innodb and binlog_killed tests.
sql/ha_ndbcluster.cc:
  Restore handler state in case external_lock() failed.
sql/ha_partition.cc:
  Do not call external_lock(F_UNLCK) in case external_lock(READ/WRITE) failed.
sql/lock.cc:
  Do not call external_lock(F_UNLCK) in case external_lock(READ/WRITE) failed.
storage/myisammrg/myrg_locking.c:
  Restore handler state in case external_lock() failed.
2007-07-25 19:56:17 +05:00
ef9738fe92 Merge dl145h.mysql.com:/data0/mkindahl/mysql-5.1-main
into  dl145h.mysql.com:/data0/mkindahl/mysql-5.1-2team


include/my_bitmap.h:
  Auto merged
mysql-test/suite/binlog/r/binlog_multi_engine.result:
  Auto merged
mysql-test/suite/ndb/r/ndb_binlog_multi.result:
  Auto merged
mysql-test/suite/ndb/t/ndb_autodiscover3.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_binlog_basic.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_binlog_ddl_multi.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_binlog_discover.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_binlog_ignore_db.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_binlog_log_bin.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_binlog_multi.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_multi_row.test:
  Auto merged
mysql-test/suite/rpl/r/rpl_row_log.result:
  Auto merged
mysql-test/suite/rpl/r/rpl_row_log_innodb.result:
  Auto merged
mysql-test/suite/rpl/r/rpl_stm_log.result:
  Auto merged
mysql-test/suite/rpl/r/rpl_truncate_7ndb_2.result:
  Auto merged
mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_partitions.result:
  Auto merged
mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_UUID.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_bank.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_blob.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_blob2.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_simplex.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_advance.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_basic.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_partitions.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_ddl.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_delete_nowhere.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_do_db.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_do_table.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_extraCol.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_func003.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_idempotent.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_insert_ignore.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_multi.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_multi_update2.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_multi_update3.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_rep_ignore.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_row_001.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_sp003.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_sp006.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_sync.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_trig004.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndbapi_multi.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_row_basic_7ndb.test:
  Auto merged
sql/log_event.cc:
  Auto merged
mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result:
  Manual merge
mysql-test/t/disabled.def:
  Manual merge of main tree into replication tree
2007-07-25 15:40:43 +02:00
5e0e5e5e3b Temporary enable IM tests in 5.1-runtime tree.
Enable assert in Thread_registry.


mysql-test/t/disabled.def:
  Temporary enable IM tests in the team tree.
server-tools/instance-manager/thread_registry.cc:
  Uncomment assert.
2007-07-25 13:31:46 +04:00
3232f483a1 Merge adventure.(none):/home/thek/Development/cpp/bug28641/my51-bug28641
into  adventure.(none):/home/thek/Development/cpp/mysql-5.1-runtime


mysql-test/r/events_bugs.result:
  Auto merged
2007-07-25 09:47:03 +02:00
cfdd203549 Bug#28641 CREATE EVENT with '2038.01.18 03:00:00' let server crash.
Creating an EVENT to be executed at a time close to the end of the allowed
range (2038.01.19 03:14:07 UTC) would cause the server to crash. The
expected behavior is to accept all calendar times within the interval and
reject all other values without crashing.

This patch replaces the function 'sec_to_epoch_TIME' with a Time_zone API call.
This function was broken because it invoked the internal function 'sec_to_epoch'
without respecting the restrictions on the function parameters (and this caused
assertion failure). It also was used as a reverse function to
Time_zone_utc::gmt_sec_to_TIME which it isn't.


mysql-test/r/events_bugs.result:
  Added test case
mysql-test/t/events_bugs.test:
  Added test case
sql/event_data_objects.cc:
  Replaced function 'sec_since_epoch_TIME' since it was implemented as
  a wrapper around 'sec_since_epoch' without taking parameter restrictions
  into account. The function was used to load information about event
  execution time from mysql.events table. Further more, the function wasn't
  the inverse function of Time_zone_utc::gmt_sec_to_TIME() which was used
  by events code to store information about event execution time.
sql/event_db_repository.cc:
  Replaced my_tz_UTC object with my_tz_OFFSET0 object because the first one
  doesn't supply us with a bijective MYSQL_TIME<->my_time_t translation. Instead
  the function sec_since_epoch_TIME was used as a reverse function to the method
  my_tz_UTC::gmt_sec_to_TIME.
sql/event_queue.cc:
  Replaced my_tz_UTC object with my_tz_OFFSET0 object because the first one
  doesn't supply us with a bijective MYSQL_TIME<->my_time_t translation. Instead
  the function sec_since_epoch_TIME was used as a reverse function to the method
  my_tz_UTC::gmt_sec_to_TIME.
sql/tztime.cc:
  * Remove function 'sec_since_epoch_TIME' since it was implemented as
  a wrapper around 'sec_since_epoch' without taking parameter restrictions
  into account. The function was used to load information about event
  execution time from mysql.events table. Further more, the function wasn't
  the inverse function of Time_zone_utc::gmt_sec_to_TIME() which was used
  by events code to store information about event execution time.
  
  * Added static Time_zone object for UTC+0 time zone.
sql/tztime.h:
  Include extern pointer to static Time_zone object.
2007-07-25 09:43:49 +02:00
35438afb1d Merge kpettersson@bk-internal.mysql.com:/home/bk/mysql-5.1-runtime
into  adventure.(none):/home/thek/Development/cpp/mysql-5.1-runtime
2007-07-25 09:06:08 +02:00
206575ab63 Merge adventure.(none):/home/thek/Development/cpp/bug28012/my51-bug28012
into  adventure.(none):/home/thek/Development/cpp/mysql-5.1-runtime
2007-07-25 08:59:36 +02:00
78207030bb Updated/fixed test and result files to 5.0.46
Note datadict files do not include wrong is_updatable wrong value 
     as a result of bug 30020.


mysql-test/suite/funcs_1/datadict/datadict_master.inc:
  Updated test file
mysql-test/suite/funcs_1/r/innodb__datadict.result:
  Updated test file
mysql-test/suite/funcs_1/r/innodb_func_view.result:
  Updated test file
mysql-test/suite/funcs_1/r/innodb_trig_0102.result:
  Updated test file
mysql-test/suite/funcs_1/r/innodb_trig_08.result:
  Updated test file
mysql-test/suite/funcs_1/r/innodb_trig_09.result:
  Updated test file
mysql-test/suite/funcs_1/r/innodb_views.result:
  Updated test file
mysql-test/suite/funcs_1/r/memory__datadict.result:
  Updated test file
mysql-test/suite/funcs_1/r/memory_func_view.result:
  Updated test file
mysql-test/suite/funcs_1/r/memory_trig_0102.result:
  Updated test file
mysql-test/suite/funcs_1/r/memory_trig_08.result:
  Updated test file
mysql-test/suite/funcs_1/r/memory_trig_09.result:
  Updated test file
mysql-test/suite/funcs_1/r/memory_views.result:
  Updated test file
mysql-test/suite/funcs_1/r/myisam__datadict.result:
  Updated test file
mysql-test/suite/funcs_1/r/myisam_func_view.result:
  Updated test file
mysql-test/suite/funcs_1/r/myisam_trig_0102.result:
  Updated test file
mysql-test/suite/funcs_1/r/myisam_trig_08.result:
  Updated test file
mysql-test/suite/funcs_1/r/myisam_trig_09.result:
  Updated test file
mysql-test/suite/funcs_1/r/myisam_views.result:
  Updated test file
mysql-test/suite/funcs_1/triggers/triggers_0102.inc:
  Updated test file
mysql-test/suite/funcs_1/views/func_view.inc:
  Updated test file
2007-07-24 21:31:25 -07:00
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
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
8ed01f838e Merge bk-internal.mysql.com:/home/bk/mysql-5.1-runtime
into  bodhi.(none):/opt/local/work/mysql-5.1-runtime
2007-07-24 23:01:05 +04:00
2a7d20308f Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  bodhi.(none):/opt/local/work/mysql-5.1-runtime
2007-07-24 22:58:05 +04:00
607ab14cf7 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  bodhi.(none):/opt/local/work/mysql-5.0-runtime
2007-07-24 22:57:26 +04:00
c4d53e31b0 Bug#15130: CREATE .. SELECT was denied to use advantages of the SQL_BIG_RESULT.
When the SQL_BIG_RESULT flag is specified SELECT should store items from the
select list in the filesort data and use them when sending to a client.
The get_addon_fields function is responsible for creating necessary structures
for that. But this function was allowed to do so only for SELECT and
INSERT .. SELECT queries. This makes the SQL_BIG_RESULT useless for
the CREATE .. SELECT queries.

Now the get_addon_fields allows storing select list items in the filesort
data for the CREATE .. SELECT queries.


mysql-test/t/create.test:
  Added a test case for the bug#15130: CREATE .. SELECT was denied to use
  advantages of the SQL_BIG_RESULT.
mysql-test/r/create.result:
  Added a test case for the bug#15130: CREATE .. SELECT was denied to use
  advantages of the SQL_BIG_RESULT.
sql/filesort.cc:
  Bug#15130: CREATE .. SELECT was denied to use advantages of the SQL_BIG_RESULT.
  Now the get_addon_fields allows storing select list items in the filesort
  data for the CREATE .. SELECT queries.
2007-07-24 18:15:44 +04:00
e1b3b9317e Merge xiphis.org:/anubis/antony/work/p2-bug25714.1
into  xiphis.org:/anubis/antony/work/p2-bug25714.1.merge-5.1


mysql-test/mysql-test-run.pl:
  Auto merged
tests/Makefile.am:
  Auto merged
storage/federated/ha_federated.cc:
  manual merge from 5.0 to 5.1
2007-07-24 00:03:01 -07:00
594d71a449 Merge xiphis.org:/anubis/antony/work/p2-bug25714.1
into  xiphis.org:/anubis/antony/work/p2-bug25714.1.merge-5.0
2007-07-23 23:57:50 -07:00
0f85ae9f2c Bug#25714
"getGeneratedKeys() does not work with FEDERATED table"
  mysql_insert() expected the storage engine to update the row data
  during the write_row() operation with the value of the new auto-
  increment field. The field must be updated when only one row has
  been inserted as mysql_insert() would ignore the thd->last_insert.
  This patch implements HA_STATUS_AUTO support in ha_federated::info()
  and ensures that ha_federated::write_row() does update the row's
  auto-increment value.
  The test case was written in C as the protocol's 'id' value is
  accessible through libmysqlclient and not via SQL statements.
  mysql-test-run.pl was extended to enable running the test binary.


mysql-test/mysql-test-run.pl:
  bug25714
    implement support to run C test for bug25714
sql/ha_federated.cc:
  bug25714
    The storage engine instance property auto_increment_value was not
    being set.
    mysql_insert() requires that the storage engine updates the row with
    the auto-increment value, especially when only inserting one row.
    Implement support for ha_federated::info(HA_STATUS_AUTO)
tests/Makefile.am:
  bug25714
    build C test for bug
mysql-test/include/have_bug25714.inc:
  New BitKeeper file ``mysql-test/include/have_bug25714.inc''
mysql-test/r/federated_bug_25714.result:
  New BitKeeper file ``mysql-test/r/federated_bug_25714.result''
mysql-test/r/have_bug25714.require:
  New BitKeeper file ``mysql-test/r/have_bug25714.require''
mysql-test/t/federated_bug_25714.test:
  New BitKeeper file ``mysql-test/t/federated_bug_25714.test''
tests/bug25714.c:
  New BitKeeper file ``tests/bug25714.c''
2007-07-23 23:35:43 -07:00
20b9d9bb2f Bug#29993 (Default value of log_output should be 'FILE', not 'TABLE')
Changed the default location of the log output to LOG_FILE,
for backward compatibility with MySQL 5.0


mysql-test/r/log_state.result:
  Changed the default location of the log output to LOG_FILE,
  for backward compatibility with MySQL 5.0
sql/set_var.cc:
  Changed the default location of the log output to LOG_FILE,
  for backward compatibility with MySQL 5.0
2007-07-23 22:01:22 -06:00
c29002a5b6 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B29644-5.0-opt


sql/ha_innodb.cc:
  Auto merged
sql/sql_base.cc:
  Auto merged
mysql-test/r/innodb_mysql.result:
  5.0-opt merge
mysql-test/t/innodb_mysql.test:
  5.0-opt merge
2007-07-23 17:07:29 +03:00
4ffd997a8e Bug#28012 Patch : IM crashes instead of reporting an error when mysqldpath is bad
On the windows platform, if an instance object failed to initialize during
program start, the instance manager would crash.
This could happen if an incorrect mysqld path was supplied in the 
defaults configuration file.
The patch prevents the program from crashing and makes it show an
error message instead.


mysql-test/r/im_options.result:
  - Options have changed names.
server-tools/instance-manager/instance.cc:
  - Added code to verify that the instance object was initialized
    before any attempt is made to start the associated process.
  - Instance::complete_initialization method will now return TRUE
    on an error during instance initialization.
server-tools/instance-manager/instance_options.cc:
  - Parsed result byte sequence from executed process doesn't contain a new line
    character anymore.
server-tools/instance-manager/parse_output.cc:
  - 'popen' didn't behave as intended on the windows platform.
  - The function parse_output_and_get_value was completly rewritten to correct the
    error in the windows built and to be more easily maintained across platforms.
server-tools/instance-manager/parse_output.h:
  - 'popen' didn't behave as intended on the windows platform.
  - The function parse_output_and_get_value was completly rewritten to correct the
    error in the windows built and to be more easily maintained across platforms.
server-tools/instance-manager/portability.h:
  - Add more portability constants for convenience.
2007-07-23 15:05:50 +02:00