diff options
author | unknown <aivanov@mysql.com> | 2006-03-29 23:04:32 +0400 |
---|---|---|
committer | unknown <aivanov@mysql.com> | 2006-03-29 23:04:32 +0400 |
commit | 397c163f0ec37a5f60acd5512307b04dafc78ad5 (patch) | |
tree | 78b7b5f8fe975f9280333421e9b343ff4cf20588 /innobase/btr/btr0cur.c | |
parent | bdd22b16ca9403b7c2e0d50e9ec6ab41847ade52 (diff) | |
download | mariadb-git-397c163f0ec37a5f60acd5512307b04dafc78ad5.tar.gz |
Applied innodb-5.0-ss368 snapshot
Fixed bugs:
#16814: SHOW INNODB STATUS format error in LATEST FOREIGN KEY ERROR section
dict_foreign_key_error_report(): Always print a newline after invoking
dict_print_info_on_foreign_key_in_create_format().
#16827: Better InnoDB error message if ibdata files omitted from my.cnf.
#17126: CHECK TABLE on InnoDB causes a short hang during check of adaptive hash.
CHECK TABLE blocking other queries, by releasing the btr_search_latch
periodically during the adaptive hash table validation.
#17405: Valgrind: conditional jump or move depends on uninitialised valuesw.
buf_block_init(): Reset magic_n, buf_fix_count, and io_fix to avoid testing
uninitialised variables.
#18077: InnoDB uses full explicit table locks in stored FUNCTION.
#18238: When locks exhaust the buffer pool, InnoDB does not roll back the trx.
Check in pessimistic insert and update if the buffer pool is exhausted by locks.
#18252: Disk space leaks in updates of InnoDB BLOB rows.
btr_cur_pessimistic_update(): Invoke rec_get_offset() after rec_set_field_extern_bits().
btr_store_big_rec_extern_fields(): Note that offsets will no longer be valid
after calling this function.
#18283: When InnoDB returns error 'lock table full', MySQL can write to binlog too much.
#18384: InnoDB memory leak on duplicate key errors if row has many columns.
row_ins_duplicate_error_in_clust(): Call mem_heap_free(heap) at func_exit if needed.
#18350: Use consistent read in CREATE ... SELECT .. if innodb_locks_unsafe_for_binlog is used.
innobase/btr/btr0cur.c:
Applied innodb-5.0-ss368 snapshot
innobase/btr/btr0sea.c:
Applied innodb-5.0-ss368 snapshot
innobase/buf/buf0buf.c:
Applied innodb-5.0-ss368 snapshot
innobase/buf/buf0lru.c:
Applied innodb-5.0-ss368 snapshot
innobase/data/data0type.c:
Applied innodb-5.0-ss368 snapshot
dtype_print(): Fix printing of prtype.
innobase/dict/dict0dict.c:
Applied innodb-5.0-ss368 snapshot
innobase/fil/fil0fil.c:
Applied innodb-5.0-ss368 snapshot
fil_extend_space_to_desired_size(): in UNIV_HOTBACKUP builds,
do not touch srv_data_file_sizes[] or srv_n_data_files.
innobase/ha/ha0ha.c:
Applied innodb-5.0-ss368 snapshot
innobase/include/btr0cur.h:
Applied innodb-5.0-ss368 snapshot
innobase/include/buf0lru.h:
Applied innodb-5.0-ss368 snapshot
innobase/include/ha0ha.h:
Applied innodb-5.0-ss368 snapshot
innobase/include/page0page.ic:
Applied innodb-5.0-ss368 snapshot
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
innobase/include/univ.i:
Applied innodb-5.0-ss368 snapshot
Remove UNIV_RELEASES_NOT_YET_STABLE and related checks.
innobase/row/row0ins.c:
Applied innodb-5.0-ss368 snapshot
innobase/row/row0sel.c:
Applied innodb-5.0-ss368 snapshot
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
page_rec_is_comp(): Remove the bounds check.
row_sel_field_store_in_mysql_format(): Turn the assertions
on mbminlen, mbmaxlen, and templ->type into debug assertions.
innobase/row/row0upd.c:
Applied innodb-5.0-ss368 snapshot
mysql-test/t/innodb.test:
Applied innodb-5.0-ss368 snapshot
sql/ha_innodb.cc:
Applied innodb-5.0-ss368 snapshot
Fix memory allocation bug (by changing MY_WME to MY_FAE) in get_share.
Also partially fix coding style of the function.
Diffstat (limited to 'innobase/btr/btr0cur.c')
-rw-r--r-- | innobase/btr/btr0cur.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/innobase/btr/btr0cur.c b/innobase/btr/btr0cur.c index f81cce5b8e9..3d7b6fffb52 100644 --- a/innobase/btr/btr0cur.c +++ b/innobase/btr/btr0cur.c @@ -1915,13 +1915,13 @@ btr_cur_pessimistic_update( ut_a(rec || optim_err != DB_UNDERFLOW); if (rec) { - offsets = rec_get_offsets(rec, index, offsets, - ULINT_UNDEFINED, &heap); - lock_rec_restore_from_page_infimum(rec, page); rec_set_field_extern_bits(rec, index, ext_vect, n_ext_vect, mtr); - + + offsets = rec_get_offsets(rec, index, offsets, + ULINT_UNDEFINED, &heap); + if (!rec_get_deleted_flag(rec, rec_offs_comp(offsets))) { /* The new inserted record owns its possible externally stored fields */ @@ -3329,7 +3329,10 @@ btr_store_big_rec_extern_fields( dict_index_t* index, /* in: index of rec; the index tree MUST be X-latched */ rec_t* rec, /* in: record */ - const ulint* offsets, /* in: rec_get_offsets(rec, index) */ + const ulint* offsets, /* in: rec_get_offsets(rec, index); + the "external storage" flags in offsets + will not correspond to rec when + this function returns */ big_rec_t* big_rec_vec, /* in: vector containing fields to be stored externally */ mtr_t* local_mtr __attribute__((unused))) /* in: mtr |