Commit graph

186 commits

Author SHA1 Message Date
Timothy Smith
fd5642b67d Applying InnoDB snashot 5.0-ss4007, part 2. Fixes
Bug #18828: If InnoDB runs out of undo slots, it returns misleading 'table is full'

This is a backport of code already in 5.1+.  The error message change referred
to in the detailed revision comments is still pending.

Detailed revision comments:

r3937 | calvin | 2009-01-15 03:11:56 +0200 (Thu, 15 Jan 2009) | 17 lines
branches/5.0:

Backport the fix for Bug#18828. Return DB_TOO_MANY_CONCURRENT_TRXS
when we run out of UNDO slots in the rollback segment. The backport
is requested by MySQL under bug#41529 - Safe handling of InnoDB running
out of undo log slots.

This is a partial fix since the MySQL error code requested to properly
report the error condition back to the client has not yet materialized.
Currently we have #ifdef'd the error code translation in ha_innodb.cc.
This will have to be changed as and when MySQl add the new requested
code or an equivalent code that we can then use.

Given the above, currently we will get the old behavior, not the
"fixed" and intended behavior.

Approved by:	Heikki (on IM)
2009-03-02 17:57:09 -07:00
Timothy Smith
021d7d72f8 Cherry-pick InnoDB fixes for Bug#34286, Bug#35352, and Bug#36600 from snapshot
innodb-5.0-ss2475.

Bug #34286  Assertion failure in thread 2816 in file .\row\row0sel.c line 3500
Since autoinc init performs a MySQL SELECT query to determine the auto-inc
value, set prebuilt->sql_stat_start = TRUE so that it is performed like any
normal SELECT, regardless of the context in which it was invoked.


Bug #35352  If InnoDB crashes with UNDO slots full error the error persists on restart
We've added a heuristic that checks the size of the UNDO slots cache lists
(insert and upate). If either of cached lists has more than 500 entries then we
add any UNDO slots that are freed, to the common free list instead of the cache
list, this is to avoid the case where all the free slots end up in only one of
the lists on startup after a crash.

Tested with test case for 26590 and passes all mysql-test(s).

Bug #36600  SHOW STATUS takes a lot of CPU in buf_get_latched_pages_number
Fixed by removing the Innodb_buffer_pool_pages_latched variable from SHOW
STATUS output in non-UNIV_DEBUG compilation.
2008-07-31 15:47:57 -06:00
tsmith@ramayana.hindu.god
5e926bc120 NULL MERGE this ChangeSet to 5.1
Apply innodb-5.0-ss1696 snapshot

Fixes:
- Bug#20090: InnoDB: Error: trying to declare trx to enter InnoDB
- Bug#23710: crash_commit_before fails if innodb_file_per_table=1
  At InnoDB startup consider the case where log scan went beyond
  checkpoint_lsn as a crash and initiate crash recovery code path.
- Bug#28781: InnoDB increments auto-increment value incorrectly with ON DUPLICATE KEY UPDATE
  We need to do some special AUTOINC handling for the following case:
  INSERT INTO t (c1,c2) VALUES(x,y) ON DUPLICATE KEY UPDATE ...
  We need to use the AUTOINC counter that was actually used by
  MySQL in the UPDATE statement, which can be different from the
  value used in the INSERT statement.
- Bug#29097: fsp_get_available_space_in_free_extents() is capped at 4TB
  Fix by typecasting the variables before multiplying them, so that the
  result of the multiplication is of type "unsigned long long".
- Bug#29155: Innodb "Parallel recovery" is not prevented
  Fix by enabling file locking on FreeBSD.  It has been disabled because
  InnoDB has refused to start on FreeBSD & LinuxThreads, but now it
  starts just fine.
2007-08-15 17:20:54 -06:00
kent@mysql.com/kent-amd64.(none)
6523aca729 my_strtoll10-x86.s:
Corrected spelling in copyright text
Makefile.am:
  Don't update the files from BitKeeper
Many files:
  Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header
  Adjusted year(s) in copyright header 
Many files:
  Added GPL copyright text
Removed files:
  Docs/Support/colspec-fix.pl
  Docs/Support/docbook-fixup.pl
  Docs/Support/docbook-prefix.pl
  Docs/Support/docbook-split
  Docs/Support/make-docbook
  Docs/Support/make-makefile
  Docs/Support/test-make-manual
  Docs/Support/test-make-manual-de
  Docs/Support/xwf
2006-12-31 01:02:27 +01:00
kent@mysql.com/kent-amd64.(none)
226a5c833f Many files:
Changed header to GPL version 2 only
2006-12-23 20:17:15 +01:00
tsmith/tim@siva.hindu.god
d60550a4d6 This ChangeSet must be null-merged to 5.1.
Applied innodb-5.0-ss1040 and innodb-5.0-ss1099 snapshots.

Bugs fixed:
- Bug #21468: InnoDB crash during recovery with corrupted data pages: XA bug?
- Bug #24299: Identifiers in foreign keys cannot contain U+0160, U+0360, ..., U+FF60
- Bug #24386: Performance degradation caused by instrumentation in mutex_struct
- Bug #24712: SHOW TABLE STATUS for file-per-table showing incorrect time fields
2006-12-18 18:41:38 -07:00
aivanov@mysql.com
708f9b3ceb Changes from the innodb-5.0-ss115 snapshot.
Fixed bugs:
 BUG#15991: "innodb-file-per-table + symlink database + rename = crash"
 BUG#15650: "DELETE with LEFT JOIN crashes server"
 BUG#15308: "Problem of Order with Enum Column in Primary Key"
 BUG#14189: "VARBINARY and BINARY variables: trailing space ignored"
2006-01-16 14:32:43 +03:00
jani@ua141d10.elisa.omakaista.fi
cbe21a8eb6 Merge ua141d10.elisa.omakaista.fi:/home/my/bk/mysql-4.1
into  ua141d10.elisa.omakaista.fi:/home/my/bk/mysql-5.0-tmp
2005-10-27 23:43:20 +03:00
aivanov@mysql.com
a9a127e0bc Removed innobase/my_cnf, innobase/include/makefilewin.i,
and innobase/*/makefilewin (which are unused now).
2005-10-26 20:06:08 +04:00
osku@127.(none)
8615ef1864 Merge osalerma@bk-internal.mysql.com:/home/bk/mysql-5.0
into  127.(none):/home/osku/mysql/5.0/clean
2005-09-27 16:04:26 +03:00
kaa@polly.local
5b92eb3eba Fix for bug #13367, post-review changes 2005-09-27 13:37:20 +04:00
osku@127.(none)
6f89e1cea8 InnoDB: Fix compile warning. 2005-09-27 09:42:41 +03:00
osku@127.(none)
d61708d1c9 Fix bug #3443, better foreign key error messsages. 2005-09-23 16:22:27 +03:00
osku@127.(none)
04056ffd3d InnoDB: Print more than 300 characters of queries in various error conditions,
most notably deadlocked ones in SHOW INNODB STATUS. Fixes bug #7819.
2005-08-12 11:39:19 +03:00
heikki@hundin.mysql.fi
74fd4504bb Many files:
Push the patch of Jan Lindstrom: better comments
ha_innodb.cc:
  Partial fix for Bug #12263 : we let InnoDB always to perform a rollback on the trx object if MySQL closes a connection; but we do print a warning to the .err log if an InnoDB transaction was active; we may remove that print later, since the situation really is not a bug; MySQL just is not aware that some cursor operation started an InnoDB transaction
2005-08-03 17:09:21 +03:00
marko@hundin.mysql.fi
5dd8eeef3a Merge hundin.mysql.fi:/home/marko/mysql-4.1
into  hundin.mysql.fi:/home/marko/mysql-5.0
2005-07-26 14:43:48 +03:00
marko@hundin.mysql.fi
a89939c8e7 InnoDB: Do not flush after each write, not even when creating the
data files.  Previously, writes were flushed until the doublewrite
buffer was created.  That would be too slow on systems where
os_file_flush() [or fsync(2)] is slow.  (Bug #12125)
2005-07-26 14:03:34 +03:00
jan@hundin.mysql.fi
7d5e724c40 Implement MySQL framework to support consistent read views in
cursors for InnoDB. The idea of the patch is that if MySQL requests
a consistent read view, we open one when open a cursor, set is as the
active view to a transaction when fetch from the cursor, and close
together with cursor close. This patch is associated to bugs #11813, 
#11832, and #11833. Contains after review fixes.
2005-07-22 14:10:03 +03:00
heikki@hundin.mysql.fi
4fe03b705a Many files:
Fix Bug #3300 : if innodb_locks_unsafe_for_binlog is set, release locks on rows that we do not UPDATE or DELETE
2005-07-01 20:44:35 +03:00
heikki@hundin.mysql.fi
2358cb0895 Merge heikki@bk-internal.mysql.com:/home/bk/mysql-5.0
into hundin.mysql.fi:/home/heikki/mysql-5.0
2005-06-22 20:07:31 +03:00
marko@hundin.mysql.fi
eb42421e4a InnoDB: Replace for loops with memset() where possible. 2005-06-22 12:36:24 +03:00
heikki@hundin.mysql.fi
1148e3ce44 Merge heikki@bk-internal.mysql.com:/home/bk/mysql-5.0
into hundin.mysql.fi:/home/heikki/mysql-5.0
2005-06-21 20:15:22 +03:00
marko@hundin.mysql.fi
a5cbbb7031 InnoDB: Remove some warnings reported by GCC 4.0.0. 2005-06-21 11:49:55 +03:00
marko@hundin.mysql.fi
e992adcb3f Merge hundin.mysql.fi:/home/marko/mysql-5.0
into hundin.mysql.fi:/home/marko/mysql-5.0-current
2005-06-21 07:36:18 +03:00
marko@hundin.mysql.fi
85515b579e InnoDB: remove flag lock_print_waits from non-debug builds. 2005-06-17 15:29:03 +03:00
heikki@hundin.mysql.fi
f3493ee6f7 trx0undo.c:
Apply manually Jan's patch to remove 64-Windows compiler warnings that were reported by Georg Richter
2005-06-17 15:08:57 +03:00
marko@hundin.mysql.fi
c3da5b0b7b InnoDB: Do not distinguish explicitly requested table locks.
Since UNLOCK TABLES will commit the transaction (and thus release
all InnoDB locks held by it), it is unnecessary to release the
user-requested table locks separately.
2005-06-08 15:45:56 +03:00
jan@hundin.mysql.fi
16c96b88d5 Print information about XA recovery only if there are prepared XA transactions
after recovery.
2005-05-24 14:06:44 +03:00
marko@hundin.mysql.fi
c470116981 InnoDB: Define some macros around GCC's __builtin_expect()
and __builtin_prefetch().
Add UNIV_LIKELY_NULL to if (heap) mem_free_heap(heap) tests.
2005-04-21 14:23:26 +03:00
heikki@hundin.mysql.fi
2aa44dd98d Merge hundin.mysql.fi:/home/heikki/mysql-4.1
into hundin.mysql.fi:/home/heikki/mysql-5.0
2005-03-21 22:29:02 +02:00
heikki@hundin.mysql.fi
8a906d79aa trx0trx.c:
If MySQL wrote to its binlog, but for some reason trx->update_undo and trx->insert_undo were NULL in InnoDB, then trx->commit_lsn was garbage, and InnoDB could assert in the log flush of trx_commit_complete_for_mysql() (Bug #9277)
2005-03-21 22:21:55 +02:00
heikki@hundin.mysql.fi
edf59e5480 Many files:
InnoDB true VARCHAR
2005-03-16 00:34:15 +02:00
heikki@hundin.mysql.fi
a95f09e228 set_var.cc, mysqld.cc, ha_innodb.cc, sql_class.h:
Add a settable session variable innodb_support_xa; setting it to 0 can save up to 10 % of CPU time and 150 bytes of space in each undo log
trx0trx.h, trx0undo.c, trx0trx.c, trx0roll.c:
  Enable XA if innodb_support_xa is not set to 0; make prepare to do log fsync's according to innodb_flush_log_at_trx_commit
2005-03-13 12:49:39 +02:00
marko@hundin.mysql.fi
c4ace2a471 InnoDB: Introduce the symbols REC_OFFS_NORMAL_SIZE and
REC_OFFS_SMALL_SIZE for the initial allocation sizes of
arrays passed to rec_get_offsets().
2005-03-10 15:16:16 +02:00
marko@hundin.mysql.fi
6920a6d546 InnoDB: Improve performance by about 10% by removing implicit
memcpy() calls, by not initializing the offsets_[] arrays.
InnoDB: Remove a Microsoft compiler warning in page0page.c.
2005-03-09 22:04:55 +02:00
serg@serg.mylan
956682de1a merged 2005-03-09 14:09:06 +01:00
marko@hundin.mysql.fi
a6f17f4cc4 Merge marko@bk-internal.mysql.com:/home/bk/mysql-4.1
into hundin.mysql.fi:/home/marko/mysql-4.1
2005-03-07 15:28:11 +02:00
heikki@hundin.mysql.fi
69fe070acb trx0trx.c:
Print a hex dump of the trx_t object if trx->n_mysql_tables_in_use != 0 at trx_free()
2005-03-07 15:28:10 +02:00
marko@hundin.mysql.fi
38adb1ba79 InnoDB: Portability fixes for warnings reported on IA-64 Windows 2005-03-07 12:03:33 +02:00
bar@mysql.com
d50d213162 Merge 2005-03-05 18:20:35 +04:00
heikki@hundin.mysql.fi
474a910499 trx0trx.c:
Do not assert, but print diagnostics if MySQL tries to free a trx where n_mysql_tables_in_use > 0
2005-03-04 17:58:06 +02:00
jan@hundin.mysql.fi
40d89eea68 Fixed XA recovery for InnoDB. Note that XA recovery is still disabled
until it has been comprehensive tested.
2005-03-01 08:17:03 +02:00
heikki@hundin.mysql.fi
6d848111f2 trx0trx.c, trx0trx.h:
Fix wrong spelling
2005-02-25 22:54:33 +02:00
heikki@hundin.mysql.fi
ec248f78cf trx0undo.h, trx0undo.c, trx0trx.c, trx0roll.c:
Make InnoDB-5.0.3 to process log records of 4.1 undo log header create and reuse just like in 4.1; storing XID to the start of the undo log is a separately logged operation; this conforms to Rule 3 of InnoDB redo logging
2005-02-25 22:35:33 +02:00
heikki@hundin.mysql.fi
e70e62ad2d Merge heikki@bk-internal.mysql.com:/home/bk/mysql-5.0
into hundin.mysql.fi:/home/heikki/mysql-5.0
2005-02-22 16:20:47 +02:00
heikki@hundin.mysql.fi
819af98845 trx0trx.c:
Disable the XA code in InnoDB crash recovery; when Jan and Sergei want to test XA, they should revert this patch
2005-02-22 16:18:34 +02:00
jan@hundin.mysql.fi
57e474758d Fixed a bug on InnoDB X/Open XA prepare. 2005-02-22 15:40:13 +02:00
jan@hundin.mysql.fi
886b406e13 Clean up prints in innodb_xa_prepare. 2005-02-22 15:03:17 +02:00
jan@hundin.mysql.fi
14a7a642b0 Copy X/Open XA XID from trx structure to a list in recovery. 2005-02-22 14:39:15 +02:00
serg@serg.mylan
fd828e5b4d manually merged 2005-02-14 21:50:09 +01:00