summaryrefslogtreecommitdiff
path: root/innobase
diff options
context:
space:
mode:
authorunknown <jan@hundin.mysql.fi>2005-01-12 10:36:50 +0200
committerunknown <jan@hundin.mysql.fi>2005-01-12 10:36:50 +0200
commite2e85d7df63b540388ccf4501eaf589d3fc5f4d2 (patch)
tree2fbc17b5a077b4713de4bc8d7f5a12828870894b /innobase
parent52a9dd4d433858c59245d71028017965fa3605ec (diff)
downloadmariadb-git-e2e85d7df63b540388ccf4501eaf589d3fc5f4d2.tar.gz
Take a shared record lock (LOCK_REC_NOT_GAP) for a matching record in the foreign
key check because we can allow inserts into gaps (Support Issue #4317). innobase/row/row0ins.c: Take a shared record lock (LOCK_REC_NOT_GAP) for a matching record in the foreign key check because we can allow inserts into gaps.
Diffstat (limited to 'innobase')
-rw-r--r--innobase/row/row0ins.c25
1 files changed, 6 insertions, 19 deletions
diff --git a/innobase/row/row0ins.c b/innobase/row/row0ins.c
index f8a98f74c09..15ffabf70cc 100644
--- a/innobase/row/row0ins.c
+++ b/innobase/row/row0ins.c
@@ -1105,7 +1105,6 @@ row_ins_check_foreign_constraint(
dict_table_t* check_table;
dict_index_t* check_index;
ulint n_fields_cmp;
- ibool unique_search;
rec_t* rec;
btr_pcur_t pcur;
ibool moved;
@@ -1223,14 +1222,6 @@ run_again:
dtuple_set_n_fields_cmp(entry, foreign->n_fields);
- if (dict_index_get_n_unique(check_index) <= foreign->n_fields) {
- /* We can just set a LOCK_REC_NOT_GAP type lock */
-
- unique_search = TRUE;
- } else {
- unique_search = FALSE;
- }
-
btr_pcur_open(check_index, entry, PAGE_CUR_GE,
BTR_SEARCH_LEAF, &pcur, &mtr);
@@ -1268,17 +1259,13 @@ run_again:
break;
}
} else {
- /* Found a matching record */
+ /* Found a matching record. Lock only
+ a record because we can allow inserts
+ into gaps */
- if (unique_search) {
- err = row_ins_set_shared_rec_lock(
- LOCK_REC_NOT_GAP,
- rec, check_index, thr);
- } else {
- err = row_ins_set_shared_rec_lock(
- LOCK_ORDINARY,
- rec, check_index, thr);
- }
+ err = row_ins_set_shared_rec_lock(
+ LOCK_REC_NOT_GAP,
+ rec, check_index, thr);
if (err != DB_SUCCESS) {