- 27 Apr, 2012 1 commit
-
-
unknown authored
Analysis: The reason for the wrong result is the interaction between constant optimization (in this case 1-row table) and subquery optimization. - First the outer query is optimized, and 'make_join_statistics' finds that table t2 has one row, reads that row, and marks the whole table as constant. This also means that all fields of t2 are constant. - Next, we optimize the subquery in the end of the outer 'make_join_statistics'. The field 'f2' is considered constant, with value '3'. The subquery predicate is rewritten as the constant TRUE. - The outer query execution detects early that the whole query result is empty and calls 'return_zero_rows'. Since the query is with implicit grouping, we have to produce one row with special values for the aggregates (depending on each aggregate function), and NULL values for all non-aggregate fields. This function calls 'no_rows_in_result' to set each aggregate function to the default value when it aggregates over an empty result, and then calls 'send_data', which in turn evaluates each Item in the SELECT list. - When evaluation reaches the subquery predicate, it executes the subquery with field 'f2' having a constant value '3', and the subquery produces the incorrect result '7'. Solution: Implement Item::no_rows_in_result for all subquery predicates. In order to make this work, it is also needed to make all val_* methods of all subquery predicates respect the Item_subselect::forced_const flag. Otherwise subqueries are executed anyways, and override the default value set by no_rows_in_result with whatever result is produced from the subquery evaluation.
-
- 23 Apr, 2012 2 commits
-
-
Vladislav Vaintroub authored
-
Sergei Golubchik authored
install all private headers in mysql/private/
-
- 20 Apr, 2012 1 commit
-
-
Vladislav Vaintroub authored
As part of derived tables redesign, values for VIEW_ALGORITHM_MERGE and VIEW_ALGORITHM_TMPTABLE have changed from (former values 1 rsp 2 , new values 5 rsp 9). This lead to the problem that views, created with version 5.2 or earlier would not work in all situations (e.g "SHOW CREATE VIEW"), or with mysqldump. The fix is to restore backward compatibility for the from file, and convert algorithm={1,2} in the frm to {5,9} when reading .frm from disk, and store backward compatible values when writing from to disk. Also allow processing correct processing for "invalid" .frms created with MariaDB 5.3/5.5 GA releases (where algorithm stored in memory matched the one stored in frm).
-
- 19 Apr, 2012 3 commits
-
-
unknown authored
Fixed incorrect type casting which made all fields (except very first) changes to materialized table incorrect. Saved list of view/derived table used items after expanding '*'.
-
Sergey Petrunya authored
BUG#978479: Wrong result (extra rows) with derived_with_keys+loosescan+semijoin=ON, materialization=OFF - Part#2: Don't try to construct a LooseScan access on indexes that do not guarantee index-ordered reads.
-
Sergey Petrunya authored
BUG#978479: Wrong result (extra rows) with derived_with_keys+loosescan+semijoin=ON, materialization=OFF Part#1: make EXPLAIN's plan match the one by actual execution: Item_subselect::used_tables() should return the same value irrespectively of whether we're running an EXPLAIN or a SELECT.
-
- 16 Apr, 2012 7 commits
-
-
Vladislav Vaintroub authored
-
Vladislav Vaintroub authored
-
Vladislav Vaintroub authored
-
Vladislav Vaintroub authored
This can result in bad deadlocks (e.g loader lock), seen in latest crash reports.
-
Vladislav Vaintroub authored
-
Vladislav Vaintroub authored
-
Vladislav Vaintroub authored
since password characters can contain quotes or spaces. The proper quoting method for command line arguments used here was extracted from http://blogs.msdn.com/b/twistylittlepassagesallalike/archive/2011/04/23/everyone-quotes-arguments-the-wrong-way.aspx Additionally, mysql_install_db.exe now passes root password to "mysqld.exe --bootstrap" in hexadecimal form, to handle potential special chars inside password string literal.
-
- 08 Apr, 2012 1 commit
-
-
Igor Babaev authored
The previous patch for the bug (that erroneously identified the bug as bug 972973 in its comment) was incorrect. It turned out that the code that triggered the abort complain reported for the bug was not needed at all.
-
- 07 Apr, 2012 1 commit
-
-
Igor Babaev authored
When the function free_tmp_table deletes the handler object for a temporary table the field TABLE::file for this table should be set to NULL. Otherwise an assertion failure may occur.
-
- 06 Apr, 2012 6 commits
-
-
Igor Babaev authored
-
Igor Babaev authored
This bug happened because the function find_field_in_view formed autogenerated names of view columns without a possibility to roll them back. In some situation it could cause memory misuses reported by valgrind or even crashes.
-
unknown authored
-
Alexey Botchkov authored
-
Alexey Botchkov authored
-
Alexey Botchkov authored
RB-tree index in the MEMORY table fails if it grews over 4G. That happened because the old_allocated variable in hp_rb_write_key() had the uint type. Changed with the 'size_t' type to be same as the 'rb_tree.allocated'. per-file comments: storage/heap/hp_write.c MDEV-80 Memory engine table full at much less than max_heap_table_size with btree index. uint->size_t for the 'old_allocated'.
-
- 05 Apr, 2012 4 commits
-
-
Sergei Golubchik authored
-
unknown authored
When a view/derived table is converted from merged to materialized the items from the used_item lists are substituted for items referring to the fields of the result of the materialization. The problem appeared with queries employing natural joins. Since the resolution of a natural join was performed only once the used_item list formed at the second execution of the query lacked the references to the fields that were used only in the equality predicates generated for the natural join.
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
- 04 Apr, 2012 8 commits
-
-
Sergey Petrunya authored
-
Sergei Golubchik authored
don't cast implicitly an int to a char, when a boolean value is desired.
-
Michael Widenius authored
Fixed additional changed pbxt test cases
-
Michael Widenius authored
-
Michael Widenius authored
-
Michael Widenius authored
-
Sergey Petrunya authored
-
Sergey Petrunya authored
-
- 03 Apr, 2012 4 commits
-
-
Michael Widenius authored
-
Michael Widenius authored
-
Michael Widenius authored
The main problem was a bug in CSV where it provided wrong statistics (it claimed the table was empty when it wasn't) I also fixed wrong freeing of blob's in the CSV handler. (Any call to handler::read_first_row() on a CSV table with blobs would fail) mysql-test/r/csv.result: Added new test case mysql-test/r/partition_innodb.result: Updated test results after fixing bug with impossible partitions and const tables mysql-test/t/csv.test: Added new test case sql/sql_select.cc: Cleaned up code for handling of partitions. Fixed also a bug where we didn't threat a table with impossible partitions as a const table. storage/csv/ha_tina.cc: Allocate blobroot onces.
-
Michael Widenius authored
-
- 02 Apr, 2012 2 commits
-
-
Sergey Petrunya authored
-
Sergey Petrunya authored
- When doing join optimization, pre-sort the tables so that they mimic the execution order we've had with 'semijoin=off'. - That way, we will not get regressions when there are two query plans (the old and the new) that have indentical costs but different execution times (because of factors that the optimizer was not able to take into account).
-