summaryrefslogtreecommitdiff
path: root/storage/innobase/row/row0mysql.c
diff options
context:
space:
mode:
Diffstat (limited to 'storage/innobase/row/row0mysql.c')
-rw-r--r--storage/innobase/row/row0mysql.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/storage/innobase/row/row0mysql.c b/storage/innobase/row/row0mysql.c
index 7c9427db0d2..9f88fd8040b 100644
--- a/storage/innobase/row/row0mysql.c
+++ b/storage/innobase/row/row0mysql.c
@@ -476,7 +476,8 @@ handle_new_error:
/* MySQL will roll back the latest SQL statement */
} else if (err == DB_ROW_IS_REFERENCED
|| err == DB_NO_REFERENCED_ROW
- || err == DB_CANNOT_ADD_CONSTRAINT) {
+ || err == DB_CANNOT_ADD_CONSTRAINT
+ || err == DB_TOO_MANY_CONCURRENT_TRXS) {
if (savept) {
/* Roll back the latest, possibly incomplete
insertion or update */
@@ -4058,3 +4059,25 @@ row_check_table_for_mysql(
return(ret);
}
+
+/*************************************************************************
+Get the maximum row size. */
+
+ulint
+page_get_free_space_of_empty_noninline(
+/*===================================*/
+ /* out: The (approx) maximum size
+ of a row, this is a conservative
+ estimate, since the size can be
+ slightly larger depending upon
+ the ROW_FORMAT setting.*/
+ dict_table_t* table) /* in: table for which max record
+ size is required.*/
+{
+ ibool compact;
+
+ compact = dict_table_is_comp(table);
+
+ return(page_get_free_space_of_empty(compact) / 2);
+}
+