Commit graph

35707 commits

Author SHA1 Message Date
unknown
499d058c2d Merge mysql.com:/windows/Linux_space/MySQL/mysql-5.0
into  mysql.com:/windows/Linux_space/MySQL/mysql-5.0-ndb


include/my_base.h:
  Auto merged
sql/ha_ndbcluster.h:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sql_delete.cc:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_load.cc:
  Auto merged
sql/sql_trigger.h:
  Auto merged
sql/sql_update.cc:
  Auto merged
sql/ha_ndbcluster.cc:
  Merge
2007-04-05 08:39:12 +02:00
unknown
865cd0108a Merge mskold@bk-internal.mysql.com:/home/bk/mysql-5.0-ndb
into  mysql.com:/windows/Linux_space/MySQL/mysql-5.0-ndb


sql/item_func.cc:
  Auto merged
2007-04-05 08:24:03 +02:00
unknown
cfe2d1da88 Removed compiler warnings 2007-04-05 07:28:09 +02:00
unknown
4c0f3c50f8 Fixed compilation error on Windows 2007-04-05 06:49:43 +02:00
unknown
b651aa038c Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
2007-04-04 23:05:59 +02:00
unknown
2efc0f51cf Bug #26242 UPDATE with subquery and triggers failing with cluster tables
In certain cases AFTER UPDATE/DELETE triggers on NDB tables that referenced
subject table didn't see the results of operation which caused invocation
of those triggers. In other words AFTER trigger invoked as result of update
(or deletion) of particular row saw version of this row before update (or
deletion).

The problem occured because NDB handler in those cases postponed actual
update/delete operations to be able to perform them later as one batch.

This fix solves the problem by disabling this optimization for particular
operation if subject table has AFTER trigger for this operation defined.
To achieve this we introduce two new flags for handler::extra() method:
HA_EXTRA_DELETE_CANNOT_BATCH and HA_EXTRA_UPDATE_CANNOT_BATCH.
These are called if there exists AFTER DELETE/UPDATE triggers during a
statement that potentially can generate calls to delete_row()/update_row().
This includes multi_delete/multi_update statements as well as insert statements
that do delete/update as part of an ON DUPLICATE statement.


include/my_base.h:
  Added HA_EXTRA_DELETE_CANNOT_BATCH and HA_EXTRA_UPDATE_CANNOT_BATCH to inform handler when batching of delete/update is not possible.
mysql-test/r/ndb_trigger.result:
  Bug #26242  UPDATE with subquery and triggers failing with cluster tables
  ---
  Added new test cases
mysql-test/t/ndb_trigger.test:
  Bug #26242  UPDATE with subquery and triggers failing with cluster tables
  ---
  Added new test cases
sql/ha_ndbcluster.cc:
  Bug #26242  UPDATE with subquery and triggers failing with cluster tables: Use HA_EXTRA_DELETE_CANNOT_BATCH and HA_EXTRA_UPDATE_CANNOT_BATCH to inform handler when batching of delete/update is not possible
sql/ha_ndbcluster.h:
  Bug #26242  UPDATE with subquery and triggers failing with cluster tables: Added member variables for handling of HA_EXTRA_DELETE_CANNOT_BATCH and HA_EXTRA_UPDATE_CANNOT_BATCH to inform handler when batching of delete/update is not possible
sql/mysql_priv.h:
  Added new method prepare_triggers_for_insert_stmt to check if batching of delete/update must be disallowed.
sql/sql_delete.cc:
  Use HA_EXTRA_DELETE_CANNOT_BATCH to inform handler when batching of delete is not possible
sql/sql_insert.cc:
  Added method prepare_triggers_for_insert_stmt to check if batching of delete/update must be dissallowed.
  Use HA_EXTRA_DELETE_CANNOT_BATCH and HA_EXTRA_UPDATE_CANNOT_BATCH to inform handler
   when batching of delete/update is not possible
sql/sql_load.cc:
  Call prepare_triggers_for_insert_stmt to check if batching of delete/update must be dissallowed and
  mark fields used by triggers for the insert statement.
sql/sql_trigger.h:
  Added has_triggers to support what particular triggers exist on a table.
sql/sql_update.cc:
  Use HA_EXTRA_UPDATE_CANNOT_BATCH to inform handler when batching of update is not possible
2007-04-04 12:50:39 +02:00
unknown
fda365101f Merge mskold@bk-internal.mysql.com:/home/bk/mysql-5.0-ndb
into  mysql.com:/windows/Linux_space/MySQL/mysql-5.0-ndb


sql/ha_ndbcluster.cc:
  Auto merged
sql/item_func.cc:
  Auto merged
2007-04-03 14:00:38 +02:00
unknown
c457e2b88b Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
2007-04-02 22:23:05 +02:00
unknown
29fe12509c Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  bodhi.local:/opt/local/work/mysql-5.0-runtime


sql/item_func.cc:
  Auto merged
2007-04-02 22:06:15 +04:00
unknown
7775800620 Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0-ndb
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
2007-04-02 18:28:42 +02:00
unknown
64c7c89ac0 Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-telco-gca
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb


sql/ha_ndbcluster.cc:
  Auto merged
2007-04-02 18:22:33 +02:00
unknown
f9315b16b1 BUG#27560: Memory usage of mysqld grows while doing nothing
The query-cache watch thread was continually allocating new thread entries on the
THD MEM_ROOT, not freed until server exit.
  
Fixed by using a simple array, auto-expanded as necessary.


sql/ha_ndbcluster.cc:
  Use a fixed array (auto-expanded as necessary) for temporary copy of open shares,
  don't keep pushing list entries on the THD mem root.
2007-04-02 18:21:05 +02:00
unknown
f04a09f0dc Merge perch.ndb.mysql.com:/home/jonas/src/50-work
into  perch.ndb.mysql.com:/home/jonas/src/mysql-5.0-ndb


ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp:
  Auto merged
ndb/src/mgmsrv/InitConfigFileParser.cpp:
  Auto merged
2007-04-02 09:45:58 +02:00
unknown
d71a221d24 ndb - bug#27581
make sure not to leave partially initialized pagerage-records


ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp:
  make sure not to leave partially initialized pagerage-records
2007-04-02 09:07:15 +02:00
unknown
b84e64f7df ndb - fix bug in my.cnf config handling
put64 for 64-bit variables


ndb/src/mgmsrv/InitConfigFileParser.cpp:
  put64
2007-04-02 08:36:00 +02:00
unknown
f249185b6e Merge bk-internal.mysql.com:/data0/bk/mysql-5.0
into  bk-internal.mysql.com:/data0/bk/mysql-5.0-opt


sql/sql_select.cc:
  Auto merged
2007-04-02 03:56:39 +02:00
unknown
c3bdec10a3 Merge mysql.com:/nfsdisk1/lars/MERGE/mysql-4.1-merge
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge
2007-04-01 01:48:21 +02:00
unknown
ad23e528c2 Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.0
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge
2007-04-01 01:46:38 +02:00
unknown
0c6731fdfa Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.0-rpl
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge


sql/sql_base.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/table.h:
  Auto merged
2007-03-31 12:36:50 +02:00
unknown
97c4143e3a Merge bk-internal.mysql.com:/data0/bk/mysql-4.1
into  bk-internal.mysql.com:/data0/bk/mysql-4.1-opt
2007-03-31 09:52:18 +02:00
unknown
7887a74491 Fixed bug #27154: memory corruption when using row equalities in where
conditions.
When allocating memory for KEY_FIELD/SARGABLE_PARAM structures the
function update_ref_and_keys did not take into account the fact that
a single row equality could be replaced by several simple equalities.
Fixed by adjusting the counter cond_count accordingly for each subquery
when performing substitution of a row equality for simple equalities. 
 


mysql-test/r/row.result:
  Added a test case for bug #27154.
mysql-test/t/row.test:
  Added a test case for bug #27154.
2007-03-31 00:23:03 -07:00
unknown
8aa507edb9 Merge bk-internal.mysql.com:/data0/bk/mysql-5.0
into  bk-internal.mysql.com:/data0/bk/mysql-5.0-opt
2007-03-31 05:31:35 +02:00
unknown
f47c23288a Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.0-rpl
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge


sql/mysqld.cc:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
2007-03-31 00:15:20 +02:00
unknown
2016b21ce1 BUG#26624, pushbuild fixes: Merge to 5.0
mysql-test/r/range.result:
  Auto merged
mysql-test/t/range.test:
  Auto merged
2007-03-31 00:48:31 +04:00
unknown
080c0c7ac8 BUG#26624: high mem usage (crash) in range optimizer
Pushbuild fixes: 
 - Make MAX_SEL_ARGS smaller (even 16K records_in_range() calls is 
   more than it makes sense to do in typical cases)
 - Don't call sel_arg->test_use_count() if we've already allocated 
   more than MAX_SEL_ARGs elements. The test will succeed but will take
   too much time for the test suite (and not provide much value).


mysql-test/r/range.result:
  BUG#26624: high mem usage (crash) in range optimizer
  Pushbuild fixes: make the test go faster
mysql-test/t/range.test:
  BUG#26624: high mem usage (crash) in range optimizer
  Pushbuild fixes: make the test go faster
2007-03-31 00:29:18 +04:00
unknown
ade8bbf49e Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-4.1
into  mysql.com:/home/kent/bk/tmp/mysql-4.1-build
2007-03-30 22:26:06 +02:00
unknown
86a0ffdd3c Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the
NO_AUTO_VALUE_ON_ZERO mode.

In the NO_AUTO_VALUE_ON_ZERO mode the table->auto_increment_field_not_null
variable is used to indicate that a non-NULL value was specified by the user
for an auto_increment column. When an INSERT .. ON DUPLICATE updates the
auto_increment field this variable is set to true and stays unchanged for the
next insert operation. This makes the next inserted row sometimes wrongly have
0 as the value of the auto_increment field.

Now the fill_record() function resets the table->auto_increment_field_not_null
variable before filling the record.
The table->auto_increment_field_not_null variable is also reset by the
open_table() function for a case if we missed some auto_increment_field_not_null
handling bug.
Now the table->auto_increment_field_not_null is reset at the end of the
mysql_load() function.

Reset the table->auto_increment_field_not_null variable after each
write_row() call in the copy_data_between_tables() function.




sql/field_conv.cc:
  Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the 
  NO_AUTO_VALUE_ON_ZERO mode.
  A comment is corrected.
sql/handler.cc:
  Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the 
  NO_AUTO_VALUE_ON_ZERO mode.
  Now the handler::update_auto_increment() function doesn't reset the
  table->auto_increment_field_not_null variable as it is done in the
  fill_record() function.
sql/sql_base.cc:
  Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the 
  NO_AUTO_VALUE_ON_ZERO mode.
  Now the fill_record() function resets the table->auto_increment_field_not_null
  variable before filling the record.
  The table->auto_increment_field_not_null variable is also reset by the
  open_table() function for a case if we missed some auto_increment_field_not_null
  handling bug.
sql/sql_insert.cc:
  Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the
  NO_AUTO_VALUE_ON_ZERO mode.
  Now the the table->auto_increment_field_not_null is reset at the end of the
  mysql_insert() an in the select_insert class destructor.
sql/sql_load.cc:
  Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the 
  NO_AUTO_VALUE_ON_ZERO mode.
  Now the table->auto_increment_field_not_null is reset at the end of the
  mysql_load() function.
sql/sql_table.cc:
  Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the
  NO_AUTO_VALUE_ON_ZERO mode.
  Reset the table->auto_increment_field_not_null variable after each
  write_row() call in the copy_data_between_tables() function.
sql/table.h:
  Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the
  NO_AUTO_VALUE_ON_ZERO mode.
  A comment added.
mysql-test/r/insert_update.result:
  Added the test case for the bug#23233: 0 as LAST_INSERT_ID() after
  INSERT .. ON DUPLICATE in the NO_AUTO_VALUE_ON_ZERO mode.
mysql-test/t/insert_update.test:
  Added the test case for the bug#23233: 0 as LAST_INSERT_ID() after
  INSERT .. ON DUPLICATE in the NO_AUTO_VALUE_ON_ZERO mode.
2007-03-30 18:13:33 +04:00
unknown
fe8c67effa Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  chilla.local:/home/mydev/mysql-5.0-axmrg


sql/ha_ndbcluster.cc:
  Auto merged
sql/ha_ndbcluster.h:
  Auto merged
2007-03-30 11:02:19 +02:00
unknown
905bc913fd Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl
into  mysql.com:/home/bar/mysql-5.0.b22638
2007-03-30 11:36:09 +05:00
unknown
29741b71ca Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  chilla.local:/home/mydev/mysql-5.0-axmrg
2007-03-29 21:32:34 +02:00
unknown
817a474c3d Merge svojtovich@bk-internal.mysql.com:/home/bk/mysql-5.0-engines
into  mysql.com:/home/svoj/devel/mysql/BUG25521/mysql-5.0-engines
2007-03-29 21:50:54 +05:00
unknown
4430048ee8 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B26815-5.0-opt


sql/item_sum.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
2007-03-29 19:20:33 +03:00
unknown
456cc52e9c Merge magare.gmz:/home/kgeorge/mysql/work/B26815-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B26815-5.0-opt


mysql-test/r/func_gconcat.result:
  Auto merged
mysql-test/t/func_gconcat.test:
  Auto merged
sql/item_sum.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
2007-03-29 19:20:04 +03:00
unknown
40c1a3f9a2 Bug #26815:
When creating a temporary table the concise column type
 of a string expression is decided based on its length:
 - if its length is under 512 it is stored as either 
   varchar or char.
 - otherwise it is stored as a BLOB.
 
 There is a flag (convert_blob_length) to create_tmp_field 
 that, when >0 allows to force creation of a varchar if the
 max blob length is under convert_blob_length.
 However it must be verified that convert_blob_length 
 (settable through a SQL option in some cases) is 
 under the maximum that can be stored in a varchar column.
 While performing that check for expressions in 
 create_tmp_field_from_item the max length of the blob was
 used instead. This causes blob columns to be created in the
 heap temp table used by GROUP_CONCAT (where blobs must not
 be created in the temp table because of the constant 
 convert_blob_length that is passed to create_tmp_field() ).
 And since these blob columns are not expected in that place
 we get wrong results.
 Fixed by checking that the value of the flag variable is 
 in the limits that fit into VARCHAR instead of the max length
 of the blob column.


mysql-test/r/func_gconcat.result:
  Bug #26815: test case
mysql-test/t/func_gconcat.test:
  Bug #26815: test case
sql/item_sum.cc:
  Bug #26815: wrong length was checked
sql/sql_select.cc:
  Bug #26815: wrong length was checked
2007-03-29 19:19:31 +03:00
unknown
8122b0caa4 Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0-build
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
2007-03-29 14:20:34 +02:00
unknown
e420488ee6 Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.0-rpl
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge


sql/mysqld.cc:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
2007-03-29 12:25:28 +02:00
unknown
08d9d182f2 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B27300-5.0-opt
2007-03-29 12:09:55 +03:00
unknown
32fe756222 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B27300-5.0-opt
2007-03-29 11:01:32 +03:00
unknown
bedd5b8766 Merge of BUG#26624 and BUG#26625
mysql-test/r/range.result:
  Auto merged
mysql-test/t/range.test:
  Auto merged
2007-03-29 10:35:28 +04:00
unknown
9b358f811b BUG#26624: high mem usage (crash) in range optimizer
- Post-review fixes
2007-03-29 10:27:58 +04:00
unknown
ee0475bf5d Code layout fix for bug N 27079
Thanks to Gluh for suggestion.
2007-03-29 10:32:38 +05:00
unknown
6370f6226f Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl
into  mysql.com:/home/bar/mysql-5.0.b27079
2007-03-29 10:19:45 +05:00
unknown
dbc12e4aac Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl
into  mysql.com:/home/bar/mysql-5.0.b22378
2007-03-29 10:00:01 +05:00
unknown
406fd12ad4 configure.in:
Don't install ndb man pages if no ndb configured
config-win.h, CMakeLists.txt, README, configure.js:
  Removed Cybozu patches


configure.in:
  Don't install ndb man pages if no ndb configured
CMakeLists.txt:
  Removed Cybozu patches
include/config-win.h:
  Removed Cybozu patches
win/README:
  Removed Cybozu patches
win/configure.js:
  Removed Cybozu patches
2007-03-28 23:00:50 +02:00
unknown
edd5a85948 Merge mysql.com:/home/psergey/mysql-4.1-bug26625
into  mysql.com:/home/psergey/mysql-4.1-bug26624-r2
2007-03-28 20:31:13 +04:00
unknown
9639eb3dda BUG#26624: high mem usage (crash) in range optimizer
- Added PARAM::alloced_sel_args where we count the # of SEL_ARGs
  created by SEL_ARG tree cloning operations.
- Made the range analyzer to shortcut and not do any more cloning 
  if we've already created MAX_SEL_ARGS SEL_ARG objects in cloning.
- Added comments about space complexity of SEL_ARG-graph 
  representation.


mysql-test/r/range.result:
  BUG#26624: Testcase
mysql-test/t/range.test:
  BUG#26624: Testcase
2007-03-28 20:16:01 +04:00
unknown
e8a25c95d3 BUG#25521 - optimize table, delete, show table status leads to table
losing it's .MYD

When OPTIMIZE TABLE is completed it attempts to rename temporary
file to original name. This step may fail on windows when a file
is opened. As a result data file might be deleted and optimized
copy of file (table_name.MYD) remains.

This situation is handled properly by my_delete_allow_opened, so
use it instead of my_delete when attempting to rename a file on
windows.

No suitable test case for this bug.


mysys/my_redel.c:
  Attempting to delete an opened file and to immediately create
  a new one with the same name may result in my_redel failure on
  windows. It may fail because file is not deleted until it is
  closed.
  
  This situation is handled properly by my_delete_allow_opened, so
  use it instead of my_delete.
2007-03-28 21:09:16 +05:00
unknown
60189d3512 Delete: sql/mysqld.cc.rej 2007-03-28 19:05:30 +04:00
unknown
425304f562 BUG#26625: crash in range optimizer (out of mem)
- Define Sql_alloc::operator new() as thow() so that C++ compiler
  handles NULL return values
(there is no testcase as there is no portable way to set limit on the 
amount of memory that a process can allocate)


sql/sql_list.h:
  BUG#26625: crash in range optimizer (out of mem) 
  - Define Sql_alloc::operator new() as thow() so that C++ compiler
    handles NULL return values
2007-03-28 18:38:42 +04:00
unknown
b5cc4fa61d Bug#22638 SOUNDEX broken for international characters
Problem: SOUNDEX returned an invalid string for international
characters in multi-byte character sets.
For example: for a Chinese/Japanese 3-byte long character
_utf8 0xE99885 it took only the very first byte 0xE9,
put it into the outout string and then appended with three 
DIGIT ZERO characters, so the result was 0xE9303030 - which
is an invalide utf8 string.
Fix: make SOUNDEX() multi-byte aware and - put only complete
characters into result, thus return only valid strings.
This patch also makes SOUNDEX() compatible with UCS2.


mysql-test/r/ctype_ucs.result:
  Adding tests
mysql-test/r/ctype_utf8.result:
  Adding tests
mysql-test/t/ctype_ucs.test:
  Adding tests
mysql-test/t/ctype_utf8.test:
  Adding tests
sql/item_strfunc.cc:
  Making soundex multi-byte aware.
2007-03-28 18:57:30 +05:00