time_format() claimed %H and %k would return at most two digits
(hours 0-23), but this coincided neither with actual behaviour
nor with docs. this is not visible in simple queries; forcing
a temp-table is probably the easiest way to see this. adjusted
the return-length appropriately; the alternative would be to
adjust the docs to say that behaviour for > 99 hours is undefined.
---
Bug#19844: time_format in Union truncates values
time_format() claimed %H and %k would return at most two digits
(hours 0-23), but this coincided neither with actual behaviour
nor with docs. this is not visible in simple queries; forcing
a temp-table is probably the easiest way to see this. adjusted
the return-length appropriately; the alternative would be to
adjust the docs to say that behaviour for > 99 hours is undefined.
mysql-test/r/func_time.result:
Bug#19844: time_format in Union truncates values
show time_format() handles %H and %k correctly four > 99 hours
mysql-test/t/func_time.test:
Bug#19844: time_format in Union truncates values
show time_format() handles %H and %k correctly four > 99 hours
sql/item_timefunc.cc:
Bug#19844: time_format in Union truncates values
unbreak promises we make about field-length of %H and %k in
time_format() so they coincide with the actual range rather
than just 0..23. the docs say we must operate outside that
range, so we'd better do it right.
---
Bug#19844: time_format in Union truncates values
unbreak promises we make about field-length of %H and %k in
time_format() so they coincide with the actual range rather
than just 0..23. the docs say we must operate outside that
range, so we'd better do it right.
One digit values are padded to two digits with %H, "longer"
values are handled correctly up to seven digits including
any sign.
(clarified comments as per jimw's suggestion.)
set.
(Ramil's patch, recreated.)
heap/hp_delete.c:
Reset info->lastkey_len for further heap_rnext/heap_rprev calls.
mysql-test/r/heap_btree.result:
Test for bug #9719: DELETE with WHERE on HEAP table just deletes first
row of matched set.
mysql-test/t/heap_btree.test:
Test for bug #9719: DELETE with WHERE on HEAP table just deletes first
row of matched set.
into moonbone.local:/work/tmp_merge-4.1-opt-mysql
sql/item_strfunc.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
into mysql.com:/Users/kent/mysql/bk/mysql-4.1
configure.in:
Auto merged
scripts/make_binary_distribution.sh:
Auto merged
support-files/mysql.spec.sh:
SCCS merged
Man page for mysqld command move to section 8 (bug#21220)
configure.in:
Man page for mysqld command move to section 8 (bug#21220)
man/Makefile.am:
Man page for mysqld command move to section 8 (bug#21220)
Man page for "mysqld" command move to section 8 (bug#21220)
scripts/make_binary_distribution.sh:
Man page for "mysqld" command move to section 8 (bug#21220)
slave.cc, sql_acl.cc:
- remove sql_print_error() for events that are not server errors
sql/slave.cc:
Bug #20402: DROP USER failure logged as ERROR rather than WARNING
remove sql_print_error() for events that are not server errors
sql/sql_acl.cc:
Bug #20402: DROP USER failure logged as ERROR rather than WARNING
remove sql_print_error() for events that are not server errors
When processing aggregate functions all tables values are reset
to NULLs at the end of each group.
When doing that if there are no rows found for a group
the const tables must not be reset as they are not recalculated
by do_select()/sub_select() for each group.
mysql-test/r/subselect2.result:
* Bug #20792: Incorrect results from aggregate subquery
- test suite for the bug. This is dependent on InnoDB despite
the fact that the bug and the fix are not InnoDB specific.
This is because of the table flag HA_NOT_EXACT_COUNT.
When this flag is off (as in MyISAM) both t2 and t3 become of
join type 'system' as they are estimated to have 1 record and
and this statistics can be trusted (according to the absence of
HA_NOT_EXACT_COUNT).
mysql-test/t/subselect2.test:
* Bug #20792: Incorrect results from aggregate subquery
- test suite for the bug
sql/sql_select.cc:
* Bug #20792: Incorrect results from aggregate subquery
- when clearing results if there are not rows found for group
the const tables must not be reset as they are not recalculated
for each group.
Too many cursors (more than 1024) could lead to memory corruption.
This affects both, stored routines and C API cursors, and the
threshold is per-server, not per-connection. Similarly, the
corruption could happen when the server was under heavy load
(executing more than 1024 simultaneous complex queries), and this is
the reason why this bug is fixed in 4.1, which doesn't support
cursors.
The corruption was caused by a bug in the temporary tables code, when
an attempt to create a table could lead to a write beyond allocated
space. Note, that only internal tables were affected (the tables
created internally by the server to resolve the query), not tables
created with CREATE TEMPORARY TABLE. Another pre-condition for the
bug is TRUE value of --temp-pool startup option, which, however, is a
default.
The cause of a bug was that random memory was overwritten in
bitmap_set_next() due to out-of-bound memory access.
mysys/my_bitmap.c:
Local 'bitmap_size' is measured in bytes, no need to multiply it by 8.
sql/sql_select.cc:
Clear the temp_pool_slot bit only if we have set it previously.
When optimizing conditions like 'a = <some_val> OR a IS NULL' so that they're
united into a single condition on the key and checked together the server must
check which value is the NULL value in a correct way : not only using ->is_null
but also check if the expression doesn't depend on any tables referenced in the
current statement.
This additional check must be performed because that optimization takes place
before the actual execution of the statement, so if the field was initialized
to NULL from a previous statement the optimization would be applied incorrectly.
mysql-test/r/select.result:
Bug #21019: First result of SELECT COUNT(*) different than consecutive runs
- test case
mysql-test/t/select.test:
Bug #21019: First result of SELECT COUNT(*) different than consecutive runs
- test case.
Note that ALTER TABLE is important here : it happens to
leave the Field instance for t1.b set to NULL, witch is vital for
demonstrating the problem fixed by this changeset.
sql/sql_select.cc:
Bug #21019: First result of SELECT COUNT(*) different than consecutive runs
- check whether a value is null taking into account its table dependency.
innobase/ibuf/ibuf0ibuf.c:
Applied innodb-4.1-ss32 snapshot.
ibuf_fixed_addr_page(): Add parameter space. As the insert
buffer B-tree is only located in the system tablespace
(space 0), IBUF_TREE_ROOT_PAGE_NO is only special in space 0.
The problem was in that opt_sum_query() replaced MIN/MAX functions
with the corresponding constant found in a key, but due to imprecise
representation of float numbers, when evaluating the where clause,
this comparison failed.
When MIN/MAX optimization detects that all tables can be removed,
also remove all conjuncts in a where clause that refer to these
tables. As a result of this fix, these conditions are not evaluated
twice, and in the case of float number comparisons we do not discard
result rows due to imprecise float representation.
As a side-effect this fix also corrects an unnoticed problem in
bug 12882.
mysql-test/r/func_group.result:
BUG#20954 - test result adjustment.
Adjusted the test result of bug 12882 which was not preperly fixed.
The current patch corrects the problem that was fully corrected by the
patch for 12882.
The problem was that opt_sum_query() indicated that the optimizer may
remove all tables because all MIN/MAX/COUNT functions are constants,
but this lead to an empty result instead of NULL because the WHERE
clause was still evaluated.
The current fix removes all conjuncts in the where clause that
reference the removed tables, and thus corrects the problem.
mysql-test/r/select.result:
BUG#20954 - added test
mysql-test/r/subselect.result:
BUG#20954 - test result adjustment.
The fix removes those conditions in a where clause that refer to
tables optimized away by MIN/MAX optimization (opt_sum_query()).
mysql-test/t/select.test:
BUG#20954 - added test
sql/sql_select.cc:
Fix for BUG#20954: avg(keyval) retuns 0.38 but max(keyval) returns an empty set
When MIN/MAX optimization detects that all tables can be removed,
also remove all conjuncts in a where clause that refer to these
tables. As a result of this fix, these conditions are not evaluated
twice, and in the case of float number comparisons we do not discard
result rows due to imprecise float representation.
As a side-effect this fix also corrects an unnoticed problem in
bug 12882.
- Send confusing output to /dev/null
mysql-test/t/mysqlbinlog.test:
Send confusing error messages to /dev/null so they don't appear in erro log if test case fails
- The mysql-test/std_data/bug15328.cnf file was not copied to install or dist dir.
mysql-test/Makefile.am:
Add std_data/*.cnf files to dist_hook and install-data-local
scripts/make_win_src_distribution.sh:
Copy *.cnf files as well.
Filter out strange control characters, messes up logs
netware/BUILD/mwasmnlm:
Filter out strange control characters, messes up logs
netware/BUILD/mwccnlm:
Filter out strange control characters, messes up logs
netware/BUILD/mwldnlm:
Filter out strange control characters, messes up logs
for class Item_func_trim.
For 4.1 it caused wrong output for EXPLAIN EXTENDED commands
if expressions with the TRIM function of two arguments were used.
For 5.0 it caused an error message when trying to select
from a view with the TRIM function of two arguments.
This unexpected error message was due to the fact that the
print method for the class Item_func_trim was inherited from
the class Item_func. Yet the TRIM function does not take a list
of its arguments. Rather it takes the arguments in the form:
[{BOTH | LEADING | TRAILING} [remstr] FROM] str) |
[remstr FROM] str
mysql-test/r/func_str.result:
Added a test case for bug #17526: uncorrect print method
for class Item_func_trim.
mysql-test/t/func_str.test:
Added a test case for bug #17526: incorrect print method
for class Item_func_trim.
sql/item_strfunc.cc:
Fixed bug #17526: incorrect print method
for class Item_func_trim.
Added an implementation for the virtual function print
in the class Item_func_trim.
The implementation takes into account the fact the TRIM
function takes the arguments in the following forms:
[{BOTH | LEADING | TRAILING} [remstr] FROM] str) |
[remstr FROM] str
sql/item_strfunc.h:
Fixed bug #17526: incorrect print method
for class Item_func_trim.
Added an implementation for the virtual function print
in the class Item_func_trim.
Declared a virtual method to return the mode of the TRIM
function: LEADING, TRAILING or BOTH.
Added implementations of this method for Item_func_trim and
its descendants Item_func_ltrim and Item_func_rtrim.
- backport patch from 5.0
- "table" can be NULL in temporary fields used for type conversion
sql/field.cc:
table can be NULL in temporary fields used for type conversion.
Store value in field as if db_low_byte_first was set.
sql/field.h:
table can be NULL in temporary fields used for type conversion.
Store value in field as if db_low_byte_first was set.
Added new "mysql_explain_log" man page
Added missing install of "myisam_ftdump" man page
Added missing install of "mysqlman" man page
support-files/mysql.spec.sh:
Added new "mysql_explain_log" man page
Added missing install of "myisam_ftdump" man page
Added missing install of "mysqlman" man page
into moonbone.local:/work/tmp_merge-4.1-opt-mysql
mysql-test/r/date_formats.result:
Auto merged
mysql-test/t/date_formats.test:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/sql_class.cc:
Auto merged