Commit graph

661 commits

Author SHA1 Message Date
inaam
29e369621b branches/5.1: bug#33349
Introduce retry/sleep logic as a workaround for a transient bug
where ::open fails for partitioned tables randomly if we are using
one file per table.


Reviewed by: Heikki
2008-01-15 03:22:37 +00:00
vasil
e8e7816e5e branches/5.1:
Merge change from MySQL AB:

ChangeSet@1.2639, 2007-11-23 12:51:14+01:00, mkindahl@dl145h.mysql.com +7 -0
  Post-merge fixes.

  mysql-test/r/innodb.result@1.206, 2007-11-23 12:51:10+01:00, mkindahl@dl145h.mysql.com +1 -1
    Result change.
2008-01-04 15:38:59 +00:00
vasil
d34758a239 branches/5.1:
Merge change from MySQL AB:

ChangeSet@1.2616, 2007-12-01 19:55:06+01:00, tnurnberg@mysql.com +8 -0
  Bug#31177: Server variables can't be set to their current values
 
  5.1+ specific fixes (plugins etc.)

  mysql-test/r/innodb.result@1.204, 2007-12-01 19:55:04+01:00, tnurnberg@mysql.com +2 -2
    we throw warnings to the client, yea, verily
2008-01-04 15:29:32 +00:00
vasil
303d1c4091 branches/5.1:
Merge change from MySQL AB:

ChangeSet@1.2557, 2007-11-28 19:43:50+01:00, tnurnberg@mysql.com +21 -0
  Bug#31177: Server variables can't be set to their current values

  Default values of variables were not subject to upper/lower bounds
  and step, while setting variables was. Bounds and step are also
  applied to defaults now; defaults are corrected quietly, values
  given by the user are corrected, and a correction-warning is thrown
  as needed. Lastly, very large values could wrap around, starting
  from 0 again. They are bounded at the maximum value for the
  respective data-type now if no lower maximum is specified in the
  variable's definition.

  mysql-test/r/innodb.result@1.171, 2007-11-28 19:43:48+01:00, tnurnberg@mysql.com +4 -0
    We throw a warning now when we adjust out of range parameters.
2008-01-04 15:17:59 +00:00
vasil
e953b039ea branches/5.1:
Merge change from MySQL AB:

ChangeSet@1.2612, 2007-11-07 19:59:58+04:00, ramil@mysql.com +6 -0
  Fix for bug #26447: "ALTER TABLE .. ORDER" does not work with InnoDB
  and auto_increment keys

  Problems:
    1. ALTER TABLE ... ORDER BY... doesn't make sence if there's a
       user-defined clustered index in the table.
    2. using a secondary index is slower than using a clustered one
       for a table scan.

  Fixes:
    1. raise a warning.
    2. use the clustered index.

  mysql-test/r/innodb.result@1.203, 2007-11-07 19:59:56+04:00, ramil@mysql.com +15 -15
    Fix for bug #26447: "ALTER TABLE .. ORDER" does not work with InnoDB
    and auto_increment keys
      - results adjusted.
2008-01-04 14:45:16 +00:00
vasil
642df820b0 branches/5.1:
Merge change from MySQL AB:

ChangeSet@1.2541, 2007-10-13 15:49:42+03:00, aelkin@koti.dsl.inet.fi +10 -0
  Bug #29136 erred multi-delete on trans table does not rollback the statement
 
  similar to bug_27716, but it was stressed on in the synopsis on that there is another
  side of the artifact affecting behaviour in transaction.

  Fixed with deploying multi_delete::send_error() - otherwise never called - and refining its logic
  to perform binlogging job if needed.

  The changeset includes the following side effects:
  - added tests to check bug_23333's scenarios on the mixture of tables for multi_update;
  - fixes bug@30763 with two-liner patch and a test coinciding to one added for bug_23333.
  
  mysql-test/r/innodb.result@1.171, 2007-10-13 15:49:36+03:00, aelkin@koti.dsl.inet.fi +15 -2
    results changed

  mysql-test/t/innodb.test@1.145, 2007-10-13 15:49:37+03:00, aelkin@koti.dsl.inet.fi +32 -0
    trans table specific test added
2008-01-04 14:18:29 +00:00
sunny
9cd1268e4a branches/5.1: Remove unused field can_be_too_old from read_view_struct. 2007-12-19 03:58:36 +00:00
vasil
7f682c9665 branches/5.1:
Merge r2177 from trunk/:

Fix Bug#29157 "UPDATE, changed rows incorrect":

Return HA_ERR_RECORD_IS_THE_SAME from ha_innobase::update_row() if no
columns were updated.
2007-12-13 14:05:51 +00:00
vasil
b284fbc7f8 branches/5.1:
Merge r2166:2168 from trunk/:

Bug#32440:

Put information about the free space in a tablespace in
INFORMATION_SCHEMA.TABLES.DATA_FREE. This information was previously
available in INFORMATION_SCHEMA.TABLES.TABLE_COMMENT, but MySQL has
removed it from there recently.

The stored value is in kilobytes.

This can be considered as a permanent workaround to
http://bugs.mysql.com/32440. "Workaround" becasue that bug is about the
data missing from TABLE_COMMENT and this is actually not solved.
2007-12-11 14:12:10 +00:00
vasil
792a8e2d42 branches/5.1:
Merge r2160 from trunk/:

Fix Bug#18942 by dropping all foreign key constraints at the end of
DROP DATABASE. Usually, by then, there are no foreign constraints
left because all of them are dropped when the relevant tables are
dropped. This code is to ensure that any orphaned FKs are wiped too.
2007-12-06 08:21:22 +00:00
marko
88cdf19670 branches/5.1: Merge r2154 from trunk:
innodb.result, innodb.test: Revert the changes in r2145.

The tests that were removed by MySQL

ChangeSet@1.2598.2.6  2007-11-06 15:42:58-07:00  tsmith@hindu.god

were moved to a new test, innodb_autoinc_lock_mode_zero, which is
kept in the MySQL BitKeeper tree.
2007-12-04 08:33:27 +00:00
marko
e30795e668 branches/5.1: Copy from trunk. From now on, trunk will refer to
MySQL/InnoDB version 6.0, and any changes to MySQL/InnoDB 5.1 will
be made in branches/5.1.
2007-11-30 12:47:33 +00:00
marko
cac20a3ae6 convert_error_code_to_mysql(): Do not call thd_mark_transaction_to_rollback()
when thd is NULL.
2007-11-30 12:20:56 +00:00
marko
cd51e62255 Revert the changes that were reverted in r2144 to get a source tree that
is an exact match of a MySQL BitKeeper tree.

Apply r2116:
------------------------------------------------------------------------
r2116 | vasil | 2007-11-23 19:10:17 +0200 (pe, 23 marras 2007) | 6 lines

Set trx->mysql_query_str to NULL at transaction commit.
It could be a problem if someone looks at it after that because MySQL may
have free()d it then.

Approved by:    Heikki (via IM)
------------------------------------------------------------------------

innodb.test, innodb.result:
Add some tests that were apparently accidentally removed in
ChangeSet@1.2598.2.6  2007-11-06 15:42:58-07:00  tsmith@hindu.god
Apply snapshot innodb-5.1-ss1989

ha_innodb.cc: Add a decorative comment.
2007-11-30 12:02:40 +00:00
marko
39d58ce475 Make our 5.1 tree an exact copy of the MySQL source tree.
Revert r2116:
------------------------------------------------------------------------
r2116 | vasil | 2007-11-23 19:10:17 +0200 (pe, 23 marras 2007) | 6 lines

Set trx->mysql_query_str to NULL at transaction commit.
It could be a problem if someone looks at it after that because MySQL may
have free()d it then.

Approved by:    Heikki (via IM)
------------------------------------------------------------------------

innodb.test, innodb.result:
Remove some tests that were apparently accidentally removed in
ChangeSet@1.2598.2.6  2007-11-06 15:42:58-07:00  tsmith@hindu.god
Apply snapshot innodb-5.1-ss1989

ha_innodb.cc: Remove a decorative comment.

This tree should be an exact match of the following MySQL source tree:

bk://mysql.bkbits.net/mysql-5.1
ROOTKEY=3985cf0cwNRCED_XNSCA7RvkLPer2Q
TIPKEY=47447c7cTrSPx22mH8PXNmurrycaaw

bkf changes | head

ChangeSet@1.2634.1.2, 2007-11-21 19:42:50+01:00, df@pippilotta.erinye.com +1 -0
  Merge pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.0-build
  into  pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.1-build
  MERGE: 1.1810.3425.2

ChangeSet@1.1810.3425.2, 2007-11-21 19:41:13+01:00, df@pippilotta.erinye.com +1 -0
  add wrong warning to suppression file

ChangeSet@1.2634.1.1, 2007-11-21 19:33:27+01:00, df@pippilotta.erinye.com +1 -0
  Merge pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.0-build
  into  pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.1-build
  MERGE: 1.1810.3425.1

ChangeSet@1.1810.3425.1, 2007-11-21 18:11:08+01:00, df@pippilotta.erinye.com +1 -0
  ignore readline warnings

ChangeSet@1.2635, 2007-11-21 15:06:38+01:00, mleich@five.local.lan +6 -0
  Merge five.local.lan:/work/merge/mysql-5.0-build-30418
  into  five.local.lan:/work/merge/mysql-5.1-build-31610
  MERGE: 1.1810.3284.72
2007-11-30 11:45:26 +00:00
marko
3ace59363f ha_innobase::get_auto_increment(): Add a comment that was accidentally
removed in r2137, when merging a change from MySQL AB.
2007-11-30 11:41:22 +00:00
marko
dfa1f85bc6 Merge a change from MySQL AB:
ChangeSet@1.2528.124.3  2007-08-14 15:35:19-06:00  tsmith@hindu.god

Updates to allow innodb.test to be run with --embedded-server,
including a small change to build_table_filename().

innodb.test, innodb.result:

Updates to allow innodb.test to be run with --embedded-server
2007-11-30 09:59:17 +00:00
marko
34e17c7f73 Merge a change from MySQL AB:
ChangeSet@1.2598.6.1  2007-11-07 12:59:22-07:00  tsmith@hindu.god

Cast away compiler warning on Windows.

ha_innodb.cc:

Cast away a compiler warning; some functions return ulong or ulint for
errors, and some use int.  Let's hope these all fit in an int.
2007-11-30 09:52:49 +00:00
marko
45579db460 Merge a change from MySQL AB:
ChangeSet@1.2528.116.44  2007-09-12 18:16:50-07:00  antony@xiphis.org

Changes for pushbuild test runs and VSC compile warnings

ha_innodb.cc:

resolve a VSC++ typecast compile warning.
2007-11-30 09:44:34 +00:00
marko
9e014647e8 Merge a change from MySQL AB:
ChangeSet@1.2528.116.43  2007-09-12 13:35:39-07:00  antony@xiphis.org

undo unneccessary change to ha_innodb.cc
remove 'drop database' from new tests.

ha_innodb.cc:

undo unneccessary edits.
2007-11-30 09:43:06 +00:00
marko
2928e930d8 Merge a change from MySQL AB:
ChangeSet@1.2528.116.42  2007-09-08 20:26:12-07:00  antony@xiphis.org

Bug#30919
  "Rows not deleted from innodb partitioned tables if
  --innodb_autoinc_lock_mode=0"

  Due to a previous bugfix which initializes a previously uninitialized
  variable, ha_partition::get_auto_increment() may fail to operate
  correctly when the storage engine reports that it is only reserving
  one value and one or more partitions have a different 'next-value'.
  Currently, only affects Innodb's new-style auto-increment code which
  reserves larger blocks of values and has less inter-thread contention.

ha_innodb.cc:
Bug30919
  Only set *first_value if it is less than autoinc value. This allows
  a higher value to be hinted when operating as a partitioned table.
2007-11-30 09:40:20 +00:00
marko
7acad9f372 Merge a change from MySQL AB:
ChangeSet@1.2528.116.40  2007-09-08 11:19:35-07:00  acurtis@xiphis.org

Bug#30907
  "Regression: "--innodb_autoinc_lock_mode=0" (off) not same as older releases"
Bug#28430
  "Failure in replication of innodb partitioned tables on row/mixed format"
Bug#30888
  "Innodb table + stored procedure + row deletion = server crash"

  Apply Oracle patch from Sunny
  Include tests cases by Omer
  Ensure that innobase_read_and_init_auto performs table autoinc lock when
  lock_mode = 0
  No need for "if" guard around row_unlock_table_autoinc_for_mysql() because
  it already performs same check.
  Make autoinc_lock_mode variable read-only for duration of running
  mysqld process.

ha_innodb.cc:
Bug30907/28430
  "Regression: "--innodb_autoinc_lock_mode=0" (off) not same as older releases"
  "Failure in replication of innodb partitioned tables on row/mixed format"
  Apply Oracle patch from Sunny
  Ensure that innobase_read_and_init_auto performs table autoinc lock when
  lock_mode = 0
  No need for "if" guard around row_unlock_table_autoinc_for_mysql() because
  it already performs same check.
  Make autoinc_lock_mode variable read-only for duration of running
  mysqld process.
2007-11-30 09:36:27 +00:00
marko
ee1cb5eb16 Merge a change from MySQL AB:
ChangeSet@1.2528.24.43  2007-08-02 02:22:31-06:00  tsmith@hindu.god

Post-merge fix, add InnoDB compatibility hook (defined for
InnoDB only), thd_mark_transaction_to_rollback().
2007-11-30 09:25:46 +00:00
vasil
0abb7212df Set trx->mysql_query_str to NULL at transaction commit.
It could be a problem if someone looks at it after that because MySQL may
have free()d it then.

Approved by:	Heikki (via IM)
2007-11-23 17:10:17 +00:00
marko
a8715a9a1d convert_search_mode_to_innobase(): Add the missing case label
HA_READ_MBR_EQUAL that was forgotten in r2088.
2007-11-16 13:03:21 +00:00
marko
7179991679 Remove the unused function innobase_convert_from_filename() that was
inadvertently added in r590.
2007-11-16 12:59:33 +00:00
vasil
96889ca97d Non-functional change: convert the switch in convert_search_mode_to_innobase()
to the InnoDB coding style.
2007-11-14 13:15:24 +00:00
vasil
38884f4539 Fix Bug#32125 (http://bugs.mysql.com/32125)
"Database crash due to ha_innodb.cc:3896: ulint convert_search_mode_to_innobase":

When unknown find_flag is encountered in convert_search_mode_to_innobase()
do not call assert(0); instead queue a MySQL error using my_error() and
return the error code PAGE_CUR_UNSUPP. Change the functions that call
convert_search_mode_to_innobase() to handle that error code by "canceling"
execution and returning appropriate error code further upstream.

Approved by:	Heikki (via IM)
2007-11-14 12:49:24 +00:00
vasil
9287a6f708 * Make ./setup.sh sh compliant by avoiding bash-specific syntax.
* Make the heading line #!/bin/sh. /bin/bash is non-standard.

Approved by:	Marko
2007-10-31 08:27:53 +00:00
sunny
0924601f0d Fix for Bug# 31860, in the Bug 16979 fix there was an erroneous assertion that
autoincrement columns can't contain negative values. With the fix, the
autoincrement table counter is set to 0 if the maximum value read from
the autoinc column index is negative.

Add test for the bug fix but the test is not really useful as the server
needs to be restarted half way through the test. It has been added for 
reference only.
2007-10-26 16:51:40 +00:00
sunny
d256803434 Remove ut_print_timestamp(), this should have been removed when the following
changes were made by MySQL.

	ChangeSet@1.1810.467.1  2005-08-11 19:19:20+03:00  jani@omakaista.fi

Fix error message so that it conforms to "  InnoDB: Error: ...".
2007-10-25 01:17:40 +00:00
marko
91c7b692f4 Use "InnoDB:" prefix in error messages. 2007-10-24 11:35:23 +00:00
marko
2d18390051 UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Remove warnings on 64-bit systems. 2007-10-24 10:49:11 +00:00
sunny
3973a43041 Suppress printing of deadlock errors while reading the autoinc value.
DB_DEADLOCK errors are part of normal processing and excessive printing
of these error messages could be disconcerting for users.
2007-10-17 11:44:41 +00:00
marko
62e98cd050 Set an error code when a deadlock occurs in semi-consistent read. (Bug #31494)
innodb-semi-consistent: New tests for InnoDB semi-consistent reads.
Unfortunately, these will not trigger Bug #31494, because there merely
occur lock wait timeouts, not deadlocks.
2007-10-17 05:36:42 +00:00
sunny
96fc36b9cf Bug fix: The problem was that when write_row() attempted to update the max
autoinc value, and if it was rolled back because of a deadlock, the 
deadlock error (transaction rollback) was not being propagated back to MySQL.
2007-10-16 11:08:35 +00:00
sunny
3e3edcfa19 Prevent loading of tables that have unsupported features most notably
FTS indexes.
2007-10-12 16:40:42 +00:00
marko
b48d3b6694 ibuf_insert_to_index_page(): Fix typos in diagnostic output. 2007-10-12 08:29:45 +00:00
marko
513d4c8ece UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Display also __FILE__ and __LINE__
when these Valgrind checks fail.
2007-10-05 09:53:22 +00:00
marko
e41bf72db5 mem_heap_free_top(): Remove a bogus Valgrind warning. 2007-10-03 08:36:20 +00:00
marko
f025ce2cb9 ut_print_buf(): Add a Valgrind check that the buffer is wholly defined. 2007-10-03 07:36:33 +00:00
marko
cc78f6ed7f Improve Valgrind instrumentation.
rec_offs_set_n_alloc(): Use UNIV_MEM_ASSERT_AND_ALLOC().

UNIV_MEM_ASSERT_AND_ALLOC(): New directive, similar to
UNIV_MEM_ASSERT_AND_FREE().
2007-09-28 05:56:09 +00:00
sunny
ff8221a856 Add debug lock checks to autoinc functions. Add lock guards around an
invocation of dict_table_autoinc_initialize().
2007-09-25 07:16:56 +00:00
marko
7815285f3e Merge a change from MySQL AB:
ChangeSet@1.2560  2007-09-21 10:15:16+02:00  gkodinov@local

ha_innodb.cc: fixed type conversion warnings revealed by bug 30639
2007-09-24 11:28:51 +00:00
marko
352a5858ed Merge a change from MySQL AB:
ChangeSet@1.2528.115.30  2007-08-28 10:17:15-06:00  tsmith@hindu.god

Fix another compiler warning on Windows in InnoDB.

ha_innodb.cc:

Fix compiler warning: ::get_auto_increment takes a ulonglong
for nb_desired_values, but InnoDB's trx struct stores it as
a ulint (unsigned long).  Probably harmless, as a single
statement won't be asking for more than 2^32 rows.
2007-09-24 11:26:57 +00:00
marko
918dc1ab23 Merge changes from MySQL AB:
ChangeSet@1.2528.115.25  2007-08-27 18:18:14-06:00  tsmith@hindu.god

Fix some Windows compiler warnings.

dict0mem.c: Fix compiler warning with a cast.

ha_innodb.cc: Change type to fix a compiler warning.
2007-09-24 11:23:24 +00:00
marko
36529dd558 Merge changes from MySQL to the MySQL-owned file CMakeLists.txt:
ChangeSet@1.2528.109.1  2007-08-06 23:16:01+02:00  kent@(none)
  Additional changes for bug#29903
2007-09-24 11:18:41 +00:00
vasil
24a3afc084 snprintf() should always return non-negative result. According to
Microsoft documentation about _vscprintf():

  If format is a null pointer, the invalid parameter handler is invoked,
  as described in Parameter Validation. If execution is allowed to
  continue, the functions return -1 and set errno to EINVAL.

The UNIX variant of snprintf() segfaults if format is a NULL pointer
(similar to strlen(NULL) for example), so it is better to conform to
this behavior and crash our custom Windows version instead of
returning -1. Noone would expect -1 to be returned from snprintf().

Cosmetic: Add a space after typecast.

Approved by:	Marko
2007-09-21 13:35:00 +00:00
vasil
0044736fa3 Revert r1850 as MySQL did not approve the addition.
log for r1850:

Implement this feature request:
http://bugs.mysql.com/30706

* Add a function that returns the number of microseconds since
  epoch - ut_time_us().

* Add (innodb|innobase|srv)_replication_delay MySQL config parameter.

* Add UT_WAIT_FOR() macro that waits for a specified condition to occur
  until a timeout elapses.

* Using all of the above, handle the replication thread specially in
  srv_conc_enter_innodb().
2007-09-20 14:37:03 +00:00
vasil
2ca1d286ce Add ut_snprintf() function. On Windows this needs to be implemented
using auxiliary functions because there is no snprintf-variant on
Windows that behaves exactly as specified in the standard:

* Always return the number of characters that would have been printed
  if the size were unlimited (not including the final `\0').
* Always '\0'-terminate the result
* Do not touch the buffer if size=0, only return the number of characters
  that would have been printed. Can be used to estimate the size needed
  and to allocate it dynamically.

See http://www.freebsd.org/cgi/query-pr.cgi?pr=87260 for the reason why
2 ap variables are used.

Approved by:	Heikki
2007-09-19 17:13:46 +00:00