Commit graph

60159 commits

Author SHA1 Message Date
Alfranio Correia
a4c50983f4 BUG#45292 orphan binary log created when starting server twice
This patch fixes three bugs as follows. First, aborting the server while purging
binary logs might generate orphan files due to how the purge operation was
implemented:

          (purge routine - sql/log.cc - MYSQL_BIN_LOG::purge_logs)

      1 - register the files to be removed in a temporary buffer.
      2 - update the log-bin.index.
      3 - flush the log-bin.index.
      4 - erase the files whose names where register in the temporary buffer
      in step 1.

Thus a failure while  executing step 4 would generate an orphan file. Second,
a similar issue might happen while creating a new binary as follows:

          (create routine - sql/log.cc - MYSQL_BIN_LOG::open)

      1 - open the new log-bin.
      2 - update the log-bin.index.

Thus a failure while executing step 1 would generate an orphan file.

To fix these issues, we record the files to be purged or created before really
removing or adding them. So if a failure happens such records can be used to
automatically remove dangling files. The new steps might be outlined as follows:

          (purge routine - sql/log.cc - MYSQL_BIN_LOG::purge_logs)

      1 - register the files to be removed in the log-bin.~rec~ placed in
      the data directory.
      2 - update the log-bin.index.
      3 - flush the log-bin.index.
      4 - delete the log-bin.~rec~.

          (create routine - sql/log.cc - MYSQL_BIN_LOG::open)

      1 - register the file to be created in the log-bin.~rec~
      placed in the data directory.
      2 - open the new log-bin.
      3 - update the log-bin.index.
      4 - delete the log-bin.~rec~.

          (recovery routine - sql/log.cc - MYSQL_BIN_LOG::open_index_file)

      1 - open the log-bin.index.
      2 - open the log-bin.~rec~.
      3 - for each file in log-bin.~rec~.
        3.1 Check if the file is in the log-bin.index and if so ignore it.
        3.2 Otherwise, delete it.

The third issue can be described as follows. The purge operation was allowing
to remove a file in use thus leading to the loss of data and possible
inconsistencies between the master and slave. Roughly, the routine was only
taking into account the dump threads and so if a slave was not connect the
file might be delete even though it was in use.
2009-12-04 14:40:42 +00:00
Alexander Nozdrin
e1f798df29 Manual merge from mysql-5.1. 2009-12-04 16:26:03 +03:00
Alexander Nozdrin
9651888e0e Auto-merge from mysql-next-mr. 2009-12-04 15:39:09 +03:00
Alexey Kopytov
8b7ae8c67d Disable the test case innodb-autonic.test until BUG#49267 is fixed
Add the test to disabled list and remove from the experimental list.
2009-12-04 13:54:43 +03:00
Gleb Shchepa
9835801a85 manual merge mysql-5.1-bugteam --> mysql-trunk-merge 2009-12-04 14:20:18 +04:00
He Zhenxing
dae2b44427 Postfix after merge patch for Bug#49020
plugin/semisync/CMakeLists.txt:
  Add mysqlservices to link libraries
plugin/semisync/Makefile.am:
  Add mysqlservices to link libraries
2009-12-04 17:54:11 +08:00
He Zhenxing
e35e781680 Auto merge fixes for Bug#49020 2009-12-04 16:05:35 +08:00
He Zhenxing
5f71056f0e Auto merge postfix of Bug#49020 2009-12-04 13:46:06 +08:00
He Zhenxing
30d2870a9c Post fix for previous patch of Bug#49020
Added back n_frees, use 'clear' instead of 'free' since memory is
not freed here.


plugin/semisync/semisync_master.cc:
  Added back n_frees, use 'clear' instead of 'free' in the message since memory is not freed here.
2009-12-04 13:43:38 +08:00
He Zhenxing
f73b44d617 Auto Merge fix for Bug#49170 2009-12-04 10:05:43 +08:00
He Zhenxing
9e6430c54f Auto merge fix for Bug#49020 2009-12-04 10:04:14 +08:00
He Zhenxing
c926610d7c Bug#49020 Semi-sync master crashed with free_pool == NULL, assertion `free_pool_'
Before this patch, semisync assumed transactions running in parallel
can not be larger than max_connections, but this is not true when
the event scheduler is executing events, and cause semisync run out
of preallocated transaction nodes.

Fix the problem by allocating transaction nodes dynamically.

This patch also fixed a possible deadlock when running UNINSTALL
PLUGIN rpl_semi_sync_master and updating in parallel. Fixed by
releasing the internal Delegate lock before unlock the plugins.

mysql-test/suite/rpl/t/rpl_semi_sync_event.test:
  Add test case for bug#49020
plugin/semisync/semisync_master.cc:
  Allocating TranxNode dynamically
plugin/semisync/semisync_master.h:
  Allocating TranxNode dynamically
sql/rpl_handler.cc:
  Unlock plugins after we have released the Delegate lock to avoid possible deadlock when uninstalling semisync master plugin and doing update in parallel.
2009-12-04 09:46:33 +08:00
He Zhenxing
db1fee989d Bug#49170 Inconsistent placement of semisync plugin prevents it from getting tested
Add $basedir/lib/plugin to the search paths for semisync plugins.
2009-12-04 09:43:39 +08:00
Alexey Kopytov
aea0e20215 Null merge from mysql-5.1-bugteam to mysql-trunk-merge. 2009-12-03 23:49:30 +03:00
Alexey Kopytov
8317ffce10 Manual merge of mysql-5.1-bugteam to mysql-trunk-merge. 2009-12-03 23:46:06 +03:00
Gleb Shchepa
43d8e02f59 Bug #38883: thd_security_context is not thread safe, crashes?
After-push minor code cleanup for WL 2360: unnecessary external
reference to LOCK_thread_count has been removed from ha_innodb.cc.
2009-12-03 23:38:09 +04:00
unknown
699a87110d This is a patch for bug#41569.
"mysql_upgrade (ver 5.1) add 3 fields to mysql.proc table but does
not set values".
            
mysql_upgrade (ver 5.1) adds 3 fields (character_set_client, 
collation_connection and db_collation) to the mysql.proc table, but 
does not set any values. When we run stored procedures, which were 
created with mysql 5.0, a warning is logged into the error log.
            
The solution to this is for mysql_upgrade to set default best guess
values for these fields. A warning is also written during upgrade, to
make the user aware that default values are set.

client/mysql_upgrade.c:
  Result lines which start with "WARNING" are passed through to the output. 
  This way we have a way of triggering WARNING-messages during upgrade 
  directly from the .sql-script.
mysql-test/r/mysql_upgrade.result:
  Expected result of the test.
mysql-test/t/mysql_upgrade.test:
  Added a test-case for the bug.
scripts/mysql_system_tables_fix.sql:
  The new fields are populated, and warnings are written.
2009-12-03 17:15:47 +01:00
Alexey Kopytov
25d4cfad5b Automerge from mysql-5.1-bugteam to mysql-trunk-merge. 2009-12-03 18:18:29 +03:00
Evgeny Potemkin
2e8ad6bf64 Auto-merged. 2009-12-03 16:24:50 +03:00
Evgeny Potemkin
026541c662 Auto-merged. 2009-12-03 16:21:53 +03:00
Evgeny Potemkin
8fa282cc68 Bug#48508: Crash on prepared statement re-execution.
Test case cleanup.

mysql-test/r/ps.result:
  Test case cleanup for bug#48508.
mysql-test/t/ps.test:
  Test case cleanup for bug#48508.
2009-12-03 16:15:20 +03:00
Mattias Jonsson
e8bea38238 Bug#49369: No testcase for key caches on partitions
The original test case was lost when
merging WL#4571.

Added the testcase.


mysql-test/include/check_key_reads.inc:
  Bug#49369: No testcase for key caches on partitions
  
  New include file for testing key caches on partitions
  WL#4571
mysql-test/include/check_key_req.inc:
  Bug#49369: No testcase for key caches on partitions
  
  New include file for testing key caches on partitions
  WL#4571
mysql-test/r/partition_key_cache.result:
  Bug#49369: No testcase for key caches on partitions
  
  New test case for testing key caches on partitions
  WL#4571
mysql-test/t/partition_key_cache.test:
  Bug#49369: No testcase for key caches on partitions
  
  New test case for testing key caches on partitions
  WL#4571
2009-12-03 13:31:56 +01:00
Georgi Kodinov
9091535c5f Bug #48985: show create table crashes if previous access to the table was killed
When checking for an error after removing the special view error handler the code
was not taking into account that open_tables() may fail because of the current
statement being killed. 
Added a check for thd->killed.
Added a client program to test it.
2009-12-03 14:07:46 +02:00
Satya B
1295ec601c Disable main.innodb and innodb.innodb-index until BUG#49396 is fixed.
These tests are fails due to result mismatch only in embedded mode.
2009-12-03 17:33:24 +05:30
V Narayanan
a5aa3b3c91 Bug#40814 CSV engine does not parse \X characters when they occur in unquoted fields
When a .CSV file for table in the CSV engine contains
\X characters as part of unquoted fields, e.g.
    
2,naraya\nan
    
\n is not interpreted as a new line (it is however interpreted as a
newline in a quoted field).
    
The old algorithm copied the entire value for a unquoted field without
parsing the \X characters. 
    
The new algorithm adds the capability to handle \X characters in the 
unquoted fields of a .CSV file.

mysql-test/r/csv.result:
  Bug#40814 CSV engine does not parse \X characters when they occur in unquoted fields
  
  Contains additional test output corresponding to the new 
  tests added.
mysql-test/t/csv.test:
  Bug#40814 CSV engine does not parse \X characters when they occur in unquoted fields
  
  Contains additional tests for testing the behaviour of the CSV 
  storage engine when the fields are not enclosed in quotes and
  contain \X characters.
storage/csv/ha_tina.cc:
  Bug#40814 CSV engine does not parse \X characters when they occur in unquoted fields
  
  Changes the parsing logic of the rows in a CSV file, to parse
  \X characters that might be present in the unquoted fields.
2009-12-03 17:18:43 +05:30
V Narayanan
21aaf8dded WL#4454 change sql_insert.cc::last_uniq_key to match keys in any order
Introduce a flag that will enable the REPLACE
command to work correctly with an underlying
storage engine that does not report unique key
conflicts in the ascending order.

sql/handler.h:
  WL#4454 change sql_insert.cc::last_uniq_key to match keys in any order
  
  Adds the flag that will be set by a
  SE that does not report unique key
  conflicts in the ascending order.
sql/sql_insert.cc:
  WL#4454 change sql_insert.cc::last_uniq_key to match keys in any order
  
  modifies the function used for a last row
  replace optimization to check for the
  HA_DUPLICATE_KEY_NOT_IN_ORDER flag.
2009-12-03 16:48:02 +05:30
Konstantin Osipov
94f25504a3 Merge next-mr -> next-mr-runtime 2009-12-03 14:01:04 +03:00
V Narayanan
e86daf9bf2 WL#4448 Generalize the handlerton::fill_files_table call with handlerton::fill_is_table
The attached patch adds a method
handlerton::fill_is_table that can be used
instead of having to create specific
handlerton::fill_*_table methods.

sql/ha_ndbcluster.cc:
  WL#4448 Generalize the handlerton::fill_files_table call with handlerton::fill_is_table
  
  Implemented the method ndbcluster_fill_is_table
  that uses the supplied table id to switch to the
  appropriate fill_*_table method.
sql/handler.h:
  WL#4448 Generalize the handlerton::fill_files_table call with handlerton::fill_is_table
  
  Moved the enum_schema_table enumeration
  from table.h to here. 
  
  contains the declaration for the new method
  fill_is_tables.
sql/sql_show.cc:
  WL#4448 Generalize the handlerton::fill_files_table call with handlerton::fill_is_table
  
  calls the fill_is_table method instead of the
  fill_files_table method.
sql/table.h:
  WL#4448 Generalize the handlerton::fill_files_table call with handlerton::fill_is_table
  
  removed the earlier definition of enum_schema_tables.
2009-12-03 16:16:49 +05:30
Marc Alff
560e76c567 Merge mysql-next-mr (revno 2937) --> mysql-next-mr-marc 2009-12-03 02:57:30 -07:00
Alexander Barkov
7622134333 Bug#44131 Binary-mode "order by" returns records in incorrect order for UTF-8 strings
Problem: Item_char_typecast reported wrong max_length when
casting to BINARY, which lead, in particular, in wrong
"ORDER BY BINARY(char_column)" results.

Fix: making Item_char_typecast report correct max_length.

  @ mysql-test/r/ctype_utf16.result
    Fixing old incorrect test result.
  @ mysql-test/r/ctype_utf32.result
    Fixing old incorrect test result.
  @ mysql-test/r/ctype_utf8.result
    Adding new test
  @ mysql-test/t/ctype_utf8.test
    Adding new test
  @ sql/item_timefunc.cc
    Making Item_char_typecast report correct max_length
    when cast is done to BINARY.
2009-12-03 13:22:34 +04:00
Alexander Nozdrin
87bd812fc8 Auto-merge from mysql-next-mr. 2009-12-03 12:20:54 +03:00
unknown
ac647f5a3e WL#5142 FLUSH LOGS should take optional arguments for which log(s) to flush
Support for flushing individual logs, so that the user can
selectively flush a subset of the server logs.

Flush of individual logs is done according to the 
following syntax:

  FLUSH <log_category> LOGS;

The syntax is extended so that the user is able to flush a
subset of logs:

  FLUSH [log_category LOGS,];

where log_category is one of:
  SLOW
  ERROR
  BINARY
  ENGINE
  GENERAL
  RELAY.


mysql-test/suite/rpl/r/rpl_flush_logs.result:
  Test result for WL#5142.
mysql-test/suite/rpl/t/rpl_flush_logs.test:
  Added the test file to verify if the 'flush individual log' 
  statement works fine.
sql/log.cc:
  Added the two functions to flush slow and general log.
sql/sql_parse.cc:
  Added code to flush specified logs against the option.
sql/sql_yacc.yy:
  Added code to parse the 'flush * log' statement syntax and 
  set its option to Lex->type.
2009-12-03 16:59:58 +08:00
Marc Alff
203d9f1eab Merge mysql-next-mr (revno 2927) --> mysql-next-mr-marc 2009-12-02 11:36:20 -07:00
unknown
755e84f683 Raise version number after cloning 5.1.42 2009-12-02 18:52:19 +01:00
Alexander Nozdrin
20b95d0831 Auto-merge from mysql-next-mr. 2009-12-02 19:00:26 +03:00
Alexander Nozdrin
69877233a8 Fix merge mistake. 2009-12-02 18:59:00 +03:00
Alexander Nozdrin
988b25cee1 Manual merge from mysql-next-mr.
Conflicts:
  - sql/sql_yacc.yy
2009-12-02 18:50:14 +03:00
Satya B
c6c12db965 Merge Innodb Plugin 1.0.6 from mysql-5.1-bugteam storage/innodb_plugin to mysql-trunk-merge.
Merging revisions 3221 to 3230 from mysql-5.1-bugteam
2009-12-02 19:30:50 +05:30
Evgeny Potemkin
1eda9dc777 Auto-merged. 2009-12-02 16:49:21 +03:00
Evgeny Potemkin
d969cbc578 Auto-merged fix for the bug#48508. 2009-12-02 16:47:12 +03:00
Andrei Elkin
23438dacf0 merging 5.1->rep+2->rep+3 2009-12-02 14:17:07 +02:00
Satya B
37360afb21 NULL Merging Innodb Snapshot 5.1-ss6242 to mysql-trunk-merge
THese are revisions for inbuilt Innodb in 5.1.
From revno 3212 to 3220 in mysql-5.1-bugteam
2009-12-02 17:16:49 +05:30
Alexander Barkov
d7abca9ac3 Bug#48766 SHOW CREATE FUNCTION returns extra data in return clause
Problem: SHOW CREATE FUNCTION and SELECT DTD_IDENTIFIER FROM I_S.ROUTINES
returned wrong values in case of ENUM return data type and UCS2
character set.

Fix: the string to collect returned data type was incorrectly set to
"binary" character set, therefore UCS2 values where returned with
extra '\0' characters.
Setting string character set to creation_ctx->get_client_cs()
in sp_find_routine(), and to system_charset_info in sp_create_routine
fixes the problem.

Adding tests:
- the original test with Latin letters
- an extra test with non-Latin letters
2009-12-02 15:17:08 +04:00
Tor Didriksen
e22de3a3f2 Bug #49130 Running mtr tests with valgrind and debug produces lots of warnings
Use safe output formats for strings that are not null terminated.


sql/item_func.cc:
  Use "%*.s" rather than "%s" format.
sql/protocol.cc:
  Use "%*.s" rather than "%s" format.
sql/sql_test.cc:
  Improve output from print_where()
   - output (nil) predicate if predicate is null
   - also output pointer value, for tracing of assignment and copying of predicates
sql/sql_view.cc:
  Use "%*.s" rather than "%s" format.
2009-12-02 11:00:44 +01:00
Satya B
d24b879474 Disable the test case innodb-autonic.test until BUG#49267 is fixed
Add the test to disabled list and remove from the experimental list.
2009-12-02 15:17:49 +05:30
Georgi Kodinov
0997e78d34 merge 2009-12-02 10:00:33 +02:00
Georgi Kodinov
61b5d08f20 tree name change to -main 2009-12-02 09:58:30 +02:00
Mikael Ronstrom
055030457e BUG#49180, fixed MAXVALUE problem 2009-12-02 08:14:22 +01:00
Evgeny Potemkin
987e146604 Bug#33546: Slowdown on re-evaluation of constant expressions.
Constant expressions in WHERE/HAVING/ON clauses aren't cached and evaluated
for each row. This causes slowdown of query execution especially if constant
UDF/SP function are used.
      
Now WHERE/HAVING/ON expressions are analyzed in the top-bottom direction with
help of the compile function. When analyzer meets a constant item it
sets a flag for the tree transformer to cache the item and doesn't allow tree
walker to go deeper. Thus, the topmost item of a constant expression if
cached. This is done after all other optimizations were applied to
WHERE/HAVING/ON expressions
      
A helper function called cache_const_exprs is added to the JOIN class.
It calls compile method with caching analyzer and transformer on WHERE,
HAVING, ON expressions if they're present.
The cache_const_expr_analyzer and cache_const_expr_transformer functions are
added to the Item class. The first one check if the item can be cached and
the second caches it if so.
A new Item_cache_datetime class is derived from the Item_cache class.
It caches both int and string values of the underlying item independently to
avoid DATETIME aware int-to-string conversion. Thus it completely relies on
the ability of the underlying item to correctly convert DATETIME value from
int to string and vice versa.


mysql-test/r/func_like.result:
  A test case result is corrected after fixing bug#33546.
mysql-test/r/func_time.result:
  A test case result is corrected after fixing bug#33546.
mysql-test/r/select.result:
  Added a test case for the bug#33546.
mysql-test/r/subselect.result:
  A test case result is corrected after fixing bug#33546.
mysql-test/r/udf.result:
  Added a test case for the bug#33546.
mysql-test/t/select.test:
  Added a test case for the bug#33546.
mysql-test/t/udf.test:
  Added a test case for the bug#33546.
sql/item.cc:
  Bug#33546: Slowdown on re-evaluation of constant expressions.
  The cache_const_expr_analyzer and cache_const_expr_transformer functions are
  added to the Item class. The first one check if the item can be cached and
  the second caches it if so.
  Item_cache_datetime class implementation is added.
sql/item.h:
  Bug#33546: Slowdown on re-evaluation of constant expressions.
  Item_ref and Item_cache classes now returns basic_const_item
  from underlying item.
  The cache_const_expr_analyzer and cache_const_expr_transformer functions are
  added to the Item class.
sql/sql_select.cc:
  Bug#33546: Slowdown on re-evaluation of constant expressions.
          
  A helper function called cache_const_exprs is added to the JOIN class.
  It calls compile method with caching analyzer and transformer on WHERE,
  HAVING, ON expressions if they're present.
sql/sql_select.h:
  Bug#33546: Slowdown on re-evaluation of constant expressions.
  A helper function called cache_const_exprs is added to the JOIN class.
2009-12-02 00:25:51 +03:00
Evgeny Potemkin
9e5d1bb664 Auto-merged fix for the bug#34384. 2009-12-01 22:41:39 +03:00