Commit graph

64438 commits

Author SHA1 Message Date
Igor Babaev
f144eb16ae Merge 2010-09-23 09:27:30 -07:00
Igor Babaev
c84ff1fc5f Merge 2010-09-22 15:04:34 -07:00
Igor Babaev
f4503f39ee Fixed bug #52394 / LP bug #623209.
When an incremental join cache is used to join a table whose
fields are not referenced anywhere in the query the association
pointer to the last record in the such cache can be the same
as the pointer to the end of the buffer. 
The function JOIN_CACHE_BKA::get_next_key must take into 
consideration this when iterating over the keys of the records
from the join buffer. 
The assertion in JOIN_TAB_SCAN_MRR::next also must take this
into consideration.
Borrowed a slightly changed test case from a patch attached to the
bug #52394.
2010-09-21 16:41:53 -07:00
Igor Babaev
61e96a75a6 Fixed a typo bug in JOIN_CACHE::shrink_join_buffer_in_ratio. 2010-09-02 17:16:03 -07:00
Igor Babaev
4a9696a451 Made sure that JOIN_CACHE::max_records is not less than 10. 2010-09-02 07:42:47 -07:00
Igor Babaev
f83cc50793 Fixed an incorrect calculation of JOIN_CACHE::max_buff_size. 2010-09-01 23:11:14 -07:00
Igor Babaev
5dec6cca5f Merge 2010-08-31 22:38:38 -07:00
Igor Babaev
e268f224fb Fixes in function specs. 2010-08-31 22:30:54 -07:00
Igor Babaev
8e22885007 Fixes in function specs. 2010-08-31 17:08:16 -07:00
Igor Babaev
3165c74918 Merge 2010-08-31 09:40:10 -07:00
Igor Babaev
94cfcbd9df The main patch for MWL#128: Implement Block Nested Loop Hash Join. 2010-08-31 09:34:21 -07:00
unknown
f5ecf70819 Fixed LP bug #608744
The bug is a result of the following change by Monty:
  Revision Id: monty@askmonty.org-20100716073301-gstby2062nqd42qv
  Timestamp: Fri 2010-07-16 10:33:01 +0300
Where Monty changed the queues interface and implementation.

The fix adjusts the queue_remove call to the new interface.


mysql-test/r/subselect_partial_match.result:
  Added new file for tests related to MWL#89.
mysql-test/t/subselect_partial_match.test:
  Added new file for tests related to MWL#89.
2010-08-30 11:07:16 +03:00
Sergey Petrunya
a81f75150e Let xtradb set mrr_length_per_rec stats. 2010-08-09 21:03:48 +04:00
unknown
4cf6b18b03 Fix for LP bug#611625: Removing NULL references from subquery parameter list added.
Incorrect limitation on number of parameters removed.

mysql-test/r/subselect_cache.result:
  Test suite added.
mysql-test/t/subselect_cache.test:
  Test suite added.
sql/sql_class.h:
  Iterator changed.
sql/sql_expression_cache.cc:
  Incorrect limitation removed.
  Removing NULL references from subquery parameter list added.
2010-08-09 13:00:58 +03:00
unknown
26148735a0 The test files renamed to have uniform name. 2010-08-05 17:23:48 +03:00
unknown
02c040dd5c Fix for luanchpad bug#609043
Removed indirect reference in equalities for cache index lookup.

We should use a direct reference because some optimization of the
query may optimize out a condition predicate and if the outer reference
is the only element of the condition predicate the indirect reference
becomes NULL.

We can resolve correctly the indirect reference in
Expression_cache_tmptable::make_equalities because it is called before
optimization of the cached subquery.


mysql-test/r/subquery_cache.result:
  The test suite for the bug added.
mysql-test/t/subquery_cache.test:
  The test suite for the bug added.
sql/sql_expression_cache.cc:
  Removed indirect reference in equalities for cache index lookup.
2010-07-30 07:16:58 +03:00
unknown
76e2be8e81 Bugfix for lounchpad bug#608834 (608824, 609045, 609052).
Added get_tmp_table_item() to cache wrapper as it has all not simple Items (Item_func, Item_field, Item_subquery).

mysql-test/r/subquery_cache.result:
  Tests for bugs fixed.
mysql-test/t/subquery_cache.test:
  Tests for bugs fixed.
sql/item.cc:
  Added get_tmp_table_item() to cache wrapper as it has all not simple Items (Item_func, Item_field, Item_subquery).
sql/item.h:
  Added get_tmp_table_item() to cache wrapper as it has all not simple Items (Item_func, Item_field, Item_subquery).
2010-07-29 14:13:48 +03:00
unknown
e75fd9311b Removed dead code that was made obsolete by the introduction of
check_join_cache_usage() by the change:

Revno: 2793
Revision Id: igor@askmonty.org-20091221022615-kx5ieiu0okmiupuc
Timestamp: Sun 2009-12-20 18:26:15 -0800

Backport into MariaDB-5.2 the following:
WL#2771 "Block Nested Loop Join and Batched Key Access Join"
2010-07-23 11:25:00 +03:00
unknown
2d78ffb8d5 Fixed a problem where the temp table of a materialized subquery
was not cleaned up between PS re-executions. The reason was two-fold:
- a merge with mysql-6.0 missed select_union::cleanup() that should
  have cleaned up the temp table, and
- the subclass of select_union used by materialization didn't call
  the base class cleanup() method.
2010-07-16 14:02:15 +03:00
Sergey Petrunya
75bba30c5a Merge 2010-07-16 13:07:11 +04:00
Sergey Petrunya
13058d8056 Fix @@optimizer_switch support
- Let "mysqld  --help --verbose" list all optimizer options
- Make it possible to add new @@optimizer_switch flags w/o causing .result 
  changes all over the testsuite:
  = Remove "select @@optimizer_switch" from tests that do not need all switches
  = Move @@optimizer_switch-specific tests to t/optimizer_switch.test
2010-07-16 12:58:24 +04:00
Michael Widenius
b8a1354ae7 Merge with new queue code.
Updated configure.in to have version 5.3

configure.in:
  Updated to version 5.3.0
2010-07-16 11:02:05 +03:00
Michael Widenius
ecbcddc03d Improved speed of thr_alarm from O(N) to O(1). thr_alarm is used to handle timeouts and kill of connections.
Fixed compiler warnings.
queues.h and queues.c are now based on the UNIREG code and thus made BSD.
Fix code to use new queue() interface. This mostly affects how you access elements in the queue.
If USE_NET_CLEAR is not set, don't clear connection from unexpected characters. This should give a speed up when doing a lot of fast queries.
Fixed some code in ma_ft_boolean_search.c that had not made it from myisam/ft_boolean_search.c


include/queues.h:
  Use UNIREG code base (BSD)
  Changed init_queue() to take all initialization arguments.
  New interface to access elements in queue
include/thr_alarm.h:
  Changed to use time_t instead of ulong (portability)
  Added index_in_queue, to be able to remove random element from queue in O(1)
mysys/queues.c:
  Use UNIREG code base (BSD)
  init_queue() and reinit_queue() now takes more initialization arguments. (No need for init_queue_ex() anymore)
  Now one can tell queue_insert() to store in the element a pointer to where element is in queue. This allows one to remove elements from queue in O(1) instead of O(N)
mysys/thr_alarm.c:
  Use new option in queue() to allow fast removal of elements.
  Do less inside LOCK_alarm mutex.
  This should give a major speed up of thr_alarm usage when there is many threads
sql/create_options.cc:
  Fixed wrong printf
sql/event_queue.cc:
  Use new queue interface()
sql/filesort.cc:
  Use new queue interface()
sql/ha_partition.cc:
  Use new queue interface()
sql/ha_partition.h:
  Fixed compiler warning
sql/item_cmpfunc.cc:
  Fixed compiler warning
sql/item_subselect.cc:
  Use new queue interface()
  Removed not used variable
sql/net_serv.cc:
  If USE_NET_CLEAR is not set, don't clear connection from unexpected characters.
  This should give a speed up when doing a lot of fast queries at the disadvantage that if there is a bug in the client protocol the connection will be dropped instead of being unnoticed.
sql/opt_range.cc:
  Use new queue interface()
  Fixed compiler warnings
sql/uniques.cc:
  Use new queue interface()
storage/maria/ma_ft_boolean_search.c:
  Copy code from myisam/ft_boolean_search.c
  Use new queue interface()
storage/maria/ma_ft_nlq_search.c:
  Use new queue interface()
storage/maria/ma_sort.c:
  Use new queue interface()
storage/maria/maria_pack.c:
  Use new queue interface()
  Use queue_fix() instead of own loop to fix queue.
storage/myisam/ft_boolean_search.c:
  Use new queue interface()
storage/myisam/ft_nlq_search.c:
  Use new queue interface()
storage/myisam/mi_test_all.sh:
  Remove temporary file from last run
storage/myisam/myisampack.c:
  Use new queue interface()
  Use queue_fix() instead of own loop to fix queue.
storage/myisam/sort.c:
  Use new queue interface()
storage/myisammrg/myrg_queue.c:
  Use new queue interface()
storage/myisammrg/myrg_rnext.c:
  Use new queue interface()
storage/myisammrg/myrg_rnext_same.c:
  Use new queue interface()
storage/myisammrg/myrg_rprev.c:
  Use new queue interface()
2010-07-16 10:33:01 +03:00
Sergey Petrunya
4274e9b5d4 Fix order_by test failure: don't run EXPLAIN for a query that has multiple
range plans with identical costs.
2010-07-15 18:07:01 +04:00
unknown
11b1949303 Fixed an error in the creation of REF access method for materialized
subquery execution, where the the REF buffer format was mistaken to
be in record format instead of key format. The error was that the null
byte for all fields of the record was in the front of the buffer,
and not before each field data.
2010-07-15 16:59:10 +03:00
unknown
ceb5468fd8 Subquery cache (MWL#66) added.
libmysqld/Makefile.am:
  The new file added.
mysql-test/r/index_merge_myisam.result:
  subquery_cache optimization option added.
mysql-test/r/myisam_mrr.result:
  subquery_cache optimization option added.
mysql-test/r/subquery_cache.result:
  The subquery cache tests added.
mysql-test/r/subselect3.result:
  Subquery cache switched off to avoid changing read statistics.
mysql-test/r/subselect3_jcl6.result:
  Subquery cache switched off to avoid changing read statistics.
mysql-test/r/subselect_no_mat.result:
  subquery_cache optimization option added.
mysql-test/r/subselect_no_opts.result:
  subquery_cache optimization option added.
mysql-test/r/subselect_no_semijoin.result:
  subquery_cache optimization option added.
mysql-test/r/subselect_sj.result:
  subquery_cache optimization option added.
mysql-test/r/subselect_sj_jcl6.result:
  subquery_cache optimization option added.
mysql-test/t/subquery_cache.test:
  The subquery cache tests added.
mysql-test/t/subselect3.test:
  Subquery cache switched off to avoid changing read statistics.
sql/CMakeLists.txt:
  The new file added.
sql/Makefile.am:
  The new files added.
sql/item.cc:
  Expression cache item (Item_cache_wrapper) added.
  Item_ref and Item_field fixed for correct usage of result field and fast resolwing in SP.
sql/item.h:
  Expression cache item (Item_cache_wrapper) added.
  Item_ref and Item_field fixed for correct usage of result field and fast resolwing in SP.
sql/item_cmpfunc.cc:
  Subquery cache added.
sql/item_cmpfunc.h:
  Subquery cache added.
sql/item_subselect.cc:
  Subquery cache added.
sql/item_subselect.h:
  Subquery cache added.
sql/item_sum.cc:
  Registration of subquery parameters added.
sql/mysql_priv.h:
  subquery_cache optimization option added.
sql/mysqld.cc:
  subquery_cache optimization option added.
sql/opt_range.cc:
  Fix due to subquery cache.
sql/opt_subselect.cc:
  Parameters of the function cahnged.
sql/procedure.h:
  .h file guard added.
sql/sql_base.cc:
  Registration of subquery parameters added.
sql/sql_class.cc:
  Option to allow add indeces to temporary table.
sql/sql_class.h:
  Item iterators added.
  Option to allow add indeces to temporary table.
sql/sql_expression_cache.cc:
  Expression cache for caching subqueries added.
sql/sql_expression_cache.h:
  Expression cache for caching subqueries added.
sql/sql_lex.cc:
  Registration of subquery parameters added.
sql/sql_lex.h:
  Registration of subqueries and subquery parameters added.
sql/sql_select.cc:
  Subquery cache added.
sql/sql_select.h:
  Subquery cache added.
sql/sql_union.cc:
  A new parameter to the function added.
sql/sql_update.cc:
  A new parameter to the function added.
sql/table.cc:
  Procedures to manage temporarty tables index added.
sql/table.h:
  Procedures to manage temporarty tables index added.
storage/maria/ha_maria.cc:
  Fix of handler to allow destoy a table in case of error during the table creation.
storage/maria/ha_maria.h:
  .h file guard added.
storage/myisam/ha_myisam.cc:
  Fix of handler to allow destoy a table in case of error during the table creation.
2010-07-10 13:37:30 +03:00
Sergey Petrunya
e5f238a051 Fix buildbot valgrind failure
- Item_in_subselect::init_left_expr_cache() should not try to 
  guess whether the left expression is accessed "over the grouping operation"
  (i.e. the subselect is evaluated after the grouping while the left_expr is
   an Item_ref that wraps an expression from before the grouping). Instead, 
  let new_Cached_item not to try accessing item->real_item() when creating 
  left expr cache.
2010-07-06 19:16:24 +04:00
Igor Babaev
0d734037cc Added missing calls of update_virtual_fields() in the
join cache module.
Without these calls SELECTs over tables with virtual columns
that used join cache could return wrong results. This could
be seen with the test case added into vcol_misc.test
2010-07-01 22:13:19 -07:00
Sergey Petrunya
16053e66b6 Add sql/opt_index_cond_pushdown.cc to CMakeLists.txt files 2010-06-27 09:52:14 +04:00
Sergey Petrunya
5304eab835 Fix windows build: add sql/opt_subselect.cc to CMakeLists.txt files 2010-06-27 01:00:34 +04:00
Sergey Petrunya
7a9a3a79e9 Fix valgrind failure: when creating key image, don't try to copy out more than
field->pack_length() bytes.
2010-06-27 00:55:40 +04:00
Sergey Petrunya
7d9dc97682 Fix windows build: provide log2 function if the system doesn't have it. 2010-06-26 23:55:33 +04:00
Sergey Petrunya
4b71be9052 Post-merge fixes: update test results for vcol and pbxt test suites. 2010-06-26 23:33:16 +04:00
Sergey Petrunya
222a826f5b Post-merge fixes: Update test results. The differences in QEPs are because
5.3 had 

 handler::index_only_read_time(uint keynr, double records)

while 5.2 got:

 handler::keyread_read_time(uint index, uint ranges, ha_rows rows)

which causes floor()'ing of rows parameter, which makes all further costs different.
2010-06-26 23:11:45 +04:00
Sergey Petrunya
06399936fa Post-merge fixes:
- fix a bug in LooseScan strategy execution code (exposed by changing costs/QEP)
- Do set join_tab->sorted=TRUE for JOIN_TABs that use LooseScan (partitioning 
   handler cares about "sorted" parameter of h->index_init() call)
2010-06-26 23:05:09 +04:00
Sergey Petrunya
27f9fc063c MariaDB 5.2 -> MariaDB 5.3 merge 2010-06-26 14:05:41 +04:00
Sergey Petrunya
7754be7f4c More comments 2010-06-14 15:17:54 +04:00
Sergei Golubchik
50cc6c9d8a after merge fix.
create st_maria_plugin declarations of new xtradb I_S tables
2010-06-07 23:53:25 +02:00
Sergei Golubchik
1275dad4c2 updated test results in the pbxt suite 2010-06-07 14:35:11 +02:00
Sergei Golubchik
ac6b3c4430 few small MySQL bugs/issues that impact the engines, as discussed in the SE summit
* remove handler::index_read_last()
* create handler::keyread_read_time() (was get_index_only_read_time() in opt_range.cc)
* ha_show_status() allows engine's show_status() to fail
* remove HTON_FLUSH_AFTER_RENAME
* fix key_cmp_if_same() to work for floats and doubles
* set table->status in the server, don't force engines to do it
* increment status vars in the server, don't force engines to do it

mysql-test/r/status_user.result:
  correct test results - innodb was wrongly counting internal
  index searches as handler_read_* calls.
sql/ha_partition.cc:
  compensate for handler incrementing status counters -
  we want to count only calls to underlying engines
sql/handler.h:
  inline methods moved to sql_class.h
sql/key.cc:
  simplify the check
sql/opt_range.cc:
  move get_index_only_read_time to the handler class
sql/sp.cc:
  don't use a key that's stored in the record buffer -
  the engine can overwrite the buffer with anything, destroying the key
sql/sql_class.h:
  inline handler methods that need to see THD and TABLE definitions
sql/sql_select.cc:
  no ha_index_read_last_map anymore
sql/sql_table.cc:
  remove HTON_FLUSH_AFTER_RENAME
sql/table.cc:
  set HA_CAN_MEMCMP as appropriate
sql/tztime.cc:
  don't use a key that's stored in the record buffer -
  the engine can overwrite the buffer with anything, destroying the key
storage/myisam/ha_myisam.cc:
  engines don't need to update table->status or use ha_statistic_increment anymore
storage/myisam/ha_myisam.h:
  index_read_last_map is no more
2010-06-05 16:53:36 +02:00
Sergei Golubchik
59eb4f6aa0 include guards 2010-06-03 11:28:54 +02:00
Sergei Golubchik
a0a81bd251 fixes for test suite
mysql-test/suite/pbxt/r/mysqlshow.result:
  update the forgotten test results
sql/table.cc:
  add defensive asserts.
  fix the code that didn't in MySQL > 5.2.0 with frm's created before 5.1.10
2010-06-03 11:28:36 +02:00
Sergei Golubchik
cdebfd3892 handle a case when a user connects with a password to a passwordless account 2010-06-02 17:53:12 +02:00
Sergei Golubchik
ffc8f62b08 merge 5.1->5.2 2010-06-01 21:52:20 +02:00
unknown
0fc39acb81 Automerge MariaDB 5.1.47 release into main. 2010-05-31 10:43:34 +02:00
Sergei Golubchik
6b157f6be3 WL#43: initialize lex->option_list for foreign keys 2010-05-28 10:06:30 +02:00
Sergei Golubchik
4c4b544711 only run maria tests if maria is compiled in 2010-05-27 23:31:37 +02:00
Sergei Golubchik
91575d1fae first initialize variable, then use it, not the other way around 2010-05-27 23:30:37 +02:00
Michael Widenius
80ba8556e7 Fixed compiler warnings
Fixed failing test innodb.innodb-autoinc.test
Enabled innodb test suite

mysql-test/mysql-test-run.pl:
  Enabled innodb test suite
mysql-test/r/innodb-autoinc.result:
  Removed test as it exists in suite innodb
mysql-test/suite/innodb/t/disabled.def:
  Removed innodb-autoinc
mysql-test/suite/innodb/t/innodb-autoinc.test:
  Update to be able to run with plugin
mysql-test/t/innodb-autoinc.test:
  Removed test as it exists in suite innodb
sql/filesort.cc:
  Removed not used variable
sql/slave.cc:
  Remove compiler warnings
storage/pbxt/src/ha_pbxt.cc:
  Removed not used variable
storage/xtradb/dict/dict0crea.c:
  Fixed compiler warning about unsigned comparison
support-files/compiler_warnings.supp:
  Disable some not relevant warnings
2010-05-27 20:18:31 +03:00
Michael Widenius
9e23495b1d Added macros to inform valgrind that memory is uninitialized
include/Makefile.am:
  Make my_valgrind.h global (as it's used by my_global.h)
include/my_global.h:
  Include my_valgrind.h
include/my_sys.h:
  TRASH() moved to my_valgrind.h
include/my_valgrind.h:
  Add VALGRIND defines to mark memory
mysys/my_alloc.c:
  Mark internal freed memory as undefined
2010-05-26 22:27:01 +03:00