There's currently no way of knowing the determinicity of an UDF.
And the optimizer and the sequence() UDFs were making wrong
assumptions about what the is_const member means.
Plus there was no implementation of update_system_tables()
causing the optimizer to overwrite the information returned by
the <udf>_init function.
Fixed by equating the assumptions about the semantics of
is_const and providing a implementation of update_used_tables().
Added a TODO item for the UDF API change needed to make a better
implementation.
include/mysql_com.h:
Bug #30355: comment added
mysql-test/r/udf.result:
Bug #30355: test case
mysql-test/t/udf.test:
Bug #30355: test case
sql/item_func.cc:
Bug #30355: keep const_item_cache and used_tables_cache in sync
sql/item_func.h:
Bug #30355:
- a better implementation of update_used_tables()
- keep const_item_cache and used_tables_cache in sync
sql/udf_example.c:
Bug #30355: Wrong value for const_item fixed.
memory corruptions.
The right pointer field of the SEL_ARG structure was not
initialized in the constructor and sometimes that led to
server crashes.
There is no testcase because the bug occurs only when
uninitialized memory has particular values, which can't be
re-created in the test suite.
sql/opt_range.cc:
Fixed bug #32403.
The eq_tree function requires that SEL_ARG::left and
SEL_ARG::right are equal to null pointer if SEL_ARG
type is MAYBE_KEY, but SEL_ARG::right was not initialized
and contained garbage.
Problem: passing a non-constant name to the NAME_CONST function results in a crash.
Fix: check the NAME_CONST name argument; return fake item type if we got
non-constant argument(s).
mysql-test/r/func_misc.result:
Fix for bug #32559: connection hangs on query with name_const
- test result.
mysql-test/t/func_misc.test:
Fix for bug #32559: connection hangs on query with name_const
- test case.
sql/item.cc:
Fix for bug #32559: connection hangs on query with name_const
- Item_name_const::type() now returns NULL_ITEM if non-constant arguments
were used to create the item to avoid wrong type casting.
sql/item.h:
Fix for bug #32559: connection hangs on query with name_const
- NAME_CONST name argument checked for invariability.
Remove the mysql_odbc_escape_string() function. The function
has multi-byte character escaping issues, doesn't honor the
NO_BACKSLASH_ESCAPES mode and is not used anymore by the
Connector/ODBC as of 3.51.17.
include/mysql.h:
Remove mysql_odbc_escape_string() prototype.
include/mysql_h.ic:
Update abi check file, mostly line changes and mysql_odbc_escape_string
removal.
libmysql/libmysql.c:
Remove mysql_odbc_escape_string() body.
libmysql/libmysql.def:
Remove mysql_odbc_escape_string()
libmysqld/libmysqld.def:
Remove mysql_odbc_escape_string()
self-join
When doing DELETE with self-join on a MyISAM or MERGE table, it could
happen that a record being retrieved in join_read_next_same() has
already been deleted by previous iterations. That caused the engine's
index_next_same() method to fail with HA_ERR_RECORD_DELETED error and
the whole DELETE query to be aborted with an error.
Fixed by suppressing the HA_ERR_RECORD_DELETED error in
hy_myisam::index_next_same() and ha_myisammrg::index_next_same(). Since
HA_ERR_RECORD_DELETED can only be returned by MyISAM, there is no point
in filtering this error in the SQL layer.
mysql-test/r/merge.result:
Added a test case for bug #28837.
mysql-test/r/myisam.result:
Added a test case for bug #28837.
mysql-test/t/merge.test:
Added a test case for bug #28837.
mysql-test/t/myisam.test:
Added a test case for bug #28837.
sql/ha_myisam.cc:
Skip HA_ERR_RECORD_DELETED silently when calling mi_rnext_same().
sql/ha_myisammrg.cc:
Skip HA_ERR_RECORD_DELETED silently when calling mi_rnext_same().
insert ... select.
The 5.0 manual page for mysql_insert_id() does not mention anything
about INSERT ... SELECT, though its current behavior is incosistent
with what the manual says about the plain INSERT.
Fixed by changing the AUTO_INCREMENT and mysql_insert_id() handling
logic in INSERT ... SELECT to be consistent with the INSERT behavior,
the manual, and the changes in 5.1 introduced by WL3146:
- mysql_insert_id() now returns the first automatically generated
AUTO_INCREMENT value that was successfully inserted by INSERT ... SELECT
- if an INSERT ... SELECT statement is executed, and no automatically
generated value is successfully inserted, mysql_insert_id() now returns
the ID of the last inserted row.
sql/sql_class.h:
Replaced last_insert_id with autoinc_value_of_last_inserted_row to be
consistent with 5.1 code.
sql/sql_insert.cc:
Revised the AUTO_INCREMENT and mysql_insert_id() handling logic in
INSERT ... SELECT to be consistent with INSERT behavior, the manual, and
changes in 5.1 introduced by WL3146:
- mysql_insert_id() now returns the first automatically generated
AUTO_INCREMENT value that was successfully inserted;
- if an INSERT ... SELECT statement is executed, and no automatically
generated value is successfully inserted, mysql_insert_id() now returns
the ID of the last inserted row.
tests/mysql_client_test.c:
Backported the test cases related to INSERT ... SELECT and
mysql_insert_id() from WL3146 patch to 5.0.
Sending several "KILL QUERY" statements to target a connection running
"SELECT SLEEP" could freeze the server.
The locking order in Item_func_sleep was wrong and this could lead to a
dead lock.
This patch solves the issue by resolving the locking order properly.
sql/item_func.cc:
- Moved LOCK_user_locks critical region so that it doesn't share space with
mysys_var->mutex region; this can lead to deadlock.
comment fixed as we truly need const_item to be 1 to mark
constant function
include/mysql_com.h:
Bug #31900 Wrong confusing comment in mysql_com.h header file.
comment fixed
into magare.gmz:/home/kgeorge/mysql/autopush/B32036-5.0-opt
mysql-test/r/subselect.result:
merge of fix for bug 32036 to 5.0-opt
mysql-test/t/subselect.test:
merge of fix for bug 32036 to 5.0-opt
crashes MySQL 5.122
There was a difference in how UNIONs are handled
on top level and when in sub-query.
Because the rules for sub-queries were syntactically
allowing cases that are not currently supported by
the server we had crashes (this bug) or wrong results
(bug 32051).
Fixed by making the syntax rules for UNIONs match the
ones at top level.
These rules however do not support nesting UNIONs, e.g.
(SELECT a FROM t1 UNION ALL SELECT b FROM t2)
UNION
(SELECT c FROM t3 UNION ALL SELECT d FROM t4)
Supports for statements with nested UNIONs will be
added in a future version.
mysql-test/r/subselect.result:
Bug #32036: test case
mysql-test/t/subselect.test:
Bug #32036: test case
sql/sql_yacc.yy:
Bug #32036: Make the syntax rules for UNIONs in subqueries the same
as for top level UNIONs.
Problem: using wrong local lock type value in the mysql_insert() results in a crash.
Fix: use a proper value.
mysql-test/r/delayed.result:
Fix for bug #32676: insert delayed crash with wrong column and function specified
- test result.
mysql-test/t/delayed.test:
Fix for bug #32676: insert delayed crash with wrong column and function specified
- test case.
sql/sql_insert.cc:
Fix for bug #32676: insert delayed crash with wrong column and function specified
- the local lock_type var assigment displaced just after the line
where the table_list->lock_type is filnally defined in the mysql_insert()
to avoid using its old value.
strmake() called with wrong parameters:
5.0-specific fixes.
client/mysql.cc:
In debug-mode, strmake() fills unused part of buffer with
a test-pattern. This overwrites our previous extra '\0'
(from previous bzero()).
sql/sp.cc:
off-by-one buffer-size.
into mysql.com:/misc/mysql/31752_/50-31752_
sql/log.cc:
Auto merged
sql/repl_failsafe.cc:
Auto merged
sql/set_var.cc:
Auto merged
strings/strmake.c:
Auto merged
sql/sql_show.cc:
manually merged
sql/unireg.cc:
manual merge
strmake() calls are easy to get wrong. Add checks in extra
debug mode to identify possible exploits.
Remove some dead code.
Remove some off-by-one errors identified with new checks.
sql/log.cc:
fix off-by-one buffer-length argument to prevent stack smashing
sql/repl_failsafe.cc:
fix off-by-one buffer-length argument to prevent stack smashing
sql/set_var.cc:
fix off-by-one buffer-length argument to prevent stack smashing
(already approved, backports #31588)
sql/sql_show.cc:
misdimensioned buffers: functions further down the callstack
expect bufsize of FN_REFLEN
sql/unireg.cc:
When EXTRA_DEBUG is enabled, strmake() will write funny patterns to
buffers it operates on to identify possibly overflows. This leads to
badness in mysql_create_frm(), so we explicitly put any unused bytes
(back) into a defined state. Not a bug-fix, but part of the strmake()
bug detector.
strings/strmake.c:
strmake() takes maximum string length rather than buffer-length
(string length + 1 to accomodate \0 terminator) as argument.
Since this is easy to get wrong, add extra debug code to identify
off-by-ones so we can prevent stack smashing.
Alternative "BAD_STRING_COMPILER" removed after checking
with Monty.
Problem: INTERVAL function implementation doesn't handle NULL range values.
Fix: skip NULL ranges looking for a proper one.
mysql-test/r/func_set.result:
Fix for bug #32560: crash with interval function and count(*)
- test result.
mysql-test/t/func_set.test:
Fix for bug #32560: crash with interval function and count(*)
- test case.
sql/item_cmpfunc.cc:
Fix for bug #32560: crash with interval function and count(*)
- skip NULL ranges calculating INTERVAL(...).
Fix for the bug#31048 for 64bit platforms.
subselect.test, subselect.result:
Corrected text case for the bug#31048.
mysql-test/t/subselect.test:
Corrected text case for the bug#31048.
mysql-test/r/subselect.result:
Corrected text case for the bug#31048.
sql/opt_range.cc:
Fix for the bug#31048 for 64bit platforms.
Include "manual.chm" in source TAR if it exists
configure.in:
Include "manual.chm" in source TAR if it exists
Docs/Makefile.am:
Include "manual.chm" in source TAR if it exists