- 05 Oct, 2015 17 commits
-
-
Sergei Golubchik authored
The assumption is that the engine should not need to evaluate HAVING on the table->record[0] - the engine either can evaluate HAVING internally before writing it to the table->record[0], or it should leave it to the server, that will evaluate HAVING(table->record[0]). Similarly the engine should not need to evaluate ORDER on the table->record[0]. Either it returns the data already sorted, or the server will sort the table.
-
Sergei Golubchik authored
instead pass the whole query down and let the engine return unsupported parts back
-
Sergei Golubchik authored
down to the point where all tables are already known (and subqueries converted to joins, if needed)
-
Sergei Golubchik authored
-
Sergei Golubchik authored
into a Pushdown_query object
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
Monty authored
This task is to allow storage engines that can execute GROUP BY or summary queries efficiently to intercept a full query or sub query from MariaDB and deliver the result either to the client or to a temporary table for further processing. - Added code in sql_select.cc to intercept GROUP BY queries. Creation of group_by_handler is done after all optimizations to allow storage engine to benefit of an optimized WHERE clause and suggested indexes to use. - Added group by handler to sequence engine and a group_by test suite as a way to test the new interface. - Intercept EXPLAIN with a message "Storage engine handles GROUP BY" libmysqld/CMakeLists.txt: Added new group_by_handler files sql/CMakeLists.txt: Added new group_by_handler files sql/group_by_handler.cc: Implementation of group_by_handler functions sql/group_by_handler.h: Definition of group_by_handler class sql/handler.h: Added handlerton function to create a group_by_handler, if the storage engine can intercept the query. sql/item_cmpfunc.cc: Allow one to evaluate item_equal any time. sql/sql_select.cc: Added code to intercept GROUP BY queries - If all tables are from the same storage engine and the query is using sum functions, call create_group_by() to check if the storage engine can intercept the query. - If yes: - create a temporary table to hold a GROUP_BY row or result - In do_select() intercept normal query execution by instead calling the group_by_handler to get the result - Intercept EXPLAIN sql/sql_select.h: Added handling of group_by_handler Added caching of the original join tab (needed for cleanup after group_by handler) storage/sequence/mysql-test/sequence/group_by.result: Test group_by_handler interface storage/sequence/mysql-test/sequence/group_by.test: Test group_by_handler interface storage/sequence/sequence.cc: Added simple group_by_engine for handling COUNT(*) and SUM(primary_key). This was done as a test of the group_by_handler interface
-
Monty authored
-
Monty authored
-
Monty authored
-
Monty authored
-
Monty authored
Fixed compiler warnings sql/sql_view.cc: Ensure that merged_for_insert is properly reset (Left of an old patch)
-
Monty authored
if we didn't write the CREATE TEMPORARY TABLE statement. - Enable old code from one of my older changesets that didn't make into 10.0 - Fix test cased that failed as they expected DROP TEMPORARY TABLE in the log.
-
Sergei Petrunia authored
Remove debug printout that was accidentally left in place
-
Alexander Barkov authored
-
Jan Lindström authored
-
- 04 Oct, 2015 1 commit
-
-
Alexander Barkov authored
- Turning get_mm_tree_for_const() from a static function into a protected method in Item. - Adding a new class Item_bool_func2_with_rev, for the functions and operators that have a reverse function and can use the range optimizer for to optimize "value OP field" as "field REV_OP value". Deriving Item_bool_rowready_func2 and Item_funt_spatial_rel from the new class. - Removing Item_bool_func2::have_rev_func().
-
- 02 Oct, 2015 5 commits
-
-
Alexander Barkov authored
- Item_bool_func::get_func_mm_tree() - Item_bool_func::get_mm_parts() - Item_bool_func::get_ne_mm_tree()
-
Alexander Barkov authored
from Item_bool_func::get_mm_leaf() into Field_xxx::can_optimize_range(). This reduces the total amount of virtual calls. Also, it's a prerequisite change for the pluggable data types.
-
Jan Lindström authored
MDEV-8523: InnoDB: Assertion failure in file buf0buf.cc line 5963 (Failing assertion: key_version == 0 || key_version >= bpage->key_version)
-
Alexander Barkov authored
Item_ref::val_bool_result().
-
Nirbhay Choubey authored
Check if the engine is supported/allowed before replicating the statement.
-
- 01 Oct, 2015 5 commits
-
-
Alexander Barkov authored
-
Sergey Vojtovich authored
Fixed race condition in code filling INFORMATION_SCHEMA.PROCESSLIST.INFO_BINARY. When loading query string/length of another connection one must have LOCK_thd_data locked.
-
Alexander Barkov authored
The patch for MDEV-8871 also fixed the problem reported in MDEV-657. Adding the test case from the bug report.
-
Alexander Barkov authored
MDEV-8873 Wrong field type or metadata for LEAST(int_column,string_column)
-
Jan Lindström authored
Analysis: When a page is read from encrypted table and page can't be decrypted because of bad key (or incorrect encryption algorithm or method) page was incorrectly left on buffer pool. Fix: Remove page from buffer pool and from pending IO.
-
- 30 Sep, 2015 3 commits
-
-
Alexander Barkov authored
MDEV-8875 Wrong metadata for MAX(CAST(time_column AS DATETIME))
-
Alexander Barkov authored
Item_func_hybrid_field_type did not return correct field_type(), cmp_type() and result_type() in some cases, because cached_result_type and cached_field_type were set in independent pieces of the code and did not properly match to each other. Fix: - Removing Item_func_hybrid_result_type - Deriving Item_func_hybrid_field_type directly from Item_func - Introducing a new class Type_handler which guarantees that field_type(), cmp_type() and result_type() are always properly synchronized and using the new class in Item_func_hybrid_field_type.
-
Alexander Barkov authored
-
- 29 Sep, 2015 1 commit
-
-
Jan Lindström authored
Added error handling to crash recovery so that we stop instead of asserting.
-
- 28 Sep, 2015 4 commits
-
-
Alexander Barkov authored
-
Jan Lindström authored
Alloc creating crypt_data to empty page at crash recovery and redo.
-
Alexander Barkov authored
MDEV-8852 Implicit or explicit CAST from MAX(string) to INT,DOUBLE,DECIMAL does not produce warnings
-
Sergey Vojtovich authored
Added per-table boolean IETF_QUOTES variable to CSV storage engine. It allows to enable IETF-compatible parsing of embedded quote and comma characters. Disabled by default. This patch is based on Percona revision: https://github.com/percona/percona-server/commit/b32fbf02766f8db00f9ff4e6dc05a1df97c10ff7 Note that original patch adds server variable, while this patch adds per-table variable.
-
- 27 Sep, 2015 1 commit
-
-
Nirbhay Choubey authored
-
- 25 Sep, 2015 3 commits
-
-
Nirbhay Choubey authored
Addendum: * Before calling THD::init_for_queries(), flip the current_thd to wsrep thread so that memory gets allocated for the right THD. * Use wsrep_creating_startup_threads instead of plugins_are_initialized as the condition for the execution of THD::init_for_queries() within start_wsrep_THD(), as use of latter could still leave some room for race.
-
Nirbhay Choubey authored
Problem: When mysqld starts as a galera node, it creates 2 system threads (applier & rollbacker) using start_wsrep_THD(). These threads are created before plugin initialization (plugin_init()) for SST methods like rsync and xtrabackup. The threads' initialization itself can proceed in parallel to mysqld's main thread of execution. As a result, the thread initialization code (start_wsrep_THD()) can end up accessing some un/partially initialized structures (like maria_hton, in this particular case) resulting in segfault. Solution: Fixed by calling THD::init_for_queries() (which accesses maria_hton) only after the plugins have been initialized.
-
Alexander Barkov authored
-