Commit graph

31153 commits

Author SHA1 Message Date
unknown
ce3e4de964 Merge poseidon.ndb.mysql.com:/home/tomas/mysql-5.0
into  poseidon.ndb.mysql.com:/home/tomas/mysql-5.0-release


sql/ha_ndbcluster.cc:
  Auto merged
2006-07-04 12:08:57 +02:00
unknown
8597f66348 Bug #20784 Uninitialized memory in update on table with PK not on first column
- partial backport of code from 5.1, do cot compare_record for engines that do not read all columns during update
2006-07-04 11:43:06 +02:00
unknown
27181aa11f Merge joreland@bk-internal.mysql.com:/home/bk/mysql-5.0
into  perch.ndb.mysql.com:/home/jonas/src/mysql-5.0
2006-07-04 09:56:27 +02:00
unknown
6a8f2ee293 auxilliary -> auxiliary 2006-07-04 02:07:41 +04:00
unknown
475bc4462c auxilliary -> auxiliary 2006-07-04 01:13:04 +04:00
unknown
06af76d277 Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0
into  poseidon.ndb.mysql.com:/home/tomas/mysql-5.0-main


sql/ha_ndbcluster.cc:
  Auto merged
2006-07-03 22:58:10 +02:00
unknown
c3ef02679e Bug#20783: Valgrind uninitialised warning in test case ctype_uca
Two functions have different ideas of what a string should look like;
one of them reads memory it assumes the other one may have written.
And "if you assume ..."
  
We now use a more defensive variety of the assuming function, this fixes
a warning thrown by the valgrind tool.


sql/item_cmpfunc.cc:
  c_ptr() makes incorrect assumptions about the string we get from
  out of args[0]->val_str(&tmp); c_str_safe() is more defensive.
2006-07-03 21:41:15 +02:00
unknown
e34b9cfb4a client.c:
Define 'mysql_get_ssl_cipher' even if no SSL built in, it is referenced in libmysql.def


sql-common/client.c:
  Define 'mysql_get_ssl_cipher' even if no SSL built in, it is referenced in libmysql.def
2006-07-03 20:08:38 +02:00
unknown
3702ae2d05 Merge mysqldev@production.mysql.com:my/mysql-5.0-release
into mysql.com:/Users/kent/mysql/bk/mysql-5.0-release
2006-07-03 19:53:57 +02:00
unknown
9ecc01a9e3 mwldnlm, mwccnlm, mwasmnlm:
Use Perl for filtering, do more filtering


netware/BUILD/mwasmnlm:
  Use Perl for filtering, do more filtering
netware/BUILD/mwccnlm:
  Use Perl for filtering, do more filtering
netware/BUILD/mwldnlm:
  Use Perl for filtering, do more filtering
2006-07-03 16:44:17 +02:00
unknown
97c2188812 Makefile.am:
Avoid duplicate symbol errors on Netware
mwldnlm, mwccnlm, mwasmnlm:
  Filter garbage characters from output


netware/BUILD/mwasmnlm:
  Filter garbage characters from output
netware/BUILD/mwccnlm:
  Filter garbage characters from output
netware/BUILD/mwldnlm:
  Filter garbage characters from output
tests/Makefile.am:
  Avoid duplicate symbol errors on Netware
2006-07-03 10:56:19 +02:00
unknown
3e085bd882 Merge sgluhov@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/gluh/MySQL/Merge/5.0-kt


sql/item.cc:
  Auto merged
sql/item.h:
  Auto merged
sql/sql_acl.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
sql/table.cc:
  Auto merged
tests/mysql_client_test.c:
  Auto merged
2006-07-03 13:19:18 +05:00
unknown
a2fc4843e3 Bug#20570: CURRENT_USER() in a VIEW with SQL SECURITY DEFINER returns
invoker name

The bug was fixed similar to how context switch is handled in
Item_func_sp::execute_impl(): we store pointer to current
Name_resolution_context in Item_func_current_user class, and use
its Security_context in Item_func_current_user::fix_fields().


mysql-test/r/view_grant.result:
  Add result for bug#20570.
mysql-test/t/view_grant.test:
  Add test case for bug#20570.
sql/item_create.cc:
  Remove create_func_current_user(), as it is not used for automatic
  function creation.
sql/item_create.h:
  Remove prototype for create_func_current_user().
sql/item_strfunc.cc:
  Add implementations for Item_func_user::init(),
  Item_func_user::fix_fields() and
  Item_func_current_user::fix_fields() methods.  The latter uses
  Security_context from current Name_resolution_context, if one is
  defined.
sql/item_strfunc.h:
  Move implementation of CURRENT_USER() out of Item_func_user to
  to new Item_func_current_user class.  For both classes calculate
  user name in fix_fields() method.
  For Item_func_current_user add context field to store
  Name_resolution_context in effect.
sql/sql_yacc.yy:
  Pass current Name_resolution_context to Item_func_current_user.
2006-07-02 14:35:45 +04:00
unknown
84e72c2bde mysqld.vcproj:
Don't define __NT__ for 'Max' target


VC++Files/sql/mysqld.vcproj:
  Don't define __NT__ for 'Max' target
2006-07-01 23:52:19 +02:00
unknown
ae9724cce1 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.


include/my_base.h:
  Added HA_EXTRA_WRITE_CAN_REPLACE, HA_EXTRA_WRITE_CANNOT_REPLACE - new
  parameters for ha_extra() method. We use them to inform handler that
  write_row() which tries to insert new row into the table and encounters
  some already existing row with same primary/unique key can replace old
  row with new row instead of reporting error.
mysql-test/r/federated.result:
  Additional test for bug#18437 "Wrong values inserted with a before update
  trigger on NDB table".
mysql-test/r/ndb_replace.result:
  Added test for bug #20728 "REPLACE does not work correctly for NDB table
  with PK and unique index". Updated wrong results from older test.
mysql-test/t/federated.test:
  Additional test for bug#18437 "Wrong values inserted with a before update
  trigger on NDB table".
mysql-test/t/ndb_replace.test:
  Added test for bug #20728 "REPLACE does not work correctly for NDB table
  with PK and unique index".
sql/ha_ndbcluster.cc:
  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 optimization 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).
sql/item.cc:
  Item_trigger_field::setup_field():
    Added comment explaining why we don't set Field::query_id in this method.
sql/mysql_priv.h:
  mysql_alter_table() function no longer takes handle_duplicates argument.
  Added declaration of mark_fields_used_by_triggers_for_insert_stmt() function.
sql/sql_delete.cc:
  Mark fields which are used by ON DELETE triggers so handler will retrieve
  values for these fields.
sql/sql_insert.cc:
  Explicitly inform handler that we are doing REPLACE (using ha_extra() method)
  in cases when it can promote insert operation done by write_row() to replace.
  Also when we do REPLACE we want to store values for all columns so we should
  inform handler about it.
  Finally we should mark fields used by ON UPDATE/ON DELETE triggers as such
  so handler can properly retrieve/restore values in these fields during
  execution of REPLACE and INSERT ... ON DUPLICATE KEY UPDATE statements.
sql/sql_load.cc:
  Explicitly inform handler that we are doing LOAD DATA REPLACE (using
  ha_extra() method) in cases when it can promote insert operation done by
  write_row() to replace.
  Also when we do replace we want to save (replace) values for all columns
  so we should inform handler about it.
  Finally to properly execute LOAD DATA for table with triggers we should
  mark fields used by ON INSERT triggers as such so handler can properly
  store values for these fields.
sql/sql_parse.cc:
  mysql_alter_table() function no longer takes handle_duplicates argument.
sql/sql_table.cc:
  Got rid of handle_duplicates argument in mysql_alter_table() and
  copy_data_between_tables() functions. These functions were always
  called with handle_duplicates == DUP_ERROR and thus contained dead
  (and probably incorrect) code.
sql/sql_trigger.cc:
  Added Table_triggers_list::mark_fields_used() method which is used to mark
  fields read/set by triggers as such so handlers will be able properly
  retrieve/store values in these fields.
sql/sql_trigger.h:
  Table_triggers_list:
    Added mark_fields_used() method which is used to mark fields read/set by
    triggers as such so handlers will be able properly retrieve/store values
    in these fields. To implement this method added 'trigger_fields' member
    which is array of lists linking items for all fields used in triggers
    grouped by event and action time.
sql/sql_update.cc:
  Mark fields which are used by ON UPDATE triggers so handler will retrieve
  and save values for these fields.
mysql-test/r/ndb_trigger.result:
  Added test for bug#18437 "Wrong values inserted with a before update trigger
  on NDB table".
mysql-test/t/ndb_trigger.test:
  Added test for bug#18437 "Wrong values inserted with a before update trigger
  on NDB table".
2006-07-02 01:51:10 +04:00
unknown
4c2db1bef1 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/opt/local/work/mysql-5.0-runtime


mysql-test/r/func_sapdb.result:
  Auto merged
mysql-test/r/func_time.result:
  Auto merged
mysql-test/t/func_sapdb.test:
  Auto merged
mysql-test/t/func_time.test:
  Auto merged
sql/item.h:
  Auto merged
sql/item_timefunc.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
2006-07-01 22:13:42 +04:00
unknown
805e85548c my_sys.h:
Added missing parameter type change for _my_strdup_with_length()


include/my_sys.h:
  Added missing parameter type change for _my_strdup_with_length()
2006-07-01 15:11:59 +02:00
unknown
047e2be28c Post-merge fix 2006-07-01 09:28:41 +04:00
unknown
87d0401593 Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/psergey/mysql-5.0-bug16168-merge
2006-07-01 07:04:27 +04:00
unknown
4ffd445b56 Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-4.1
into  mysql.com:/home/psergey/mysql-4.1-bug16168-push


sql/opt_range.cc:
  Auto merged
2006-07-01 01:55:43 +04:00
unknown
c1fa66c3a9 Merge mysql.com:/home/psergey/mysql-4.1-bug16168-push
into  mysql.com:/home/psergey/mysql-5.0-bug16168-merge


mysql-test/t/range.test:
  Auto merged
mysql-test/r/range.result:
  SCCS merged
sql/opt_range.cc:
  SCCS merged
2006-07-01 01:25:59 +04:00
unknown
697e8d71bb Remove an unused variable. 2006-07-01 00:33:47 +04:00
unknown
0c7bc6e9d7 Remove a couple of unused/barely used names.
sql/sql_lex.cc:
  Remove an unused thread key.
sql/sql_lex.h:
  Remove an unused thread key, current_lex.
sql/sql_parse.cc:
  Remove an unused thread key, current_lex macro.
2006-07-01 00:14:28 +04:00
unknown
2b38033260 Manual transfer of the following changeset into the 5.0.23 release clone:
1.2525 06/06/30 18:29:27 monty@mysql.com +3 -0
   Reverted wrong bug fix (Bug#11228)


mysql-test/r/key.result:
  Manual transfer of the following fix into the 5.0.23 release clone:
     1.27 06/06/30 18:29:25 monty@mysql.com +9 -1
     Fixed result after removing wrong bug fix
mysql-test/t/key.test:
  Manual transfer of the following fix into the 5.0.23 release clone:
     1.24 06/06/30 18:29:25 monty@mysql.com +1 -0
     Added SHOW CREATE TABLE, which is the proper way to check for table definitions
sql/table.cc:
  Manual transfer of the following fix into the 5.0.23 release clone:
     1.135 06/06/30 18:29:25 monty@mysql.com +21 -0
     Reverted wrong bug fix.   ...
2006-06-30 19:37:11 +02:00
unknown
0bbc6fbeb7 After merge fixes
BitKeeper/etc/ignore:
  added scripts/mysql_upgrade_shell
include/my_handler.h:
  my_handler.h should not include my_global.h
mysql-test/r/key.result:
  Update results after merge
2006-06-30 20:07:33 +03:00
unknown
17986f7cae Merge monty@192.168.0.9:/home/my/mysql-4.1
into  mysql.com:/home/my/mysql-4.1
2006-06-30 19:15:18 +03:00
unknown
9606675ba2 Merge mysql.com:/home/my/mysql-4.1
into  mysql.com:/home/my/mysql-5.0


libmysql/libmysql.c:
  Auto merged
mysql-test/mysql-test-run.sh:
  Auto merged
mysql-test/t/key.test:
  Auto merged
sql/table.cc:
  Auto merged
mysql-test/r/key.result:
  Manual merge
mysql-test/t/mysqldump.test:
  Manual merge
  (Now we have same code as in 4.1 and 5.1)
sql/ha_ndbcluster.cc:
  Manual merge
  Change %ll -> llstr()
tests/mysql_client_test.c:
  manual merge
2006-06-30 19:15:18 +03:00
unknown
e0171231a5 Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into  mysql.com:/home/my/mysql-4.1
2006-06-30 19:15:17 +03:00
unknown
a6d2cafd9c Merge tulin@bk-internal.mysql.com:/home/bk/mysql-4.1
into  poseidon.ndb.mysql.com:/home/tomas/mysql-4.1-main
2006-06-30 18:15:16 +02:00
unknown
7ee6a11cf6 Merge monty@192.168.0.9:/home/my/mysql-4.1
into  mysql.com:/home/my/mysql-4.1
2006-06-30 18:44:15 +03:00
unknown
66a59b10e9 Reverted wrong bug fix (Bug#11228)
mysql-test/r/key.result:
  Fixed result after removing wrong bug fix
mysql-test/t/key.test:
  Added SHOW CREATE TABLE, which is the proper way to check for table definitions
sql/table.cc:
  Reverted wrong bug fix.
  The intention with the original code was to show that MySQL treats the first
  given unique key as a primary key. Clients can use the marked primary key as a
  real primary key to validate row changes in case of conflicting updates.  The
  ODBC driver (and other drivers) may also use this fact to optimize/check
  updates and handle conflicts.  The marked key also shows what some engines, like InnoDB or NDB,
  will use as it's internal primary key.
  
  For checking if someone has declared a true PRIMARY KEY, one should use 'SHOW CREATE TABLE'
2006-06-30 18:29:27 +03:00
unknown
baa7f2a3ec Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0
into  poseidon.ndb.mysql.com:/home/tomas/mysql-5.0-main


sql/ha_ndbcluster.cc:
  Auto merged
2006-06-30 16:34:19 +02:00
unknown
c0f77ca39d Merge poseidon.ndb.mysql.com:/home/tomas/mysql-5.0
into  poseidon.ndb.mysql.com:/home/tomas/mysql-5.0-main


sql/ha_ndbcluster.cc:
  Auto merged
2006-06-30 16:30:41 +02:00
unknown
c8ddbe6d2f manual merge, patch only relevant for 4.1 2006-06-30 16:29:17 +02:00
unknown
e410532ae1 Merge poseidon.ndb.mysql.com:/home/tomas/mysql-4.1
into  poseidon.ndb.mysql.com:/home/tomas/mysql-4.1-main


sql/ha_ndbcluster.cc:
  Auto merged
2006-06-30 16:26:33 +02:00
unknown
437afbfda8 adopted ndb handler code for tables without primary key and with unique index
- added missing retrieval of hidden primary key
2006-06-30 16:25:07 +02:00
unknown
fc085d77ad Bug#17226: Variable set in cursor on first iteration is assigned
second iterations value

During assignment to the BLOB variable in routine body the value
wasn't copied.


mysql-test/r/sp-vars.result:
  Add result for bug#17226.
mysql-test/t/sp-vars.test:
  Add test case for bug#17226.
sql/field_conv.cc:
  Honor copy_blobs flag.
2006-06-30 18:14:22 +04:00
unknown
250ea729a4 Merge perch.ndb.mysql.com:/home/jonas/src/50-work
into  perch.ndb.mysql.com:/home/jonas/src/mysql-5.0


ndb/src/kernel/blocks/dblqh/Dblqh.hpp:
  Auto merged
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
  Auto merged
2006-06-30 11:25:37 +02:00
unknown
6fd869716c Merge joreland@bk-internal.mysql.com:/home/bk/mysql-5.0
into  perch.ndb.mysql.com:/home/jonas/src/mysql-5.0
2006-06-30 11:17:24 +02:00
unknown
b138b55d1d Merge mysqldev@production:my/mysql-5.0-release
into  mysql.com:/usr/local/mysql/tmp-5.0


include/my_global.h:
  Auto merged
sql/item_sum.cc:
  Auto merged
2006-06-30 11:11:49 +02:00
unknown
949ad5b439 Fix Windows build problem following previous push.
strings/strtod.c:
  Fix Windows build problem, EOVERFLOW is defined in my_base.h on Windows.
2006-06-30 11:10:38 +02:00
unknown
618bd69d75 Merge mysql.com:/home/tomash/src/mysql_ab/mysql-4.1
into  mysql.com:/home/tomash/src/mysql_ab/mysql-4.1-bug20152
2006-06-30 12:54:11 +04:00
unknown
8615559038 bug #20152: mysql_stmt_execute() overwrites parameter buffers
When using a parameter bind MYSQL_TYPE_DATE in a prepared statement,
the time part of the MYSQL_TIME buffer was written to zero in
mysql_stmt_execute(). The param_store_date() function in libmysql.c
worked directly on the provided buffer.
Changed to use a copy of the buffer.


libmysql/libmysql.c:
  fix for bug #20152
tests/mysql_client_test.c:
  added test for bug#20152
2006-06-30 12:52:05 +04:00
unknown
79bb70355f Merge perch.ndb.mysql.com:/home/jonas/src/41-work
into  perch.ndb.mysql.com:/home/jonas/src/50-work


ndb/src/kernel/blocks/dblqh/Dblqh.hpp:
  Auto merged
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
  Auto merged
2006-06-30 09:42:15 +02:00
unknown
652a02f6e1 ndb - bug#20774
crash if system restart with more than 4096 fragments
  solution: continueb enable expand check loop


ndb/src/kernel/blocks/dblqh/Dblqh.hpp:
  continueb enable expand check loop
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
  continueb enable expand check loop
2006-06-30 09:41:41 +02:00
unknown
4a6a237f28 Merge mysqldev@production.mysql.com:my/mysql-5.0-release
into  mysql.com:/usr/local/mysql/mysql-5.0-release
2006-06-30 09:28:06 +02:00
unknown
d9cb536a55 BUG#20769: Dangling pointer in ctype_recoding test case.
In some functions dealing with strings and character sets, the wrong
pointers were saved for restoration in THD::rollback_item_tree_changes().
This could potentially cause random corruption or crashes.

Fixed by passing the original Item ** locations, not local stack copies.

Also remove unnecessary use of default arguments.


sql/item.cc:
  Function agg_item_charsets() now handles non-consequtive Item *'s.
sql/item.h:
  Remove use of default argument.
sql/item_cmpfunc.cc:
  Remove use of default argument.
sql/item_func.cc:
  Remove use of default argument.
sql/item_func.h:
  Function agg_item_charsets() now handles non-consequtive Item *'s.
sql/item_strfunc.cc:
  Pass original Item **'s to agg_arg_charsets(), not local copies, to ensure
  proper restoration in THD::rollback_item_tree_changes().
sql/item_sum.cc:
  Remove use of default argument.
2006-06-30 09:26:36 +02:00
unknown
633cbfb571 BUG#16168: Wrong results from range optimizer, "Use_count: Wrong count for key ..." warnings:
- Added comments.
 - Make SEL_ARG::clone() set SEL_ARG::elements in the created copy.


mysql-test/r/range.result:
  BUG#16168: Testcase
mysql-test/t/range.test:
  BUG#16168: Testcase
2006-06-30 09:05:12 +04:00
unknown
29423c2d27 Merge mysql.com:/home/emurphy/src/bk-clean/mysql-4.1
into  mysql.com:/home/emurphy/src/bk-clean/mysql-5.0


configure.in:
  Auto merged
2006-06-30 00:14:25 -04:00
unknown
a14c9ddf2b Fixing windows build.
strings/strtod.c:
  Reverting previous change to include files (angle brackets instead of
  quotes) that broke windows build
2006-06-30 00:10:41 -04:00