mysql-test/r/sp.result:
New test case for BUG#6600.
mysql-test/t/sp.test:
New test case for BUG#6600.
sql/sp_head.cc:
Added yet another multiple result set statement to the list.
sql/sql_parse.cc:
Have to invalidate SP caches in CHECK TABLE, or it will produce very
strange results when called in SPs.
Added new logic to ACL system:
1) If GRANT OPTION (not mysql db):
Ok to update existing user, but not password.
Not allowed to make a new user.
2) If UPDATE_ACL to mysql DB:
Ok to update current user, but not make a new one.
3) If INSERT_ACL to mysql DB:
Ok to add a new user, but not modify existing.
4) If GRANT OPTION to mysql DB:
All modifications OK.
mysql-test/r/grant2.result:
Added more ACL tests and fixed results in some old tests.
mysql-test/t/grant2.test:
Added more ACL tests and fixed results in some old tests.
sql/sql_acl.h:
Made check_acl_user() visible to sql_parse.cc
sql/sql_parse.cc:
Added new logic to ACL system:
1) If GRANT OPTION (not mysql db):
Ok to update existing user, but not password.
Not allowed to make a new user.
2) If UPDATE_ACL to mysql DB:
Ok to update current user, but not make a new one.
3) If INSERT_ACL to mysql DB:
Ok to add a new user, but not modify existing.
4) If GRANT OPTION to mysql DB:
All modifications OK.
BitKeeper/etc/logging_ok:
auto-union
mysql-test/r/olap.result:
Auto merged
sql/sql_select.cc:
Auto merged
BitKeeper/deleted/.del-isamchk.1.in~9d44303f6d951962:
Auto merged
BitKeeper/deleted/.del-isamlog.1.in~416d91adbf665b19:
Auto merged
Added a test case for bug #8617.
sql_select.cc:
Fixed bug #8617.
Queries with ROLLUP and LIMIT n returned more than n rows
if SQL_CALC_FOUND_ROWS was used.
sql/sql_select.cc:
Fixed bug #8617.
Queries with ROLLUP and LIMIT n returned more than n rows
if SQL_CALC_FOUND_ROWS was used.
mysql-test/t/olap.test:
Added a test case for bug #8617.
mysql-test/r/func_gconcat.result:
Test result fixed.
sql/item_sum.cc:
Cleanup of Item_func_group_concat:
- last unobvious things commented
- don't store NULLs in the tree.
- remove unneeded variables.
- use setup_order, not setup_group to setup group concat order list
sql/item_sum.h:
Cleanup for Item_func_group_concat: remove unneded variables, methods,
move a bunch of variables to private: section.
heap/hp_create.c:
Auto merged
mysql-test/mysql-test-run.sh:
Auto merged
mysql-test/r/ctype_utf8.result:
Auto merged
mysql-test/r/olap.result:
Auto merged
mysql-test/t/func_str.test:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/key.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_select.h:
Auto merged
sql/sql_string.h:
Auto merged
client/mysqldump.c:
Manual merge
mysql-test/r/func_gconcat.result:
Manual merge
mysql-test/r/func_str.result:
Manual merge
mysql-test/t/func_gconcat.test:
Manual merge
sql/ha_heap.cc:
Manual merge
sql/sql_select.cc:
Manual merge
When we come to create these, they may already exist and it's necessary to delete these old, useless copies.
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
into serg.mylan:/usr/home/serg/Abk/mysql-5.0
sql/handler.cc:
Auto merged
sql/lock.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/key.cc:
A fix (bug #8942: SUBSTRING_INDEX in UPDATE causes internal loop).
For "partial" key parts (e.g. key(a(20), ...) we create different
key_part->field, see sql/table.cc; so we have to use the eq()
function here to compare fields.
First one is related to Bug#7905. One should not be allowed to
create new user with password without UPDATE privilege to
MySQL database. Furthermore, executing the same GRANT statement
twice would actually crash the server and corrupt privilege database.
Other bug was that one could update a column, using the existing
value as basis to calculate the new value (e.g. UPDATE t1 SET a=a+1)
without SELECT privilege to the field (a in the above example)
Fixed tests grant.pl and grant2, which were wrong.
BitKeeper/deleted/.del-mysqlfs.m4~2c0a06625ffdef2:
Delete: config/ac-macros/mysqlfs.m4
Makefile.am:
Removed fs_dir (since dropping mysqlfs support)
configure.in:
Removed support for MySQLFS.
Gone is support for mit-threads.
Gone is Raid.
I feel like if I say "gone" one more time I should embed a secret country song somewhere in the source as an easter egg.
dbug/Makefile.am:
Removed mit-threads
extra/Makefile.am:
Removed mit-threads
heap/Makefile.am:
removed mit-threads
libmysql_r/Makefile.am:
removed mit-threads
libmysqld/Makefile.am:
removed mit-threads
myisam/Makefile.am:
remove mt-threads
myisammrg/Makefile.am:
removed mit-threas
mysys/Makefile.am:
removed mit-threads
regex/Makefile.am:
removed mit-treads
sql/Makefile.am:
removed mit-threads
strings/Makefile.am:
removed mit-threads
tests/Makefile.am:
removed mit-threads
tools/Makefile.am:
removed mit-threads
Added a test for bug #8615.
sql_select.cc:
Fixed bug #8615.
This fix only removed the cause of the reported crash.
It does not resolve other problems of rollup queries
with DISTINCT. They were fixed in the previous patch
for bug 8616.
sql/sql_select.cc:
Fixed bug #8615.
This fix only removed the cause of the reported crash.
It does not resolve other problems of rollup queries
with DISTINCT. They were fixed in the previous patch
for bug 8616.
mysql-test/t/olap.test:
Added a test for bug #8615.
mysql-test/r/olap.result:
Added a test for bug #8615.
Enabled VARCHAR testing for innodb
NOTE: innodb.test currently fails becasue of a bug in InnoDB.
I have informed Heikki about this and expect him to fix this ASAP
mysql-test/include/varchar.inc:
Move handler dependent tests to the specific handler (myisam, bdb, innodb)
mysql-test/r/innodb.result:
Added varchar tests
mysql-test/r/myisam.result:
Update results
mysql-test/t/bdb.test:
Move handler dependent tests to the specific handler (myisam, bdb, innodb)
mysql-test/t/innodb.test:
Enabled VARCHAR testing
mysql-test/t/myisam.test:
Move handler dependent tests to the specific handler (myisam, bdb, innodb)
sql/sql_parse.cc:
Indentation fixes
sql/sql_table.cc:
Fixed bug introduced when doing cleanup
into mysql.com:/home/my/mysql-5.0
sql/item_func.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
not always correct for NULL values.
Now they always result a non NULL value even
the argument is NULL. It is more usefull for
debugging purposes.
mysql-test/r/func_str.result:
Bugs#9129: CHARSET(), COLLATION(), COERCIBILITY()
not always correct for NULL values.
Also, a mistake in EXPORT_SET was fixed.
mysql-test/t/func_str.test:
Bugs#9129: CHARSET(), COLLATION(), COERCIBILITY()
not always correct for NULL values.
sql/item_func.cc:
Bugs#9129: CHARSET(), COLLATION(), COERCIBILITY()
not always correct for NULL values.
sql/item_strfunc.cc:
Bugs#9129: CHARSET(), COLLATION(), COERCIBILITY()
not always correct for NULL values.
A minor mistake in EXPORT_SET() was fixed.
Fix bug: InnoDB created all indexes on true VARCHARs as column prefix keys because field->pack_length() for a true VARCHAR is bigger than key_part->length; FOREIGN KEYs could not be created on true VARCHARs then
sql/ha_innodb.cc:
Fix bug: InnoDB created all indexes on true VARCHARs as column prefix keys because field->pack_length() for a true VARCHAR is bigger than key_part->length; FOREIGN KEYs could not be created on true VARCHARs then
Fix a crash in a simple search with a key: the dtype->len of a true VARCHAR is the payload maximum len in bytes: it does not include the 2 bytes MySQL uses to store the string length
ha_innodb.cc:
Fix a crash in true VARCHARs in test-innodb: we passed a wrong pointer to the column conversion in an UPDATE
rowid_order_innodb.result, ps_3innodb.result, innodb.result, endspace.result:
Edit InnoDB test results to reflect the arrival of true VARCHARs
mysql-test/r/endspace.result:
Edit InnoDB test results to reflect the arrival of true VARCHARs
mysql-test/r/innodb.result:
Edit InnoDB test results to reflect the arrival of true VARCHARs
mysql-test/r/ps_3innodb.result:
Edit InnoDB test results to reflect the arrival of true VARCHARs
mysql-test/r/rowid_order_innodb.result:
Edit InnoDB test results to reflect the arrival of true VARCHARs
sql/ha_innodb.cc:
Fix a crash in true VARCHARs in test-innodb: we passed a wrong pointer to the column conversion in an UPDATE
innobase/row/row0sel.c:
Fix a crash in a simple search with a key: the dtype->len of a true VARCHAR is the payload maximum len in bytes: it does not include the 2 bytes MySQL uses to store the string length
innobase/include/data0type.h:
Fix a crash in a simple search with a key: the dtype->len of a true VARCHAR is the payload maximum len in bytes: it does not include the 2 bytes MySQL uses to store the string length
The idea is to use TABLE_LIST::lock_type for passing type of lock for
target table to mysql_load() instead of using LEX::lock_option
(which were rewritten by first subselect in SET clause).
This should also fix potential problem with LOAD DATA in SP
(it is important for them to have right lock_type in the table
list by the end of statement parsing).
mysql-test/r/loaddata.result:
Added nice test for LOAD DATA with subquery.
mysql-test/t/loaddata.test:
Added nice test for LOAD DATA with subquery.
sql/log_event.cc:
Now we don't pass type of lock for target table to mysql_load()
explicitly . Instead we use TABLE_LIST::lock_type for this table
which is already properly set here.
sql/mysql_priv.h:
Now we don't pass type of lock for target table to mysql_load()
explicitly . Instead we properly set TABLE_LIST::lock_type for
this table in parser.
sql/sql_load.cc:
Now we don't pass type of lock for target table to mysql_load()
explicitly . Instead we properly set TABLE_LIST::lock_type for
this table in parser.
sql/sql_parse.cc:
Now we don't pass type of lock for target table to mysql_load()
explicitly . Instead we properly set TABLE_LIST::lock_type for
this table in parser.
sql/sql_yacc.yy:
load_data:
Let us use TABLE_LIST::lock_type for passing type of lock for target
table to mysql_load() instead of using LEX::lock_option (which will
be rewritten by first subselect in SET clause).
calc_row_difference(): Use non-inlined functions to avoid linking error.
sql/ha_innodb.cc:
calc_row_difference(): Use non-inlined functions to avoid linking error.
smarter xid-to-str routiine
fixed assert crash in XA RECOVER
sql/sql_parse.cc
XA COMMIT/ROLLBACK did not send_ok in some cases
sql/handler.cc:
smarter xid-to-str routiine
fixed assert crash in XA RECOVER
sql/sql_parse.cc:
XA COMMIT/ROLLBACK did not send_ok in some cases
(otherwise a deadlock when ALTER writes to
binlog holding LOCK_open, it causes binlog rotation,
binlog waits for prepared transactions to commit, and commit
needs LOCK_open to check for global read lock)
mysql-test/r/flush.result:
global read lock code now uses a dedicated mutex
mysql-test/t/flush.test:
global read lock code now uses a dedicated mutex
sql/lock.cc:
global read lock code now uses a dedicated mutex
sql/mysql_priv.h:
global read lock code now uses a dedicated mutex
sql/mysqld.cc:
global read lock code now uses a dedicated mutex
sql/sql_table.cc:
global read lock code now uses a dedicated mutex
Added a test case for bug #8616.
item.h:
Fixed bug #8616.
Added class Item_null_result used in rollup processing.
sql_select.h, sql_select.cc:
Fixed bug #8616.
Added JOIN::rollup_write_data to cover rollup queries
with DISTINCT. Modified other rollup methods.
sql/sql_select.cc:
Fixed bug #8616.
Added JOIN::rollup_write_data to cover rollup queries
with DISTINCT. Modified other rollup methods.
sql/sql_select.h:
Fixed bug #8616.
Added JOIN::rollup_write_data to cover rollup queries
with DISTINCT. Modified other rollup methods.
sql/item.h:
Fixed bug #8616.
Added class Item_null_result used in rollup processing.
mysql-test/t/olap.test:
Added a test case for bug #8616.
mysql-test/r/olap.result:
Added a test case for bug #8616.
Now one can use user variables as target for data loaded from file
(besides table's columns). Also LOAD DATA got new SET-clause in which
one can specify values for table columns as expressions.
For example the following is possible:
LOAD DATA INFILE 'words.dat' INTO TABLE t1 (a, @b) SET c = @b + 1;
This patch also implements new way of replicating LOAD DATA.
Now we do it similarly to other queries.
We store LOAD DATA query in new Execute_load_query event
(which is last in the sequence of events representing LOAD DATA).
When we are executing this event we simply rewrite part of query which
holds name of file (we use name of temporary file) and then execute it
as usual query. In the beggining of this sequence we use Begin_load_query
event which is almost identical to Append_file event
client/mysqlbinlog.cc:
Added support of two new binary log events Begin_load_query_log_event and
Execute_load_query_log_Event which are used to replicate LOAD DATA INFILE.
mysql-test/r/ctype_ucs.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results and made it more robust for future similar
changes.
mysql-test/r/insert_select.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results and made it more robust for future similar
changes.
mysql-test/r/loaddata.result:
Added tests for new LOAD DATA features.
mysql-test/r/mix_innodb_myisam_binlog.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results (don't dare to get rid from binlog positions
completely since it seems that this test uses them).
mysql-test/r/mysqlbinlog.result:
New approach for binlogging of LOAD DATA statement. Now we store it as
usual query and rewrite part in which file is specified when needed.
So now mysqlbinlog output for LOAD DATA much more closer to its initial
form. Updated test'd results accordingly.
mysql-test/r/mysqldump.result:
Made test more robust to other tests failures.
mysql-test/r/rpl000015.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results accordingly.
mysql-test/r/rpl_change_master.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results.
mysql-test/r/rpl_charset.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results accordingly
mysql-test/r/rpl_deadlock.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results accordingly
mysql-test/r/rpl_error_ignored_table.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results and made it more robust for future similar
changes.
mysql-test/r/rpl_flush_log_loop.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results accordingly.
mysql-test/r/rpl_flush_tables.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results and made it more robust for future similar
changes.
mysql-test/r/rpl_loaddata.result:
New way of replicating LOAD DATA. Now we do it similarly to other
queries. We store LOAD DATA query in new Execute_load_query event
(which is last in the sequence of events representing LOAD DATA).
When we are executing this event we simply rewrite part of query which
holds name of file (we use name of temporary file) and then execute it
as usual query. In the beggining of this sequence we use Begin_load_query
event which is almost identical to Append_file event...
Updated test's results wwith new binlog positions.
mysql-test/r/rpl_loaddata_rule_m.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results and made it more robust for future similar
changes.
Since now LOAD DATA is replicated much in the same way as usual query
--binlog_do/ignore_db work for it inthe same way as for usual queries.
mysql-test/r/rpl_loaddata_rule_s.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results accordingly.
mysql-test/r/rpl_loaddatalocal.result:
Added nice test for case when it is important that LOAD DATA LOCAL
ignores duplicates.
mysql-test/r/rpl_log.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results accordingly (don't dare to get rid from binlog
positions completely since it seems that this test uses them).
mysql-test/r/rpl_log_pos.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results accordingly.
mysql-test/r/rpl_max_relay_size.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results accordingly.
mysql-test/r/rpl_multi_query.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results accordingly.
mysql-test/r/rpl_relayrotate.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results accordingly.
mysql-test/r/rpl_replicate_do.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results accordingly.
mysql-test/r/rpl_reset_slave.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results accordingly.
mysql-test/r/rpl_rotate_logs.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results accordingly.
mysql-test/r/rpl_server_id1.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results accordingly.
mysql-test/r/rpl_server_id2.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results accordingly.
mysql-test/r/rpl_temporary.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results and made it more robust for future similar
changes.
mysql-test/r/rpl_timezone.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results and made it more robust for future similar
changes.
mysql-test/r/rpl_until.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results accordingly and tweaked test a bit to bring it
back to good shape.
mysql-test/r/rpl_user_variables.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results and made it more robust for future similar
changes.
mysql-test/r/user_var.result:
Addition of two new types of binary log events shifted binlog positions.
Updated test's results and made it more robust for future similar
changes.
mysql-test/t/ctype_ucs.test:
Addition of two new types of binary log events shifted binlog positions.
Updated test accordingly and made it more robust for future similar
changes.
mysql-test/t/insert_select.test:
Addition of two new types of binary log events shifted binlog positions.
Updated test accordingly and made it more robust for future similar
changes.
mysql-test/t/loaddata.test:
Added test cases for new LOAD DATA functionality.
mysql-test/t/mix_innodb_myisam_binlog.test:
Addition of two new types of binary log events shifted binlog positions.
Updated test accordingly.
mysql-test/t/mysqlbinlog.test:
New way of replicating LOAD DATA local. Now we do it similarly to other
queries. We store LOAD DATA query in new Execute_load_query event
(which is last in the sequence of events representing LOAD DATA).
When we are executing this event we simply rewrite part of query which
holds name of file (we use name of temporary file) and then execute it
as usual query. In the beggining of this sequence we use Begin_load_query
event which is almost identical to Append_file event...
Thus we need new binlog positions for LOAD DATA events.
mysql-test/t/mysqlbinlog2.test:
Addition of two new types of binary log events shifted binlog positions.
Updated test accordingly.
mysql-test/t/mysqldump.test:
Made test more robust for failures of other tests.
mysql-test/t/rpl_charset.test:
Addition of two new types of binary log events shifted binlog positions.
Updated test accordingly.
mysql-test/t/rpl_deadlock.test:
Addition of two new types of binary log events shifted binlog positions.
Updated test accordingly.
mysql-test/t/rpl_error_ignored_table.test:
Addition of two new types of binary log events shifted binlog positions.
Updated test accordingly and made it more robust for future similar
changes.
mysql-test/t/rpl_flush_tables.test:
Addition of two new types of binary log events shifted binlog positions.
Made test more robust for future similar changes.
mysql-test/t/rpl_loaddata.test:
New way of replicating LOAD DATA. Now we do it similarly to other
queries. We store LOAD DATA query in new Execute_load_query event
(which is last in the sequence of events representing LOAD DATA).
When we are executing this event we simply rewrite part of query which
holds name of file (we use name of temporary file) and then execute it
as usual query. In the beggining of this sequence we use Begin_load_query
event which is almost identical to Append_file event...
Apropritely updated comments in test.
mysql-test/t/rpl_loaddata_rule_m.test:
Addition of two new types of binary log events shifted binlog positions.
Updated test accordingly and made it more robust for future similar
changes.
Since now LOAD DATA is replicated much in the same way as usual query
--binlog_do/ignore_db work for it inthe same way as for usual queries.
mysql-test/t/rpl_loaddata_rule_s.test:
Addition of two new types of binary log events shifted binlog positions.
Updated test accordingly.
mysql-test/t/rpl_loaddatalocal.test:
Added nice test for case when it is important that LOAD DATA LOCAL
ignores duplicates.
mysql-test/t/rpl_log.test:
Addition of two new types of binary log events shifted binlog positions.
Updated test accordingly (don't dare to get rid from binlog positions
completely since it seems that this test uses them).
mysql-test/t/rpl_log_pos.test:
Addition of two new types of binary log events shifted binlog positions.
Updated test accordingly.
mysql-test/t/rpl_multi_query.test:
Addition of two new types of binary log events shifted binlog positions.
Updated test accordingly.
mysql-test/t/rpl_temporary.test:
Addition of two new types of binary log events shifted binlog positions.
Made test more robust for future similar changes.
mysql-test/t/rpl_timezone.test:
Addition of two new types of binary log events shifted binlog positions.
Made test more robust for future similar changes.
mysql-test/t/rpl_until.test:
Addition of two new types of binary log events shifted binlog positions.
Updated test accordingly and tweaked it a bit to bring it back to good
shape.
mysql-test/t/rpl_user_variables.test:
Addition of two new types of binary log events shifted binlog positions.
Updated test accordingly and made it more robust for future similar
changes.
mysql-test/t/user_var.test:
Addition of two new types of binary log events shifted binlog positions.
Updated test accordingly and made it more robust for future similar
changes.
sql/item_func.cc:
Added Item_user_var_as_out_param class that represents user variable
which used as out parameter in LOAD DATA.
Moved code from Item_func_set_user_var::update_hash() function to
separate static function to be able to reuse it in this new class.
sql/item_func.h:
Added Item_user_var_as_out_param class that represents user variable
which used as out parameter in LOAD DATA.
sql/log_event.cc:
New way of replicating LOAD DATA. Now we do it similarly to other
queries. We store LOAD DATA query in new Execute_load_query event
(which is last in the sequence of events representing LOAD DATA).
When we are executing this event we simply rewrite part of query which
holds name of file (we use name of temporary file) and then execute it
as usual query. In the beggining of this sequence we use Begin_load_query
event which is almost identical to Append_file event.
sql/log_event.h:
New way of replicating LOAD DATA. Now we do it similarly to other
queries. We store LOAD DATA query in new Execute_load_query event
(which is last in the sequence of events representing LOAD DATA).
When we are executing this event we simply rewrite part of query which
holds name of file (we use name of temporary file) and then execute it
as usual query. In the beggining of this sequence we use Begin_load_query
event which is almost identical to Append_file event.
sql/mysql_priv.h:
Now mysql_load() has two more arguments. They are needed to pass list of
columns and corresponding expressions from new LOAD DATA's SET clause.
sql/share/errmsg.txt:
Added new error message which is used to forbid loading of data from
fixed length rows to variables.
sql/sql_lex.h:
Added LEX::fname_start/fname_end members.
They are pointers to part of LOAD DATA statement which should be
rewritten during replication (file name + little extra).
sql/sql_load.cc:
Added support for extended LOAD DATA.
Now one can use user variables as target for data loaded from file
(besides table's columns). Also LOAD DATA got new SET-clause in which
one can specify values for table columns as expressions.
Updated mysql_load()/read_fixed_length()/read_sep_field() to support
this functionality (now they can read data from file to both columns and
variables and assign do calculations and assignments specified in SET
clause).
We also use new approach for LOAD DATA binlogging/replication.
sql/sql_parse.cc:
mysql_execute_command():
Since now we have SET clause in LOAD DATA we should also check
permissions for tables used in its expressions. Also mysql_load()
has two more arguments to pass information about this clause.
sql/sql_repl.cc:
New way of replicating LOAD DATA. Now we do it similarly to other
queries. We store LOAD DATA query in new Execute_load_query event
(which is last in the sequence of events representing LOAD DATA).
When we are executing this event we simply rewrite part of query which
holds name of file (we use name of temporary file) and then execute it
as usual query. In the beggining of this sequence we use Begin_load_query
event which is almost identical to Append_file event.
sql/sql_repl.h:
struct st_load_file_info:
Removed memebers which are no longer needed for LOAD DATA binnlogging.
sql/sql_yacc.yy:
Added support for extended LOAD DATA syntax. Now one can use
user variables as target for data loaded from file (besides table's
columns). Also LOAD DATA got new SET-clause in which one can specify
values for table columns as expressions.
For example the following is possible:
LOAD DATA INFILE 'words.dat' INTO TABLE t1 (a, @b) SET c = @b + 1;
Also now we save pointers to the beginning and to the end of part of
LOAD DATA statement which should be rewritten during replication.
Rework to resolve ambigious grammer: conflict in join expression
handling of parentheses for nested joins and derived tables.
Tests included of failing statements
Optimize item construction for AND/OR logical expressions
mysql-test/r/select.result:
Bug#8670
Tests for failing expressions
mysql-test/t/select.test:
Bug#8670
Tests for failing expressions
sql/sql_parse.cc:
Bug#8670
method st_select_lex::end_nested_join() returns NULL when
there are no elements in the join.
sql/sql_yacc.yy:
Optimize construction for Item_cond_or and Item_cond_and
Reduces object count in case of complex expressions.
Bug#8670
Solve ambigious grammar.
Fix handling of parentheses in join expressions to
correct handling of nested joins and derived tables.