Hand merged from 4.0.
sql/lock.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_handler.cc:
Auto merged
sql/sql_table.cc:
Auto merged
1.) Added a new option to mysql_lock_tables() for ignoring FLUSH TABLES.
Used the new option in create_table_from_items().
It is necessary to prevent the SELECT table from being reopend.
It would get new storage assigned for its fields, while the
SELECT part of the command would still use the old (freed) storage.
2.) Protected the CREATE TABLE and CREATE TABLE ... SELECT commands
against a global read lock. This prevents a deadlock in
CREATE TABLE ... SELECT in conjunction with FLUSH TABLES WITH READ LOCK
and avoids the creation of new tables during a global read lock.
3.) Replaced set_protect_against_global_read_lock() and
unset_protect_against_global_read_lock() by
wait_if_global_read_lock() and start_waiting_global_read_lock()
in the INSERT DELAYED handling.
mysql-test/r/create.result:
Bug#10224 - ANALYZE TABLE crashing with simultaneous CREATE ... SELECT statement.
Added test results.
mysql-test/t/create.test:
Bug#10224 - ANALYZE TABLE crashing with simultaneous CREATE ... SELECT statement.
Added tests which do not require concurrency.
sql/lock.cc:
Bug#10224 - ANALYZE TABLE crashing with simultaneous CREATE ... SELECT statement.
Added a new option to mysql_lock_tables() for ignoring FLUSH TABLES.
Changed the parameter list.
Removed two unnecessary functions. Their functionality is included in
wait_if_global_read_lock() and start_waiting_global_read_lock().
sql/mysql_priv.h:
Bug#10224 - ANALYZE TABLE crashing with simultaneous CREATE ... SELECT statement.
Changed the declaration of mysql_lock_tables().
Added definitions for the new options.
sql/sql_acl.cc:
Bug#10224 - ANALYZE TABLE crashing with simultaneous CREATE ... SELECT statement.
Adjusted mysql_lock_tables() calls to the new argument list.
sql/sql_base.cc:
Bug#10224 - ANALYZE TABLE crashing with simultaneous CREATE ... SELECT statement.
Adjusted mysql_lock_tables() calls to the new argument list.
sql/sql_handler.cc:
Bug#10224 - ANALYZE TABLE crashing with simultaneous CREATE ... SELECT statement.
Adjusted mysql_lock_tables() calls to the new argument list.
sql/sql_insert.cc:
Bug#10224 - ANALYZE TABLE crashing with simultaneous CREATE ... SELECT statement.
Replaced set_protect_against_global_read_lock() and
unset_protect_against_global_read_lock() by
wait_if_global_read_lock() and start_waiting_global_read_lock()
in the INSERT DELAYED handling.
Adjusted mysql_lock_tables() calls to the new argument list.
sql/sql_parse.cc:
Bug#10224 - ANALYZE TABLE crashing with simultaneous CREATE ... SELECT statement.
Protected the CREATE TABLE and CREATE TABLE ... SELECT commands
against a global read lock. This prevents a deadlock in
CREATE TABLE ... SELECT in conjunction with FLUSH TABLES WITH READ LOCK
and avoids the creation of new tables during a global read lock.
sql/sql_table.cc:
Bug#10224 - ANALYZE TABLE crashing with simultaneous CREATE ... SELECT statement.
Adjusted mysql_lock_tables() calls to the new argument list.
Used the new option in create_table_from_items().
engines when lower_case_table_names == 2, as it did previously
for InnoDB and MEMORY. (Bug #9660)
mysql-test/r/lowercase_table2.result:
Fix results
sql/sql_table.cc:
Add build_table_path() function to construct the path to
a table, and use it to replace nearly all of the places
where this was done with similar code.
Fix mysql_rename_table() to not lowercase the .frm file
name when lower_case_table_names == 2 and the storage
engine does not set the HA_FILE_BASED flag (such as InnoDB).
BitKeeper/deleted/.del-outfile2.result~fb702ee2518d8e6d:
Delete: mysql-test/r/outfile2.result
libmysql/libmysql.c:
Fix indentation for new function mysql_set_character_set()
mysql-test/r/alter_table.result:
Fix test to be in same order as in 4.0
mysql-test/r/innodb.result:
After merge fix
mysql-test/r/insert_update.result:
Add extra test for insert into ... on duplicate key upate
mysql-test/r/outfile.result:
After merge fix
mysql-test/t/alter_table.test:
Fix test to be in same order as in 4.0
mysql-test/t/insert_update.test:
Add extra test for insert into ... on duplicate key upate
mysql-test/t/outfile.test:
After merge fix
sql/item_func.cc:
After merge fix
sql/sql_table.cc:
After merge fix
Count null_bits separately from field offsets and adjust them in case of primary key parts.
(Previously a CREATE TABLE with a lot of null fields that was part of a primary key caused MySQL to wrongly count the number of bytes needed to store null bits)
This is a more complete bug fix for #6236
mysql-test/r/alter_table.result:
More test for bug #6236 (CREATE TABLE didn't properly count not null columns for primary keys)
mysql-test/t/alter_table.test:
More test for bug #6236 (CREATE TABLE didn't properly count not null columns for primary keys)
sql/handler.h:
Add counter for null fields
sql/sql_table.cc:
Change create_field->offset to store offset from start of fields, independent of null bits.
Count null_bits separately from field offsets and adjust them in case of primary key parts.
sql/unireg.cc:
Change create_field->offset to store offset from start of fields, independent of null bits.
Count null_bits separately from field offsets and adjust them in case of primary key parts.
Incomplete ALTER TABLE breaks MERGE compatibility
Fix implicit NOT NULL not set on ALTER of PK columns
mysql-test/r/alter_table.result:
Test for Bug#6236
mysql-test/t/alter_table.test:
Test for Bug#6236
sql/sql_table.cc:
Implicit NOT NULL not set on ALTER of PK columns
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
is set on case-sensitive file systems and the source table
was specified in something other than lowercase. (Bug #9761)
mysql-test/r/lowercase_table.result:
Add results
mysql-test/t/lowercase_table.test:
Regression test for Bug #9761
sql/sql_table.cc:
When lower_case_table_names is set, make sure to look for
the source table using a lowercase filename.
if we fall back to mysql_alter_table() (for InnoDB), don't do binlogging in mysql_alter_table(), as mysql_admin_table()
is not supposed to do any binlogging (it is done by the caller).
sql/sql_table.cc:
When optimizing a table, if we fall back to mysql_alter_table()
(for InnoDB), don't do binlogging in mysql_alter_table(), as mysql_admin_table()
is not supposed to do any binlogging (it is done by the caller).
if there are foreign key constraints on the table. (Bug #5574)
sql/ha_innodb.cc:
Add method can_switch_engines()
sql/ha_innodb.h:
Add method can_switch_engines()
sql/handler.h:
Add method can_switch_engines()
sql/sql_table.cc:
Check handler::can_switch_engines() before switching storage engines
mysql-test/r/drop.result:
Auto merged
mysql-test/t/drop.test:
Auto merged
sql/share/english/errmsg.txt:
Auto merged
sql/share/russian/errmsg.txt:
Auto merged
sql/share/ukrainian/errmsg.txt:
Auto merged
sql/sql_table.cc: print an error with a function that respects width modifiers (%.64s)
mysql-test/r/drop.result:
bug#3891 - DROP TABLE many-unexistent-tables, was printing an error with %s instead of table names
mysql-test/t/drop.test:
bug#3891 - DROP TABLE many-unexistent-tables, was printing an error with %s instead of table names
sql/share/english/errmsg.txt:
allow longer "table names" as DROP TABLE puts a list here
sql/share/russian/errmsg.txt:
allow longer "table names" as DROP TABLE puts a list here
sql/share/ukrainian/errmsg.txt:
allow longer "table names" as DROP TABLE puts a list here
sql/sql_table.cc:
print an error with a function that respects width modifiers (%.64s)
administrative statements that may alter the table, such
as REPAIR TABLE. (Bug #8480)
mysql-test/r/query_cache.result:
Add new results
mysql-test/t/query_cache.test:
Add regression test
sql/sql_table.cc:
Make sure entries are flushed from the query cache for
any administrative command run on a table that acquires
a write lock on it (and thus might change it), like
REPAIR TABLE.
extra/perror.c:
Use strmov() instead of strcpy()
Indentation fixes
sql/sql_table.cc:
Revert back part of the old code as the new code didn't use mysql_data_home, which would have caused problems in the embedded server
sql/sql_update.cc:
Ensure that used_index is always set (It has to be set because it's value is tested if order != 0)
sql_table.cc:
use fn_format to resolve symlinks in mysql_create_like_table
sql/sql_table.cc:
use fn_format to resolve symlinks in mysql_create_like_table
This allows use to use INSERT IGNORE ... ON DUPLICATE ...
mysql-test/r/drop.result:
safety fix
mysql-test/t/drop.test:
safety fix
mysql-test/t/multi_update.test:
ensure we cover all possible errors
sql/log_event.cc:
Remove DUP_IGNORE from enum_duplicates and instead use a separate ignore flag
sql/log_event.h:
Remove DUP_IGNORE from enum_duplicates and instead use a separate ignore flag
sql/mysql_priv.h:
Remove DUP_IGNORE from enum_duplicates and instead use a separate ignore flag
sql/sql_class.h:
Remove DUP_IGNORE from enum_duplicates and instead use a separate ignore flag
sql/sql_delete.cc:
Remove DUP_IGNORE from enum_duplicates and instead use a separate ignore flag
sql/sql_insert.cc:
Remove DUP_IGNORE from enum_duplicates and instead use a separate ignore flag
sql/sql_lex.cc:
Remove DUP_IGNORE from enum_duplicates and instead use a separate ignore flag
sql/sql_lex.h:
Remove DUP_IGNORE from enum_duplicates and instead use a separate ignore flag
sql/sql_load.cc:
Remove DUP_IGNORE from enum_duplicates and instead use a separate ignore flag
sql/sql_parse.cc:
Remove DUP_IGNORE from enum_duplicates and instead use a separate ignore flag
sql/sql_repl.cc:
Remove DUP_IGNORE from enum_duplicates and instead use a separate ignore flag
sql/sql_repl.h:
Remove DUP_IGNORE from enum_duplicates and instead use a separate ignore flag
sql/sql_select.cc:
Remove DUP_IGNORE from enum_duplicates and instead use a separate ignore flag
sql/sql_table.cc:
Remove DUP_IGNORE from enum_duplicates and instead use a separate ignore flag
sql/sql_union.cc:
Remove DUP_IGNORE from enum_duplicates and instead use a separate ignore flag
sql/sql_update.cc:
Remove DUP_IGNORE from enum_duplicates and instead use a separate ignore flag
sql/sql_yacc.yy:
Remove DUP_IGNORE from enum_duplicates and instead use a separate ignore flag
Return a sensible error code from DISCARD TABLESPACE, if it fails because the table is referenced by a FOREIGN KEY
sql/sql_table.cc:
Return a sensible error code from DISCARD TABLESPACE, if it fails because the table is referenced by a FOREIGN KEY
into mysql.com:/space/bk/b6391-mysql-4.1
sql/handler.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_table.cc:
Auto merged
CREATE DATABASE statement used the current database instead of the
database created when checking conditions for replication.
CREATE/DROP/ALTER DATABASE statements are now replicated based on
the manipulated database.
mysql-test/t/rpl_until.test:
Longer sleep to allow slave to stop.
mysql-test/t/rpl_charset.test:
Position change in binary file.
mysql-test/r/drop_temp_table.result:
Position change in binlog.
mysql-test/r/rpl_loaddata_rule_m.result:
Position change in binlog.
mysql-test/r/rpl_charset.result:
Position change in binlog.
sql/log_event.h:
Added new flag and parameter to suppress generation of
USE statements.
sql/log_event.cc:
Added parameter and code to suppress generation of
USE statements.
sql/sql_db.cc:
Suppress generation of USE before CREATE/ALTER/DROP DATABASE
statements.
sql/log.cc:
Query_log_event have new extra parameter.
sql/sql_table.cc:
Query_log_event have new extra parameter.
sql/sql_base.cc:
Query_log_event have new extra parameter.
sql/sql_update.cc:
Query_log_event have new extra parameter.
sql/sql_insert.cc:
Query_log_event have new extra parameter.
sql/sql_rename.cc:
Query_log_event have new extra parameter.
sql/sql_delete.cc:
Query_log_event have new extra parameter.
sql/sql_acl.cc:
Query_log_event have new extra parameter.
sql/handler.cc:
Query_log_event have new extra parameter.
sql/item_func.cc:
Query_log_event have new extra parameter.
sql/sql_parse.cc:
Query_log_event have new extra parameter.
insertion of new records partially failed. It would get logged because of the
logic to log a partially-failed 'INSERT ... SELECT' (which can't be rolled back
in non-transactional tables), but 'CREATE TABLE ... SELECT' is always rolled
back on failure, even for non-transactional tables. (Bug #6682)
(Original fix reimplemented after review by Serg and Guilhem.)
mysql-test/t/insert_select.test:
Add test case for Bug #6682
mysql-test/r/insert_select.result:
Add results for test case for Bug #6682
sql/sql_table.cc:
moved tmp_disable_binlog() and reenable_binlog macros to sql/sql_class.h
sql/sql_insert.cc:
disable binlog during call to super's ::send_error in select_create class
sql/sql_class.h:
add select_create::send_error()
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
mysql-test/r/rpl_start_stop_slave.result:
Auto merged
sql/field.cc:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_table.cc:
Auto merged
mysql-test/r/type_enum.result:
merged test cases
mysql-test/t/type_enum.test:
merged test cases
Added auto-correct of field length for enum/set tables for ALTER TABLE
This is becasue of a bug in previous MySQL 4.1 versions where the length for enum/set was set incorrectly after ALTER TABLE
mysql-test/r/rpl_start_stop_slave.result:
Fixed wrong test
mysql-test/r/type_enum.result:
Added test for wrong enum/set length after alter table
mysql-test/t/ps.test:
removed empty line
mysql-test/t/type_enum.test:
Added test for wrong enum/set length after alter table
sql/field.cc:
Added auto-correct of field length for enum/set tables.
This is becasue of a bug in previous MySQL 4.1 versions where the length for enum/set was set incorrectly after ALTER TABLE
sql/item_cmpfunc.cc:
Simple optimization
sql/mysql_priv.h:
Made local function global
sql/set_var.cc:
Simple cleanup
sql/sql_table.cc:
Simple cleanups & optimizations
- add_field_to_list() now uses <List>String
instead of TYPELIB to be able to distinguish
literals 'aaa' and hex literals 0xaabbcc.
- move some code from add_field_to_list() where
we don't know column charset yet, to
mysql_prepare_table(), where we do.
Added check for duplicate column in key
Added tests and fixed tests which exploit bug
mysql-test/r/delete.result:
Fix test as it exploited Bug#6252
mysql-test/r/innodb.result:
Test for Bug#6126
mysql-test/r/key.result:
Test for Bug#6126/6252
mysql-test/r/type_blob.result:
Fix test as it exploited Bug#6252
mysql-test/t/delete.test:
Fix test as it exploited Bug#6252
mysql-test/t/innodb.test:
Test for Bug#6126
mysql-test/t/key.test:
Test for Bug#6126/6252
mysql-test/t/type_blob.test:
Fix test as it exploited Bug#6252
sql/sql_table.cc:
Bug#6252 - Duplicate columns in keys should fail
Added check for duplicate column.
BitKeeper/etc/logging_ok:
auto-union
BitKeeper/deleted/.del-Makefile.am:
Delete: Docs/Images/Makefile.am
Build-tools/Bootstrap:
Auto merged
Docs/Makefile.am:
Auto merged
configure.in:
Auto merged
include/mysql.h:
Auto merged
innobase/dict/dict0dict.c:
Auto merged
libmysql/libmysql.c:
Auto merged
mysys/default.c:
Auto merged
scripts/mysqld_safe.sh:
Auto merged
sql/log.cc:
Auto merged
mysql-test/t/mix_innodb_myisam_binlog.test:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_table.cc:
Auto merged
client/mysqldump.c:
merge with 4.0
(This only reorders options)
sql/ha_innodb.cc:
merge with 4.0 (Keep original code)
sql/time.cc:
Note that part of this patch is done in my_time.c
When we are writing a transaction to the binlog, we log BEGIN/COMMIT with zero error code.
Example: all statements of trans succeeded, connection lost and so implicit rollback:
we don't want ER_NET* errors to be logged in the BEGIN/ROLLBACK events, while statement
events have 0. If there was really a serious error code, it's already in the statement events.
sql/log.cc:
When we write the cached binlog segment to disk binlog at COMMIT/ROLLBACK time:
imagine this is rollback due to net timeout, after all statements of
the transaction succeeded. Then we want a zero-error code in BEGIN.
In other words, if there was a really serious error code it's already
in the transaction's statement events.
sql/sql_table.cc:
out of date comment
The idea of the fix is that the administrative statements
OPTIMIZE TABLE, REPAIR TABLE and ANALYZE TABLE should not
generate binlog errors if there is no errors on the master.
sql/sql_parse.cc:
No binlog error generated
sql/sql_table.cc:
Documentation
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
Build-tools/mysql-copyright:
Auto merged
Docs/Support/texi2html:
Auto merged
innobase/dict/dict0dict.c:
Auto merged
innobase/eval/eval0eval.c:
Auto merged
innobase/pars/pars0pars.c:
Auto merged
Added a try to a normal repair() if repair_by_sort() failed.
This was not done with ENABLE KEYS and OPTIMIZE TABLE.
Fixed error code handling in mysql_alter_table().
sql/ha_myisam.cc:
BUG#5625 - MyISAM Index corruption on ALTER TABLE x ENABLE KEYS due to full tmpdir.
Added a try to a normal repair() if repair_by_sort() failed.
This was not done with ENABLE KEYS and OPTIMIZE TABLE.
sql/sql_table.cc:
BUG#5625 - MyISAM Index corruption on ALTER TABLE x ENABLE KEYS due to full tmpdir.
Added a translation from 'bool' return value to '< 0' error indication,
which is used within mysql_execute_command() and must as such be
handed over by mysql_alter_table(). A returncode >= 0 is interpreted
as 'I have already called send_ok()'.
into mishka.local:/home/my/mysql-4.1
sql/item_cmpfunc.h:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
(Bug #4315: GROUP_CONCAT with ORDER BY returns strange results for TEXT fields
Bug #5564: Strange behaviour with group_concat and distinct
Bug #5970: group_concat doesn't print warnings)
differently when converting column to auto_increment in 4.1" with
current tree.
mysql-test/t/type_timestamp.test:
Auto merged
mysql-test/r/type_timestamp.result:
Manual merge.
sql/sql_table.cc:
Manual merge.