summaryrefslogtreecommitdiff
path: root/innobase/include/lock0lock.h
diff options
context:
space:
mode:
authorunknown <aivanov@mysql.com>2006-01-16 14:32:43 +0300
committerunknown <aivanov@mysql.com>2006-01-16 14:32:43 +0300
commit7bafd119a3f73c39306a133936501a433e80bcf9 (patch)
tree42a4966dcc1d1565033773730d0782e22ce4570b /innobase/include/lock0lock.h
parentfe1970d4b9084de6e883b0dae50ab4d5d3957e54 (diff)
downloadmariadb-git-7bafd119a3f73c39306a133936501a433e80bcf9.tar.gz
Changes from the innodb-5.0-ss115 snapshot.
Fixed bugs: BUG#15991: "innodb-file-per-table + symlink database + rename = crash" BUG#15650: "DELETE with LEFT JOIN crashes server" BUG#15308: "Problem of Order with Enum Column in Primary Key" BUG#14189: "VARBINARY and BINARY variables: trailing space ignored" innobase/include/data0type.h: Changes from the innodb-5.0-ss115 snapshot. innobase/include/data0type.ic: Changes from the innodb-5.0-ss115 snapshot. Fixed bug #14189. dtype_get_pad_char(): Do not pad VARBINARY or BINARY cloumns. innobase/include/lock0lock.h: Changes from the innodb-5.0-ss115 snapshot. innobase/include/os0file.h: Changes from the innodb-5.0-ss115 snapshot. os_file_handle_error(): Map the error codes EXDEV, ENOTDIR, and EISDIR to the new code OS_FILE_PATH_ERROR. Treat this code as OS_FILE_PATH_ERROR. This fixes the crash on RENAME TABLE when the .ibd file is a symbolic link to a different file system (bug#15991). innobase/include/row0mysql.h: Changes from the innodb-5.0-ss115 snapshot. innobase/lock/lock0lock.c: Changes from the innodb-5.0-ss115 snapshot. lock_rec_unlock(): Initialize local variable release_lock, in order to avoid dereferencing an uninitialized pointer when no lock exists on rec. innobase/os/os0file.c: Changes from the innodb-5.0-ss115 snapshot. os_file_handle_error(): Map the error codes EXDEV, ENOTDIR, and EISDIR to the new code OS_FILE_PATH_ERROR. Treat this code as OS_FILE_PATH_ERROR. This fixes the crash on RENAME TABLE when the .ibd file is a symbolic link to a different file system (bug#15991). Protect the increment and decrement operations on the statistic variables os_n_pending_writes/reads with os_file_count_mutes. innobase/row/row0ins.c: Changes from the innodb-5.0-ss115 snapshot. Fixed bug #14189. row_ins_cascade_calc_update_vec(): Refuse ON UPDATE_CASCADE when trying to change the length of of a VARBINARY column that refers to or is referenced by a BINARY column. BINARY columns are no longer padded on comparison, and thus they cannot be padded on storage either. innobase/row/row0mysql.c: Changes from the innodb-5.0-ss115 snapshot. Fixed bug on unlock_row. In a unlock_row we may unlock only the latest lock granted to this transaction to the row. innobase/row/row0sel.c: Changes from the innodb-5.0-ss115 snapshot. Fixed bug #15308. Fixed bug #14189: innobase_init(): Assert that DATA_MYSQL_BINARY_CHARSET_COLL == my_charset_bin.number. After review fixes for unlock bug where unlock released all locks transaction requested for a row. Only a latest requested lock to a row should be released. Update function comments to reflect current state. Persistent cursor should be stored whenever select lock type != LOCK_NONE. innobase/trx/trx0trx.c: Changes from the innodb-5.0-ss115 snapshot. trx_commit_off_kernel(): Do not write empty trx->mysql_log_file_name. mysql-test/r/innodb.result: Changes from the innodb-5.0-ss115 snapshot. mysql-test/t/innodb.test: Changes from the innodb-5.0-ss115 snapshot. sql/ha_innodb.cc: Changes from the innodb-5.0-ss115 snapshot. Fixed bug #15308. Fixed bug #14189: innobase_init(): Assert that DATA_MYSQL_BINARY_CHARSET_COLL == my_charset_bin.number. After review fixes for unlock bug where unlock released all locks transaction requested for a row. Only a latest requested lock to a row should be released. Update function comments to reflect current state. Persistent cursor should be stored whenever select lock type != LOCK_NONE. mysql-test/r/innodb_unsafe_binlog.result: Changes from the innodb-5.0-ss115 snapshot. mysql-test/t/innodb_unsafe_binlog-master.opt: Changes from the innodb-5.0-ss115 snapshot. mysql-test/t/innodb_unsafe_binlog.test: Changes from the innodb-5.0-ss115 snapshot. Added testcases for bug #15650.
Diffstat (limited to 'innobase/include/lock0lock.h')
-rw-r--r--innobase/include/lock0lock.h20
1 files changed, 12 insertions, 8 deletions
diff --git a/innobase/include/lock0lock.h b/innobase/include/lock0lock.h
index 20b1f1d7145..86e579bc007 100644
--- a/innobase/include/lock0lock.h
+++ b/innobase/include/lock0lock.h
@@ -64,14 +64,6 @@ lock_clust_rec_some_has_impl(
dict_index_t* index, /* in: clustered index */
const ulint* offsets);/* in: rec_get_offsets(rec, index) */
/*****************************************************************
-Resets the lock bits for a single record. Releases transactions
-waiting for lock requests here. */
-
-void
-lock_rec_reset_and_release_wait(
-/*============================*/
- rec_t* rec); /* in: record whose locks bits should be reset */
-/*****************************************************************
Makes a record to inherit the locks of another record as gap type
locks, but does not reset the lock bits of the other record. Also
waiting lock requests on rec are inherited as GRANTED gap locks. */
@@ -427,6 +419,18 @@ lock_is_on_table(
/*=============*/
/* out: TRUE if there are lock(s) */
dict_table_t* table); /* in: database table in dictionary cache */
+/*****************************************************************
+Removes a granted record lock of a transaction from the queue and grants
+locks to other transactions waiting in the queue if they now are entitled
+to a lock. */
+
+void
+lock_rec_unlock(
+/*============*/
+ trx_t* trx, /* in: transaction that has set a record
+ lock */
+ rec_t* rec, /* in: record */
+ ulint lock_mode); /* in: LOCK_S or LOCK_X */
/*************************************************************************
Releases a table lock.
Releases possible other transactions waiting for this lock. */