Commit 7ed448ce authored by vasil's avatar vasil

branches/zip:

Merge 2929:3458 from branches/5.1 (resolving conflict in c3257,
note also that r3363 reverted r2933 so there are not changes in
mysql-test/innodb-autoinc.result with the current merge):

  ------------------------------------------------------------------------
  r2933 | calvin | 2008-10-30 02:57:31 +0200 (Thu, 30 Oct 2008) | 10 lines
  Changed paths:
     M /branches/5.1/mysql-test/innodb-autoinc.result
  
  branches/5.1: correct the result file innodb-autoinc.result
  
  Change the followings:
    auto_increment_increment
    auto_increment_offset
  
  to
    auto-increment-increment
    auto-increment-offset
  
  ------------------------------------------------------------------------
  r2981 | marko | 2008-11-07 14:54:10 +0200 (Fri, 07 Nov 2008) | 5 lines
  Changed paths:
     M /branches/5.1/row/row0mysql.c
  
  branches/5.0: row_mysql_store_col_in_innobase_format(): Correct a misleading
  comment. In the UTF-8 encoding, ASCII takes 1 byte per character, while
  the "latin1" character set (normally ISO-8859-1, but in MySQL it actually
  refers to the Windows Code Page 1252 a.k.a. CP1252, WinLatin1)
  takes 1 to 3 bytes (1 to 2 bytes for the ISO-8859-1 subset).
  ------------------------------------------------------------------------
  r3114 | calvin | 2008-11-14 20:31:48 +0200 (Fri, 14 Nov 2008) | 8 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
  
  branches/5.1: fix bug#40386: Not flushing query cache after truncate
  
  ha_statistics.records can not be 0 unless the table is empty, set to
  1 instead. The original problem of bug#29507 is fixed in the server.
  
  Additional test was done with the fix of bug#29507 in the server.
  
  Approved by: Heikki (on IM)
  ------------------------------------------------------------------------
  r3257 | inaam | 2008-11-24 22:06:50 +0200 (Mon, 24 Nov 2008) | 13 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
     M /branches/5.1/srv/srv0srv.c
     M /branches/5.1/trx/trx0trx.c
  
  branches/5.1 bug#40760
  
  The config param innodb_thread_concurrency is dynamically set and is
  read when a thread enters/exits innodb. If the value is changed between
  the enter and exit time the behaviour becomes erratic.
  The fix is not to use srv_thread_concurrency when exiting, instead use
  the flag trx->declared_to_be_inside_innodb.
  
  rb://57
  
  Approved by: Marko
  
  
  ------------------------------------------------------------------------
  r3363 | calvin | 2008-12-04 19:00:20 +0200 (Thu, 04 Dec 2008) | 13 lines
  Changed paths:
     M /branches/5.1/mysql-test/innodb-autoinc.result
  
  branches/5.1: revert the changes in r2933
  
  The changes in r2933 causes test failure on Linux.
  More investigation is needed for Windows.
  
  Change the followings in innodb-autoinc.result:
    auto-increment-increment
    auto-increment-offset
  
  back to:
    auto_increment_increment
    auto_increment_offset
  
  ------------------------------------------------------------------------
  r3412 | vasil | 2008-12-05 10:46:18 +0200 (Fri, 05 Dec 2008) | 7 lines
  Changed paths:
     M /branches/5.1/trx/trx0undo.c
  
  branches/5.1:
  
  Add the traditional 2 spaces after the timestamp so the message does
  not look like:
  
  070223 13:26:01InnoDB: Warning: canno....
  
  ------------------------------------------------------------------------
  r3458 | vasil | 2008-12-09 11:21:08 +0200 (Tue, 09 Dec 2008) | 51 lines
  Changed paths:
     M /branches/5.1/mysql-test/innodb_bug34300.test
  
  branches/5.1:
  
  Merge a change from MySQL to fix the failing innodb_bug34300 mysql-test:
  
    main.innodb_bug34300           [ fail ]
    
    mysqltest: At line 11: query 'SET @@max_allowed_packet=16777216' failed: 1621: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
    
    Aborting: main.innodb_bug34300 failed in default mode. 
  
  The changeset is this:
  
    ------------------------------------------------------------
    revno: 2709.1.10
    committer: Staale Smedseng <staale.smedseng@sun.com>
    branch nick: b22891-51-bugteam
    timestamp: Thu 2008-11-20 08:51:48 +0100
    message:
      A fix for Bug#22891 "session level max_allowed_packet can be
      set but is ignored".
    
      This patch makes @@session.max_allowed_packed and
      @@session.net_buffer_length read-only as suggested in the bug
      report. The user will have to use SET GLOBAL (and reconnect)
      to alter the session values of these variables.
    
      The error string ER_VARIABLE_IS_READONLY is introduced.
    
      Tests are modified accordingly.
    modified:
      mysql-test/r/func_compress.result
      mysql-test/r/max_allowed_packet_basic.result
      mysql-test/r/max_allowed_packet_func.result
      mysql-test/r/net_buffer_length_basic.result
      mysql-test/r/packet.result
      mysql-test/r/union.result
      mysql-test/r/variables.result
      mysql-test/t/func_compress.test
      mysql-test/t/innodb_bug34300.test
      mysql-test/t/max_allowed_packet_basic.test
      mysql-test/t/max_allowed_packet_func.test
      mysql-test/t/net_buffer_length_basic.test
      mysql-test/t/packet.test
      mysql-test/t/union.test
      mysql-test/t/variables.test
      sql/set_var.cc
      sql/set_var.h
      sql/share/errmsg.txt
    ------------------------------------------------------------
  
  
  ------------------------------------------------------------------------
parent 0b04505e
...@@ -548,7 +548,7 @@ innodb_srv_conc_exit_innodb( ...@@ -548,7 +548,7 @@ innodb_srv_conc_exit_innodb(
/*========================*/ /*========================*/
trx_t* trx) /* in: transaction handle */ trx_t* trx) /* in: transaction handle */
{ {
if (UNIV_LIKELY(!srv_thread_concurrency)) { if (UNIV_LIKELY(!trx->declared_to_be_inside_innodb)) {
return; return;
} }
...@@ -6900,11 +6900,13 @@ ha_innobase::info( ...@@ -6900,11 +6900,13 @@ ha_innobase::info(
n_rows++; n_rows++;
} }
/* Fix bug#29507: TRUNCATE shows too many rows affected. /* Fix bug#40386: Not flushing query cache after truncate.
Do not show the estimates for TRUNCATE command. */ n_rows can not be 0 unless the table is empty, set to 1
instead. The original problem of bug#29507 is actually
fixed in the server code. */
if (thd_sql_command(user_thd) == SQLCOM_TRUNCATE) { if (thd_sql_command(user_thd) == SQLCOM_TRUNCATE) {
n_rows = 0; n_rows = 1;
/* We need to reset the prebuilt value too, otherwise /* We need to reset the prebuilt value too, otherwise
checks for values greater than the last value written checks for values greater than the last value written
......
...@@ -8,7 +8,9 @@ ...@@ -8,7 +8,9 @@
-- disable_query_log -- disable_query_log
-- disable_result_log -- disable_result_log
SET @@max_allowed_packet=16777216; # set packet size and reconnect
SET @@global.max_allowed_packet=16777216;
--connect (newconn, localhost, root,,)
DROP TABLE IF EXISTS bug34300; DROP TABLE IF EXISTS bug34300;
CREATE TABLE bug34300 ( CREATE TABLE bug34300 (
......
...@@ -361,7 +361,7 @@ row_mysql_store_col_in_innobase_format( ...@@ -361,7 +361,7 @@ row_mysql_store_col_in_innobase_format(
/* In some cases we strip trailing spaces from UTF-8 and other /* In some cases we strip trailing spaces from UTF-8 and other
multibyte charsets, from FIXED-length CHAR columns, to save multibyte charsets, from FIXED-length CHAR columns, to save
space. UTF-8 would otherwise normally use 3 * the string length space. UTF-8 would otherwise normally use 3 * the string length
bytes to store a latin1 string! */ bytes to store an ASCII string! */
/* We assume that this CHAR field is encoded in a /* We assume that this CHAR field is encoded in a
variable-length character set where spaces have variable-length character set where spaces have
......
...@@ -256,10 +256,10 @@ UNIV_INTERN ulong srv_commit_concurrency = 0; ...@@ -256,10 +256,10 @@ UNIV_INTERN ulong srv_commit_concurrency = 0;
/* this mutex protects srv_conc data structures */ /* this mutex protects srv_conc data structures */
UNIV_INTERN os_fast_mutex_t srv_conc_mutex; UNIV_INTERN os_fast_mutex_t srv_conc_mutex;
/* number of OS threads currently inside InnoDB; it is not an error if /* number of transactions that have declared_to_be_inside_innodb set.
this drops temporarily below zero because we do not demand that every It used to be a non-error for this value to drop below zero temporarily.
thread increments this, but a thread waiting for a lock decrements This is no longer true. We'll, however, keep the lint datatype to add
this temporarily */ assertions to catch any corner cases that we may have missed. */
UNIV_INTERN lint srv_conc_n_threads = 0; UNIV_INTERN lint srv_conc_n_threads = 0;
/* number of OS threads waiting in the FIFO for a permission to enter /* number of OS threads waiting in the FIFO for a permission to enter
InnoDB */ InnoDB */
...@@ -999,6 +999,8 @@ srv_conc_enter_innodb( ...@@ -999,6 +999,8 @@ srv_conc_enter_innodb(
return; return;
} }
ut_ad(srv_conc_n_threads >= 0);
if (srv_conc_n_threads < (lint)srv_thread_concurrency) { if (srv_conc_n_threads < (lint)srv_thread_concurrency) {
srv_conc_n_threads++; srv_conc_n_threads++;
...@@ -1125,6 +1127,8 @@ srv_conc_force_enter_innodb( ...@@ -1125,6 +1127,8 @@ srv_conc_force_enter_innodb(
return; return;
} }
ut_ad(srv_conc_n_threads >= 0);
os_fast_mutex_lock(&srv_conc_mutex); os_fast_mutex_lock(&srv_conc_mutex);
srv_conc_n_threads++; srv_conc_n_threads++;
...@@ -1146,11 +1150,6 @@ srv_conc_force_exit_innodb( ...@@ -1146,11 +1150,6 @@ srv_conc_force_exit_innodb(
{ {
srv_conc_slot_t* slot = NULL; srv_conc_slot_t* slot = NULL;
if (UNIV_LIKELY(!srv_thread_concurrency)) {
return;
}
if (trx->mysql_thd != NULL if (trx->mysql_thd != NULL
&& thd_is_replication_slave_thread(trx->mysql_thd)) { && thd_is_replication_slave_thread(trx->mysql_thd)) {
...@@ -1164,6 +1163,7 @@ srv_conc_force_exit_innodb( ...@@ -1164,6 +1163,7 @@ srv_conc_force_exit_innodb(
os_fast_mutex_lock(&srv_conc_mutex); os_fast_mutex_lock(&srv_conc_mutex);
ut_ad(srv_conc_n_threads > 0);
srv_conc_n_threads--; srv_conc_n_threads--;
trx->declared_to_be_inside_innodb = FALSE; trx->declared_to_be_inside_innodb = FALSE;
trx->n_tickets_to_enter_innodb = 0; trx->n_tickets_to_enter_innodb = 0;
......
...@@ -250,6 +250,10 @@ trx_free( ...@@ -250,6 +250,10 @@ trx_free(
"InnoDB: inside InnoDB.\n", stderr); "InnoDB: inside InnoDB.\n", stderr);
trx_print(stderr, trx, 600); trx_print(stderr, trx, 600);
putc('\n', stderr); putc('\n', stderr);
/* This is an error but not a fatal error. We must keep
the counters like srv_conc_n_threads accurate. */
srv_conc_force_exit_innodb(trx);
} }
if (trx->n_mysql_tables_in_use != 0 if (trx->n_mysql_tables_in_use != 0
......
...@@ -427,7 +427,7 @@ trx_undo_seg_create( ...@@ -427,7 +427,7 @@ trx_undo_seg_create(
if (slot_no == ULINT_UNDEFINED) { if (slot_no == ULINT_UNDEFINED) {
ut_print_timestamp(stderr); ut_print_timestamp(stderr);
fprintf(stderr, fprintf(stderr,
"InnoDB: Warning: cannot find a free slot for" " InnoDB: Warning: cannot find a free slot for"
" an undo log. Do you have too\n" " an undo log. Do you have too\n"
"InnoDB: many active transactions" "InnoDB: many active transactions"
" running concurrently?\n"); " running concurrently?\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment