Commit graph

31359 commits

Author SHA1 Message Date
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
67d53e36cd Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  bodhi.local:/opt/local/work/mysql-5.0-runtime-merge-41


sql/sql_table.cc:
  Auto merged
2006-07-11 17:04:27 +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
034522f47d Merge chilla.local:/home/mydev/mysql-5.0-release
into  chilla.local:/home/mydev/mysql-5.0-amerge


sql/handler.h:
  Auto merged
sql/sql_table.cc:
  Auto merged
2006-07-11 13:01:27 +02:00
unknown
0859819aae Raise the version number. 2006-07-11 12:34:43 +02:00
unknown
0e6948809b Merge jbruehe@bk-internal.mysql.com:/home/bk/mysql-5.0
into  trift2.:/M50/mysql-5.0
2006-07-11 11:32:45 +02:00
unknown
fabab79291 Merge dl145k.mysql.com:/data0/mkindahl/bkroot/mysql-5.0-rpl
into  dl145k.mysql.com:/data0/mkindahl/bk/MERGE/mysql-5.0-merge


ndb/include/kernel/GlobalSignalNumbers.h:
  Auto merged
ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
  Auto merged
ndb/src/kernel/blocks/dbdict/Dbdict.hpp:
  Auto merged
ndb/src/kernel/blocks/dbdih/DbdihMain.cpp:
  Auto merged
ndb/src/ndbapi/ndberror.c:
  Auto merged
2006-07-11 11:15:22 +02:00
unknown
aedfd07248 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  bodhi.local:/opt/local/work/mysql-5.0-runtime-merge-41


sql/opt_range.cc:
  Auto merged
support-files/mysql.spec.sh:
  Auto merged
mysql-test/Makefile.am:
  Manual merge.
2006-07-11 08:36:50 +04:00
unknown
7b659332e4 Fix yet another Windows build failure: "true" -> TRUE
sql/sql_locale.cc:
  "true" -> TRUE
2006-07-11 01:46:44 +04:00
unknown
8e4a6061ce Merge trift2.:/M50/clone-5.0
into  trift2.:/M50/mysql-5.0


configure.in:
  Auto merged
2006-07-10 22:40:57 +02:00
unknown
9c35a6e777 Raise the version number. 2006-07-10 22:38:13 +02:00
unknown
019e221ca1 A patch to Bug#17667 didn't take into consideration that the vardir, which contains
the server's binlog file, might be set to a different directory.  This adds a new
"vardir" parameter, which takes the name of the directory as a value, so that the 
test_bug17667() test can find the binlog.  


mysql-test/mysql-test-run.pl:
  Add the "vardir" to the options passed to "mysql_test_client", so we know 
  where to find the binlog file.
tests/mysql_client_test.c:
  Receive a new option, "vardir".
  
  Use the vardir option to find the binlog file in test_bug17667() .
2006-07-10 16:38:03 -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
3878d0a991 Fix a Windows build failure.
sql/sql_locale.cc:
  Fix Windows compilation failure "cannot convert from 'const char [6]' 
  to 'const BOOL'" and an apparent bug (use of "FALSE" instead of FALSE
  for initialization of is_ascii member of MY_LOCALE)
2006-07-10 23:58:36 +04:00
unknown
1a7e4ac0bb Revoking patch for Bug#10952 on behalf of Brian. 2006-07-10 20:46:05 +02:00
unknown
4ce8ca6464 Merge gbichot@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl
into  gbichot3.local:/home/mysql_src/mysql-5.0
2006-07-10 17:06:19 +02:00
unknown
fbd9103b78 more 4.1->5.0 merge fixes for bug#14553
mysql-test/r/rpl_insert_id.result:
  more merge fixes for bug#14553
mysql-test/t/rpl_insert_id.test:
  more merge fixes for bug#14553
2006-07-10 17:45:09 +03:00
unknown
a8a6361b49 Merge macbook.gmz:/Users/kgeorge/mysql/work/B14553-4.1-opt
into  macbook.gmz:/Users/kgeorge/mysql/work/B14553-5.0-opt


mysql-test/r/odbc.result:
  Auto merged
sql/sql_select.cc:
  Auto merged
mysql-test/r/rpl_insert_id.result:
  merge the test at the end of 4.1 test
mysql-test/t/rpl_insert_id.test:
  merge the test at the end of 4.1 test
sql/sql_class.cc:
  merged
sql/sql_class.h:
  merged
2006-07-10 16:44:05 +03: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
7841fa4985 Fix test results to be vardir-independent.
mysql-test/r/myisam.result:
  Fix test results.
mysql-test/t/myisam.test:
  In 5.0 show create table also outputs data directory.
  For the test for Bug#8706 it's MYSQLTEST_VARDIR, and there is no way
  to replace it with anything else in test output.
2006-07-10 16:22:42 +04:00
unknown
66fc547d1b Merge orca.ndb.mysql.com:/space_old/pekka/ndb/version/my50
into  orca.ndb.mysql.com:/space_old/pekka/ndb/version/my50-1.2167.1.2


ndb/include/kernel/GlobalSignalNumbers.h:
  Auto merged
ndb/src/common/debugger/signaldata/SignalNames.cpp:
  Auto merged
ndb/src/kernel/blocks/dbdih/DbdihMain.cpp:
  Auto merged
ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp:
  Auto merged
ndb/test/run-test/daily-basic-tests.txt:
  Auto merged
2006-07-10 14:12:02 +02:00
unknown
001c7f5fe1 ndb - bug#18781: close a tiny window (re-commit, try to by-pass merge jam)
ndb/src/kernel/blocks/dbdict/DictLock.txt:
  wait until SL_STARTED before sending DICT_UNLOCK_ORD
ndb/src/kernel/blocks/dbdih/Dbdih.hpp:
  wait until SL_STARTED before sending DICT_UNLOCK_ORD
ndb/src/kernel/blocks/dbdih/DbdihMain.cpp:
  wait until SL_STARTED before sending DICT_UNLOCK_ORD
ndb/src/kernel/vm/SimulatedBlock.cpp:
  wait until SL_STARTED before sending DICT_UNLOCK_ORD
ndb/src/kernel/vm/SimulatedBlock.hpp:
  wait until SL_STARTED before sending DICT_UNLOCK_ORD
ndb/test/run-test/daily-basic-tests.txt:
  wait until SL_STARTED before sending DICT_UNLOCK_ORD
2006-07-10 13:59:13 +02:00
unknown
f98f5d639b ndb - bug#18781 : 5.0 : add NODE_START_REP from 5.1 (re-commit, try to by-pass merge jam)
ndb/include/kernel/GlobalSignalNumbers.h:
  5.0 : add NODE_START_REP from 5.1
ndb/src/common/debugger/signaldata/SignalNames.cpp:
  5.0 : add NODE_START_REP from 5.1
ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp:
  5.0 : add NODE_START_REP from 5.1
ndb/src/kernel/vm/SimulatedBlock.cpp:
  5.0 : add NODE_START_REP from 5.1
ndb/src/kernel/vm/SimulatedBlock.hpp:
  5.0 : add NODE_START_REP from 5.1
2006-07-10 13:44:15 +02:00
unknown
23444c90c6 A post-merge fix (Bug#8706 "temporary table with data directory option
fails"


mysql-test/t/myisam.test:
  Fix myisam.test to work with non-default mysqltest var directory.
2006-07-10 14:53:49 +04:00
unknown
bb65b2e773 Add sql_locale.cpp to our windows build scripts.
VC++Files/libmysqld/libmysqld.dsp:
  Add sql_locale.cpp
VC++Files/libmysqld/libmysqld.vcproj:
  Add sql_locale.cpp
VC++Files/sql/mysqld.dsp:
  Add sql_locale.cpp
VC++Files/sql/mysqld.vcproj:
  Add sql_locale.cpp
2006-07-10 14:30:17 +04:00
unknown
0eaae4157d Merge pnousiainen@bk-internal.mysql.com:/home/bk/mysql-5.0
into  orca.ndb.mysql.com:/space_old/pekka/ndb/version/my50
2006-07-10 12:15:34 +02:00
unknown
ce3f15beb5 ndb - bug#20847: non-debug compile fix (repeat since cannot merge 4.1->5.0)
ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp:
  non-debug compile fix
2006-07-10 12:13:45 +02:00
unknown
bd0f363dcb Merge dsl-hkigw8-feb1fb00-100.dhcp.inet.fi:/usr_rh9/home/elkin.rh9/MySQL/TEAM/BARE/4.1
into  dsl-hkigw8-feb1fb00-100.dhcp.inet.fi:/usr_rh9/home/elkin.rh9/MySQL/TEAM/FIXES/5.0/20919_temp_nlog


sql/sql_base.cc:
  Manual merge
2006-07-10 13:11:29 +03:00
unknown
895758a431 Merge jbruehe@bk-internal.mysql.com:/home/bk/mysql-5.0
into  trift2.:/M50/mysql-5.0
2006-07-10 12:08:55 +02: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
5ea0420e9e support-files/mysql.spec.sh : Fix a typing error.
support-files/mysql.spec.sh:
  Fix a typing error in the "make" target for the Perl script to run the tests.
2006-07-10 12:03:44 +02:00
unknown
cdd07074d7 Merge trift2.:/M50/clone-5.0
into  trift2.:/M50/back23-5.0


support-files/mysql.spec.sh:
  Auto merged
2006-07-10 11:42:45 +02:00
unknown
2cd1d33b68 Merge orca.ndb.mysql.com:/space/pekka/ndb/version/my50
into  orca.ndb.mysql.com:/space_old/pekka/ndb/version/my50-bug20847
2006-07-10 11:31:37 +02:00
unknown
f83d39b5e0 mysql-test/Makefile.am: fix cp of mode 444 files (re-commit)
mysql-test/Makefile.am:
  fix cp of mode 444 files
2006-07-10 11:09:32 +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
32e99ab123 Merge orca.ndb.mysql.com:/space/pekka/ndb/version/my50
into  orca.ndb.mysql.com:/space_old/pekka/ndb/version/my50-bug20847
2006-07-10 11:02:46 +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
46079624e2 Fix compiler warnings in sql_udf.h: ISO C++ forbids casting
between pointer to function and pointer to object.


sql/item_func.cc:
  Use typedef names instead of hard-coded types for udf init/deinit
  functions.
sql/sql_udf.cc:
  Use typedef names for udf function types.
2006-07-09 13:03:51 +04:00
unknown
cad24c097e Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  bodhi.local:/opt/local/work/mysql-5.0-runtime-merge-41


myisam/mi_create.c:
  Auto merged
mysql-test/r/myisam.result:
  Auto merged
mysql-test/t/myisam.test:
  Auto merged
sql/item_timefunc.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_trigger.cc:
  Auto merged
support-files/mysql.spec.sh:
  Auto merged
mysql-test/r/federated.result:
  Manual merge.
mysql-test/t/federated.test:
  Manual merge.
2006-07-08 21:45:02 +04: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