Commit graph

12642 commits

Author SHA1 Message Date
dlenev@mysql.com
d6f47c31b6 After merge fixes for patch solving bug#18437 "Wrong values inserted with a
before update trigger on NDB table".

Two main changes:
- We use TABLE::read_set/write_set bitmaps for marking fields used by
  statement instead of Field::query_id in 5.1.
- Now when we mark columns used by statement we take into account columns 
  used by table's triggers instead of marking all columns as used if table
  has triggers.
2006-07-06 13:33:23 +04:00
dlenev@mysql.com
eb3ae6eb79 Merge mysql.com:/home/dlenev/mysql-5.0-bg18437-3
into  mysql.com:/home/dlenev/mysql-5.1-bg18437
2006-07-02 02:12:53 +04:00
dlenev@mysql.com
d4450e6696 Fix for bug#18437 "Wrong values inserted with a before update trigger on
NDB table".

SQL-layer was not marking fields which were used in triggers as such. As
result these fields were not always properly retrieved/stored by handler
layer. So one might got wrong values or lost changes in triggers for NDB,
Federated and possibly InnoDB tables.
This fix solves the problem by marking fields used in triggers
appropriately.

Also this patch contains the following cleanup of ha_ndbcluster code:

We no longer rely on reading LEX::sql_command value in handler in order
to determine if we can enable optimization which allows us to handle REPLACE
statement in more efficient way by doing replaces directly in write_row()
method without reporting error to SQL-layer.
Instead we rely on SQL-layer informing us whether this optimization
applicable by calling handler::extra() method with
HA_EXTRA_WRITE_CAN_REPLACE flag.
As result we no longer apply this optimzation in cases when it should not
be used (e.g. if we have on delete triggers on table) and use in some
additional cases when it is applicable (e.g. for LOAD DATA REPLACE).

Finally this patch includes fix for bug#20728 "REPLACE does not work
correctly for NDB table with PK and unique index".
  
This was yet another problem which was caused by improper field mark-up.
During row replacement fields which weren't explicity used in REPLACE
statement were not marked as fields to be saved (updated) so they have
retained values from old row version. The fix is to mark all table
fields as set for REPLACE statement. Note that in 5.1 we already solve
this problem by notifying handler that it should save values from all
fields only in case when real replacement happens.
2006-07-02 01:51:10 +04:00
evgen@moonbone.local
1459784aba Reverted wrong bug fix (Bug#11228) 2006-07-01 01:37:20 +04:00
evgen@moonbone.local
a989f7261e Merge moonbone.local:/home/evgen/bk-trees/mysql-5.0-opt
into moonbone.local:/work/merge-5.1
2006-06-30 16:10:26 +04:00
monty@hasky.mysql.fi
0b00ae6bc5 Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  mysql.com:/home/my/mysql-5.1
2006-06-29 23:41:33 +03:00
lars@dl145k.mysql.com
f3d8d60259 Merge mysql.com:/users/lthalmann/bkroot/mysql-5.1
into  mysql.com:/users/lthalmann/bk/MERGE/mysql-5.1-merge
2006-06-29 14:24:02 +02:00
tomas@poseidon.ndb.mysql.com
0d22cc662b Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.1
into  poseidon.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb
2006-06-29 10:48:31 +02:00
monty@mysql.com
3f22bc07c6 Fixed failing test rpl_ndb_auto_inc.test
Mark events_stress.test as 'big' as it's very slow on some machines
2006-06-29 03:24:33 +03:00
monty@narttu.mysql.fi
7b0f8635ae Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  mysql.com:/home/my/mysql-5.1
2006-06-29 00:09:53 +03:00
monty@narttu.mysql.fi
91c3e28d77 Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  mysql.com:/home/my/mysql-5.1
2006-06-28 20:03:46 +03:00
evgen@moonbone.local
82369c4e65 Manual merge 2006-06-28 19:34:04 +04:00
tomas@poseidon.ndb.mysql.com
63c72dc02b Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.1
into  poseidon.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb
2006-06-28 17:12:18 +02:00
lars@dl145k.mysql.com
d4f7943594 Merge mysql.com:/users/lthalmann/bkroot/mysql-5.1-new-rpl
into  mysql.com:/users/lthalmann/bk/MERGE/mysql-5.1-merge
2006-06-28 16:44:54 +02:00
lars@mysql.com
c75584d8d9 Merge mysql.com:/users/lthalmann/bk/mysql-5.0-rpl
into  mysql.com:/users/lthalmann/bk/mysql-5.1-new-rpl
2006-06-28 15:27:25 +02:00
lars@mysql.com
38501d8804 Disabled test case for Windows (BUG#20753) 2006-06-28 15:07:41 +02:00
gkodinov@mysql.com
2cda7f5d80 4.1->5.0 merge for bug #16458 2006-06-28 15:53:54 +03:00
monty@mysql.com
31fdcd3be0 Added purecov comment for new, not executed code for my recent changeset
(Found by dgcov)
2006-06-28 14:03:08 +03:00
knielsen@mysql.com
529a2d1291 BUG#20739: __NT__ not probably defined for mysys project.
Make sure for the mysys project that __NT__ is defined in *nt solution
configurations (but not in other configurations).
2006-06-28 12:30:14 +02:00
gluh@eagle.intranet.mysql.r18.ru
3e22ea44e5 Merge sgluhov@bk-internal.mysql.com:/home/bk/mysql-5.1
into mysql.com:/home/gluh/MySQL/Merge/5.1-kt
2006-06-28 11:55:15 +05:00
jonas@perch.ndb.mysql.com
b26e651f98 Merge perch.ndb.mysql.com:/home/jonas/src/51-work
into  perch.ndb.mysql.com:/home/jonas/src/mysql-5.1-new
2006-06-28 08:47:43 +02:00
tomas@poseidon.ndb.mysql.com
40267422eb corrected partition test case results that were put back 2006-06-28 01:03:10 +02:00
tomas@poseidon.ndb.mysql.com
ec4738fcf0 Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.1
into  poseidon.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb
2006-06-27 22:27:25 +02:00
gluh@eagle.intranet.mysql.r18.ru
0ccd44cdf2 Merge sgluhov@bk-internal.mysql.com:/home/bk/mysql-5.1
into mysql.com:/home/gluh/MySQL/Merge/5.1-kt
2006-06-27 22:02:06 +05:00
jmiller@mysql.com
909e81fbf0 rpl_ndb_dd_partitions.test, rpl_ndb_dd_partitions.result:
Adding back ndb partition tests from mysql-test-extra per tomas and clavin
  new file
2006-06-27 18:44:25 +02:00
jmiller@ndb08.mysql.com
4dcee064c4 Merge jmiller@bk-internal.mysql.com:/home/bk/mysql-5.1
into  mysql.com:/data0/mysql-5.1
2006-06-27 18:36:52 +02:00
jmiller@mysql.com
40e27a25f5 Many files:
Adding back ndb partition tests from mysql-test-extra per tomas and clavin
  new file
2006-06-27 18:35:10 +02:00
gkodinov@mysql.com
7149f48d97 Merge mysql.com:/home/kgeorge/mysql/4.1/B16458
into  mysql.com:/home/kgeorge/mysql/5.0/B16458
2006-06-27 17:59:49 +03:00
gkodinov@mysql.com
9ec681ef35 Bug #16458: Simple SELECT FOR UPDATE causes "Result Set not updatable" error
'SELECT DISTINCT a,b FROM t1' should not use temp table if there is unique 
index (or primary key) on a.
There are a number of other similar cases that can be calculated without the
use of a temp table : multi-part unique indexes, primary keys or using GROUP BY 
instead of DISTINCT.
When a GROUP BY/DISTINCT clause contains all key parts of a unique
index, then it is guaranteed that the fields of the clause will be
unique, therefore we can optimize away GROUP BY/DISTINCT altogether.
This optimization has two effects:
* there is no need to create a temporary table to compute the
   GROUP/DISTINCT operation (or the temporary table will be smaller if only GROUP 
   is removed and DISTINCT stays or if DISTINCT is removed and GROUP BY stays)
* this causes the statement in effect to become updatable in Connector/Java
because the result set columns will be direct reference to the primary key of 
the table (instead to the temporary table that it currently references). 

Implemented a check that will optimize away GROUP BY/DISTINCT for queries like 
the above.
Currently it will work only for single non-constant table in the FROM clause.
2006-06-27 17:40:19 +03:00
gluh@eagle.intranet.mysql.r18.ru
49afa7d075 Merge sgluhov@bk-internal.mysql.com:/home/bk/mysql-5.1
into mysql.com:/home/gluh/MySQL/Merge/5.1-kt
2006-06-27 18:24:14 +05:00
konstantin@bodhi.netgear
632c6e607b Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  mysql.com:/opt/local/work/mysql-5.1-runtime
2006-06-27 03:38:46 +04:00
jmiller@ndb08.mysql.com
cf58d2b544 Merge jmiller@bk-internal.mysql.com:/home/bk/mysql-5.1
into  mysql.com:/data0/mysql-5.1
2006-06-26 22:31:31 +02:00
jonas@perch.ndb.mysql.com
4af95eb79c Merge perch.ndb.mysql.com:/home/jonas/src/mysql-5.1-new
into  perch.ndb.mysql.com:/home/jonas/src/mysql-5.1-new-ndb
2006-06-26 20:14:40 +02:00
rburnett@bk-internal.mysql.com
93210b0a28 Merge bk-internal.mysql.com:/data0/bk/mysql-5.1
into  bk-internal.mysql.com:/data0/bk/mysql-5.1-kt
2006-06-26 16:53:53 +02:00
konstantin@mysql.com
a04bfd8e2a Merge mysql.com:/opt/local/work/tmp_merge
into  mysql.com:/opt/local/work/mysql-5.1-runtime
2006-06-26 18:49:20 +04:00
konstantin@mysql.com
5e0a692723 Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  mysql.com:/opt/local/work/mysql-5.1-runtime
2006-06-26 18:45:46 +04:00
lars@mysql.com
2a945d77b6 Merge mysql.com:/users/lthalmann/bkroot/mysql-5.0-rpl
into  mysql.com:/users/lthalmann/bk/MERGE/mysql-5.0-merge
2006-06-26 16:45:32 +02:00
knielsen@rt.int.sifira.dk
b6c587695b Merge mysql.com:/usr/local/mysql/mysql-5.1-pristine
into  mysql.com:/usr/local/mysql/tmp-5.1
2006-06-26 16:04:06 +02:00
knielsen@mysql.com
3ba774f1d7 BUG#20676: debug warnings about too many lock waiters cause test failure.
The 250 simultaneous events all accessing the same table caused the
events_stress test to fail due to debug warnings about too many table
waiters. Fixed by using three different tables.
2006-06-26 15:49:58 +02:00
jonas@perch.ndb.mysql.com
33339fdf40 ndb - bug#20053
make sure we can only drop files from correct file group
2006-06-26 15:08:09 +02:00
andrey@lmy004.
23340f3fdd Merge ahristov@bk-internal.mysql.com:/home/bk/mysql-5.1-runtime
into lmy004.:/work/mysql-5.1-runtime-bug16992
2006-06-26 12:22:13 +02:00
jonas@perch.ndb.mysql.com
50b8eb8538 Merge perch.ndb.mysql.com:/home/jonas/src/mysql-5.1-new
into  perch.ndb.mysql.com:/home/jonas/src/mysql-5.1-new-ndb
2006-06-26 10:02:03 +02:00
andrey@lmy004.
d617241c3f Merge ahristov@bk-internal.mysql.com:/home/bk/mysql-5.1-runtime
into lmy004.:/work/mysql-5.1-runtime-bug18897
2006-06-26 08:55:49 +02:00
elliot@mysql.com
72e8a44d51 Post merge fix 2006-06-25 16:04:11 -04:00
elliot@mysql.com
bc2b96fee3 Merge mysql.com:/home/emurphy/src/bk-clean/tmp_merge
into  mysql.com:/home/emurphy/src/bk-clean/mysql-5.1
2006-06-25 09:59:34 -04:00
knielsen@mysql.com
b9b25ada28 BUG#20677: Sporadic failure of test case 'ndb_binlog_multi'.
Start test case with a dummy table create and drop. This ensures that
NDB event subscription is properly set up before the real test starts,
which otherwise could sometimes cause INSERT events to be lost.
2006-06-25 08:59:44 +02:00
knielsen@mysql.com
13a67a9fea Merge knielsen@10.100.52.19:/usr/local/mysql/tmp-5.0
into  mysql.com:/data0/knielsen/tmp-5.0
2006-06-24 16:44:41 +02:00
knielsen@rt.int.sifira.dk
7491454f78 Merge mysql.com:/usr/local/mysql/tmp-5.0
into  mysql.com:/usr/local/mysql/tmp-5.1
2006-06-24 13:14:24 +02:00
knielsen@mysql.com
34cf139bd9 Fix race condition in test case wait_timeout.
Sometimes the helper connection (that is watching for the main connection
to time out) would itself time out first, causing the test to fail.
2006-06-24 13:11:09 +02:00
rburnett@bk-internal.mysql.com
b1f4ea4555 Merge bk-internal.mysql.com:/data0/bk/mysql-5.1
into  bk-internal.mysql.com:/data0/bk/mysql-5.1-kt
2006-06-24 06:01:57 +02:00