1
0
mirror of https://github.com/MariaDB/server.git synced 2025-05-08 15:01:49 +03:00

32154 Commits

Author SHA1 Message Date
Michael Widenius
f2d7609ac0 Use less memory when growing HEAP tables. See MDEV-436
mysql-test/suite/heap/heap.result:
  Added test case for MDEV-436
mysql-test/suite/heap/heap.test:
  Added test case for MDEV-436
storage/heap/hp_block.c:
  Don't allocate a set of HP_PTRS when not needed. This saves us about 1024 bytes for most allocations.
storage/heap/hp_create.c:
  Made the initial allocation of block sizes depending on min_records and max_records.
2012-08-07 01:58:05 +03:00
Sergey Petrunya
b71f7d97db Merge 2012-08-02 17:12:23 +04:00
Sergey Petrunya
59e64b6c9b MDEV-416: Server crashes in SQL_SELECT::cleanup on EXPLAIN with SUM ( DISTINCT )
- When JOIN::cleanup(full==TRUE) is called, the select can be in two states:
  = Right after the create_sort_index() call, when join->join_tab[0] is used to 
    read data produced by filesort().
  = After create_sort_index(), and after JOIN::reinit() calls, when 
    join->join_tab[0] has been reset to read the original data. 
- We didn't handle the second case correctly, which resulted in an attempt to free 
  the same SQL_SELECT two times. The fix is to make sure we don't double-free.
2012-08-02 17:06:05 +04:00
Elena Stepanova
b69e8d46b6 MDEV-369: Mismatches in MySQL engines test suite
Post-merge fixes for mismatches that only affect 5.5 (but not 5.3)
2012-08-02 04:48:33 +04:00
Elena Stepanova
f2b4305bd4 Merge 5.3->5.5 2012-08-02 04:22:43 +04:00
Sergei Golubchik
6ed4a283fd MDEV-399 Combinations defined in the base suite cannot be skipped by overlay
When appliying parent combinations to the overlay,
filter them through the %skip_combinations using the overlayed filename
2012-08-01 19:57:36 +02:00
Sergey Petrunya
fd3e9c53c1 MDEV-423: SHOW EXPLAIN: 'Using where' for a subquery is shown in EXPLAIN, but not in SHOW EXPLAIN
- Take into account that the optimizer may run the subquery, delete it,
  and then make a JOIN::optimize call again.
2012-08-01 15:51:52 +04:00
Sergei Golubchik
42ea25d4c5 MDEV-375 Server crashes in THD::print_aborted_warning with log_warnings > 3
Don't use ER(xxx) in THD::close_connection(), when current_thd is already reset to NULL.
Prefer ER_THD() or ER_DEFAULT() instead.
2012-07-31 18:32:46 +02:00
Alexey Botchkov
9705ad5e33 MDEV-340 Save replication comments for DROP TABLE.
mysql_rm_table_no_locks() function was modified.
      When we construct log record for the DROP TABLE, now we
      look if there's a comment before the first table name and
      add it to the record if so.
  
per-file comments:
  sql/sql_table.cc
  MDEV-340 Save replication comments for DROP TABLE.
        comment_length() function implemented to find comments in the query,
        call it in mysql_rm_table_no_locks() and use the result to form log record.
  mysql-test/suite/binlog/r/binlog_drop_if_exists.result
  MDEV-340 Save replication comments for DROP TABLE.
        test result updated.
  mysql-test/suite/binlog/t/binlog_drop_if_exists.test
  MDEV-340 Save replication comments for DROP TABLE.
        test case added.
2012-07-31 16:21:53 +05:00
Igor Babaev
3116e3ad61 Merge 5.5 -> 5.5-mwl248. 2012-07-30 23:08:05 -07:00
Elena Stepanova
d1a90e852b MDEV-369 (Mismatches in MySQL engines test suite)
Following reasons caused mismatches:
  - different handling of invalid values;
  - different CAST results with fractional seconds;
  - microseconds support in MariaDB;
  - different algorithm of comparing temporal values;
  - differences in error and warning texts and codes;
  - different approach to truncating datetime values to time;
  - additional collations;
  - different record order for queries without ORDER BY;
  - MySQL bug#66034.
More details in MDEV-369 comments.
2012-07-30 04:16:49 +04:00
Igor Babaev
6eace757e9 Moved the test cases for parallel execution from stat_tables.test
into a separate file stat_tables_par.test because the test cases
could not be run with embedded server.
2012-07-27 17:33:23 -07:00
Igor Babaev
26947f5adb Added missing declaration of statistics_lock.
Replaced bzero with memset.
Added missing --source include/have_debug_sync.inc into stat_tables.test.
2012-07-27 12:05:23 -07:00
Sergey Petrunya
aaa188dad9 Post-merge fixes. 2012-07-27 16:17:52 +04:00
Venkata Sidagam
e130d9efbf Bug #12876932 - INCORRECT SELECT RESULT ON FEDERATED TABLE
Fixed the missing of federated/include folder at the time 
of preparing package distribution, issue happens only in 5.1
2012-07-27 12:05:37 +05:30
Igor Babaev
8c499274da Performed re-factoring and re-structuring of the code for mwl#248:
- Moved the definitions of the classes to store data from persistent
    statistical tables into statistics.h, leaving in other internal 
    data structures only references to the corresponding objects.
  - Defined class Column_statistics_collected derived from the class
    Column_statistics. This is a helper class to collect statistics
    on columns.
  - Moved references to read statistics to TABLE SHARE, leaving the
    the reference to the collected statistics in TABLE.
 - Added a new clone method for the class Field allowing to clone
    fields attached to table shares. It was was used to create 
    fields for min/max values in the memory of the table share.
A lso:
  - Added procedures to allocate memory for statistical data in
    the table share memory and in table memory.
Also: 
  - Added a test case demonstrating how ANALYZE could work in parallel
    to collect statistics on different indexes of the same table.
  - Added a test two demonstrate how two connections working 
    simultaneously could allocate memory for statistical data in the 
    table share memory.
2012-07-26 17:50:08 -07:00
Elena Stepanova
3ca3b44dbb Result files were wrong due to MySQL bug#66034 2012-07-26 23:31:08 +04:00
Venkata Sidagam
fe7a28e759 Bug #12876932 - INCORRECT SELECT RESULT ON FEDERATED TABLE
Merged pb2 test failure fix from mysql-5.1 to mysql-5.5
2012-07-26 23:27:01 +05:30
Venkata Sidagam
b6ecca263c Bug #12876932 - INCORRECT SELECT RESULT ON FEDERATED TABLE
Fix for pb2 test failure.
2012-07-26 23:23:04 +05:30
Venkata Sidagam
fdaafddd80 Bug #12876932 - INCORRECT SELECT RESULT ON FEDERATED TABLE
Merged from mysql-5.1 to mysql-5.5
2012-07-26 15:29:19 +05:30
Venkata Sidagam
aef1982be0 Bug #12876932 - INCORRECT SELECT RESULT ON FEDERATED TABLE
Problem description:
Table 't' created with two colums having compound index on both the 
columns under innodb/myisam engine at remote machine. In the local 
machine same table is created undet the federated engine.
A select having where clause with along 'AND' operation gives wrong 
results on local machine.

Analysis: 
The given query at federated engine is wrongly transformed by 
federated::create_where_from_key() function and the same was sent to 
the remote machine. Hence the local machine is showing wrong results.

Given query "select c1 from t where c1 <= 2 and c2 = 1;"
Query transformed, after ha_federated::create_where_from_key() function is:
SELECT `c1`, `c2` FROM `t` WHERE  (`c1` IS NOT NULL ) AND 
( (`c1` >= 2)  AND  (`c2` <= 1) ) and the same sent to real_query().
In the above the '<=' and '=' conditions were transformed to '>=' and 
'<=' respectively.

ha_federated::create_where_from_key() function behaving as below:
The key_range is having both the start_key and end_key. The start_key 
is used to get "(`c1` IS NOT NULL )" part of the where clause, this 
transformation is correct. The end_key is used to get "( (`c1` >= 2) 
AND  (`c2` <= 1) )", which is wrong, here the given conditions('<=' and '=') 
are changed as wrong conditions('>=' and '<=').
The end_key is having {key = 0x39fa6d0 "", length = 10, keypart_map = 3, 
flag = HA_READ_AFTER_KEY}

The store_length is having value '5'. Based on store_length and length 
values the condition values is applied in HA_READ_AFTER_KEY switch case.
The switch case 'HA_READ_AFTER_KEY' is applicable to only the last part of 
the end_key and for previous parts it is going to 'HA_READ_KEY_OR_NEXT' case, 
here the '>=' is getting added as a condition instead of '<='.

Fix:
Updated the 'if' condition in 'HA_READ_AFTER_KEY' case to affect for all 
parts of the end_key. i.e 'i > 0' will used for end_key, Hence added it in 
the if condition.


mysql-test/suite/federated/federated.test:
  modified the federated.inc file location
mysql-test/suite/federated/federated_archive.test:
  modified the federated.inc file location
mysql-test/suite/federated/federated_bug_13118.test:
  modified the federated.inc file location
mysql-test/suite/federated/federated_bug_25714.test:
  modified the federated.inc file location
mysql-test/suite/federated/federated_bug_35333.test:
  modified the federated.inc file location
mysql-test/suite/federated/federated_debug.test:
  modified the federated.inc file location
mysql-test/suite/federated/federated_innodb.test:
  modified the federated.inc file location
mysql-test/suite/federated/federated_server.test:
  modified the federated.inc file location
mysql-test/suite/federated/federated_transactions.test:
  modified the federated.inc file location
mysql-test/suite/federated/include/federated.inc:
  moved the file from federated suite to federated/include folder
mysql-test/suite/federated/include/federated_cleanup.inc:
  moved the file from federated suite to federated/include folder
mysql-test/suite/federated/include/have_federated_db.inc:
  moved the file from federated suite to federated/include folder
storage/federated/ha_federated.cc:
  updated the 'if condition' in ha_federated::create_where_from_key() 
  function.
2012-07-26 15:09:22 +05:30
Sergey Petrunya
2b0f6ece7b Merge 5.5-main -> 5.5-show-explain 2012-07-25 20:53:49 +04:00
Sergey Petrunya
55597a4869 MDEV-410: EXPLAIN shows type=range, while SHOW EXPLAIN and userstat show full table scan is used
- Make Item_subselect::fix_fields() ignore UNCACHEABLE_EXPLAIN flag when deciding whether 
  the subquery item should be marked as constant.
2012-07-25 20:41:48 +04:00
Sergey Petrunya
0b79fe2b30 MDEV-412: SHOW EXPLAIN: Server crashes in JOIN::print_explain on a query with inner join and ORDER BY the same column twice
- JOIN::print_explain should print pre_sort_join_tab instead of "first non-constant table".  
  The code didn't take the "non-constant" part into account.
2012-07-25 13:00:39 +04:00
Annamalai Gurusami
1383660024 Bug #13113026 INFORMATION_SCHEMA.INNODB_BUFFER_PAGE_LRUFROM 5.6 BACKPORT
Backporting the WL#5716, "Information schema table for InnoDB 
buffer pool information". Backporting revisions 2876.244.113, 
2876.244.102 from mysql-trunk.

rb://1175 approved by Jimmy Yang.
2012-07-25 13:51:39 +05:30
Annamalai Gurusami
1c6f78e337 Bug #13113026 INFORMATION_SCHEMA.INNODB_BUFFER_PAGE_LRUFROM 5.6 BACKPORT
Backporting the WL#5716, "Information schema table for InnoDB
buffer pool information". Backporting revisions 2876.244.113,
2876.244.102 from mysql-trunk.

rb://1177 approved by Jimmy Yang.
2012-07-25 10:48:16 +05:30
Sergey Petrunya
3956950b9f MDEV-408: SHOW EXPLAIN: Some values are chopped off in SHOW EXPLAIN output
- Fix I_S table definition for EXPLAIN output.
2012-07-24 14:02:53 +04:00
Sergey Petrunya
8950ed8fdd MDEV-298: SHOW EXPLAIN: Plan returned by SHOW EXPLAIN only contains 'Using temporary' ...
- Correct the way SHOW EXPLAIN code calculates 'need_order' parameter 
  for JOIN::print_explain(). 
  The calculation is still an approximation (see MDEV entry for details) (even EXPLAIN itself
  is wrong in certain cases), but now it's a better approximation than before.
2012-07-20 01:52:03 +04:00
Sergey Petrunya
ab70b76d9c BUG#992942 & MDEV-325: Pre-liminary commit for testing 2012-07-19 15:52:19 +04:00
Axel Schwenke
1b1b36ab3e merged with maria/5.5 2012-07-19 13:21:53 +02:00
Sergey Petrunya
33e961c1ab Merge bug#1007622 from 5.3 to 5.5 2012-07-18 22:36:20 +04:00
Sergey Petrunya
678b4f5dea Fix the tests: show_explain_ps cannot work on embedded server. 2012-07-18 20:51:41 +04:00
Chaithra Gopalareddy
0ef427ae3f Merge from 5.1 to 5.5 2012-07-18 15:18:15 +05:30
Chaithra Gopalareddy
ddcd6867e9 Bug#11762052: 54599: BUG IN QUERY PLANNER ON QUERIES WITH
"ORDER BY" AND "LIMIT BY" CLAUSE

PROBLEM:
When a 'limit' clause is specified in a query along with
group by and order by, optimizer chooses wrong index
there by examining more number of rows than required.
However without the 'limit' clause, optimizer chooses
the right index.

ANALYSIS:
With respect to the query specified, range optimizer chooses
the first index as there is a range present ( on 'a'). Optimizer
then checks for an index which would give records in sorted
order for the 'group by' clause.

While checking chooses the second index (on 'c,b,a') based on
the 'limit' specified and the selectivity of
'quick_condition_rows' (number of rows present in the range)
in 'test_if_skip_sort_order' function. 
But, it fails to consider that an order by clause on a
different column will result in scanning the entire index and 
hence the estimated number of rows calculated above are 
wrong (which results in choosing the second index).

FIX:
Do not enforce the 'limit' clause in the call to
'test_if_skip_sort_order' if we are creating a temporary
table. Creation of temporary table indicates that there would be
more post-processing and hence will need all the rows.

This fix is backported from 5.6. This problem is fixed in 5.6 as   
part of changes for work log #5558


mysql-test/r/subselect.result:
  Changes for Bug#11762052 results in the correct number of rows.
sql/sql_select.cc:
  Do not pass the actual 'limit' value if 'need_tmp' is true.
2012-07-18 14:36:08 +05:30
Sergey Petrunya
2368f8895d MWL#182: Explain running statements
- Address feedback from the second code review.
2012-07-17 21:52:08 +04:00
Elena Stepanova
72a5542f0e MDEV-11: Generic storage engine test suite 2012-07-16 06:17:56 +04:00
Elena Stepanova
403cac0fe7 Allow multiple error codes inside a variable in --error command 2012-07-16 06:14:53 +04:00
unknown
9f6a1c5842 fixed MySQL bug#53775:
Now partition engine adds underlying tables to the QC and ask underlying tables engine permittion to cache the query and return result of the query.

Incorrect QC cleanup in case of table registration failure fixe.

Unified interface for myisammrg & partitioned engnes for QC.
2012-07-13 22:17:32 +03:00
Nuno Carvalho
8dc96fc7aa BUG#14310067: RPL_CANT_READ_EVENT_INCIDENT AND RPL_BUG41902 FAIL ON 5.5
rpl_cant_read_event_incident:
Slave applies updates from bug11747416_32228_binlog.000001 file which 
contains a CREATE TABLE t statement and an incident, when SQL thread is
running slowly IO thread may reach the incident before SQL thread
executes the create table statement. 
Execute "drop table if exists t" and also perform a RESET MASTER to
clean slave binary logs.

rpl_bug41902:
Error "MYSQL_BIN_LOG::purge_logs was called with file
./master-bin.000001 not listed in the index." suppression is not 
considering windows path, there is ".\master-bin.000001".
Changed suppression to: "MYSQL_BIN_LOG::purge_logs was called with file
..master-bin.000001 not listed in the index", to match ".\" and "./".
2012-07-13 10:04:59 +01:00
Sergey Petrunya
a49b4c970f t/show_explain_ps.test needs debug system to work. 2012-07-11 16:33:10 +04:00
Sergey Petrunya
de65de3baa Make test results stable 2012-07-11 14:27:59 +04:00
Igor Babaev
cb0a5c84b6 Made the output of the newly added test cases from statistics.test
platform independent.

Adjusted results of funcs_1.is_columns_mysql_embedded.
2012-07-10 22:12:23 -07:00
Igor Babaev
47fae7f08f Added procedures to delete records by keys from statistical tables.
Now when a table is dropped the statistics on the table is removed 
from the statistical tables. If the table is altered in such a way
that a column is dropped or the type of the column is changed then
statistics on the column is removed from the table column_stat.
It also triggers removal of the statistics on the indexes who use
this column as its component.

Added procedures that changes the names of the tables or columns
in the statistical tables for. 
These procedures are used when tables/columns are renamed.

Also partly re-factored the code that introduced the persistent
statistical tables.

Added test cases into statistics.test to cover the new code.
2012-07-10 16:34:39 -07:00
Sergey Petrunya
725d76e1e8 MWL#182: Explain running statements: address review feedback
- switch SHOW EXPLAIN to using an INFORMATION_SCHEMA table.
2012-07-10 21:23:00 +04:00
Sergey Petrunya
a931467e17 Enable PERFORMANCE_SCHEMA tracking for SHOW EXPLAIN's conditions. 2012-07-07 08:47:41 +04:00
Michael Widenius
5a86a61219 Fixed wrong error codes from InnoDB/XtraDB that caused %M to give system dependent error messages (for unknown error code)
- InnoDB now returns handler specific HA_WRONG_CREATE_OPTION instead of MySQL specific ER_ILLEGAL_HA_CREATE_OPTION
- This changes the user level error message from "Unknown error" to "Wrong create options"


mysql-test/r/lowercase_table2.result:
  Updated result file
mysql-test/r/partition_innodb_plugin.result:
  Updated to new error message
mysql-test/r/partition_open_files_limit.result:
  Updated result file
mysql-test/r/row-checksum-old.result:
  Updated to new error message
mysql-test/r/row-checksum.result:
  Updated to new error message
mysql-test/r/symlink.result:
  Updated result file
mysql-test/suite/innodb/r/innodb-create-options.result:
  Updated to new error message
mysql-test/suite/innodb/r/innodb-zip.result:
  Updated to new error message
mysql-test/suite/innodb/r/innodb.result:
  Updated to new error message
storage/innobase/handler/ha_innodb.cc:
  Return HA_WRONG_CREATE_OPTION instead of ER_ILLEGAL_HA_CREATE_OPTION
  This gives more clear and OS indepedent error messages
storage/xtradb/handler/ha_innodb.cc:
  Return HA_WRONG_CREATE_OPTION instead of ER_ILLEGAL_HA_CREATE_OPTION
  This gives more clear and OS indepedent error messages
2012-07-06 19:10:18 +03:00
Sunanda Menon
3dd7dd8307 Merge from mysql-5.5.25a-release 2012-07-06 11:35:46 +02:00
Sergey Petrunya
3e90dc1f77 MWL#182: Explain running statements
- Make SHOW EXPLAIN command be KILLable with KILL QUERY.
2012-07-05 22:04:13 +04:00
Sergey Petrunya
de879df7fa Merge fix for MDEV-376 2012-07-05 14:39:01 +04:00
Sergey Petrunya
46525c35b0 MDEV-376: Wrong result (missing rows) with index_merge+index_merge_intersection, join
- Let QUICK_RANGE_SELECT::init_ror_merged_scan() call  quick->reset() only 
  after we've set the column read bitmaps.
2012-07-04 14:34:45 +04:00