Commit graph

306 commits

Author SHA1 Message Date
vasil
a3548774c6 branches/zip:
Fix Mantis Issue#244 fix bug in linear read ahead (no check on access pattern)

The changes are:

1) Take into account access pattern when deciding whether or not to do linear
  read ahead.
2) Expose a knob innodb_read_ahead_factor = [0-64] default (8), dynamic,
  global to control linear read ahead behvior
3) Disable random read ahead. Keep the code for now.

Submitted by:	Inaam (rb://122)
Approved by:	Heikki (rb://122)
2009-06-05 14:13:31 +00:00
marko
68a1ee9960 branches/zip: Add some Doxygen comments for many structs, typedefs,
#defines and global variables.  Many are still missing.
2009-05-26 12:28:49 +00:00
marko
11ff89d994 branches/zip: Add @file comments, and convert decorative
/*********************************
comments to Doxygen /** style like this:
/*****************************//**

This conversion was performed by the following command:

perl -i -e 'while(<ARGV>){if (m|^/\*{30}\**$|) {
s|\*{4}$|//**| if ++$com>1; $_ .= "\@file $ARGV\n" if $com==2}
print; if(eof){$.=0;undef $com}}' */*[ch] include/univ.i
2009-05-25 09:52:29 +00:00
marko
d075e80c49 branches/zip: Split some long lines that were introduced in r5091. 2009-05-25 08:09:45 +00:00
marko
a45e6d2bae branches/zip: Adjust some function comments after r5091. 2009-05-25 05:54:17 +00:00
marko
e49dee377b branches/zip: Convert the function comments to Doxygen format.
This patch was created by running the following commands:

for i in */*[ch]; do doxygenify.pl $i; done
perl -i -pe 's#\*{3} \*/$#****/#' */*[ch]

where doxygenify.pl is
https://svn.innodb.com/svn/misc/trunk/tools/doxygenify.pl r510

Verified the consistency as follows:

(0) not too many /* in: */ or /* out: */ comments left in the code:
grep -l '/\*\s*\(in\|out\)[,:/]' */*[ch]

(1) no difference when ignoring blank lines, after stripping all
C90-style /* comments */, including multi-line ones, before and after
applying this patch:

perl -i -e 'undef $/;while(<ARGV>){s#/\*(.*?)\*/##gs;print}' */*[ch]
diff -I'^\s*$' --exclude .svn -ru TREE1 TREE2

(2) after stripping @return comments and !<, generated a diff and omitted
the hunks where /* out: */ function return comments were removed:

perl -i -e'undef $/;while(<ARGV>){s#!<##g;s#\n\@return\t.*?\*/# \*/#gs;print}'\
 */*[ch]
svn diff|
perl -e 'undef $/;$_=<>;s#\n-\s*/\* out[:,]([^\n]*?)(\n-[^\n]*?)*\*/##gs;print'

Some unintended changes were left.  These will be removed in a
subsequent patch.
2009-05-25 05:30:14 +00:00
marko
931572dfaa branches/zip: ha_innodb.cc: Add some missing function comments. 2009-05-20 19:17:43 +00:00
marko
4e652f12c0 branches/zip: innobase_end(), innobase_flush_logs():
Document the function parameters.
2009-05-20 12:17:26 +00:00
marko
c7ae9cc921 branches/zip: ha_innodb.cc: Clean up some comments. 2009-05-20 10:45:03 +00:00
marko
e986fb2c8e branches/zip: innodb_export_status(): Remove the return(0),
now that the function was declared void in r5060.
2009-05-20 10:07:49 +00:00
marko
288a29458b branches/zip: Clean up some comments. 2009-05-20 10:06:59 +00:00
marko
b04cffec7d branches/zip: Add missing function comments. 2009-05-20 04:42:12 +00:00
marko
bc48ebd870 branches/zip: Merge revisions 4976:4994 from branches/5.1:
------------------------------------------------------------------------
  r4994 | marko | 2009-05-14 15:04:55 +0300 (Thu, 14 May 2009) | 18 lines

  branches/5.1: Prevent a race condition in innobase_commit() by ensuring
  that innodb_commit_concurrency>0 remains constant at run time. (Bug #42101)

  srv_commit_concurrency: Make this a static variable in ha_innodb.cc.

  innobase_commit_concurrency_validate(): Check that innodb_commit_concurrency
  is not changed from or to 0 at run time.  This is needed, because
  innobase_commit() assumes that innodb_commit_concurrency>0 remains constant.
  Without this limitation, the checks for innodb_commit_concurrency>0
  in innobase_commit() should be removed and that function would have to
  acquire and release commit_cond_m at least twice per invocation.
  Normally, innodb_commit_concurrency=0, and introducing the mutex operations
  would mean significant overhead.

  innodb_bug42101.test, innodb_bug42101-nonzero.test: Test cases.

  rb://123 approved by Heikki Tuuri
  ------------------------------------------------------------------------
2009-05-14 11:31:43 +00:00
vasil
06e8e00ed9 branches/zip: Merge revisions 4710:4746 from branches/5.1:
------------------------------------------------------------------------
  r4746 | vasil | 2009-04-18 00:32:08 +0300 (Sat, 18 Apr 2009) | 110 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
     M /branches/5.1/include/pars0pars.h
  
  branches/5.1:
  
  Merge a change from MySQL:
  
    ------------------------------------------------------------
    revno: 2728.10.2
    committer: Ignacio Galarza <iggy@mysql.com>
    branch nick: mysql-5.1-bugteam-bug29125
    timestamp: Fri 2009-02-13 11:41:47 -0500
    message:
      Bug#29125 Windows Server X64: so many compiler warnings
      - Remove bothersome warning messages.  This change focuses on the warnings 
      that are covered by the ignore file: support-files/compiler_warnings.supp.
      - Strings are guaranteed to be max uint in length
    modified:
      client/mysql_upgrade.c
      client/mysqladmin.cc
      client/mysqlbinlog.cc
      client/mysqlcheck.c
      client/mysqldump.c
      client/mysqlslap.c
      client/mysqltest.cc
      client/sql_string.cc
      extra/comp_err.c
      extra/yassl/src/buffer.cpp
      extra/yassl/taocrypt/include/block.hpp
      extra/yassl/taocrypt/src/algebra.cpp
      extra/yassl/taocrypt/src/asn.cpp
      include/config-win.h
      libmysql/libmysql.c
      mysys/array.c
      mysys/base64.c
      mysys/charset.c
      mysys/checksum.c
      mysys/default.c
      mysys/default_modify.c
      mysys/hash.c
      mysys/mf_keycache.c
      mysys/mf_tempdir.c
      mysys/my_append.c
      mysys/my_compress.c
      mysys/my_conio.c
      mysys/my_copy.c
      mysys/my_getwd.c
      mysys/my_pread.c
      mysys/my_quick.c
      mysys/my_read.c
      mysys/safemalloc.c
      mysys/string.c
      server-tools/instance-manager/buffer.cc
      server-tools/instance-manager/instance.cc
      server-tools/instance-manager/options.cc
      server-tools/instance-manager/parse.h
      sql-common/client.c
      sql-common/my_user.c
      sql/event_data_objects.cc
      sql/event_parse_data.cc
      sql/events.cc
      sql/gen_lex_hash.cc
      sql/item.h
      sql/item_func.cc
      sql/item_strfunc.cc
      sql/item_timefunc.cc
      sql/lock.cc
      sql/log_event.cc
      sql/log_event.h
      sql/log_event_old.cc
      sql/net_serv.cc
      sql/sp_head.h
      sql/spatial.h
      sql/sql_class.h
      sql/sql_connect.cc
      sql/sql_crypt.cc
      sql/sql_error.cc
      sql/sql_insert.cc
      sql/sql_lex.cc
      sql/sql_lex.h
      sql/sql_load.cc
      sql/sql_prepare.cc
      sql/sql_profile.cc
      sql/sql_repl.cc
      sql/sql_servers.cc
      sql/sql_string.cc
      sql/sql_table.cc
      sql/sql_trigger.cc
      sql/sql_udf.cc
      sql/sql_view.cc
      sql/udf_example.c
      sql/uniques.cc
      storage/archive/azio.c
      storage/archive/azlib.h
      storage/csv/ha_tina.cc
      storage/csv/ha_tina.h
      storage/csv/transparent_file.h
      storage/federated/ha_federated.cc
      storage/federated/ha_federated.h
      storage/heap/hp_write.c
      storage/innobase/handler/ha_innodb.cc
      storage/innobase/include/pars0pars.h
      storage/myisam/ha_myisam.cc
      storage/myisam/mi_check.c
      storage/myisam/mi_packrec.c
      storage/myisam/mi_search.c
      storage/myisam/rt_index.c
      storage/myisammrg/ha_myisammrg.cc
      strings/ctype.c
      strings/my_vsnprintf.c
      tests/bug25714.c
      tests/mysql_client_test.c
2009-04-17 20:50:09 +00:00
marko
a0714b182c branches/zip: univ.i: Define REFMAN as the base URL of the
MySQL Reference Manual and use it in every string.
This fixes Issue #221.
2009-04-16 12:02:27 +00:00
vasil
4f3c09517d branches/zip: Merge revisions 4481:4710 from branches/5.1:
(resolving conflict in r4574, r4575 and skipping r4699 and r4705 because
analogous changes to r4699 and r4705 were already made to branches/zip)

  ------------------------------------------------------------------------
  r4573 | vasil | 2009-03-30 14:17:13 +0300 (Mon, 30 Mar 2009) | 4 lines
  Changed paths:
     M /branches/5.1/mysql-test/innodb.test
  
  branches/5.1:
  
  Fix email address from dev@innodb.com to innodb_dev_ww@oracle.com
  
  ------------------------------------------------------------------------
  r4574 | vasil | 2009-03-30 14:27:08 +0300 (Mon, 30 Mar 2009) | 38 lines
  Changed paths:
     M /branches/5.1/Makefile.am
     M /branches/5.1/mysql-test/innodb.test
  
  branches/5.1:
  
  Restore the state of INNODB_THREAD_CONCURRENCY to silence this warning:
  
    TEST                                      RESULT   TIME (ms)
    ------------------------------------------------------------
    
    worker[1] Using MTR_BUILD_THREAD 250, with reserved ports 12500..12509
    main.innodb                              [ pass ]   8803
    
    MTR's internal check of the test case 'main.innodb' failed.
    This means that the test case does not preserve the state that existed
    before the test case was executed.  Most likely the test case did not
    do a proper clean-up.
    This is the diff of the states of the servers before and after the
    test case was executed:
    mysqltest: Logging to '/tmp/autotest.sh-20090330_033000-5.1.5Hg8CY/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.log'.
    mysqltest: Results saved in '/tmp/autotest.sh-20090330_033000-5.1.5Hg8CY/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.result'.
    mysqltest: Connecting to server localhost:12500 (socket /tmp/autotest.sh-20090330_033000-5.1.5Hg8CY/mysql-5.1/mysql-test/var/tmp/mysqld.1.sock) as 'root', connection 'default', attempt 0 ...
    mysqltest: ... Connected.
    mysqltest: Start processing test commands from './include/check-testcase.test' ...
    mysqltest: ... Done processing test commands.
    --- /tmp/autotest.sh-20090330_033000-5.1.5Hg8CY/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.result	2009-03-30 14:12:31.000000000 +0300
    +++ /tmp/autotest.sh-20090330_033000-5.1.5Hg8CY/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.reject	2009-03-30 14:12:41.000000000 +0300
    @@ -99,7 +99,7 @@
     INNODB_SUPPORT_XA	ON
     INNODB_SYNC_SPIN_LOOPS	20
     INNODB_TABLE_LOCKS	ON
    -INNODB_THREAD_CONCURRENCY	8
    +INNODB_THREAD_CONCURRENCY	16
     INNODB_THREAD_SLEEP_DELAY	10000
     INSERT_ID	0
     INTERACTIVE_TIMEOUT	28800
    
    mysqltest: Result content mismatch
    
    not ok
  
  ------------------------------------------------------------------------
  r4575 | vasil | 2009-03-30 15:55:31 +0300 (Mon, 30 Mar 2009) | 8 lines
  Changed paths:
     M /branches/5.1/mysql-test/innodb.result
     M /branches/5.1/mysql-test/innodb.test
  
  branches/5.1:
  
  Fix Bug#43309 Test main.innodb can't be run twice
  
  Make the innodb mysql-test more flexible by inspecting how much a
  variable of interest has changed since the start of the test. Do not
  assume the variables have zero values at the start of the test.
  
  ------------------------------------------------------------------------
  r4576 | vasil | 2009-03-30 16:25:10 +0300 (Mon, 30 Mar 2009) | 4 lines
  Changed paths:
     M /branches/5.1/Makefile.am
  
  branches/5.1:
  
  Revert a change to Makefile.am that I committed accidentally in c4574.
  
  ------------------------------------------------------------------------
  r4659 | vasil | 2009-04-06 15:34:51 +0300 (Mon, 06 Apr 2009) | 6 lines
  Changed paths:
     M /branches/5.1/mysql-test/innodb.test
  
  branches/5.1:
  
  Followup to r4575 and the fix of Bug#43309 Test main.innodb can't be run twice:
  
  Add an explanatory comment, as suggested by Patrick Crews in the bug report.
  
  ------------------------------------------------------------------------
  r4699 | vasil | 2009-04-09 14:01:52 +0300 (Thu, 09 Apr 2009) | 15 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
     M /branches/5.1/include/srv0srv.h
     M /branches/5.1/page/page0cur.c
     M /branches/5.1/srv/srv0srv.c
  
  branches/5.1:
  
  Fix Bug#43660 SHOW INDEXES/ANALYZE does NOT update cardinality for indexes
  of InnoDB table
  
  by replacing the PRNG that is used to pick random pages with a better
  one.
  
  This is based on r4670 but also adds a new configuration option and
  enables the fix only if this option is changed. Please skip the present
  revision when merging.
  
  Approved by:	Heikki (via email)
  
  
  ------------------------------------------------------------------------
  r4705 | vasil | 2009-04-14 14:30:13 +0300 (Tue, 14 Apr 2009) | 5 lines
  Changed paths:
     M /branches/5.1/page/page0cur.c
  
  branches/5.1:
  
  When using the random function, first take the modulus by the number of pages
  and then typecast to ulint.
  
  ------------------------------------------------------------------------
  r4710 | vasil | 2009-04-15 11:55:18 +0300 (Wed, 15 Apr 2009) | 25 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
  
  branches/5.1:
  
  Merge a change from MySQL (looks like this is against 5.0 but they later
  merged it to 5.1):
  
    ------------------------------------------------------------
    revno: 1810.3846.1
    committer: Alexey Botchkov <holyfoot@mysql.com>
    branch nick: 31435
    timestamp: Tue 2008-11-11 14:42:32 +0400
    message:
      Bug#31435 ha_innodb.cc:3983: ulint convert_search_mode_to_innobase(ha_rkey_function): Asse 
          I think we don't need to issue an error statement in the convert_search_mode_to_innobase().
          Returning the PAGE_CUR_UNSUPP value is enough as allows to handle this
          case depending on the requirements.
      
      per-file comments:
        sql/ha_innodb.cc 
      Bug#31435 ha_innodb.cc:3983: ulint convert_search_mode_to_innobase(ha_rkey_function): Asse 
           no error issued in convert_search_mode_to_innobase.
           ha_innobase::records_in_range() returns HA_POS_ERROR if search mode isn't supported.
    modified:
      sql/ha_innodb.cc
  
  
  ------------------------------------------------------------------------
2009-04-15 08:26:32 +00:00
calvin
319f148e9c branches/zip: remove statically linked libraries from mysql
To make zlib and strings dynamically linked; mysqld will export
additional functions required by InnoDB.

Since the symbols will be resolved dynamically during runtime,
wdl_load_mapfile() is no longer able to make any function calls
to ones in mysqld. As the result, strtoull() (from strings.lib)
is replaced with _strtoui64().

rb://111

Approved by: Marko
2009-04-14 13:47:31 +00:00
marko
cd1909f6b3 branches/zip: Hide unnecessarily visible globals.
dict_ind_redundant, dict_ind_compact: Declare these UNIV_INTERN.
innodb_hton_ptr: Declare static.  We do not attempt to access the
built-in InnoDB any more.
trx_roll_savepoints_free(): Declare UNIV_INTERN.
2009-04-08 10:24:49 +00:00
marko
e650b0533b branches/zip: Initialize innodb_change_buffering from the configuration file.
So far, the parameter innodb_change_buffering was only settable by the
SET GLOBAL command. Any change specified in the configuration file or
on the mysqld command line was ignored. This was reported as Issue #217.

rb://109 approved by Heikki Tuuri.
2009-04-06 12:17:30 +00:00
marko
ab67f4eb4a branches/zip: Refuse to use newly created indexes that may lack
history.  This addresses Mantis issue #116.

dict_index_t: Enable the storage of trx_id.

row_prebuilt_t: Make many fields bit-fields to reduce the memory
footprint. Add index_usable.

ha_innobase::change_active_index(): Check if the index is usable and
set prebuilt->index_usable accordingly. Unfortunately, the return
status of this function is ignored by MySQL, and the actual refusal to
use the index must be made in row_search_for_mysql().

row_search_for_mysql(): Return DB_MISSING_HISTORY if
!prebuilt->index_usable.

convert_error_code_to_mysql(): Map DB_MISSING_HISTORY to
HA_ERR_TABLE_DEF_CHANGED.

innodb-index.test: Add a test case where access to a newly created
secondary index must be blocked for old transactions.

rb://100 approved by Heikki Tuuri
2009-04-02 12:23:12 +00:00
calvin
dacfdf4a1d branches/zip: Mantis issue #197 - Make srv_spin_wait_delay configurable
New parameter innodb_spin_wait_delay to set the maximum delay between
polling for a spin lock. 5 is the default.

Approved by: Marko (on IM)
2009-04-02 11:46:47 +00:00
inaam
b76aa20cbc branches/zip
SHOW ENGINE INNODB MUTEX shows all mutexes and rw_locks. This can
be overwhelming particularly when the buffer pool is very large
(note that each block in buffer pool has at least one mutex, one
rw_lock and an additional mutex if rw_lock does not use atomics).
With this patch status of following mutexes and rw-locks is not shown:

1) block->mutex
2) block->lock
3) block->lock->mutex (if applicable)
4) All other mutexes and rw-locks for which number of os-waits are zero

Addresses issue# 179 rb://99

Approved by: Marko
2009-03-25 17:18:33 +00:00
calvin
6cf14ddda4 branches/zip: Mantis issue #201 - remove innodb_plugin_init() due to
new option --ignore_builtin_innodb

Starting 5.1.33, MySQL has a new option --ignore_builtin_innodb
for using the dynamic plugin. It is required to remove
innodb_plugin_init() in the plugin.

This patch removes innodb_plugin_init() as well as functions,
variables used by innodb_plugin_init().

rb://98

Approved by: Marko
2009-03-24 15:59:45 +00:00
marko
349090707c branches/zip: Remove references to UNIV_HOTBACKUP from files that are
not used when building InnoDB Hot Backup.  Declare
innobase_invalidate_query_cache() in ha_prototypes.h.
2009-03-24 12:02:29 +00:00
marko
6b52f8cab2 branches/zip: innobase_get_at_most_n_mbchars(): Declare in ha_prototypes.h. 2009-03-20 12:15:52 +00:00
vasil
eaf12b9438 branches/zip: Merge revision 4359 from branches/5.1:
------------------------------------------------------------------------
  r4359 | vasil | 2009-03-05 21:42:01 +0200 (Thu, 05 Mar 2009) | 14 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
  
  branches/5.1:
  
  Merge a change from MySQL:
  
    ------------------------------------------------------------
    revno: 2747
    committer: Timothy Smith <timothy.smith@sun.com>
    branch nick: 51
    timestamp: Fri 2009-01-16 17:49:07 +0100
    message:
      Add another cast to ignore int/ulong difference in error types, silence warning on Win64
    modified:
      storage/innobase/handler/ha_innodb.cc
  
  ------------------------------------------------------------------------
2009-03-05 20:29:07 +00:00
vasil
bbbce3d8c9 branches/zip: Merge revision 4358 from branches/5.1 (resolving a conflict):
------------------------------------------------------------------------
  r4358 | vasil | 2009-03-05 21:21:10 +0200 (Thu, 05 Mar 2009) | 21 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
  
  branches/5.1:
  
  Merge a change from MySQL:
  
    ------------------------------------------------------------
    revno: 2728.19.1
    committer: Alfranio Correia <alfranio.correia@sun.com>
    branch nick: mysql-5.1-bugteam
    timestamp: Tue 2009-02-03 11:36:46 +0000
    message:
      BUG#42445 Warning messages in innobase/handler/ha_innodb.cc
            
      There was a type casting problem in the storage/innobase/handler/ha_innodb.cc,
      (int ha_innobase::write_row(...)). Innobase uses has an internal error variable
      of type 'ulint' while mysql uses an 'int'. 
            
      To fix the problem the function manipulates an error variable of
      type 'ulint' and only casts it into 'int' when needs to return the value.
    modified:
      storage/innobase/handler/ha_innodb.cc
  
  ------------------------------------------------------------------------
2009-03-05 20:27:54 +00:00
vasil
602ce08d2f branches/zip: Merge revisions 4287:4357 from branches/5.1:
------------------------------------------------------------------------
  r4325 | sunny | 2009-03-02 02:28:52 +0200 (Mon, 02 Mar 2009) | 10 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
     M /branches/5.1/mysql-test/innodb-autoinc.result
     M /branches/5.1/mysql-test/innodb-autoinc.test
  
  branches/5.1: Bug#43203: Overflow from auto incrementing causes server segv
  It was not a SIGSEGV but an assertion failure. The assertion was checking
  the invariant that *first_value passed in by MySQL doesn't contain a value
  that is greater than the max value for that type. The assertion has been
  changed to a check and if the value is greater than the max we report a
  generic AUTOINC failure.
  
  rb://93
  Approved by Heikki
  
  ------------------------------------------------------------------------
2009-03-05 20:23:17 +00:00
marko
93ec81bb6d branches/zip: Correct the initialization of the memory subsystem once
again, to finally put Issue #181 to rest.

Revert some parts of r4274.  It is best not to call ut_malloc() before
srv_general_init().

mem_init(): Do not call ut_mem_init().

srv_general_init(): Initialize the memory subsystem in two phases:
first ut_mem_init(), then mem_init().  This is because os_sync_init()
and sync_init() depend on ut_mem_init() and mem_init() depends on
os_sync_init() or sync_init().

srv_parse_data_file_paths_and_sizes(),
srv_parse_log_group_home_dirs(): Remove the output parameters.  Assign
to the global variables directly.  Allocate memory with malloc()
instead of ut_malloc(), because these functions will be called before
srv_general_init().

srv_free_paths_and_sizes(): New function, for cleaning up after
srv_parse_data_file_paths_and_sizes() and
srv_parse_log_group_home_dirs().

rb://92 approved by Sunny Bains
2009-02-25 10:09:15 +00:00
vasil
63107fbdbf branches/zip: Merge revisions 4261:4287 from branches/5.1:
------------------------------------------------------------------------
  r4287 | sunny | 2009-02-25 05:32:01 +0200 (Wed, 25 Feb 2009) | 10 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
     M /branches/5.1/mysql-test/innodb-autoinc.result
     M /branches/5.1/mysql-test/innodb-autoinc.test
  
  branches/5.1: Fix Bug#42714 AUTO_INCREMENT errors in 5.1.31. There are two
  changes to the autoinc handling.
  
  1. To fix the immediate problem from the bug report, we must ensure that the
     value written to the table is always less than the max value stored in
     dict_table_t.
  
  2. The second related change is that according to MySQL documentation when
     the offset is greater than the increment, we should ignore the offset.
  
  ------------------------------------------------------------------------
2009-02-25 08:48:07 +00:00
marko
d25cf61788 branches/zip: Fix bugs in the fix of Issue #181. Tested inside and
outside Valgrind, with innodb_use_sys_malloc set to 0 and 1.

mem_init(): Invoke ut_mem_init() before mem_pool_create(), because
the latter one will invoke ut_malloc().

srv_general_init(): Do not initialize the memory subsystem (mem_init()).

innobase_init(): Initialize the memory subsystem (mem_init()) before
calling srv_parse_data_file_paths_and_sizes(), which needs ut_malloc().
Call ut_free_all_mem() in error handling to clean up after the mem_init().
2009-02-23 22:14:38 +00:00
marko
e31baa849f branches/zip: Make innodb_use_sys_malloc=ON the default.
Replace srv_use_sys_malloc with UNIV_LIKELY(srv_use_sys_malloc)
to improve branch prediction in the default case.

Approved by Ken over the IM.
2009-02-20 20:31:03 +00:00
vasil
b4399fa819 branches/zip:
Merge revisions 4035:4261 from branches/5.1:

  ------------------------------------------------------------------------
  r4065 | sunny | 2009-01-29 16:01:36 +0200 (Thu, 29 Jan 2009) | 8 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
     M /branches/5.1/mysql-test/innodb-autoinc.result
     M /branches/5.1/mysql-test/innodb-autoinc.test
  
  branches/5.1: In the last round of AUTOINC cleanup we assumed that AUTOINC
  is only defined for integer columns. This caused an assertion failure when
  we checked for the maximum value of a column type. We now calculate the
  max value for floating-point autoinc columns too.
  
  Fix Bug#42400 - InnoDB autoinc code can't handle floating-point columns
  rb://84 and Mantis issue://162
  
  ------------------------------------------------------------------------
  r4111 | sunny | 2009-02-03 22:06:52 +0200 (Tue, 03 Feb 2009) | 2 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
  
  branches/5.1: Add the ULL suffix otherwise there is an overflow.
  
  ------------------------------------------------------------------------
  r4128 | vasil | 2009-02-08 21:36:45 +0200 (Sun, 08 Feb 2009) | 18 lines
  Changed paths:
     M /branches/5.1/mysql-test/innodb-autoinc.result
     M /branches/5.1/mysql-test/innodb-autoinc.test
  
  branches/5.1:
  
  Merge a change from MySQL:
  
    ------------------------------------------------------------
    revno: 2709.20.31
    committer: Timothy Smith <timothy.smith@sun.com>
    branch nick: 51
    timestamp: Fri 2008-12-19 01:28:51 +0100
    message:
      Disable part of innodb-autoinc.test, because the MySQL server asserts when
      compiled --with-debug, due to bug 39828, "autoinc wraps around when offset and
      increment > 1".  This change should be reverted when that bug is fixed (and a
      a few other minor changes to the test as described in comments).
    modified:
      mysql-test/r/innodb-autoinc.result
      mysql-test/t/innodb-autoinc.test
  
  ------------------------------------------------------------------------
  r4129 | vasil | 2009-02-08 21:54:25 +0200 (Sun, 08 Feb 2009) | 310 lines
  Changed paths:
     M /branches/5.1/mysql-test/innodb-autoinc.test
  
  branches/5.1:
  
  Merge a change from MySQL:
  
  [looks like the changes to innodb-autoinc.test were made as part of
  the following huge merge, but we are merging only changes to that file]
  
    ------------------------------------------------------------
    revno: 2546.47.1
    committer: Luis Soares <luis.soares@sun.com>
    branch nick: 5.1-rpl
    timestamp: Fri 2009-01-23 13:22:05 +0100
    message:
      merge: 5.1 -> 5.1-rpl
      conflicts:
        Text conflict in client/mysqltest.cc
        Text conflict in mysql-test/include/wait_until_connected_again.inc
        Text conflict in mysql-test/lib/mtr_report.pm
        Text conflict in mysql-test/mysql-test-run.pl
        Text conflict in mysql-test/r/events_bugs.result
        Text conflict in mysql-test/r/log_state.result
        Text conflict in mysql-test/r/myisam_data_pointer_size_func.result
        Text conflict in mysql-test/r/mysqlcheck.result
        Text conflict in mysql-test/r/query_cache.result
        Text conflict in mysql-test/r/status.result
        Text conflict in mysql-test/suite/binlog/r/binlog_index.result
        Text conflict in mysql-test/suite/binlog/r/binlog_innodb.result
        Text conflict in mysql-test/suite/rpl/r/rpl_packet.result
        Text conflict in mysql-test/suite/rpl/t/rpl_packet.test
        Text conflict in mysql-test/t/disabled.def
        Text conflict in mysql-test/t/events_bugs.test
        Text conflict in mysql-test/t/log_state.test
        Text conflict in mysql-test/t/myisam_data_pointer_size_func.test
        Text conflict in mysql-test/t/mysqlcheck.test
        Text conflict in mysql-test/t/query_cache.test
        Text conflict in mysql-test/t/rpl_init_slave_func.test
        Text conflict in mysql-test/t/status.test
    removed:
      mysql-test/suite/parts/r/partition_bit_ndb.result
      mysql-test/suite/parts/t/partition_bit_ndb.test
      mysql-test/suite/parts/t/partition_sessions.test
      mysql-test/suite/sys_vars/inc/tmp_table_size_basic.inc
      mysql-test/suite/sys_vars/r/tmp_table_size_basic_32.result
      mysql-test/suite/sys_vars/r/tmp_table_size_basic_64.result
      mysql-test/suite/sys_vars/t/tmp_table_size_basic_32.test
      mysql-test/suite/sys_vars/t/tmp_table_size_basic_64.test
      mysql-test/t/log_bin_trust_function_creators_func-master.opt
      mysql-test/t/rpl_init_slave_func-slave.opt
    added:
      mysql-test/include/check_events_off.inc
      mysql-test/include/cleanup_fake_relay_log.inc
      mysql-test/include/have_simple_parser.inc
      mysql-test/include/no_running_event_scheduler.inc
      mysql-test/include/no_running_events.inc
      mysql-test/include/running_event_scheduler.inc
      mysql-test/include/setup_fake_relay_log.inc
      mysql-test/include/wait_condition_sp.inc
      mysql-test/r/fulltext_plugin.result
      mysql-test/r/have_simple_parser.require
      mysql-test/r/innodb_bug38231.result
      mysql-test/r/innodb_bug39438.result
      mysql-test/r/innodb_mysql_rbk.result
      mysql-test/r/partition_innodb_semi_consistent.result
      mysql-test/r/query_cache_28249.result
      mysql-test/r/status2.result
      mysql-test/std_data/bug40482-bin.000001
      mysql-test/suite/binlog/r/binlog_innodb_row.result
      mysql-test/suite/binlog/t/binlog_innodb_row.test
      mysql-test/suite/rpl/r/rpl_binlog_corruption.result
      mysql-test/suite/rpl/t/rpl_binlog_corruption-master.opt
      mysql-test/suite/rpl/t/rpl_binlog_corruption.test
      mysql-test/suite/sys_vars/r/tmp_table_size_basic.result
      mysql-test/suite/sys_vars/t/tmp_table_size_basic.test
      mysql-test/t/fulltext_plugin-master.opt
      mysql-test/t/fulltext_plugin.test
      mysql-test/t/innodb_bug38231.test
      mysql-test/t/innodb_bug39438-master.opt
      mysql-test/t/innodb_bug39438.test
      mysql-test/t/innodb_mysql_rbk-master.opt
      mysql-test/t/innodb_mysql_rbk.test
      mysql-test/t/partition_innodb_semi_consistent-master.opt
      mysql-test/t/partition_innodb_semi_consistent.test
      mysql-test/t/query_cache_28249.test
      mysql-test/t/status2.test
    renamed:
      mysql-test/suite/funcs_1/r/is_collation_character_set_applicability.result => mysql-test/suite/funcs_1/r/is_coll_char_set_appl.result
      mysql-test/suite/funcs_1/t/is_collation_character_set_applicability.test => mysql-test/suite/funcs_1/t/is_coll_char_set_appl.test
    modified:
      .bzr-mysql/default.conf
      CMakeLists.txt
      client/mysql.cc
      client/mysql_upgrade.c
      client/mysqlcheck.c
      client/mysqltest.cc
      configure.in
      extra/resolve_stack_dump.c
      extra/yassl/include/openssl/ssl.h
      include/config-win.h
      include/m_ctype.h
      include/my_global.h
      mysql-test/extra/binlog_tests/database.test
      mysql-test/extra/rpl_tests/rpl_auto_increment.test
      mysql-test/include/commit.inc
      mysql-test/include/have_32bit.inc
      mysql-test/include/have_64bit.inc
      mysql-test/include/index_merge1.inc
      mysql-test/include/linux_sys_vars.inc
      mysql-test/include/windows_sys_vars.inc
      mysql-test/lib/mtr_report.pm
      mysql-test/mysql-test-run.pl
      mysql-test/r/alter_table.result
      mysql-test/r/commit_1innodb.result
      mysql-test/r/create.result
      mysql-test/r/csv.result
      mysql-test/r/ctype_ucs.result
      mysql-test/r/date_formats.result
      mysql-test/r/events_bugs.result
      mysql-test/r/events_scheduling.result
      mysql-test/r/fulltext.result
      mysql-test/r/func_if.result
      mysql-test/r/func_in.result
      mysql-test/r/func_str.result
      mysql-test/r/func_time.result
      mysql-test/r/grant.result
      mysql-test/r/index_merge_myisam.result
      mysql-test/r/information_schema.result
      mysql-test/r/innodb-autoinc.result
      mysql-test/r/innodb.result
      mysql-test/r/innodb_mysql.result
      mysql-test/r/log_bin_trust_function_creators_func.result
      mysql-test/r/log_state.result
      mysql-test/r/myisampack.result
      mysql-test/r/mysql.result
      mysql-test/r/mysqlcheck.result
      mysql-test/r/partition_datatype.result
      mysql-test/r/partition_mgm.result
      mysql-test/r/partition_pruning.result
      mysql-test/r/query_cache.result
      mysql-test/r/read_buffer_size_basic.result
      mysql-test/r/read_rnd_buffer_size_basic.result
      mysql-test/r/rpl_init_slave_func.result
      mysql-test/r/select.result
      mysql-test/r/status.result
      mysql-test/r/strict.result
      mysql-test/r/temp_table.result
      mysql-test/r/type_bit.result
      mysql-test/r/type_date.result
      mysql-test/r/type_float.result
      mysql-test/r/warnings_engine_disabled.result
      mysql-test/r/xml.result
      mysql-test/suite/binlog/r/binlog_database.result
      mysql-test/suite/binlog/r/binlog_index.result
      mysql-test/suite/binlog/r/binlog_innodb.result
      mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result
      mysql-test/suite/binlog/t/binlog_innodb.test
      mysql-test/suite/funcs_1/r/is_columns_is.result
      mysql-test/suite/funcs_1/r/is_engines.result
      mysql-test/suite/funcs_1/r/storedproc.result
      mysql-test/suite/funcs_1/storedproc/param_check.inc
      mysql-test/suite/funcs_2/t/disabled.def
      mysql-test/suite/ndb/t/disabled.def
      mysql-test/suite/parts/r/partition_bit_innodb.result
      mysql-test/suite/parts/r/partition_bit_myisam.result
      mysql-test/suite/parts/r/partition_special_innodb.result
      mysql-test/suite/parts/t/disabled.def
      mysql-test/suite/parts/t/partition_special_innodb.test
      mysql-test/suite/parts/t/partition_value_innodb.test
      mysql-test/suite/parts/t/partition_value_myisam.test
      mysql-test/suite/parts/t/partition_value_ndb.test
      mysql-test/suite/rpl/r/rpl_auto_increment.result
      mysql-test/suite/rpl/r/rpl_packet.result
      mysql-test/suite/rpl/r/rpl_row_create_table.result
      mysql-test/suite/rpl/r/rpl_slave_skip.result
      mysql-test/suite/rpl/r/rpl_trigger.result
      mysql-test/suite/rpl/t/disabled.def
      mysql-test/suite/rpl/t/rpl_packet.test
      mysql-test/suite/rpl/t/rpl_row_create_table.test
      mysql-test/suite/rpl/t/rpl_slave_skip.test
      mysql-test/suite/rpl/t/rpl_trigger.test
      mysql-test/suite/rpl_ndb/t/disabled.def
      mysql-test/suite/sys_vars/inc/key_buffer_size_basic.inc
      mysql-test/suite/sys_vars/inc/sort_buffer_size_basic.inc
      mysql-test/suite/sys_vars/r/key_buffer_size_basic_32.result
      mysql-test/suite/sys_vars/r/key_buffer_size_basic_64.result
      mysql-test/suite/sys_vars/r/sort_buffer_size_basic_32.result
      mysql-test/suite/sys_vars/r/sort_buffer_size_basic_64.result
      mysql-test/t/alter_table.test
      mysql-test/t/create.test
      mysql-test/t/csv.test
      mysql-test/t/ctype_ucs.test
      mysql-test/t/date_formats.test
      mysql-test/t/disabled.def
      mysql-test/t/events_bugs.test
      mysql-test/t/events_scheduling.test
      mysql-test/t/fulltext.test
      mysql-test/t/func_if.test
      mysql-test/t/func_in.test
      mysql-test/t/func_str.test
      mysql-test/t/func_time.test
      mysql-test/t/grant.test
      mysql-test/t/information_schema.test
      mysql-test/t/innodb-autoinc.test
      mysql-test/t/innodb.test
      mysql-test/t/innodb_mysql.test
      mysql-test/t/log_bin_trust_function_creators_func.test
      mysql-test/t/log_state.test
      mysql-test/t/myisam_data_pointer_size_func.test
      mysql-test/t/myisampack.test
      mysql-test/t/mysql.test
      mysql-test/t/mysqlcheck.test
      mysql-test/t/partition_innodb_stmt.test
      mysql-test/t/partition_mgm.test
      mysql-test/t/partition_pruning.test
      mysql-test/t/query_cache.test
      mysql-test/t/rpl_init_slave_func.test
      mysql-test/t/select.test
      mysql-test/t/status.test
      mysql-test/t/strict.test
      mysql-test/t/temp_table.test
      mysql-test/t/type_bit.test
      mysql-test/t/type_date.test
      mysql-test/t/type_float.test
      mysql-test/t/warnings_engine_disabled.test
      mysql-test/t/xml.test
      mysys/my_getopt.c
      mysys/my_init.c
      scripts/mysql_install_db.sh
      sql-common/my_time.c
      sql/field.cc
      sql/field.h
      sql/filesort.cc
      sql/ha_partition.cc
      sql/ha_partition.h
      sql/item.cc
      sql/item_cmpfunc.cc
      sql/item_func.h
      sql/item_strfunc.cc
      sql/item_sum.cc
      sql/item_timefunc.cc
      sql/item_timefunc.h
      sql/log.cc
      sql/log.h
      sql/log_event.cc
      sql/log_event.h
      sql/mysql_priv.h
      sql/mysqld.cc
      sql/opt_range.cc
      sql/partition_info.cc
      sql/repl_failsafe.cc
      sql/rpl_constants.h
      sql/set_var.cc
      sql/slave.cc
      sql/spatial.h
      sql/sql_acl.cc
      sql/sql_base.cc
      sql/sql_binlog.cc
      sql/sql_class.h
      sql/sql_cursor.cc
      sql/sql_delete.cc
      sql/sql_lex.cc
      sql/sql_lex.h
      sql/sql_locale.cc
      sql/sql_parse.cc
      sql/sql_partition.cc
      sql/sql_plugin.cc
      sql/sql_plugin.h
      sql/sql_profile.cc
      sql/sql_repl.cc
      sql/sql_select.cc
      sql/sql_select.h
      sql/sql_show.cc
      sql/sql_table.cc
      sql/sql_trigger.cc
      sql/sql_trigger.h
      sql/table.cc
      sql/table.h
      sql/unireg.cc
      storage/csv/ha_tina.cc
      storage/federated/ha_federated.cc
      storage/heap/ha_heap.cc
      storage/innobase/Makefile.am
      storage/innobase/btr/btr0sea.c
      storage/innobase/buf/buf0lru.c
      storage/innobase/dict/dict0dict.c
      storage/innobase/dict/dict0mem.c
      storage/innobase/handler/ha_innodb.cc
      storage/innobase/handler/ha_innodb.h
      storage/innobase/include/btr0sea.h
      storage/innobase/include/dict0dict.h
      storage/innobase/include/dict0mem.h
      storage/innobase/include/ha_prototypes.h
      storage/innobase/include/lock0lock.h
      storage/innobase/include/row0mysql.h
      storage/innobase/include/sync0sync.ic
      storage/innobase/include/ut0ut.h
      storage/innobase/lock/lock0lock.c
      storage/innobase/os/os0file.c
      storage/innobase/plug.in
      storage/innobase/row/row0mysql.c
      storage/innobase/row/row0sel.c
      storage/innobase/srv/srv0srv.c
      storage/innobase/srv/srv0start.c
      storage/innobase/ut/ut0ut.c
      storage/myisam/ft_boolean_search.c
      strings/ctype.c
      strings/xml.c
      tests/mysql_client_test.c
      win/configure.js
      mysql-test/suite/funcs_1/t/is_coll_char_set_appl.test
  
  ------------------------------------------------------------------------
  r4165 | calvin | 2009-02-12 01:34:27 +0200 (Thu, 12 Feb 2009) | 1 line
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
  
  branches/5.1: minor non-functional changes.
  ------------------------------------------------------------------------
2009-02-20 12:56:59 +00:00
vasil
8e11468b17 branches/zip:
* Remove old Innobase copyright lines from C source files
* Add a reference to the GPLv2 license as recommended by the lawyers
at Oracle Legal

[Step 3/28]
2009-02-17 08:25:45 +00:00
vasil
c6232c06fa branches/zip:
To the files touched by the Google patch from c4144 (excluding
include/os0sync.ic because later we removed Google code from that file):

* Remove the Google license
* Remove old Innobase copyright lines
* Add a reference to the Google license and to the GPLv2 license at the top,
as recommended by the lawyers at Oracle Legal.
2009-02-17 07:56:33 +00:00
marko
25f45c0d1c branches/zip: Make innodb_thread_concurrency=0 the default.
The old default was 8.
2009-02-11 22:14:19 +00:00
marko
ecda78f01c branches/zip: get_share(), free_share(): Make table locking case sensitive.
If lower_case_table_names=1, MySQL will pass the table names in lower case.
Thus, we can use a binary comparison (strcmp) in the hash table.

rb://87 approved by Heikki Tuuri, to address Bug #41676 and Issue #167.
2009-02-10 09:51:43 +00:00
inaam
a1bb700fd2 branches/zip rb://30
This patch changes the innodb mutexes and rw_locks implementation.
On supported platforms it uses GCC builtin atomics. These changes
are based on the patch sent by Mark Callaghan of Google under BSD
license. More technical discussion can be found at rb://30

Approved by: Heikki
2009-02-09 23:36:25 +00:00
marko
6aab391620 branches/zip: Make innodb_adaptive_hash_index settable.
btr_search_disabled: Rename to btr_search_enabled and change the type
to char, so that it can be directly linked to the MySQL parameters.
Note that the variable is protected by btr_search_latch and
btr_search_enabled_mutex, a new mutex introduced in this patch.

btr_search_enabled_mutex: A new mutex, to protect btr_search_enabled
together with btr_search_latch.

buf_pool_drop_hash_index(): New function, to be called from
btr_search_disable().

btr_search_disable(), btr_search_enable(): Fix bugs.  These functions
were previously unused.

btr_search_guess_on_hash(), btr_search_build_page_hash_index():
Check btr_search_enabled once more, while holding btr_search_latch.

btr_cur_search_to_nth_level(): Note that the reads of btr_search_enabled
may be dirty and explain why it should not be a problem.

innobase_adaptive_hash_index: Remove. The variable btr_search_enabled will be used directly instead.

innodb_adaptive_hash_index_update(): New function, an update callback for
innodb_adaptive_hash_index.  This will call either btr_search_disable()
or btr_search_enable() when the value is assigned.  The functions will
be called even if the value does not appear to be changed, e.g., when
setting from TRUE to TRUE or FALSE to FALSE.

rb://85 approved by Heikki Tuuri.  This addresses Issue #163.
2009-01-30 21:30:29 +00:00
marko
635268b769 branches/zip: ibuf_use_t: Add the constant IBUF_USE_COUNT, to eliminate
a gcc warning about an assertion that trivially holds.
The warning was introduced in r4061, in the merge of
branches/innodb+ -r4053.

ibuf_insert(): Let an assertion fail if ibuf_use is unknown.
2009-01-30 10:58:56 +00:00
marko
8b025adba6 branches/zip: Port the applicable parts of r4053 from branches/innodb+:
Implement the global variable innodb_change_buffering, with the
following values:

none - buffer nothing
inserts - buffer inserts (the default)

Approved by Ken Jacobs.
2009-01-29 09:27:09 +00:00
calvin
533afa46ce branches/zip: Merge revisions 4032:4035 from branches/5.1
All InnoDB related tests passed on Windows, except
known failure in partition_innodb_semi_consistent.

The inadvertent change to btr0sea.c in this commit is reverted in r4060.

  ------------------------------------------------------------------------
  r4035 | vasil | 2009-01-26 09:26:25 -0600 (Mon, 26 Jan 2009) | 23 lines

  branches/5.1:

  Merge a change from MySQL:

    ------------------------------------------------------------
    revno: 2646.161.4
    committer: Tatiana A. Nurnberg <azundris@mysql.com>
    branch nick: 51-31177v2
    timestamp: Mon 2009-01-12 06:32:49 +0100
    message:
      Bug#31177: Server variables can't be set to their current values

      Bounds-checks and blocksize corrections were applied to user-input,
      but constants in the server were trusted implicitly. If these values
      did not actually meet the requirements, the user could not set change
      a variable, then set it back to the (wonky) factory default or maximum
      by explicitly specifying it (SET <var>=<value> vs SET <var>=DEFAULT).

      Now checks also apply to the server's presets. Wonky values and maxima
      get corrected at startup. Consequently all non-offsetted values the user
      sees are valid, and users can set the variable to that exact value if
      they so desire.
2009-01-29 01:06:41 +00:00
marko
2f7bcc7d99 branches/zip: In hash table lookups, assert that the traversed items
satisfy some conditions when UNIV_DEBUG is defined.

HASH_SEARCH(): New parameter: ASSERTION. All users will pass an appropriate
ut_ad() or nothing.

dict_table_add_to_columns(): Assert that the table being added to the data
dictionary cache is not already being pointed to by the name_hash and
id_hash tables.

HASH_SEARCH_ALL(): New macro, for use in dict_table_add_to_columns().

dict_mem_table_free(): Set ut_d(table->cached = FALSE), so that we can
check ut_ad(table->cached) when traversing the hash tables, as in
HASH_SEARCH(name_hash, dict_sys->table_hash, ...) and
HASH_SEARCH(id_hash, dict_sys->table_id_hash, ...).

dict_table_get_low(), dict_table_get_on_id_low(): Assert
ut_ad(!table || table->cached).

fil_space_get_by_id(): Check ut_ad(space->magic_n == FIL_SPACE_MAGIC_N)
in HASH_SEARCH(hash, fil_system->spaces, ...).

fil_space_get_by_name(): Check ut_ad(space->magic_n == FIL_SPACE_MAGIC_N)
in HASH_SEARCH(name_hash, fil_system->name_hash, ...).

buf_buddy_block_free(): Check that the blocks are in valid state in
HASH_SEARCH(hash, buf_pool->zip_hash, ...).

buf_page_hash_get(): Check that the blocks are in valid state in
HASH_SEARCH(hash, buf_pool->page_hash, ...).

get_share(), free_share(): Check ut_ad(share->use_count > 0) in
HASH_SEARCH(table_name_hash, innobase_open_tables, ...).

This was posted as rb://75 for tracking down errors similar to Issue #153.
2009-01-13 19:46:22 +00:00
marko
d019dd3797 branches/zip: Do not call trx_allocate_for_mysql() directly, but use
helper functions that initialize some members of the transaction struct.
(Bug #41680)

innobase_trx_init(): New function: initialize some fields of a
transaction struct from a MySQL THD object.

innobase_trx_allocate(): New function: allocate and initialize a
transaction struct.

check_trx_exists(): Use the above two functions.

ha_innobase::delete_table(), ha_innobase::rename_table(),
ha_innobase::add_index(), ha_innobase::final_drop_index():
Use innobase_trx_allocate().

innobase_drop_database(): In the Windows plugin, initialize the trx_t
specially, because the THD is not available.  Otherwise, use
innobase_trx_allocate().

rb://69 accepted by Heikki Tuuri
2009-01-07 14:22:18 +00:00
marko
6c9b61690a branches/zip: Merge revisions 3598:3601 from branches/5.1:
------------------------------------------------------------------------
  r3601 | marko | 2008-12-22 16:05:19 +0200 (Mon, 22 Dec 2008) | 9 lines

  branches/5.1: Make
  SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
  a true replacement of SET GLOBAL INNODB_LOCKS_UNSAFE_FOR_BINLOG=1.
  This fixes an error that was introduced in r370, causing
  semi-consistent read not to not unlock rows in READ COMMITTED mode.
  (Bug #41671, Issue #146)

  rb://67 approved by Heikki Tuuri
  ------------------------------------------------------------------------
2009-01-05 10:54:53 +00:00
inaam
09a089ecf8 branches/zip: Implement the parameter innodb_use_sys_malloc
(false by default), for disabling InnoDB's internal memory allocator
and using system malloc/free instead.

rb://62 approved by Marko
2009-01-02 13:10:50 +00:00
marko
e940107e2d branches/zip: Merge c2998 from branches/6.0, so that the same InnoDB Plugin
source tree will work both under 5.1 and 6.0.  Do not add the test case
innodb_ctype_ldml.test, because it would not work under MySQL 5.1.

Refuse to create tables whose columns contain collation IDs above 255.
This removes an assertion failure that was introduced in WL#4164
(Two-byte collation IDs).

create_table_def(): Do not fail an assertion if a column contains a
charset-collation ID greater than 256. Instead, issue an error and
refuse to create the table.

The original change (branches/6.0 r2998) was rb://51 approved by Calvin Sun.
2009-01-02 09:02:44 +00:00
marko
d4d4e50285 branches/zip: Remove the dependency on the MySQL HASH table implementation.
Use the InnoDB hash table for keeping track of INNOBASE_SHARE objects.

struct st_innobase_share: Make table_name const uchar*.  Add the member
table_name_hash.

innobase_open_tables: Change the type from HASH to hash_table_t*.

innobase_get_key(): Remove.

innobase_fold_name(): New function, for computing the fold value for the
InnoDB hash table.

get_share(), free_share(): Use the InnoDB hash functions.

innobase_end(): Free innobase_open_tables before shutting down InnoDB.
Shutting down InnoDB will invalidate all memory allocated via InnoDB.

rb://65 approved by Heikki Tuuri.  This addresses Issue #104.
2008-12-30 20:33:31 +00:00
marko
d1b5613fa0 branches/zip: Merge revisions 3479:3598 from branches/5.1:
------------------------------------------------------------------------
  r3588 | inaam | 2008-12-18 14:26:54 +0200 (Thu, 18 Dec 2008) | 8 lines

  branches/5.1

  It is a bug in unused code. If we don't calculate the hash value when
  calculating the mutex number then two pages which map to same hash
  value can get two different mutex numbers.

  Approved by: Marko
  ------------------------------------------------------------------------
  r3590 | marko | 2008-12-18 15:33:36 +0200 (Thu, 18 Dec 2008) | 11 lines

  branches/5.1: When converting a record to MySQL format, copy the default
  column values for columns that are SQL NULL.  This addresses failures in
  row-based replication (Bug #39648).

  row_prebuilt_t: Add default_rec, for the default values of the columns in
  MySQL format.

  row_sel_store_mysql_rec(): Use prebuilt->default_rec instead of
  padding columns.

  rb://64 approved by Heikki Tuuri
  ------------------------------------------------------------------------
  r3598 | marko | 2008-12-22 15:28:03 +0200 (Mon, 22 Dec 2008) | 6 lines

  branches/5.1: ibuf_delete_rec(): When the record cannot be found and
  the tablespace has been dropped, commit the mini-transaction, so that
  InnoDB will not hold the insert buffer tree latch in exclusive mode,
  causing a potential deadlock.  This bug was introduced in the fix of
  Bug #27276 in r2924.
  ------------------------------------------------------------------------
2008-12-22 13:41:47 +00:00
marko
4ce5c4a19a branches/zip: ha_innodb.cc: Do not include some unnecessary MySQL header files. 2008-12-18 13:24:44 +00:00