Added a test case for bug #5333.
null_key.result, key_primary.result:
Made covering index usable for const tables.
sql_select.cc:
Made covering index usable for const tables:
downported the corresponding code from 4.1.
Simultaneously fixed bug #5333 reported for 4.1.
The bug was due to the fact that field index in join
structures was always set to 0 for const tables.
sql/sql_select.cc:
Made covering index usable for const tables:
downported the corresponding code from 4.1.
Simultaneously fixed bug #5333 reported for 4.1.
The bug was due to the fact that field index in join
structures was always set to 0 for const tables.
mysql-test/t/select.test:
Added a test case for bug #5333.
mysql-test/r/key_primary.result:
Made covering index usable for const tables.
mysql-test/r/null_key.result:
Made covering index usable for const tables.
mysql-test/r/select.result:
Added a test case for bug #5333.
Added a test case for bug #5333.
null_key.result, key_primary.result:
Made covering index usable for const tables.
sql_select.cc:
Made covering index usable for const tables:
downported the corresponding code from 4.1.
Simultaneously fixed bug #5333 reported for 4.1.
The bug was due to the fact that field index in join
structures was always set to 0 for const tables.
mysql-test/r/negation_elimination.result:
new tests of negation elimination
mysql-test/t/negation_elimination.test:
new tests of negation elimination
sql/item.h:
test of boolean functions added
sql/item_cmpfunc.cc:
NOT subtree is already checked, so wee need to return just argument
sql/item_cmpfunc.h:
test of boolean functions added
sql/mysql_priv.h:
'place' to detect WHERE clause
sql/sql_parse.cc:
function for creation negated expression
sql/sql_select.cc:
removed unused function
sql/sql_select.h:
removed unused function
sql/sql_yacc.yy:
'place' to detect WHERE clause
Use 'mysqltest' as test database instead of test_$1 or test1,test2 to not accidently delete an important database
Safety fix for mailformed MERGE files
Build-tools/mysql-copyright:
Print correct file name in case of errors
Fixed indentation
include/config-win.h:
Removed unnecessary #ifdef
myisammrg/myrg_open.c:
Don't give a core if merge file contains INSERT_METHOD first (not legal but better safe than sorry)
Don't set struct variables to zero that are already zero
Indentation fixes
mysql-test/r/create.result:
Use 'mysqltest' as test database
mysql-test/r/ndb_basic.result:
Use 'mysqltest' as test database
mysql-test/r/ndb_blob.result:
Use 'mysqltest' as test database
mysql-test/r/ndb_transaction.result:
Use 'mysqltest' as test database
mysql-test/r/ps_1general.result:
Use 'mysqltest' as test database
mysql-test/r/rpl_charset.result:
Use 'mysqltest' as test database
mysql-test/r/rpl_delete_all.result:
Use 'mysqltest' as test database
mysql-test/r/show_check.result:
Use 'mysqltest' as test database
mysql-test/t/create.test:
Use 'mysqltest' as test database
mysql-test/t/ndb_basic.test:
Use 'mysqltest' as test database
mysql-test/t/ndb_blob.test:
Use 'mysqltest' as test database
mysql-test/t/ndb_transaction.test:
Use 'mysqltest' as test database
mysql-test/t/ps_1general.test:
Use 'mysqltest' as test database
mysql-test/t/rpl_charset.test:
Use 'mysqltest' as test database
mysql-test/t/rpl_delete_all.test:
Use 'mysqltest' as test database
mysql-test/t/show_check.test:
Use 'mysqltest' as test database
sql/field.h:
Mark functions that should be deleted as soon as we have a new prototype for store(longlong)
sql/lock.cc:
Indentation fix
sql/sql_base.cc:
Better comment.
Break find_item_in_list in case of perfect match
sql/sql_prepare.cc:
Simple optimization
sql/sql_select.cc:
Portability fix
Use 'mysqltest' as test database instead of test_$1 or test1,test2 to not accidently delete an important database
Safety fix for mailformed MERGE files
mysql-test/r/subselect.result:
ORDER clause printing fixed
mysql-test/r/view.result:
order by refers on integer field
mysql-test/t/view.test:
order by refers on integer field
sql/sql_lex.cc:
ORDER clause printing fixed
sql/sql_parse.cc:
fields for correct ORDER printing added
sql/sql_select.cc:
fields for correct ORDER printing added
sql/table.h:
fields for correct ORDER printing added
sql/item_cmpfunc.cc:
NOT elimination moved in parsing (we do not need fix fields in it and PS processing)
sql/item_cmpfunc.h:
NOT elimination moved in parsing (we do not need fix fields in it and PS processing)
sql/sql_select.cc:
NOT elimination moved in parsing (we do not need fix fields in it and PS processing)
sql/sql_yacc.yy:
NOT elimination moved in parsing
- after-review changes
- merged with the source tree from 204-08-27
mysql-test/r/distinct.result:
Different plans due to group-by optimization.
sql/ha_myisam.cc:
More general interface to key_copy.
sql/handler.cc:
More general interface to key_copy.
sql/item.cc:
New method to collect all Item_field objects. Used by Item::walk.
sql/item.h:
Several methods to collect different kinds of items from expression trees.
Used by Item::walk.
sql/item_sum.cc:
Added helper to collect Item_sum objects.
sql/item_sum.h:
Methods to collect and test Item_sum objects.
sql/key.cc:
More general interface to key_copy and key_restore.
sql/mysql_priv.h:
More general interface to key_copy and key_restore.
sql/opt_range.cc:
Complete implementaion of WL#1724 "Min/Max Optimization for Queries with Group By Clause".
sql/opt_range.h:
Complete implementaion of WL#1724 "Min/Max Optimization for Queries with Group By Clause".
sql/opt_sum.cc:
simple_pred is re-used in opt_range.cc
sql/sql_acl.cc:
More general interface to key_copy and key_restore.
sql/sql_handler.cc:
More general interface to key_copy.
sql/sql_insert.cc:
More general interface to key_copy.
sql/sql_select.cc:
Changes to hook the new QUICK_GROUP_MIN_MAX_SELECT due to two differences from all other
quick selects:
1)
This quick select may be created (and used) even if there is no WHERE clause.
Several places assumed that a QUICK_SELECT is constructed only if there is a WHERE clause,
which had to be changed so that QUICK_GROUP_MIN_MAX can be used.
2)
Unlike all other quick selects, this QUICK_GROUP_MIN_MAX_SELECT operates for GROUP BY queries.
Since for the caller the quick select already produces one result tuple per group, there is
no need to call end_send_group, instead we have to call end_send as for a regular quick select.
sql/sql_select.h:
simple_pred is re-used in opt_range.cc
Fixed bug in end space handle for WHERE text_column="constant"
heap/hp_hash.c:
Optimzations (no change of logic)
libmysql/libmysql.c:
Added missing casts (portability fix)
myisam/mi_key.c:
Changed macro to take arguments and not depend on local variables
Simple indentation fixes ?
mysql-test/r/connect.result:
Added test for setting empty password
mysql-test/r/create_select_tmp.result:
TYPE -> ENGINE
mysql-test/r/ctype_utf8.result:
Combine drop's
mysql-test/r/endspace.result:
Added more tests to test end space behaviour
mysql-test/r/having.result:
Added missing DROP TABLE
mysql-test/r/type_blob.result:
Added more tests to ensure that fix for BLOB usage is correct
mysql-test/r/type_timestamp.result:
Add test from 4.0
mysql-test/t/connect.test:
Added test for setting empty password
mysql-test/t/create_select_tmp.test:
TYPE -> ENGINE
mysql-test/t/ctype_utf8.test:
Combine drop's
mysql-test/t/endspace.test:
Added more tests to test end space behaviour
mysql-test/t/having.test:
Added missing DROP TABLE
mysql-test/t/type_blob.test:
Added more tests to ensure that fix for BLOB usage is correct
mysql-test/t/type_timestamp.test:
Add test from 4.0
sql/field.cc:
Removed not used variable
Portability fix (cast)
Simplified Field_str::double()
Simple indentation cleanups
sql/field.h:
Removed not needed class variable
sql/item_cmpfunc.cc:
Indentation fix
sql/item_strfunc.cc:
Use on stack variable for Item_str_func::val() instead of str_value.
This makes it safe to use str_value inside the Item's val function.
Cleaned up LEFT() usage, thanks to the above change
sql/item_sum.cc:
Indentation cleanups
sql/protocol.cc:
Added missing cast
sql/sql_acl.cc:
Indentatin cleanups.
Added missing cast
Simple optimization of get_sort()
sql/sql_select.cc:
Don't use 'ref' to search on text field that is not of type BINARY (use 'range' instead).
The reson is that for 'ref' we use 'index_next_same' to read the next possible row.
For text fields, rows in a ref may not come in order, like for 'x', 'x\t' 'x ' (stored in this order) which causes a search for 'column='x ' to fail
sql/tztime.cc:
Simple cleanup
strings/ctype-bin.c:
Comment fixes
strings/ctype-mb.c:
Changed variable names for arguments
sql/sql_class.h:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_class.cc:
Manual resolve of the merge
execute crashes server": we were deleting lex->result
after each execute, but prepared statements assumed that
it's left intact.
The fix adds cleanup() method to select_result hierarchy,
so that result objects can be reused.
Plus we now need to delete result objects more wisely.
mysql-test/r/ps.result:
Test results fixed: test case for bug#5034
mysql-test/t/ps.test:
A test case for bug#5034, few followups
sql/sql_class.cc:
- fix warning in THD::THD
- implementation of cleanup() for select_result hierarchy
- select_export::send_eof was identical to
select_dump::send_eof: moved to the base class select_to_file.
- Statement::end_statement() to end lex, free items, and
delete possible select_result
sql/sql_class.h:
- select_result::cleanup() declaration
-
sql/sql_insert.cc:
- implementation of select_insert::cleanup(): currently
we always create a new instance of select_insert/
select_create on each execute.
sql/sql_lex.cc:
- with more complicated logic of freeing lex->result it's
easier to have it non-zero only if it points to a valid
result.
sql/sql_lex.h:
Now st_lex::st_lex is not empty.
sql/sql_parse.cc:
mysql_execute_command():
- delete select_result *result only if it was created in
this function.
- use end_statement() to cleanup lex and thd in the end of
each statement.
- no need to save THD::lock if this is explain. This save
apparently left from times when derived tables were
materialized here, not in open_and_lock_tables.
sql/sql_prepare.cc:
- call result->cleanup() in reset_stmt_for_execute
- now Statement is responsible for freeing its lex->result.
sql/sql_select.cc:
handle_select():
- don't delete result, it might be needed
for next executions
- result is never null
execute crashes server": we were deleting lex->result
after each execute, but prepared statements assumed that
it's left intact.
The fix adds cleanup() method to select_result hierarchy,
so that result objects can be reused.
Plus we now need to delete result objects more wisely.
mysql-test/r/binary.result:
Fix for bug #5134: WHERE x = 'bar' AND x LIKE BINARY 'bar' returns wrong results
mysql-test/t/binary.test:
Fix for bug #5134: WHERE x = 'bar' AND x LIKE BINARY 'bar' returns wrong results
sql/sql_select.cc:
Fix for bug #5134: WHERE x = 'bar' AND x LIKE BINARY 'bar' returns wrong results
* When executing EXPLAIN, do the same as for the query: convert join type to JT_CONST if keyuse array covers all key parts and all of them are constants.
* In remove_const, don't remove conditions that depend on some-const-table and current-table.
mysql-test/r/join_outer.result:
Testcase for bug#5088
mysql-test/t/join_outer.test:
Testcase for bug#5088
* When executing EXPLAIN, do the same as for the query: convert join type to JT_CONST if keyuse array covers all key parts and all of them are constants.
* In remove_const, don't remove conditions that depend on some-const-table and current-table.
into mysql.com:/home/kostja/work/mysql-4.1-4912
sql/item_cmpfunc.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_select.cc:
Auto merged
a second time". The bug was caused by incompatibility of
negations elimination algorithm and PS: during first statement
execute a subtree with negation was replaced with equivalent
subtree without NOTs.
The problem was that although this transformation was permanent,
items of the new subtree were created in execute-local memory.
The patch adds means to check if it is the first execute of a
prepared statement, and if this is the case, to allocate items
in memory of the prepared statement.
The implementation:
- backports Item_arena from 5.0
- adds Item_arena::is_stmt_prepare(),
Item_arena::is_first_stmt_execute().
- deletes THD::allocate_temporary_pool_for_ps_preparing(),
THD::free_temporary_pool_for_ps_preparing(); they
were redundant.
and adds a few invariants:
- thd->free_list never contains junk (= freed items)
- thd->current_arena is never null. If there is no
prepared statement, it points at the thd.
The rest of the patch contains mainly mechanical changes and
cleanups.
mysql-test/r/ps.result:
Test results updated (test case for Bug#4912)
mysql-test/t/ps.test:
A test case for Bug#4912 "mysqld crashs in case a statement is
executed a second time"
sql/item_cmpfunc.cc:
current_statement -> current_arena
sql/item_subselect.cc:
Statement -> Item_arena, current_statement -> current_arena
sql/item_subselect.h:
Item_subselect does not need to save thd->current_statement.
sql/item_sum.cc:
Statement -> Item_arena
sql/item_sum.h:
Statement -> Item_arena
sql/mysql_priv.h:
Statement -> Item_arena
sql/sql_base.cc:
current_statement -> current_arena
sql/sql_class.cc:
- Item_arena
- convenient set_n_backup_statement, restore_backup_statement
(nice idea, Sanja)
sql/sql_class.h:
- Item_arena: backport from 5.0
- allocate_temporary_pool_for_ps_preparing,
free_temporary_pool_for_ps_preparing removed.
sql/sql_derived.cc:
current_statement -> current_arena
sql/sql_lex.cc:
current_statement -> current_arena
sql/sql_parse.cc:
Deploy invariant that thd->free_list never contains junk items
(backport from 5.0).
sql/sql_prepare.cc:
- backporting Item_arena
- no need to allocate_temporary_pool_for_ps_preparing().
sql/sql_select.cc:
Fix for bug#4912 "mysqld crashs in case a statement is
executed a second time": if this is the first execute of
a prepared statement, negation elimination is
done in memory of the prepared statement.
sql/sql_union.cc:
Backporting Item_arena from 5.0.
a second time". The bug was caused by incompatibility of
negations elimination algorithm and PS: during first statement
execute a subtree with negation was replaced with equivalent
subtree without NOTs.
The problem was that although this transformation was permanent,
items of the new subtree were created in execute-local memory.
The patch adds means to check if it is the first execute of a
prepared statement, and if this is the case, to allocate items
in memory of the prepared statement.
The implementation:
- backports Item_arena from 5.0
- adds Item_arena::is_stmt_prepare(),
Item_arena::is_first_stmt_execute().
- deletes THD::allocate_temporary_pool_for_ps_preparing(),
THD::free_temporary_pool_for_ps_preparing(); they
were redundant.
and adds a few invariants:
- thd->free_list never contains junk (= freed items)
- thd->current_arena is never null. If there is no
prepared statement, it points at the thd.
The rest of the patch contains mainly mechanical changes and
cleanups.