Commit graph

1342 commits

Author SHA1 Message Date
michael
337c4d9561 branches/zip: rb://53
Final version of rb://53, fixes the styling of a comment, makes
the definition and the declaration of thd_supports_xa() identical commentwise.
2008-11-17 14:02:01 +00:00
michael
c6227f3766 branches/zip:
rb://53

Improve innodb_supports_xa system variable handling and 
reduces the number of retrievals of the value from MySQL.

Approved by: Marko, over IM
2008-11-17 12:56:56 +00:00
marko
69a89b02b4 branches/zip: row_vers_impl_x_locked_off_kernel(): Remove compilation
warnings about prev_trx_id and vers_del being possibly uninitialized,
by handling the case prev_version == NULL in a single if block.

rb://45 approved by Inaam Rana.
2008-11-12 11:52:57 +00:00
marko
d7abedcdbb branches/zip: dtuple_validate(): When UNIV_DEBUG_VALGRIND is defined,
rely solely on the UNIV_MEM_ASSERT_RW() check and disable the for loop
that would only cause additional noise.
2008-11-12 10:34:30 +00:00
marko
426fccde9f branches/zip: ha_innobase::create(): Remove the dependences on
DICT_TF_ZSSIZE_MAX, so that the code can be compiled with a different
uncompressed page size by redefining UNIV_PAGE_SIZE_SHIFT in univ.i.
Currently, the allowed values are 12, 13, or 14 (4k, 8k, 16k).

Make the default compressed page size half the uncompressed page size.
The previous default was 8 kilobytes, which is the same when compiling
with the default 16k uncompressed page size.

rb://50 approved by Pekka Lampio and Sunny Bains.
2008-11-11 07:28:37 +00:00
calvin
bf9b5f06c5 branches/zip: windows plugin - fix references to array variables.
This problem surfaced when running new test innodb_bug40360.test. Both
tx_isolation_names and binlog_format_names are name arrays, and
should be defined as wdl_tx_isolation_names and wdl_binlog_format_names,
not *wdl_tx_isolation_names and *wdl_binlog_format_names.

Another array variable is all_charsets, which is already correctly
defined.

Approved by:	Marko (on IM)
2008-11-04 10:43:14 +00:00
calvin
9b11f7d809 branches/zip: ignore the failure when builtin_innobase_plugin is not
available.

External variable builtin_innobase_plugin is not available when mysqld
does not have a builtin InnoDB. The init of the Windows plugin should
not fail in this case. 

Approved by:	Marko (on IM)
2008-11-04 07:15:26 +00:00
marko
5b4736c687 branches/zip: scripts/install_innodb_plugins_win.sql: New script,
for installing the InnoDB plugins in Windows.  Copied from
scripts/install_innodb_plugins.sql.
2008-10-31 12:21:43 +00:00
vasil
b95ccf918c branches/zip:
White-space cleanup in ChangeLog.
2008-10-31 09:47:56 +00:00
vasil
375e975071 branches/zip:
Fix Mantis issue#106 plugin init error:InnoDB: stats_on_metadata in static
InnoDB (flags=0x2401) differs from stats_on_metadata in dynamic InnoDB (fl

Ignore the NOSYSVAR flag in addition to ignoring the READONLY flag.

Approved by:	Marko (https://svn.innodb.com/rb/r/42/)
2008-10-31 09:39:07 +00:00
calvin
a019e95a43 branches/zip: Windows plugin part of r2944
r2944 has reference to mysql_bin_log.is_open(), which is new in InnoDB.
Add two new entries and remove one duplicate in mysqld.def & 
mysqld_x64.def.
2008-10-31 08:38:26 +00:00
marko
ede49be9fc branches/zip: Revert the unintended change to univ.i that was made in r2943. 2008-10-31 08:18:47 +00:00
sunny
b5c757cb14 branches/zip: Update ChangeLog with r2943 info. 2008-10-31 07:44:45 +00:00
vasil
729ff1ad34 branches/zip:
Revert our temporary fix for "Bug#40360 Binlog related errors with binlog off"
(r2935, r2936) and deploy MySQL's one, but put the function
mysql_bin_log_is_engaged() inside mysql_addons.cc instead of in mysql's log.cc
and use a different name for it so there is no collision when MySQL adds this
function in log.cc.

[note from the future: the windows part of this patch went into r2947]

Approved by:	Marko (https://svn.innodb.com/rb/r/41/)
2008-10-31 07:44:16 +00:00
sunny
7fed1c703e branches/zip:
1. We add a vector of locks to trx_t. This array contains the autoinc
  locks granted to a transaction. There is one per table.

  2. We enforce releasing of these locks in the reverse order from the
  one in which they are acquired. The assumption is that since the
  AUTOINC locks are statement level locks. Nested statements introduced
  by triggers are stacked it should hold.

There was some cleanup done to the vector code too by adding const and
some new functions. Rename dict_table_t::auto_inc_lock to autoinc_lock.

Fix Bug#26316 Triggers create duplicate entries on auto-increment columns
rb://22
2008-10-31 07:40:29 +00:00
vasil
eb1b8095ff branches/zip:
Increment the InnoDB Plugin version from 1.0.1 to 1.0.2.
2008-10-30 17:34:27 +00:00
marko
acf0e85e32 branches/zip: ChangeLog, ha_innodb.def: Set svn:eol-style native 2008-10-30 10:46:21 +00:00
marko
1ac429bcd6 branches/zip: Set svn:eol-style native on some recently added text files. 2008-10-30 10:38:18 +00:00
vasil
39b7e02a18 branches/zip:
Non-functional change: convert handler/handler0vars.h and
handler/win_delay_loader.cc from \r\n (dos) to \n (unix) line terminators.
2008-10-30 10:33:28 +00:00
vasil
05cb12e611 branches/zip:
Add ChangeLog entry for Bug#40360 Binlog related errors with binlog off
2008-10-30 10:28:47 +00:00
vasil
69977f27fe branches/zip:
Followup to r2935: add the Windows Delay Loader stuff for the MySQL
variable that we are accessing. If someday we have another solution for
Bug#40360 Binlog related errors with binlog off
then this should also be reverted.
2008-10-30 10:24:09 +00:00
vasil
c368f38f4d branches/zip:
Fix "Bug#40360 Binlog related errors with binlog off" in InnoDB code in order
to have a Bug#40360-free InnoDB Plugin 1.0.2.

The fix does check whether binary logging is enabled in MySQL by accessing the
opt_bin_log global variable that is defined in sql/mysqld.cc.

In case MySQL does develop another solution to this via Bug#40360 then we can
revert this patch (except the mysql-tests).

The windows-plugin part of this fix will be committed as a separate commit to
ease eventual merge into branches/5.1 [note from the future: the separate
commit went into r2936].

Approved by:	Marko (https://svn.innodb.com/rb/r/39)
2008-10-30 10:17:23 +00:00
vasil
0f2b6ec668 branches/zip:
Add 2 ChangeLog entries for the 2 bugfixes that were merged from branches/5.1.
2008-10-29 20:10:40 +00:00
marko
bd3514db33 branches/zip: Merge revisions 2854:2929 from branches/5.1,
except r2924, which was merged from branches/zip r2866 to branches/5.1
and except r2879 which was merged separately by Calvin:

  ------------------------------------------------------------------------
  r2902 | vasil | 2008-10-28 12:10:25 +0200 (Tue, 28 Oct 2008) | 10 lines

  branches/5.1:

  Fix Bug#38189 innodb_stats_on_metadata missing

  Make the variable innodb_stats_on_metadata visible to the users and
  also settable at runtime. Previously it was only "visible" as a command
  line startup option to mysqld.

  Approved by:    Marko (https://svn.innodb.com/rb/r/36)
  ------------------------------------------------------------------------
  r2929 | marko | 2008-10-29 21:26:14 +0200 (Wed, 29 Oct 2008) | 13 lines

  branches/5.1: dtype_get_sql_null_size(): return the correct storage
  size of a SQL NULL column. (Bug #40369)

  When MySQL Bug #20877 was fixed in r834, this function was
  accidentally modified to return 0 or 1. Apparently, the only impact of
  this bug is that fixed-length columns cannot be updated in-place from
  or to SQL NULL, even in ROW_FORMAT=REDUNDANT.  After this fix,
  fixed-length columns in ROW_FORMAT=REDUNDANT will have a constant
  storage size as they should, no matter if NULL or non-NULL.  The bug
  caused fixed-length NULL columns to occupy 1 byte.

  rb://37 approved by Heikki over IM.
  ------------------------------------------------------------------------
2008-10-29 19:39:24 +00:00
michael
a81e8ca892 Remove unnecessary assert
Approved by: Heikki, over IM
2008-10-29 17:20:10 +00:00
marko
e2656dba61 branches/zip: ha_innodb.cc: Make some functions static, so that they will
not be compiled as weak global symbols.  These functions must not be
redirected to the built-in InnoDB.
2008-10-29 09:43:23 +00:00
calvin
06bdbaa27f branches/zip: change function names in sql/mysqld.def in order
to work with 5.1.29-rc.

In 5.1.29, the following function names are changed:
  _hash_init
  hash_free
  hash_search
  hash_delete

changed to
  _my_hash_init
  my_hash_free
  my_hash_search
  my_hash_delete

Approved by:	Marko (on IM)
2008-10-29 08:09:41 +00:00
marko
1e66bf4019 branches/zip: ChangeLog: Mention Bug #27276. 2008-10-29 07:52:30 +00:00
calvin
b7d0a7770a branches/zip: fix issue #102 - Windows plugin: resolve dbug functions
during run-time.

Implement wrapper functions in the plugin. The plugin will get the
function entries from mysqld.exe during the init, and invoke the
corresponding functions (in mysqld.exe). The list of functions are:

	_db_pargs_
	_db_doprnt_
	_db_enter_
	_db_return_
	_db_dump_

rb://38

Approved by:	Marko
2008-10-29 06:29:01 +00:00
calvin
191409aaa7 branches/zip: fix a problem introduced in r2917 - dyn is not
initialized. Move the check into for().
2008-10-28 22:08:11 +00:00
marko
b80665e409 branches/zip: innodb_plugin_init(): Do not copy session variables,
even when the variable is a global variable in the built-in InnoDB.
2008-10-28 21:53:23 +00:00
vasil
1c3838f0bf branches/zip:
ChangeLog:

add entry for the Windows plugin.
2008-10-28 06:40:45 +00:00
marko
f3f2de1614 branches/zip: dict_str_starts_with_keyword(): Removed this unused function.
Spotted by Sunny.
2008-10-28 06:36:39 +00:00
calvin
117ae892ad branches/zip: for building dynamic plugin on Windows, ha_innodb.dll,
when INNODB_DYNAMIC_PLUGIN is specified.

The changes are:

CMakeLists.txt: add project ha_innodb for dynamic plugin on Windows.
ha_innodb depends on project mysqld.

ha_innodb.def: a new file with standard exports for a dynamic plugin.

Two new files will be added:
 * sql/mysqld.def:	.def file for 32-bit compiler
 * sql/mysqld_x64.def:	.def file for x64 compiler

It is also required to apply a patch to the MySQL source tree. The 
patch is described in win-plugin/README:

win-plugin/win-plugin.diff - a patch to be applied to MySQL source
tree. When applied, the following files will be modified:
 * CMakeLists.txt:	add INNODB_DYNAMIC_PLUGIN and _USE_32BIT_TIME_T
 * sql/CMakeLists.txt:	add mysqld.def or mysqld_x64.def for mysqld
 * win/configure.js:	add INNODB_DYNAMIC_PLUGIN
 * win/build-vs71.bat:	provide an option to specify CMAKE_BUILD_TYPE
 * win/build-vs8.bat:	provide an option to specify CMAKE_BUILD_TYPE
 * win/build-vs8_x64.bat: provide an option to specify CMAKE_BUILD_TYPE
2008-10-27 23:51:49 +00:00
calvin
fd6831625c branches/zip: implement the delayloading of externals for the plugin
on Windows, which includes:

 * Load mysqld.map and insert all symbol/address pairs into hash for
   quick access
 * Resolves all external data variables. The delayloading mechanism
   in MSVC does not support automatic imports of data variables.
   A workaround is to explicitly handle the data import using the delay
   loader during the initialization of the plugin.
 * Resolves all external functions during run-time, by implementing
   the delayed loading helper function delayLoadHelper2, which is
   called by run-time as well as HrLoadAllImportsForDll. 

The delay loader reuses the hash implementation in InnoDB. The normal
hash_create (in hash0hash.c) creates hash tables in buffer pool. But
the delay loader is invoked before the engine is initialized, and 
buffer pools are not ready yet. Instead, the delay loader has its own
implementation of hash_create() and hash_table_free(), called
wdl_hash_create() and wdl_hash_table_free().

This patch should be used with other two patches in order to build
a dynamically linked plugin on Windows:
 * patch for tmpfile functions (r2886)
 * patch for "build" files (to be committed)
 
The list of file changed:

handler/handler0vars.h: new file, defines a list of external data
variables (no external functions).

handler/win_delay_loader.cc: new file, the implementation of the delay
loader for Windows plugin.

handler/ha_innodb.cc: add a header file, and changes for copying the
system variables.

handler/handler0alter.cc: add a header file

handler/i_s.cc: add a header file

rb://27

Reviewed by:	Sunny, Marko
Approved by:	Sunny
2008-10-27 20:48:29 +00:00
calvin
ed35fc5852 branches/zip: This patch is to solve the issue that file handles can
not cross DLL/EXE boundaries on Windows. In builtin InnoDB, it makes
call to MySQL server for creating tmp files. innobase_mysql_tmpfile
is now rewritten for the plugin. 

rb://5

Approved by:	Marko
2008-10-27 20:39:11 +00:00
vasil
9b36639b1c branches/zip:
ChangeLog:

Add entry for the fix of Bug#19424 InnoDB: Possibly a memory overrun of
the buffer being freed (64-bit Visual C)
2008-10-27 09:48:46 +00:00
calvin
e3132ee4a6 branches/zip: port the fix of Bug#19424 - InnoDB: Possibly a memory
overrun of the buffer being freed with 64-bit Microsoft Visual C++.

The changed file:

CMakeLists.txt: Removing Win64 compiler optimizations for all 
innodb/mem/* files.
2008-10-27 09:05:42 +00:00
vasil
f18a970fb5 branches/zip:
Adjust mysql-test/patches/innodb-index.diff after the change to
mysql-test/innodb-index.(test|result) in r2870.
2008-10-24 09:48:38 +00:00
vasil
557f94e759 branches/zip:
Remove a statement that causes the innodb-index test to fail.

The change in behavior was introduced in MySQL BZR-r2738.

Suggested by:	Marko
2008-10-24 09:36:14 +00:00
vasil
bd5e74d781 branches/zip:
White space cleanup in ChangeLog
2008-10-24 07:14:16 +00:00
marko
1e3e8ded2a branches/zip: ChangeLog: Document r2763, r2794, r2683, r2799, r2809, r2866. 2008-10-24 06:24:17 +00:00
marko
fbf8532b71 branches/zip: ibuf_delete_rec(): When the cursor to the insert buffer record
cannot be restored, do not complain if the tablespace does not exist.
This fixes Issue #88.
2008-10-23 19:25:43 +00:00
marko
70f1f9e4ca branches/zip: Non-functional changes:
ibuf_get_volume_buffered(): Declare with static linkage.
This function is private to ibuf0ibuf.c.

btr_cur_pessimistic_delete(): Use the cached result of
btr_cur_get_index(cursor).
2008-10-23 08:37:42 +00:00
marko
d8fd1aec8d branches/zip: Clean up the file format stamping.
trx_sys_file_format_max_upgrade(): Rename from
trx_sys_file_format_max_update().  Improve the documentation.  Add a
const qualifier to the parameter "name".  Replace the parameter
"flags" with "format_id", because this function should deal with file
format identifiers, not with table flags.

trx_sys_file_format_max_write(), trx_sys_file_format_max_set(): Add a
const qualifier to the parameter "name".

ha_innodb.cc: Correct the spelling in some comments: "side effect".
Remove redundant prototypes for some static callback functions.

innodb_file_format_name_update(), innodb_file_format_check_update():
Correct the function signature.  Use appropriate pointer type conversions.

MYSQL_SYSVAR_STR(file_format), MYSQL_SYSVAR_STR(file_format_check):
Remove the type conversions from the callback function pointers.  When
the function signatures match, no type conversion is needed.  The type
conversions would only prevent compilation warnings for any mismatch.

Approved by Sunny in rb://25.
2008-10-23 08:27:15 +00:00
vasil
ef8226fc52 branches/zip:
Update the ChangeLog
2008-10-23 07:33:43 +00:00
sunny
119142d2d1 branches/zip:
Merge revisions 2852:2854 from branches/5.1:

  ------------------------------------------------------------------------
  r2854 | sunny | 2008-10-23 08:30:32 +0300 (Thu, 23 Oct 2008) | 13 lines
  Changed paths:
     M /branches/5.1/dict/dict0dict.c
     M /branches/5.1/dict/dict0mem.c
     M /branches/5.1/handler/ha_innodb.cc
     M /branches/5.1/handler/ha_innodb.h
     M /branches/5.1/include/dict0dict.h
     M /branches/5.1/include/dict0mem.h
     M /branches/5.1/row/row0mysql.c
  
  branches/5.1: Backport changes from branches/zip r2725
  
  Simplify the autoinc initialization code. This removes the
  non-determinism related to reading the table's autoinc value for the first
  time. This change has also reduced the sizeof dict_table_t by sizeof(ibool)
  bytes because we don't need the dict_table_t::autoinc_inited field anymore.
  
  Bug#39830 Table autoinc value not updated on first insert.
  Bug#35498 Cannot get table test/table1 auto-inccounter value in ::info
  Bug#36411 Failed to read auto-increment value from storage engine" in 5.1.24 auto-inc
  rb://16
  
  
  ------------------------------------------------------------------------
2008-10-23 06:24:33 +00:00
sunny
448956779d Reverting test file changes from r2855 2008-10-23 06:07:05 +00:00
sunny
f9c42d81e7 branches/zip:
Merge revisions 2837:2852 from branches/5.1:

  ------------------------------------------------------------------------
  r2849 | sunny | 2008-10-22 12:01:18 +0300 (Wed, 22 Oct 2008) | 8 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
     M /branches/5.1/include/row0mysql.h
     M /branches/5.1/row/row0mysql.c
  
  branches/5.1: Return the actual error code encountered when allocating
  a new autoinc value. The change in behavior (bug) was introduced in 5.1.22
  when we introduced the new AUTOINC locking model.
  
  rb://31
  
  Bug#40224 New AUTOINC changes mask reporting of deadlock/timeout errors
  
  ------------------------------------------------------------------------
  r2852 | sunny | 2008-10-23 01:42:24 +0300 (Thu, 23 Oct 2008) | 9 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
     M /branches/5.1/handler/ha_innodb.h
  
  branches/5.1: Backport r2724 from branches/zip
  
  Check column value against the col max value before updating the table's
  global autoinc counter value. This is part of simplifying the AUTOINC
  sub-system. We extract the type info from MySQL data structures at runtime.
  
  This fixes Bug#37788 InnoDB Plugin: AUTO_INCREMENT wrong for compressed tables
  
  
  ------------------------------------------------------------------------
2008-10-23 05:29:46 +00:00
sunny
2a71ad87b5 branches/zip: Add missing UNIV_INTERN. 2008-10-22 21:52:09 +00:00