1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-21 21:22:27 +03:00
Commit Graph

26109 Commits

Author SHA1 Message Date
335e842d24 Bug #41363: crash of mysqld on windows with aggregate in case
Execution of queries containing the CASE function of
aggregate function like in "SELECT ... CASE ARGV(...) WHEN ..."
crashed the server.


The CASE function caches pointers to concrete comparison
functions for an each pair of types of CASE-WHERE clause
parameters, i.e. for the "CASE INT_RESULT WHERE REAL_RESULT
THEN ... WHERE DECIMAL_RESULT ... END" function call it
caches comparisons for INT_RESULT with REAL_RESULT and
for INT_RESULT with DECIMAL_RESULT. Usually a result
type is known after a call to the fix_fields function,
however, the setup_copy_fields function call may
wrap aggregate items with Item_copy_string that has
STRING_RESULT result type, so setup_copy_fields may
change argument result types of the CASE function after
call to Item_func_case::fix_fields/fix_length_and_dec.
Then the Item_func_case::find_item function tries to
use comparison function for unexpected pair of the
STRING_RESULT and some other type - that caused
an assertion failure of server crash.

The Item_func_case::fix_length_and_dec function has
been modified to take into account possible STRING_RESULT
result type in the presence of aggregate arguments of
the CASE function.


mysql-test/r/func_in.result:
  Added test case for bug #41363.
mysql-test/t/func_in.test:
  Added test case for bug #41363.
sql/item_cmpfunc.cc:
  Bug #41363: crash of mysqld on windows with aggregate in case
  
  The Item_func_case::fix_length_and_dec function has
  been modified to take into account possible STRING_RESULT
  result type in the presence of aggregate arguments of
  the CASE function.
2008-12-31 15:55:04 +04:00
899546118d auto-merge 2008-12-30 12:51:00 +01:00
60e32e5e92 auto-merge 2008-12-30 12:48:38 +01:00
728c75cc0b auto-merge 2008-12-30 12:47:34 +01:00
28e672dbe7 BUG#41793: rpl_binlog_corruption disabled in main (needs new mtr)
Disabled rpl_binlog_corruption since it requires the new mtr,
which only exists in 5.1-rpl / 6.0-rpl.
Please re-enable the test in 5.1-rpl / 6.0-rpl.


mysql-test/suite/rpl/t/disabled.def:
  Disabled rpl_binlog_corruption since it requires the new mtr,
  which only exists in 5.1-rpl / 6.0-rpl.
2008-12-30 09:48:19 +01:00
ba835f89ba BUG#40482: server/mysqlbinlog crashes when reading invalid Incident_log_event
Problem: When an Incident_log_event contains a bad incident number on disk,
the server crashes with an assertion.
Fix: Don't validate input with assertions. Use errors.

mysql-test/include/cleanup_fake_relay_log.inc:
  Added auxiliary file to restore things that setup_fake_relay_log.inc did.
mysql-test/include/setup_fake_relay_log.inc:
  Added auxiliary file to setup replication from an existing relay log.
mysql-test/std_data/bug40482-bin.000001:
  Binlog file for rpl.rpl_binlog_corruption
mysql-test/suite/rpl/t/rpl_binlog_corruption.test:
  New test file.
sql/log_event.cc:
  Check that the incident number is correct at the time the event is constructed.
  Do not assert it at the time it is printed.
sql/log_event.h:
  Incident_log_event::is_valid() should verify that the incident number is valid.
sql/rpl_constants.h:
  Incident numbers should be hard-coded, since they may appear in files.
2008-12-29 17:04:10 +01:00
47c0ec5084 Bug#41441 repair csv table crashes debug server
The problem: data file can not be deleted on win because
there is another opened instance of this file.
Data file might be opened twice, on table opening stage and
during write_row execution. We need to close both instances
to satisfy Win.


mysql-test/r/csv.result:
  test result
mysql-test/t/csv.test:
  test case
storage/csv/ha_tina.cc:
  The problem: data file can not be deleted on win because
  there is another opened instance of this file.
  Data file might be opened twice, on table opening stage and
  during write_row execution. We need to close both instances
  to satisfy Win.
2008-12-29 16:50:51 +04:00
39442f0903 5.0-bugteam->5.1-bugteam merge 2008-12-29 16:15:48 +04:00
3b617acb87 Bug#41131 "Questions" fails to increment - ignores statements instead stored procs(5.0 ver)
Added global status variable 'Queries' which represents
total amount of queries executed by server including
statements executed by SPs.
note: It's old behaviour of 'Questions' variable.


mysql-test/r/status.result:
  test result
mysql-test/t/status.test:
  test case
sql/mysqld.cc:
  Added global status variable 'Queries' which represents
  total amount of queries executed by server including
  statements executed by SPs.
  note: It's old behaviour of 'Questions' variable.
sql/sql_show.cc:
  Added global status variable 'Queries' which represents
  total amount of queries executed by server including
  statements executed by SPs.
  note: It's old behaviour of 'Questions' variable.
sql/structs.h:
  Added global status variable 'Queries' which represents
  total amount of queries executed by server including
  statements executed by SPs.
  note: It's old behaviour of 'Questions' variable.
2008-12-29 16:06:53 +04:00
f257aac814 Bug#40972: some sql execution lead the whole databse crashing
Problem was an errornous date that lead to end partition
was before the start, leading to a crash.

Solution was to check greater or equal instead of only
equal between start and end partition.

NOTE: partitioning pruning handles incorrect dates
differently than index lookup, which can give different
results in a partitioned table versus a non partitioned
table for queries having 'bad' dates in the where clause.

mysql-test/r/partition_pruning.result:
  Bug#40972: some sql execution lead the whole databse crashing
  
  Updated result file
mysql-test/t/partition_pruning.test:
  Bug#40972: some sql execution lead the whole databse crashing
  
  Added test.
sql/sql_partition.cc:
  Bug#40972: some sql execution lead the whole databse crashing
  
  There can be cases where the start/cur partition is greater
  than the end partition, so it must not continue, since that
  can lead to a crash.
2008-12-28 12:33:49 +01:00
dbb7b40cda BUG#41708 rpl.rpl_flushlog_loop fails in pushbuild producing non-deterministic result file
If server has not been initialized as a slave (by CHANGE MASTER), then
SHOW SLAVE STATUS will return an empty set, and caused the waiting for
Slave_IO_running or Slave_SQL_running to 'No' fail.

This patch fixed the problem by return immediately if slave is not
initialized in include/wait_for_slave_*_to_stop.inc.


mysql-test/include/wait_for_slave_io_to_stop.inc:
  Return immediately if slave is not initialized
mysql-test/include/wait_for_slave_sql_to_stop.inc:
  Return immediately if slave is not initialized
mysql-test/include/wait_for_slave_to_stop.inc:
  Return immediately if slave is not initialized
2008-12-26 16:20:29 +08:00
2070da7092 BUG#40704 main.events_restart fails sporadically in pushbuild: "server has gone away"
mysqltest command 'shutdown_server' is supposed to shutdown the server
and wait for it to be gone, and kill it when timeout. But because the
arguments passed to my_kill were in the wrong order, 'shutdown_server'
does not wait nor kill the server at all. So after 'shutdown_server',
the server is still running, and the server may still accepting
connections.


mysql-test/include/mtr_warnings.sql:
  Suppress forcing close thread messages when server shuts down
mysql-test/include/restart_mysqld.inc:
  wait_until_disconnected.inc is not required after fix shutdown_server command
2008-12-25 17:53:24 +08:00
bcfa0cedb2 5.0-bugteam->5.1-bugteam merge 2008-12-24 19:26:48 +04:00
ce985aa36e Bug#40953 SELECT query throws "ERROR 1062 (23000): Duplicate entry..." error
Table could be marked dependent because it is
either 1) an inner table of an outer join, or 2) it is a part of
STRAIGHT_JOIN. In case of STRAIGHT_JOIN table->maybe_null should not
be assigned. The fix is to set st_table::maybe_null to 'true' only
for those tables which are used in outer join.



mysql-test/r/select.result:
  test result
mysql-test/t/select.test:
  test case
sql/sql_select.cc:
  Table could be marked dependent because it is
  either 1) an inner table of an outer join, or 2) it is a part of
  STRAIGHT_JOIN. In case of STRAIGHT_JOIN table->maybe_null should not
  be assigned. The fix is to set st_table::maybe_null to 'true' only
  for those tables which are used in outer join.
sql/sql_select.h:
  added comment
2008-12-24 19:24:11 +04:00
e75ba73a07 5.0-bugteam->5.1-bugteam merge 2008-12-24 19:16:50 +04:00
7103f4c916 Bug#41456 SET PASSWORD hates CURRENT_USER()
init user->user struct with 
thd->security_ctx->priv_user context
if user->user is not initializied

mysql-test/r/grant.result:
  test result
mysql-test/t/grant.test:
  test case
sql/set_var.cc:
  init user->user struct with 
  thd->security_ctx->priv_user context
  if user->user is not initializied
2008-12-24 19:14:59 +04:00
15015b59e4 5.0-bugteam->5.1-bugteam merge 2008-12-24 19:09:00 +04:00
65c3d37111 Bug#25830 SHOW TABLE STATUS behaves differently depending on table name
replace wild_case_compare with my_wildcmp which is multibyte safe function


mysql-test/r/lowercase_utf8.result:
  test result
mysql-test/t/lowercase_utf8-master.opt:
  test case
mysql-test/t/lowercase_utf8.test:
  test case
sql/sql_show.cc:
  replace wild_case_compare with my_wildcmp which is multibyte safe function
2008-12-24 19:01:41 +04:00
e6b9fb32a7 Bug#40104 regression with table names?
On Winodws FN_DEVCHAR is ':' symbol.
There is a check in mysql_create_table_no_lock() func
on FN_DEVCHAR presence but this code is obsolete and
unnecessary. So the fix is to remove unnecessary code.


mysql-test/r/create.result:
  test result
mysql-test/t/create.test:
  test case
sql/sql_table.cc:
  On Winodws FN_DEVCHAR is ':' symbol.
  There is a check in mysql_create_table_no_lock() func
  on FN_DEVCHAR presence but this code is obsolete and
  unnecessary. So the fix is to remove unnecessary code.
2008-12-23 19:33:46 +04:00
f42b9ad93f 5.0-bugteam->5.1-bugteam merge 2008-12-23 18:21:01 +04:00
c06df92af6 Bug#37575 UCASE fails on monthname
The MONTHNAME/DAYNAME functions
returns binary string, so the LOWER/UPPER functions
are not effective on the result of MONTHNAME/DAYNAME call.  
Character set of the MONTHNAME/DAYNAME function
result has been changed to connection character set.


include/m_ctype.h:
  added my_charset_repertoire function
mysql-test/r/ctype_ucs.result:
  test result
mysql-test/r/func_time.result:
  test result
mysql-test/t/ctype_ucs.test:
  test case
mysql-test/t/func_time.test:
  test case
sql/item_timefunc.cc:
  Item_func_monthname::fix_length_and_dec and
  Item_func_dayname::fix_length_and_dec methods have been
  modified to use connection character set
sql/item_timefunc.h:
  Item_func_monthname::fix_length_and_dec and
  Item_func_dayname::fix_length_and_dec methods have been
  modified to use connection character set
sql/mysql_priv.h:
  added max_month_name_length, max_day_name_length fields into MY_LOCALE struct
sql/mysqld.cc:
  The test_lc_time_sz function controls modifications
  of the locale database in debugging mode.
sql/sql_locale.cc:
  initialization of max_month_name_length, max_day_name_length fields
strings/ctype.c:
  added my_charset_repertoire function
2008-12-23 18:08:04 +04:00
cb6a755929 Merge: mysql-5.0-bugteam -> mysql-5.1-bugteam 2008-12-23 16:28:13 +03:00
e6390e23c2 Merge. 2008-12-23 15:06:30 +04:00
7658444b97 Merge 2008-12-22 23:28:08 +03:00
85d7d1609a branches/5.1: Make
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
a true replacement of SET GLOBAL INNODB_LOCKS_UNSAFE_FOR_BINLOG=1.
This fixes an error that was introduced in r370, causing
semi-consistent read not to not unlock rows in READ COMMITTED mode.
(Bug #41671, Issue #146)

rb://67 approved by Heikki Tuuri
2008-12-22 14:05:19 +00:00
f8fe9e0953 Bug#38540 rpl_server_id2 uses show slave status unnecessarily
a minor improvement to the test to ease merging.

mysql-test/suite/rpl/r/rpl_server_id2.result:
  results changed.
mysql-test/suite/rpl/t/rpl_server_id2.test:
  masking out the until_pos which value is out of interest but
  it presence hurts merging between trees.
2008-12-19 22:13:12 +02:00
6a637271d6 merge from 5.1-rpl to a local branch 2008-12-19 21:47:02 +02:00
126c0b4433 Bug#38934 slave slave until does not work with --replicate-same-server-id
Bug#38540 rpl_server_id2 uses show slave status unnecessarily
            
Slave did not perform any event recorded into the relay log from some
different master when it was started with --replicate-same-server-id.
The reason appeared to be a consequence of BUG#38734 which stopped the
sql thread at its startup time.
      
The real fixes for the current bug are in the patch for BUG#38734.
This changeset carries only a regression test for the bugs.  Bug#38540
gets fixed too by means of eliminating an extra show slave status.


mysql-test/suite/rpl/r/rpl_server_id2.result:
  Bug#38934 Bug#38540 changed results.
mysql-test/suite/rpl/t/disabled.def:
  rpl_server_id2 is re-enabled.
mysql-test/suite/rpl/t/rpl_server_id2.test:
  regression test for BUG#38734 is added.
  Bug#38540 requirement to get rid of show slave status is implemented.
2008-12-19 20:59:22 +02:00
09501824a6 Merge into actual tree 2008-12-19 17:42:52 +01:00
8eac434d49 Merge 2008-12-19 16:55:45 +01:00
2d06a00dda Bug #40704 main.events_restart fails sporadically in pushbuild: "server has gone away"
mysql-test/include/wait_until_disconnected.inc:
  Allow 2013 as an expected error code
2008-12-19 16:48:31 +01:00
028b0a52c3 due to merge 2008-12-19 16:12:15 +01:00
357b500940 WL#4681: Took the system variable tests out of the main test suite, put them into "sys_vars", updated some reult files and tests. 2008-12-19 16:03:32 +01:00
7976735a0c BUG#40974: Incorrect query results when using clause evaluated using range check
- QUICK_INDEX_MERGE_SELECT deinitializes its rnd_pos() scan when it reaches EOF, but we 
  need to make the deinitialization in QUICK_INDEX_MERGE_SELECT destructor also. This is because
  certain execution strategies can stop scanning without reaching EOF, then then try to do a full
  table scan on this table. Failure to deinitialize caused the full scan to use (already empty) 
  table->sort and produce zero records.

mysql-test/r/index_merge.result:
  BUG#40974: Incorrect query results when using clause evaluated using range check
  - Testcase
mysql-test/t/index_merge.test:
  BUG#40974: Incorrect query results when using clause evaluated using range check
  - Testcase
2008-12-19 16:38:39 +03:00
e8d5395c42 Post-fix merge 5-1 --> 5.1-rpl. Changed mysqlcheck.result.
Note that this result set is different from that in 6.0/6.0-rpl.
2008-12-19 10:11:48 +00:00
da1fe251a7 Merge into GCA tree 2008-12-19 10:00:58 +01:00
87ebdef9ea Post-fix merge 5-1 --> 5.1-rpl. Changed mysqlcheck.result. 2008-12-19 03:02:20 +00:00
4dc447e1ea Auto-merge from 5.1-bugteam 2008-12-19 01:56:58 +01:00
3f85c7f270 Disable part of innodb-autoinc.test, because the MySQL server asserts when
compiled --with-debug, due to bug 39828, "autoinc wraps around when offset and
increment > 1".  This change should be reverted when that bug is fixed (and a
a few other minor changes to the test as described in comments).
2008-12-19 01:28:51 +01:00
7ad4b20b30 auto merge 5.1-rpl --> 5.1-rpl(local) 2008-12-18 20:02:40 +00:00
606603db95 Post-fix merge 5-1 --> 5.1-rpl. Fixed mysqlcheck.test var directories. 2008-12-18 19:37:18 +00:00
a24d4c8f25 Merge 2008-12-18 19:54:47 +01:00
91ca96e07e Merge into GCA tree 2008-12-18 19:28:44 +01:00
edd3d39ff9 Merge tip of 5.1-rpl into local repository 2008-12-18 15:55:16 +01:00
949b2f1c0c Bug#41480 Tests that do LOAD DATA INFILE fail when run locally
mysql-test/lib/My/File/Path.pm:
  Extend 'copytree' to take an optional "umask" parameter that will be used while copying the files
mysql-test/mysql-test-run.pl:
  Pass umask 0022 to copytree so that the copied files will be created world readable and the mysqld
  can LOAD DATA INFILE them
2008-12-18 13:58:55 +01:00
29e8163c9f Enabled test cases that were fixed. 2008-12-18 12:35:48 +00:00
926e5f6694 Merged from 5.0 (enterprise). 2008-12-17 15:01:34 -05:00
8f1ce01cd2 automerge 2008-12-17 20:57:58 +04:00
75344d3d3b Bug#29263 disabled storage engines omitted in SHOW ENGINES
Static disabled plugins|engines and dynamic plugins which installed but disabled
are not visible in I_S PLUGINS|ENGINES tables because they are not stored into
global plugin array.
The fix: add such plugins|engines to plugin array with PLUGIN_IS_DISABLED status.
I_S.ENGINES 'Transactions', 'XA', 'Savepoints' fields have NULL value in this case.


mysql-test/r/warnings_engine_disabled.result:
  test result
mysql-test/suite/funcs_1/r/is_columns_is.result:
  result fix
mysql-test/suite/funcs_1/r/is_engines.result:
  result fix
mysql-test/t/warnings_engine_disabled.test:
  test case
sql/sql_plugin.cc:
  store disabled plugins|engines into plugin array
sql/sql_plugin.h:
  added PLUGIN_IS_DISABLED flag
sql/sql_show.cc:
  added filling of 'engines'&'plugins' tables with disabled engines|plugins
2008-12-17 19:45:34 +04:00
6200aaf468 due to merge 2008-12-17 15:54:25 +01:00