Added my_uuid
Added pre-support for PAGE_CHECKSUM
Added syntax for CREATE ... PAGE_CHECKSUM=# TABLE_CHECKSUM=#
Reserved place for page checksums on index, bitmap and block pages
Added index number to header of index pages
Added linked list for free directory entries (speeds up inserts with BLOCK format)
Calculate checksums in original column order (fixes bug with checksum on rows with BLOCK format)
Cleaned up all index handling to use 'info->s->keypage_header' (variable size) as the header for index pages (before this was '2')
Added 0xffffffff to end of index and block data bases and 0xfffffffe at end of bitmap pages when page checksums are not enabled
Added _ma_get_page_used() and _ma_get_used_and_node() to simplify index page header handling
rec_per_key_part is now in double precision
Reserved place in index file for my_guid and nulls_per_key_part
Give error HA_ERR_NEW_FILE if trying to open a Maria file with new, not yet supported extensions
Lots of renames to increase readability:
randomize() -> my_rnd_init()
st_maria_info -> st_maria_handler
st_maria_info -> MARIA_HA
st_maria_isaminfo -> st_maria_info
rand_struct -> my_rand_struct
rec_per_key_rows -> records_at_analyze
client/mysqladmin.cc:
rand_struct -> my_rrnd_struct
include/maria.h:
st_maria_info -> MARIA_HA
st_maria_isaminfo -> st_maria_info
Changed analyze statistics to be of double precission
Changed offset to field to be 32bits instead of 64 (safe as a record without blobs can't be that big)
include/my_base.h:
Added HA_OPTION_PAGE_CHECKSUM & HA_CREATE_PAGE_CHECKSUM
Fixed comments
Added HA_ERR_NEW_FILE
include/my_sys.h:
Added prototypes and structures for my_uuid() and my_rnd()
include/myisamchk.h:
Changed some buffers to size_t
Added possibility to have key statistics with double precission
include/mysql_com.h:
Move rand functions to mysys
libmysql/Makefile.shared:
Added my_rnd
mysql-test/r/maria.result:
Updated results
mysql-test/t/maria.test:
More tests for checksum
mysys/Makefile.am:
Added my_rnd.c and my_uuid.c
server-tools/instance-manager/listener.cc:
Fixed include order (my_global.h should always be first)
server-tools/instance-manager/mysql_connection.cc:
Fixed include order (my_global.h should always be first)
Use my_rnd_init()
server-tools/instance-manager/mysql_connection.h:
rand_struct -> my_rand_struct
sql/handler.h:
Added flag for page checksums
sql/item_func.cc:
Use new my_rnd() interface
sql/item_func.h:
Use new my_rnd() interface
sql/item_strfunc.cc:
Use new my_rnd() interface
sql/lex.h:
Added PAGE_CHECKSUM and TABLE_CHECKSUM
sql/mysql_priv.h:
Use new my_rnd() interface
sql/mysqld.cc:
Use new my_rnd() interface
sql/password.c:
Move my_rnd() to mysys
Use new my_rnd() interface
sql/sql_class.cc:
Use new my_rnd() interface
sql/sql_class.h:
Use new my_rnd() interface
sql/sql_crypt.cc:
Use new my_rnd() interface
sql/sql_crypt.h:
Use new my_rnd() interface
sql/sql_show.cc:
Simpler handling of ha_choice_values
Added PAGE_CHECKSUM
sql/sql_table.cc:
Enable correct checksum handling (for now) if not running in compatible mode
sql/sql_yacc.yy:
Added table option PAGE_CHECKSUM
Added future compatible table option TABLE_CHECKSUM (alias for CHECKSUM)
Added 'choice' target to simplify code
sql/table.cc:
Store flag for PAGE_CHECKSUM
sql/table.h:
Added support for PAGE_CHECKSUM
storage/maria/ha_maria.cc:
Remove protection for incompatbile frm and MAI
(Slow, not needed test)
Rec_per_key is now in double
Remember row type for table
Give warning if one Maria uses another row type than requested
Removed some old ASK_MONTY entries (added comments instead)
Added handling of PAGE_CHECKSUM flags
storage/maria/ma_bitmap.c:
Added page checksums to bitmap pages
Added special bitmap marker for bitmap pages
(Used to find bugs when running without page checksums)
storage/maria/ma_blockrec.c:
Added a free-link list over directory entries. This makes insert of small rows faster as we don't
have to scan the whole directory to find a not used entry.
Moved SANITY_CHECKS to maria_def.h
Simplify code by introducing dir_entry_pos()
Added support for PAGE_CHECKSUM
storage/maria/ma_blockrec.h:
Added DIR_FREE_SIZE (linked list of free directory entries)
Added PAGE_CHECKSUM
Added 'dir_entry_pos()'
storage/maria/ma_check.c:
Check that index pages has correct index number
Calculate rec_per_key with double precission
Simplify code by using '_ma_get_used_and_node()'
Check free directory list
Remove wrong end \n from messages
maria_data_on_page() -> _ma_get_page_used()
maria_putint() -> _ma_store_page_used()
rec_per_key_rows -> records_at_analyze
storage/maria/ma_checksum.c:
Calculate checksum in original column order
storage/maria/ma_create.c:
Store original column order in index file
Reserve place for nulls_per_key_part (future)
Added support for PAGE_CHECKSUM
storage/maria/ma_dbug.c:
Fixed wrong debug output of key of type 'ulong'
storage/maria/ma_delete.c:
maria_data_on_page() -> _ma_get_used_and_node()
maria_data_on_page() -> _ma_get_page_used()
maria_putint() -> _ma_store_page_used()
Added page header (index key number) to all index pages
Reserved page for checksum on index pages
Use keypage_header
storage/maria/ma_ft_update.c:
maria_putint() -> _ma_store_page_used()
Store key number at start of page
storage/maria/ma_loghandler.h:
st_maria_info -> MARIA_HA
storage/maria/ma_open.c:
rec_per_key is now in double precission
Added 'nulls_per_key_part'
Added 'extra_options' (flags for future)
Added support for PAGE_CHECKSUM
Give error HA_ERR_NEW_FILE when using unsupported maria extensions
Added comments
Add maria_uuid to index file
Added functions to store and read column_nr map.
Changed some functions to return my_bool instead of uint
storage/maria/ma_page.c:
Added checks that pages has correct key nr
Store 0xffffffff in checksum position if page checksums are not enabled
Moved key-page-delete link to take into account keypage header
storage/maria/ma_preload.c:
Remove old MyISAM dependent code
When scanning pages, only add pages to page cache for the requested index
storage/maria/ma_range.c:
maria_data_on_page() -> _ma_get_used_and_node()
Use keypage_header
storage/maria/ma_rt_index.c:
Fixed indentation
storage/maria/ma_rt_index.h:
Added support for dynamic index page header
Reserved place for PAGE_CHECKSUM
storage/maria/ma_rt_key.c:
Fixed indentation
maria_data_on_page() -> _ma_get_page_used()
maria_putint() -> maria_store_page_used()
storage/maria/ma_rt_mbr.c:
Fixed indentation
storage/maria/ma_rt_split.c:
Fixed indentation
maria_data_on_page () -> _ma_get_page_used()
storage/maria/ma_rt_test.c:
Fixed indentation
storage/maria/ma_search.c:
Remove support of using -1 as 'last used index' to _ma_check_index()
maria_data_on_page() -> _ma_get_page_used()
maria_data_on_page() -> _ma_get_used_and_node()
Use keypage_header
storage/maria/ma_sort.c:
Changed some buffers to size_t
Changed rec_per_key_part to double
storage/maria/ma_static.c:
Removed NEAR
Added maria_uuid
storage/maria/ma_test2.c:
Moevd testflag == 2 to correct place
Remove test of reading with index number -1 (not supported anymore)
storage/maria/ma_test_recovery.expected:
Updated results
storage/maria/ma_test_recovery:
Changed tmp table names so that one can run maria_chk on them
storage/maria/ma_write.c:
Fixed indentation
Use keypage_header
Store index number on index pages
maria_putint() -> _ma_store_page_used()
maria_data_on_page() -> ma_get_used_and_node()
maria_data_on_page() -> _ma_get_page_used()
Added PAGE_CHECKSUM
Added Maria handler to some functions
Removed some not needed casts
storage/maria/maria_chk.c:
Added error handling for HA_ERR_NEW_FILE
Added information about page checksums
rec_per_key_part changed to double
maria_data_on_page() -> _ma_get_page_used()
Use keypage_header
storage/maria/maria_def.h:
Added IDENTICAL_PAGES_AFTER_RECOVERY and SANITY_CHECKS
Changed rec_per_key_part to double
Added nulls_per_key_part
rec_per_key_rows -> records_at_analyze
st_maria_info -> MARIA_HA
Reserve place for new statistics variables, uuid, checksums per page etc.
Removed NEAR tags
Changed some prototypes to use my_bool and size_t
storage/maria/maria_pack.c:
st_maria_info -> MARIA_HA
Fixed indentation
storage/myisam/mi_dbug.c:
Fix wrong debug output for ULONG
mysys/my_rnd.c:
New BitKeeper file ``mysys/my_rnd.c''
mysys/my_uuid.c:
New BitKeeper file ``mysys/my_uuid.c''
Fixed bug in undo_delete
Fixed wrong error output from maria_check
include/my_base.h:
Added marker if we have null fields in table
mysql-test/r/maria.result:
checksum in maria now ignore null fields that are null
sql/sql_table.cc:
Ignore null fields that are now
(Before enabling this, we have to change MyISAM to also skip null fields)
storage/maria/ma_blockrec.c:
More logging
After merge fixes
Fixed some bugs when using undo of VARCHAR fields
Fixed bug in undo_delete (We can't use info->rec_buff here as this is used in write_block_record())
storage/maria/ma_blockrec.h:
ma_recordpos_to_dir_entry changed to return uint
storage/maria/ma_check.c:
Fixed wrong output in case of errors
storage/maria/ma_create.c:
Set share.base.pack_reclength more correct for block record
Delete support for RAID
storage/maria/ma_open.c:
Don't calculate checksum fields with value NULL
storage/maria/ma_test1.c:
Fixed output from -v for VARCHAR keys
storage/maria/ma_test_recovery.expected:
Update results after adding new printf
New checksums (because we now ignore nulls)
Some file lengths are different, but think they are ok (didn't have time to investigate)
storage/myisam/ha_myisam.cc:
Fixed comment
storage/myisam/mi_test1.c:
Fixed bug
Renamed HA_EXTRA_PREAPRE_FOR_DELETE to HA_EXTRA_PERPARE_FOR_DROP
Added HA_EXTRA_PREPARE_FOR_RENAME (as we in the code before used HA_EXTRA_PREPARE_FOR_DELETE also for renames which confused things)
Allow multiple write locks for same page by same file handle
Don't write table state if table is not changed
include/my_base.h:
Renamed HA_EXTRA_PREAPRE_FOR_DELETE to HA_EXTRA_PERPARE_FOR_DROP
Added HA_EXTRA_PREPARE_FOR_RENAME (as we in the code before used HA_EXTRA_PREPARE_FOR_DELETE also for renames which confused things)
mysql-test/r/maria.result:
More tests of things that failed in other tests
mysql-test/t/maria.test:
More tests of things that failed in other tests
sql/ha_partition.cc:
HA_EXTRA_PREPARE_FOR_DELETE -> HA_EXTRA_PREPARE_FOR_DROP
Use HA_EXTRA_PREPARE_FOR_RENAME for renames
sql/ha_partition.h:
HA_EXTRA_PREPARE_FOR_DELETE -> HA_EXTRA_PREPARE_FOR_DROP
Use HA_EXTRA_PREPARE_FOR_RENAME for renames
sql/lock.cc:
Fixed comment
sql/sql_table.cc:
Fixed wrong usage of HA_EXTRA_PREAPRE_FOR_DELETE
storage/maria/ha_maria.cc:
Added missing _ma_renable_logging_for_table() (When using with ALTER TABLE + repair index)
Enabled fast generation of index
storage/maria/ma_bitmap.c:
Fixed bug when resetting full pages when page was a tail page
storage/maria/ma_blockrec.c:
Fixed several bugs found by running *.test with maria engine:
During update we keep old changed pages locked with a write lock to be able to reuse them.
- Fixed bug with allocated but not used tail part
- Fixed bug with blob that only had tail part
- Fixed bug when update reused a page (needed multiple write locks for same page)
- Fixed bug when first extent was a tail block
storage/maria/ma_check.c:
Better error message when bitmap is destroyed
storage/maria/ma_close.c:
Only write status if file was changed.
Fixed bug when maria_chk -e file_name changed the file.
storage/maria/ma_dynrec.c:
Removed not used argument to _ma_state_info_read_dsk
storage/maria/ma_extra.c:
HA_EXTRA_PREPARE_FOR_DELETE -> HA_EXTRA_PREPARE_FOR_DROP
Use HA_EXTRA_PREPARE_FOR_RENAME for renames
Only ignore flushing of pages for DROP (not rename)
storage/maria/ma_locking.c:
Removed not used argument to _ma_state_info_read_dsk
storage/maria/ma_open.c:
Removed not used argument to _ma_state_info_read_dsk
storage/maria/ma_pagecache.c:
Allow multiple write locks for same page by same file handle
(Not yet complete, Sanja will fix)
storage/maria/ma_recovery.c:
HA_EXTRA_PREPARE_FOR_DELETE -> HA_EXTRA_PREPARE_FOR_DROP
storage/maria/maria_def.h:
Removed not used argument to _ma_state_info_read_dsk
storage/myisam/mi_extra.c:
HA_EXTRA_PREPARE_FOR_DELETE -> HA_EXTRA_PREPARE_FOR_DROP
Use HA_EXTRA_PREPARE_FOR_RENAME for renames
Only ignore flushing of pages for DROP (not rename)
storage/myisammrg/ha_myisammrg.cc:
HA_EXTRA_PREPARE_FOR_DELETE -> HA_EXTRA_PREPARE_FOR_DROP
Use HA_EXTRA_PREPARE_FOR_RENAME for renames
into a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-maria.prod
BitKeeper/etc/ignore:
auto-union
include/maria.h:
Auto merged
include/my_base.h:
Auto merged
mysql-test/include/ps_conv.inc:
Auto merged
mysql-test/r/ps_2myisam.result:
Auto merged
mysql-test/r/ps_3innodb.result:
Auto merged
mysql-test/r/ps_4heap.result:
Auto merged
mysql-test/r/ps_5merge.result:
Auto merged
mysql-test/r/ps_7ndb.result:
Auto merged
mysys/Makefile.am:
Auto merged
mysys/mf_iocache.c:
Auto merged
mysys/mf_tempfile.c:
Auto merged
mysys/my_error.c:
Auto merged
mysys/my_init.c:
Auto merged
mysys/my_open.c:
Auto merged
sql/handler.cc:
Auto merged
sql/handler.h:
Auto merged
sql/lex.h:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.cc:
Auto merged
sql/table.h:
Auto merged
storage/maria/ha_maria.cc:
Auto merged
storage/maria/ha_maria.h:
Auto merged
storage/maria/ma_bitmap.c:
Auto merged
storage/maria/ma_blockrec.h:
Auto merged
storage/maria/ma_create.c:
Auto merged
storage/maria/ma_dynrec.c:
Auto merged
storage/maria/ma_loghandler.h:
Auto merged
storage/maria/ma_loghandler_lsn.h:
Auto merged
storage/maria/ma_open.c:
Auto merged
storage/maria/ma_pagecache.c:
Auto merged
storage/maria/ma_pagecache.h:
Auto merged
storage/maria/ma_test1.c:
Auto merged
storage/maria/ma_test2.c:
Auto merged
storage/maria/ma_update.c:
Auto merged
storage/maria/maria_chk.c:
Auto merged
storage/maria/unittest/ma_test_loghandler-t.c:
Auto merged
storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
Auto merged
storage/maria/unittest/ma_test_loghandler_multithread-t.c:
Auto merged
storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
Auto merged
storage/myisam/ft_stopwords.c:
Auto merged
storage/myisam/mi_close.c:
Auto merged
support-files/compiler_warnings.supp:
Auto merged
mysys/mf_keycache.c:
Pulled from mysql-maria tree, manual merge.
mysys/my_handler.c:
Pulled from mysql-maria tree, manual merge.
mysys/my_symlink2.c:
Pulled from mysql-maria tree, manual merge.
sql/mysqld.cc:
Pulled from mysql-maria tree, manual merge.
sql/sql_table.cc:
Pulled from mysql-maria tree, manual merge.
storage/maria/ma_blockrec.c:
Pulled from mysql-maria tree, manual merge.
storage/maria/ma_check.c:
Pulled from mysql-maria tree, manual merge.
storage/maria/ma_close.c:
Pulled from mysql-maria tree, manual merge.
storage/maria/ma_loghandler.c:
Pulled from mysql-maria tree, manual merge.
storage/maria/maria_def.h:
Pulled from mysql-maria tree, manual merge.
Fixed maria_chk to repair BLOCK-ROW tables.
Added CREATE options ROW_FORMAT=PAGE & TRANSACTIONAL= 0|1
More DBUG information in a lot of functions
Some minor code cleanups
Enable handler errors earlier for better clear text error messages at handler startup / standalone usage.
Don't print NULL strings in my_create_with_symlink(); Fixes core dump when used with --debug
include/maria.h:
Added extra variables needed for REPAIR with BLOCK records
include/my_base.h:
Added argument for opening copy of maria table without a shared object
include/my_handler.h:
Prototypes for my_handler_error_register() & my_handler_error_unregister()
include/pagecache.h:
Added PAGECACHE_READ_UNKNOWN_PAGE
mysql-test/include/ps_conv.inc:
Enforce creation of table as MyISAM (to allow one to use --default-storage-engine)
mysql-test/r/maria.result:
Moved some things to maria-connect.test
Updared results as REPAIR now works
Added tests for creation option TRANSACTIONAL
mysql-test/r/ps_2myisam.result:
Enforce creation of table as MyISAM (to allow one to use --default-storage-engine)
mysql-test/r/ps_3innodb.result:
Enforce creation of table as MyISAM (to allow one to use --default-storage-engine)
mysql-test/r/ps_4heap.result:
Enforce creation of table as MyISAM (to allow one to use --default-storage-engine)
mysql-test/r/ps_5merge.result:
Enforce creation of table as MyISAM (to allow one to use --default-storage-engine)
mysql-test/r/ps_7ndb.result:
Enforce creation of table as MyISAM (to allow one to use --default-storage-engine)
mysql-test/r/ps_maria.result:
Enforce creation of table as MyISAM (to allow one to use --default-storage-engine)
mysql-test/t/maria.test:
Moved some things to maria-connect.test
Updared results as REPAIR now works
Added tests for creation option TRANSACTIONAL
mysys/mf_iocache.c:
More debugging
mysys/mf_tempfile.c:
Added missing close()
mysys/my_error.c:
init_glob_errs() is now done in my_init()
mysys/my_handler.c:
Added functions to initialize handler error messages
mysys/my_init.c:
Moevd init_glob_errs() here.
mysys/my_open.c:
More comments
More debugging
Code cleanup (join multiple code paths) and indentation fixes. No change in logic.
mysys/my_symlink2.c:
Don't print NULL strings
sql/handler.cc:
Added printing of PAGE row type
Moved out initializing of handler errors to allow handler to give better error messages at startup
sql/handler.h:
ROW_TYPE_PAGES -> ROW_TYPE_PAGE
sql/lex.h:
Added 'PAGE' and 'TRANSACTIONAL'
sql/mysqld.cc:
Initialize handler error messages early to get better error messages from handler startup
sql/sql_show.cc:
ROW_TYPE_PAGES -> ROW_TYPE_PAGE
sql/sql_table.cc:
Removed not needed initializer
sql/sql_yacc.yy:
Added CREATE options ROW_FORMAT=PAGE and TRANSACTIONAL=[0|1]
sql/table.cc:
Store transactional flag in .frm
More comments
sql-bench/example:
Better example
sql/table.h:
Added transactional table option
storage/maria/ha_maria.cc:
More debug information
Enable REPAIR
Detect usage of TRANSACTIONAL table option
storage/maria/ma_bitmap.c:
More comments (from Guilhem)
storage/maria/ma_blockrec.c:
SANITY_CHECK -> SANITY_CHECKS (fixed typo)
Write out pages on delete even if there is no rows. (Fixed problem with REPAIR)
Removed some ASSERTS to runtime checks (for better REPAIR)
Fixed bug when scanning rows
More DBUG information
storage/maria/ma_check.c:
Partial rewrite to allow REPAIR of BLOCK/PAGE format.
Repair of BLOCK format rows is for now only done with 'maria_repair()' (= repair through key cache)
The new logic to repair rows with BLOCK format is:
- Create new, unrelated MARIA_HA of the table
- Create new datafile and associate it with new handler
- Reset all statistic information in new handler
- Copy all data to new handler with normal write operations
- Move state of new handler to old handler
- Close new handler
- Close data file in old handler
- Rename old data file to new data file.
- Reopen data file in old handler
storage/maria/ma_close.c:
REmoved not needed block
storage/maria/ma_create.c:
Swap arguments to _ma_initialize_data_file()
storage/maria/ma_delete_all.c:
Split maria_delete_all_rows() to two functions to allow REPAIR to easily reset all status information.
storage/maria/ma_dynrec.c:
Added checksum argument to _ma_rec_check (multi-thread fix)
storage/maria/ma_info.c:
Indentation fix
storage/maria/ma_init.c:
Register error message to get better error message on init and when using as standalone module.
storage/maria/ma_loghandler.c:
Fixed typo that disabled some error detection by valgrind
storage/maria/ma_open.c:
Added 'calc_check_checksum()'
Don't log things during repair
Added option HA_OPEN_COPY to allow one to open a Maria table with an independent share (required by REPAIR)
storage/maria/ma_pagecache.c:
Fixed some compiler warnings
Added support for PAGECACHE_READ_UNKNOWN_PAGE (used for scanning file without knowing page types)
storage/maria/ma_test_all.sh:
More test of REPAIR
storage/maria/ma_update.c:
Optimized checksum code
storage/maria/maria_chk.c:
Use DBUG_SET_INITIAL() to get DBUG to work with --parallel-repair
Ensure we always use maria_repair() for BLOCK format (for now)
More DBUG information
storage/maria/maria_def.h:
For now, always run with more checkings (SANITY_CHECKS)
Added share->calc_check_checksum to be used with REPAIR / CHECK table.
Swaped arguments to _ma_initialize_data_file()
storage/myisam/ft_stopwords.c:
Added DBUG information
mysql-test/r/maria-connect.result:
New BitKeeper file ``mysql-test/r/maria-connect.result''
mysql-test/t/maria-connect.test:
New BitKeeper file ``mysql-test/t/maria-connect.test''
mysql-test/r/sp.result:
Auto merged
mysql-test/t/query_cache.test:
Auto merged
mysql-test/t/sp.test:
Auto merged
sql/handler.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
into chilla.local:/home/mydev/mysql-5.1-axmrg
mysql-test/r/view.result:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.cc:
Auto merged
sql/mysql_priv.h:
SCCS merged
into weblab.(none):/home/marcsql/TREE/mysql-5.1-rt-merge
mysql-test/r/trigger.result:
Auto merged
mysql-test/t/trigger.test:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/handler.cc:
Auto merged
sql/item.h:
Auto merged
sql/log.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_partition.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
into mysql.com:/d2/hf/mrg/mysql-5.1-opt
client/mysqltest.c:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
mysql-test/include/mix1.inc:
merging
mysql-test/r/innodb_mysql.result:
merging
sql/sql_select.cc:
merging
Problem: crash on attempt to open a table
having "#mysql50#" prefix in db or table name.
Fix: This prefix is reserved for "mysql_upgrade"
to access 5.0 tables whose file names are not encoded
according to "5.1 tablename to filename encoded".
Don't try open tables whose db name or table name
has this prefix.
mysql-test/r/show_check.result:
Adding test case.
mysql-test/t/show_check.test:
Adding test case.
sql/mysql_priv.h:
Moving 5.0 prefix declarations into mysql_priv.h
sql/sql_table.cc:
Moving 5.0 prefix declarations into mysql_priv.h
sql/table.cc:
Don't try to do "normal" open of tables having '#mysql50#' prefix in
db or table name. This prefix is reserved to access to unencoded
table names when upgrading from 5.0 to 5.1.
into weblab.(none):/home/marcsql/TREE/mysql-5.1-rt-merge
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/item.h:
Auto merged
sql/item_sum.cc:
Auto merged
sql/item_timefunc.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
into moonbone.local:/mnt/gentoo64/work/test-5.1-opt-mysql
mysql-test/r/view.result:
Auto merged
mysql-test/t/grant2.test:
Auto merged
mysql-test/t/view.test:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_show.cc:
Auto merged
mysql-test/r/grant2.result:
SCCS merged
mysql-test/r/information_schema.result:
SCCS merged
mysql-test/t/information_schema.test:
SCCS merged
sql/sql_table.cc:
SCCS merged
when logging is enabled.
Currently the partition engine doesn't allow log tables to
be partitioned. But this was not checked and the server crashed.
Fixed by adding a check in ALTER TABLE to disable partitioning the
log tables.
While working on the cause of the problem improved the way the log
thread structures are initialized before opening the log tables.
mysql-test/r/partition.result:
Bug #27816: test case
mysql-test/t/partition.test:
Bug #27816: test case
sql/log.cc:
Bug #27816: optional
Improved initialization of the log threads before opening
the log table.
Remedies problems that arise from open_table() et. al.
depending on a correctly initialized thd.
Prerequisite for handling partitioned log tables :
they call the parser while reading the .frm file.
sql/sql_table.cc:
Bug #27816: throw an error when paritioning the log tables :
not supported by the partition engine.
When constructing the path to the original .frm file ALTER .. RENAME
was unnecessary (and incorrectly) lowercasing the whole path when not
on a case-insensitive filesystem.
This path should not be modified because of lower_case_table_names
as it is already in the correct case according to that setting.
Fixed by removing the lowercasing.
Unfortunately testing this would require running the tests on a case
sensitive filesystem in a directory that has uppercase letters.
This cannot be guaranteed in all setups so no test case added.
sql/sql_table.cc:
Bug #28754: don't downcase the .frm path
SHOW CREATE TABLE fails
After merge fixes.
mysql-test/r/backup.result:
Fixed test result.
mysql-test/r/sp.result:
Fixed test result.
sql/sql_table.cc:
Fixed wrongly merged line. Moved "deprecated" warnings from sql_yacc.yy
to mysql_backup_tables/mysql_restore_table.
sql/sql_yacc.yy:
Moved "deprecated" warnings from sql_yacc.yy to
mysql_backup_tables/mysql_restore_table.
storage/myisam/ha_myisam.cc:
Do not report the same error twice.
storage/myisammrg/ha_myisammrg.cc:
Removed wrongly merged line.
into mysql.com:/home/svoj/devel/mysql/BUG26976/mysql-5.1-engines
mysql-test/r/key_cache.result:
Auto merged
mysql-test/r/lock.result:
Auto merged
mysql-test/r/merge.result:
Auto merged
mysql-test/r/preload.result:
Auto merged
mysql-test/r/ps.result:
Auto merged
mysql-test/r/repair.result:
Auto merged
mysql-test/r/rpl_failed_optimize.result:
Auto merged
mysql-test/r/view.result:
Auto merged
mysql-test/t/merge.test:
Auto merged
storage/myisammrg/myrg_def.h:
Auto merged
storage/myisammrg/myrg_open.c:
Auto merged
mysql-test/r/backup.result:
Use local.
mysql-test/r/sp.result:
Use local.
sql/sql_error.cc:
Use local.
sql/sql_error.h:
Use local.
sql/share/errmsg.txt:
Manual merge.
sql/sql_table.cc:
Manual merge.
storage/myisam/ha_myisam.cc:
Manual merge.
storage/myisammrg/ha_myisammrg.cc:
Manual merge.
storage/myisammrg/ha_myisammrg.h:
Manual merge.
into mysql.com:/home/svoj/devel/mysql/BUG26976/mysql-5.0-engines
mysql-test/r/ps.result:
Auto merged
mysql-test/r/sp.result:
Auto merged
mysql-test/r/view.result:
Auto merged
sql/sql_table.cc:
Auto merged
SHOW CREATE TABLE fails
Underlying table names, that merge engine fails to open were not
reported.
With this fix CHECK TABLE issued against merge table reports all
underlying table names that it fails to open. Other statements
are unaffected, that is underlying table names are not included
into error message.
This fix doesn't solve SHOW CREATE TABLE issue.
myisammrg/myrg_def.h:
Added myrg_print_wrong_table declaration.
myisammrg/myrg_open.c:
If HA_OPEN_FOR_REPAIR is passed to merge engine open function,
report names of tables that we fail to open.
mysql-test/r/backup.result:
Updated test result.
mysql-test/r/key_cache.result:
Updated test result - removed duplicate error.
mysql-test/r/lock.result:
Updated test result - added summary row.
mysql-test/r/merge.result:
A test case for BUG#26976.
mysql-test/r/preload.result:
Updated test result - removed duplicate error, added summary row.
mysql-test/r/ps.result:
Updated test result - removed duplicate error, added summary row.
mysql-test/r/repair.result:
Updated test result - removed duplicate error, added summary row.
mysql-test/r/rpl_failed_optimize.result:
Updated test result - removed duplicate error, added summary row.
mysql-test/r/sp.result:
Updated test result - removed duplicate error, added summary row.
mysql-test/r/view.result:
Updated test result - removed duplicate error, added summary row.
mysql-test/t/merge.test:
A test case for BUG#26976.
sql/ha_myisam.cc:
Do not report same error twice.
sql/ha_myisammrg.cc:
If HA_OPEN_FOR_REPAIR is passed to merge engine open function,
report names of tables that we fail to open.
Added dummy ha_myisammrg::check to not confuse users with
"not implemented" error in case all underlying tables are
fine.
sql/ha_myisammrg.h:
Added ha_myisammrg::check declaration.
sql/share/errmsg.txt:
Added ER_ADMIN_WRONG_MRG_TABLE errno. It is used instead
of ER_WRONG_MRG_TABLE in case HA_OPEN_FOR_REPAIR is
passed to merge engine handler open function.
sql/sql_error.cc:
warning_level_* are now public. It is required by mysql_admin_table to
report message level.
sql/sql_error.h:
warning_level_* are now public. It is required by mysql_admin_table to
report message level.
sql/sql_table.cc:
Reorder mysql_admin_table arguments to meet it's definition.
Report errors that are pending in thd->warn_list as results of
admin function.
into quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/jun05/51
client/mysqldump.c:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/r/innodb_mysql.result:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
into quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/jun05/50
client/mysqldump.c:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
into quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/jun05/51
client/mysqldump.c:
Auto merged
include/m_string.h:
Auto merged
include/mysql_com.h:
Auto merged
include/violite.h:
Auto merged
libmysql/libmysql.c:
Auto merged
mysql-test/include/mix1.inc:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/r/innodb_mysql.result:
Auto merged
mysql-test/r/ps.result:
Auto merged
mysql-test/t/mysqltest.test:
Auto merged
mysql-test/t/ps.test:
Auto merged
mysys/my_init.c:
Auto merged
server-tools/instance-manager/mysql_connection.cc:
Auto merged
sql/field.cc:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/net_serv.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_connect.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_repl.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql-common/client.c:
Auto merged
sql/sql_yacc.yy:
Auto merged
strings/ctype-mb.c:
Auto merged
strings/ctype-ucs2.c:
Auto merged
strings/strtod.c:
Auto merged
vio/vio_priv.h:
Auto merged
vio/viosocket.c:
Auto merged
client/mysqltest.c:
SCCS merged
include/my_global.h:
SCCS merged
sql/field.h:
SCCS merged
sql/sql_table.cc:
Manual merge
strings/ctype-bin.c:
Manual merge
into quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/jun05/50
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/t/mysqltest.test:
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/sql_yacc.yy:
Auto merged
into magare.gmz:/home/kgeorge/mysql/autopush/B28488-5.1-opt
sql/mysql_priv.h:
Auto merged
sql/sql_partition.cc:
Auto merged
sql/sql_table.cc:
Auto merged
While executing ALTER TABLE ... PARTITION the server uses
a temporary "shadow" table to create the updated table.
This shadow table then gets renamed as the original table.
The shadow table was not prefixed with the special prefix that
marks temporary tables so it was picked up by SHOW TABLE STATUS.
Fixed by isolating the code to create the shadow table name in a
separate function and prefixing the shadow table name with the
special prefix to exclude it from the list of user tables.
See bug 18775 and WL1324 for details.
mysql-test/r/partition.result:
Bug #28488: test case
mysql-test/t/partition.test:
Bug #28488: test case
sql/mysql_priv.h:
Bug #28488: prefix shadow file with the temp prefix
sql/sql_partition.cc:
Bug #28488: prefix shadow file with the temp prefix
sql/sql_table.cc:
Bug #28488: prefix shadow file with the temp prefix
into olga.mysql.com:/home/igor/mysql-5.1-opt-merge
mysql-test/r/alter_table.result:
Auto merged
mysql-test/r/create.result:
Auto merged
mysql-test/r/innodb_mysql.result:
Auto merged
mysql-test/r/sp.result:
Auto merged
mysql-test/r/user_var.result:
Auto merged
mysql-test/t/alter_table.test:
Auto merged
mysql-test/t/sp.test:
Auto merged
mysql-test/t/strict.test:
Auto merged
mysql-test/t/subselect3.test:
Auto merged
sql/field.h:
Auto merged
sql/handler.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_func.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_update.cc:
Auto merged
mysql-test/r/ps_2myisam.result:
Manual merge.
mysql-test/r/ps_3innodb.result:
Manual merge.
mysql-test/r/ps_4heap.result:
Manual merge.
mysql-test/r/ps_5merge.result:
Manual merge.
mysql-test/r/ps_7ndb.result:
Manual merge.
sql/sql_table.cc:
Manual merge.
sql/sql_view.cc:
Manual merge.
into bk-internal.mysql.com:/data0/bk/mysql-5.0-opt
mysql-test/r/sp.result:
Auto merged
mysql-test/t/sp.test:
Auto merged
mysql-test/t/strict.test:
Auto merged
mysql-test/t/subselect3.test:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/sql_view.cc:
Manual merge
To avoid unnecessary work the mysql_alter_table function takes the
list of table fields and applies all changes to it (drops/moves/renames/etc).
Then this function compares the new list and the old one. If the changes
require only .frm to be modified then the actual data isn't copied. To detect
changes all columns attributes but names are compared. When a column has been
moved and has replaced another column with the same attributes except name
the mysql_alter_table function wrongly decides that two fields has been just
renamed. As a result the data from the moved column and from all columns
after it is not copied.
Now the mysql_alter_table function forces table data copying by setting
the need_copy_table flag when it finds a moved column. The flag is set at
the stage when the modified fields are created.
sql/sql_table.cc:
Bug#28427: Columns were renamed instead of moving by ALTER TABLE.
Now the mysql_alter_table function forces table data copying by setting
the need_copy_table flag when it finds a moved column. The flag is set at
the stage when the modified fields are created.
mysql-test/r/alter_table.result:
Added a test case for the bug#28427: Columns were renamed instead of moving by ALTER TABLE.
mysql-test/t/alter_table.test:
Added a test case for the bug#28427: Columns were renamed instead of moving by ALTER TABLE.
Problem: we may create a deadlock committing changes in the mysql_alter_table() when
LOCK_open is set. Moreover, "in some variants of the ALTER TABLE commit
happens earlier, outside of LOCK_open, in other later - inside. It's no good, a storage
engine code that is called in between could expect a consistency - either there is a
transaction or there is not".
Fix: move the commit to happen earlier and outside of the LOCK_open.
mysql-test/r/innodb_mysql.result:
Fix for bug #28652: MySQL (with-debug=full) asserts when alter table operations
- test result.
mysql-test/t/innodb_mysql.test:
Fix for bug #28652: MySQL (with-debug=full) asserts when alter table operations
- test case.
sql/sql_table.cc:
Fix for bug #28652: MySQL (with-debug=full) asserts when alter table operations
- commit moved to happen earlier in the mysql_alter_table(),
now we commit changes at the same time as in case when a temporary
table is used.
The bug was repeated on MyISAM tables, so isn't InnoDB specific.
Reason of the bug is that partition-related members of TABLE_SHARE
wasn't properly updated after ALTER command. So if other thread doesn't
reread frm file, and just uses cached SHARE, it uses wrong data
sql/sql_table.cc:
Bug #28477 innodb assertion and crash during alter table to add/drop partition.
keep share members updated after table modification
sql/table.cc:
Bug #28477 innodb assertion and crash during alter table to add/drop partition.
share->partition_info_buffer_size initialization added
sql/table.h:
Bug #28477 innodb assertion and crash during alter table to add/drop partition.
partition_info_buffer_size declared in st_table_share to store
the size of the memory available for partition_info
into bodhi.(none):/opt/local/work/mysql-5.1-runtime
client/mysqlbinlog.cc:
Auto merged
include/config-win.h:
Auto merged
include/my_global.h:
Auto merged
include/my_pthread.h:
Auto merged
mysql-test/lib/mtr_report.pl:
Auto merged
mysql-test/t/disabled.def:
Auto merged
sql/event_data_objects.cc:
Auto merged
sql/event_queue.cc:
Auto merged
sql/field.h:
Auto merged
sql/filesort.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/handler.h:
Auto merged
sql/item_func.h:
Auto merged
sql/item_xmlfunc.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/log_event.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sp.h:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sp_head.h:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_db.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_list.h:
Auto merged
sql/sql_load.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_partition.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_test.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/sql_view.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
storage/heap/hp_hash.c:
Auto merged
tests/mysql_client_test.c:
Auto merged
sql/item_func.cc:
Manual merge.
sql/sp.cc:
Manual merge.
sql/sql_cache.cc:
Manual merge.
sql/sql_table.cc:
Manual merge.
strings/my_vsnprintf.c:
Manual merge.
into bk-internal.mysql.com:/data0/bk/mysql-5.1-opt
client/mysqldump.c:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/field_conv.cc:
Auto merged
sql/handler.h:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_func.h:
Auto merged
sql/item_subselect.cc:
Auto merged
sql/item_sum.cc:
Auto merged
sql/item_timefunc.cc:
Auto merged
sql/my_decimal.h:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_view.cc:
Auto merged
sql/table.cc:
Auto merged
sql/table.h:
Auto merged
strings/decimal.c:
Auto merged
sql/sql_update.cc:
Manual merge
Bug#4968 ""Stored procedure crash if cursor opened on altered table"
Bug#6895 "Prepared Statements: ALTER TABLE DROP COLUMN does nothing"
Bug#19182 "CREATE TABLE bar (m INT) SELECT n FROM foo; doesn't work from
stored procedure."
Bug#19733 "Repeated alter, or repeated create/drop, fails"
Bug#22060 "ALTER TABLE x AUTO_INCREMENT=y in SP crashes server"
Bug#24879 "Prepared Statements: CREATE TABLE (UTF8 KEY) produces a
growing key length" (this bug is not fixed in 5.0)
Re-execution of CREATE DATABASE, CREATE TABLE and ALTER TABLE
statements in stored routines or as prepared statements caused
incorrect results (and crashes in versions prior to 5.0.25).
In 5.1 the problem occured only for CREATE DATABASE, CREATE TABLE
SELECT and CREATE TABLE with INDEX/DATA DIRECTOY options).
The problem of bugs 4968, 19733, 19282 and 6895 was that functions
mysql_prepare_table, mysql_create_table and mysql_alter_table are not
re-execution friendly: during their operation they modify contents
of LEX (members create_info, alter_info, key_list, create_list),
thus making the LEX unusable for the next execution.
In particular, these functions removed processed columns and keys from
create_list, key_list and drop_list. Search the code in sql_table.cc
for drop_it.remove() and similar patterns to find evidence.
The fix is to supply to these functions a usable copy of each of the
above structures at every re-execution of an SQL statement.
To simplify memory management, LEX::key_list and LEX::create_list
were added to LEX::alter_info, a fresh copy of which is created for
every execution.
The problem of crashing bug 22060 stemmed from the fact that the above
metnioned functions were not only modifying HA_CREATE_INFO structure
in LEX, but also were changing it to point to areas in volatile memory
of the execution memory root.
The patch solves this problem by creating and using an on-stack
copy of HA_CREATE_INFO in mysql_execute_command.
Additionally, this patch splits the part of mysql_alter_table
that analizes and rewrites information from the parser into
a separate function - mysql_prepare_alter_table, in analogy with
mysql_prepare_table, which is renamed to mysql_prepare_create_table.
mysql-test/r/ps.result:
Update test results (Bug#19182, Bug#22060, Bug#4968, Bug#6895)
mysql-test/r/sp.result:
Update results (Bug#19733)
mysql-test/t/ps.test:
Add test cases for Bug#19182, Bug#22060, Bug#4968, Bug#6895
mysql-test/t/sp.test:
Add a test case for Bug#19733
sql/field.h:
Implement a deep copy constructor for create_field
sql/mysql_priv.h:
LEX::key_list and LEX::create_list were moved to LEX::alter_info.
Update declarations to use LEX::alter_info instead of these two
members.
Remove declarations of mysql_add_index, mysql_drop_index.
sql/sql_class.cc:
Implement deep copy constructors.
sql/sql_class.h:
Implement (almost) deep copy constructors for key_part_spec,
Alter_drop, Alter_column, Key, foreign_key.
Replace pair<columns, keys> with an instance of Alter_info in
select_create constructor. We create a new copy of Alter_info
each time we re-execute SELECT .. CREATE prepared statement.
sql/sql_insert.cc:
Adjust to a new signature of create_table_from_items.
sql/sql_lex.cc:
Implement Alter_info::Alter_info that would make a "deep" copy
of all definition lists (keys, columns).
Move is_partition_management() from sql_partition.cc (feature-based
file division is evil).
sql/sql_lex.h:
Move key_list and create_list to class Alter_info. Implement
Alter_info::Alter_info that can be used with PS and SP.
Get rid of Alter_info::clear() which was an attempt to save on
matches and always use Alter_info::reset().
Implement an auxiliary Alter_info::init_for_create_from_alter()
which is used in mysql_alter_table.
sql/sql_list.cc:
Implement a copy constructor of class List that makes a deep copy
of all list nodes.
sql/sql_list.h:
Implement a way to make a deep copy of all list nodes.
sql/sql_parse.cc:
Adjust to new signatures of mysql_create_table, mysql_alter_table,
select_create. Functions mysql_create_index and mysql_drop_index has
become identical after initialization of alter_info was moved to the
parser, and were merged. Flag enable_slow_log was not updated for
SQLCOM_DROP_INDEX, which was a bug.
Just like CREATE INDEX, DROP INDEX is currently done via complete
table rebuild and is rightfully a slow administrative statement.
sql/sql_partition.cc:
Move is_partition_management() to sql_lex.cc
Adjust code to the new Alter_info.
sql/sql_table.cc:
Adjust mysql_alter_table, mysql_recreate_table, mysql_create_table,
mysql_prepare_table to new signatures.
Rename mysql_prepare_table to mysql_prepare_create_table. Make
sure it follows the convention and returns FALSE for success and
TRUE for error.
Move parts of mysql_alter_table to mysql_prepare_alter_table.
Move the first invokation of mysql_prepare_table from mysql_alter_table
to compare_tables, as it was needed only for the purpose
of correct comparison.
Since now Alter_info itself is created in the runtime mem root,
adjust mysql_prepare_table to always allocate memory in the
runtime memory root.
Remove dead code.
sql/sql_yacc.yy:
LEX::key_list and LEX::create_list moved to class Alter_info
into bk-internal.mysql.com:/data0/bk/mysql-5.1-opt
BitKeeper/deleted/.del-ps_6bdb.result:
Auto merged
client/mysqldump.c:
Auto merged
mysql-test/r/mysqldump.result:
Auto merged
mysql-test/r/ps_2myisam.result:
Auto merged
mysql-test/r/ps_3innodb.result:
Auto merged
mysql-test/r/ps_4heap.result:
Auto merged
mysql-test/r/ps_5merge.result:
Auto merged
mysql-test/r/ps_7ndb.result:
Auto merged
sql/field.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/my_decimal.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_table.cc:
Auto merged
into vajra.(none):/opt/local/work/mysql-5.1-runtime
include/my_global.h:
Auto merged
mysql-test/include/mix1.inc:
Auto merged
mysql-test/r/innodb_mysql.result:
Auto merged
mysql-test/r/ps_2myisam.result:
Auto merged
mysql-test/r/ps_3innodb.result:
Auto merged
mysql-test/r/ps_4heap.result:
Auto merged
mysql-test/r/ps_5merge.result:
Auto merged
mysql-test/r/ps_7ndb.result:
Auto merged
mysql-test/r/type_date.result:
Auto merged
mysql-test/t/disabled.def:
Auto merged
mysql-test/t/type_date.test:
Auto merged
sql/filesort.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_func.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_table.cc:
Auto merged
into linux-th5m.site:/home/my/mysql-5.1-marvel
include/keycache.h:
Auto merged
include/my_sys.h:
Auto merged
mysys/my_static.c:
Auto merged
sql/handler.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_udf.cc:
Auto merged
storage/blackhole/ha_blackhole.cc:
Auto merged
storage/blackhole/ha_blackhole.h:
Auto merged
storage/myisam/ha_myisam.cc:
Auto merged
storage/myisam/mi_check.c:
Auto merged
storage/myisam/mi_preload.c:
Auto merged
mysys/mf_keycache.c:
Manual merge from main 5.1
into a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-5.1-marvel
BitKeeper/etc/ignore:
auto-union
client/mysql.cc:
Auto merged
client/mysqldump.c:
Auto merged
client/mysqltest.c:
Auto merged
extra/comp_err.c:
Auto merged
include/decimal.h:
Auto merged
include/my_getopt.h:
Auto merged
include/my_global.h:
Auto merged
include/my_sys.h:
Auto merged
include/mysql.h:
Auto merged
mysys/array.c:
Auto merged
mysys/hash.c:
Auto merged
mysys/typelib.c:
Auto merged
sql/derror.cc:
Auto merged
sql/event_data_objects.cc:
Auto merged
sql/event_queue.cc:
Auto merged
sql/field.cc:
Auto merged
sql/filesort.cc:
Auto merged
sql/ha_ndbcluster.h:
Auto merged
sql/ha_ndbcluster_binlog.cc:
Auto merged
sql/ha_partition.cc:
Auto merged
sql/ha_partition.h:
Auto merged
sql/handler.cc:
Auto merged
sql/handler.h:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_subselect.cc:
Auto merged
sql/item_sum.cc:
Auto merged
sql/item_timefunc.cc:
Auto merged
sql/item_timefunc.h:
Auto merged
sql/log.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/my_decimal.cc:
Auto merged
sql/my_decimal.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/opt_range.cc:
Auto merged
sql/opt_range.h:
Auto merged
sql/opt_sum.cc:
Auto merged
sql/protocol.cc:
Auto merged
sql/protocol.h:
Auto merged
sql/rpl_utility.h:
Auto merged
sql/slave.cc:
Auto merged
sql/sp.cc:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sp_head.h:
Auto merged
sql/sql_cache.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_connect.cc:
Auto merged
sql/sql_delete.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_load.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_partition.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_repl.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_select.h:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_trigger.cc:
Auto merged
sql/sql_union.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/sql_view.cc:
Auto merged
sql/structs.h:
Auto merged
sql/table.h:
Auto merged
sql/tztime.cc:
Auto merged
sql/unireg.cc:
Auto merged
storage/example/ha_example.cc:
Auto merged
storage/federated/ha_federated.cc:
Auto merged
storage/heap/ha_heap.cc:
Auto merged
storage/innobase/handler/ha_innodb.h:
Auto merged
storage/myisam/ha_myisam.cc:
Auto merged
storage/myisam/sort.c:
Auto merged
storage/myisammrg/ha_myisammrg.cc:
Auto merged
storage/ndb/tools/restore/consumer_restore.cpp:
Auto merged
strings/decimal.c:
Auto merged
strings/strtod.c:
Auto merged
include/hash.h:
Manual merge with 5.1 main tree.
mysys/my_getopt.c:
Manual merge with 5.1 main tree.
sql/field.h:
Manual merge with 5.1 main tree.
sql/ha_ndbcluster.cc:
Manual merge with 5.1 main tree.
sql/item_cmpfunc.h:
Manual merge with 5.1 main tree.
sql/item_create.cc:
Manual merge with 5.1 main tree.
sql/item_func.h:
Manual merge with 5.1 main tree.
sql/key.cc:
Manual merge with 5.1 main tree.
sql/lock.cc:
Manual merge with 5.1 main tree.
sql/mysqld.cc:
Manual merge with 5.1 main tree.
sql/set_var.cc:
Manual merge with 5.1 main tree.
sql/set_var.h:
Manual merge with 5.1 main tree.
sql/sql_base.cc:
Manual merge with 5.1 main tree.
sql/sql_handler.cc:
Manual merge with 5.1 main tree.
sql/sql_insert.cc:
Manual merge with 5.1 main tree.
sql/sql_plugin.cc:
Manual merge with 5.1 main tree.
sql/sql_table.cc:
Manual merge with 5.1 main tree.
sql/sql_yacc.yy:
Manual merge with 5.1 main tree.
sql/table.cc:
Manual merge with 5.1 main tree.
storage/innobase/handler/ha_innodb.cc:
Manual merge with 5.1 main tree.
storage/ndb/src/mgmsrv/InitConfigFileParser.cpp:
Manual merge with 5.1 main tree.
storage/ndb/tools/restore/restore_main.cpp:
Manual merge with 5.1 main tree.
Bug #23667 "CREATE TABLE LIKE is not isolated from alteration
by other connections"
Bug #18950 "CREATE TABLE LIKE does not obtain LOCK_open"
As well as:
Bug #25578 "CREATE TABLE LIKE does not require any privileges
on source table".
The first and the second bugs resulted in various errors and wrong
binary log order when one tried to execute concurrently CREATE TABLE LIKE
statement and DDL statements on source table or DML/DDL statements on its
target table.
The problem was caused by incomplete protection/table-locking against
concurrent statements implemented in mysql_create_like_table() routine.
We solve it by simply implementing such protection in proper way.
Most of actual work for 5.1 was already done by fix for bug 20662 and
preliminary patch changing locking in ALTER TABLE.
The third bug allowed user who didn't have any privileges on table create
its copy and therefore circumvent privilege check for SHOW CREATE TABLE.
This patch solves this problem by adding privilege check, which was missing.
Finally it also removes some duplicated code from mysql_create_like_table()
and thus fixes bug #26869 "TABLE_LIST::table_name_length inconsistent with
TABLE_LIST::table_name".
mysql-test/r/create-big.result:
Added test coverage for concurrency-related issues with CREATE TABLE LIKE.
mysql-test/r/create.result:
Adjusted error-code in the test case after refactoring code that
implements CREATE TABLE ... LIKE.
mysql-test/r/grant2.result:
Added test for bug#25578 "CREATE TABLE LIKE does not require any privileges
on source table".
mysql-test/t/create-big.test:
Added test coverage for concurrency-related issues with CREATE TABLE LIKE.
mysql-test/t/create.test:
Adjusted error-code in the test case after refactoring code that
implements CREATE TABLE ... LIKE.
mysql-test/t/disabled.def:
Recent code changes ensured that CREATE TABLE LIKE statement is properly
isolated against other statements, so synchronization.test should no
longer fail (see fix for bug 20662 and preliminary patch for bug 23667
changing ALTER TABLE locking).
mysql-test/t/grant2.test:
Added test for bug#25578 "CREATE TABLE LIKE does not require any privileges
on source table".
sql/handler.h:
Introduced new flag for HA_CREATE_INFO::options in order to be able to
distinguish CREATE TABLE ... LIKE from other types of CREATE TABLE.
sql/mysql_priv.h:
mysql_create_like_table() now takes source table name not as a
Table_ident object but as regular table list element.
sql/sql_lex.h:
Removed LEX::like_name member. Now we use special flag in
LEX::create_info::options for distinguishing CREATE TABLE ... LIKE
from other types of CREATE TABLE and store name of source table as
regular element in statement's table list.
sql/sql_parse.cc:
CREATE TABLE ... LIKE implementation now uses statement's table list
for storing information about the source table. We also use flag
in LEX::create_info.options for distinguishing it from other types
of CREATE TABLE.
Finally CREATE TABLE ... LIKE now requires the same privileges on
the source tables as SHOW CREATE TABLE. Moved this privilege check
to check_show_create_table_access() function.
sql/sql_partition.cc:
Now we use special flag in LEX::create_info::options for distinguishing
CREATE TABLE ... LIKE from other types of CREATE TABLE and store name
of source table as regular element in statement's table list.
sql/sql_table.cc:
mysql_create_like_table():
- Commented and cleaned-up a bit code which is responsible for achieving
isolation from concurrent statements. Most of actual work was done by
fix for bug 20662 and preliminary patch changing locking locking in
ALTER TABLE, so here we do minor things like relaxing locking on
source table (we don't need lock on it, to have it open is enough) and
adjusting code to make it more friendly against code implementing I_S.
- Get rid of duplicated code related to source database/table name
handling. All these operations are already done in
st_select_lex::add_table_to_list(), so we achieve the same effect
by including source table into the statement's table list.
sql/sql_yacc.yy:
Now we use special flag in LEX::create_info::options for distinguishing
CREATE TABLE ... LIKE from other types of CREATE TABLE and store name
of source table as regular element in statement's table list.
Bug #23667 "CREATE TABLE LIKE is not isolated from alteration
by other connections"
Bug #18950 "CREATE TABLE LIKE does not obtain LOCK_open"
As well as:
Bug #25578 "CREATE TABLE LIKE does not require any privileges
on source table".
The first and the second bugs resulted in various errors and wrong
binary log order when one tried to execute concurrently CREATE TABLE LIKE
statement and DDL statements on source table or DML/DDL statements on its
target table.
The problem was caused by incomplete protection/table-locking against
concurrent statements implemented in mysql_create_like_table() routine.
We solve it by simply implementing such protection in proper way (see
comment for sql_table.cc for details).
The third bug allowed user who didn't have any privileges on table create
its copy and therefore circumvent privilege check for SHOW CREATE TABLE.
This patch solves this problem by adding privilege check, which was missing.
Finally it also removes some duplicated code from mysql_create_like_table().
Note that, altough tests covering concurrency-related aspects of CREATE TABLE
LIKE behaviour will only be introduced in 5.1, they were run manually for
this patch as well.
mysql-test/r/grant2.result:
Added test for bug#25578 "CREATE TABLE LIKE does not require any privileges
on source table".
mysql-test/t/grant2.test:
Added test for bug#25578 "CREATE TABLE LIKE does not require any privileges
on source table".
sql/handler.h:
Introduced new flag for HA_CREATE_INFO::options in order to be able to
distinguish CREATE TABLE ... LIKE from other types of CREATE TABLE.
sql/mysql_priv.h:
mysql_create_like_table() now takes source table name not as a
Table_ident object but as regular table list element.
sql/sql_parse.cc:
CREATE TABLE ... LIKE implementation now uses statement's table list
for storing information about the source table. We also use flag
in LEX::create_info.options for distinguishing it from other types
of CREATE TABLE.
Finally CREATE TABLE ... LIKE now requires the same privileges on
the source tables as SHOW CREATE TABLE. Moved this privilege check
to check_show_create_table_access() function.
sql/sql_table.cc:
mysql_create_like_table():
- Provided proper protection from concurrent statements.
This is achieved by keeping name-lock on the source table and holding
LOCK_open mutex during whole operation. This gives protection against
concurrent DDL on source table. Also holding this mutex makes copying
of .frm file, call to ha_create_table() and binlogging atomic against
concurrent DML and DDL operations on target table.
- Get rid of duplicated code related to source database/table name
handling. All these operations are already done in
st_select_lex::add_table_to_list(), so we achieve the same effect
by including source table into the statement's table list.
sql/sql_yacc.yy:
Now we use special flag in LEX::create_info::options for distinguishing
CREATE TABLE ... LIKE from other types of CREATE TABLE and store name
of source table as regular element in statement's table list.
into moonbone.local:/mnt/gentoo64/work/test-5.1-opt-mysql
mysql-test/r/func_gconcat.result:
Auto merged
mysql-test/t/func_gconcat.test:
Auto merged
sql/item_sum.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/table.h:
Auto merged
mysql-test/r/alter_table.result:
Manual merge
mysql-test/t/alter_table.test:
Manual merge
sql/sql_table.cc:
Manual merge