1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-21 21:22:27 +03:00
Commit Graph

568 Commits

Author SHA1 Message Date
cf2188ca39 Bug#10224 - ANALYZE TABLE crashing with simultaneous CREATE ... SELECT statement.
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().
2005-05-31 11:08:14 +02:00
e547fbea68 Cleanups to patch for bug #9660 after review by Monty.
sql/sql_table.cc:
  Make return value of build_table_path() useful
  Eliminate some unnecessary casts
2005-05-26 10:01:26 -07:00
8ac75806e2 Fix table renaming to not lowercase table names for all storage
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).
2005-05-25 20:26:40 -07:00
75e8f8372e Fix error reporting for 'OPTIMIZE TABLE' on InnoDB tables. (Bug #8135)
sql/sql_table.cc:
  Pass through errors from InnoDB in OPTIMIZE TABLE.
2005-05-24 11:11:40 -07:00
2059908b9c After merge fixes
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
2005-05-14 16:24:36 +03:00
037b0a7b14 Merge with 4.0
BitKeeper/etc/logging_ok:
  auto-union
mysql-test/r/outfile2.result:
  Merge rename: mysql-test/r/outfile.result -> mysql-test/r/outfile2.result
myisam/mi_key.c:
  Auto merged
mysql-test/r/alter_table.result:
  Auto merged
mysql-test/r/auto_increment.result:
  Auto merged
mysql-test/r/innodb.result:
  Auto merged
mysql-test/t/auto_increment.test:
  Auto merged
mysql-test/t/innodb.test:
  Auto merged
sql/handler.h:
  Auto merged
mysql-test/t/alter_table.test:
  Merge
mysql-test/t/outfile.test:
  Merge
sql/item_func.cc:
  Merge
sql/share/czech/errmsg.txt:
  Merge
sql/share/danish/errmsg.txt:
  Merge
sql/share/dutch/errmsg.txt:
  Merge
sql/share/english/errmsg.txt:
  Merge
sql/share/estonian/errmsg.txt:
  Merge
sql/share/french/errmsg.txt:
  Merge
sql/share/german/errmsg.txt:
  Merge
sql/share/greek/errmsg.txt:
  Merge
sql/share/hungarian/errmsg.txt:
  Merge
sql/share/italian/errmsg.txt:
  Merge
sql/share/japanese/errmsg.txt:
  Merge
sql/share/korean/errmsg.txt:
  Merge
sql/share/norwegian-ny/errmsg.txt:
  Merge
sql/share/norwegian/errmsg.txt:
  Merge
sql/share/polish/errmsg.txt:
  Merge
sql/share/portuguese/errmsg.txt:
  Merge
sql/share/romanian/errmsg.txt:
  Merge
sql/share/russian/errmsg.txt:
  Merge
sql/share/slovak/errmsg.txt:
  Merge
sql/share/spanish/errmsg.txt:
  Merge
sql/share/swedish/errmsg.txt:
  Merge
sql/share/ukrainian/errmsg.txt:
  Merge
sql/sql_table.cc:
  Merge
sql/sql_yacc.yy:
  Keep old
sql/unireg.cc:
  Merge
2005-05-14 00:01:40 +03:00
7c441dd115 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.
(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.
2005-05-13 11:11:50 +03:00
3e1dad4115 Bug#6236
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
2005-05-08 21:03:50 +01:00
ef3e9e1cff Fix 'CREATE TABLE ... LIKE ...' when lower_case_table_names
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.
2005-04-28 15:30:42 -07:00
30a82dfb7d Fix for BUG#9149 "OPTIMIZE TABLE statement on InnoDB table is logged twice in the binary log"
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).
2005-04-11 16:46:03 +02:00
f7356d7391 InnoDB: Prevent ALTER TABLE ... ENGINE=...
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
2005-04-07 12:16:41 +03:00
5f8c654a0a merged
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
2005-04-02 20:28:58 +02:00
7d865e0b12 bug#3891 - DROP TABLE many-unexistent-tables, was printing an error with %s instead of table names
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)
2005-04-02 20:13:19 +02:00
befe4fa99f Merge test and results
sql/sql_table.cc:
  Auto merged
mysql-test/r/query_cache.result:
  Update results
mysql-test/t/query_cache.test:
  Merge tests
2005-03-11 11:07:32 -08:00
8e24e6079f Flush entries from the query cache for tables used in
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.
2005-03-07 18:15:19 -08:00
3d0f9d96d7 Fixed during review of new pulled code
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)
2005-02-02 20:28:01 +02:00
4b88e07159 Bug #6607 Create table... LIKE... with Windows Symlinks
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
2005-01-31 17:24:18 -06:00
b6ad6a12a0 Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.1
into gw.mysql.r18.ru:/usr/home/ram/work/4.1.b7261


sql/sql_table.cc:
  Auto merged
2005-01-25 11:06:12 +04:00
8bdb500105 fixes/cleanups according to Coverity report 2005-01-24 15:48:25 +01:00
9f7f6ed2c9 A fix (bug #7261: Alter table loses temp table with lower_case_table_names=2). 2005-01-21 15:14:31 +04:00
b4e736b861 Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/my/mysql-4.1


sql/sql_parse.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
2005-01-10 15:28:17 +02:00
815f62223a bug#7761 - ndb does not autcommit - postreview fixes
sql/sql_table.cc:
  Move ha_enable to before new Copy, to ensure no memory is leaked
2005-01-10 11:33:08 +01:00
1409b9d7ae bug#7761 - ndb does not autocommit during alter table
sql/sql_table.cc:
  Turn off transactions before locking (as locking will need to know)
2005-01-10 11:17:01 +01:00
9bfdbc0d63 Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/my/mysql-4.1


sql/mysql_priv.h:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
2004-12-31 12:05:43 +02:00
2419fa2684 Remove DUP_IGNORE from enum_duplicates and instead use a separate ignore flag
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
2004-12-31 12:04:35 +02:00
2d9eeb04f1 sql_table.cc:
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
2004-12-27 05:03:11 +02:00
9f48eedb4e Fix for bug #6840: Default value is not checked in ALTER column SET DEFAULT 'x' 2004-12-07 14:08:56 +03:00
a1fb39e7ba Merge
sql/sql_insert.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_class.h:
  SCCS merged
2004-12-03 17:48:19 +01:00
72d5625378 Merge mysql.com:/space/bkroot/mysql-4.1
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
2004-12-03 12:15:31 +01:00
220acb328e Bug#6391 (binlog-do-db rules ignored)
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.
2004-12-03 12:13:51 +01:00
117c7611a7 Merge
BitKeeper/etc/logging_ok:
  auto-union
mysql-test/t/insert_select.test:
  Auto merged
sql/sql_class.h:
  Auto merged
mysql-test/r/insert_select.result:
  SCCS merged
sql/sql_insert.cc:
  merge changes
sql/sql_table.cc:
  e
  merge changes
2004-12-03 00:39:55 +01:00
9286d1c145 Prevent adding 'CREATE TABLE .. SELECT' query to the binary log when the
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
2004-12-03 00:05:11 +01:00
35f9ecc1ce merged on pull
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
2004-12-02 14:47:14 +02:00
93cf297fcb Cleanups during review stage
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
2004-12-02 14:43:51 +02:00
5167b5f0ce Bug #6379: ENUM values are incorrectly converted
- 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.
2004-12-02 12:48:43 +04:00
1dc1ad9c9a Bug#6252 - Duplicate columns in keys should fail
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.
2004-11-22 18:07:04 +00:00
44070705ea merge with 4.0
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
2004-11-12 11:17:53 +02:00
12fbc41f5f Fix for BUG#6522 "Replication fails due to a rolled back transaction in the binlog"
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
2004-11-10 15:07:55 +01:00
539e2130b0 Fix for bug#5551 (Version 4).
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
2004-11-03 18:23:58 +01:00
94839ddf5e merge with 4.0
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
2004-11-02 08:58:45 +02:00
33d68675f7 close table before next iteration of table proccesing in mysql_admin_table (to allow open next table) 2004-10-28 21:14:00 +03:00
dc734355e6 - Check ENUM/SET duplicate values taking in account charset/collation. 2004-10-26 10:41:14 +05:00
c461eb866e Merge mysql.com:/home/mydev/mysql-4.0
into mysql.com:/home/mydev/mysql-4.0-bug5625


sql/ha_myisam.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
2004-10-14 20:04:47 +02:00
fc27da0879 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.
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()'.
2004-10-14 20:02:56 +02:00
46b10a307f Merge bk-internal.mysql.com:/home/bk/mysql-4.1
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
2004-10-14 18:06:38 +03:00
3307318917 true,false -> TRUE, FALSE
Simple fixes/optimization of things discovered during review of new pushed code


include/my_sys.h:
  Ensure that clear_alloc_root() interacts correctly with alloc_root_inited()
mysys/hash.c:
  More comments
  Simple optimization (merge identical code)
mysys/my_bitmap.c:
  Change inline -> static inline
sql/examples/ha_archive.cc:
  Fixed compiler warning
sql/ha_ndbcluster.cc:
  true,false -> TRUE, FALSE
  Change if (false) -> #ifdef NOT_USED
sql/ha_ndbcluster.h:
  true,false -> TRUE, FALSE
sql/handler.cc:
  More comments
  Remove not needed initializations.
  #ifdef not used code
sql/item_cmpfunc.h:
  true,false -> TRUE, FALSE
sql/item_strfunc.cc:
  Move local variables to function beginning
  Remove wrong comments
sql/log_event.h:
  true,false -> TRUE, FALSE
sql/sql_base.cc:
  true,false -> TRUE, FALSE
  More comments
sql/sql_help.cc:
  true,false -> TRUE, FALSE
sql/sql_lex.cc:
  Simple optimization of new code
sql/sql_parse.cc:
  true,false -> TRUE, FALSE
sql/sql_prepare.cc:
  true,false -> TRUE, FALSE
sql/sql_table.cc:
  true,false -> TRUE, FALSE
sql/sql_yacc.yy:
  true,false -> TRUE, FALSE
2004-10-14 18:03:46 +03:00
b123f514b6 Blob support for the group_concat() function.
(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)
2004-10-10 12:10:53 +05:00
0129f32bfc Manual merge of tree containing fix for bug #5915 "ALTER TABLE behaves
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.
2004-10-07 13:51:32 +04:00
34789efd31 Fix for bug #5915 "ALTER TABLE behaves differently when converting column
to auto_increment in 4.1".
Now we are enforcing NO_AUTO_VALUE_ON_ZERO mode during ALTER TABLE only
if we are converting one auto_increment column to another auto_increment
column (this also includes most common case when we don't do anything
with such column).

Also now when we convert some column to TIMESTAMP NOT NULL column with
ALTER TABLE we convert NULL values to current timestamp, (as we do this
in INSERT). One can still get old behavior by setting system TIMESTAMP
variable to 0.


mysql-test/r/auto_increment.result:
  Added tests for ALTER TABLE converting columns containing NULL and 0
  values to AUTO_INCREMENT columns.
mysql-test/r/type_timestamp.result:
  Removed test for creation of TIMESTAMP(19) columns (it is 4.0 specific).
  Added test for ALTER TABLE converting columns containing NULL values
  to TIMESTAMP columns.
mysql-test/t/auto_increment.test:
  Added tests for ALTER TABLE converting columns containing NULL and 0
  values to AUTO_INCREMENT columns.
mysql-test/t/type_timestamp.test:
  Removed test for creation of TIMESTAMP(19) columns (it is 4.0 specific).
  Added test for ALTER TABLE converting columns containing NULL values
  to TIMESTAMP columns.
sql/field_conv.cc:
  Fix bug #5915 "ALTER TABLE behaves differently when converting column
  to auto_increment in 4.1". Also now when we are converting some column
  to TIMESTAMP column, we are converting NULL values to CURRENT_TIMESTAMP
  (as it was initially planned).
  
  do_copy_timestamp(): Fixed comment.
  do_copy_next_number(): We should also set auto_increment_field_not_null
    to FALSE if we have NULL in source field.
  Copy_field::set(): Moved setting of copy functions for TIMESTAMP and
    AUTO_INCREMENT fields to proper place (this was dead code before).
sql/sql_table.cc:
  Fix for bug #5915 "ALTER TABLE behaves differently when converting column
  to auto_increment in 4.1".
  
  Instead of always forcing NO_AUTO_VALUE_ON_ZERO in ALTER TABLE it is
  better to do this only if we are converting one auto_increment column
  to another auto_increment column (this also includes most common case
  when we don't do anything with such column).
2004-10-07 13:02:39 +04:00
96e7be58c8 After merge fixes
Some bigger code changes was necessary becasue of the multi-table-update and the new HANDLER code


include/hash.h:
  Added back function that's was used in 4.0
mysql-test/r/delete.result:
  Update results after merge
mysql-test/r/flush_table.result:
  Update results after merge
mysql-test/r/func_str.result:
  Update results after merge
mysql-test/r/handler.result:
  Update results after merge
  Change is big becasue in MySQL 4.1 you are not allowed to qualify the handler alias with a databasename
mysql-test/r/multi_update.result:
  More startup cleanups
mysql-test/r/rename.result:
  More startup-cleanups
mysql-test/r/select.result:
  More startup cleanups
mysql-test/r/show_check.result:
  More startup-cleanups
mysql-test/t/ctype_latin1_de.test:
  Cleanup
mysql-test/t/derived.test:
  Portability fix
mysql-test/t/handler.test:
  Update results after merge
  Change is big becasue in MySQL 4.1 you are not allowed to qualify the handler alias with a databasename
mysql-test/t/multi_update.test:
  More startup cleanups
mysql-test/t/range.test:
  More comments
mysql-test/t/rename.test:
  More startup cleanups
mysql-test/t/select.test:
  More startup cleanups
mysql-test/t/show_check.test:
  More startup cleanups
mysql-test/t/type_timestamp.test:
  Add back test deleted during merge
sql/item_cmpfunc.cc:
  After merge fixes
sql/item_func.cc:
  Remove compiler warning
sql/mysql_priv.h:
  After merge fixes
sql/mysqld.cc:
  After merge fixes
sql/sql_acl.cc:
  More debugging
sql/sql_base.cc:
  After merge fixes
  (This fix was needed bacause of multi-table-update reopens tables)
sql/sql_handler.cc:
  After merge fixes
sql/sql_lex.h:
  After merge fixes
sql/sql_select.cc:
  After merge fixes
sql/sql_show.cc:
  After merge fixes
sql/sql_table.cc:
  After merge fixes
  Simple cleanup of mysql_discard_or_import_tablespace
sql/sql_update.cc:
  After merge fixes
  Rework mysql_multi_update to take into account derived tables.
sql/sql_yacc.yy:
  After merge fixes
2004-10-07 10:50:13 +03:00