Commit graph

46 commits

Author SHA1 Message Date
calvin
d29ba92df0 branches/zip: Exclude thd_binlog_filter_ok() when building
with older version of MySQL.

thd_binlog_filter_ok() is introduced in MySQL 5.1.41. But the
plugin can be built with MySQL prior to 5.1.41.

Approved by Heikki (on IM).
2009-11-11 15:53:20 +00:00
vasil
130d2029d2 branches/zip:
Merge a change from MySQL:
(this has been reviewed by Calvin and Marko, and Calvin says Luis has
incorporated Marko's suggestions)

  ------------------------------------------------------------
  revno: 3092.5.1
  committer: Luis Soares <luis.soares@sun.com>
  branch nick: mysql-5.1-bugteam
  timestamp: Thu 2009-09-24 15:52:52 +0100
  message:
    BUG#42829: binlogging enabled for all schemas regardless of
    binlog-db-db / binlog-ignore-db
          
    InnoDB will return an error if statement based replication is used
    along with transaction isolation level READ-COMMITTED (or weaker),
    even if the statement in question is filtered out according to the
    binlog-do-db rules set. In this case, an error should not be printed.
          
    This patch addresses this issue by extending the existing check in
    external_lock to take into account the filter rules before deciding to
    print an error. Furthermore, it also changes decide_logging_format to
    take into consideration whether the statement is filtered out from 
    binlog before decision is made.
  added:
    mysql-test/suite/binlog/r/binlog_stm_do_db.result
    mysql-test/suite/binlog/t/binlog_stm_do_db-master.opt
    mysql-test/suite/binlog/t/binlog_stm_do_db.test
  modified:
    sql/sql_base.cc
    sql/sql_class.cc
    storage/innobase/handler/ha_innodb.cc
    storage/innobase/handler/ha_innodb.h
    storage/innodb_plugin/handler/ha_innodb.cc
    storage/innodb_plugin/handler/ha_innodb.h
2009-11-11 13:13:01 +00:00
jyang
396f34227c branches/zip: Port bug #46000 related changes from 5.1 to zip
branch. Due to different code path for creating index in zip
branch comparing to 5.1), the index reserved name check function
is extended to be used in ha_innobase::add_index(). 
rb://190  Approved by: Marko
2009-10-22 01:58:39 +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
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
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
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
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
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
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
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
f1591a52a1 branches/zip: Fix the handler class method return type. Change ulong to ulint
so that it conforms to InnoDB's internal error/return code type.
2008-10-04 06:34:54 +00:00
sunny
0eff3d3ca6 branches/zip: 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.

This also fixes Bug#39830 Table autoinc value not updated on first insert.
rb://16
2008-10-04 06:24:56 +00:00
sunny
b5020016ee 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-04 03:47:18 +00:00
marko
ebdb9daa9b branches/zip: Merge 2295:2367 from branches/5.1. 2008-03-17 14:09:44 +00:00
marko
8622d055d5 branches/zip: Always translate DB_TOO_BIG_RECORD into
my_error(ER_TOO_BIG_ROWSIZE, ...).  Otherwise, MySQL can report
"Got error 139 from storage engine" instead of the appropriate
error message.

ha_innobase::index_read(), ha_innobase::general_fetch():
Replace if-else if-else with switch-case.
Pass table->flags to convert_error_code_to_mysql().

innodb_check_for_record_too_big_error().  Remove.  This code belongs to
convert_error_code_to_mysql().

convert_error_code_to_mysql(): Add the parameter "flags", for table flags.
Translate DB_TOO_BIG_RECORD into ER_TOO_BIG_ROWSIZE.

create_index(): Add the parameter "flags".

create_clustered_index_when_no_primary(): Replace the parameter "comp"
with "flags".

innobase_drop_database(): Remove the #ifdef'd-out call to 
convert_error_code_to_mysql().
2008-03-17 11:28:17 +00:00
marko
2c2b06ad75 branches/zip: Introduce UNIV_INTERN, a linkage specifier for InnoDB-global
symbols.  Use it for all definitions of non-static variables and functions.

lexyy.c, make_flex.sh: Declare yylex as UNIV_INTERN, not static.  It is
referenced from pars0grm.c.

Actually, according to
	nm .libs/ha_innodb.so|grep -w '[ABCE-TVXYZ]'
the following symbols are still global:

* The vtable for class ha_innodb
* pars0grm.c: The function yyparse() and the variables yychar, yylval, yynerrs

The required changes to the Bison-generated file pars0grm.c will be addressed
in a separate commit, which will add a script similar to make_flex.sh.

The class ha_innodb is renamed from class ha_innobase by a #define.  Thus,
there will be no clash with the builtin InnoDB.  However, there will be some
overhead for invoking virtual methods of class ha_innodb.  Ideas for making
the vtable hidden are welcome.  -fvisibility=hidden is not available in GCC 3.
2008-02-06 14:17:36 +00:00
marko
690566c36a branches/zip: Merge 2116:2146 from trunk. 2007-11-30 12:30:21 +00:00
marko
3b99f0d17c branches/zip: Fix some link errors.
ha_innobase::update_thd(void): New function, to call the inline function
ha_innobase::update_thd(THD*).

check_trx_exists(): Make static.  handler0alter.cc does not need to call
this function.
2007-09-28 10:44:20 +00:00
marko
f5e4a4c3ed branches/zip: Merge 1830:1862 from trunk. 2007-09-20 08:36:22 +00:00
marko
1fabfe9c99 branches/zip: Move the code related to fast index creation
(smart ALTER TABLE) from ha_innodb.cc to a separate module, handler0alter.cc.
2007-09-13 09:31:54 +00:00
marko
37e720811b branches/zip: Enclose the definition of dict_index_t::trx_id in
#ifdef ROW_MERGE_IS_INDEX_USABLE, to avoid growing the memory
footprint until MySQL implements and calls the virtual method
handler::is_index_available() or something equivalent.
2007-09-03 07:13:59 +00:00
marko
d662c3c656 branches/zip: Merge 1575:1664 from trunk. 2007-08-01 11:18:43 +00:00
marko
7fbc04fcdc branches/zip: Merge 1533:1553 from trunk. 2007-06-06 11:07:37 +00:00
marko
e7284367dc branches/zip: Merge revisions 1402:1493 from trunk.
Remove mysql.patch, because the configuration parameter interface has changed.
2007-05-14 09:07:15 +00:00
marko
a47b9e64e6 branches/zip: Merge branches/fast-index-creation -r1413.
Fix some bugs.  The tests innodb and innodb-index fail, but that might
be due to an old MySQL source tree being used.
2007-04-04 11:05:33 +00:00
marko
33c1125d55 branches/zip: Merge revisions 1322:1402 from trunk. 2007-04-02 05:39:41 +00:00
marko
e4910d4775 branches/zip: Add the pseudo table INFORMATION_SCHEMA.INNODB_BUDDY
for displaying buddy allocator statistics.

buf_buddy_used[], buf_buddy_relocated[]: Declare as global symbols.

mysql_declare_plugin(innobase): Add MYSQL_INFORMATION_SCHEMA_PLUGIN
for innobase_is_buddy ("INNODB_BUDDY").
2007-03-12 12:01:45 +00:00
marko
8332c1f717 branches/zip: Merge revisions 1271:1322 from trunk. 2007-03-01 13:53:57 +00:00
marko
c712838401 branches/zip: Merge revisions 1165:1206 from trunk. 2007-01-18 12:58:39 +00:00
marko
879b1fd73d branches/zip: Implement resizeable buffer pool.
mysql.patch: Patch to change or add variables to MySQL

innodb.patch: Patch to make the master thread poll requests to resize
the buffer pool.

Replace srv_pool_size and innobase_buffer_pool_size
with srv_buf_pool_size, srv_buf_pool_old_size,
and srv_buf_pool_curr_size.

Add buf_chunk_t, a collection of buf_block_t.
2006-11-14 14:27:26 +00:00
marko
7499c4bda5 branches/zip: Remove the variable innobase_buffer_pool_awe_mem_mb.
The bulk of the AWE support was removed in r976.
2006-11-13 10:03:18 +00:00
marko
4574bdda81 branches/zip: Merge revisions 968:1009 from trunk. 2006-11-10 11:15:59 +00:00
marko
cea48e8a36 branches/zip: Merge revisions 869:887 from trunk. 2006-10-03 13:10:20 +00:00
marko
9a16aac783 branches/zip: Merge revisions 804:838 from trunk. 2006-09-19 10:14:07 +00:00
marko
78d1dd326c branches/zip: Merge revisions 767:789 from trunk. 2006-09-04 19:47:47 +00:00
marko
36ed778816 branches/zip: Merge revisions 634:713 from trunk. 2006-08-11 11:49:38 +00:00
marko
645e56909f branches/zip: Merge revisions 583:634 from trunk. 2006-06-13 20:23:26 +00:00
marko
cfc945a954 branches/zip: Merge revisions 465:532 from trunk. 2006-05-08 06:18:59 +00:00
marko
f40121415d branches/zip: Merge revisions 200:236 from trunk. 2006-02-23 19:25:29 +00:00
marko
6ce8427cb8 branches/zip: Merge revisions 79:200 from trunk. 2006-02-17 14:19:39 +00:00
marko
ad69a82677 branches/zip: Merge revisions 72:79 from trunk. 2005-11-30 13:29:31 +00:00
marko
e12d8a0f10 branches/zip: Merge revisions 9:72 from trunk. 2005-11-29 12:30:46 +00:00
osku
994aaaac93 Add 5.0 -> 5.1 changes. 2005-10-27 07:51:34 +00:00
osku
c307820962 Import 5.0 code. 2005-10-27 07:29:40 +00:00