Commit graph

76347 commits

Author SHA1 Message Date
Vladislav Vaintroub
bc5232a65d MDEV-672 : storage/maria and storage/perfschema do not appear to honor WITH_UNIT_TESTS
Disable compiling unit tests if WITH_UNIT_TEST is FALSE.

Also, fix CMake code to allow compilation WITHOUT_ARIA_STORAGE_ENGINE
2012-10-30 23:05:55 +01:00
Sergei Golubchik
937ae82a1b fix async client code for i386 (assembly)
and when safemalloc is enabled (use ucontext, otherwise backtrace function gets confused and crashes)
2012-10-30 22:38:15 +01:00
Vladislav Vaintroub
8d2c12a924 MDEV-3824 - xtradb file rename fails on Windows, if new name already exists.
Changed implementation os_file_rename() on Windows  such as it does not fail if destination file already exists. Now MoveFileEx() with MOVEFILE_REPLACE_EXISTING flag is used, instead of prior MoveFile().
This fixed implementation is better compatible with rename() on POSIX systems.
2012-10-30 19:13:39 +01:00
Sergei Golubchik
2d7c39e096 disable x86 asm version of taocrypt arc4 code for gcc,
because it assumes the function prologue that gcc does not
generate.
2012-10-30 18:15:42 +01:00
Sergei Golubchik
86c642056a few fixes for test failures on windows
(and collateral changes)

mysql-test/t/innodb_mysql_lock.test:
  change the variable from the test, not from the .opt file.
  one mysqld restart less.
mysql-test/t/lowercase_table4.test:
  fix dos line endings
sql/handler.cc:
  don't access the uninitialized variable
2012-10-30 11:41:41 +01:00
Sergei Golubchik
33fb79773d mark rpl_mixing_engines.test and everything that includes it a BIG test 2012-10-29 23:52:47 +01:00
Vladislav Vaintroub
4839f61bbd MDEV-3822 : 10.0-serg fails on windows buildslaves
Ensure semicolons are not lost when concatenating fill_help_tables to  bootstrap.sql in Windows.
5.6 bootstrapper requires semicolons to separate bootstrapper commands.
2012-10-29 16:52:15 +01:00
Sergei Golubchik
cd5a6304b9 P_S test failures on 32-bit platforms:
always use intptr type when casting a pointer to an integer to avoid sign expansion.
  or, at least, cast identically in socket_summary_by_instance and socket_instances
2012-10-29 16:30:06 +01:00
Sergei Golubchik
3ff12684ba compilation failure with libwrap 2012-10-29 15:38:53 +01:00
Sergei Golubchik
2974093a50 workaround for gcc 4.3.2 bug on lenny-x86 at -O3
The following piece of code in trnman.c:

345   trn->min_read_from=  active_list_min.next->trid;
  ...
351   active_list_max.prev= trn->prev->next= trn;
352   trid_min_read_from= active_list_min.next->min_read_from;

on 345 gcc stores active_list_min.next in %ebx
(and trn->min_read_from=[%ebx]->trid)
and on 352 it does trid_min_read_from= [%ebx]->min_read_from;
BUT active_list_min.next was changed on the line 351.
gcc doesn't notice it and continues to use the cached value.
2012-10-29 11:12:29 +01:00
Sergei Golubchik
4bb48f922b MDEV-3820 MTR1 produces bootstrap SQL file with wrong syntax, server bootstrap fails 2012-10-29 08:33:57 +01:00
Sergei Golubchik
bba8b263c2 restore the lost (in mysql-5.6) bugfix for
Bug#13510739 63775: SERVER CRASH ON HANDLER READ NEXT AFTER DELETE RECORD.
2012-10-28 10:00:32 +01:00
Sergei Golubchik
b8cab18d40 rename the result file to its correct name 2012-10-27 21:11:28 +02:00
Sergei Golubchik
d73e04588b fix innodb plugin versions 2012-10-27 17:24:25 +02:00
Sergei Golubchik
32b70aeadf RPM fixes:
shared should provide libmysqlclient.so.18(libmysqlclient_16) too
  don't "use DBD::mysql" explicitly in mytop
2012-10-27 15:05:01 +02:00
Sergei Golubchik
b84e5a4e8f fix debian/ubuntu startup scripts 2012-10-27 14:13:26 +02:00
unknown
974abc7ad8 MDEV-3812
This patch undoes the removal of enum store_key_result by the previous patch for mdev-3812.
2012-10-27 00:56:14 +03:00
Sergei Golubchik
3f1290340e correct truncation in my_vsnprintf %M format
(because of a width or a short buffer)
2012-10-25 19:16:18 +02:00
unknown
97a1c53c81 MDEV-3812: Remove unneeded extra call to engine->exec() in Item_subselect::exec, remove enum store_key_result
This task fixes an ineffeciency that is a remainder from MySQL 5.0/5.1. There, subqueries
were optimized in a lazy manner, when executed for the first time. During this lazy optimization
it may happen that the server finds a more efficient subquery engine, and substitute the current
engine of the query being executed with the new engine. This required re-execution of the engine.

MariaDB 5.3 pre-optimizes subqueries in almost all cases, and the engine is chosen in most cases,
except when subquery materialization found that it must use partial matching. In this case, the
current code was performing one extra re-execution although it was not needed at all. The patch
performs the re-execution only if the engine was changed while executing.

In addition the patch performs small cleanup by removing "enum store_key_result" because it is
essentially a boolean, and the code that uses it already maps it to a boolean.
2012-10-25 15:50:10 +03:00
unknown
76d8a43e34 MDEV-571
Adjusted test case results after the merge 10.0-base, 10.0-monty.
The results are in sync with MySQL 5.6.7.
2012-10-22 12:55:29 +03:00
Sergei Golubchik
cd1de362ed first go at fixing debian builds 2012-10-20 18:35:22 +02:00
Sergei Golubchik
7a1b9ef607 fix oqgraph compilation failures.
fix rpl_mdev382.result
2012-10-20 18:26:56 +02:00
Sergei Golubchik
e1f681c99b 10.0-base -> 10.0-monty 2012-10-19 20:38:59 +02:00
Sergei Golubchik
797082ca71 Fix the incorrect merge 2012-10-19 11:21:35 +02:00
Sergei Golubchik
68baf07dcd 5.3 merge 2012-10-18 23:33:06 +02:00
unknown
69a7b04add Merge mdev-452 with the latest 10.0-base. 2012-10-18 15:57:12 +03:00
Vladislav Vaintroub
cbaf6e6b61 do not print return address when callstack is output on Windows, it does not provide any useful info 2012-10-18 11:30:29 +02:00
Vladislav Vaintroub
4b4d74b517 Do not DBUG_PRINT uninitialized variable. This avoid false positive from runtime checks in debug builds (Windows). 2012-10-18 11:19:28 +02:00
Sergei Golubchik
bf106948e0 RPM fixes:
shared should provide libmysqlclient.so.18(libmysqlclient_16) too
  don't "use DBD::mysql" explicitly in mytop
2012-10-17 19:04:08 +02:00
unknown
bc4a456758 MDEV-452 Add full support for auto-initialized/updated timestamp and datetime
Generalized support for auto-updated and/or auto-initialized timestamp
and datetime columns. This patch is a reimplementation of MySQL's
"WL#5874: CURRENT_TIMESTAMP as DEFAULT for DATETIME columns". In order to
ease future merges, this implementation reused few function and variable
names from MySQL's patch, however the implementation is quite different.

TODO:
The only unresolved problem in this patch is the semantics of LOAD DATA for
TIMESTAMP and DATETIME columns in the cases when there are missing or NULL
columns. I couldn't fully comprehend the logic behind MySQL's behavior and
its relationship with their own documentation, so I left the results to be
more consistent with all other LOAD cases.

The problematic test cases can be seen by running the test file function_defaults,
and observing the test case differences. Those were left on purpose for discussion.
2012-10-17 15:43:56 +03:00
Sergei Golubchik
ee9afef271 mysql-5.5.28 2012-10-16 13:04:42 +02:00
Sergei Golubchik
d9a8799205 XtraDB 1.1.8-29.0 2012-10-16 10:36:28 +02:00
Sergei Golubchik
abefaab57b minor test cleanup. one server restart less in mtr 2012-10-16 10:35:05 +02:00
Sergei Golubchik
c975fdbc85 a typo caused plugins to have no MYSQL_SERVER symbol defined.
don't try to define it for plugins, then, as they don't need it.
2012-10-16 10:34:38 +02:00
Sergei Golubchik
c2da54ef26 simplify future xtradb merges (hopefully) 2012-10-12 18:15:38 +02:00
Sergei Golubchik
96d3a797ee Percona-Server-5.5.27-rel29.0 2012-10-12 17:40:06 +02:00
unknown
e47cdfdfb6 MDEV-435: Expensive subqueries may be evaluated during optimization in merge_key_fields
Fix by Sergey Petrunia.

This patch only prevents the evaluation of expensive subqueries during optimization.
The crash reported in this bug has been fixed by some other patch.
The fix is to call value->is_null() only when  !value->is_expensive(), because is_null()
may trigger evaluation of the Item, which in turn triggers subquery evaluation if the
Item is a subquery.
2012-10-12 16:44:54 +03:00
unknown
52c84d144d MDEV-3802: Millisecond timeout support in non-blocking client library + fix incorrect blocking.
After the merge of VIO stuff from MySQL 5.6, there were some bugs left
in the non-blocking client library:

 - vio_io_wait() was introduced without any support for non-blocking operation,
   so async queries could turn into sync.

 - Timeouts were changed to milliseconds, but this was not reflected in the
   non-blocking API, also semantics was changed so signed -1 was used for
   "no timeout" rather than unsigned 0.

Fix by implementing and using my_io_wait_async() in the non-blocking case. And
by introducing a new mysql_get_timeout_value_ms() API function that provides
the timeout with millisecond granularity. The old mysql_get_timeout_value()
is kept and fixed to work correctly, converting the timeout to whole seconds.
2012-10-12 11:00:01 +02:00
unknown
fc941f8a21 MDEV-3802. Millisecond timeout support in non-blocking client library.
In 10.0, VIO timeouts can be in milliseconds, so we add a new function
mysql_get_timeout_value_ms() which can return millisecond-precision
timeout values.

In 5.5, we do not have millisecond precision for timeouts. But we still
provide the mysql_get_timeout_value_ms() function; this makes it easier
for applications as they can use the millisecond function in 10.0 and
still work with the 5.5 version of the client library.
2012-10-12 10:54:46 +02:00
unknown
8215ce4695 MDEV-3804:
MySQL fix for bug#11765413 removed (we have better and more general fix for the problem).

Test suite added.
2012-10-11 12:09:21 +03:00
Sergey Petrunya
807fef40ff Update test results after SHOW EXPLAIN merge-in. 2012-10-11 07:01:44 +04:00
unknown
362c2bca3e Fix of MDEV-3799.
Find left table in right join (which turned to left join by reordering tables in join list but phisical order of tables of SELECT left as it was).
2012-10-10 22:42:50 +03:00
Sergey Petrunya
d2d6c8b8e8 Backport of: olav.sandstaa@oracle.com-20120516074923-vd0dhp183vqcp2ql
.. into MariaDB 5.3

Fix for Bug#12667154 SAME QUERY EXEC AS WHERE SUBQ GIVES DIFFERENT
                     RESULTS ON IN() & NOT IN() COMP #3

This bug causes a wrong result in mysql-trunk when ICP is used
and bad performance in mysql-5.5 and mysql-trunk.

Using the query from bug report to explain what happens and causes
the wrong result from the query when ICP is enabled:

1. The t3 table contains four records. The outer query will read
   these and for each of these it will execute the subquery.

2. Before the first execution of the subquery it will be optimized. In
   this case the important is what happens to the first table t1:
   -make_join_select() will call the range optimizer which decides
    that t1 should be accessed using a range scan on the k1 index
    It creates a QUICK_RANGE_SELECT object for this.
   -As the last part of optimization the ICP code pushes the
    condition down to the storage engine for table t1 on the k1 index.

   This produces the following information in the explain for this table:

     2 DEPENDENT SUBQUERY t1 range k1 k1 5 NULL 3 Using index condition; Using filesort

   Note the use of filesort.

3. The first execution of the subquery does (among other things) due
   to the need for sorting:
   a. Call create_sort_index() which again will call find_all_keys():
   b. find_all_keys() will read the required keys for all qualifying
      rows from the storage engine. To do this it checks if it has a
      quick-select for the table. It will use the quick-select for
      reading records. In this case it will read four records from the
      storage engine (based on the range criteria). The storage engine
      will evaluate the pushed index condition for each record.
   c. At the end of create_sort_index() there is code that cleans up a
      lot of stuff on the join tab. One of the things that is cleaned
      is the select object. The result of this is that the
      quick-select object created in make_join_select is deleted.

4. The second execution of the subquery does the same as the first but
   the result is different:
   a. Call create_sort_index() which again will call find_all_keys()
      (same as for the first execution)
   b. find_all_keys() will read the keys from the storage engine. To
      do this it checks if it has a quick-select for the table. Now
      there is NO quick-select object(!) (since it was deleted in
      step 3c). So find_all_keys defaults to read the table using a
      table scan instead. So instead of reading the four relevant records
      in the range it reads the entire table (6 records). It then
      evaluates the table's condition (and here it goes wrong). Since
      the entire condition has been pushed down to the storage engine
      using ICP all 6 records qualify. (Note that the storage engine
      will not evaluate the pushed index condition in this case since
      it was pushed for the k1 index and now we do a table scan
      without any index being used).
      The result is that here we return six qualifying key values
      instead of four due to not evaluating the table's condition.
   c. As above.

5. The two last execution of the subquery will also produce wrong results
   for the same reason.

Summary: The problem occurs due to all but the first executions of the
subquery is done as a table scan without evaluating the table's
condition (which is pushed to the storage engine on a different
index). This is caused by the create_sort_index() function deleting
the quick-select object that should have been used for executing the
subquery as a range scan.

Note that this bug in addition to causing wrong results also can
result in bad performance due to executing the subquery using a table
scan instead of a range scan. This is an issue in MySQL 5.5.

The fix for this problem is to avoid that the Quick-select-object that
the optimizer created is deleted when create_sort_index() is doing
clean-up of the join-tab. This will ensure that the quick-select
object and the corresponding pushed index condition will be available
and used by all following executions of the subquery.
2012-10-10 09:21:22 +04:00
unknown
4304dbc464 MDEV-616 fix (MySQL fix accepted) 2012-10-09 17:36:02 +03:00
unknown
72ab07c1cb MDEV-746: Merged mysql fix of the bug LP:1002546 & MySQL Bug#13651009.
Empty result after reading const tables now works for subqueries.
2012-10-14 19:29:31 +03:00
Sergei Golubchik
a9f9296891 sort status variables 2012-10-08 13:06:20 +02:00
Sergei Golubchik
d7e0499407 don't disable innodb in bootstrap anymore 2012-10-08 12:30:10 +02:00
Sergei Golubchik
0e52133fb9 fixes for embedded 2012-10-07 22:12:39 +02:00
Sergey Petrunya
f54cb33e4b SHOW EXPLAIN: merge to 10.0-base. 2012-10-06 11:30:52 +04:00
Sergey Petrunya
74816d2963 SHOW EXPLAIN: merge with mariadb 5.5-main 2012-10-06 11:17:30 +04:00