The problem was in that the MIN/MAX optimization in opt_sum_query was
replacing MIN/MAX functions with their constant argument without
taking into account that a query has no result rows.
mysql-test/r/func_group.result:
Test for BUG#12882.
mysql-test/t/func_group.test:
Test for BUG#12882.
sql/item_sum.cc:
If it is known that a query has no result rows, do not call add()
via the call to Item_sum::no_rows_in_result() which calls reset().
Instead directly call clear() so that the MIN and MAX functions
produce NULL when there are no result rows.
sql/opt_sum.cc:
* Do not apply MIN/MAX optimization when the operand of MIN/MAX is
a constant if it can't be determined whether the query has any
result rows. The reason is that if the query has result rows,
then the result of MIN/MAX is its constant argument, but if the
query result is empty, then the result of MIN/MAX must be NULL
irrespective of its argument.
* The patch also simplifies a bit the branch that hadles COUNT().
statistics (like 4.0 did) (patch #3, with review #1 & #2 feedback addressed)
include/myisam.h:
BUG#12232: Add a server option to treat NULL values as equal when calculating MyISAM index statistics
myisam/mi_check.c:
BUG#12232: Add a server option to treat NULL values as equal when calculating MyISAM index statistics
myisam/myisamchk.c:
BUG#12232: Add a server option to treat NULL values as equal when calculating MyISAM index statistics
mysql-test/r/myisam.result:
BUG#12232: Add a server option to treat NULL values as equal when calculating MyISAM index statistics
mysql-test/t/myisam.test:
BUG#12232: Add a server option to treat NULL values as equal when calculating MyISAM index statistics
sql/ha_myisam.cc:
BUG#12232: Add a server option to treat NULL values as equal when calculating MyISAM index statistics
sql/handler.h:
BUG#12232: Add a server option to treat NULL values as equal when calculating MyISAM index statistics
sql/mysqld.cc:
BUG#12232: Add a server option to treat NULL values as equal when calculating MyISAM index statistics
sql/set_var.cc:
BUG#12232: Add a server option to treat NULL values as equal when calculating MyISAM index statistics
sql/sql_class.h:
BUG#12232: Add a server option to treat NULL values as equal when calculating MyISAM index statistics
into sanja.is.com.ua:/home/bell/mysql/bk/work-owner5-5.0
sql/ha_innodb.cc:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_view.cc:
Auto merged
sql/item_func.cc:
merge
Not fixed in 4.1 as not critical. Also I'm correcting error checking of multi-UPDATE/DELETE
when it comes to binlogging, to make it consistent with when we rollback the statement.
mysql-test/r/rpl_multi_delete.result:
result update
mysql-test/r/rpl_multi_update.result:
result update
mysql-test/t/rpl_multi_delete.test:
test for BUG#13348
mysql-test/t/rpl_multi_update.test:
test of BUG#13348
sql/sql_delete.cc:
We now binlog multi-DELETE even if no row was updated (like we do for DELETE).
I'm also correcting some error checking (< instead of <=), basing myself on when we rollback.
sql/sql_update.cc:
we now binlog multi-UPDATE even if no row was updated (like we do for UPDATE).
Adding to existing tests to test new behaviour.
I'm also correcting some error checking (< instead of <=), basing myself on when we rollback.
partitioned tables
mysql-test/r/partition.result:
New test cases for SHOW CREATE TABLE
mysql-test/r/partition_range.result:
New test cases for SHOW CREATE TABLE
mysql-test/t/partition.test:
New test cases for SHOW CREATE TABLE
mysql-test/t/partition_range.test:
New test cases for SHOW CREATE TABLE
sql/handler.h:
Handle default engine type better
sql/sql_partition.cc:
Handle default engine type better
sql/sql_show.cc:
Handle default engine type better
sql/sql_table.cc:
Handle default engine type better
sql/sql_yacc.yy:
Handle default engine type better
sql/table.cc:
Handle default engine type better
sql/unireg.cc:
Handle default engine type better
- Enable testcases after help from Serg
client/mysqltest.c:
Dump output to stdout if no result file is specified
Don't print verbose_msg when command fails whith expected error
mysql-test/mysql-test-run.pl:
Don't add all args to the MYSQL_TEST environment variable.
mysql-test/r/mysqltest.result:
Add test for mysqltest -x
mysql-test/t/mysqltest.test:
Add test for mysqltest -x
The problem was in the way table references are pre-filtered when
resolving a qualified field. When resolving qualified table references
we search recursively in the operands of the join. If there is
natural/using join with a merge view, the first call to find_field_in_table_ref
makes a recursive call to itself with the view as the new table reference
to search for the column. However the view has both nested_join and
join_columns != NULL so it skipped the test whether the view name matches
the field qualifier. As a result the field was found in the view since the
view already has a field with the same name. Thus the field was incorrectly
resolved as the view field.
mysql-test/r/select.result:
Test for BUG#13127.
mysql-test/t/select.test:
Test for BUG#13127.
sql/sql_base.cc:
The patch contains two independent changes:
- When searching for qualified fields, include merge views and information schema tables
used with SHOW (both using TABLE_LIST::field_translation to represent result fields) in
the test that compares the qualifying table with the name of the table reference being
searched. This change fixes the bug.
- Do not search the materialized list of columns of a NATURAL/USING join if 'table_list'
is a stored table or merge view. Instead search directly in the table or view as if it
is not under a natural join. This is a performance improvement since if 'table_list'
is a stored table, then the search can utilize the name hash for table names.
mysql-test/r/ps_1general.result:
Redoing test output with straightened up output for storage engine names.
mysql-test/r/variables.result:
Fixed test case.
sql/handler.cc:
Couple of format cleanups and a change in a comment.
Select count(*) returned 2 on empty table where handler
used exact count
mysql-test/r/partition.result:
New test case for Bug #13323
mysql-test/t/partition.test:
New test case for Bug #13323
sql/ha_partition.cc:
Fix for Bug #13323
Execution rigths on function was checked just before function execution,
thus it was unknown on prepare stage whether user have right to execute
particular function.
Added access rights checking function which is called right after fixing
Item_func_sp.
This have additional effect that if user don't have rights for execution
query will fail on earlier stage and will not waste resources on optimizing
with failing on execution stage.
sql/item_func.h:
Fix bug#12812 create view calling a function works without execute right on function
sql/item_func.cc:
Fix bug#12812 create view calling a function works without execute right on function
Added function Item_func_sp::check_access() which checks access rights.
Added function Item_func_sp::fix_field() which calls check_access() after fixing.
Item_func_sp::execute() now calls to check_access() to check access rights.
mysql-test/t/sp.test:
Test case for bug#12812 create view calling a function works without execute right on function
mysql-test/r/sp.result:
Test case for bug#12812 create view calling a function works without execute right on function
into lmy002.wdf.sap.corp:/home/georg/work/mysql/bugs/mysql-5.0-master
mysql-test/r/view.result:
Auto merged
mysql-test/t/view.test:
Auto merged
sql/sql_view.cc:
Auto merged
This is backport from 5.0 of fix for bug #11039
mysql-test/t/innodb.test:
Backport from 5.0 of test case for bug#11039
mysql-test/r/innodb.result:
Backport from 5.0 of test case for bug#11039
sql/opt_sum.cc:
Fix bug #13218: backport from 5.0 of bug #11039 fix
into asksasha.com:/reiser-data/mysql-dev/mysql-4.1-bug11139
mysql-test/r/rpl_multi_delete2.result:
Auto merged
mysql-test/t/rpl_multi_delete2-slave.opt:
Auto merged
mysql-test/t/rpl_multi_delete2.test:
Auto merged
mysql-test/r/view.result:
test results for rename table view1 to view2
mysql-test/t/view.test:
tests for rename table view1 to view2
sql/share/errmsg.txt:
added new errormessage (schema change not allowed in rename table view)
sql/sql_rename.cc:
added support for renaming views
sql/sql_view.cc:
added new function mysql_rename_view
sql/sql_view.h:
added prototype mysql_rename_view
ctype_latin1.test, ctype_latin1.result:
adding test case
ctype-latin1.c:
Fixing ctype array to treat extended cp1252
letters as valid identifiers on server side,
and as valid "isprint" characters (e.g. on client side).
strings/ctype-latin1.c:
Bug#13145: A table named "C-cedilla" can't be dropped.
Accept extended cp1252 letters as valid identifiers.
mysql-test/t/ctype_latin1.test:
Accept extended cp1252 letters as valid identifiers.
mysql-test/r/ctype_latin1.result:
adding test case
Character set does not support traditional mode
ctype_utf8.result, ctype_utf8.test:
adding test case.
password.c, mysql_com.h
Changeing octet2hex availability from static to public.
item_strfunc.cc:
Result string is now checked to be well-formed.
Warning/error is generated, depending on sql_mode.
include/mysql_com.h:
Bug#10504
Character set does not support traditional mode
Changeing octet2hex from static to public.
sql/item_strfunc.cc:
Result string is now checked to be well-formed.
Warning/error is generated, depending on sql_mode.
sql/password.c:
Changeing octet2hex from static to public.
mysql-test/t/ctype_utf8.test:
adding test case.
mysql-test/r/ctype_utf8.result:
adding test case.
sql/sql_select.cc:
Auto merged
sql/sql_show.cc:
Auto merged
storage/ndb/src/kernel/blocks/ERROR_codes.txt:
Auto merged
storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
Auto merged
storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp:
Auto merged
storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp:
Auto merged
Optimizer did choose "Range checked for each record" for one of the tables.
For first few loops over that table it choose sequential access, on later
stage it choose to use index. Because table was previously initialized for
sequential access, it skips intitialization for index access, and when
server tries to retrieve data error occurs.
QUICK_RANGE_SELECT::init() changes so if file already initialized for
sequential access, it calls ha_rnd_end() and initializes file for index
access.
sql/opt_range.cc:
Fix bug #12291 Table wasn't reinited for index scan after sequential scan
mysql-test/t/select.test:
Test case for bug #12291 Table wasn't reinited for index scan after sequential scan
mysql-test/r/select.result:
Test case for bug #12291 Table wasn't reinited for index scan after sequential scan
BitKeeper/etc/ignore:
auto-union
mysql-test/t/bool.test:
Auto merged
mysql-test/t/cast.test:
Auto merged
mysql-test/t/func_concat.test:
Auto merged
mysql-test/t/grant.test:
Auto merged
mysql-test/t/grant_cache.test:
Auto merged
mysql-test/t/innodb-deadlock.test:
Auto merged
mysql-test/t/loaddata.test:
Auto merged
mysql-test/t/lowercase_table.test:
Auto merged
mysql-test/t/lowercase_table3.test:
Auto merged
mysql-test/t/mix_innodb_myisam_binlog.test:
Auto merged
mysql-test/t/mysqlbinlog.test:
Auto merged
mysql-test/t/mysqldump.test:
Auto merged
mysql-test/t/query_cache.test:
Auto merged
mysql-test/t/rpl_EE_error.test:
Auto merged
mysql-test/t/rpl_change_master.test:
Auto merged
mysql-test/t/rpl_empty_master_crash.test:
Auto merged
BitKeeper/deleted/.del-isam.test~834fb0ee8196c445:
Auto merged
BitKeeper/deleted/.del-rpl_trunc_binlog.test~961b1f6ac73d37c8:
Auto merged
mysql-test/r/flush_block_commit.result:
Auto merged
mysql-test/r/flush_table.result:
Auto merged
mysql-test/r/lock_multi.result:
Auto merged
mysql-test/r/rpl_server_id1.result:
Auto merged
mysql-test/r/rpl_server_id2.result:
Auto merged
mysql-test/r/rpl_start_stop_slave.result:
Auto merged
mysql-test/t/create_select_tmp.test:
Auto merged
mysql-test/t/ctype_latin1_de.test:
Auto merged
mysql-test/t/flush_block_commit.test:
Auto merged
mysql-test/t/func_if.test:
Auto merged
mysql-test/t/innodb-lock.test:
Auto merged
mysql-test/t/lock_multi.test:
Auto merged
mysql-test/t/rpl_drop.test:
Auto merged
mysql-test/t/rpl_error_ignored_table.test:
Auto merged
mysql-test/t/rpl_flush_log_loop.test:
Auto merged
mysql-test/t/rpl_get_lock.test:
Auto merged
mysql-test/t/rpl_heap.test:
Auto merged
mysql-test/t/rpl_insert_id.test:
Auto merged
mysql-test/t/rpl_loaddata.test:
Auto merged
mysql-test/t/rpl_loaddata_rule_m.test:
Auto merged
mysql-test/t/rpl_loaddata_rule_s.test:
Auto merged
mysql-test/t/rpl_loaddatalocal.test:
Auto merged
mysql-test/t/rpl_max_relay_size.test:
Auto merged
mysql-test/t/rpl_reset_slave.test:
Auto merged
mysql-test/t/system_mysql_db.test:
Auto merged
mysql-test/t/system_mysql_db_fix.test:
Auto merged
sql/sql_select.cc:
Auto merged
mysql-test/t/rpl_server_id2.test:
Auto merged
For queries with GROUP BY and without hidden GROUP BY fields DISTINCT is
optimized away becuase such queries produce result set without duplicates.
But ROLLUP can add rows which may be same to some rows and this fact was
ignored.
Added check so if ROLLUP is present DISTINCT can't be optimized away.
sql/sql_select.cc:
Fix bug #12887 Distinct is not always applied after rollup
mysql-test/r/olap.result:
Test case for bug #12887 Distinct is not always applied after rollup
mysql-test/t/olap.test:
Test case for bug #12887 Distinct is not always applied after rollup
sql/ha_federated.cc:
Auto merged
sql/lock.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sp.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_handler.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_table.cc:
Auto merged
mysql-test/r/ndb_basic.result:
wl#2624 re-commit due to bk problem
mysql-test/r/ndb_blob.result:
wl#2624 re-commit due to bk problem
mysql-test/r/ndb_charset.result:
wl#2624 re-commit due to bk problem
mysql-test/r/ndb_condition_pushdown.result:
wl#2624 re-commit due to bk problem
mysql-test/r/ndb_index_ordered.result:
wl#2624 re-commit due to bk problem
mysql-test/t/ndb_index_ordered.test:
wl#2624 re-commit due to bk problem
sql/ha_ndbcluster.cc:
wl#2624 re-commit due to bk problem
sql/ha_ndbcluster.h:
wl#2624 re-commit due to bk problem
sql/mysqld.cc:
wl#2624 re-commit due to bk problem
sql/set_var.cc:
wl#2624 re-commit due to bk problem
sql/sql_class.h:
wl#2624 re-commit due to bk problem
storage/ndb/include/kernel/AttributeHeader.hpp:
wl#2624 re-commit due to bk problem
storage/ndb/include/ndbapi/NdbDictionary.hpp:
wl#2624 re-commit due to bk problem
storage/ndb/include/ndbapi/NdbIndexScanOperation.hpp:
wl#2624 re-commit due to bk problem
storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
wl#2624 re-commit due to bk problem
storage/ndb/src/kernel/blocks/dbtup/DbtupRoutines.cpp:
wl#2624 re-commit due to bk problem
storage/ndb/src/kernel/blocks/dbtux/Dbtux.hpp:
wl#2624 re-commit due to bk problem
storage/ndb/src/kernel/blocks/dbtux/DbtuxGen.cpp:
wl#2624 re-commit due to bk problem
storage/ndb/src/kernel/blocks/dbtux/DbtuxTree.cpp:
wl#2624 re-commit due to bk problem
storage/ndb/src/kernel/blocks/dbtux/Makefile.am:
wl#2624 re-commit due to bk problem
storage/ndb/src/ndbapi/Makefile.am:
wl#2624 re-commit due to bk problem
storage/ndb/src/ndbapi/NdbDictionary.cpp:
wl#2624 re-commit due to bk problem
storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp:
wl#2624 re-commit due to bk problem
storage/ndb/src/ndbapi/NdbScanOperation.cpp:
wl#2624 re-commit due to bk problem