mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 12:32:27 +01:00
8 commits
Author | SHA1 | Message | Date | |
---|---|---|---|---|
unknown
|
126c1228f5 |
Added versioning of row data
Will in future changeset (soon) av versioning of status variables (number of rows) and index Changed some LEX_STRING to LEX_CUSTRING to avoid casts and warnings Removed some not needed variables (as noticed by Guilhem) include/maria.h: Added prototypes for maria_chk_init_for_check(), maria_versioning() and maria_ignore_trids() include/my_base.h: Add new error HA_ERR_ROW_NOT_VISIBLE include/myisamchk.h: Added variables for checking visibility of rows during maria_chk include/thr_lock.h: Changed argument type from int to my_bool for get_status Added variable allow_multiple_concurrent_insert, to signal if table supports multiple concurrent inserts mysql-test/r/maria-page-checksum.result: Added missing drop table mysql-test/t/maria-page-checksum.test: Added missing drop table mysys/my_handler.c: Added new error messages mysys/thr_lock.c: Added support for multiple concurrent inserts, if table handler supports it sql/sql_yacc.yy: Added LOCK TABLE table_name WRITE CONCURRENT This was added (temporarly?) to be able to check versioning with Maria storage/csv/ha_tina.cc: Updated parameter for get_status storage/maria/ha_maria.cc: Added calls to maria_chk_init_status() Fixed call to ma_control_file_open() storage/maria/ma_blockrec.c: Changed some LEX_STRING to LEX_CUSTRING to avoid casts and warnings Changed back some 'header' parameters to const char* Removed some casts Added support for versioning: - If info->row_flag & ROW_FLAG_TRANSID is set, store transaction id together with the row - When reading rows, check if rows are visible. Give error if not - When scanning table, ignore not visible rows - Added function parameters to some functions, to be able to call _ma_compact_block_page() with different parameters depending of if the page is a HEAD or TAIL page - _ma_compact_block_page() deletes transaction id's that are visible by all running transactions - Added functions for thr_lock() to enable multiple concurrent inserts - Added helper function 'mysql_versioning()' to enable/disable versioning - Added helper function maria_ignore_trids(), used by maria_chk and maria_pack to see all rows. storage/maria/ma_blockrec.h: Updated parameters for some functions. Added new functions to read/store state with thr_lock storage/maria/ma_check.c: Enable handling of transaction id's in rows Give a readable error if a table contains a transation id that makes rows not visible storage/maria/ma_control_file.c: Added option to not give warning if control file doesn't exists. storage/maria/ma_control_file.h: Updated parameter lists for ma_control_file_open() storage/maria/ma_delete.c: Removed not used variable (suggestion by Guilhem) storage/maria/ma_locking.c: Changed type of argument from int -> my_bool storage/maria/ma_open.c: Removed not used variables 'key_write_undo_lsn' and 'key_delete_undo_lsn' Added new thr_lock interface functions for BLOCK_RECORD to enable multiple concurrent insert storage/maria/ma_test1.c: Added option --versioning (-C) to check versioning storage/maria/ma_test2.c: Added option -C to check versioning storage/maria/ma_test_recovery: Forward argumetns to ma_test_recovery.pl storage/maria/ma_write.c: Removed not used variable key_write_undo_lsn storage/maria/maria_chk.c: Always read control file (if exist) at start Initialize checking of tables by calling maria_chk_init_for_check() In verbose mode and in case of error, print max found transaction id storage/maria/maria_def.h: Added Trid to MARIA_ROW to be able to check transaction id for found row Moved 'base_length' from MARIA_ROW to MARIA_HA to be able to handle different base length (with and without TRANSID) without if's Added default row_flag to MARIA_HA for the same reason Changed LEX_STRING -> LEX_CUSTRING to avoid casts in ma_blockrec.c Removed not needed variables key_write_undo_lsn and key_delete_undo_lsn Added prototypes for new functions and fixed those that had changed storage/maria/maria_pack.c: Ensure we can read all rows from the file, independent of the used transaction id storage/maria/maria_read_log.c: Updated arguments to ma_control_file_open() storage/maria/trnman.c: If we have only one transaction, fixed that min_read_from contains current transaction Fixed that trnman_can_read_from() returns that row is readable if it was written by current transaction storage/maria/unittest/ma_control_file-t.c: Updated arguments to ma_control_file_open() storage/maria/unittest/ma_test_all-t: Added test of versioning Removed printing of one extra space storage/maria/unittest/ma_test_loghandler-t.c: Updated arguments to ma_control_file_open() storage/maria/unittest/ma_test_loghandler_first_lsn-t.c: Updated arguments to ma_control_file_open() storage/maria/unittest/ma_test_loghandler_max_lsn-t.c: Updated arguments to ma_control_file_open() storage/maria/unittest/ma_test_loghandler_multigroup-t.c: Updated arguments to ma_control_file_open() storage/maria/unittest/ma_test_loghandler_multithread-t.c: Updated arguments to ma_control_file_open() storage/maria/unittest/ma_test_loghandler_noflush-t.c: Updated arguments to ma_control_file_open() storage/maria/unittest/ma_test_loghandler_nologs-t.c: Updated arguments to ma_control_file_open() storage/maria/unittest/ma_test_loghandler_pagecache-t.c: Updated arguments to ma_control_file_open() storage/maria/unittest/ma_test_loghandler_purge-t.c: Updated arguments to ma_control_file_open() storage/maria/unittest/ma_test_recovery.expected: Updated file with result from new tests storage/maria/unittest/ma_test_recovery.pl: Added options --abort-on-error and --verbose In case of --verbose, print all excuted shell commands Added test of versioning storage/myisam/mi_locking.c: Updated type of parameter storage/myisam/myisamdef.h: Updated type of parameter mysql-test/r/maria-mvcc.result: New BitKeeper file ``mysql-test/r/maria-mvcc.result'' mysql-test/t/maria-mvcc.test: New BitKeeper file ``mysql-test/t/maria-mvcc.test'' |
||
unknown
|
722a8ebe5b |
Store maximum transaction id into control file at clean shutdown.
This can serve to maria_chk to check that trids found in rows and keys are not too big. Also used by Recovery when logs are lost. Options --require-control-file, --datadir, --log-dir (yes, the dashes are inconsistent but I imitated mysqld --datadir and --maria-log-dir) for maria_chk. Lock control file _before_ reading its content. storage/maria/ha_maria.cc: new prototype storage/maria/ma_check.c: A function to find the max trid in the system (consults transaction manager and control file), to check tables. storage/maria/ma_checkpoint.c: new prototype storage/maria/ma_control_file.c: Store max trid into control file, in a backward-compatible way (can still read old control files). Parameter to ma_control_file_open(), to not create the log if it's missing (maria_chk needs that). Lock control file _before_ reading its content. Fix for a segfault when reading an old control file (bzero() with a negative second argument) storage/maria/ma_control_file.h: changes to the control file module's API storage/maria/ma_init.c: When Maria shuts down cleanly, store max trid into control file. storage/maria/ma_loghandler.c: new prototype storage/maria/ma_recovery.c: During recovery, consult max trid stored in control file, in case it is bigger than what we found in log (case of logs manually removed by user). storage/maria/ma_test1.c: new prototype storage/maria/ma_test2.c: new prototype storage/maria/maria_chk.c: New option --require-control-file (abort if control file not found), --datadir (path for control file (and for logs if --log-dir not specified)), --log-dir (path for logs). Try to open control file when maria_chk starts. storage/maria/maria_read_log.c: new prototype storage/maria/trnman.c: A new function to know max trid in transaction manager storage/maria/trnman_public.h: New function storage/maria/unittest/ma_control_file-t.c: new prototypes. Testing storing and retrieving the max trid to/from control file storage/maria/unittest/ma_test_loghandler-t.c: new prototype storage/maria/unittest/ma_test_loghandler_first_lsn-t.c: new prototype storage/maria/unittest/ma_test_loghandler_max_lsn-t.c: new prototype storage/maria/unittest/ma_test_loghandler_multigroup-t.c: new prototype storage/maria/unittest/ma_test_loghandler_multithread-t.c: new prototype storage/maria/unittest/ma_test_loghandler_noflush-t.c: new prototype storage/maria/unittest/ma_test_loghandler_nologs-t.c: new prototype storage/maria/unittest/ma_test_loghandler_pagecache-t.c: new prototype storage/maria/unittest/ma_test_loghandler_purge-t.c: new prototype |
||
unknown
|
f094eff1d9 |
Injecting more "const" declarations into code which does not change
pointed data. I ran gcc -Wcast-qual on storage/maria, this identified un-needed casts, a couple of functions which said they had a const parameter though they changed the pointed content! This is fixed here. Some suspicious places receive a comment. The original intention of running -Wcast-qual was to find what code changes R-tree keys: I added const words, but hidden casts like those of int2store (casts target to (uint16*)) removed const checking; -Wcast-qual helped find those hidden casts. Log handler does not change the content pointed by LEX_STRING::str it receives, so we now use a struct which has a const inside, to emphasize this and be able to pass "const uchar*" buffers to log handler without fear of their content being changed by it. One-line fix for a merge glitch (when merging from MyISAM). include/m_string.h: As Maria's log handler uses LEX_STRING but never changes the content pointed by LEX_STRING::str, and assigns uchar* into this member most of the time, we introduce a new struct LEX_CUSTRING (C const U unsigned) for the log handler. include/my_global.h: In macros which read pointed content: use const pointers so that gcc -Wcast-qual does not warn about casting a const pointer to non-const. include/my_handler.h: In macros which read pointed content: use const pointers so that gcc -Wcast-qual does not warn about casting a const pointer to non-const. ha_find_null() does not change *a. include/my_sys.h: insert_dynamic() does not change *element. include/myisampack.h: In macros which read pointed content: use const pointers so that gcc -Wcast-qual does not warn about casting a const pointer to non-const. mysys/array.c: insert_dynamic() does not change *element mysys/my_handler.c: ha_find_null() does not change *a storage/maria/ma_bitmap.c: Log handler receives const strings now storage/maria/ma_blockrec.c: Log handler receives const strings now. _ma_apply_undo_row_delete/update() do change *header. storage/maria/ma_blockrec.h: correct prototype storage/maria/ma_check.c: Log handler receives const strings now. Un-needed casts storage/maria/ma_checkpoint.c: Log handler receives const strings now storage/maria/ma_checksum.c: unneeded cast storage/maria/ma_commit.c: Log handler receives const strings now storage/maria/ma_create.c: Log handler receives const strings now storage/maria/ma_dbug.c: fixing warning of gcc -Wcast-qual storage/maria/ma_delete.c: Log handler receives const strings now storage/maria/ma_delete_all.c: Log handler receives const strings now storage/maria/ma_delete_table.c: Log handler receives const strings now storage/maria/ma_dynrec.c: fixing some warnings of gcc -Wcast-qual. Unneeded casts removed. Comment about function which lies. storage/maria/ma_ft_parser.c: fix for warnings of gcc -Wcast-qual, removing unneeded casts storage/maria/ma_ft_update.c: less casts, comment storage/maria/ma_key.c: less casts, stay const (warnings of gcc -Wcast-qual) storage/maria/ma_key_recover.c: Log handler receives const strings now storage/maria/ma_loghandler.c: Log handler receives const strings now storage/maria/ma_loghandler.h: Log handler receives const strings now storage/maria/ma_loghandler_lsn.h: In macros which read pointed content: use const pointers so that gcc -Wcast-qual does not warn about casting a const pointer to non-const. storage/maria/ma_page.c: Log handler receives const strings now; more const storage/maria/ma_recovery.c: Log handler receives const strings now storage/maria/ma_rename.c: Log handler receives const strings now storage/maria/ma_rt_index.c: more const, to emphasize that functions don't change pointed content. best_key= NULL was forgotten during merge from MyISAM a few days ago, was causing a Valgrind warning storage/maria/ma_rt_index.h: new proto storage/maria/ma_rt_key.c: more const storage/maria/ma_rt_key.h: new proto storage/maria/ma_rt_mbr.c: more const for functions which deserve it storage/maria/ma_rt_mbr.h: new prototype storage/maria/ma_rt_split.c: make const what is not changed. storage/maria/ma_search.c: un-needed casts, more const storage/maria/ma_sp_key.c: more const storage/maria/ma_unique.c: un-needed casts. storage/maria/ma_write.c: Log handler receives const strings now storage/maria/maria_def.h: some more const storage/maria/unittest/ma_test_loghandler-t.c: Log handler receives const strings now storage/maria/unittest/ma_test_loghandler_first_lsn-t.c: Log handler receives const strings now storage/maria/unittest/ma_test_loghandler_max_lsn-t.c: Log handler receives const strings now storage/maria/unittest/ma_test_loghandler_multigroup-t.c: Log handler receives const strings now storage/maria/unittest/ma_test_loghandler_multithread-t.c: Log handler receives const strings now storage/maria/unittest/ma_test_loghandler_noflush-t.c: Log handler receives const strings now storage/maria/unittest/ma_test_loghandler_nologs-t.c: Log handler receives const strings now storage/maria/unittest/ma_test_loghandler_pagecache-t.c: Log handler receives const strings now storage/maria/unittest/ma_test_loghandler_purge-t.c: Log handler receives const strings now |
||
unknown
|
ea3ae3c470 |
copyright and license info
storage/maria/Makefile.am: copyright storage/maria/ma_pagecache.c: copyright storage/maria/ma_pagecache.h: copyright storage/maria/ma_pagecaches.c: copyright storage/maria/ma_pagecrc.c: copyright storage/maria/unittest/Makefile.am: copyright storage/maria/unittest/lockman-t.c: copyright storage/maria/unittest/lockman1-t.c: copyright storage/maria/unittest/lockman2-t.c: copyright storage/maria/unittest/ma_control_file-t.c: copyright storage/maria/unittest/ma_loghandler_examples.c: copyright storage/maria/unittest/ma_maria_log_cleanup.c: copyright storage/maria/unittest/ma_pagecache_consist.c: copyright storage/maria/unittest/ma_pagecache_rwconsist.c: copyright storage/maria/unittest/ma_pagecache_single.c: copyright storage/maria/unittest/ma_test_loghandler-t.c: copyright storage/maria/unittest/ma_test_loghandler_first_lsn-t.c: copyright storage/maria/unittest/ma_test_loghandler_max_lsn-t.c: copyright storage/maria/unittest/ma_test_loghandler_multigroup-t.c: copyright storage/maria/unittest/ma_test_loghandler_multithread-t.c: copyright storage/maria/unittest/ma_test_loghandler_noflush-t.c: copyright storage/maria/unittest/ma_test_loghandler_nologs-t.c: copyright storage/maria/unittest/ma_test_loghandler_pagecache-t.c: copyright storage/maria/unittest/ma_test_loghandler_purge-t.c: copyright storage/maria/unittest/test_file.c: copyright storage/maria/unittest/test_file.h: copyright storage/maria/unittest/trnman-t.c: copyright |
||
unknown
|
dc36524546 |
Compiler warnings fixed.
storage/maria/ma_loghandler.c: Compiler warning fixed. storage/maria/ma_test1.c: Compiler warning fixed. storage/maria/ma_test2.c: Compiler warning fixed. storage/maria/maria_chk.c: Compiler warning fixed. storage/maria/unittest/ma_control_file-t.c: Compiler warning fixed. storage/maria/unittest/ma_test_loghandler-t.c: Compiler warning fixed. storage/maria/unittest/ma_test_loghandler_first_lsn-t.c: Compiler warning fixed. storage/maria/unittest/ma_test_loghandler_max_lsn-t.c: Compiler warning fixed. storage/maria/unittest/ma_test_loghandler_multigroup-t.c: Compiler warning fixed. storage/maria/unittest/ma_test_loghandler_multithread-t.c: Compiler warning fixed. storage/maria/unittest/ma_test_loghandler_noflush-t.c: Compiler warning fixed. storage/maria/unittest/ma_test_loghandler_nologs-t.c: Compiler warning fixed. storage/maria/unittest/ma_test_loghandler_pagecache-t.c: Compiler warning fixed. storage/maria/unittest/ma_test_loghandler_purge-t.c: Compiler warning fixed. |
||
unknown
|
c719e1fd33 |
Added wrapper for chmod(): my_chmod()
Automaticly disable ma_test_recovery if not compiled with debugging. This fixes that make test works in Maria. Fixed wrong merge of ma_init.c from 5.1 Portability fixes: - Use my_chmod() instead of my_chmod() - Use my_access() instead of my_stat() to test if file exists - Don't test result value of pthread_mutex_lock() and pthread_mutex_unlock() as this is not portable - No reason to test if file exists before we delete it include/my_sys.h: Added my_chmod include/mysys_err.h: Added error for my_chmod mysys/Makefile.am: Added my_chmod mysys/errors.c: Added error for my_chmod mysys/my_init.c: Syncronize with 5.1 to fix setting of QueryPerformanceFrequency() storage/maria/ma_test1.c: Changed short option of --skip-delete and --skip-update to be more logical storage/maria/ma_test_recovery.expected: Updated results after adding more tests storage/maria/ma_test_recovery: Abort test nicely if we are runnning without debugging Added more tests Changed temporary file names so that one can run maria_chk on them Removed some old comments storage/maria/maria_read_log.c: Added note if maria_read_log will not be able to create byte-to-byte identical tables compared to normal execution storage/maria/unittest/ma_pagecache_consist.c: Removed wrong setting of buff that caused memory overwrite Use my_chmod() instead of chmod() Don't test result value of pthread_mutex_lock() and pthread_mutex_unlock() as this is not portable storage/maria/unittest/ma_pagecache_single.c: Use my_chmod() instead of chmod() Don't test result value of pthread_mutex_lock() and pthread_mutex_unlock() as this is not portable storage/maria/unittest/ma_test_loghandler_first_lsn-t.c: No reason to test if file exists before we delete it storage/maria/unittest/ma_test_loghandler_multithread-t.c: Don't test result value of pthread_mutex_lock() and pthread_mutex_unlock() as this is not portable storage/maria/unittest/ma_test_loghandler_noflush-t.c: No reason to test if file exists before we delete it storage/maria/unittest/ma_test_loghandler_nologs-t.c: Use my_access() instead of my_stat() to test if file exists storage/maria/unittest/ma_test_loghandler_pagecache-t.c: No reason to test if file exists before we delete it chmod -> my_chmod mysys/my_chmod.c: Added wrapper for chmod() |
||
unknown
|
098916f571 |
Parameter added to the log initializer to suppress unwanted
error messages during unit tests. |
||
unknown
|
79e40ef6e4 |
test of removing logs.
storage/maria/unittest/ma_test_loghandler_nologs-t.c: New BitKeeper file ``storage/maria/unittest/ma_test_loghandler_nologs-t.c'' |