summaryrefslogtreecommitdiff
path: root/innobase/row
diff options
context:
space:
mode:
authorheikki@donna.mysql.fi <>2001-03-06 19:45:10 +0200
committerheikki@donna.mysql.fi <>2001-03-06 19:45:10 +0200
commit0ba8d3efd2bd78a2726ad9de98a46ebe035cd95a (patch)
tree8379d144f3d45e35f34cbed179ce3e5d5c26c30a /innobase/row
parent853a2f01604b17b4611778d89bf178ccee3901c3 (diff)
downloadmariadb-git-0ba8d3efd2bd78a2726ad9de98a46ebe035cd95a.tar.gz
trx0trx.h Innobase now returns the key number in a duplicate key error, removed innobase/include from make dirs
row0ins.c Innobase now returns the key number in a duplicate key error, removed innobase/include from make dirs row0mysql.c Innobase now returns the key number in a duplicate key error, removed innobase/include from make dirs row0mysql.h Innobase now returns the key number in a duplicate key error, removed innobase/include from make dirs ha_innobase.cc Innobase now returns the key number in a duplicate key error, removed innobase/include from make dirs
Diffstat (limited to 'innobase/row')
-rw-r--r--innobase/row/row0ins.c5
-rw-r--r--innobase/row/row0mysql.c30
2 files changed, 34 insertions, 1 deletions
diff --git a/innobase/row/row0ins.c b/innobase/row/row0ins.c
index 89a85a39a55..4c5a46536cb 100644
--- a/innobase/row/row0ins.c
+++ b/innobase/row/row0ins.c
@@ -407,6 +407,7 @@ row_ins_scan_sec_index_for_duplicate(
ut_a(dupl_count >= 1);
if (dupl_count > 1) {
+ trx->error_info = index;
return(DB_DUPLICATE_KEY);
}
@@ -468,7 +469,8 @@ row_ins_duplicate_error(
if (row_ins_dupl_error_with_rec(rec, entry,
cursor->index, trx)) {
*dupl_rec = rec;
-
+ trx->error_info = cursor->index;
+
return(DB_DUPLICATE_KEY);
}
}
@@ -484,6 +486,7 @@ row_ins_duplicate_error(
if (row_ins_dupl_error_with_rec(rec, entry,
cursor->index, trx)) {
*dupl_rec = rec;
+ trx->error_info = cursor->index;
return(DB_DUPLICATE_KEY);
}
diff --git a/innobase/row/row0mysql.c b/innobase/row/row0mysql.c
index 8a745dc216e..10ddf381166 100644
--- a/innobase/row/row0mysql.c
+++ b/innobase/row/row0mysql.c
@@ -762,6 +762,36 @@ row_table_got_default_clust_index(
}
/*************************************************************************
+Calculates the key number used inside MySQL for an Innobase index. We have
+to take into account if we generated a default clustered index for the table */
+
+ulint
+row_get_mysql_key_number_for_index(
+/*===============================*/
+ dict_index_t* index)
+{
+ dict_index_t* ind;
+ ulint i;
+
+ ut_a(index);
+
+ i = 0;
+ ind = dict_table_get_first_index(index->table);
+
+ while (index != ind) {
+ ind = dict_table_get_next_index(ind);
+ i++;
+ }
+
+ if (row_table_got_default_clust_index(index->table)) {
+ ut_a(i > 0);
+ i--;
+ }
+
+ return(i);
+}
+
+/*************************************************************************
Does a table creation operation for MySQL. */
int