- Make EXPLAIN UPDATE/DELETE work inside SPs
- Return correct error code from mysql_delete()
- EXPLAIN <multi-DELETE> will create a multi_delete object (as it
affects the optimization). select_result will be only used for
producing EXPLAIN output.
INDEX_READ_MAP HAD NO MATCH
If index_read_map is called for exact search and no matching records
exists it will position the cursor on the next record, but still having the
relative position to BTR_PCUR_ON.
This will make a call for index_next to read yet another next record,
instead of returning the record the cursor points to.
Fixed by setting pcur->rel_pos = BTR_PCUR_BEFORE if an exact
[prefix] search is done, but failed.
Also avoids optimistic restoration if rel_pos != BTR_PCUR_ON,
since btr_cur may be different than old_rec.
rb#3324, approved by Marko and Jimmy
--replace_regex /.prefix.sql.share.charsets[/\]/MYSQL_CHARSETSDIR/
select @@global.character_sets_dir;
The intention of the '[/\]' part was to replace both slash
'/' and backslash '\\', so it does not depend on the OS.
The pattern '[/\]' was actually wrong, because ']' is escaped
and should be considered as a part of the class, instead of
being a closing bracket for the class. However, due to some bug
in the old REGEX library it worked fine.
After switching to PCRE, mysqltest correctly complains about unbalaced '[]'.
The expected correct pattern should be '[/\\]'.
However, due to some bug in mysqltest, it eats consequetive baskslashes
in a strange way, so there is no a way to have to consequetive
backslashes after unescaping.
Workaround:
using [[:punct:]] as a pattern that matches both slash and backslash,
which should be fine for this test purposes.
DURING INNODB RECOVERY
Problem:
=======
The connection 'master' is dropped by mysqltest after
rpl_end.inc. At this point, dropping temporary tables
at the connection 'master' are not synced at slave.
So, the temporary tables replicated from master remain
on slave leading to an inconsistent close of the test.
The following test thus complains about the presence of
temporary table(s) left over from the previous test.
Fix:
===
- Put explicit drop commands in replication tests so
that the temporary tables are dropped at slave as well.
- Added the check for Slave_open_temp_tables in
mtr_check.sql to warn about the remaining temporary
table, if any, at the close of a test.
- Query plan footprint (in new terms, "EXPLAIN structure") should always keep
a copy of key_name. This is because the table might be a temporary table which
may be already freed by the time we use query plan footprint.
Updated information in SHOW AUTHORS and SHOW CONTRIBUTORS
SHOW AUTHORS and SHOW CONTRIBUTORS are not depricated anymore.
CMakeLists.txt:
Install TODO and CREDITS files
CREDITS:
Information about the MariaDB foundation
README:
Updated to include the MariaDB foundation
mysql-test/r/contributors.result:
Updated contributors
mysql-test/r/show_check.result:
SHOW AUTHORS and SHOW CONTRIBUTORS are not depricated anymore.
scripts/make_binary_distribution.sh:
Added TODO and CREDITS
sql/authors.h:
Updated list of active authors
sql/contributors.h:
Updated list of active contributors and members of the MariaDB foundation
sql/sql_show.cc:
Extend comment lengths
sql/sql_yacc.yy:
SHOW AUTHORS and SHOW CONTRIBUTORS are not depricated anymore
- merged test cases for MySQL bug#27480
- fixed that LOCK TABLES was unable to open temporary table
(covered by grant2 test, merged appropriate code from 5.6)
- commented lines that cause server crash in merge test, reported
MDEV-5042 (not relevant to bug#27480)
don't set TABLE_SHARE::keys before TABLE_SHARE::key_info is set,
otherwise an error might leave only the first property set and it will
confuse TABLE_SHARE::destroy()
Added --init-command argument to mysqlslap: SQL Command to execute
when connecting to MySQL server. Will automatically be re-executed
when reconnecting.
- The crash was caused because the optimizer called handler->multi_range_read_info()
on a derived temporary table. That table has been created, but not opened yet.
Because of that, handler::table was NULL, which caused crash.
Fixed by changing DS-MRR methods to use handler::table_share instead.
handler::table_share is set in handler ctor, so this should be safe.
mtr can crash occasionally.
This happens when mtr sends to a child mtr process (or vice-versa) a packet,
that gets truncated or, perhaps, split in two.
Then the other side cannot deserialize it and fails as above.