diff options
author | heikki@donna.mysql.fi <> | 2001-03-06 19:45:10 +0200 |
---|---|---|
committer | heikki@donna.mysql.fi <> | 2001-03-06 19:45:10 +0200 |
commit | 0ba8d3efd2bd78a2726ad9de98a46ebe035cd95a (patch) | |
tree | 8379d144f3d45e35f34cbed179ce3e5d5c26c30a /innobase/row | |
parent | 853a2f01604b17b4611778d89bf178ccee3901c3 (diff) | |
download | mariadb-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.c | 5 | ||||
-rw-r--r-- | innobase/row/row0mysql.c | 30 |
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 |