Commit graph

661 commits

Author SHA1 Message Date
inaam
79a73d3282 branches/5.1:
Removed UNIV_INLINE qualifier from btr_search_info_get_ref_count().
Otherwise compilation failed on non-debug builds.

Pointed by: Vasil
2008-07-22 14:57:43 +00:00
inaam
9c56160257 branches/5.1 issue# 4
Fixed a timing hole where a thread dropping an index can free the
in-memory index struct while another thread is still using
that structure to remove entries from adaptive hash index belonging
to one of the pages that belongs to the index being dropped.

The fix is to have a reference counter in the index struct and to
wait for this counter to drop to zero beforing freeing the struct.

Reviewed by: Heikki
2008-07-15 16:46:03 +00:00
vasil
a1d437b0b3 branches/5.1:
Merge a change from MySQL (this fixes the failing innodb-replace test):

  revno: 2659
  committer: Mattias Jonsson <mattiasj@mysql.com>
  branch nick: b31210-51-bugteam
  timestamp: Tue 2008-06-03 13:25:41 +0200
  message:
    Bug#31210: INSERT DELAYED crashes server when used on partitioned tables
      
    Problem was an unclear error message since it could suggest that
    MyISAM did not support INSERT DELAYED.
    Changed the error message to say that DELAYED is not supported by the
    table, instead of the table's storage engine.
    The confusion is that a partitioned table is in somewhat sense using
    the partitioning storage engine, which in turn uses the ordinary
    storage engine. By saying that the table does not support DELAYED we
    do not give any extra informantion about the storage engine or if it
    is partitioned.
  modified:
    mysql-test/r/innodb-replace.result
    mysql-test/t/innodb-replace.test
    mysql-test/t/merge.test
    mysql-test/t/partition_hash.test
    sql/share/errmsg.txt
    sql/sql_insert.cc
2008-07-01 06:37:34 +00:00
vasil
011a6c0b08 branches/5.1:
Fix Bug#36942 Performance problem in lock_get_n_rec_locks (SHOW INNODB STATUS)
by not calling lock_get_n_rec_locks() from lock_print_info_summary() on
production builds.
 
Approved by:	Heikki (via IM)
2008-06-26 13:39:01 +00:00
vasil
e6804447dd branches/5.1:
Fix Bug#36941 Performance problem in ha_print_info (SHOW INNODB STATUS)
by disabling some of the code in ha_print_info() in production builds.
 
Approved by:	Heikki (via IM)
2008-06-26 13:38:02 +00:00
sunny
c4eb6c1758 branches/5.1: Add test cases and fix a bug where the last AUTOINC cached value
was not reset to 0 when the table was truncated.

Bug #37531 : After truncate, auto_increment behaves incorrectly for InnoDB
2008-06-26 12:55:43 +00:00
vasil
d3cb21407d branches/5.1:
Merge change from MySQL (this fixes the failing innodb test):

  ChangeSet@1.2628  2008-05-13 17:01:02+05:00  gshchepa@host.loc
    Merge host.loc:/work/bugs/5.0-bugteam-30059
    into  host.loc:/work/bk/5.1-bugteam

NOTE: the diff for mysql-test/r/innodb.result in this ChangeSet looks
empty but the line:

Data truncated for column 'c' at row 1

is present in annotated mysql-test/r/innodb.result@1.215 [1]
and not present in annotated mysql-test/r/innodb.result@1.216 [2] so it
must have been deleted in the above ChangeSet.

[1] http://mysql.bkbits.net:8080/mysql-5.1/mysql-test/r/innodb.result?PAGE=anno&REV=4825e033JNz_463Ha9pwInSjqLvIQg
[2] http://mysql.bkbits.net:8080/mysql-5.1/mysql-test/r/innodb.result?PAGE=anno&REV=482982fcUoskWjhU2xMH2BZ4Gyukfg
2008-06-09 10:16:51 +00:00
vasil
104f83a5f0 branches/5.1:
Merge change from MySQL (this almost fixes the failing innodb test):

  ChangeSet@1.2613, 2008-05-07 09:58:21+04:00, sergefp@mysql.com +5 -0
    BUG#35850 "Performance regression in 5.1.23/5.1.24"
    - Disable the "prefer full scan on clustered primary key over full scan
      of any secondary key" rule introduced by BUG#35850.
    - Update test results accordingly
    (bk trigger: file this for BUG#35850)
  
    mysql-test/r/innodb.result@1.214, 2008-05-07 09:57:31+04:00, sergefp@mysql.com +15 -15
      BUG#35850 "Performance regression in 5.1.23/5.1.24"
      - Update test results
2008-06-09 09:53:12 +00:00
vasil
a72d9db0bd branches/5.1:
Fix Bug#36149 Read buffer overflow in srv0start.c found during "make test"

Use strncmp(3) instead of memcmp(3) to avoid reading past end of the string
if it is empty (*str == '\0'). This bug is _not_ a buffer overflow.

Discussed with:	Sunny (via IM)
2008-05-28 12:01:14 +00:00
sunny
a52e6545aa branches/5.1: Fix for Bug#35602, "Failed to read auto-increment value from
storage engine". The test for REPLACE was an error of ommission since it's
classified as a simple INSERT. For REPLACE statements we don't acquire
the special AUTOINC lock for AUTOINC_NEW_STYLE_LOCKING with this fix.
2008-05-28 08:18:35 +00:00
vasil
ef5a2777ee branches/5.1:
Fix Bug#36819 ut_usectime does not handle errors from gettimeofday

by retrying gettimeofday() several times if it fails in ut_usectime().
If it fails on all calls then return error to the caller to be handled
at higher level.

Update the variable innodb_row_lock_time_max in SHOW STATUS output only
if ut_usectime() was successful.
2008-05-27 07:40:07 +00:00
sunny
61ab3c5492 branches/5.1: Fix for bug# 36793. This is a back port from branches/zip. This
code has been tested on a big-endian machine too.
2008-05-23 04:29:08 +00:00
calvin
05f84037e7 branches/5.1:
Fix Bug#11894 innodb_file_per_table crashes w/ Windows .sym symbolic
link hack

The crash was due to un-handled error 3 (path not found). In the case
of file per table, change the call to os_file_handle_error_no_exit()
from os_file_handle_error(). Also, checks for full path pattern during
table create (Windows only), which is used in symbolic link and temp
table creation.

Approved by:	Heikki
2008-05-19 21:37:14 +00:00
vasil
461cc69ce7 branches/5.1:
Fix Bug#36600 SHOW STATUS takes a lot of CPU in buf_get_latched_pages_number

by removing the Innodb_buffer_pool_pages_latched variable from
SHOW STATUS output in non-UNIV_DEBUG compilation.
 
Approved by:	Heikki
2008-05-19 13:59:42 +00:00
vasil
d1e9eb79ae branches/5.1:
Fix Bug#36434 ha_innodb.so is installed in the wrong directory

Change pkglib_LTLIBRARIES with pkgplugin_LTLIBRARIES which has been
forgotten in this commit: http://lists.mysql.com/commits/40206
2008-04-30 16:36:11 +00:00
vasil
c9a62a2c37 branches/5.1:
Non-functional white space change in Makefile.am:
Use tabs for indentation and be consistent about spaces around the
equal sign.
2008-04-30 15:15:46 +00:00
vasil
b970909eca branches/5.1:
Merge change from MySQL:

  ChangeSet@1.2563, 2008-03-18 19:42:04+04:00, gluh@mysql.com +1 -0
    Bug#35406 5.1-opt crashes on select from I_S.REFERENTIAL_CONSTRAINTS
    added intialization of f_key_info.referenced_key_name for the case when
    referenced table is dropped
2008-04-30 15:04:36 +00:00
vasil
7a9313e5b3 branches/5.1:
Merge changes from MySQL:

  ChangeSet@1.2645, 2007-12-19 13:24:43+00:00, jperkin@chorlton.adsl.perkin.org.uk +14 -0
    Add new pkgplugindir handling to seperate plugins from libraries,
    and allow override for binary distributions.  Extend mysql_config
    to print compiled-in plugin location for third-party plugins to
    use.  Resolves bug#31736.

and

  ChangeSet@1.2646, 2008-01-02 13:00:46+00:00, jperkin@chorlton.adsl.perkin.org.uk +11 -0
    Use pkglibdir to simplify pkgplugindir, and fix the path in a
    couple of Makefiles.  Continuation of the fix for bug#31736.
2008-04-30 14:45:44 +00:00
vasil
9a2b24e7ea branches/5.1:
Add vim modeline to hint it that plug.in is a config file
so it can be colorized.
2008-04-30 08:02:35 +00:00
vasil
1c5a4b01dc branches/5.1:
Non-functional change: use tabs for indentation in plug.in.
2008-04-30 07:58:38 +00:00
vasil
7d084e0d93 branches/5.1:
Fix r2430, it should be CFLAGS="$CFLAGS ..." not CFLAGS="..."
2008-04-30 07:54:49 +00:00
vasil
8b55ceac27 branches/5.1:
Use CFLAGS instead of INNODB_CFLAGS to avoid having incompatible flags
inserted in CFLAGS and INNODB_CFLAGS and to avoid compiling mysql and
innodb with different flags.

Discussed with:	Sunny
2008-04-30 07:48:35 +00:00
vasil
e6ca57b1a2 branches/5.1:
* Use INNODB_CFLAGS insead of cluttering CFLAGS with InnoDB specific
  flags. CFLAGS are used to compile every file in the MySQL source tree.

* Add INNODB_DYNAMIC_CFLAGS to the flags of the dynamic plugin and use
  -prefer-non-pic to make the dynamic plugin faster on i386.

Approved by:	Sunny
2008-04-30 07:19:06 +00:00
vasil
1420a8558f branches/5.1:
Fix Bug#36169 create innodb compressed table with too large row size crashed

Sometimes it is possible that
row_drop_table_for_mysql(index->table_name, trx, FALSE); is invoked in
row_create_index_for_mysql() when the index object is freed so copy the
table name to a safe place beforehand and use the copy.

Approved by:	Sunny
2008-04-24 12:00:30 +00:00
calvin
ed668cc164 branches/5.1: Fix bug#35537 - Innodb doesn't increment handler_update
and handler_delete

Add the calls to ha_statistic_increment() in ha_innobase::delete_row()
and ha_innobase::update_row().
2008-04-24 11:32:30 +00:00
calvin
6ac1930117 branches/5.1: Fix bug#29507 TRUNCATE shows to many rows effected
In InnoDB, the row count is only a rough estimate used by SQL
optimization. InnoDB is now return row count 0 for TRUNCATE operation.
2008-04-24 11:25:30 +00:00
vasil
0b9ab341a8 branches/5.1:
Change the fix for Bug#32440 to show bytes instead of kilobytes in
INFORMATION_SCHEMA.TABLES.DATA_FREE.

Suggested by:	Domas Mituzas <domas@mysql.com>
Approved by:	Heikki
2008-04-23 15:08:06 +00:00
vasil
0f2bbae135 branches/5.1:
Swap the order in which mysql_thd, mysql_query_str and *mysql_query_str
are checked for non-NULL.

Suggested by:	Marko
2008-03-27 12:02:34 +00:00
vasil
ad25389eae branches/5.1:
Check whether *trx->mysql_query_str is != NULL in addition to
trx->mysql_query_str. This adds more safety.

This may or may not fix Bug#35226 RBR event crashes slave.
2008-03-27 06:49:05 +00:00
vasil
be05f50a34 branches/5.1:
Merge change from MySQL (this fixes the failing innodb test):

ChangeSet@1.1810.3601.4, 2008-02-07 02:33:21+04:00, gshchepa@host.loc +9 -0
  Fixed bug#30059.
  Server handles truncation for assignment of too-long values
  into CHAR/VARCHAR/TEXT columns in a different ways when the
  truncated characters are spaces:
  1. CHAR(N) columns silently ignore end-space truncation;
  2. TEXT columns post a truncation warning/error in the
     non-strict/strict mode.
  3. VARCHAR columns always post a truncation note in
     any mode.

  Space truncation processing has been synchronised over
  CHAR/VARCHAR/TEXT columns: current behavior of VARCHAR
  columns has been propagated as standard.

  Binary-encoded string/BLOB columns are not affected.
2008-03-27 05:45:02 +00:00
vasil
063bc007b7 branches/5.1:
Fix Bug#34300 Tinyblob & tinytext fields currupted after export/import and alter in 5.1

Copy the BLOB fields, that are stored internally, to a safe place
(prebuilt->blob_heap) when converting a row from InnoDB format to
MySQL format in row_sel_store_mysql_rec().

The bug was introduced in:

 ------------------------------------------------------------------------
 r587 | osku | 2006-05-23 15:35:58 +0300 (Tue, 23 May 2006) | 3 lines
 
 Optimize BLOB selects by using prebuilt->blob_heap directly instead of first
 reading BLOB data to a temporary heap and then copying it to
 prebuilt->blob_heap.
 ------------------------------------------------------------------------

Approved by:	Heikki
2008-03-26 16:26:54 +00:00
vasil
224f923761 branches/5.1:
Fix typo in comment.
2008-03-26 07:35:22 +00:00
sunny
fda1d273b3 branches/5.1: Fix for Bug# 35352. 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).
2008-03-21 03:03:56 +00:00
vasil
c87c4298da branches/5.1:
Fix Bug#34823:
fsync() occasionally returns ENOLCK and causes InnoDB to restart mysqld

Create a wrapper to fsync(2) that retries the operation if the error is
ENOLCK. Use that wrapper instead of fsync(2).

Approved by:	Heikki
2008-03-19 16:48:00 +00:00
vasil
3fe4b483a4 branches/5.1:
Fix Bug#35220 ALTER TABLE too picky on reserved word "foreign".
 
In ALTER TABLE, change the internal parser to search for
``FOREIGN[[:space:]]'' instead of only ``FOREIGN'' when parsing
ALTER TABLE ... DROP FOREIGN KEY ...; otherwise it could be mistaken
with ALTER TABLE ... DROP foreign_col;
 
Approved by:	Heikki
2008-03-18 07:35:30 +00:00
marko
cbf6c76a44 branches/5.1: ha_innobase::check_if_incompatible_data(): Check
HA_CREATE_USED_ROW_FORMAT before comparing row_type.  Previously,
the comparison was incorrectly guarded by the presence of an
AUTO_INCREMENT attribute.
2008-03-17 08:23:03 +00:00
sunny
aa96dab4ee branches/5.1: Remove the innodb_flush_method fdatasync option since it was
not being used and there was a potential it could mislead users.
2008-03-12 07:08:09 +00:00
vasil
713f8b7093 branches/5.1:
Merge changes from MySQL AB.
2008-03-11 16:50:50 +00:00
sunny
4c24bf2cec branches/5.1: Checked in the wrong test results in r2353. This commit has
the correct result set.
2008-03-11 14:20:59 +00:00
sunny
e89ab3bf1d branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a
new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed
the assertion where it crashed previously, since the type has now changed
to unsigned, it doesn't make sense to check for < 0. Added new tests, to
check for overflow, for the different INT types supported for both
signed and unsigned.

Fixes Bug# 34335
2008-03-05 20:23:39 +00:00
sunny
101643c67d branches/5.1: Fix Bug# 34920. We need to use/inherit the passed in autoinc
counter for ALTER TABLE statements too.
2008-03-03 22:50:15 +00:00
vasil
f6089d5bb5 branches/5.1:
Merge r2294 from branches/5.0:

Fix typo and add comma in comment.
2008-02-11 15:51:03 +00:00
vasil
5b92c4ecb8 branches/5.1:
Fix Bug#34053:
* In CREATE TABLE and DROP TABLE check whether the table in question is one
  of the magic innodb_monitor tables and whether the user has enough rights
  to mess with it before doing anything else.
* Implement a mysql-test testcase.

Approved by:	Heikki
2008-02-07 12:02:06 +00:00
vasil
44a1a6ba94 branches/5.1:
Fix typo in comment.
2008-02-05 14:30:41 +00:00
vasil
0178566370 branches/5.1:
Rename the user visible parameter innodb-use-adaptive-hash-indexes to
innodb-adaptive-hash-index so that it is in sync with MySQL 5.0.

Suggested by:	Heikki
Approved by:	Heikki
2008-02-05 13:29:30 +00:00
inaam
baf6b527ab branches/5.1: Port of r2267
This is a combination of changes that forward port the scalability fix applied to 5.0
through r1001.
It reverts changes r149 and r122 (these were 5.1 specific changes made in lieu of
scalability fix of 5.0)
Then it applies r1001 to 5.0 which is the original scalability fix.
Finally it applies r2082 which fixes an issue with the original fix.

Reviewed by: Heikki
2008-02-03 19:52:44 +00:00
marko
fc40679f02 branches/5.1:
innodb.result: Fix results after merging changes from MySQL.  Maybe some
changes were incorrectly merged in the past?
2008-01-28 14:37:09 +00:00
marko
ec0932d075 branches/5.1: Merge a change from MySQL AB:
ChangeSet@2007-11-27 09:25:45+01:00, istruewing@stella.local 
Bug#32754 - InnoDB tests do not prepare or clean up correctly
    
Some test cases were missing preparation to deal with failed
predecessor test cases.
    	  
Added preparation (drop table if exists) to some test cases.

innodb-semi-consistent.test: Added preparation (drop table if exists).
2008-01-28 14:07:57 +00:00
marko
e04e3594f2 branches/5.1: Merge a change from MySQL AB:
ChangeSet@2007-10-13 15:49:42+03:00, aelkin@koti.dsl.inet.fi

Bug #29136 erred multi-delete on trans table does not rollback the statement

innodb.test, innodb.result: trans table specific test added
2008-01-28 14:04:10 +00:00
vasil
7f016e0c92 branches/5.1:
Fix formatting of the autoinc-lock-mode command line parameter.

Old view (./mysqld --help --verbose):

  --innodb-autoinc-lock-mode=#
                      The AUTOINC lock modes supported by InnoDB:
  0 => Old
                      style AUTOINC locking (for backward compatibility)
  1 =>
                      New style AUTOINC locking
  2 => No AUTOINC locking
                      (unsafe for SBR)

New view:

  --innodb-autoinc-lock-mode=#
                      The AUTOINC lock modes supported by InnoDB:
                      0 => Old style AUTOINC locking (for backward
                      compatibility)
                      1 => New style AUTOINC locking
                      2 => No AUTOINC locking (unsafe for SBR)

Looks like these strings are "automatically" wrapped by MySQL in the
following way:
* newlines (\n) in the string are ignored
* newline separator (\n) is inserted every 57 or so characters.
* lots of white space is appended to each inserted new line.

Approved by:	Heikki
2008-01-16 13:50:51 +00:00