Commit graph

21230 commits

Author SHA1 Message Date
unknown
4144543006 Bug #17212 results not sorted correctly by ORDER BY when using index
* don't use join cache when the incoming data set is already ordered
    for ORDER BY
    This choice must be made because join cache will effectively
    reverse the join order and the results will be sorted by the index
    of the table that uses join cache.


mysql-test/r/innodb_mysql.result:
  Bug #17212 results not sorted correctly by ORDER BY when using index
    * Test suite for the bug
mysql-test/t/innodb_mysql.test:
  Bug #17212 results not sorted correctly by ORDER BY when using index
    * Test suite for the bug
sql/sql_select.cc:
  Bug #17212 results not sorted correctly by ORDER BY when using index
    * don't use join cache when the incoming data set is already sorted
2006-07-12 10:57:38 +03:00
unknown
0f7258e0f7 Merge cmiller@bk-internal.mysql.com:/home/bk/mysql-4.1
into  maint1.mysql.com:/data/localhome/cmiller/mysql-4.1
2006-07-12 05:34:56 +02:00
unknown
e2c448fb5c Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1-opt
into  moonbone.local:/work/16302-bug-4.1-opt-mysql


mysql-test/r/subselect.result:
  SCCS merged
mysql-test/t/subselect.test:
  SCCS merged
2006-07-12 06:12:59 +04:00
unknown
03dbc2190d Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1-opt
into  moonbone.local:/work/18503-bug-4.1-mysql


sql/sql_select.cc:
  Auto merged
2006-07-12 02:52:29 +04:00
unknown
d2bbf288a9 Fixed bug#18503: Queries with a quantified subquery returning empty set
may return a wrong result.

An Item_sum_hybrid object has the was_values flag which indicates whether any
values were added to the sum function. By default it is set to true and reset
to false on any no_rows_in_result() call. This method is called only in
return_zero_rows() function. An ALL/ANY subquery can be optimized by MIN/MAX
optimization. The was_values flag is used to indicate whether the subquery
has returned at least one row. This bug occurs because return_zero_rows() is
called only when we know that the select will return zero rows before
starting any scans but often such information is not known.
In the reported case the return_zero_rows() function is not called and
the was_values flag is not reset to false and yet the subquery return no rows
Item_func_not_all and Item_func_nop_all functions return a wrong
comparison result.

The end_send_group() function now calls no_rows_in_result() for each item
in the fields_list if there is no rows were found for the (sub)query.


mysql-test/t/subselect.test:
  Added test case for bug#18503: Queries with a quantified subquery returning empty set may return a wrong result.
mysql-test/r/subselect.result:
  Added test case for bug#18503: Queries with a quantified subquery returning empty set may return a wrong result.
sql/sql_select.cc:
  Fixed bug#18503: Queries with a quantified subquery returning empty set may return a wrong result.
  
  The end_send_group() function now calls no_rows_in_result() for each item
  in the fields_list if there is no matching rows were found.
2006-07-12 01:52:18 +04:00
unknown
26ddd5cb0c Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into  zippy.(none):/home/cmiller/work/mysql/m41-maint--07AB5


mysql-test/r/date_formats.result:
  Auto merged
mysql-test/t/date_formats.test:
  Auto merged
2006-07-11 14:25:42 -04:00
unknown
ed001f18a4 Bug#20729: Bad date_format() call makes mysql server crash
The problem is that the author used the wrong function to send a warning to the 
user about truncation of data.  push_warning() takes a constant string and 
push_warning_printf() takes a format and variable arguments to fill it.

Since the string we were complaining about contains percent characters, the 
printf() code interprets the "%Y" et c. that the user sends.  That's wrong, and
often causes a crash, especially if the date mentions seconds, "%s".

A alternate fix would be to use  push_warning_printf(..., "%s", warn_buff) .


mysql-test/r/date_formats.result:
  Test that an invalid date doesn't crash the server.  We should get a warning back 
  instead of a dead socket.
mysql-test/t/date_formats.test:
  Test that an invalid date doesn't crash the server.  We should get a warning back 
  instead of a dead socket.
sql/time.cc:
  Don't try to use warn_buf as the start of a varible arguement list to send 
  to a warning-formatted my_vsnprintf() .
2006-07-11 13:06:29 -04:00
unknown
27721ce53f ndb - (4.1) trivial fix to error.log (wday=0 was printed as "x")
ndb/src/kernel/error/TimeModule.cpp:
  0=Sunday
2006-07-11 17:07:23 +02:00
unknown
bf01313ccf Merge moonbone.local:/work/allany-4.1-mysql
into  moonbone.local:/work/16302-bug-4.1-opt-mysql
2006-07-11 17:48:33 +04:00
unknown
7642d18146 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1-opt
into  moonbone.local:/home/evgen/bk-trees/mysql-4.1-opt


sql/sql_class.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
2006-07-11 17:35:36 +04:00
unknown
d1a31ef52a Merge zippy.(none):/home/cmiller/work/mysql/mysql-4.0__bug19006
into  zippy.(none):/home/cmiller/work/mysql/merge/mysql-4.1


client/sql_string.h:
  Auto merged
sql/item_func.h:
  Auto merged
sql/sql_string.h:
  Auto merged
configure.in:
  Null merge.
sql/item_strfunc.cc:
  Null merged
2006-07-11 07:24:59 -04:00
unknown
7bea031d7c Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1-opt
into  moonbone.local:/work/allany-4.1-mysql
2006-07-11 00:36:14 +04:00
unknown
ad88eabd35 Fixed bug#16302: Quantified subquery without any tables gives wrong results
The ALL/ANY subqueries are the subject of MIN/MAX optimization. The matter
of this optimization is to embed MIN() or MAX() function into the subquery
in order to get only one row by which we can tell whether the expression
with ALL/ANY subquery is true or false.
But when it is applied to a subquery like 'select a_constant' the reported bug
occurs. As no tables are specified in the subquery the do_select() function 
isn't called for the optimized subquery and thus no values have been added 
to a MIN()/MAX() function and it returns NULL instead of a_constant.
This leads to a wrong query result.

For the subquery like 'select a_constant' there is no reason to apply
MIN/MAX optimization because the subquery anyway will return at most one row.
Thus the Item_maxmin_subselect class is more appropriate for handling such
subqueries.

The Item_in_subselect::single_value_transformer() function now checks
whether tables are specified for the subquery. If no then this subselect is
handled like a UNION using an Item_maxmin_subselect object.


mysql-test/t/subselect.test:
  Added test case for bug#16302: Quantified subquery without any tables gives wrong results
mysql-test/r/subselect.result:
  Added test case for bug#16302: Quantified subquery without any tables gives wrong results
sql/item_subselect.cc:
  Fixed bug#16302: Quantified subquery without any tables gives wrong results
   
  The Item_in_subselect::single_value_transformer() function now checks
  whether tables are specified for the subquery. If no then this subselect is
  handled like a UNION using an Item_maxmin_subselect object.
2006-07-11 00:34:37 +04:00
unknown
ca1e4aabfa Merge rakia:mysql/4.1/B14553
into  macbook.gmz:/Users/kgeorge/mysql/work/B14553-4.1-opt


sql/sql_class.cc:
  SCCS merged
sql/sql_select.cc:
  SCCS merged
2006-07-10 16:27:04 +03:00
unknown
0806d9a86d BUG#14553: NULL in WHERE resets LAST_INSERT_ID
To make MySQL compatible with some ODBC applications, you can find
the AUTO_INCREMENT value for the last inserted row with the following query:
 SELECT * FROM tbl_name WHERE auto_col IS NULL.
This is done with a special code that replaces 'auto_col IS NULL' with
'auto_col = LAST_INSERT_ID'.
However this also resets the LAST_INSERT_ID to 0 as it uses it for a flag
so as to ensure that only the first SELECT ... WHERE auto_col IS NULL
after an INSERT has this special behaviour.
In order to avoid resetting the LAST_INSERT_ID a special flag is introduced
in the THD class. This flag is used to restrict the second and subsequent
SELECTs instead of LAST_INSERT_ID.


mysql-test/r/odbc.result:
  test suite for the bug
mysql-test/r/rpl_insert_id.result:
  test for the fix in replication
mysql-test/t/odbc.test:
  test suite for the bug
mysql-test/t/rpl_insert_id.test:
  test for the fix in replication
sql/sql_class.cc:
  initialize the flag
sql/sql_class.h:
  flag's declaration and set code when setting the last_insert_id
sql/sql_select.cc:
  the special flag is used instead of last_insert_id
2006-07-10 16:27:03 +03:00
unknown
665db1a6ad ndb - bug#20847: non-debug compile fix
ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp:
  non-debug compile fix
2006-07-10 12:05:51 +02:00
unknown
9be463262b Merge orca.ndb.mysql.com:/space/pekka/ndb/version/my41
into  orca.ndb.mysql.com:/space_old/pekka/ndb/version/my41-bug20847
2006-07-10 11:06:21 +02:00
unknown
d6d8749c22 Merge pnousiainen@bk-internal.mysql.com:/home/bk/mysql-4.1
into  orca.ndb.mysql.com:/space_old/pekka/ndb/version/my41
2006-07-10 08:04:40 +02:00
unknown
868fee4dde BUG#20919 temp tables closing fails when binlog is off
closing temp tables through end_thread
had a flaw in binlog-off branch of close_temporary_tables where
next table to close was reset via table->next
 for (table= thd->temporary_tables; table; table= table->next)
which was wrong since the current table instance got destoyed at
	close_temporary(table, 1);

The fix adapts binlog-on branch method to engage the loop's internal 'next' variable which holds table->next prior table's destoying.



sql/sql_base.cc:
  no-binlog branch is fixed: scanning across temporary_tables must be careful to save next table since the current is being destroyed inside of close_temporary. 
  binlog-is-open case is ok.
2006-07-10 00:26:26 +03:00
unknown
30cbba45f8 Merge chilla.local:/home/mydev/mysql-4.0
into  chilla.local:/home/mydev/mysql-4.0-bug14400
2006-07-08 21:16:13 +02:00
unknown
0eaab5b74c Merge chilla.local:/home/mydev/mysql-4.1-bug19835
into  chilla.local:/home/mydev/mysql-4.1-amerge
2006-07-08 19:27:16 +02:00
unknown
6db432cd85 Merge chilla.local:/home/mydev/mysql-4.1-bug17877
into  chilla.local:/home/mydev/mysql-4.1-amerge
2006-07-08 19:26:18 +02:00
unknown
966481b912 Merge chilla.local:/home/mydev/mysql-4.1-bug14400
into  chilla.local:/home/mydev/mysql-4.1-amerge


sql/sql_class.cc:
  Auto merged
2006-07-08 19:25:01 +02:00
unknown
666fb945a6 Merge chilla.local:/home/mydev/mysql-4.1-bug11824
into  chilla.local:/home/mydev/mysql-4.1-amerge


myisam/mi_create.c:
  Auto merged
2006-07-08 19:23:55 +02:00
unknown
92ce7df1a3 Merge cmiller@bk-internal.mysql.com:/home/bk/mysql-4.0
into  maint1.mysql.com:/data/localhome/cmiller/mysql-4.0__bug19006
2006-07-07 23:00:33 +02:00
unknown
89c7db0cb0 Add a more reliable "getconf" test for Linuxthreads. The later trees should already
have a better test (and so this should be null-merged there).

ALSO!  Make it so that it accepts NPTL as a valid _equivalent_ implementation.
2006-07-07 16:47:57 -04:00
unknown
31e3e75304 ndb - bug#20904
Reset logpartstate if file_change_problem after writeing of zero page is done
2006-07-07 16:01:35 +02:00
unknown
2c48aaa183 ndb - bug#20847 : DbtupTabDesMan: add merge with left buddies
ndb/src/kernel/blocks/ERROR_codes.txt:
  DbtupTabDesMan: add merge with left buddies
ndb/src/kernel/blocks/dbtup/Dbtup.hpp:
  DbtupTabDesMan: add merge with left buddies
ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp:
  DbtupTabDesMan: add merge with left buddies
ndb/src/kernel/blocks/dbtup/DbtupTabDesMan.cpp:
  DbtupTabDesMan: add merge with left buddies
ndb/test/ndbapi/testDict.cpp:
  DbtupTabDesMan: add merge with left buddies
ndb/test/run-test/daily-basic-tests.txt:
  DbtupTabDesMan: add merge with left buddies
2006-07-07 10:57:22 +02:00
unknown
28729caaf6 Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-4.1
into  mysql.com:/usr/home/bar/mysql-4.1.b17647


sql/sql_acl.cc:
  Auto merged
2006-07-07 12:17:00 +05:00
unknown
4cb0659de2 Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into  bodhi.netgear:/opt/local/work/mysql-4.1-19399


sql/table.cc:
  Auto merged
2006-07-07 00:01:05 +04:00
unknown
8995277acc A fix and a test case for Bug#19399 "res 'Lost Connection' when
dropping/creating tables".

The bug could lead to a crash when multi-delete statements were
prepared and used with temporary tables.

The bug was caused by lack of clean-up of multi-delete tables before
re-execution of a prepared statement. In a statement like
DELETE t1 FROM t1, t2 WHERE ... the first table list (t1) is
moved to lex->auxilliary_table_list and excluded from lex->query_tables
or select_lex->tables. Thus it was unaccessible to reinit_stmt_before_use
and not cleaned up before re-execution of a prepared statement. 


mysql-test/r/ps.result:
  Updated test results (Bug#19399)
mysql-test/t/ps.test:
  A test case for Bug#19399 "Stored Procedures 'Lost Connection' when 
  dropping/creating tables": test that multi-delete
  tables are cleaned up properly before re-execution.
sql/sql_lex.cc:
  Always initialize auxilliary_table_list when we initialize the lex:
  this way we don't have to check that lex->sql_command equals to
  SQLCOM_DELETE_MULTI whenever we need to access auxilliary_table_list.
  In particular, in reinit_stmt_before_use we can simply check that
  auxilliary_table_list is not NULL and clean it up if the check returns
  a true value.
sql/sql_prepare.cc:
  Move the one table clean-up functionality to a method of st_table_list.
  Clean up auxiliary_table_list if it's not empty.
sql/table.cc:
  Implement st_table_list::reinit_before_use().
sql/table.h:
  Declare st_table_list::reinit_before_use().
2006-07-06 23:59:04 +04:00
unknown
b80bba31ad Merge rolltop.ignatz42.dyndns.org:/mnt/storeage/mysql-4.1-maint
into  rolltop.ignatz42.dyndns.org:/mnt/storeage/mysql-4.1_bug20328
2006-07-06 15:13:25 -04:00
unknown
471b1514f7 Merge rolltop.ignatz42.dyndns.org:/mnt/storeage/mysql-4.1-maint
into  rolltop.ignatz42.dyndns.org:/mnt/storeage/mysql-4.1_bug16180
2006-07-06 15:00:31 -04:00
unknown
8cb368bcc3 Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-4.1-opt
into  olga.mysql.com:/home/igor/mysql-4.1-opt
2006-07-06 11:38:48 -07:00
unknown
cf7627bce0 Fixed bug #18243.
The implementation of the method Item_func_reverse::val_str
for the REVERSE function modified the argument of the function.
This led to wrong results for expressions that contained
REVERSE(ref) if ref occurred somewhere else in the expressions.


mysql-test/r/func_str.result:
  Added a test case for bug #18243.
mysql-test/t/func_str.test:
  Added a test case for bug #18243.
sql/item_strfunc.cc:
  Fixed bug #18243.
  The implementation of the method Item_func_reverse::val_str
  for the REVERSE function modified the argument of the function.
  This led to wrong results for expressions that contained
  REVERSE(ref) if ref occurred somewhere else in the expressions.
  
  The implementation of Item_func_reverse::val_str has been changed
  to make the argument intact.
sql/item_strfunc.h:
  Fixed bug #18243.
  Added tmp_value to the Item_func_reverse class to store
  the result of the function. It erroneously replaced the 
  argument before this fix.
2006-07-06 11:11:49 -07:00
unknown
337310a96c Merge jonas@perch:src/mysql-4.1
into  poseidon.ndb.mysql.com:/home/tomas/mysql-4.1-main
2006-07-06 16:06:19 +02:00
unknown
05dad2de21 Merge tulin@bk-internal.mysql.com:/home/bk/mysql-4.1
into  poseidon.ndb.mysql.com:/home/tomas/mysql-4.1-main
2006-07-06 16:03:22 +02:00
unknown
73bf763071 Merge poseidon.ndb.mysql.com:/home/tomas/mysql-4.1
into  poseidon.ndb.mysql.com:/home/tomas/mysql-4.1-main
2006-07-06 15:22:25 +02:00
unknown
7997d847f2 backport of ndb DictCache fix
- don't invalidate tables that are in state RETRIEVING
2006-07-06 15:18:00 +02:00
unknown
16556f6132 Merge joreland@bk-internal.mysql.com:/home/bk/mysql-4.1
into  perch.ndb.mysql.com:/home/jonas/src/mysql-4.1
2006-07-06 13:23:19 +02:00
unknown
abae33fe98 Merge pnousiainen@bk-internal.mysql.com:/home/bk/mysql-4.1
into  mysql.com:/space_old/pekka/ndb/version/my41
2006-07-06 05:01:09 +02:00
unknown
854d7c4d4f Bug#8706
"temporary table with data directory option fails"
  myisam should not use user-specified table name when creating
  temporary tables and use generated connection specific real name.
  Test included.


myisam/mi_create.c:
  Bug#8706
    When creating a temporary table with directory override, ensure that
    the real filename is using the hidden temporary name otherwise
    multiple clients cannot have same named temporary tables without
    conflict.
mysql-test/r/myisam.result:
  Bug#8706
    Test for bug
mysql-test/t/myisam.test:
  Bug#8706
    Test for bug
2006-07-05 17:18:59 -07:00
unknown
423fbed22c Merge mysql.com:/M40/mysql-4.0 into mysql.com:/M40/bug20216-4.0 2006-07-05 11:14:45 +02:00
unknown
8fdac9c74b Merge jbruehe@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/M41/bug20216-4.1


support-files/mysql.spec.sh:
  Auto merged
2006-07-05 10:42:49 +02:00
unknown
f5a8a3649f Merge pnousiainen@bk-internal.mysql.com:/home/bk/mysql-4.1
into  clam.ndb.mysql.com:/space/pekka/ndb/version/my41
2006-07-05 05:01:12 +02:00
unknown
752b826e0d Merge mysql.com:/home/mydev/mysql-4.0-bug14400
into  mysql.com:/home/mydev/mysql-4.1-bug14400


myisam/mi_rkey.c:
  Bug#14400 - Query joins wrong rows from table which is subject of "concurrent insert"
  Manual merge
sql/sql_class.cc:
  Bug#14400 - Query joins wrong rows from table which is subject of "concurrent insert"
  Manual merge
2006-07-04 19:10:13 +02:00
unknown
99e4dee4ff ndb - bug#20847 fix (4.1)
ndb/src/kernel/blocks/dbtup/DbtupTabDesMan.cpp:
  DROP did not do merge with right buddies
2006-07-04 15:11:11 +02:00
unknown
184ff212b6 WL#2928 Date Translation NRE
(implemented by by Josh Chamas)


libmysqld/Makefile.am:
  Adding new source file
mysql-test/r/date_formats.result:
  Adding test case
mysql-test/t/date_formats.test:
  Adding test case
sql/Makefile.am:
  Adding new source file
BitKeeper/etc/ignore:
  Added libmysqld/sql_locale.cc to the ignore list
sql/item_timefunc.cc:
  Using current locale data, instead of hard coded English names.
sql/mysql_priv.h:
  Adding new type MY_LOCALE, and declaring new global variables.
sql/set_var.cc:
  Adding "lc_time_names" system variable.
sql/set_var.h:
  Adding "lc_time_names" system variable.
sql/sql_cache.cc:
  Adding lc_time_names as a query cache flag.
sql/sql_class.cc:
  Setting default locale to en_US
sql/sql_class.h:
  Adding locale variable into system_variables.
sql/sql_locale.cc:
  Adding new file with locale data for various languages
2006-07-04 17:40:40 +05:00
unknown
f260771d13 pekka - checkout:get (4.1)
BitKeeper/etc/config:
  checkout:get
2006-07-04 13:51:35 +02:00
unknown
1401c2c71c Better comments for void Item::top_level_item() 2006-07-04 13:28:30 +04:00