mariadb/innobase
unknown 05dd9e4987 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.


innobase/fsp/fsp0fsp.c:
  Apply innodb-5.0-ss1696 snapshot
  
  Revision r1614:
  branches/5.0:
  
  Merge r1605 from trunk:
  
  Fix Bug#29097 "fsp_get_available_space_in_free_extents() is capped at 4TB"
  by typecasting the variables before multiplying them, so that the result of
  the multiplication is of type "unsigned long long".
  
  I verified this fix by creating a sparse file of 6TB and forcing InnoDB to
  use it without overwriting it with zeroes (by commenting the code that
  overwrites :newraw files).
  
  New type ullint is introduced with the sole purpose of shortening
  "unsigned long long", please do not define it to something else than
  "unsigned long long".
  
  Approved by:	Heikki
innobase/include/fsp0fsp.h:
  Apply innodb-5.0-ss1696 snapshot
  
  Revision r1614:
  branches/5.0:
  
  Merge r1605 from trunk:
  
  Fix Bug#29097 "fsp_get_available_space_in_free_extents() is capped at 4TB"
  by typecasting the variables before multiplying them, so that the result of
  the multiplication is of type "unsigned long long".
  
  I verified this fix by creating a sparse file of 6TB and forcing InnoDB to
  use it without overwriting it with zeroes (by commenting the code that
  overwrites :newraw files).
  
  New type ullint is introduced with the sole purpose of shortening
  "unsigned long long", please do not define it to something else than
  "unsigned long long".
  
  Approved by:	Heikki
innobase/include/univ.i:
  Apply innodb-5.0-ss1696 snapshot
  
  Revision r1614:
  branches/5.0:
  
  Merge r1605 from trunk:
  
  Fix Bug#29097 "fsp_get_available_space_in_free_extents() is capped at 4TB"
  by typecasting the variables before multiplying them, so that the result of
  the multiplication is of type "unsigned long long".
  
  I verified this fix by creating a sparse file of 6TB and forcing InnoDB to
  use it without overwriting it with zeroes (by commenting the code that
  overwrites :newraw files).
  
  New type ullint is introduced with the sole purpose of shortening
  "unsigned long long", please do not define it to something else than
  "unsigned long long".
  
  Approved by:	Heikki
innobase/log/log0recv.c:
  Apply innodb-5.0-ss1696 snapshot
  
  Revision r1608:
  branches/5.0: Bug#23710
  Back port of r1607 from trunk
  
  At InnoDB startup consider the case where log scan went beyond checkpoint_lsn as a crash and initiate crash recovery code path.
  
  reviewed by: Heikki
innobase/os/os0file.c:
  Apply innodb-5.0-ss1696 snapshot
  
  Revision r1615:
  branches/5.0:
  
  Merge r1613 from trunk:
  
  Fix Bug#29155 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.
  
  Approved by:	Heikki
innobase/srv/srv0srv.c:
  Apply innodb-5.0-ss1696 snapshot
  
  Revision r1552:
  branches/5.0:
  Fix Bug#20090 as suggested in the bug followup by Heikki.
  
  Approved by:	Heikki
innobase/trx/trx0trx.c:
  Apply innodb-5.0-ss1696 snapshot
  
  Revision r1596:
  branches/5.0: Merge r1595 from trunk:
  
  trx_commit_for_mysql(): Avoid acquiring and releasing kernel_mutex when
  trx->sess or trx_dummy_sess is non-NULL.
sql/ha_innodb.cc:
  Apply innodb-5.0-ss1696 snapshot
  
  Revision r1614:
  branches/5.0:
  
  Merge r1605 from trunk:
  
  Fix Bug#29097 "fsp_get_available_space_in_free_extents() is capped at 4TB"
  by typecasting the variables before multiplying them, so that the result of
  the multiplication is of type "unsigned long long".
  
  I verified this fix by creating a sparse file of 6TB and forcing InnoDB to
  use it without overwriting it with zeroes (by commenting the code that
  overwrites :newraw files).
  
  New type ullint is introduced with the sole purpose of shortening
  "unsigned long long", please do not define it to something else than
  "unsigned long long".
  
  Approved by:	Heikki
  
  
  Revision r1695:
  branches/5.0: Merge a change from MySQL AB:
  
  ChangeSet@1.2463.166.1  2007-06-20 19:22:27+03:00  monty@mysql.fi
  
  Allow multiple calls to mysql_server_end()
  (Part of fix for Bug 25621 Error in my_thread_global_end(): 1 threads
  didn't exit)
  Give correct error message if InnoDB table is not found
  (This allows us to drop a an innodb table that is not in the InnoDB registery)
  
  ha_innodb.cc:
    Give correct error message if InnoDB table is not found.
    (This allows us to drop a an innodb table that is not in the InnoDB
    registery)
  
  
  Revision r1606:
  branches/5.0: Formatting corrections.
  
  spotted by: Vasil
  
  
  Revision r1691:
  branches/5.0: Merge a change from MySQL AB:
  
  ChangeSet@1.2463.261.1  2007-07-20 14:17:15+03:00  gkodinov@magare.gmz
    Bug 29644: alter table hangs if records locked in share mode 
    by long running transaction
    
    On Windows opened files can't be deleted. There was a special
    upgraded lock mode (TL_WRITE instead of TL_WRITE_ALLOW_READ) 
    in ALTER TABLE to make sure nobody has the table opened
    when deleting the old table in ALTER TABLE. This special mode
    was causing ALTER TABLE to hang waiting on a lock inside InnoDB.
    This special lock is no longer necessary as the server is 
    closing the tables it needs to delete in ALTER TABLE.
    Fixed by removing the special lock.
    Note that this also reverses the fix for bug 17264 that deals with
    another consequence of this special lock mode being used.
  
  sql/ha_innodb.cc: Bug 29644: reverse the (now excessive) fix
  for bug 17264 (but leave the test case).
  
  
  Revision r1601:
  branches/5.0: Fix for bug#28781
  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.
  
  approved by: Sunny
  
  
  Revision r1692:
  branches/5.0: Merge a change from MySQL AB:
  
  ChangeSet@1.2463.267.1  2007-07-30 17:14:34+04:00  evgen@local
    Bug 24989: The DEADLOCK error is improperly handled by InnoDB.
    
    When innodb detects a deadlock it calls ha_rollback_trans() to rollback the 
    main transaction. But such action isn't allowed from inside of triggers and
    functions. When it happen the 'Explicit or implicit commit' error is thrown
    even if there is no commit/rollback statements in the trigger/function. This
    leads to the user confusion.
    
    Now the convert_error_code_to_mysql() function doesn't call the 
    ha_rollback_trans() function directly but rather calls the
    mark_transaction_to_rollback function and returns an error.
    The sp_rcontext::find_handler() now doesn't allow errors to be caught by the
    trigger/function error handlers when the thd->is_fatal_sub_stmt_error flag
    is set. Procedures are still allowed to catch such errors.
    The sp_rcontext::find_handler function now accepts a THD handle as a parameter.
    The transaction_rollback_request and the is_fatal_sub_stmt_error flags are 
    added to the THD class. The are initialized by the THD class constructor.
    Now the ha_autocommit_or_rollback function rolls back main transaction
    when not in a sub statement and the thd->transaction_rollback_request
    is set.
    The THD::restore_sub_statement_state function now resets the 
    thd->is_fatal_sub_stmt_error flag on exit from a sub-statement.
  
  innodb-big.test, innodb-big.result:
    Added a test case for the bug 24989: The DEADLOCK error is improperly
    handled by InnoDB.
  
  sql/ha_innodb.cc:
    Bug 24989: The DEADLOCK error is improperly handled by InnoDB.
    Now the convert_error_code_to_mysql() function doesn't call the
    ha_rollback_trans() function directly but rather calls the
    mark_transaction_to_rollback function and returns an error.
  
  
  Revision r1693:
  branches/5.0: Merge a change from MySQL AB:
  
  ChangeSet@1.2489.5.1  2007-07-31 17:42:48+04:00  evgen@local
    ha_innodb.cc:
      Warning fixed.
2007-08-15 17:20:54 -06:00
..
btr NULL MERGE UP to 5.1. 2007-07-10 08:16:51 -06:00
buf NULL MERGE UP to 5.1. 2007-07-10 08:16:51 -06:00
data my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
db Added Innobase to source distribution 2001-02-17 14:19:19 +02:00
dict Apply innodb-5.0-ss1372 snapshot 2007-03-28 22:41:21 -06:00
dyn my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
eval my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
fil Merge mysql.com:/home/kent/bk/tmp2/mysql-4.1-build 2007-01-11 12:43:30 +01:00
fsp NULL MERGE this ChangeSet to 5.1 2007-08-15 17:20:54 -06:00
fut my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
ha Merge mysql.com:/home/kent/bk/tmp2/mysql-4.1-build 2007-01-11 12:43:30 +01:00
ibuf NULL MERGE UP to 5.1. 2007-07-10 08:16:51 -06:00
include NULL MERGE this ChangeSet to 5.1 2007-08-15 17:20:54 -06:00
lock NULL MERGE UP to 5.1. 2007-07-10 08:16:51 -06:00
log NULL MERGE this ChangeSet to 5.1 2007-08-15 17:20:54 -06:00
mach my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
mem my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
mtr NULL MERGE UP to 5.1. 2007-07-10 08:16:51 -06:00
os NULL MERGE this ChangeSet to 5.1 2007-08-15 17:20:54 -06:00
page my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
pars my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
que my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
read my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
rem NULL MERGE UP to 5.1. 2007-07-10 08:16:51 -06:00
row NULL MERGE UP to 5.1. 2007-07-10 08:16:51 -06:00
srv NULL MERGE this ChangeSet to 5.1 2007-08-15 17:20:54 -06:00
sync my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
thr Merge mysql.com:/home/kent/bk/tmp2/mysql-4.1-build 2007-01-11 12:43:30 +01:00
trx NULL MERGE this ChangeSet to 5.1 2007-08-15 17:20:54 -06:00
usr my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
ut NULL MERGE this to 5.1 2007-03-22 14:40:52 -06:00
CMakeLists.txt Bug#25765 too many dbg heap assertions on windows 2007-03-20 10:07:23 -04:00
configure.in Apply innodb-5.0-ss1405 snapshot 2007-04-18 19:36:22 -06:00
Makefile.am my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00