Commit graph

938 commits

Author SHA1 Message Date
vasil
dfe8f574bf branches/zip:
Fix comment: sync variable name in comment with the actual variable name.
2007-11-07 16:17:52 +00:00
vasil
faf929ebde branches/zip:
Add mysql_addons.(cc|h) to Makefile.am, forgotten in r2072.

Pointyhat to:	Vasil
2007-11-07 16:06:29 +00:00
marko
751934dd85 branches/zip: Improve Valgrind instrumentation.
page_zip_get_trailer_len(), page_zip_write_header(): Correct the
UNIV_MEM_ASSERT_RW() assertions.

page_zip_validate(): Read the validity bits of page, page_zip, and
page_zip->data.
2007-11-07 15:58:39 +00:00
marko
9df6587659 branches/zip: Improve Valgrind instrumentation.
page_zip_decompress(): Assert that the uncompressed page is completely defined.

page_zip_validate(): Assert that the compressed and uncompressed pages are
completely defined.  Fetch the "valid" bits, so that they can be examined
when run under valgrind --db-attach=yes.
2007-11-07 14:14:47 +00:00
vasil
83f470987f branches/zip:
Introduce a generic soultion to the common problem that MySQL do not add
functions needed by us in a reasonable time.

Start with a function that retrieves THD::thread_id, this is needed for
the information_schema.innodb_trx.mysql_thread_id column.

Approved by:	Marko
2007-11-07 14:14:33 +00:00
marko
bc6db1bc4b branches/zip: row_insert_for_mysql(), row_update_for_mysql(),
row_prebuilt_free(): Add UNIV_UNLIKELY hints around tests for
ROW_PREBUILT_OBSOLETE and some other tests.
2007-11-07 13:52:52 +00:00
marko
b11ac47356 branches/zip: page_zip_apply_log(): Write the status bits of the record
before invoking rec_get_offsets().
2007-11-07 13:50:53 +00:00
marko
fe48c3662a branches/zip: Return a meaningful error message when refusing to create
a compressed table in the system tablespace.

db0err.h: Introduce the error code DB_TABLE_ZIP_NO_IBD.  Replace the
#define directives with an enum, to ease future code merges.  These
error codes are never written out to files or displayed to the user.
Thus they need not remain constant.

dict_build_table_def_step(): Return DB_TABLE_ZIP_NO_IBD instead of DB_ERROR.

create_table_def(): Report ER_ILLEGAL_HA_CREATE_OPTION "KEY_BLOCK_SIZE"
when the table creation fails with DB_TABLE_ZIP_NO_IBD.
2007-11-07 11:03:13 +00:00
marko
789165e2c7 branches/zip: Deny non-superuser access to the INFORMATION_SCHEMA
tables INNODB_ZIP and INNODB_ZIP_RESET.
2007-11-07 08:44:07 +00:00
vasil
5479d85dbf branches/zip:
Bugfix: In row_raw_format() - fix the return value when printing in
hex; do not forget to count the 2 extra characters "0x" that we wrote
at the beginning of the output.
2007-11-06 16:39:51 +00:00
vasil
c48c0f89bb branches/zip:
Deny access to TRX INFORMATION_SCHEMA tables to non-superusers.

Approved by:	Marko
2007-11-05 14:17:07 +00:00
marko
b84e490fbe branches/zip: btr_cur_pessimistic_update(): After btr_cur_pessimistic_insert(),
update page_zip, because rec may be on a different page.
2007-11-05 14:08:18 +00:00
marko
ce8e480283 branches/zip: btr_free_externally_stored_field(): Clear rec_zip_size when
rec == NULL.
2007-11-05 13:14:11 +00:00
marko
533ce56da1 branches/zip: page_zip_compress(): Do not call deflate(&c_stream, Z_FULL_FLUSH)
unless more than 6 bytes are available for the output.  This should remove
the possibility that deflate() returns Z_OK without consuming all input.
2007-11-05 12:12:28 +00:00
marko
7aedcf308e branches/zip: buf_page_get_gen(): Ignore "guess" if it does not point to
buf_pool->chunks[]->blocks[].

buf_block_is_uncompressed(): New function, to detect if a block points to
buf_pool->chunks[]->blocks[].
2007-11-05 10:31:41 +00:00
marko
3fce4dc28a branches/zip: buf_page_hash_get(): Fix a debug assertion that was
accidentally negated in r2043.
2007-11-05 10:17:38 +00:00
marko
fb2ff70b74 branches/zip: trx_rollback_or_clean_all_recovered(): Acquire the
kernel_mutex in the beginning of each loop, as was the case until r2040.
The bug was spotted by Heikki.
2007-11-02 12:53:06 +00:00
marko
f3fc38d830 branches/zip: sync0sync.h: Define mutex_free as mutex0_free, because symbols
defined in innodb_redefine.h must not be undefined.  After this change,
innodb_redefine.h will define mutex0_free instead of mutex_free, and
everything is fine.
2007-11-01 20:36:51 +00:00
marko
17fc32fb51 branches/zip: Allow the symbols in the dynamic InnoDB plugin to be
redefined so that the dynamic plugin can replace the builtin InnoDB
in MySQL 5.1.

ha_innodb.cc, handler0alter.cc: #include "univ.i" before any other InnoDB
header files or before defining any symbols

innodb_redefine.h: New file, to contain a mapping of symbols.  The idea
is that this file will be replaced in the build process; because this
is a large file that can be generated automatically, it does not make sense
to keep it under version control.

univ.i: #include "innodb_redefine.h" and #define ha_innobase ha_innodb

Makefile.am (ha_innodb_la_CXXFLAGS): Remove -Dha_innobase=ha_innodb

NOTE: there are still some issues in the source code.  One known issue is
the #undef mutex_free in sync0sync.h, which will cause the plugin to call the
function mutex_free in the builtin InnoDB.  The preprocessor symbols defined
in innodb_redefine.h must not be undefined or redefined anywhere in the code.
2007-11-01 15:00:44 +00:00
marko
3037cca095 branches/zip: Remove the parameter innodb_dynamic, and always call the
plugin "InnoDB", not "InnoDBzip".

We can disable the builtin InnoDB by mysqld --skip-innodb.  If the
builtin InnoDB is not disabled, installing the InnoDB plugin by the same
name will not work.

innodb_plugin_init(): Ignore differences in the PLUGIN_VAR_READONLY flag.
2007-11-01 13:25:48 +00:00
marko
2dbf0fdacb branches/zip: Remove warnings for BUILD/compile-... --warning-mode=pedantic.
ha_innobase::write_row(): The printf format %p expects const void*.

STRUCT_FLD: Do not use the GCC extension when __STRICT_ANSI__ is defined.

row_merge_read_clustered_index(): Compound initializers must not contain
variables.  Assign to struct fields instead.
2007-11-01 11:44:49 +00:00
marko
bcd672cae7 branches/zip: buf_page_init_low(): Initialize also flush_type. 2007-10-31 22:02:23 +00:00
marko
d81da4628e branches/zip: page_zip_compress(): Flag the compressed stream completely
initialized, although Valgrind believes that some bits in the 7th or 8th
bytes from the end are uninitialized.  (They might be, but the decompressor
should not care about those bits after encountering the end-of-stream marker
in the compressed bit stream.)
2007-10-31 20:49:16 +00:00
marko
f4b87b445c branches/zip: Check that page_zip->data is defined, not page_zip itself. 2007-10-31 16:14:18 +00:00
marko
6b2c92e19c branches/zip: Improve Valgrind instrumentation.
btr_cur_optimistic_insert(): On compressed tablespaces, check that both
the compressed and the uncompressed page are completely initialized in
the beginning of the function.

page_zip_compress(): After successful compression, check that the compressed
page is completely initialized.
2007-10-31 14:27:59 +00:00
marko
0a0f17207f branches/zip: Add some more Valgrind instrumentation.
page_zip_write_rec(), page_zip_write_blob_ptr(), page_zip_write_node_ptr(),
page_zip_write_trx_id_and_roll_ptr(), page_zip_clear_rec(),
page_zip_rec_set_deleted(), page_zip_rec_set_owned(), page_zip_dir_insert(),
page_zip_dir_delete(), page_zip_dir_add_slot(), page_zip_reorganize(),
page_zip_copy(), page_zip_get_trailer_len(), page_zip_write_header():
Assert that the complete contents of the compressed page is defined.
2007-10-31 13:19:38 +00:00
marko
aebd74e232 branches/zip: Improve Valgrind instrumentation.
page_zip_compress(): Assert that the contents of the uncompressed page
is entirely initialized.

page_zip_decompress(): Assert that the contents of the compressed page
is entirely initialized.  Assert that the uncompressed page is entirely
writeable.  Flag the uncompressed page uninitialized in the beginning.
2007-10-31 12:42:38 +00:00
marko
a2d23f497c branches/zip: buf_block_align(): Add missing type conversion. 2007-10-31 12:23:03 +00:00
marko
5b0a510222 branches/zip: Correct the Valgrind instrumentation of r2041.
Use UNIV_MEM_ASSERT_RW() instead of UNIV_MEM_VALID().  The latter
flags memory defined; the former checks that it is defined.
2007-10-31 10:44:15 +00:00
marko
e00f417abb branches/zip: buf_LRU_block_remove_hashed_page(): Add some Valgrind
instrumentation.
2007-10-31 10:40:41 +00:00
marko
d321ea1141 branches/zip: buf_buddy_relocate(): The src block may be partially freed.
Remove the Valgrind check about it.
2007-10-31 10:40:09 +00:00
marko
2d77ed4f40 branches/zip: Improve Valgrind instrumentation.
buf_buddy_relocate(): Allow the source block to contain uninitialized data.

buf0buddy.c: Replace the remaining VALGRIND_CHECK_ macros with the wrappers
defined in univ.i.
2007-10-31 09:00:08 +00:00
marko
7319444c08 branches/zip: Improve Valgrind instrumentation.
buf_LRU_free_block(): Check that the block descriptor contains valid data.

buf_buddy_relocate(): Check that the source block contains valid data.

buf_page_get_gen(): Do not dereference bpage after calling buf_relocate().
This avoids a bogus Valgrind warning; the memory itself was valid.

buf_page_hash_get(): Check that the returned block descriptor contains
valid data.
2007-10-30 09:27:09 +00:00
marko
8b6467ce0d branches/zip: trx_rollback_or_clean_all_without_sess(): Rename to
trx_rollback_or_clean_all_recovered().
2007-10-30 08:25:01 +00:00
marko
261a999b51 branches/zip: page0zip.c: Add some Valgrind instrumentation. 2007-10-30 08:19:48 +00:00
marko
6807b7731f branches/zip: trx_rollback_or_clean_all_without_sess(): Distinguish
recovered transactions from new ones.  Until r1594, they were distinguished
by trx->sess == NULL.

trx_t: Add the bitfield is_recovered.

trx_lists_init_at_db_start(): Set trx->is_recovered.

trx_create(): Initialize trx->is_recovered = 0.

trx_print(): Display information about trx->is_recovered.

trx_rollback_or_clean_all_without_sess(): Skip new transactions.
Protect all accesses of trx_sys->trx_list with kernel_mutex.

trx_roll_crash_recv_trx, trx_roll_max_undo_no, trx_roll_progress_printed_pct:
Made these variables static.
2007-10-29 15:32:19 +00:00
marko
17bb043ad3 branches/zip: row_merge_drop_temp_indexes(): Use COMMIT WORK instead of
trx_commit_for_mysql().
2007-10-29 15:25:46 +00:00
marko
8085e89f07 branches/zip: buf_block_get_frame(): Add missing parenthesis. 2007-10-29 14:03:57 +00:00
vasil
e8de094a3f branches/zip:
Add innodb_locks.lock_data column and some relevant tests.
For record locks this column represents the ordering fields of the
locked row in a human readable, SQL-valid, format.

Approved by:	Marko
2007-10-29 13:03:53 +00:00
marko
c8bbe754b9 branches/zip: Minor performance tuning based on measurement data
on mispredicted branches: opcontrol --event=BR_CND_MISSP_EXEC:45000

UT_SORT_FUNCTION_BODY(): Copy the array with memcpy(3).

cmp_dtuple_rec_with_match(), cmp_rec_rec_with_match(),
cmp_debug_dtuple_rec_with_match(): Add UNIV_UNLIKELY hints around
tests for REC_INFO_MIN_REC_FLAG.
2007-10-26 14:05:54 +00:00
marko
ada2f71ab7 branches/zip: Reduce WAIT_FOR_READ from 20 to 5 milliseconds, to correspond
to the time in which modern disks can serve a random disk read.
2007-10-26 12:34:53 +00:00
marko
021fea8f15 branches/zip: Add UNIV_UNLIKELY hints to help branch prediction. 2007-10-26 12:31:48 +00:00
marko
a4b26c4ffb branches/zip: buf_pool_t: Add n_pend_unzip. Display it in buf_print(). 2007-10-26 08:53:36 +00:00
marko
1890ec59c7 branches/zip: buf_page_get_gen(): Improve the comments about
wait_until_unfixed.
2007-10-26 08:48:01 +00:00
marko
aa8c8329f2 branches/zip: buf_pool_init(): Allocate buf_pool with mem_zalloc(). 2007-10-25 12:54:18 +00:00
marko
a14eb7445c branches/zip: buf_page_get_gen(): Reinitialize guess when re-entering the loop. 2007-10-25 12:51:18 +00:00
vasil
0165c06623 branches/zip:
Change mach_read_int_type() to return an integer type (ullint) instead
of array of bytes that later needs to be converted to an appropriate
integer type.

Approved by:	Sunny
2007-10-25 11:45:11 +00:00
vasil
976c562f81 branches/zip:
Make lock_get_type_str() to also indicate if it is a gap lock.
 
Suggested by:	Heikki
Approved by:	Marko
2007-10-25 11:21:11 +00:00
marko
dd7f702117 branches/zip: Add the function dtype_is_utf8(). 2007-10-25 07:19:43 +00:00
marko
bde9d122ad branches/zip: Minor cleanup.
log_block_calc_checksum(), log_block_get_checksum(): Add const qualifiers.

log_block_calc_checksum(): Split a long expression to more readable chunks.
Some compilers might optimize this better.
2007-10-25 07:07:25 +00:00