Done clean-up in prep stmt API functions:
1) Removed some checks that were performed only in debug version
were making debug version more tolerable to user errors than
production (and thus caused problems for example masking some
bugs).
2) Also removed some other checks to make prep stmt API
consistent with the rest of C API (this also in line with
general politics - make checks in only those places where
errors are very common and hard to spot).
include/mysql.h:
Removed CHECK_EXTRA_ARGUMENTS define since it is no longer used
anywhere.
libmysql/libmysql.c:
Added check that will cause mysql_fetch() to bark then it is
used without calling mysql_execute() before.
Removed checks that were performed only in debug version and
caused problems since they were making debug version more
tolerable to user errors than production. Also removed some
other checks to make prep stmt API consistent in this regard
with the rest of C API (this also in line with general politics -
make checks in only those places where errors are very common
and hard to spot).
tests/client_test.c:
Updated tests to reflect removal of some checks in prep stmt API.
Removed lines that caused bug #2473 to pop up, should be added
as separate test with the fix for this bug.
Added test for bug#2248 "mysql_fetch without prior mysql_execute
hangs"
now we execute only one first select during mysql_real_query
others - during 'mysql_next_result'
include/mysql.h:
'virtual' next_result added
libmysql/client_settings.h:
cli_next_result declaration added
libmysql/libmysql.c:
mysql_next_result now works in embedded library as well
libmysqld/lib_sql.cc:
emb_next_result implemented
sql/sql_class.h:
fields to store the rest of the query added
sql/sql_parse.cc:
Saving the rest of the query added for embedded case
client/mysqlbinlog.cc:
Ensure that errors are returned to upper levels instead of just doing 'exit/die' in sub function.
sql/handler.h:
Indentation cleanup
sql/sql_insert.cc:
Indentation cleanup
into sanja.is.com.ua:/home/bell/mysql/bk/work-prepared-4.1
mysql-test/r/derived.result:
Auto merged
mysql-test/t/derived.test:
Auto merged
sql/sql_acl.cc:
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_union.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/sql_derived.cc:
memory leack fixed
sql/sql_lex.cc:
flag to avoid double cleaning
sql/sql_lex.h:
flag to avoid double cleaning
sql/sql_select.cc:
right way to cleanup JOIN_TAB
sql/sql_select.h:
right way to cleanup JOIN_TAB
sql/sql_union.cc:
flag to avoid double cleaning
Don't use --command in tests; use command.
mysql-test/r/rpl_until.result:
result update
mysql-test/t/rpl_until.test:
real-sleep is incorrect syntax; mysqltest knows only real_sleep.
Tip: don't use -- before commands; if mysqltest does not recognize the command
after -- it just says "it must be a comment", so there is no syntax error detection.
If you don't use the -- it will report the syntax error.
The typo caused no sleep, so the slave did not have time to stop.
Now it has time so we needn't replace the Slave_SQL_Running
(and it's better to not replace it, because if we don't see that it
is running, it will trigger errors just a bit later).
Allow always DROPping of a table which is only referenced by FOREIGN KEY constraints from the same table
Many files:
Do not let REPLACE to perform internally an UPDATE if the table is referenced by a FOREIGN KEY: the manual says that REPLACE must resolve a duplicate key error semantically with DELETE(s) + INSERT, and not by an UPDATE; the internal update caused foreign key checks and cascaded operations to behave in a semantically wrong way
sql/ha_innodb.cc:
Do not let REPLACE to perform internally an UPDATE if the table is referenced by a FOREIGN KEY: the manual says that REPLACE must resolve a duplicate key error semantically with DELETE(s) + INSERT, and not by an UPDATE; the internal update caused foreign key checks and cascaded operations to behave in a semantically wrong way
sql/sql_insert.cc:
Do not let REPLACE to perform internally an UPDATE if the table is referenced by a FOREIGN KEY: the manual says that REPLACE must resolve a duplicate key error semantically with DELETE(s) + INSERT, and not by an UPDATE; the internal update caused foreign key checks and cascaded operations to behave in a semantically wrong way
sql/ha_innodb.h:
Do not let REPLACE to perform internally an UPDATE if the table is referenced by a FOREIGN KEY: the manual says that REPLACE must resolve a duplicate key error semantically with DELETE(s) + INSERT, and not by an UPDATE; the internal update caused foreign key checks and cascaded operations to behave in a semantically wrong way
sql/handler.h:
Do not let REPLACE to perform internally an UPDATE if the table is referenced by a FOREIGN KEY: the manual says that REPLACE must resolve a duplicate key error semantically with DELETE(s) + INSERT, and not by an UPDATE; the internal update caused foreign key checks and cascaded operations to behave in a semantically wrong way
innobase/dict/dict0dict.c:
Do not let REPLACE to perform internally an UPDATE if the table is referenced by a FOREIGN KEY: the manual says that REPLACE must resolve a duplicate key error semantically with DELETE(s) + INSERT, and not by an UPDATE; the internal update caused foreign key checks and cascaded operations to behave in a semantically wrong way
innobase/include/dict0dict.h:
Do not let REPLACE to perform internally an UPDATE if the table is referenced by a FOREIGN KEY: the manual says that REPLACE must resolve a duplicate key error semantically with DELETE(s) + INSERT, and not by an UPDATE; the internal update caused foreign key checks and cascaded operations to behave in a semantically wrong way
innobase/row/row0mysql.c:
Allow always DROPping of a table which is only referenced by FOREIGN KEY constraints from the same table
Fix crash in InnoDB RENAME TABLE if 'databasename/tablename' is shorter than 5 characters (Bug #2689); reported by Sergey Petrunia
innobase/row/row0mysql.c:
Fix crash in InnoDB RENAME TABLE if 'databasename/tablename' is shorter than 5 characters (Bug #2689); reported by Sergey Petrunia
mysql-test/r/derived.result:
Auto merged
mysql-test/t/derived.test:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/item_func.h:
Auto merged
sql/item_sum.h:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_update.cc:
Auto merged
into sanja.is.com.ua:/home/bell/mysql/bk/work-derived2-4.1
mysql-test/r/derived.result:
Auto merged
mysql-test/t/derived.test:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_update.cc:
Auto merged
Removed warnings from test suite
mysql-test/r/ctype_utf8.result:
Update results after fix of return argument from date_format()
mysql-test/r/date_formats.result:
Remove unnecessary warnings
mysql-test/r/type_decimal.result:
Remove unnecessary warnings
mysql-test/r/warnings.result:
Remove unnecessary warnings
mysql-test/t/ctype_utf8.test:
Fixed test
mysql-test/t/date_formats.test:
Remove unnecessary warnings
mysql-test/t/type_decimal.test:
Remove unnecessary warnings
mysql-test/t/warnings.test:
Remove unnecessary warnings
sql/field.cc:
Optimize
sql/item_timefunc.cc:
Ensure that result from date_format() is binary
strings/ctype-simple.c:
Better names for arguments
into sanja.is.com.ua:/home/bell/mysql/bk/work-prepared-4.1
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_select.cc:
Auto merged
mysql-test/r/derived.result:
test of error handling in derived tables with UPDATE & DELETE
mysql-test/t/derived.test:
test of error handling in derived tables with UPDATE & DELETE
sql/mysql_priv.h:
opened tables counter added to avoid loop of tables calculating in lock_tables
sql/sql_acl.cc:
opened tables counter added to avoid loop of tables calculating in lock_tables, here it is just for compatibility
sql/sql_base.cc:
removed unneeded assignment
opened tables counter added to avoid loop of tables calculating in lock_tables
commentary fixed
sql/sql_derived.cc:
mysql_derived made static
variable res moved in place where it used
priveleges written in correct place
sql/sql_handler.cc:
opened tables counter added to avoid loop of tables calculating in lock_tables
sql/sql_parse.cc:
mistyping in commentary fixed
Fixed output from mysqlbinlog when using --skip-comments
Fixed warnings from valgrind
Fixed ref_length when used with HEAP tables
More efficent need_conversion()
Fixed error handling in UPDATE with not updateable tables
Fixed bug in null handling in CAST to signed/unsigned
client/client_priv.h:
cleanup & added OPT_COMPACT
client/mysqldump.c:
Added option --compact to get a compact readable dump.
Ensure that SET CHARACTER_SET_CLIENT is not done if we have not remembered the old character set
Print optimization comments even if --skip-comments are given as these are not true comments. (Before these where only printed at end, which was a bug)
mysql-test/r/cast.result:
More cast tests
mysql-test/r/derived.result:
Removed warnings
mysql-test/r/mysqldump.result:
Update results after fixing mysqlbinlog
mysql-test/r/query_cache.result:
Make test usable with --extern
more tests
mysql-test/r/rpl_until.result:
Make test repeatable under valgrind
mysql-test/r/sql_mode.result:
Fix test result
mysql-test/r/subselect.result:
Make test smaller. Update wrong results
mysql-test/t/cast.test:
More cast tests
mysql-test/t/derived.test:
Removed warnings
mysql-test/t/query_cache.test:
Make test usable with --extern
more tests
mysql-test/t/rpl_until.test:
fix for valgrind. Becasue of unknown reason one got 'Slave_SQL_Running=yes' in this setup
mysql-test/t/subselect.test:
Make test case smaller
sql/field.cc:
Updated need_conversion() to use new arguments
sql/ha_heap.cc:
Moved initialization of ref_length to right place. This fixed problem that we had a ref_length of 8 for heap tables, which was not efficent.
sql/item_func.cc:
Cleanup
sql/item_func.h:
Fixed bug in null_handling for cast to signed/unsigned
sql/item_strfunc.cc:
Optimized/cleaned up Item_func_conv_charset3
sql/item_sum.cc:
Cleanup.
Ensure that some flag variables are cleared in cleanup()
sql/item_sum.h:
Fixed references to uninitialized memory
sql/opt_range.cc:
Fixed spelling error
sql/sql_class.cc:
Fixed wrong return code, which could case protocol problems
sql/sql_class.h:
After merge fix
sql/sql_prepare.cc:
Added comments
sql/sql_show.cc:
Cleanup
sql/sql_string.cc:
Optimzed usage of need_conversion().
- Removed not used argument
- Save diff lenght in 'offset' to not have to recalculate length several times.
Cleaned up comment
Optimized copy_aligned() based on the knowledge that it's only called when you have wrong data
sql/sql_string.h:
Updated need_conversion() and copy_aligned() to use new arguments
sql/sql_update.cc:
Fixed error handling with non-updateable tables
sql/sql_yacc.yy:
Ensure that lex->lock_options are set correctly (to get rid of warnings from valgrind)
Ensure that cast_type sets lex->charset and lex->length. Without these CONVERT() didn't work properly
into sanja.is.com.ua:/home/bell/mysql/bk/work-derived2-4.1
sql/sql_delete.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_select.h:
Auto merged
sql/sql_update.cc:
Auto merged
Fix bug #2167: generate foreign key id's locally for each table, in the form databasename/tablename_ibfk_number; if the user gives the constraint name explicitly remember it; these changes should ensure that foreign key id's in a slave are the same as in the master, and DROP FOREIGN KEY does not break replication
sync0sync.c:
UNIV_SYNC_DEBUG caused assertion in the creation of the doublewrite buffer, if we do not allow thousands of latches per thread
innobase/dict/dict0crea.c:
Fix bug #2167: generate foreign key id's locally for each table, in the form databasename/tablename_ibfk_number; if the user gives the constraint name explicitly remember it; these changes should ensure that foreign key id's in a slave are the same as in the master, and DROP FOREIGN KEY does not break replication
innobase/dict/dict0dict.c:
Fix bug #2167: generate foreign key id's locally for each table, in the form databasename/tablename_ibfk_number; if the user gives the constraint name explicitly remember it; these changes should ensure that foreign key id's in a slave are the same as in the master, and DROP FOREIGN KEY does not break replication
innobase/include/dict0crea.h:
Fix bug #2167: generate foreign key id's locally for each table, in the form databasename/tablename_ibfk_number; if the user gives the constraint name explicitly remember it; these changes should ensure that foreign key id's in a slave are the same as in the master, and DROP FOREIGN KEY does not break replication
innobase/include/dict0dict.h:
Fix bug #2167: generate foreign key id's locally for each table, in the form databasename/tablename_ibfk_number; if the user gives the constraint name explicitly remember it; these changes should ensure that foreign key id's in a slave are the same as in the master, and DROP FOREIGN KEY does not break replication
innobase/include/ut0mem.h:
Fix bug #2167: generate foreign key id's locally for each table, in the form databasename/tablename_ibfk_number; if the user gives the constraint name explicitly remember it; these changes should ensure that foreign key id's in a slave are the same as in the master, and DROP FOREIGN KEY does not break replication
innobase/row/row0mysql.c:
Fix bug #2167: generate foreign key id's locally for each table, in the form databasename/tablename_ibfk_number; if the user gives the constraint name explicitly remember it; these changes should ensure that foreign key id's in a slave are the same as in the master, and DROP FOREIGN KEY does not break replication
innobase/sync/sync0sync.c:
UNIV_SYNC_DEBUG caused assertion in the creation of the doublewrite buffer, if we do not allow thousands of latches per thread
innobase/ut/ut0mem.c:
Fix bug #2167: generate foreign key id's locally for each table, in the form databasename/tablename_ibfk_number; if the user gives the constraint name explicitly remember it; these changes should ensure that foreign key id's in a slave are the same as in the master, and DROP FOREIGN KEY does not break replication
sql/item_sum.cc:
fixed cleupup() for distinct aggregate functions
tests/client_test.c:
fixed subqueries test
test of distinct aggregate functions in PS
fixed UNION preparation
sql/item.cc:
debug output added
sql/item.h:
debug output added
sql/item_cmpfunc.cc:
correct cleunup() for Item_in_optimizer
sql/item_cmpfunc.h:
correct cleunup() for Item_in_optimizer
debug output added
sql/item_func.h:
debug output added
sql/item_subselect.cc:
support of prepared statemnts added - mostly memorry allocation manegement, only one trabsformatio & correct cleupup()
sql/item_subselect.h:
support of prepared statemnts added - mostly memorry allocation manegement, only one trabsformatio & correct cleupup()
sql/item_sum.cc:
debug output added
sql/item_sum.h:
debug output added
sql/sql_class.cc:
function to switch allocation arena for Items
sql/sql_class.h:
function to switch allocation arena for Items
pointer on current prepared statement added
sql/sql_lex.cc:
comment fixed
sql/sql_lex.h:
item cleanup support
sql/sql_prepare.cc:
- fixed preparation of PS to avoid storing junk in its memory + correct work with union
- fixed tables cleanup for UNION & subqueries
sql/sql_select.cc:
removed condition which is always true for now
fixed layout
sql/sql_union.cc:
support of UNION subquery cleanup
tests/client_test.c:
test of repeatable subqueries
test of correct UNION initialisation
If AUTOCOMMIT=1, then we do not need to make a plain SELECT set shared locks even on the SERIALIZABLE isolation level, because we know the transaction is read-only: a read-only transaction can always be performed on the REPEATABLE READ level, and that does not endanger the serializability
sql/ha_innodb.cc:
If AUTOCOMMIT=1, then we do not need to make a plain SELECT set shared locks even on the SERIALIZABLE isolation level, because we know the transaction is read-only: a read-only transaction can always be performed on the REPEATABLE READ level, and that does not endanger the serializability
mysql-test/r/mysqldump.result:
added test for
bug #2592 mysqldump doesn't quote "tricky" names correctly
please note, output's still looking wrong because of bug #2593
it will be fixed when fix for bug #2593 will be pushed
mysql-test/t/mysqldump.test:
added test for bug
#2592 mysqldump doesn't quote "tricky" names correctly
sql/sql_lex.cc:
fixed processing of multibyte quoted variables
2. added automatic quotation of keywords in SHOW CREATE TABLE
mysql-test/r/show_check.result:
added tests for
bug #2593 "SHOW CREATE TABLE doesn't properly double quotas"
and for automatic quotation of keywords
mysql-test/t/show_check.test:
added tests for
bug #2593 "SHOW CREATE TABLE doesn't properly double quotas"
and for automatic quotation of keywords
sql/mysql_priv.h:
added declaration of function is_keyword
sql/sql_lex.cc:
added implementation of function is_keyword
sql/sql_show.cc:
changed function append_identifier and it's subfunctions
1. fixed bug @2593 "SHOW CREATE TABLE doesn't properly double quotes"
2. added automatic quotation of keywords
client/mysqlbinlog.cc:
fixed bug #1378 "mysqlbinlog for remote host is broken"
by using shared part of code for local and remote variant
(function process_event)
mysql-test/r/mysqlbinlog.result:
fixed results for remote variant
(they are the same as for local now)
mysql-test/t/mysqlbinlog.test:
discarded note 'V. Vagin should ...'
because V.Vagin done
sql/log_event.cc:
added special local_fname flag to Load_log_event for
using in Load_log_event::check_fname_outside_temp_buf
instead of ugly condition
sql/log_event.h:
added special local_fname flag to Load_log_event for
using in Load_log_event::check_fname_outside_temp_buf
instead of ugly condition
last command"
include/mysql.h:
Fix for bug #2247:
added affected_rows variable to MYSQL_STMT
libmysql/libmysql.c:
Fix for bug #2247:
save mysql->affected_rows in stmt->affected_rows
after mysql_execute() and mysql_stmt_store_result().
tests/client_test.c:
Fix for bug #2247: test added
BitKeeper/etc/ignore:
auto-union
BitKeeper/etc/logging_ok:
auto-union
mysql-test/r/func_math.result:
Auto merged
mysql-test/t/func_math.test:
Auto merged
sql/item_func.cc:
Auto merged
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
mysql-test/r/alter_table.result:
Fix for bug #2628: test result fixed
mysql-test/t/alter_table.test:
Fix for bug #2628: test case added
sql/sql_table.cc:
Fix for bug #2628:
We need to take into account database name when checking if source and
destination table names are equal.
Note, that after merge to 4.0 we also need to check for
lower_case_table_names.
so it gets picked up by "make dist" and updated init_file test accordingly.
mysql-test/std_data/init_file.dat:
Rename: mysql-test/t/init_file.sql -> mysql-test/std_data/init_file.dat
mysql-test/t/init_file-master.opt:
- moved init file to std_data
mysql-test/t/init_file.test:
- updated info
mysql-test/r/subselect.result:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/mysqld.cc:
Auto merged
sql/opt_range.cc:
Auto merged
sql/opt_range.h:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_class.cc:
Auto merged