Commit graph

10560 commits

Author SHA1 Message Date
unknown
0fd2b3ddc6 Bug#28133: Wrong DATE/DATETIME comparison in IN() function.
The IN function was comparing DATE/DATETIME values either as ints or as
strings. Both methods have their disadvantages and may lead to a wrong
result.

Now IN function checks whether all of its arguments has the STRING result
types and at least one of them is a DATE/DATETIME item. If so it uses either
an object of the in_datetime class or an object of the cmp_item_datetime
class to perform its work. If the IN() function arguments are rows then
row columns are checked whether the DATE/DATETIME comparator should be used
to compare them.
The in_datetime class is used to find occurence of the item to be checked
in the vector of the constant DATE/DATETIME values. The cmp_item_datetime
class is used to compare items one by one in the DATE/DATETIME context.
Both classes obtain values from items with help of the get_datetime_value()
function and cache the left item if it is a constant one.



mysql-test/t/type_datetime.test:
  Added a test case for the bug#28133: Wrong DATE/DATETIME comparison in IN() function.
mysql-test/r/type_datetime.result:
  Added a test case for the bug#28133: Wrong DATE/DATETIME comparison in IN() function.
mysql-test/r/func_in.result:
  A test case result is corrected after the fix for the bug#28133.
sql/item_cmpfunc.h:
  Bug#28133: Wrong DATE/DATETIME comparison in IN() function.
  Two DATE/DATETIME comparison classes are added.
  The in_datetime class is used to find occurence of the item to be checked
  in the vector of the constant DATE/DATETIME values. The cmp_item_datetime
  class is used to compare items one by one in the DATE/DATETIME context.
  Both classes obtain values from items with help of the get_datetime_value()
  function and cache the left item if it is a constant one.
sql/item_cmpfunc.cc:
  Bug#28133: Wrong DATE/DATETIME comparison in IN() function.
  Now IN function checks whether all of its arguments has the STRING result
  types and at least one of them is a DATE/DATETIME item. If so it uses either
  an object of the in_datetime class or an object of the cmp_item_datetime
  class to perform its work. If the IN() function arguments are rows then
  row columns are checked whether the DATE/DATETIME comparator should be used
  to compare them.
2007-05-07 22:20:43 +04:00
unknown
51d19e3242 Additional fix for the bug#27590.
tests/mysql_client_test.c:
  Fixed failing build on the windows platform.
mysql-test/r/ps_7ndb.result:
  The result of the adjusted test case after fix for bug#27590.
mysql-test/r/ps_6bdb.result:
  The result of the adjusted test case after fix for bug#27590.
sql/item_cmpfunc.cc:
  A warning is fixed.
2007-04-28 00:04:50 +04:00
unknown
17fbe3b209 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/16377-bug-5.0-opt-mysql


mysql-test/r/subselect.result:
  Auto merged
sql/item.cc:
  Auto merged
sql/item.h:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/item_cmpfunc.h:
  Auto merged
sql/sql_select.cc:
  Auto merged
tests/mysql_client_test.c:
  Auto merged
2007-04-27 21:26:47 +04:00
unknown
674ecb2104 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/27590-bug-5.0-opt-mysql


mysql-test/r/subselect.result:
  Auto merged
sql/item.cc:
  Auto merged
sql/item.h:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/item_cmpfunc.h:
  Auto merged
sql/sql_select.cc:
  Auto merged
tests/mysql_client_test.c:
  Auto merged
2007-04-27 21:07:05 +04:00
unknown
7216281eab Bug#16377: Wrong DATE/DATETIME comparison in BETWEEN function.
The BETWEEN function was comparing DATE/DATETIME values either as ints or as
strings. Both methods have their disadvantages and may lead to a wrong
result.

Now BETWEEN function checks whether all of its arguments has the STRING result
types and at least one of them is a DATE/DATETIME item. If so it sets up
two Arg_comparator obects to compare with the compare_datetime() comparator
and uses them to compare such items.

Added two Arg_comparator object members and one flag to the
Item_func_between class for the correct DATE/DATETIME comparison.
The Item_func_between::fix_length_and_dec() function now detects whether
it's used for DATE/DATETIME comparison and sets up newly added Arg_comparator
objects to do this.
The Item_func_between::val_int() now uses Arg_comparator objects to perform
correct DATE/DATETIME comparison.
The owner variable of the Arg_comparator class now can be set to NULL if the
caller wants to handle NULL values by itself.
Now the Item_date_add_interval::get_date() function ajusts cached_field type according to the detected type.


mysql-test/t/type_datetime.test:
  Added a test case for the bug#16377: Wrong DATE/DATETIME comparison in BETWEEN function.
mysql-test/r/type_datetime.result:
  Added a test case for the bug#16377: Wrong DATE/DATETIME comparison in BETWEEN function.
mysql-test/r/query_cache.result:
  A test case result corrected after the fix for bug#16377.
sql/item_timefunc.cc:
  Bug#16377: Wrong DATE/DATETIME comparison in BETWEEN function.
  Now the Item_date_add_interval::get_date() function ajusts cached_field type according to the detected type.
sql/item_cmpfunc.cc:
  Bug#16377: Wrong DATE/DATETIME comparison in BETWEEN function.
  The Item_func_between::fix_length_and_dec() function now detects whether
  it's used for DATE/DATETIME comparison and sets up newly added Arg_comparator
  objects to do this.
  The Item_func_between::val_int() now uses Arg_comparators to perform correct
  DATE/DATETIME comparison.
  The owner variable of the Arg_comparator class now can be set to NULL if the
  caller wants to handle NULL values by itself.
sql/item_cmpfunc.h:
  Bug#16377: Wrong DATE/DATETIME comparison in BETWEEN function.
  Added two Arg_comparator object members and one flag
  to the Item_func_between class for the correct DATE/DATETIME comparison.
2007-04-27 00:40:35 +04:00
unknown
ed7a9e8bd4 Merge moonbone.local:/mnt/gentoo64/work/27590-bug-5.0-opt-mysql
into  moonbone.local:/mnt/gentoo64/work/16377-bug-5.0-opt-mysql


mysql-test/r/subselect.result:
  Auto merged
sql/item.cc:
  Auto merged
sql/item.h:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/item_cmpfunc.h:
  Auto merged
sql/sql_select.cc:
  Auto merged
tests/mysql_client_test.c:
  Auto merged
2007-04-27 00:13:13 +04:00
unknown
7bb6a72593 Bug#27590: Wrong DATE/DATETIME comparison.
DATE and DATETIME can be compared either as strings or as int. Both
methods have their disadvantages. Strings can contain valid DATETIME value
but have insignificant zeros omitted thus became non-comparable with
other DATETIME strings. The comparison as int usually will require conversion
from the string representation and the automatic conversion in most cases is
carried out in a wrong way thus producing wrong comparison result. Another
problem occurs when one tries to compare DATE field with a DATETIME constant.
The constant is converted to DATE losing its precision i.e. losing time part.

This fix addresses the problems described above by adding a special
DATE/DATETIME comparator. The comparator correctly converts DATE/DATETIME
string values to int when it's necessary, adds zero time part (00:00:00)
to DATE values to compare them correctly to DATETIME values. Due to correct
conversion malformed DATETIME string values are correctly compared to other
DATE/DATETIME values.

As of this patch a DATE value equals to DATETIME value with zero time part.
For example '2001-01-01' equals to '2001-01-01 00:00:00'.

The compare_datetime() function is added to the Arg_comparator class.
It implements the correct comparator for DATE/DATETIME values.
Two supplementary functions called get_date_from_str() and get_datetime_value()
are added. The first one extracts DATE/DATETIME value from a string and the
second one retrieves the correct DATE/DATETIME value from an item.
The new Arg_comparator::can_compare_as_dates() function is added and used
to check whether two given items can be compared by the compare_datetime()
comparator.
Two caching variables were added to the Arg_comparator class to speedup the
DATE/DATETIME comparison.
One more store() method was added to the Item_cache_int class to cache int
values.
The new is_datetime() function was added to the Item class. It indicates
whether the item returns a DATE/DATETIME value.


sql/item.cc:
  Bug#27590: Wrong DATE/DATETIME comparison.
  One more store() method was added to the Item_cache_int class to cache int
  values.
  The new is_datetime() function was added to the Item class. It indicates
  whether the item returns a DATE/DATETIME value.
sql/item.h:
  Bug#27590: Wrong DATE/DATETIME comparison.
  One more store() method was added to the Item_cache_int class to cache int
  values.
  The new is_datetime() function was added to the Item class. It indicates
  whether the item returns a DATE/DATETIME value.
sql/item_cmpfunc.cc:
  Bug#27590: Wrong DATE/DATETIME comparison.
  The compare_datetime() function is added to the Arg_comparator class.
  It implements the correct comparator for DATE/DATETIME values.
  Two supplementary functions called get_date_from_str() and get_datetime_value()
  are added. The first one extracts DATE/DATETIME value from a string and the
  second one retrieves the correct DATE/DATETIME value from an item.
  The new Arg_comparator::can_compare_as_dates() function is added and used
  to check whether two given items can be compared by the compare_datetime()
  comparator.
sql/item_cmpfunc.h:
  Bug#27590: Wrong DATE/DATETIME comparison.
  The compare_datetime() function is added to the Arg_comparator class.
  It implements the correct comparator for DATE/DATETIME values.
  Two supplementary functions called get_date_from_str() and get_datetime_value()
  are added. The first one extracts DATE/DATETIME value from a string and the
  second one retrieves the correct DATE/DATETIME value from an item.
  The new Arg_comparator::can_compare_as_dates() function is added and used
  to check whether two given items can be compared by the compare_datetime()
  comparator.
  Two caching variables were added to the Arg_comparator class to speedup the
  DATE/DATETIME comparison.
mysql-test/include/ps_conv.inc:
  Test case adjusted after fix for bug#27590.
mysql-test/r/distinct.result:
  Test cases results are corrected after fix for bug#27590.
sql/sql_select.cc:
  Bug#27590: Wrong DATE/DATETIME comparison.
  The test_if_equality_guarantees_uniqueness() function now uses
  Arg_comparator::can_compare_as_dates() to detect comparable DATE/DATETIME items.
mysql-test/r/ps_2myisam.result:
  The result of the adjusted test case after fix for bug#27590.
mysql-test/r/ps_3innodb.result:
  The result of the adjusted test case after fix for bug#27590.
mysql-test/r/ps_4heap.result:
  The result of the adjusted test case after fix for bug#27590.
mysql-test/r/ps_5merge.result:
  The result of the adjusted test case after fix for bug#27590.
mysql-test/r/subselect.result:
  Test cases results are corrected after fix for bug#27590.
mysql-test/r/type_datetime.result:
  Added a test case for the bug#27590: Wrong DATE/DATETIME comparison.
mysql-test/t/type_datetime.test:
  Added a test case for the bug#27590: Wrong DATE/DATETIME comparison.
tests/mysql_client_test.c:
  Test case adjusted after fix for bug#27590.
2007-04-27 00:12:09 +04:00
unknown
7062a44622 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B27363-5.0-opt


mysql-test/r/subselect.result:
  Auto merged
mysql-test/t/subselect.test:
  Auto merged
sql/item.cc:
  Auto merged
sql/item_sum.cc:
  Auto merged
2007-04-26 11:16:01 +03:00
unknown
e14fd2b651 Bug #27363:
Validity checks for nested set functions
were not taking into account that the enclosed
set function may be on a nest level that is
lower than the nest level of the enclosing set
function.
Fixed by :
 - propagating max_sum_func_level
up the enclosing set functions chain.
 - updating the max_sum_func_level of the 
   enclosing set function when the enclosed set
   function is aggregated above or on the same
   nest level of as the level of the enclosing 
   set function.
 - updating the max_arg_level of the enclosing
   set function on a reference that refers to
   an item above or on the same nest level
   as the level of the enclosing set function.
 - Treating both Item_field and Item_ref as possibly
   referencing items from outer nest levels.


mysql-test/r/subselect.result:
  Bug #27363: test cases
mysql-test/t/subselect.test:
  Bug #27363: test cases
sql/item.cc:
  Bug #27363:
  Treat the reference as an outer reference for the
  enclosing set function even if it's referencing
  an item that is above the nest level of the
  enclosing set function.
  Consider both Item_field and Item_ref.
sql/item_sum.cc:
  Bug #27363: Use the enclosed set function aggregation
  level to mark the enclosing set function even 
  if it's aggregated on a level that is above the 
  nest level of the enclosing set function.
  Pass max_sum_func_level up the accending branch of the
  recursion because it must take into account each
  directly or indirectly nested set function.
2007-04-26 11:12:17 +03:00
unknown
209bf25a7f Fixed bug #27650:
INSERT into InnoDB table may cause "ERROR 1062 (23000): Duplicate entry..."
errors or lost records after multi-row INSERT of the form:
"INSERT INTO t (id...) VALUES (NULL...) ON DUPLICATE KEY UPDATE id=VALUES(id)",
where "id" is an AUTO_INCREMENT column.

It happens because InnoDB handler forgets to save next insert id after
updating of auto_increment column with new values. As result of that
last insert id stored inside InnoDB dictionary tables differs from it's
cached thd->next_insert_id value.


sql/ha_innodb.cc:
  Fixed bug #27650.
  INSERT into InnoDB table may cause "ERROR 1062 (23000): Duplicate entry..."
  errors or lost records after multi-row INSERT of the form:
  "INSERT INTO t (id...) VALUES (NULL...) ON DUPLICATE KEY UPDATE id=VALUES(id)",
  where "id" is an AUTO_INCREMENT column.
  It happens because InnoDB handler forgets to save next insert id after
  updating of auto_increment column with new values. As result of that
  last insert id stored inside InnoDB dictionary tables differs from it's
  cached thd->next_insert_id value.
  ha_innobase::write_row() function has been corrected.
mysql-test/t/innodb_mysql.test:
  Added a test case for bug #27650.
mysql-test/r/innodb_mysql.result:
  Added a test case for bug #27650.
2007-04-26 02:01:23 +05:00
unknown
5a35befff5 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/27874-bug-5.0-opt-mysql
2007-04-24 22:43:30 +04:00
unknown
3ffdeef04d Bug#27874: Non-grouped columns are allowed by * in ONLY_FULL_GROUP_BY mode.
When fields are inserted instead of * in the select list they were not marked
for check for the ONLY_FULL_GROUP_BY mode.

The Field_iterator_table::create_item() function now marks newly created
items for check when in the ONLY_FULL_GROUP_BY mode.
The setup_wild() and the insert_fields() functions now maintain the
cur_pos_in_select_list counter for the ONLY_FULL_GROUP_BY mode.


sql/sql_base.cc:
  Bug#27874: Non-grouped columns are allowed by * in ONLY_FULL_GROUP_BY mode.
  The setup_wild() and the insert_fields() functions now maintain the
  cur_pos_in_select_list counter for the ONLY_FULL_GROUP_BY mode.
sql/table.cc:
  Bug#27874: Non-grouped columns are allowed by * in ONLY_FULL_GROUP_BY mode.
  The Field_iterator_table::create_item() function now marks newly created
  items for check when in the ONLY_FULL_GROUP_BY mode.
mysql-test/r/group_by.result:
  Added a test case for the bug#27874: Non-grouped columns are allowed by * in ONLY_FULL_GROUP_BY mode.
mysql-test/t/group_by.test:
  Added a test case for the bug#27874: Non-grouped columns are allowed by * in ONLY_FULL_GROUP_BY mode.
2007-04-24 22:35:57 +04:00
unknown
cfe8831148 Merge magare.gmz:/home/kgeorge/mysql/work/B27811-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B27811-5.0-opt
2007-04-23 19:02:40 +03:00
unknown
b570cee115 Bug #27811:
FORCE_INIT_OF_VARS was not defined for the 
 debug builds on Windows. This caused LINT_INIT
 macro to be defined as NOP and this triggers
 false alarms about use of uninitialized with
 the runtime libs of some Visual Studio versions.
 Fixed by defining FORCE_INIT_OF_VARS to match the
 state of the Windows


CMakeLists.txt:
  Bug #27811: added the missing build option
mysql-test/r/windows.result:
  Bug #27811: test case
mysql-test/t/windows.test:
  Bug #27811: test case
2007-04-23 17:15:51 +03:00
unknown
b2bd69adbf Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  mysql.com:/home/psergey/mysql-5.0-bug27939


sql/sql_select.cc:
  Auto merged
2007-04-21 20:27:39 +04:00
unknown
8a702a1e7b Merge bk-internal.mysql.com:/data0/bk/mysql-5.0
into  bk-internal.mysql.com:/data0/bk/mysql-5.0-opt


sql/item_cmpfunc.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/sql_view.cc:
  Auto merged
2007-04-21 00:36:21 +02:00
unknown
5fb275a6f5 Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  mysql.com:/home/psergey/mysql-5.0-bug27939
2007-04-21 00:24:43 +04:00
unknown
d5ca6582b4 Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  mysql.com:/home/psergey/mysql-5.0-bug27939


sql/sql_select.cc:
  Auto merged
2007-04-20 17:30:15 +04:00
unknown
4a3027aaa2 Added missing result file for rpl_critical_errors.
mysql-test/r/rpl_critical_errors.result:
  New BitKeeper file ``mysql-test/r/rpl_critical_errors.result''
2007-04-20 14:08:12 +02:00
unknown
323a213539 Merge gshchepa.loc:/home/uchum/work/bk-trees/mysql-5.0-opt
into  gshchepa.loc:/home/uchum/work/bk-trees/mysql-5.0-opt-27704
2007-04-20 16:44:50 +05:00
unknown
a501fdd695 Merge gshchepa.loc:/home/uchum/work/bk-trees/mysql-4.1-opt-27704
into  gshchepa.loc:/home/uchum/work/bk-trees/mysql-5.0-opt-27704


mysql-test/r/subselect.result:
  Auto merged
mysql-test/t/row.test:
  Auto merged
mysql-test/r/row.result:
  Test case updated for Bug#27704 (incorrect comparison
  of rows with NULL components).
sql/item_cmpfunc.cc:
  Bug#27704: incorrect comparison of rows with NULL components.
sql/item_cmpfunc.h:
  Bug#27704: incorrect comparison of rows with NULL components.
  Cosmetic fix.
2007-04-20 15:31:33 +05:00
unknown
a8f639fccc Bug#27704: incorrect comparison of rows with NULL components
Support for NULL components was incomplete for row comparison,
fixed.  Added support for abort_on_null at compare_row() like
in 5.x


sql/item_cmpfunc.h:
  Bug#27704: incorrect comparison of rows with NULL components
  Added support for abort_on_null at Item_bool_func2
  like in 5.x
sql/item_cmpfunc.cc:
  Bug#27704: incorrect comparison of rows with NULL components
  Support for NULL components was incomplete for row comparison,
  fixed. Added support for abort_on_null at compare_row() like
  in 5.x
mysql-test/t/row.test:
  Test case updated for Bug#27704 (incorrect comparison 
  of rows with NULL components)
mysql-test/r/row.result:
  Test case updated for Bug#27704 (incorrect comparison 
  of rows with NULL components)
mysql-test/r/subselect.result:
  Test case updated for Bug#27704 (incorrect comparison 
  of rows with NULL components)
2007-04-20 15:14:09 +05:00
unknown
a4ffe9e435 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B27786-5.0-opt
2007-04-20 12:01:54 +03:00
unknown
f3e261a997 Bug #24778: Innodb: No result when using ORDER BY
This bug was intruduced by the fix for bug#17212 (in 4.1). It is not 
ok to call test_if_skip_sort_order since this function will 
alter the execution plan. By contract it is not ok to call 
test_if_skip_sort_order in this context.

This bug appears only in the case when the optimizer has chosen 
an index for accessing a particular table but finds a covering 
index that enables it to skip ORDER BY. This happens in 
test_if_skip_sort_order.


mysql-test/r/key.result:
  Bug#24778
  
  test case.
  
  The bug causes the result to be the empty set.
mysql-test/t/key.test:
  Bug#24778
  
  The minimal test case that reveals the bug. The reason for such a 
  complicated schema is that we have to convince the optimizer to 
  pick one index, then discard it in order to be able to skip 
  ORDER BY.
sql/sql_select.cc:
  bug#24778
  
  Removed the call to test_if_skip_sort_order that constituted the
  bug.
2007-04-20 11:01:53 +02:00
unknown
8bc4d18289 Merge romeo.(none):/home/bkroot/mysql-5.0-rpl
into  romeo.(none):/home/bk/merge-mysql-5.0


client/mysql.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/slave.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
2007-04-20 10:35:27 +02:00
unknown
b6451440b7 Merge mkindahl@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl
into  romeo.(none):/home/bkroot/mysql-5.0-rpl
2007-04-20 10:28:44 +02:00
unknown
e0444ba436 Bug #27786:
When merging views into the enclosing statement
the ORDER BY clause of the view is merged to the
parent's ORDER BY clause.
However when the VIEW is merged into an UNION
branch the ORDER BY should be ignored. 
Use of ORDER BY for individual SELECT statements
implies nothing about the order in which the rows
appear in the final result because UNION by default
produces unordered set of rows.
Fixed by ignoring the ORDER BY clause from the merge
view when expanded in an UNION branch.


mysql-test/r/view.result:
  Bug #27786: test case
mysql-test/t/view.test:
  Bug #27786: test case
sql/sql_lex.h:
  Bug #27786: add a is_union() inlined function
  Returns true if the unit represents an UNION.
sql/sql_view.cc:
  Bug #27786: ignore ORDER BY in mergeable views when in UNION context
2007-04-20 10:49:45 +03:00
unknown
5b0ec8709a Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B27530-5.0-opt
2007-04-19 15:07:03 +03:00
unknown
1b8ecd274e BUG#27939: Early NULLs filtering doesn't work for eq_ref access
- Turn it on for JT_EQ_REF access method


mysql-test/r/join.result:
  BUG#27939: Testcase
mysql-test/t/join.test:
  BUG#27939: Testcase
2007-04-19 03:04:23 +04:00
unknown
579c2bff63 Fixed bug #27870. The bug that causes crashes manifests itself at some
conditions when executing an equijoin query with WHERE condition
containing a subquery predicate of the form join_attr NOT IN (SELECT ...).

To resolve a problem of the correct evaluation of the expression
  attr NOT IN (SELECT ...)
an array of guards is created to make it possible to filter out some 
predicates of the EXISTS subquery into which the original subquery 
predicate is transformed, in the cases when a takes the NULL value. 
If attr is defined as a field that cannot be NULL than such an array 
is not needed and is not created. 
However if the field a occurred also an an equijoin predicate t2.a=t1.b
and table t1 is accessed before table t2 then it may happen that the 
the EXISTS subquery is pushed down to the condition evaluated just after
table t1 has been accessed. In this case any occurrence of t2.a is 
substituted for t1.b. When t1.b takes the value of NULL an attempt is 
made to turn on the corresponding guard. This action caused a crash as 
no guard array had been created.

Now the code of Item_in_subselect::set_cond_guard_var checks that the guard
array has been created before setting a guard variable on. Otherwise the
method does nothing. It cannot results in returning a row that could be
rejected as the condition t2.a=t1.b will be checked later anyway.        


mysql-test/r/subselect3.result:
  Added a test case for bug #27870.
mysql-test/t/subselect3.test:
  Added a test case for bug #27870.
sql/item_subselect.h:
  Fixed bug #27870. The bug that causes crashes manifests itself at some
  conditions when executing an equijoin query with WHERE condition
  containing a subquery predicate of the form join_attr NOT IN (SELECT ...).
  
  Forced Item_in_subselect::set_cond_guard_var to check that the guard
  array has been created before setting a guard variable on. Otherwise the
  method does nothing.
2007-04-17 17:35:29 -07:00
unknown
4eecb58fd6 Merge bk-internal.mysql.com:/data0/bk/mysql-5.0
into  bk-internal.mysql.com:/data0/bk/mysql-5.0-marvel


sql/ha_ndbcluster.cc:
  Auto merged
sql/item.cc:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/sql_delete.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
2007-04-17 15:52:03 +02:00
unknown
46e37afd06 Raise version number after cloning 5.0.40 2007-04-17 15:22:48 +02:00
unknown
6ad00742b7 subselect.test, subselect.result:
After merge fix.


mysql-test/r/subselect.result:
  After merge fix.
mysql-test/t/subselect.test:
  After merge fix.
2007-04-15 09:22:45 +04:00
unknown
9255aab5bf Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/27321-bug-5.0-opt-mysql


mysql-test/r/subselect3.result:
  Auto merged
sql/item.cc:
  Auto merged
sql/item.h:
  Auto merged
sql/sql_select.cc:
  Auto merged
mysql-test/r/subselect.result:
  Manually merged
mysql-test/t/subselect.test:
  Manually merged
mysql-test/t/subselect3.test:
  Manually merged
2007-04-15 08:41:35 +04:00
unknown
1cf3b96513 Bug#27321: Wrong subquery result in a grouping select.
The Item_outer_ref class based on the Item_direct_ref class was always used
to represent an outer field. But if the outer select is a grouping one and the 
outer field isn't under an aggregate function which is aggregated in that
outer select an Item_ref object should be used to represent such a field.
If the outer select in which the outer field is resolved isn't grouping then
the Item_field class should be used to represent such a field.
This logic also should be used for an outer field resolved through its alias
name.

Now the Item_field::fix_outer_field() uses Item_outer_field objects to
represent aliased and non-aliased outer fields for grouping outer selects
only.
Now the fix_inner_refs() function chooses which class to use to access outer
field - the Item_ref or the Item_direct_ref. An object of the chosen class
substitutes the original field in the Item_outer_ref object.
The direct_ref and the found_in_select_list fields were added to the
Item_outer_ref class.


mysql-test/t/subselect3.test:
  Some test cases were corrected after the fix for the bug#27321.
mysql-test/r/subselect3.result:
  Some test cases were corrected after the fix for the bug#27321.
mysql-test/t/subselect.test:
  Added a test case for the bug#27321: Wrong subquery result in a grouping select.
mysql-test/r/subselect.result:
  Added a test case for the bug#27321: Wrong subquery result in a grouping select.
  Some test cases were corrected after this fix.
sql/sql_union.cc:
  Bug#27321: Wrong subquery result in a grouping select.
  Cleanup of the inner_refs_list.
sql/sql_select.cc:
  Bug#27321: Wrong subquery result in a grouping select.
  Now the fix_inner_refs() function chooses which class to use to access outer
  field - the Item_ref or the Item_direct_ref. An object of the chosen class
  substitutes the original field in the Item_outer_ref object.
  A comment is corrected.
sql/item.cc:
  Bug#27321: Wrong subquery result in a grouping select.
  Now the Item_field::fix_outer_field() uses Item_outer_field objects to
  represent aliased and non-aliased outer fields for grouping outer selects
  only.
sql/item.h:
  Bug#27321: Wrong subquery result in a grouping select.
  The direct_ref and the found_in_select_list fields were added to the
  Item_outer_ref class.
2007-04-15 08:31:34 +04:00
unknown
21dafaa226 Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-opt
2007-04-13 08:15:49 +02:00
unknown
40dc6be623 Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl
into  mysql.com:/home/bar/mysql-5.0.b20095
2007-04-13 10:06:50 +05:00
unknown
2a4ab288fd Bug#20095 Changing length of VARCHAR field with UTF8 collation does not truncate values
Problem: single byte do_varstring1() function was called, which didn't
check limit on "number of character", and checked only "number of bytes".
Fix: adding a multi-byte aware function do_varstring1_mb(),
to limit on "number of characters"


mysql-test/r/ctype_utf8.result:
  Adding test case
mysql-test/t/ctype_utf8.test:
  Adding test case
sql/field_conv.cc:
  Adding missing function to copy VARCHAR strings
  having one length byte.
2007-04-13 10:05:55 +05:00
unknown
53fa178cb9 Bug#27775 mediumint auto_increment with ndb_restore
- autoincrement column of size medium int not handled in ndb_restore
- added testcase also for other types, tiny, small... etc
2007-04-13 01:37:24 +02:00
unknown
0b54001b21 Bug#5507: TRUNCATE does not work with views.
Support of views wasn't implemented for the TRUNCATE statement.
Now TRUNCATE on views has the same semantics as DELETE FROM view:
mysql_truncate() checks whether the table is a view and falls back
to delete if so.
In order to initialize properly the LEX::updatable for a view
st_lex::can_use_merged() now allows usage of merged views for the
TRUNCATE statement.


mysql-test/r/truncate.result:
  Added a test case for the Bug#5507: TRUNCATE does not work with views.
mysql-test/t/truncate.test:
  Added a test case for the Bug#5507: TRUNCATE does not work with views.
sql/sql_lex.cc:
  Bug#5507: TRUNCATE does not work with views.
  can_use_merged() was denying of usage of merged views for a
  TRUNCATE statement. This results in improper initialization
  of view LEX::updatable. Fixed.
sql/sql_delete.cc:
  Bug#5507: TRUNCATE does not work with views.
  1.mysql_truncate() was lacking of check whether the table is view. Added.
  2.mysql_truncate() calls mysql_delete(), but mysql_delete() always reports
  errors as "DELETE" errors. Fixed.
mysql-test/t/view.test:
  Updated test case for Bug#14540: OPTIMIZE, ANALYZE, REPAIR applied 
  to not a view.
mysql-test/r/view.result:
  Updated test case for Bug#14540: OPTIMIZE, ANALYZE, REPAIR applied 
  to not a view.
2007-04-12 23:21:37 +05:00
unknown
4e84edc9da Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-opt
2007-04-12 18:29:24 +02:00
unknown
461729e087 Merge romeo.(none):/home/bkroot/mysql-5.0-rpl
into  romeo.(none):/home/bk/b26551-mysql-5.0-rpl
2007-04-12 14:32:37 +02:00
unknown
d4dfe7664e BUG#26551 (Aborted query for non-transactional table breaks replication):
Added error code ER_QUERY_INTERRUPTED to the list of special errors
that prevent the slave from starting to execute a query.


sql/slave.cc:
  Added ER_QUERY_INTERRUPTED to special error code that prevents statement
  from being executed on slave.
mysql-test/r/rpl_critical_errors.result.txt:
  New BitKeeper file ``mysql-test/r/rpl_critical_errors.result.txt''
mysql-test/t/rpl_critical_errors.test:
  New BitKeeper file ``mysql-test/t/rpl_critical_errors.test''
2007-04-12 14:00:45 +02:00
unknown
239b385933 Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.0
into  ua141d10.elisa.omakaista.fi:/home/my/bk/mysql-5.0-marvel


client/mysqldump.c:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
mysys/my_malloc.c:
  Auto merged
mysys/my_static.c:
  Auto merged
mysys/safemalloc.c:
  Auto merged
ndb/src/mgmclient/CommandInterpreter.cpp:
  Auto merged
sql/ha_archive.cc:
  Auto merged
sql/ha_innodb.cc:
  Auto merged
sql/ha_ndbcluster.cc:
  Auto merged
sql/handler.cc:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/item_func.h:
  Auto merged
sql/log.cc:
  Auto merged
sql/log_event.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql-common/client.c:
  Auto merged
sql/sp.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sql_delete.cc:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_update.cc:
  Auto merged
sql/table.cc:
  Auto merged
sql-common/my_time.c:
  Auto merged
mysql-test/r/sp.result:
  Merged from main 5.0
sql/sql_load.cc:
  Merged from main 5.0
2007-04-12 12:50:02 +03:00
unknown
d7dadcd7c7 Bug #27758 Restoring NDB backups makes table usable in SQL nodes
- parse indexname using "split" instead of sscanf, as not to break at space
- test case with space in key
- enclose names in printout


mysql-test/r/ndb_restore.result:
  Bug #27758 Restoring NDB backups makes table usable in SQL nodes
  - change to using an index with space to reproduce bug
mysql-test/t/ndb_restore.test:
  Bug #27758 Restoring NDB backups makes table usable in SQL nodes
  - change to using an index with space to reproduce bug
ndb/tools/restore/consumer_restore.cpp:
  Bug #27758 Restoring NDB backups makes table usable in SQL nodes
  - parse indexname using "split" instead of sscanf, as not to break at space
  - enclose names in printout
ndb/tools/restore/restore_main.cpp:
  Bug #27758 Restoring NDB backups makes table usable in SQL nodes
  - enclose names in printout
sql/ha_ndbcluster.cc:
  Bug #27758 Restoring NDB backups makes table usable in SQL nodes
  - correct error message
2007-04-12 11:07:30 +02:00
unknown
7c4db88a92 Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  olga.mysql.com:/home/igor/mysql-5.0-opt
2007-04-11 13:48:02 -07:00
unknown
8d40fa58ed Post-merge fix. 2007-04-11 12:45:27 -07:00
unknown
0ec3c2212e Merge olga.mysql.com:/home/igor/dev-opt/mysql-4.1-opt-bug27484
into  olga.mysql.com:/home/igor/mysql-5.0-opt


mysql-test/t/row.test:
  Auto merged
mysql-test/r/row.result:
  Manual merge
sql/item_cmpfunc.cc:
  Manual merge
2007-04-11 11:57:40 -07:00
unknown
aa051961c9 Fixed bug #27484: a crash when incompatible row expressions with nested rows
are used as arguments of the IN predicate.
Added a function to check compatibility of row expressions. Made sure that this
function to be called for Item_func_in objects by fix_length_and_dec().


mysql-test/r/row.result:
  Added a test case for bug #27484.
mysql-test/t/row.test:
  Added a test case for bug #27484.
2007-04-11 11:41:12 -07:00
unknown
8fe487beba Bug #27530:
The function CRC32() returns unsigned integer.
But the metadata (the unsigned flag) for the 
function was set incorrectly.
As a result type arithmetics based on the 
function's metadata (like finding the concise
type of an temporary table column to hold the result)
returned incorrect results.
Fixed by returning correct type information.

This fix is based on code contributed by Martin Friebe
(martin@hybyte.com) on 2007-03-30.  


mysql-test/r/func_str.result:
  Bug #27530: test case
mysql-test/t/func_str.test:
  Bug #27530: test case
sql/item_strfunc.h:
  Bug #27530: Marked CRC32() as returning unsigned
2007-04-11 13:58:16 +03:00