diff options
author | unknown <monty@mysql.com> | 2004-10-22 14:59:59 +0300 |
---|---|---|
committer | unknown <monty@mysql.com> | 2004-10-22 14:59:59 +0300 |
commit | cfcca61a177eecacdc2c525c1ba4fea082b1b1c4 (patch) | |
tree | f19d6eb75b4b32d78eae19b0cf23620817f6de64 /innobase | |
parent | ca8be36f3abc78206bab3810789c4253ee461308 (diff) | |
parent | f18efec55a12da2cd51f9d00f0a57e74f2ad78a2 (diff) | |
download | mariadb-git-cfcca61a177eecacdc2c525c1ba4fea082b1b1c4.tar.gz |
Merge mysql.com:/home/my/mysql-4.0 into mysql.com:/home/my/mysql-4.1
innobase/os/os0file.c:
Auto merged
innobase/row/row0ins.c:
Auto merged
innobase/row/row0mysql.c:
Auto merged
Diffstat (limited to 'innobase')
-rw-r--r-- | innobase/os/os0file.c | 8 | ||||
-rw-r--r-- | innobase/row/row0ins.c | 17 | ||||
-rw-r--r-- | innobase/row/row0mysql.c | 4 |
3 files changed, 23 insertions, 6 deletions
diff --git a/innobase/os/os0file.c b/innobase/os/os0file.c index 3276aaddca2..f2c1a82a995 100644 --- a/innobase/os/os0file.c +++ b/innobase/os/os0file.c @@ -1807,7 +1807,7 @@ os_file_pread( os_file_n_pending_preads++; os_mutex_exit(os_file_count_mutex); - n_bytes = pread(file, buf, n, offs); + n_bytes = pread(file, buf, (ssize_t)n, offs); os_mutex_enter(os_file_count_mutex); os_file_n_pending_preads--; @@ -1832,7 +1832,7 @@ os_file_pread( return(ret); } - ret = read(file, buf, n); + ret = read(file, buf, (ssize_t)n); os_mutex_exit(os_file_seek_mutexes[i]); @@ -1882,7 +1882,7 @@ os_file_pwrite( os_file_n_pending_pwrites++; os_mutex_exit(os_file_count_mutex); - ret = pwrite(file, buf, n, offs); + ret = pwrite(file, buf, (ssize_t)n, offs); os_mutex_enter(os_file_count_mutex); os_file_n_pending_pwrites--; @@ -1917,7 +1917,7 @@ os_file_pwrite( return(ret); } - ret = write(file, buf, n); + ret = write(file, buf, (ssize_t)n); if (srv_unix_file_flush_method != SRV_UNIX_LITTLESYNC && srv_unix_file_flush_method != SRV_UNIX_NOSYNC diff --git a/innobase/row/row0ins.c b/innobase/row/row0ins.c index c9c784403c8..c45818ddd26 100644 --- a/innobase/row/row0ins.c +++ b/innobase/row/row0ins.c @@ -980,6 +980,23 @@ row_ins_foreign_check_on_constraint( err = row_update_cascade_for_mysql(thr, cascade, foreign->foreign_table); + + if (foreign->foreign_table->n_foreign_key_checks_running == 0) { + fprintf(stderr, +"InnoDB: error: table %s has the counter 0 though there is\n" +"InnoDB: a FOREIGN KEY check running on it.\n", + foreign->foreign_table->name); + } + + /* Release the data dictionary latch for a while, so that we do not + starve other threads from doing CREATE TABLE etc. if we have a huge + cascaded operation running. The counter n_foreign_key_checks_running + will prevent other users from dropping or ALTERing the table when we + release the latch. */ + + row_mysql_unfreeze_data_dictionary(thr_get_trx(thr)); + row_mysql_freeze_data_dictionary(thr_get_trx(thr)); + mtr_start(mtr); /* Restore pcur position */ diff --git a/innobase/row/row0mysql.c b/innobase/row/row0mysql.c index ff3b48d03f5..bf4b0f26cbc 100644 --- a/innobase/row/row0mysql.c +++ b/innobase/row/row0mysql.c @@ -2479,8 +2479,8 @@ row_drop_table_for_mysql( fputs(" InnoDB: You are trying to drop table ", stderr); ut_print_name(stderr, trx, table->name); fputs("\n" - "InnoDB: though there are foreign key check running on it.\n" - "InnoDB: Adding the table to the background drop queue.\n", + "InnoDB: though there is a foreign key check running on it.\n" + "InnoDB: Adding the table to the background drop queue.\n", stderr); row_add_table_to_background_drop_list(table); |