Commit graph

26503 commits

Author SHA1 Message Date
Ramil Kalimullin
ed8aa284ba Automerge. 2010-08-30 12:08:28 +04:00
Ramil Kalimullin
6a113b215a Fix for bug #51875: crash when loading data into geometry function polyfromwkb
Check for number of line strings in the incoming polygon data (wkb) and
for number of points in the incoming linestring wkb.



mysql-test/r/gis.result:
  Fix for bug #51875: crash when loading data into geometry function polyfromwkb
    - test result.
mysql-test/t/gis.test:
  Fix for bug #51875: crash when loading data into geometry function polyfromwkb
    - test case.
sql/spatial.cc:
  Fix for bug #51875: crash when loading data into geometry function polyfromwkb
    - creating a polygon from wkb check for number of line strings,
    - creating a linestring from wkb check for number of line points.
2010-08-30 11:51:46 +04:00
Alexey Kopytov
c1bd124c68 Automerge. 2010-08-30 11:19:09 +04:00
Vasil Dimov
3bc7c50813 Merge mysql-5.1-innodb -> mysql-5.1-bugteam 2010-08-28 00:58:46 +03:00
Alexey Kopytov
d7d0f6390b Bug #54465: assert: field_types == 0 || field_types[field_pos]
== MYSQL_TYPE_LONGLONG

A MIN/MAX() function with a subquery as its argument could lead
to a debug assertion on debug builds or wrong data on release
ones.

The problem was a combination of the following factors:

- Item_sum_hybrid::fix_fields() might use the argument
(args[0]) to calculate 'hybrid_field_type' which was later used
to decide how the data should be sent to the client.

- Item_sum::make_field() might use the argument again to
calculate the field's type when sending result set metadata to
the client.

- The argument could be changed in between these two calls via
  Item::set_arg() leading to inconsistent metadata being
  reported.

Here is what was happening for the bug's test case:

1. Item_sum_hybrid::fix_fields() calculates hybrid_field_type
as MYSQL_TYPE_LONGLONG based on args[0] which is an
Item::SUBSELECT_ITEM at that time.

2. A temporary table is created to execute the
query. create_tmp_field_from_item() creates a Field_long object
according to the subselect's max_length.

3. The subselect item in Item_sum_hybrid is replaced by the
Item_field object referencing the newly created Field_long.

4. Item_sum::make_field() rightfully returns the
MYSQL_TYPE_LONG type when calculating the result set metadata.

5. When sending the actual data, Item::send() relies on the
virtual field_type() function which in our case returns
previously calculated hybrid_field_type == MYSQL_TYPE_LONGLONG.

It looks like the only solution is to never refer to the
argument's metadata after the result metadata has been
calculated in fix_fields(), since the argument itself may be
different by then. In this sense, Item_sum::make_field() should
never be used, because it may rely on the argument's metadata
and is only called after fix_fields(). The "default"
implementation in Item::make_field() should be used instead as
it relies only on field_type(), but not on the argument's type.

Fixed by removing Item_sum::make_field() so that the superclass
implementation Item::make_field() is always used.

mysql-test/r/func_group.result:
  Added a test case for bug #54465.
mysql-test/t/func_group.test:
  Added a test case for bug #54465.
sql/item_sum.cc:
  Removed Item_sum::make_field() so that the superclass
  implementation Item::make_field() is always used.
sql/item_sum.h:
  Removed Item_sum::make_field() so that the superclass
  implementation Item::make_field() is always used.
2010-08-27 13:44:35 +04:00
Alexey Kopytov
27d5b6e57f Automerge. 2010-08-26 16:36:48 +04:00
Sergey Vojtovich
d1fb4ba299 Fixed race condition in a test case for BUG#55580. 2010-08-26 15:23:44 +04:00
Evgeny Potemkin
b4dc600af9 Bug #55656: mysqldump can be slower after bug 39653 fix.
After fix for bug 39653 the shortest available secondary index was used for
full table scan. Primary clustered key was used only if no secondary index
can be used. However, when chosen secondary index includes all fields of the
table being scanned it's better to use primary index since the amount of
data to scan is the same but the primary index is clustered.
Now the find_shortest_key function takes this into account.


mysql-test/suite/innodb/r/innodb_mysql.result:
  Added a test case for the bug#55656.
mysql-test/suite/innodb/t/innodb_mysql.test:
  Added a test case for the bug#55656.
sql/sql_select.cc:
  Bug #55656: mysqldump can be slower after bug #39653 fix.
  The find_shortest_key function now prefers clustered primary key
  if found secondary key includes all fields of the table.
2010-08-26 13:31:04 +04:00
Alexey Kopytov
e7b2688271 Bug #54802: 'NOT BETWEEN' evaluation is incorrect
Queries involving predicates of the form "const NOT BETWEEN
not_indexed_column AND indexed_column" could return wrong data
due to incorrect handling by the range optimizer.

For "c NOT BETWEEN f1 AND f2" predicates, get_mm_tree()
produces a disjunction of the SEL_ARG trees for "f1 > c" and
"f2 < c". If one of the trees is empty (i.e. one of the
arguments is not sargable) the resulting tree should be empty
as well, since the whole expression in this case is not
sargable.

The above logic is implemented in get_mm_tree() as follows. The
initial state of the resulting tree is NULL (aka empty). We
then iterate through arguments and compute the corresponding
SEL_ARG tree (either "f1 > c" or "f2 < c"). If the resulting
tree is NULL, it is simply replaced by the generated
tree. Otherwise it is replaced by a disjunction of itself and
the generated tree. The obvious flaw in this implementation is
that if the first argument is not sargable and thus produces a
NULL tree, the resulting tree will simply be replaced by the
tree for the second argument. As a result, "c NOT BETWEEN f1
AND f2" will end up as just "f2 < c".

Fixed by adding a check so that when the first argument
produces an empty tree for the NOT BETWEEN case, the loop is
aborted with an empty tree as a result. The whole idea of using
a loop for 2 arguments does not make much sense, but it was
probably used to avoid code duplication for several BETWEEN
variants.
2010-08-24 19:51:32 +04:00
Sergei Golubchik
ced635391e allow suite.pm to tell mtr to skip the suite 2010-08-24 14:33:34 +02:00
Alexey Kopytov
0012d0d884 Automerge. 2010-08-24 14:44:15 +04:00
Alexey Kopytov
cd4ca4b7a3 Bug #55568: user variable assignments crash server when used
within query

The server could crash after materializing a derived table
which requires a temporary table for grouping.

When destroying the temporary table used to execute a query for
a derived table, JOIN::destroy() did not clean up Item_fields
pointing to fields in the temporary table. This led to
dereferencing a dangling pointer when printing out the items
tree later in the outer SELECT.

The solution is an addendum to the patch for bug37362: in
addition to cleaning up items in tmp_all_fields3, do the same
for items in tmp_all_fields1, since now we have an example
where this is necessary.


mysql-test/r/join.result:
  Added test cases for bug#55568 and a duplicate bug #54468.
mysql-test/t/join.test:
  Added test cases for bug#55568 and a duplicate bug #54468.
sql/field.cc:
  Make sure field->table_name is not set to NULL in
  Field::make_field() to avoid assertion failure in 
  Item_field::make_field() after cleaning up items
  (the assertion fired in udf.test when running
  the test suite with the patch applied).
sql/sql_select.cc:
  In addition to cleaning up items in tmp_all_fields3, do the
  same for items in tmp_all_fields1.
  Introduce a new helper function to avoid code duplication.
sql/sql_select.h:
  Introduce a new helper function to avoid code duplication in
  JOIN::destroy().
2010-08-24 14:35:48 +04:00
Michael Widenius
b6fe4713fe Fix for LP#612894 Some aggregate functions (such as MIN MAX) work incorrectly in subqueries after getting NULL value
mysql-test/r/group_by.result:
  Added test that showed problems that no_rows_in_results() didn't work for expressions
mysql-test/r/subselect4.result:
  Test case for LP#612894
mysql-test/t/group_by.test:
  Added test that showed problems that no_rows_in_results() didn't work for expressions
mysql-test/t/subselect4.test:
  Test case for LP#612894
sql/item.h:
  Added restore_to_before_no_rows_in_result()
  Added function processor for no_rows_in_results() and restore_to_before_no_rows_in_results() to ensure it works with functions
  Fix that above functions are handled by Item_ref()
sql/item_func.h:
  Ensure that no_rows_in_results() and restore_to_before_no_rows_in_result() are called for all function arguments
sql/item_sum.cc:
  Added restore_to_before_no_rows_in_result() to restore settings after Item_sum_hybrid::no_rows_in_result() was called.
  This is needed to handle the case where we have made 'make_const()' on the item in opt_sum(), but the item will be reused again in a sub query.
  Ignore multiple calls to no_rows_in_result() as Item_ref is calling it twice.
sql/item_sum.h:
  Added restore_to_before_no_rows_in_result();
sql/sql_select.cc:
  Added reset of no_rows_in_result() for JOIN::reinit()
sql/sql_select.h:
  Added marker if no_rows_in_result() is called.
2010-08-23 12:46:25 +03:00
Mattias Jonsson
bc05efd8aa post push test fix 2010-08-20 21:17:51 +02:00
Georgi Kodinov
80e006cc53 merge 2010-08-20 15:08:01 +03:00
Georgi Kodinov
7d3a9b4cf6 merge 2010-08-20 12:09:17 +03:00
Georgi Kodinov
6bea77aefe Bug #55826: create table .. select crashes with when
KILL_BAD_DATA is returned

Two problems discovered with the LEAST()/GREATEST() 
functions:
1. The check for a null value should happen even 
after the second call to val_str() in the args. This is
important because two subsequent calls to the same
Item::val_str() may yield different results.
Fixed by checking for NULL value before dereferencing
the string result.

2. While looping over the arguments and evaluating them 
the loop should stop if there was an error evaluating so far
or the statement was killed. Fixed by checking for error
and bailing out.
2010-08-20 11:52:16 +03:00
Mattias Jonsson
dd9329761a merge 2010-08-19 09:20:17 +02:00
Michael Widenius
909e4eb08d Added verbose mode to recovery
More DBUG
Added convert-debug-for-diff
Added missing (from last push) federated test case

.bzrignore:
  Ignore generated files
mysql-test/README:
  Updated documentation for --extern
mysql-test/suite/federated/federated_bug_32426.result:
  Added test for federatedx
mysql-test/suite/federated/federated_bug_32426.test:
  Added test for federatedx
scripts/Makefile.am:
  Added convert-debug-for-diff
scripts/convert-debug-for-diff.sh:
  Added script for converting
sql/log.cc:
  Added DBUG
sql/mysqld.cc:
  Added DBUG
storage/maria/ma_recovery.c:
  If verbose, write dirty pages (for debugging)
storage/maria/ma_static.c:
  Added verbose mode to recovery
storage/maria/maria_def.h:
  Added verbose mode to recovery
storage/maria/maria_read_log.c:
  Added verbose mode to recovery
2010-08-18 10:52:57 +03:00
unknown
9d6811502e WL#5370 Keep forward-compatibility when changing
'CREATE TABLE IF NOT EXISTS ... SELECT' behaviour
BUG#55474, BUG#55499, BUG#55598, BUG#55616 and BUG#55777 are fixed
in this patch too.

This is the 5.1 part.
It implements:
- if the table exists, binlog two events: CREATE TABLE IF NOT EXISTS
  and INSERT ... SELECT

- Insert nothing and binlog nothing on master if the existing object
  is a view. It only generates a warning that table already exists.


mysql-test/r/trigger.result:
  Ather this patch, 'CREATE TABLE IF NOT EXISTS ... SELECT' will not
  insert anything if the creating table already exists and is a view.
sql/sql_class.h:
  Declare virtual function write_to_binlog() for select_insert.
  It's used to binlog 'create select'
sql/sql_insert.cc:
  Implement write_to_binlog();
  Use write_to_binlog() instead of binlog_query() to binlog the statement.
  if the table exists, binlog two events: CREATE TABLE IF NOT EXISTS
  and INSERT ... SELECT
sql/sql_lex.h:
  Declare create_select_start_with_brace and create_select_pos.
  They are helpful for binlogging 'create select'
sql/sql_parse.cc:
  Do nothing on master if the existing object is a view.
sql/sql_yacc.yy:
  Record the relative postion of 'SELECT' in the 'CREATE ...SELECT' statement.
  Record whether there is a '(' before the 'SELECT' clause.
2010-08-18 12:56:06 +08:00
Vasil Dimov
61f842444c Disable all innodb_plugin tests on Solaris until the problem is resolved.
Track this via:
Bug#56063 InnoDB Plugin mysql-tests fail on Solaris
2010-08-17 22:37:18 +03:00
Sergei Golubchik
8da7be6302 generalization of mtr to support suite.pm extensions:
* no automatic --loose-skip-innodb added by mtr based on the test name.
  instead loose-skip-innodb is now in the default_mysqld.cnf
* have_innodb_plugin.inc is changed to give a verbose "skip" message
  (instead of "require: true")
* My::Suite class. It's support in mtr, and everywhere
* support for suite.pm
* when sorting tests, take combinations into account
* support for SUITENAME_COMBINATIONS
* no special treatment for innodb_plugin in mtr_cases.pm
* two special pre-created config groups: ENV and OPT
* allow option names to start from #
* allow magic option to have an argument
* remove dead code
* fix @-substitution to works as expected
* new processes take the value of $opt_verbose automatically, no need to pass it to a constructor
* innodb_plugin suite uses suite.pm and combinations file to test as much as possible
  (innodb plugin, xtradb plugin, xtradb static - whatever available)
* besides test-master.opt and test-slave.opt a test.opt file is also
  loaded, both for master and slave
* .opt files for all included files are loaded too
* progress report in the xterm titlebar
2010-08-17 11:14:46 +04:00
Georgi Kodinov
0b7c5f4dcc Bug #53296: LONG BLOB value types are not recognized
Fixed the length of system variables to be 2^24 - 1 
as it is documented for MEDIUMBLOB instead of 
2^24.
2010-08-16 16:43:21 +03:00
Sunny Bains
9ab59902a9 Add test to the plugin branch from fix for bug# 55277. 2010-08-16 10:12:22 +10:00
Georgi Kodinov
4bf81165e4 Bug #55615 and bug #55564
An user assignment variable expression that's 
evaluated in a logical expression context 
(Item::val_bool()) can be pre-calculated in a 
temporary table for GROUP BY.
However when the expression value is used after the
temp table creation it was re-evaluated instead of
being read from the temp table due to a missing 
val_bool_result() method.
Fixed by implementing the method.
2010-08-13 14:18:46 +03:00
Georgi Kodinov
790852c0c9 Bug #55580 : segfault in read_view_sees_trx_id
The server was not checking for errors generated during
the execution of Item::val_xxx() methods when copying
data to the group, order, or distinct temp table's row.
Fixed by extending the copy_funcs() to return an error
code and by checking for that error code on the places
copy_funcs() is called. 
Test case added.
2010-08-13 11:07:39 +03:00
Georgi Kodinov
8b25c0e4dc Bug #55565: debug assertion when ordering by expressions with user
variable assignments

The assert() that is firing is checking if expressions that can't be
null return a NULL when evaluated.
MAKEDATE() function can return NULL if the second argument is 
less then or equal to 0. Thus its nullability depends not only on 
the nullability of its arguments but also on their values.
Fixed by (overoptimistically) setting MAKEDATE() to be nullable 
despite the nullability of its arguments.
Test added.
Had to update one test result to reflect the metadata change.
2010-08-13 16:05:46 +03:00
Michael Widenius
ae6c5d0de3 Fix for LP#571200 MySQL Bug#32426: FederatedX corrupt ORDER BY with TEXT
Patch taken from lp:~capttofu/maria/bug_571200 (originally for MariaDB 5.3, but adapted for 5.1)
2010-08-12 20:52:52 +03:00
Alexey Botchkov
6d14cae604 Bug#55146 Assertion `m_part_spec.start_part == m_part_spec.end_part' in index_read_idx_map
As we check for the impossible partitions earlier, it's possible that we don't find any
              suitable partitions at all. So this assertion just has to be corrected for this case.
      
per-file comments:
mysql-test/r/partition_innodb.result
Bug#55146      Assertion `m_part_spec.start_part == m_part_spec.end_part' in index_read_idx_map
        test result updated.

mysql-test/t/partition_innodb.test
Bug#55146      Assertion `m_part_spec.start_part == m_part_spec.end_part' in index_read_idx_map
        test case added.

sql/ha_partition.cc
Bug#55146      Assertion `m_part_spec.start_part == m_part_spec.end_part' in index_read_idx_map
        Assertion changed to '>=' as the  prune_partition_set() in the get_partition_set() can
        do start_part= end_part+1 if no possible partitions were found.
2010-08-12 15:59:02 +05:00
Michael Widenius
2d7b9ac75c Disable events_time_zone.test as test is not predictable 2010-08-12 00:33:15 +03:00
Martin Hansson
41cfa3e769 Bug#54444: Do not run main.range test for products without partitioning
feature

The test for bug no 50939 was put in range.test which isn't such a good idea
since it requires partitioning. Fixed by moving the test case to
partitioning_range.test.
2010-08-11 14:13:59 +02:00
Michael Widenius
236478cef7 Fixed compiler warnings from Windows compiler
client/mysqlcheck.c:
  Added missing casts
client/mysqldump.c:
  Added missing casts
client/mysqlimport.c:
  Added missing casts
extra/my_print_defaults.c:
  Added missing casts
mysql-test/mysql-test-run.pl:
  Added suppression for non-critical warning on windows
storage/maria/maria_pack.c:
  Added missing casts
storage/xtradb/buf/buf0lru.c:
  Added missing casts
storage/xtradb/fil/fil0fil.c:
  Added missing casts
storage/xtradb/handler/i_s.cc:
  Added extra argument to call store() function for longlong.
storage/xtradb/srv/srv0srv.c:
  Added cast to suppress compiler warning
support-files/compiler_warnings.supp:
  Added suppression for some non critical compiler warnings on Windows
unittest/mytap/tap.h:
  Fixed prototypes to be same as the actual functions
2010-08-11 13:55:54 +03:00
Michael Widenius
e6cf286b5d Fixed LP#605798 RQG: Table corruption after Maria engine recovery - "Wrong data in bitmap"
maria_chk & maria_read_log now reads block size from control file.



mysql-test/suite/maria/r/maria.result:
  Updated results after trivial change of maria_chk's output
storage/maria/ma_bitmap.c:
  More DBUG_PRINT
storage/maria/ma_blockrec.c:
  Fixed bug that we didn't mark page full in bitmap if directory is full
storage/maria/ma_check.c:
  Write out if directory is full for errors in bitmap
storage/maria/ma_control_file.c:
  Don't give error for wrong block size if block size is 0
storage/maria/maria_chk.c:
  Read block size from control file
  In case of -dvv, write also out bitmap information (good for debugging)
storage/maria/maria_read_log.c:
  Read block size from control file
  Fixed that maria_read_log works with different page size than TRANSLOG_PAGE_SIZE
2010-08-11 00:58:08 +03:00
Michael Widenius
0f75abc459 Fixed typo that caused compile failure on Mac
Added straight_join to make results predicatable

mysql-test/suite/pbxt/r/range.result:
  Added straight_join to make results predicatable
mysql-test/suite/pbxt/t/range.test:
  Added straight_join to make results predicatable
mysys/my_sync.c:
  Fixed typo
2010-08-10 19:06:34 +03:00
Sergei Golubchik
5cde0ca744 created *-all build scripts that build with ndb
(as -max scripts don't)
2010-08-10 18:36:04 +04:00
Bjorn Munch
788b4e404b Bug #55413 mysqltest gives parse error for lines matching "^let.*\\.*;$"
Allow escaped quotes also in statements not starting with --
But will not support single unescaped ' or `
2010-08-10 12:13:58 +02:00
Mattias Jonsson
b409fad8cc Bug#55458: Partitioned MyISAM table gets crashed by multi-table update
Problem was that the handler call ::extra(HA_EXTRA_CACHE) was cached
but the ::extra(HA_EXTRA_PREPARE_FOR_UPDATE) was not.

Solution was to also cache the other call and forward it when moving
to a new partition to scan.

mysql-test/r/partition.result:
  test result
mysql-test/t/partition.test:
  New test from bug report.
sql/ha_partition.cc:
  cache the HA_EXTRA_PREPARE_FOR_UPDATE just like HA_EXTRA_CACHE.
sql/ha_partition.h:
  Added cache flag for HA_EXTRA_PREPARE_FOR_UPDATE
2010-08-10 10:43:12 +02:00
Michael Widenius
12648015b3 Added --sync-sys=0 option for mysqld to skip sync() calls for faster testing
Fixed LP#613418 (M)aria recovery failure: ma_key_recover.c:981: _ma_apply_redo_index: Assertion `check_page_length == page_length' failed

include/my_sys.h:
  Added my_disable_sync
mysql-test/mysql-test-run.pl:
  Added --sync-sys=0 to run test suite faster
mysys/my_static.c:
  Added my_disable_sync
mysys/my_sync.c:
  Added my_disable_sync
sql/mysqld.cc:
  Added -sync-sys=0 option for mysqld to skip sync() calls for faster testing
storage/maria/ma_key_recover.c:
  More DBUG_ASSERT()
  Added logging of KEY_OP_DEBUG to make examening of logs easier
  Fixed testing of page length in recovery to ensure we don't overwrite checksum (previous tests was too relaxed)
  Fixed bug in recovery logging of split pages which caused failure during recovery:
  - Length was not adjusted properly for pages to be split
  - Added KEY_OP_MAX_PAGELENGTH to tell recovery that page is now full length
  - This fixed LP#613418
storage/maria/ma_key_recover.h:
  Changed prototype for ma_log_change() for KEY_OP_DEBUG
storage/maria/ma_loghandler.h:
  Added new enums for better debugging of recovery logs
storage/maria/ma_rt_index.c:
  Added debugging information to calls to ma_log_change()
storage/maria/ma_write.c:
  Added debugging information to calls to ma_log_change() and ma_log_split()
2010-08-09 20:05:42 +03:00
Jon Olav Hauglid
d62bfebc7e Bug #54106 assert in Protocol::end_statement,
INSERT IGNORE ... SELECT ... UNION SELECT ...

This assert was triggered by INSERT IGNORE ... SELECT. The assert checks that a
statement either sends OK or an error to the client. If the bug was triggered
on release builds, it caused OK to be sent to the client instead of the correct
error message (in this case ER_FIELD_SPECIFIED_TWICE).

The reason the assert was triggered, was that lex->no_error was set to TRUE
during JOIN::optimize() because of IGNORE. This causes all errors to be ignored.
However, not all errors can be ignored. Some, such as ER_FIELD_SPECIFIED_TWICE
will cause the INSERT to fail no matter what. But since lex->no_error was set,
the critical errors were ignored, the INSERT failed and neither OK nor the
error message was sent to the client.

This patch fixes the problem by temporarily turning off lex->no_error in
places where errors cannot be ignored during processing of INSERT ... SELECT.

Test case added to insert.test.
2010-08-09 13:39:59 +02:00
Michael Widenius
0d3039d49d This patch fixes LP#613408 Memory corruption with (M)aria storage engine and virtual columns in MariaDB 5.2
Fixed compiler warnings
Disabled some tests that doesn't work on windows (uses shell tools or strange characters)



client/mysqlshow.c:
  Fixed compiler warnings
client/mysqlslap.c:
  Fixed compiler warnings
mysql-test/mysql-test-run.pl:
  Use an error file instead of /dev/null
  (Fixes problem on Windows and the output may be usefull)
mysql-test/suite/maria/r/maria.result:
  Test case for bug LP#613408 (not complete)
mysql-test/suite/maria/t/maria.test:
  Test case for bug LP#613408 (not complete)
mysql-test/suite/percona/percona_log_slow_slave_statements-and-use_global_long_query_time.test:
  This test doesn't work one windows (needs shell tools)
mysql-test/suite/percona/percona_log_slow_slave_statements.test:
  This test doesn't work one windows (needs shell tools)
mysql-test/suite/percona/percona_slow_query_log-control_global_slow.test:
  This test doesn't work one windows (needs shell tools)
mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.test:
  This test doesn't work one windows (needs shell tools)
mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.test:
  This test doesn't work one windows (needs shell tools)
mysql-test/suite/percona/percona_slow_query_log-long_query_time.test:
  This test doesn't work one windows (needs shell tools)
mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.test:
  This test doesn't work one windows (needs shell tools)
mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.test:
  This test doesn't work one windows (needs shell tools)
mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.test:
  This test doesn't work one windows (needs shell tools)
mysql-test/t/ctype_filesystem.test:
  This test doesn't work one windows (problem with character sets)
mysql-test/t/events_time_zone.test:
  Use longer times to get predictable tests
mysql-test/t/show_check-master.opt:
  set long query time to get more predictable tests
storage/maria/ma_check.c:
  Restore info->s->lock_key_trees after repair.
  Disable logging to temp tables for all repair cases (safety fix)
storage/maria/ma_state.c:
  Ensurethat info->state_start doesn't point to freed memory. (Could happen after running an internal repair to fast create indexes)
storage/maria/trnman.c:
  Added longer comment
2010-08-07 17:42:30 +03:00
Gleb Shchepa
45a87c685b Bug #55424: convert_tz crashes when fed invalid data
The CONVERT_TZ function crashes the server when the
timezone argument is an empty SET field value.

1) The CONVERT_TZ may find a timezone string in the
   tz_names hash.
2) A string representation of the empty SET is a
   String of zero length with the NULL pointer.
3) If the key argument length is zero, hash functions
   do comparison using the length of the record being
   compared against.

I.e. a zero-length String buffer is an invalid
argument for hash search functions, and if String
points to NULL buffer, hashcmp() fails with SEGV
accessing that memory.

The my_tz_find function has been modified to
treat empty Strings as invalid timezone values
to skip unnecessary hash search.


mysql-test/r/timezone2.result:
  Test case for bug #55424.
mysql-test/t/timezone2.test:
  Test case for bug #55424.
sql/sql_string.h:
  Bug #55424: convert_tz crashes when fed invalid data
  
  Added "const" modifier to String::is_empty().
sql/tztime.cc:
  Bug #55424: convert_tz crashes when fed invalid data
  
  The my_tz_find function has been modified to
  treat empty Strings as invalid timezone values
  to skip unnecessary hash search.
2010-08-06 23:29:37 +04:00
Michael Widenius
50b43cf805 Fix for LP#614265 Crash in _ma_unpin_all_pages / _ma_search on DELETE with Aria search engine
Fixed compiler warnings

client/mysqlslap.c:
  Fixed compiler warnings
mysql-test/suite/maria/r/maria.result:
  Test case for LP#614265
mysql-test/suite/maria/t/maria.test:
  Test case for LP#614265
mysql-test/suite/pbxt/t/skip_name_resolve-master.opt:
  Ensure that we get restart before test (as test uses show processlist)
sql/handler.cc:
  Added cloned marker if clone was called (for safety checks & debugging)
sql/handler.h:
  Added cloned marker if clone was called (for safety checks & debugging)
storage/maria/ha_maria.cc:
  In clone call, set file->trn if cloned file had this set. This is needed as maria_create_trn_for_mysql() and thus file->trn is never set for cloned table.
  Ensure that file->trn is properly reset after calls to repair/check/zerofill.
  Increment locked table count if file->trn is set (as we decrement this in the unlock call)
tests/mysql_client_test.c:
  Fixed compiler warnings
2010-08-06 15:39:37 +03:00
Bjorn Munch
59a63f0597 Bug #55503 MTR fails to filter LEAK SUMMARY from valgrind report of restarted servers
Undo workaround as fix is being merged in
2010-08-06 11:35:17 +02:00
Bjorn Munch
3d0819e2b1 merge from 5.1-mtr 2010-08-06 11:13:52 +02:00
Michael Widenius
9183144922 Fixed timing issue in test suite 2010-08-06 10:46:51 +03:00
Michael Widenius
17d01cba25 Fixed test case and compiler warnings
mysql-test/suite/innodb_plugin/t/innodb-timeout.test:
  More time for test case
support-files/compiler_warnings.supp:
  Ignore compiler warning
2010-08-06 09:36:09 +03:00
Michael Widenius
f0f2103695 Automatic merge 2010-08-05 18:59:44 +03:00
Michael Widenius
f66d2500c4 Remove not used files
Added option: --warning-for-wrong-transaction-id to maria_check


mysql-test/r/innodb-use-sys-malloc.result:
  Remove not used files
mysql-test/t/innodb-use-sys-malloc-master.opt:
  Remove not used files
storage/maria/ma_recovery.c:
  Added support for --lsn-end
storage/maria/ma_recovery.h:
  New prototype
storage/maria/ma_write.c:
  Added logging of KEY_OP_CHECK for all possible keyblock splits.
  (Helps us find error in log file handling)
storage/maria/maria_chk.c:
  Added option: --warning-for-wrong-transaction-id
  --update-status now resets open count if check succeds
storage/maria/maria_read_log.c:
  Added option --end-lsn for only appling part of log (good for debugging)
  Changed options to use '-' instead of '_'
2010-08-05 18:56:31 +03:00
Michael Widenius
7d1ce2e832 Fixed test failures
mysql-test/suite/funcs_1/r/is_columns_is.result:
  Update after change of comment length
mysql-test/suite/funcs_1/r/is_engines.result:
  Update after change of comment length
mysql-test/suite/innodb_plugin/t/disabled.def:
  Disable a test that gives valgrind warnings for xtradb
mysql-test/suite/innodb_plugin/t/innodb_bug52745.test:
  Test requires persian collation
2010-08-05 18:38:06 +03:00
Michael Widenius
ca0e296b94 Merge with 5.1-merge (new XTRADB code updated up to MySQL 5.1.47)
Fixed tests cases.
2010-08-05 14:40:54 +03:00