mysql-test/suite/funcs_1/r/memory_func_view.result:
Take additional precision into account.
mysql-test/suite/funcs_1/r/memory_views.result:
Take additional precision into account.
mysql-test/suite/funcs_1/r/myisam_func_view.result:
Take additional precision into account.
mysql-test/suite/funcs_1/r/myisam_views.result:
Take additional precision into account.
mysql-test/r/bdb_gis.result:
Take additional precision into account.
mysql-test/r/ndb_gis.result:
Take additional precision into account.
mysql-test/t/type_float.test:
Added missing DROP TABLE.
Cleaned up SQL code in the test.
Needed to move the FLUSH TABLES statement prior to the DROP TABLE t1 to prevent a warning of
Table open on delete and a test fail.
Dirty close tricky does not work on Windows.
mysql-test/r/query_cache_notembedded.result:
Remove test case result.
mysql-test/t/query_cache_notembedded.test:
Remove test case.
Bug#38435 - LONG Microseconds cause MySQL to fail a CAST to DATETIME or DATE
Parsing of optional microsecond part in datetime did not
fail gracefully when field width was larger than the allowed
six places.
Now handles up to the correct six places, and disregards
any extra digits without messing up what we've already got.
mysql-test/r/type_datetime.result:
show graceful handling of overly long microsecond parts
(correct truncation).
mysql-test/t/type_datetime.test:
show graceful handling of overly long microsecond parts
(correct truncation).
sql-common/my_time.c:
Special case for time-parsing: for microsecond part,
leading zeroes are actually meaningful! Also, don't
break the entire date on more than the allowed six
digits in microsecond part, just truncate the extra
digits.
testcase checks are made.
MTR spawns mysqltest to run check-testcase test before and after each testcase
it runs. It can also run check-warnings using mysqltest. Since it happened on PB
that these checks hanged, this patch provides additional feedback to help
investigating such failures:
- mysqltest is modified to give feedback about main steps in execution of a
testcase if run in verbose mode (including connection to the server),
- MTR is modified to run mysqltest in verbose mode when doing check-testcase or
check-warnings. The diagnostic output from mysqltest is preserved so that it is
saved upon test failure.
client/mysqltest.cc:
Add verbose messages informing about main steps in execution of a testcase.
mysql-test/mysql-test-run.pl:
- When doing check-testcase or check-warnings run mysqltest in verbose mode.
- Do not delete the mysqltest's error log if errors are detected during these
Fix the failing mysql-test partition_innodb, which failed only if run after
innodb_trx_weight (or other test that would leave LATEST DEADLOCK ERROR into
the output of SHOW ENGINE INNODB STATUS). Find further explanation for the
failure at the top of the added patch partition_innodb.diff.
- Since we are only using the auto cleanup in one place of mtr.pl today, disable the
autocleanup and write our own END handler that clean up the tmpdir only when the process
that created it exits.
- output callstacks from crash using cdb debugger which is part
of "Debugging Tools for Windows". Output other interesting
information - function parameters, possibly source code fragment
and other goodies of "!analyze" cdb extension.
A Query in the MyISAM merge table was crashing
if the index merge algorithm was being used
Index Merge optimization requires the reading of
multiple indexes at the same time. Reading multiple
indexes at once with current SE API means that we
need to have handler instance for each to-be-read
index. This is done by creating clones of the handlers
instances. The clone internally does a open of the handler.
The open for a MERGE engine is handled in the following
phases
1) open parent table
2) generate list of underlying
table
3) attach underlying tables
But the current implementation does only the first
phase (i.e.) open parent table.
The current patch fixes this at the MERGE engine level,
by handling the clone operation within the MERGE engine
rather than in the storage engine API. It opens and
attaches the MyISAM tables on the MyISAM storage engine
interface directly within the MERGE engine. The new MyISAM
table instances, as well as the MERGE clone itself, are not
visible in the table cache. This is not a problem because
all locking is handled by the original MERGE table from which
this is cloned of.
mysql-test/r/merge.result:
updated the result file to reflect the new tests
added to test the fix
mysql-test/t/merge.test:
Added new tests to verify that the index merge
algorithm does not crash in the merge engine.
storage/myisammrg/ha_myisammrg.cc:
Implement the clone method, that handles
1) Cloning the handler
2) Opening underlying MYISAM child tables
3) Copies the state of the original handler and the children
into the cloned instances
4) Sets the appropriate flags
storage/myisammrg/ha_myisammrg.h:
Added a flag that is set to indicate that the current
instance is cloned. Also added the prototype or the clone
method.
storage/myisammrg/myrg_open.c:
Since we do now again use myrg_open() in the server
removed the comments marking this as deadcode.
MATCH() function accepts column list as an argument. It was possible to override
this requirement with aliased non-column select expression. Which results in
server crash.
With this fix aliased non-column select expressions are not accepted by MATCH()
function, returning an error.
mysql-test/r/fulltext.result:
A test case for BUG#36737.
mysql-test/t/fulltext.test:
A test case for BUG#36737.
sql/item_func.cc:
Only accept fields as arguments to MATCH().
The test case relies on binlog entries for assertion. The problem is that the
binlog does not get cleaned in pushbuild between tests, resulting in extra
entries in the result file, causing the test to fail.
This fix adds a reset master at the beginning of the test, so that we get a
clean binlog file.
Some errors that cause the slave SQL thread to stop are not shown in the
Slave_SQL_Error column of "SHOW SLAVE STATUS". Instead, the error is only
in the server's error log.
That makes it difficult to analyze the error for the user. One example of an error
that stops the slave but is not shown by "SHOW SLAVE STATUS" is when @@global.init_slave
is set incorrectly (e.g., it contains something that is not valid SQL).
Three failures were not correctly reported:
1 - Failures during slave thread initialization
2 - Failures while initializing the relay log position right after
starting the slave thread.
3 - Failures while processing queries passed through the init_slave
option.
This patch fixes the issues by reporting the errors through relay-info->report.
TRUNCATE TABLE fails to replicate when stmt-based binlogging is not supported.
Correcting some tests that was failing in pushbuild as well as fixing result
file for some tests that are not executed in the default MTR run.
mysql-test/suite/binlog/t/binlog_truncate_innodb.test:
Need to reset master to avoid the check to be for the wrong binlog file.
mysql-test/suite/binlog/t/binlog_truncate_myisam.test:
Need to reset master to avoid the check to be for the wrong binlog file.
Post-merge fixes. Changes to some result sets.
mysql-test/r/commit_1innodb.result:
TRUNCATE TABLE does not cause the binary log to do commits any more.
mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result:
TRUNCATE TABLE is not transactional, hence does not have BEGIN/COMMIT around itself.
mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
TRUNCATE TABLE is not transactional, hence does not have BEGIN/COMMIT around itself.
mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result:
TRUNCATE TABLE is not transactional, hence does not have BEGIN/COMMIT around itself.
mysql-test/suite/rpl/r/rpl_truncate_2myisam.result:
STOP SLAVE was replaced with include file.
mysql-test/suite/rpl/r/rpl_truncate_3innodb.result:
STOP SLAVE was replaced with include file.
date_format functions
String::realloc() did not check whether the existing string data fits in
the newly allocated buffer for cases when reallocating a String object
with external buffer (i.e.alloced == FALSE). This could lead to memory
overruns in some cases.
client/sql_string.cc:
Fixed String::realloc() to check whether the existing string data fits
in the newly allocated buffer for cases when reallocating a String
object with external buffer.
mysql-test/r/func_str.result:
Added a test case for bug #41868.
mysql-test/t/func_str.test:
Added a test case for bug #41868.
sql/sql_class.cc:
After each call to Item::send() in select_send::send_data() reset
buffer to its original state to reduce unnecessary malloc() calls. See
comments for bug #41868 for detailed analysis.
sql/sql_string.cc:
Fixed String::realloc() to check whether the existing string data fits
in the newly allocated buffer for cases when reallocating a String
object with external buffer.
There is an inconsistency with DROP DATABASE IF EXISTS, DROP
TABLE IF EXISTS and DROP VIEW IF EXISTS: those are binlogged even
if the DB or TABLE does not exist, whereas DROP PROCEDURE IF
EXISTS does not. It would be nice or at least consistent if DROP
PROCEDURE/STATEMENT worked the same too.
Fixed DROP PROCEDURE|FUNCTION IF EXISTS by adding a call to
write_bin_log in mysql_execute_command. Checked also if all
documented "DROP (...) IF EXISTS" get binlogged. Left out DROP
SERVER IF EXISTS because it seems that it only gets binlogged when
using row event (see BUG#25705).