Commit graph

34139 commits

Author SHA1 Message Date
unknown
4ced38b89b Bug #25382: Passing NULL to an UDF called from stored procedures
crashes server
 Check for null value is reliable only after calling some of the 
 val_xxx() methods. If the val_xxx() method is not called
 the null_value flag will be set only for certain types of NULL
 values (like SQL constant NULLs for example).
 This caused a crash while trying to dereference a NULL pointer
 that is returned by val_str() for NULL values.
 Fixed by swapping the order of val_xxx() and null_value check.


mysql-test/r/udf.result:
  Bug #25382: Passing NULL to an UDF called from stored procedures 
   crashes server
   - test case
mysql-test/t/udf.test:
  Bug #25382: Passing NULL to an UDF called from stored procedures 
   crashes server
   - test case
sql/item_func.cc:
  Bug #25382: Passing NULL to an UDF called from stored procedures 
   crashes server
   - reliably check null_value
2007-01-18 17:33:38 +02:00
unknown
6746efb123 func_str.result:
After merge fix


mysql-test/r/func_str.result:
  After merge fix
2007-01-12 17:35:24 +03:00
unknown
cb96e8bcd8 Merge moonbone.local:/work/latest-4.1-opt-mysql
into  moonbone.local:/work/latest-5.0-opt-mysql


mysql-test/t/func_str.test:
  Auto merged
sql/item_strfunc.cc:
  Auto merged
sql/item_strfunc.h:
  Auto merged
sql/sql_delete.cc:
  Auto merged
mysql-test/r/delete.result:
  Manual merge
mysql-test/r/func_str.result:
  Manual merge
mysql-test/t/delete.test:
  Manual merge
2007-01-12 16:43:52 +03:00
unknown
0f0d0f5bd4 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/work/23417-bug-5.0-opt-mysql


sql/sql_base.cc:
  Auto merged
2007-01-11 23:20:27 +03:00
unknown
4d143a6ff6 Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode.
Currently in the ONLY_FULL_GROUP_BY mode no hidden fields are allowed in the
select list. To ensure this each expression in the select list is checked
to be a constant, an aggregate function or to occur in the GROUP BY list.
The last two requirements are wrong and doesn't allow valid expressions like
"MAX(b) - MIN(b)" or "a + 1" in a query with grouping by a.

The correct check implemented by the patch will ensure that:
any field reference in the [sub]expressions of the select list 
  is under an aggregate function or
  is mentioned as member of the group list or
  is an outer reference or
  is part of the select list element that coincide with a grouping element.

The Item_field objects now can contain the position of the select list
expression which they belong to. The position is saved during the
field's Item_field::fix_fields() call.

The non_agg_fields list for non-aggregated fields is added to the SELECT_LEX
class. The SELECT_LEX::cur_pos_in_select_list now contains the position in the
select list of the expression being currently fixed.


sql/item.cc:
  Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode.
  The Item_field objects now contain the position of the select list
  expression which they belong to. The position is saved at the field's
  Item_field::fix_fields() call.
sql/item.h:
  Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode.
  The Item_field objects now can store the position in the select list of the
  expression to which they are belongs to.
sql/mysql_priv.h:
  Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode.
  Added the UNDEF_POS constant.
sql/sql_base.cc:
  Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode.
  Now the setup_fields() function maintains the cur_pos_in_select_list variable.
sql/sql_lex.cc:
  Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode.
  Set the cur_pos_in_select_list variable and the non_agg_fields list to their initial state.
sql/sql_lex.h:
  Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode.
  The non_agg_fields list for non-aggregated fields is added to the SELECT_LEX
  class. The SELECT_LEX::cur_pos_in_select_list now stores the position in the
  select list of the expression being currently fixed.
sql/sql_select.cc:
  Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode.
  Each select now keeps the list of fields that aren't
  used under any aggregate function. If an expression from the select list
  isn't found in the GROUP BY list the setup_group() function additionally
  checks whether non-aggregated fields occur in that expression.
  If there at least one such field and it isn't found in the GROUP BY list
  then an error is thrown.
sql/sql_union.cc:
  Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode.
  Clean up of the non_agg_fields list.
mysql-test/r/group_by.result:
  Added a test case for the bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode.
mysql-test/t/group_by.test:
  Added a test case for the bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode.
2007-01-11 23:18:01 +03:00
unknown
7f9da471cd Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  rakia.gmz:/home/kgeorge/mysql/autopush/B25106-5.0-opt


sql/sql_base.cc:
  Auto merged
2007-01-11 19:13:04 +02:00
unknown
6c41a043a4 BUG#25106: A USING clause in combination with a VIEW results in column
aliases ignored
When a column reference to a column in JOIN USING is resolved and a new 
Item is created for this column the user defined name was lost.
This fix preserves the alias by setting the name of the new Item to the
original alias.


mysql-test/r/join.result:
  BUG#25106: A USING clause in combination with a VIEW results in column
             aliases ignored
   - test case
mysql-test/t/join.test:
  BUG#25106: A USING clause in combination with a VIEW results in column
             aliases ignored
   - test case
sql/sql_base.cc:
  BUG#25106: A USING clause in combination with a VIEW results in column
             aliases ignored
   - take the alias of the Item to be replaced and set it into the newly
     allocated Item.
2007-01-11 19:10:01 +02:00
unknown
52c100ae0c Bug#23409: Arguments of the ENCODE() and the DECODE() functions were not printed
correctly.

The Item_func::print method was used to print the Item_func_encode and the
Item_func_decode objects. The last argument to ENCODE and DECODE functions
is a plain C string and thus Item_func::print wasn't able to print it.

The print() method is added to the Item_func_encode class. It correctly
prints the Item_func_encode and the Item_func_decode objects.


mysql-test/t/func_str.test:
  Added a test case for bug#23409: Arguments of the ENCODE() and the
  > DECODE() functionswere not printed correctly.
mysql-test/r/func_str.result:
  Added a test case for bug#23409: Arguments of the ENCODE() and the DECODE() functions were not printed correctly.
sql/item_strfunc.h:
  Bug#23409: Arguments of the ENCODE() and the DECODE() functions were not printed correctly.
  The print() method is added to the Item_func_encode class.
sql/item_strfunc.cc:
  Bug#23409: Arguments of the ENCODE() and the DECODE() functions were not printed correctly.
  The print() method is added to the Item_func_encode class. It correctly
  prints the Item_func_encode and the Item_func_decode objects.
2007-01-11 16:45:38 +03:00
unknown
0fdd3dce16 Merge fix for bug#17711 2007-01-11 16:20:08 +03:00
unknown
661796389f Bug#17711: DELETE doesn't use index when ORDER BY, LIMIT and non-restricting
WHERE is present.

If a DELETE statement with ORDER BY and LIMIT contains a WHERE clause
with conditions that for sure cannot be used for index access (like in
WHERE @var:= field) the execution always follows the filesort path.    
It happens currently even when for the above case there is an index that
can be used to speedup sorting by the order by list.

Now if a DELETE statement with ORDER BY and LIMIT contains such WHERE
clause conditions that cannot be used to build any quick select then
the mysql_delete() tries to use an index like there is no WHERE clause at all.


mysql-test/t/delete.test:
  Added a test case for bug#17711: DELETE doesn't use index when ORDER BY, LIMIT and non-restricting
  WHERE is present.
mysql-test/r/delete.result:
  Added a test case for bug#17711: DELETE doesn't use index when ORDER BY, LIMIT and non-restricting WHERE is present.
sql/sql_delete.cc:
  Bug#17711: DELETE doesn't use index when ORDER BY, LIMIT and non-restricting WHERE is present.
  Now if a DELETE statement with ORDER BY and LIMIT contains such WHERE
  clause conditions that cannot be used to build any quick select then
  the mysql_delete() tries to use an index like there is no WHERE clause at all.
2007-01-11 16:05:03 +03:00
unknown
ce3a76a4a8 Merge bk@192.168.21.1:mysql-5.0-opt
into  mysql.com:/d2/hf/mr10/my50-mr10


sql/mysqld.cc:
  Auto merged
2007-01-11 13:18:49 +04:00
unknown
10698df6da Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-4.1-opt
into  olga.mysql.com:/home/igor/mysql-4.1-opt
2007-01-10 10:49:46 -08:00
unknown
6943153ead Merge olga.mysql.com:/home/igor/mysql-4.1-opt
into  olga.mysql.com:/home/igor/mysql-5.0-opt


sql/item.cc:
  Auto merged
mysql-test/r/order_by.result:
  Manual merge
mysql-test/t/order_by.test:
  Manual merge
2007-01-10 08:55:55 -08:00
unknown
c11c3b08b8 Merge bk@192.168.21.1:mysql-5.0
into  mysql.com:/d2/hf/mr10/my50-mr10
2007-01-10 20:37:22 +04:00
unknown
4ffd49d311 configure.in:
Removed line accidently inserted when correcting bug#18526


configure.in:
  Removed line accidently inserted when correcting bug#18526
2007-01-10 14:50:09 +01:00
unknown
380ad35c20 Merge mysql.com:/d2/hf/common/my50-common
into  mysql.com:/d2/hf/mr10/my50-mr10
2007-01-10 14:33:34 +04:00
unknown
53c9b0d07c after merge fix 2007-01-10 14:03:36 +04:00
unknown
f5005095d2 Merge mysql.com:/home/gluh/MySQL/Merge/4.1-opt
into  mysql.com:/home/gluh/MySQL/Merge/5.0-opt


sql/mysqld.cc:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/mysql_priv.h:
  manual merge
2007-01-10 13:04:58 +04:00
unknown
ac71a8fa5e Fix for bug#20867 InnoDB Bug - create temporary table+crash => mysqld needs to clean up
2nd version
During tmp tables cleanup we get the handler for temporary table
and delete table using handler method.


sql/mysql_priv.h:
  added function prototype
sql/mysqld.cc:
  added call of mysql_rm_tmp_tables() function
sql/sql_base.cc:
  mysql_rm_tmp_tables()
  -removed from table_cache_init
  -During tmp tables cleanup we get the handler for temporary table
   and delete table using handler method. 
   it allows to remove orphan records from data dictionary(InnoDB)
2007-01-10 12:57:03 +04:00
unknown
6fc17dab1e Fixed bug #25427.
In the method Item_field::fix_fields we try to resolve the name of
the field against the names of the aliases that occur in the select
list. This is done by a call of the function find_item_in_list.
When this function finds several occurrences of the field name
it sends an error message to the error queue and returns 0.
Yet the code did not take into account that find_item_in_list
could return 0 and tried to dereference the returned value.


mysql-test/r/order_by.result:
  Added a test case for bug #25427.
mysql-test/t/order_by.test:
  Added a test case for bug #25427.
sql/item.cc:
  Fixed bug #25427.
  In the method Item_field::fix_fields we try to resolve the name of
  the field against the names of the aliases that occur in the select
  list. This is done by a call of the function find_item_in_list.
  When this function finds several occurrences of the field name 
  it sends an error message to the error queue and returns 0.
  Yet the code did not take into account that find_item_in_list
  could return 0 and tried to dereference the returned value.
2007-01-10 00:27:11 -08:00
unknown
b04652e289 Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  olga.mysql.com:/home/igor/mysql-5.0-opt
2007-01-09 17:31:14 -08:00
unknown
4374848c82 support-files/MySQL-shared-compat.spec.sh : Dummy, irrelevant change - just trigger a new build.
support-files/MySQL-shared-compat.spec.sh:
  Dummy, irrelevant change - just trigger a new build.
2007-01-10 00:36:41 +01:00
unknown
f094fe551a Fixed bug#16861: User defined variable can have a wrong value if a tmp table was
used.

The Item::save_in_field() function is called from fill_record() to fill the 
new row with data while execution of the CREATE TABLE ... SELECT statement.
Item::save_in_field() calls val_xxx() methods in order to get values.
val_xxx() methods do not take into account the result field. Due to this
Item_func_set_user_var::val_xxx() methods returns values from the original
table, not from the temporary one.

The save_in_field() member function is added to the Item_func_set_user_var
class. It detects whether the result field should be used and properly updates
the value of the user variable.


sql/item_func.cc:
  Bug#16861: User defined variable can have a wrong value if a tmp table was used.
  Added the save_in_field() member function to the Item_func_set_user_var class.
sql/item_func.h:
  Bug#16861: User defined variable can have a wrong value if a tmp table was used.
  Added the save_in_field() member function to the Item_func_set_user_var class.
mysql-test/r/user_var.result:
  Extended the test case for bug#18681: User defined variable can have a wrong value if
  a tmp table was used.
mysql-test/t/user_var.test:
  Extended the test case for bug#18681: User defined variable can have a wrong value if
  a tmp table was used.
2007-01-09 23:24:56 +03:00
unknown
15bb22c0a8 Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  olga.mysql.com:/home/igor/mysql-5.0-opt


sql/item_cmpfunc.cc:
  Auto merged
2007-01-09 12:07:13 -08:00
unknown
78dff026af Bug#14171: Wrong internal default value for a BINARY field.
A BINARY field is represented by the Field_string class. The space character
is used as the filler for unused characters in such a field. But a BINARY field 
should use \x00 instead.

Field_string:reset() now detects whether the current field is a BINARY one
and if so uses the \x00 character as a default value filler.


sql/field.h:
  Bug#14171: Wrong internal default value for a BINARY field.
  Field_string:reset() now detects whether the current field is a BINARY one
  and if so uses the \x00 character as a default value filler.
mysql-test/r/type_binary.result:
  Added a test case for the bug#14171: Wrong internal default value for a BINARY field.
mysql-test/t/type_binary.test:
  Added a test case for the bug#14171: Wrong internal default value for a BINARY field.
2007-01-09 22:35:30 +03:00
unknown
f831f46ab2 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/home/evgen/bk-trees/mysql-5.0-opt
2007-01-09 22:14:11 +03:00
unknown
eca431f3f3 Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug25027


sql/item_cmpfunc.cc:
  Auto merged
sql/item_cmpfunc.h:
  Auto merged
sql/sql_lex.cc:
  Auto merged
2007-01-09 10:26:28 -08:00
unknown
29dcdbcbdf Merge kpdesk.mysql.com:/home/thek/dev/bug23010/my50-bug23010
into  kpdesk.mysql.com:/home/thek/dev/mysql-5.0-build
2007-01-09 14:35:16 +01:00
unknown
48451b86bd Merge bk@192.168.21.1:mysql-5.0-opt
into  mysql.com:/d2/hf/opt/my50-opt
2007-01-09 15:37:31 +04:00
unknown
72268a3b88 Merge kpdesk.mysql.com:/home/thek/dev/bug23010/my41-bug23010
into  kpdesk.mysql.com:/home/thek/dev/bug23010/my50-bug23010


mysys/mf_iocache.c:
  Auto merged
mysys/my_seek.c:
  Auto merged
2007-01-09 12:33:02 +01:00
unknown
7b95184ae3 Merge kpdesk.mysql.com:/home/thek/dev/test23010/my40-bug23010
into  kpdesk.mysql.com:/home/thek/dev/bug23010/my41-fix23010


mysys/mf_iocache.c:
  Auto merged
mysys/my_seek.c:
  Auto merged
2007-01-09 12:30:57 +01:00
unknown
d7e9fd07ef Cset exclude: thek@kpdesk.mysql.com|ChangeSet|20061106104152|07628
mysys/mf_iocache.c:
  Exclude
mysys/my_seek.c:
  Exclude
2007-01-09 12:28:46 +01:00
unknown
4b8d44ef69 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/home/evgen/bk-trees/mysql-5.0-opt


sql/filesort.cc:
  Auto merged
sql/handler.cc:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/item_subselect.cc:
  Auto merged
sql/item_timefunc.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql-common/client.c:
  Auto merged
sql-common/my_time.c:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/table.cc:
  Auto merged
strings/decimal.c:
  Auto merged
2007-01-09 13:12:35 +03:00
unknown
470ea99c42 Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug24345


sql/sql_select.cc:
  Auto merged
2007-01-09 00:17:48 -08:00
unknown
e3d81238e4 Merge bk@192.168.21.1:mysql-5.0-opt
into  mysql.com:/d2/hf/opt/my50-opt
2007-01-09 11:19:17 +04:00
unknown
6f3343eeb9 Merge mysql.com:/home/kent/bk/tmp/mysql-4.1-build
into  mysql.com:/home/kent/bk/tmp/mysql-5.0-build


scripts/make_binary_distribution.sh:
  Auto merged
2007-01-05 16:57:23 +01:00
unknown
7fb6aa34a0 mysql.spec.sh, make_binary_distribution.sh:
Add CFLAGS to gcc call with --print-libgcc-file, to make sure the
  correct "libgcc.a" path is returned for the 32/64 bit architecture


scripts/make_binary_distribution.sh:
  Add CFLAGS to gcc call with --print-libgcc-file, to make sure the
  correct "libgcc.a" path is returned for the 32/64 bit architecture
support-files/mysql.spec.sh:
  Add CFLAGS to gcc call with --print-libgcc-file, to make sure the
  correct "libgcc.a" path is returned for the 32/64 bit architecture
2007-01-05 16:53:03 +01:00
unknown
42e31f7a45 Bug #15881: cast problems
The optimizer removes expressions from GROUP BY/DISTINCT
  if they happen to participate in a <expression> = <const>
  predicates of the WHERE clause (the idea being that if
  it's always equal to a constant it can't have multiple 
  values).
  However for predicates where the expression and the 
  constant item are of different result type this is not
  valid (e.g. a string column compared to 0).
  Fixed by additional check of the result types of the 
  expression and the constant and if they differ the 
  expression don't get removed from the group by list.


mysql-test/r/distinct.result:
  Bug #15881: cast problems
    - test case
mysql-test/t/distinct.test:
  Bug #15881: cast problems
    - test case
sql/sql_select.cc:
  Bug #15881: cast problems
    - can't use <expr>=<const> to remove GROUP BY/DISTINCT cols
      if they're not of the same type.
2007-01-05 14:02:50 +02:00
unknown
268bce8f0d Merge tiger.mmj.dk:/Users/mmj/bktrees/mysql-4.1-build
into  tiger.mmj.dk:/Users/mmj/bktrees/mysql-5.0-build


include/my_global.h:
  Auto merged
2007-01-04 23:20:04 +01:00
unknown
679402dab6 my_global.h:
Patch from Alfredo for TARGET_FAT_BINARY


include/my_global.h:
  Patch from Alfredo for TARGET_FAT_BINARY
2007-01-04 23:18:04 +01:00
unknown
600efe0681 Merge mjorgensen@bk-internal.mysql.com:/home/bk/mysql-5.0
into  tiger.mmj.dk:/Users/mmj/bktrees/mysql-5.0-build
2007-01-04 22:33:34 +01:00
unknown
c9f42a9bfa my_global.h:
Add patch from Alfredo for TARGET_FAT_BINARY


include/my_global.h:
  Add patch from Alfredo for TARGET_FAT_BINARY
2007-01-04 22:22:25 +01:00
unknown
1398ad127e Merge bk@192.168.21.1:mysql-5.0-opt
into  mysql.com:/d2/hf/opt/my50-opt
2007-01-04 16:06:09 +04:00
unknown
6e1d68415f Merge mysql.com:/d2/hf/opt/my41-opt
into  mysql.com:/d2/hf/opt/my50-opt
2007-01-04 16:05:20 +04:00
unknown
42010cde4a Fixed bug #24345.
This bug appeared after the patch for bug 21390 that had added some code
to handle outer joins with no matches after substitution of a const
table in an efficient way. That code as it is cannot be applied to the case
of nested outer join operations. Being applied to the queries with
nested outer joins the code can cause crashes or wrong result sets.
The fix blocks row substitution for const inner tables of an outer join
if the inner operand is not a single table.  


mysql-test/r/join_nested.result:
  Added a test case for bug #24345.
mysql-test/t/join_nested.test:
  Added a test case for bug #24345.
2007-01-03 12:16:03 -08:00
unknown
5df7d39e52 Merge bk-internal:/home/bk/mysql-5.0-opt
into  rakia.gmz:/home/kgeorge/mysql/work/B15439-5.0-opt


sql/sql_udf.cc:
  Auto merged
2007-01-03 18:29:39 +02:00
unknown
ea5557aade sql_udf.cc:
Addendum to the fix for bug#15439 : valgrind pb failed


sql/sql_udf.cc:
  Addendum to the fix for bug#15439 : valgrind pb failed
2007-01-03 18:26:39 +02:00
unknown
8e0eea0d33 Merge mysql.com:/d2/hf/common/my41-common
into  mysql.com:/d2/hf/opt/my41-opt
2007-01-03 11:17:00 +04:00
unknown
6a4fbf09be Merge mysql.com:/d2/hf/common/my50-common
into  mysql.com:/d2/hf/opt/my50-opt


myisam/mi_check.c:
  Auto merged
sql/item_subselect.cc:
  Auto merged
sql/item_subselect.h:
  Auto merged
sql/sql_lex.cc:
  Auto merged
sql/sql_udf.cc:
  Auto merged
2007-01-03 11:13:01 +04:00
unknown
42a7506d28 merging
mysql-test/r/flush_block_commit_notembedded.result:
  result fixed
2007-01-03 03:35:57 +04:00