Commit graph

19623 commits

Author SHA1 Message Date
gkodinov/kgeorge@magare.gmz
56a880179f recommit of Bug 25228 for 5.1.22: rpl_relayspace.test fails on powermacg5, vm-win2003-32-a
A test case was waiting for a fixed number of seconds for a specific 
  state of the slave IO thread to take place.
  Fixed by waiting in a loop for that specific thread state instead 
  (or timeout).
2007-08-27 12:21:47 +03:00
msvensson@pilot.(none)
def81f98e7 Bug#28560 mysql_upgrade test links /usr/local/mysql/lib libraries
- Remove disabling of mysql_upgrade
2007-08-27 11:20:31 +02:00
msvensson@pilot.(none)
0b27b3bc0e Merge pilot.(none):/data/msvensson/mysql/mysql-5.0-maint
into  pilot.(none):/data/msvensson/mysql/mysql-5.1-new-maint
2007-08-27 10:50:44 +02:00
gshchepa/uchum@gleb.loc
c733d90651 Merge gleb.loc:/home/uchum/work/bk/5.1
into  gleb.loc:/home/uchum/work/bk/5.1-opt
2007-08-26 19:49:50 +05:00
rafal@quant.(none)
f8b64e17f9 BUG#21842 (Cluster fails to replicate to innodb or myisam with err 134
using TPC-B):
 
Problem: A RBR event can contain incomplete row data (only key value and
fields which have been changed). In that case, when the row is unpacked
into record and written to a table, the missing fields get incorrect NULL
values leading to master-slave inconsistency.
 
Solution: Use values found in slave's table for columns which are not given
in the rows event. The code for writing a single row uses the following 
algorithm: 

1. unpack row_data into table->record[0],
2. try to insert record,
3. if duplicate record found, fetch it into table->record[0],
4. unpack row_data into table->record[0],
5. write table->record[0] into the table.

Where row_data is the row as stored in the data area of a rows event. 
Thus:

a) unpacking of row_data happens at the time when row is written into 
 a table,

b) when unpacking (in step 4), only columns present in row_data are 
 overwritten - all other columns remain as they were found in the table.
 
Since all data needed for the above algorithm is stored inside 
Rows_log_event class, functions which locate and write rows are turned 
into methods of that class.

replace_record()     -> Rows_log_event::write_row()
find_and_fetch_row() -> Rows_log_event::find_row()

Both methods take row data from event's data buffer - the row being 
processed is pointed by m_curr_row. They unpack the data as needed into 
table's record buffers record[0] or record[1]. When row is unpacked, 
m_curr_row_end is set to point at next row in the data buffer.

Other changes introduced in this changeset:

- Change signature of unpack_row(): don't report errors and don't
setup table's rw_set here. Errors can happen only when setting default 
values in prepare_record() function and are detected there.
 
- In Rows_log_event and derived classes, don't pass arguments to
the execution primitives (do_...() member functions) but use class
members instead.

- Move old row handling code into log_event_old.cc to be used by 
*_rows_log_event_old classes.

Also, a new test rpl_ndb_2other is added which tests basic replication 
from master using ndb tables to slave storing the same tables using 
(possibly) different engine (myisam,innodb).
  
Test is based on existing tests rpl_ndb_2myisam and rpl_ndb_2innodb. 
However, these tests doesn't work for various reasons and currently are 
disabled (see BUG#19227).
  
The new test differs from the ones it is based on as follows:
  
1. Single test tests replication with different storage engines on slave 
(myisam, innodb, ndb).
  
2. Include file extra/rpl_tests/rpl_ndb_2multi_eng.test containing 
original tests is replaced by extra/rpl_tests/rpl_ndb_2multi_basic.test 
which doesn't contain tests using partitioned tables as these don't work 
currently. Instead, it tests replication to a slave which has more or 
less columns than master.
  
3. Include file include/rpl_multi_engine3.inc is replaced with 
include/rpl_multi_engine2.inc. The later differs by performing slightly 
different operations (updating more than one row in the table) and 
clearing table with "TRUNCATE TABLE" statement instead of "DELETE FROM" 
as replication of "DELETE" doesn't work well in this setting.
  
4. Slave must use option --log-slave-updates=0 as otherwise execution of 
replication events generated by ndb fails if table uses a different 
storage engine on slave (see BUG#29569).
2007-08-26 14:31:10 +02:00
gshchepa/uchum@gleb.loc
2adf3ee743 Merge gleb.loc:/home/uchum/work/bk/5.1
into  gleb.loc:/home/uchum/work/bk/5.1-opt
2007-08-25 23:28:23 +05:00
gshchepa/uchum@gleb.loc
ced93cb35e Merge gleb.loc:/home/uchum/work/bk/5.0-opt
into  gleb.loc:/home/uchum/work/bk/5.1-opt
2007-08-25 22:32:18 +05:00
jani@a88-113-38-195.elisa-laajakaista.fi
b7231ad5d9 Merge a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-5.1-main
into  a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-5.1-marvel
2007-08-25 12:08:18 +03:00
tsmith@ramayana.hindu.god
159d5b71b1 Apply InnoDB snapshot innodb-5.1-ss1726.
Bug #16979: AUTO_INC lock in InnoDB works a table level lock
  - this is a major change in InnoDB auto-inc handling.
Bug #27950: Duplicate entry error in auto-inc after mysqld restart
  - Init AUTOINC from delete_row().
Bug #28781: InnoDB increments auto-increment value incorrectly with ON DUPLICATE KEY UPDATE
  - Use value specified by MySQL, in update_row().
2007-08-24 19:14:52 -06:00
davi@moksha.local
0b8bc8a96b Add test case for bug 29936 Stored Procedure DML ignores low_priority_updates setting.
This test case uses the wait_condition helper (only available in 5.1) in order to wait till the select/update opens and locks the table.
2007-08-24 19:17:29 -03:00
evgen@moonbone.local
2ee3efc240 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/30245-bug-5.0-opt-mysql
2007-08-24 22:11:23 +00:00
holyfoot/hf@mysql.com/hfmain.(none)
eb6651b017 ha_partition.cc, ha_partition.h:
bug fixed
partition_pruning.result:
  test fixed
2007-08-24 21:36:51 +05:00
msvensson@pilot.(none)
89780a84c8 Remove unsued variable $glob_hostname, unused functions
'mtr_short_hostname' and 'mtr_full_hostname'
2007-08-24 15:43:45 +02:00
jani@a88-113-38-195.elisa-laajakaista.fi
b25dacbdee Merge a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-5.1-main
into  a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-5.1-marvel
2007-08-24 15:25:02 +03:00
msvensson@pilot.(none)
52e60422e0 Merge pilot.(none):/data/msvensson/mysql/mysql-5.0-maint
into  pilot.(none):/data/msvensson/mysql/mysql-5.1-new-maint
2007-08-24 13:10:53 +02:00
msvensson@pilot.(none)
4fcea0fc5c Remove unecessary use of "Socket" 2007-08-24 13:10:34 +02:00
joerg@trift2.
08d0b2ba9b Merge jbruehe@bk-internal.mysql.com:/home/bk/mysql-5.1-build
into  trift2.:/MySQL/M51/push-5.1
2007-08-24 12:41:09 +02:00
joerg@trift2.
268ce5eb7e Merge trift2.:/MySQL/M51/tmp-5.1
into  trift2.:/MySQL/M51/push-5.1
2007-08-24 12:28:47 +02:00
df@pippilotta.erinye.com
6d068a5ac7 Merge dfischer@bk-internal.mysql.com:/home/bk/mysql-5.1-build
into  pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.1-build
2007-08-24 10:13:03 +02:00
tomas@whalegate.ndb.mysql.com
7f429ecc7f Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.1-target-5.1.22
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-target-5.1.22
2007-08-24 09:51:41 +02:00
tomas@whalegate.ndb.mysql.com
af5a367311 unable to reproduce bug, perhaps pushbuild can give more info 2007-08-24 09:50:54 +02:00
thek@adventure.(none)
1e43e5402a Merge adventure.(none):/home/thek/Development/cpp/bug28285/my51-bug28285
into  adventure.(none):/home/thek/Development/cpp/mysql-5.1-runtime
2007-08-24 09:44:22 +02:00
holyfoot/hf@hfmain.(none)
c4811d67f7 Merge bk@192.168.21.1:mysql-5.1-opt
into  mysql.com:/home/hf/work/28430/my51-28430
2007-08-24 07:51:58 +05:00
gshchepa/uchum@gleb.loc
72bcbc655e Merge gshchepa@bk-internal.mysql.com:/home/bk/mysql-5.1-target-5.1.22
into  gleb.loc:/home/uchum/work/bk/target-5.1.22/mysql-5.1-target-5.1.22
2007-08-24 02:26:30 +05:00
gshchepa/uchum@gleb.loc
4a7fdf8611 Fixed bug #30396.
Recommit to 5.1.22.
The bug caused memory corruption for some queries with top OR level
in the WHERE condition if they contained equality predicates and 
other sargable predicates in disjunctive parts of the condition.

The corruption happened because the upper bound of the memory
allocated for KEY_FIELD and SARGABLE_PARAM internal structures
containing info about potential lookup keys was calculated incorrectly
in some cases. In particular it was calculated incorrectly when the
WHERE condition was an OR formula with disjuncts being AND formulas
including equalities and other sargable predicates.
2007-08-24 02:23:49 +05:00
gshchepa@bk-internal.mysql.com
46e58466cb Merge bk-internal.mysql.com:/data0/bk/mysql-5.1
into  bk-internal.mysql.com:/users/gshchepa/mysql-5.1-opt
2007-08-23 21:38:24 +02:00
gshchepa@bk-internal.mysql.com
c70dbeab8b Merge bk-internal.mysql.com:/data0/bk/mysql-5.0
into  bk-internal.mysql.com:/users/gshchepa/mysql-5.0-opt
2007-08-23 21:28:33 +02:00
holyfoot/hf@mysql.com/hfmain.(none)
afe7de8234 Bug #28430 Failure in replication of innodb partitioned tables on row/mixed format.
In the ha_partition::position() we didn't calculate the number
of the partition of the record. We used m_last_part value instead,
relying on that it is set in other place like previous call of a method
like ::write_row(). In replication we don't call any of these befor
position(). Delete_rows_log_event::do_exec_row calls find_and_fetch_row.
In case of InnoDB-based PARTITION table, we have HA_PRIMARY_KEY_REQUIRED_FOR_POSITION
enabled, so use position() / rnd_pos() calls to fetch the record.

Fixed by adding partition_id calculation to the ha_partition::position()
2007-08-23 23:34:48 +05:00
df@pippilotta.erinye.com
07c6ef515d Merge pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.0-marvel
into  pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.0.48
2007-08-23 17:43:47 +02:00
thek@adventure.(none)
ddb2ce8f22 Bug#28285 Test "events_bugs" has instable results of "select /*1*/ ... from processlist"
Test case contains possible race conditions. This patch fixes these race
conditions and also adjust the test to execute according to its documentation.
2007-08-23 15:37:55 +02:00
skozlov/ksm@mysql.com/virtop.localdomain
7094223ea2 Bug#28744, Bug#29363 2007-08-23 17:33:06 +04:00
jmiller/ndbdev@ndb08.mysql.com
af68cdb2a8 Merge jmiller@bk-internal.mysql.com:/home/bk/mysql-5.1-target-5.1.22
into  mysql.com:/data1/mysql-5.1-target-5.1.22
2007-08-23 15:33:05 +02:00
tomas@whalegate.ndb.mysql.com
0c38530b82 Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-target-5.1.22
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb-merge
2007-08-23 15:15:35 +02:00
joerg@trift2.
94e9aa8eb1 Merge trift2.:/MySQL/M51/target-5.1.22
into  trift2.:/MySQL/M51/push-5.1
2007-08-22 19:52:30 +02:00
malff/marcsql@weblab.(none)
e0b982fda1 Merge weblab.(none):/home/marcsql/TREE/mysql-5.0-runtime
into  weblab.(none):/home/marcsql/TREE/mysql-5.1-rt50-merge
2007-08-22 11:51:03 -06:00
antony@pcg5ppc.xiphis.org
c7cf3e05b5 Bug#30359
"Test federated_bug_25714 issues non-existing shell command"
  Problem caused by missing '$' symbol in eval statement causing it
  to always attempt to run test even if the test was not compiled.
2007-08-22 10:15:20 -07:00
malff/marcsql@weblab.(none)
ecea791eaf Merge malff@bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  weblab.(none):/home/marcsql/TREE/mysql-5.0-30237
2007-08-22 11:06:42 -06:00
malff/marcsql@weblab.(none)
82f99c9359 Bug#30237 (Performance regression in boolean expressions)
This is a performance bug, related to the parsing or 'OR' and 'AND' boolean
expressions.

Let N be the number of expressions involved in a OR (respectively AND).

When N=1

For example, "select 1" involve only 1 term: there is no OR operator.

In 4.0 and 4.1, parsing expressions not involving OR had no overhead.
In 5.0, parsing adds some overhead, with Select->expr_list.

With this patch, the overhead introduced in 5.0 has been removed,
so that performances for N=1 should be identical to the 4.0 performances,
which are optimal (there is no code executed at all)

The overhead in 5.0 was in fact affecting significantly some operations.
For example, loading 1 Million rows into a table with INSERTs,
for a table that has 100 columns, leads to parsing 100 Millions of
expressions, which means that the overhead related to Select->expr_list
is executed 100 Million times ...

Considering that N=1 is by far the most probable expression,
this case should be optimal.

When N=2

For example, "select a OR b" involves 2 terms in the OR operator.

In 4.0 and 4.1, parsing expressions involving 2 terms created 1 Item_cond_or
node, which is the expected result.
In 5.0, parsing these expression also produced 1 node, but with some extra
overhead related to Select->expr_list : creating 1 list in Select->expr_list
and another in Item_cond::list is inefficient.

With this patch, the overhead introduced in 5.0 has been removed
so that performances for N=2 should be identical to the 4.0 performances.
Note that the memory allocation uses the new (thd->mem_root) syntax
directly.
The cost of "is_cond_or" is estimated to be neglectable: the real problem
of the performance degradation comes from unneeded memory allocations.

When N>=3

For example, "select a OR b OR c ...", which involves 3 or more terms.

In 4.0 and 4.1, the parser had no significant cost overhead, but produced
an Item tree which is difficult to evaluate / optimize during runtime.
In 5.0, the parser produces a better Item tree, using the Item_cond
constructor that accepts a list of children directly, but at an extra cost
related to Select->expr_list.

With this patch, the code is implemented to take the best of the two
implementations:
- there is no overhead with Select->expr_list
- the Item tree generated is optimized and flattened.

This is achieved by adding children nodes into the Item tree directly,
with Item_cond::add(), which avoids the need for temporary lists and memory
allocation

Note that this patch also provide an extra optimization, that the previous
code in 5.0 did not provide: expressions are flattened in the Item tree,
based on what the expression already parsed is, and not based on the order
in which rules are reduced.

For example : "(a OR b) OR c", "a OR (b OR c)" would both be represented
with 2 Item_cond_or nodes before this patch, and with 1 node only with this
patch. The logic used is based on the mathematical properties of the OR
operator (it's associative), and produces a simpler tree.
2007-08-22 11:05:35 -06:00
joerg@trift2.
d4d4f8528e Manual merge of parallel development in separate team trees. 2007-08-22 17:13:42 +02:00
jani@hynda.mysql.fi
6519de0469 Merge hynda.mysql.fi:/home/my/mysql-5.1-main
into  hynda.mysql.fi:/home/my/mysql-5.1-marvel
2007-08-22 17:29:38 +03:00
joerg@trift2.
20ce606797 Merge trift2.:/MySQL/M51/target-5.1.22
into  trift2.:/MySQL/M51/push-5.1

Includes manual merges.
2007-08-22 16:08:55 +02:00
jmiller/ndbdev@mysql.com/ndb08.mysql.com
a36530ed5a ndb_dd_ddl.test, ndb_dd_ddl.result:
Updated test case to correst inconsistant results on different OS per #bug30559
2007-08-22 15:54:10 +02:00
joerg@trift2.
36cba7ce09 Merge trift2.:/MySQL/M51/clone-5.1
into  trift2.:/MySQL/M51/target-5.1.22
2007-08-22 15:49:00 +02:00
joerg@trift2.
057c591e29 Merge trift2.:/MySQL/M51/target-5.1.22
into  trift2.:/MySQL/M51/push-5.1
2007-08-22 15:43:01 +02:00
jani@hynda.mysql.fi
2cb4a2c0b6 Removed a test which output may differ depending on machine load. 2007-08-22 16:18:27 +03:00
jmiller/ndbdev@mysql.com/ndb08.mysql.com
630563d50e ndb_dd_dump.test, ndb_dd_dump.result:
uncommented the test case stated in bug18856 and commiting to mysql-5.1-target-5.1.22 clone per Tomas
2007-08-21 21:22:35 +02:00
joerg@trift2.
ab7e096b68 Merge trift2.:/MySQL/M51/mysql-5.1
into  trift2.:/MySQL/M51/push-5.1
2007-08-21 18:42:35 +02:00
jani@hynda.mysql.fi
2fd7a743e4 Merge hynda.mysql.fi:/home/my/mysql-5.1-main
into  hynda.mysql.fi:/home/my/mysql-5.1-marvel
2007-08-21 19:03:28 +03:00
thek@adventure.(none)
88107378cd Merge adventure.(none):/home/thek/Development/cpp/bug30269/my50-bug30269
into  adventure.(none):/home/thek/Development/cpp/mysql-5.0-runtime
2007-08-21 17:47:06 +02:00
tomas@whalegate.ndb.mysql.com
88fa8c267b rpl_ndb_dd_partitions-slave.opt:
Rename: mysql-test/t/rpl_ndb_dd_partitions-slave.opt -> mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_partitions-slave.opt
.del-rpl_stm_extraColmaster_ndb.result:
  Delete: mysql-test/r/rpl_stm_extraColmaster_ndb.result
.del-rpl_extraColmaster_myisam.test:
  Delete: mysql-test/t/rpl_extraColmaster_myisam.test
ndb_bug26793.result:
  Rename: mysql-test/r/ndb_bug26793.result -> mysql-test/suite/ndb/r/ndb_bug26793.result
.del-rpl_extraColmaster_innodb-slave.opt:
  Delete: mysql-test/t/rpl_extraColmaster_innodb-slave.opt
.del-rpl_extraColmaster_innodb-master.opt:
  Delete: mysql-test/t/rpl_extraColmaster_innodb-master.opt
.del-rpl_row_extraColmaster_ndb.test:
  Delete: mysql-test/t/rpl_row_extraColmaster_ndb.test
.del-rpl_row_extraColmaster_ndb.result:
  Delete: mysql-test/r/rpl_row_extraColmaster_ndb.result
.del-rpl_stm_extraColmaster_ndb.test:
  Delete: mysql-test/t/rpl_stm_extraColmaster_ndb.test
.del-rpl_extraColmaster_innodb.test:
  Delete: mysql-test/t/rpl_extraColmaster_innodb.test
ndb_bug26793.test:
  Rename: mysql-test/t/ndb_bug26793.test -> mysql-test/suite/ndb/t/ndb_bug26793.test
rpl_ndb_dd_partitions-master.opt:
  Rename: mysql-test/t/rpl_ndb_dd_partitions-master.opt -> mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_partitions-master.opt
.del-rpl_colSize.test~d9690ba9ffd2b048:
  Delete: mysql-test/t/rpl_colSize.test
2007-08-21 16:26:00 +02:00