Patch to allow monitor threads to stop before proceeding with normal shutdown.
Also have a separate time counter for tablespace monitor.
reviewed by: Heikki
longlong to long long because MYSQL_SYSVAR_LONGLONG marco expects long long
type.
Also change
((ulint)innobase_buffer_pool_size) / 1024
to
(ulint)(innobase_buffer_pool_size / 1024)
and remove comment which is no longer true.
Provided that innobase_buffer_pool_size is always 64bits these statements
are equivalent if ulint is 64 bit (well it will screw up if
innobase_buffer_pool_size is negative). And if ulint is 32 bit the later
variant gives a little more chance that the value will fit.
Approved by: Heikki
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
row_ins_check_foreign_constraint(), row_ins_scan_sec_index_for_duplicate():
Make use of the predicates page_rec_is_infimum() and page_rec_is_supremum().
server to enter InnoDB. This can be made further customizable by the
user if we introduce a new config parameter. This will wait until
config parameters can be easily added.
Approved by: Marko
in Makefile.am in r1353 by marko (shame on him):
ChangeSet@2007-03-30 06:57:58+02:00, msvensson@pilot.blaudden
Add missing \ causing CMakelists.txt etc not to be included in dist
"Move innobase_release_stat_resources(trx) outside the 'if' in
ha_innobase::external_lock(). That would add more safety that whatever
MySQL does at a query end, there would be no risk of a hang on the btr
search latch."
Also call innobase_release_temporary_latches() in the beginning of
ha_innobase::close().
Approved by: Heikki
ERROR_LOCK_VIOLATION is encountered during file operation.
This is caused by backup software, so InnoDB should retry while the backup
software is done with the file.
Approved by: Heikki
this variable settable. Since the pluggable engine interface currently
doesn't provide a usable mechanism, we will add the latter functionality
once it's available.
of UNDO slots in the rollback segment. 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 behaviour, not the "fixed"
and intended behaviour.
UNIV_IBUF_DEBUG.
innobase_start_or_create_for_mysql(): Note that crash recovery is broken
when UNIV_IBUF_DEBUG is defined.
ibuf_counts[]: Make this a two-dimensional array. No need to allocate
anything from the heap. Eliminate ibuf_counts_inited, as the array
will be zero-filled by the runtime environment.
ibuf_count_check(): New function, to print out an explanation before
assertion failure.
to set this flag immediately after open(2)ing. This way an error caused by
O_DIRECT not being supported can easily be ignored.
* Add support for skipping the OS caching on Solaris by calling directio()
instead of fcntl().
Approved by: Heikki
MySQL calls external_lock at the beginning and end of a statement
when it is not calling start_stmt or commit or rollback. Thus,
statement boundaries can be (and are already) detected without
monitoring thd->query_id.
The function innobase_commit() seemingly lacks the call to
innobase_release_stat_resources(), which should be called at
the end of every SQL statement. The call was replaced by
equivalent statements by Vadim Tkachenko when he implemented
innodb_commit_concurrency in MySQL 5.0:
http://mysql.bkbits.net:8080/mysql-5.0/?PAGE=patch&REV=1.1886.70.1
ChangeSet
2007/02/14 22:06:41-08:00 igor@olga.mysql.com
Fixed bug #25971: indexes on text columns were ignored when ref accesses
were evaluated.
According to the new rules for string comparison partial indexes on text
columns can be used in the same cases when partial indexes on varchar
columns can be used.
mysql-test/r/innodb.result
2007/02/14 22:06:39-08:00 igor@olga.mysql.com +1 -1
Adjusted results after the fix for bug #25971.
ChangeSet
2007/02/15 15:39:03+01:00 guilhem@gbichot3.local
Fix for BUG#25507 "multi-row insert delayed + auto increment causes
duplicate key entries on slave" (two concurrrent connections doing
multi-row INSERT DELAYED to insert into an auto_increment column,
caused replication slave to stop with "duplicate key error" (and
binlog was wrong)), and BUG#26116 "If multi-row INSERT
DELAYED has errors, statement-based binlogging breaks" (the binlog
was not accounting for all rows inserted, or slave could stop).
The fix is that: if (statement-based) binlogging is on, a multi-row
INSERT DELAYED is silently converted to a non-delayed INSERT.
Note: it is not possible to test BUG#25507 in 5.0 (requires mysqlslap),
so it is tested only in the changeset for 5.1. However, BUG#26116
is tested here, and the fix for BUG#25507 is the same code change.
mysql-test/r/innodb-replace.result
2007/02/15 15:39:01+01:00 guilhem@gbichot3.local +2 -2
result update
mysql-test/t/innodb-replace.test
2007/02/15 15:39:01+01:00 guilhem@gbichot3.local +2 -2
now that multi-row delayed inserts are converted to normal inserts
if the statement-based binlog is enabled,
no error is issued even if this engine does not support INSERT DELAYED,
as the insert does not go through the INSERT DELAYED code.
To preserve the goal of this test, we change the statements to single-
row inserts.
the innodb_gis test case.
ChangeSet
2007/02/19 13:57:06+03:00 kaa@polly.local
Bug#18743: Several test cases fails if "classic" configuration in 5.0
The problem happened because those tests were using "cp932" and "ucs2"
without checking whether these character sets are available.
This fix moves test parts to make character set specific parts be
tested only if they are:
- some parts were moved to "ctype_ucs.test" and "ctype_cp932.test"
- some parts were moved to the newly added tests "innodb-ucs2.test",
"mysqlbinglog-cp932.test" and "sp-ucs2.test"
mysql-test/t/innodb.test
2007/02/19 13:57:02+03:00 kaa@polly.local +0 -222
Moved ucs2-specific test cases to innodb-ucs2.test