Commit graph

11495 commits

Author SHA1 Message Date
msvensson@neptunus.(none)
dee0be6eed Simpler impl. 2005-06-27 14:26:07 +02:00
msvensson@neptunus.(none)
88c96026af Merge neptunus.(none):/home/msvensson/mysql/mysql-5.0
into neptunus.(none):/home/msvensson/mysql/bug10466
2005-06-27 13:12:10 +02:00
msvensson@neptunus.(none)
dcb4789dcb Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into neptunus.(none):/home/msvensson/mysql/mysql-5.0
2005-06-27 12:26:24 +02:00
konstantin@mysql.com
526af17380 Fix the broken test suite in -debug build. 2005-06-27 14:10:56 +04:00
msvensson@neptunus.(none)
eb41ba25e3 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into neptunus.(none):/home/msvensson/mysql/mysql-5.0
2005-06-27 10:53:08 +02:00
konstantin@mysql.com
9b2d517b79 Free unused JOINs early even if using subqueries. 2005-06-25 00:27:40 +04:00
konstantin@mysql.com
153861fa50 Remove an unrelevant assert. 2005-06-24 23:29:00 +04:00
konstantin@mysql.com
aa300fa71b Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/opt/local/work/mysql-5.0-join_free2push
2005-06-24 22:48:46 +04:00
konstantin@mysql.com
56a37f8e07 - don't call JOIN::join_free(1) twice for every join in JOIN::cleanup().
The reason it happened was that both, JOIN::cleanup() and JOIN::join_free(),
went over all nested joins and called cleanup/join_free for them.
For that:
- split recursive and non-recursive parts of JOIN::cleanup() and
JOIN::join_free()
- rename JOIN::cleanup to JOIN::destroy, as it actually destroys its
  argument
- move the recursive part of JOIN::cleanup to st_select_lex::cleanup
- move the non-recursive part of JOIN::join_free to the introduced
  method JOIN::cleanup().
2005-06-24 22:48:12 +04:00
ingo@mysql.com
1c33fbc4c1 Bug#10178 - failure to find a row in heap table by concurrent UPDATEs
Bug#10568 - Function 'LAST_DAY(date)' does not return NULL for invalid argument.
Manual merge.
2005-06-24 19:47:18 +02:00
evgen@moonbone.local
182c0ca5b7 Merge 2005-06-24 21:47:17 +04:00
evgen@moonbone.local
3415fae789 Fix bug#11325 Wrong date comparison in views
Wrong comparing method were choosen which results in false comparison.

Make Item_bool_func2::fix_length_and_dec() to get type and field from
real_item() to make REF_ITEM pass the check.
2005-06-24 20:16:52 +04:00
ingo@mysql.com
2dcf451b81 Bug#10178 - failure to find a row in heap table by concurrent UPDATEs
Moved the key statistics update to info().
The table is not locked in open(). This made wrong stats possible.

No test case for the test suite.
This happens only with heavy concurrency.
A test script is added to the bug report.
2005-06-24 17:47:09 +02:00
ramil@mysql.com
b0e6db14c5 backport for #10568: Function 'LAST_DAY(date)' does not return NULL for invalid argument. 2005-06-24 14:04:48 +05:00
igor@rurik.mysql.com
6f09af1d95 Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-5.0
into rurik.mysql.com:/home/igor/mysql-5.0
2005-06-24 01:26:35 -07:00
igor@rurik.mysql.com
c3aa161c28 field.cc:
Correction after manula merge.
2005-06-24 01:21:18 -07:00
bell@sanja.is.com.ua
f1d3f0811d Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-5.0
into sanja.is.com.ua:/home/bell/mysql/bk/work-bug3-5.0
2005-06-24 00:25:28 +03:00
bell@sanja.is.com.ua
3c5286c3e2 fixed encrypt() print (BUG#7024) 2005-06-24 00:24:11 +03:00
timour@mysql.com
9d1f292840 Merge tkatchaounov@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/timka/mysql/src/5.0-virgin
2005-06-23 23:26:49 +03:00
bell@sanja.is.com.ua
a771b57172 Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-5.0
into sanja.is.com.ua:/home/bell/mysql/bk/work-bug3-5.0
2005-06-23 21:45:53 +03:00
igor@rurik.mysql.com
abe8ec4be2 Merge rurik.mysql.com:/home/igor/mysql-5.0
into rurik.mysql.com:/home/igor/dev/mysql-5.0-0
2005-06-23 11:22:32 -07:00
igor@rurik.mysql.com
268110b34b Manual merge 2005-06-23 11:22:30 -07:00
konstantin@mysql.com
1e84070459 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/opt/local/work/mysql-5.0-sp_instr
2005-06-23 22:22:30 +04:00
sergefp@mysql.com
2942b06a2c Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/psergey/mysql-5.0-bug8441
2005-06-23 19:41:42 +02:00
timour@mysql.com
1994b8b8ea Merge tkatchaounov@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/timka/mysql/src/4.1-virgin
2005-06-23 20:06:35 +03:00
igor@rurik.mysql.com
1c348f48a9 Merge rurik.mysql.com:/home/igor/mysql-4.1
into rurik.mysql.com:/home/igor/dev/mysql-4.1-1
2005-06-23 10:06:35 -07:00
sergefp@mysql.com
009e2457d9 Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/psergey/mysql-4.1-bug10151
2005-06-23 19:06:34 +02:00
evgen@moonbone.local
be76efab84 sql_parse.cc:
Fix for fix for bug #9728
  Error caused server hang on prepared insert ... select
2005-06-23 21:06:33 +04:00
sergefp@mysql.com
f1085fb3be Merge 2005-06-23 19:05:36 +02:00
bell@sanja.is.com.ua
f3b6ec6e5f removed unneed line 2005-06-23 19:33:19 +03:00
konstantin@mysql.com
4c4079430d - implement inheritance of sp_instr: public Query_arena.
We need every instruction to have its own arena, because we want to
  track instruction's state (INITIALIZED_FOR_SP -> EXECUTED). Because of 
  `if' statements and other conditional instructions used in stored 
  procedures, not every instruction of a stored procedure gets executed 
  during the first (or even subsequent) execution of the procedure. 
  So it's better if we track the execution state of every instruction 
  independently.
  All instructions of a given procedure now also share sp_head's 
  mem_root, but keep their own free_list.
  This simplifies juggling with free Item lists in sp_head::execute.
- free_items() moved to be a member of Query_arena. 
- logic of 'backup_arena' debug member of Query_arena has been
  changed to support
  multi-backups. Until now, TRUE 'backup_arena' meant that there is
  exactly one active backup of the THD arena. Now it means simply that
  the arena is used for backup, so that we can't accidentally overwrite an 
  existing backup. This allows doing multiple backups, e.g. in
  sp_head::execute and Cursor::fetch, when THD arena is already backed up
  but we want to set yet another arena (usually the 'permanent' arena,
  to save permanent transformations/optimizations of a parsed tree).
2005-06-23 20:22:08 +04:00
bell@sanja.is.com.ua
50784392aa Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-5.0
into sanja.is.com.ua:/home/bell/mysql/bk/work-bug3-5.0
2005-06-23 18:30:59 +03:00
bell@sanja.is.com.ua
56b2fc10a8 fixed environment restoring in case of error during SP function execution (BUG#9503)
#define macro improvement
2005-06-23 18:29:10 +03:00
timour@mysql.com
67646ab141 Merge mysql.com:/home/timka/mysql/src/5.0-virgin
into mysql.com:/home/timka/mysql/src/5.0-dbg
2005-06-23 17:23:48 +03:00
igor@rurik.mysql.com
c73c2af614 func_str.result, func_str.test:
Added a test case for bug #10124.
sql_select.h, item_subselect.cc, sql_select.cc:
  Fixed bug #10124.
  The copy method of the store_key classes can return
  STORE_KEY_OK=0, STORE_KEY_FATAL=1, STORE_KEY_CONV=2 now.
field.cc:
  Fixed bug #10124.
  When ussuing a warning the store methods return 2 instead of 1 now.
2005-06-23 06:15:50 -07:00
igor@rurik.mysql.com
c63914c0b3 opt_range.cc:
Identation correction.
2005-06-23 04:10:43 -07:00
msvensson@neptunus.(none)
d36c75aad8 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into neptunus.(none):/home/msvensson/mysql/mysql-5.0
2005-06-23 13:10:42 +02:00
igor@rurik.mysql.com
4f93e84103 Merge rurik.mysql.com:/home/igor/mysql-5.0
into rurik.mysql.com:/home/igor/dev/mysql-5.0-0
2005-06-23 04:10:42 -07:00
sergefp@mysql.com
d66770b5e6 Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/psergey/mysql-5.0-back-vac-look
2005-06-23 11:10:41 +00:00
timour@mysql.com
b3acc7fe39 Fix for BUG#11185.
The source of the problem is in Field_longlong::cmp. If 'this' is
  an unsigned number, the method casts both the current value, and
  the constant that we compare with to an unsigned number. As a
  result if the constant we compare with is a negative number, it
  wraps to some unsigned number, and the comparison is incorrect.
  
  When the optimizer chooses the "range" access method, this problem
  causes handler::read_range_next to reject the current key when the
  upper bound key is a negative number because handler::compare_key
  incorrectly considers the positive and negative keys to be equal.
  
  The current patch does not correct the source of the problem in
  Field_longlong::cmp because it is not easy to propagate sign
  information about the constant at query execution time. Instead
  the patch changes the range optimizer so that it never compares
  unsiged fields with negative constants. As an added benefit,
  queries that do such comparisons will execute faster because
  the range optimizer replaces conditions like:
  (a) (unsigned_int [< | <=] negative_constant) == FALSE
  (b) (unsigned_int [> | >=] negative_constant) == TRUE
  with the corresponding constants.
  In some cases this may even result in constant time execution.
2005-06-23 12:08:56 +03:00
igor@rurik.mysql.com
893c6c9b46 opt_range.cc:
Fixed buf #11487.
  Added a call of  QUICK_RANGE_SELECT::init to the
  QUICK_RANGE_SELECT::reset method. Without it the second
  evaluation of a subquery employing the range access failed.
subselect.result, subselect.test:
  Added a test case for bug #11487.
2005-06-23 02:08:30 -07:00
timour@mysql.com
3589c51c3b Merge mysql.com:/home/timka/mysql/src/4.1-virgin
into mysql.com:/home/timka/mysql/src/4.1-bug-11185
2005-06-23 11:04:40 +03:00
timour@mysql.com
294498e203 Fix for BUG#11185.
The source of the problem is in Field_longlong::cmp. If 'this' is
an unsigned number, the method casts both the current value, and
the constant that we compare with to an unsigned number. As a
result if the constant we compare with is a negative number, it
wraps to some unsigned number, and the comparison is incorrect.

When the optimizer chooses the "range" access method, this problem
causes handler::read_range_next to reject the current key when the
upper bound key is a negative number because handler::compare_key
incorrectly considers the positive and negative keys to be equal.

The current patch does not correct the source of the problem in
Field_longlong::cmp because it is not easy to propagate sign
information about the constant at query execution time. Instead
the patch changes the range optimizer so that it never compares
unsiged fields with negative constants. As an added benefit,
queries that do such comparisons will execute faster because
the range optimizer replaces conditions like:
(a) (unsigned_int [< | <=] negative_constant) == FALSE
(b) (unsigned_int [> | >=] negative_constant) == TRUE
with the corresponding constants.
In some cases this may even result in constant time execution.
2005-06-23 10:56:44 +03:00
evgen@moonbone.local
4ddc13af42 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0
into moonbone.local:/work/mysql-5.0-merge
2005-06-23 03:51:47 +04:00
evgen@moonbone.local
dc65464688 insert_update.result, insert_update.test, sql_base.cc:
Fix for bugfix #9728 merge
2005-06-23 03:51:10 +04:00
evgen@moonbone.local
5c8e3341d3 Bug #9728 fix merge 2005-06-23 01:02:43 +04:00
patg@radha.local
7f5d7d47b3 Merge pgalbraith@bk-internal.mysql.com:/home/bk/mysql-5.0
into radha.local:/Volumes/disk2s1/mysql-5.0
2005-06-22 21:23:33 +02:00
konstantin@mysql.com
6a0adade83 Remove THD::stmt_backup 2005-06-22 23:12:25 +04:00
sergefp@mysql.com
3196513258 Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/psergey/mysql-4.1-bug10151
2005-06-22 20:59:32 +02:00
evgen@moonbone.local
6b9df50c5e item.h:
Fix for fix for bug#9728 decreased functionality in "on duplicate key update"
  Have to return false to set flag for whole expression.
2005-06-22 22:58:44 +04:00