ROW('a','b','c) = ROW('A' collate latin1_bin,'b','c') returns 0
When a number is compared to a string, character sets and
collations are not aggregated. e.g. this returned error in 4.1.0:
SELECT 1=_latin2'1';
because character sets was aggregated, and 1 was considered as
a string of latin1 charset during this aggregation.
mysql-test/r/subselect.result:
Auto merged
mysql-test/t/subselect.test:
Auto merged
sql/item.cc:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_subselect.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
into narttu.mysql.fi:/my/mysql-4.0
mysql-test/r/innodb.result:
Auto merged
mysql-test/t/innodb.test:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
Tests cleanup (put drop database first in tests)
client/mysql.cc:
Cleanup of code in last pull
include/config-win.h:
Remove HAVE_CHSIZE on windows as it's not 64 bit clean
include/my_global.h:
Portability fix
mysql-test/r/drop.result:
Clean up results
mysql-test/r/flush.result:
Clean up results
mysql-test/r/grant_cache.result:
Clean up results
mysql-test/r/innodb.result:
Clean up results
mysql-test/r/insert_select.result:
Clean up results
mysql-test/r/merge.result:
Clean up results
mysql-test/r/query_cache.result:
Clean up results
mysql-test/t/drop.test:
Clean up tests
mysql-test/t/flush.test:
Clean up tests
mysql-test/t/grant_cache.test:
Clean up tests
mysql-test/t/innodb.test:
Clean up tests
mysql-test/t/insert_select.test:
Added more tests
mysql-test/t/merge.test:
Test of bug 515
mysql-test/t/query_cache.test:
Clean up tests
mysql-test/t/symlink.test:
Clean up tests
sql/mysql_priv.h:
Cleaner implementation if INSERT ... SELECT with same tables
sql/sql_lex.h:
Cleaner implementation if INSERT ... SELECT with same tables
sql/sql_list.h:
Indentation cleanup
sql/sql_parse.cc:
Cleaner implementation if INSERT ... SELECT with same tables
sql/sql_yacc.yy:
Cleaner implementation if INSERT ... SELECT with same tables
Current table is placed into read_tables set of the current join_tab->select
so get_mm_parts function thinks that current table's record is read and
tries to calculate WHERE condition with the fields of the record.
Result of these calculations is unpredictable.
Looks funny - outcome of the SELECT depends on the queries executed before.
Anyway i think we should have testcase on this part of the code.
mysql-test/r/sel000001.result:
appropriate result added
mysql-test/t/sel000001.test:
testcase added
sql/sql_select.cc:
I think we should count current table out of read_tables set
It looks like samll revolution in SELECT_LEX tree, but it was only natural way to solve problem with name resolution of external fields inside subselect which belongs to global order of union
also it have following advantages:
- removed mess with current_select type conversion
- type checking/converting
- a lot of virtual methods
- fake select for union execution allocated only once (it was allocated for every subselect with union executing)
changes:
fixed bug with outer fields name resolution of subqueries which belong to global ORDER BY clause
remuved select_lex() function, now thd->lex.current_select always have type SELECT_LEX
new SELECT_LEX (fake_select_lex) will be allocated in case of UNION for using in UNION processing
fake_select_lex allocated for union hold global ORDER BY & LIMIT clauses and have linkage equal to GLOBAL_OPTIONS_TYPE
new description of SELECT_LEX tree
(SCRUM)
sql/item.cc:
global parameters moved to fake_select_lex
sql/item_subselect.cc:
global parameters moved to fake_select_lex
sql/item_sum.cc:
no need type checking & converion now
sql/sql_delete.cc:
no need type checking & converion now
sql/sql_derived.cc:
global parameters moved to fake_select_lex
sql/sql_lex.cc:
not used fields/mrthods moved from st_select_lex_node to st_select_lex
global parameters moved to fake_select_lex
sql/sql_lex.h:
comments about new tree of select_lex s
not used fields/mrthods moved from st_select_lex_node to st_select_lex
global parameters moved to fake_select_lex
sql/sql_parse.cc:
global parameters moved to fake_select_lex
allocation of fake_select_lex on demand
sql/sql_select.cc:
now fake_select_lex marked as GLOBAL_OPTIONS_TYPE
sql/sql_union.cc:
global parameters moved to fake_select_lex
sql/sql_yacc.yy:
global parameters moved to fake_select_lex
so I commit again in a fresh tree.
Fix for bug#763 (Relay_log_space too big by 4 bytes),
plus comments and DBUG_PRINT, and we don't start replication
if --bootstrap.
mysql-test/r/rpl_log.result:
Result update
mysql-test/r/rpl_log_pos.result:
Result update
sql/mysqld.cc:
Don't start replication if in bootstrap mode (bootstrap isn't supposed to have
several threads).
sql/slave.cc:
Fix for bug 763 (Relay_log_space too big by 4 bytes).
A DBUG_PRINT.
sql/sql_acl.cc:
Replaced a return by DBUG_RETURN (happened to find this reading a debug log).
sql/sql_repl.cc:
A comment.
fixed dependence of items from reduced subquery
(SCRUM)
sql/item.cc:
fixed dependence of items from reduced subquery
sql/item.h:
fixed dependence of items from reduced subquery
Item tree iterator
sql/item_cmpfunc.cc:
Item tree iterator
sql/item_cmpfunc.h:
Item tree iterator
sql/item_func.cc:
Item tree iterator
sql/item_func.h:
Item tree iterator
sql/item_row.cc:
Item tree iterator
sql/item_row.h:
Item tree iterator
sql/item_strfunc.h:
Item tree iterator
sql/item_subselect.cc:
Item tree iterator
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/item.cc:
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/item.h:
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/item_cmpfunc.cc:
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/item_cmpfunc.h:
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/item_func.cc:
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/item_func.h:
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/item_row.cc:
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/item_row.h:
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/item_strfunc.h:
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/item_subselect.cc:
after review changes
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/item_subselect.h:
after review changes
removed outer resolving flag (because of movingtransformation after fix_fields)
sql/mysql_priv.h:
after review changes
sql/sql_base.cc:
after review changes
sql/sql_lex.cc:
after review changes
sql/sql_lex.h:
after review changes
sql/sql_select.cc:
after review changes
sql/sql_union.cc:
after review changes
include/my_global.h:
CONFIG_SMP
mysql-test/r/grant.result:
Test cases for bug fixes
mysql-test/r/insert_select.result:
Test cases for bug fixes
mysql-test/r/union.result:
Test cases for bug fixes
mysql-test/t/grant.test:
Test cases for bug fixes
mysql-test/t/insert_select.test:
Test cases for bug fixes
mysql-test/t/union.test:
Test cases for bug fixes
sql/sql_acl.cc:
Fix for granting global privileges on db level
sql/sql_parse.cc:
Fix for INSERT... SELECT
sql/sql_select.cc:
removing a fix
sql/sql_union.cc:
P
For now following tasks have been done:
- PASSWORD() function was rewritten. PASSWORD() now returns SHA1
hash_stage2; for new passwords user.password contains '*'hash_stage2; sql_yacc.yy also fixed;
- password.c: new functions were implemented, old rolled back to 4.0 state
- server code was rewritten to use new authorization algorithm (check_user(), change
user, and other stuff in sql/sql_parse.cc)
- client code was rewritten to use new authorization algorithm
(mysql_real_connect, myslq_authenticate in sql-common/client.c)
- now server barks on 45-byte-length 4.1.0 passwords and refuses 4.1.0-style
authentification. Users with 4.1.0 passwords are blocked (sql/sql_acl.cc)
- mysqladmin.c was fixed to work correctly with new passwords
Tests for 4.0-4.1.1, 4.1.1-4.1.1 (with or without db/password) logons was performed;
mysqladmin also was tested. Additional check are nevertheless necessary.
BitKeeper/etc/ignore:
Added start_mysqld.sh mysys/main.cc to the ignore list
client/mysqladmin.c:
fixed with new password api
include/mysql.h:
So as scramble_323 accepts only null-terminated message, two scramble buffs are necessary.
gotta be fixed
include/mysql_com.h:
new constants and password.c api changes
libmysql/libmysql.c:
mysql_change_user rewritten to work with new password api
scripts/mysql_create_system_tables.sh:
fixed 'Password' column length to 41
scripts/mysql_fix_privilege_tables.sql:
fixed 'Password' column length to 41
sql-common/client.c:
mysql_real_connect rewritten to support new handshake procedure
sql/item_strfunc.cc:
Item_func_password and Item_func_old_password rewritten with new password api
sql/item_strfunc.h:
bit commented, numbers replaced with #defined constants
sql/mysql_priv.h:
removed unnecessary declaration as now all constants defined is in mysql_com.h
sql/mysqld.cc:
scramble initialization moved to sql_parce.cc:check_connection
sql/password.c:
All 4.1 functions were rolled back to 4.0 with attempt to save all possible 4.0-4.1 changes.
Names for 4.0 functions were suffixed with '_323'
Functions for new handshake were added.
sql/slave.cc:
Fixed to new constant; Bug #766 remains to be fixed
sql/slave.h:
fixed to new constant; Buf #766 remains to be fixed
sql/sql_acl.cc:
rewritten to support new passwords (41 byte-long) and password api
sql/sql_acl.h:
ditto
sql/sql_class.cc:
initialization for new members added
sql/sql_class.h:
same thing as in struct mysql - scramble is used for new family of functions, scramble_323 - for old
sql/sql_parse.cc:
check_connections was renamed to check_connection as this name reflects better what this function does
authorization part of check_connection was rewritten
check_user was rewritten with new password and acl api
new function 'authenticate', which optionally re-request scramble from client was added
fixed some typos
COM_CHANGE_USER piece of dipsatch_command() was rewritten
sql/sql_repl.h:
HASH_PASSWORD_LENGTH replaced with SCRAMBLED_PASSWORD_CHAR_LENGTH
bug #766 remains
sql/sql_yacc.yy:
Two-argument form of PASSWORD() was removed
PASSWORD() function was fixed with new password api.
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
into sanja.is.com.ua:/home/bell/mysql/bk/work-alloc_group-4.1
mysql-test/r/subselect.result:
Auto merged
mysql-test/t/subselect.test:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_select.h:
Auto merged
into sanja.is.com.ua:/home/bell/mysql/bk/work-err-4.1
mysql-test/r/subselect.result:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sp.cc:
Bugfixes for the sp_head memroot stuff. (Do things in the correct order
at error clean-up.)
sql/sp_head.cc:
Bugfixes for the sp_head memroot stuff. Make sure everything goes to the
right memroot. Need separate post-reset-memroot init in sp_head.
sql/sp_head.h:
Need separate post-reset-memroot init method.
sql/sql_yacc.yy:
Bugfixes for the sp_head memroot stuff. Make sure everything goes to the
right memroot. Must do things in the correct order for this.