1
0
mirror of https://github.com/MariaDB/server.git synced 2025-11-09 11:41:36 +03:00
Commit Graph

12619 Commits

Author SHA1 Message Date
unknown
665d46e1b6 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  rakia.(none):/home/kgeorge/mysql/autopush/test
2006-07-06 13:26:23 +03:00
unknown
8e354677a8 Bug #20569 Garbage in DECIMAL results from some mathematical functions
Adding decimal "digits" in multiplication resulted in signed overflow and
producing wrong results.

  Fixed by using large enough buffers and intermediary result types :
dec2 (currently longlong) to hold result of adding decimal "digits" 
(currently int32). 


mysql-test/r/select.result:
  Bug #20569 Garbage in DECIMAL results from some mathematical functions
    * test suite for the bug
mysql-test/t/select.test:
  Bug #20569 Garbage in DECIMAL results from some mathematical functions
    * test suite for the bug
strings/decimal.c:
  Bug #20569 Garbage in DECIMAL results from some mathematical functions
    * fixed the overflow in adding decimal "digits"
2006-07-06 13:18:05 +03:00
unknown
0e47753ffd 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.


mysql-test/r/federated.result:
  Changed test in order to make it work with RBR.
  RBR changes the way in which we execute "DELETE FROM t1" statement - we don't
  use handler::delete_all_rows() method if RBR is enabled (see bug#19066).
  As result federated engine produces different sequences of statements for
  remote server in non-RBR and in RBR cases. And this changes order of the
  rows inserted by following INSERT statements.
mysql-test/t/federated.test:
  Changed test in order to make it work with RBR.
  RBR changes the way in which we execute "DELETE FROM t1" statement - we don't
  use handler::delete_all_rows() method if RBR is enabled (see bug#19066).
  As result federated engine produces different sequences of statements for
  remote server in non-RBR and in RBR cases. And this changes order of the
  rows inserted by following INSERT statements.
sql/ha_partition.cc:
  Added handling of HA_EXTRA_WRITE_CAN_REPLACE/HA_EXTRA_WRITE_CANNOT_REPLACE
  to ha_partition::extra().
sql/item.cc:
  Adjusted comment after merge. In 5.1 we use TABLE::read_set/write_set
  bitmaps instead of Field::query_id for marking columns used.
sql/log_event.cc:
  Write_rows_log_event::do_before_row_operations():
    Now we explicitly inform handler that we want to replace rows so it can
    promote operation done by write_row() to replace.
sql/mysql_priv.h:
  Removed declaration of mark_fields_used_by_triggers_for_insert_stmt() which
  is no longer used (we have TABLE::mark_columns_needed_for_insert() instead).
sql/sql_insert.cc:
  Adjusted code after merge. Get rid of mark_fields_used_by_triggers_for_insert_stmt()
  as now we use TABLE::mark_columns_needed_for_insert() for the same purprose.
  Aligned places where we call this method with places where we call
  mark_fields_used_by_triggers_for_insert() in 5.0.
  Finally we no longer need to call handler::extra(HA_EXTRA_WRITE_CAN_REPLACE)
  in case of REPLACE statement since in 5.1 write_record() marks all columns
  as used before doing actual row replacement.
sql/sql_load.cc:
  Adjusted code after merge. In 5.1 we use TABLE::mark_columns_needed_for_insert() instead of
  mark_fields_used_by_triggers_for_insert_stmt() routine. We also no longer
  need to call handler::extra(HA_EXTRA_RETRIEVE_ALL_COLS) if we execute LOAD
  DATA REPLACE since in 5.1 write_record() will mark all columns as used before
  doing actual row replacement.
sql/sql_trigger.cc:
  Table_triggers_list::mark_fields_used():
    We use TABLE::read_set/write_set bitmaps for marking fields used instead
    of Field::query_id in 5.1.
sql/sql_trigger.h:
  TABLE::mark_columns_needed_for_* methods no longer need to be friends of
  Table_triggers_list class as intead of dirrectly accessing its private
  members they can use public Table_triggers_list::mark_fields_used() method.
  Also Table_triggers)list::mark_fields_used() no longer needs THD argument.
sql/table.cc:
  TABLE::mark_columns_needed_for_*():
    Now we mark columns which are really used by table's triggers instead of
    marking all columns as used if table has triggers.
2006-07-06 13:33:23 +04:00
unknown
fc3aad740a corrected results 2006-07-06 10:20:49 +02:00
unknown
d191fb6300 ndb_dd_advance test cases
mysql-test/t/ndb_dd_advance.test:
  ndb_dd_advance.test
mysql-test/t/ndb_dd_advance2.test:
  ndb_dd_advance2.test
mysql-test/r/ndb_dd_advance.result:
  ndb_dd_advance.result
mysql-test/r/ndb_dd_advance2.result:
  ndb_dd_advance2.result
2006-07-06 04:37:03 +02:00
unknown
cee36215f0 Merge xiphis.org:/home/antony/work2/mysql-5.0-engines
into  xiphis.org:/home/antony/work2/p2-bug8706.3-merge-5.0


configure.in:
  Auto merged
mysql-test/r/federated.result:
  Auto merged
mysql-test/r/func_sapdb.result:
  Auto merged
mysql-test/r/func_time.result:
  Auto merged
mysql-test/r/symlink.result:
  Auto merged
mysql-test/t/federated.test:
  Auto merged
mysql-test/t/func_sapdb.test:
  Auto merged
mysql-test/t/func_time.test:
  Auto merged
sql/item_timefunc.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
2006-07-05 17:26:16 -07:00
unknown
854d7c4d4f Bug#8706
"temporary table with data directory option fails"
  myisam should not use user-specified table name when creating
  temporary tables and use generated connection specific real name.
  Test included.


myisam/mi_create.c:
  Bug#8706
    When creating a temporary table with directory override, ensure that
    the real filename is using the hidden temporary name otherwise
    multiple clients cannot have same named temporary tables without
    conflict.
mysql-test/r/myisam.result:
  Bug#8706
    Test for bug
mysql-test/t/myisam.test:
  Bug#8706
    Test for bug
2006-07-05 17:18:59 -07:00
unknown
e8d7da1116 .del-ndb_dd_advance.result~165b282a93715547:
Delete: mysql-test/r/ndb_dd_advance.result
.del-ndb_dd_advance2.result~89be9fe55c2fda5a:
  Delete: mysql-test/r/ndb_dd_advance2.result
.del-ndb_dd_advance2.test~e9e56bc3e8e8f740:
  Delete: mysql-test/t/ndb_dd_advance2.test
.del-ndb_dd_advance.test~58e757b6c1d33996:
  Delete: mysql-test/t/ndb_dd_advance.test


BitKeeper/deleted/.del-ndb_dd_advance.test~58e757b6c1d33996:
  Delete: mysql-test/t/ndb_dd_advance.test
BitKeeper/deleted/.del-ndb_dd_advance2.test~e9e56bc3e8e8f740:
  Delete: mysql-test/t/ndb_dd_advance2.test
BitKeeper/deleted/.del-ndb_dd_advance2.result~89be9fe55c2fda5a:
  Delete: mysql-test/r/ndb_dd_advance2.result
BitKeeper/deleted/.del-ndb_dd_advance.result~165b282a93715547:
  Delete: mysql-test/r/ndb_dd_advance.result
2006-07-05 23:50:29 +02:00
unknown
30de4903ae Merge zippy.(none):/home/cmiller/work/mysql/merge/mysql-5.1
into  zippy.(none):/home/cmiller/work/mysql/merge/mysql-5.1-new-maint


BUILD/compile-dist:
  Auto merged
BitKeeper/deleted/.del-partition_innodb.result:
  Auto merged
BitKeeper/deleted/.del-partition_innodb.test:
  Auto merged
client/mysqltest.c:
  Auto merged
mysql-test/r/create.result:
  Auto merged
mysql-test/r/create_not_windows.result:
  Auto merged
mysql-test/r/func_group.result:
  Auto merged
mysql-test/r/innodb_mysql.result:
  Auto merged
mysql-test/r/partition.result:
  Auto merged
mysql-test/r/sp.result:
  Auto merged
mysql-test/t/innodb_mysql.test:
  Auto merged
mysql-test/t/partition.test:
  Auto merged
mysql-test/t/ps_1general.test:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
mysql-test/t/wait_timeout.test:
  Auto merged
mysys/my_lib.c:
  Auto merged
sql/field.cc:
  Auto merged
sql/field.h:
  Auto merged
sql/unireg.cc:
  Auto merged
mysql-test/extra/rpl_tests/rpl_log.test:
  manuakl merge
mysql-test/lib/mtr_process.pl:
  manuakl merge
mysql-test/mysql-test-run.pl:
  manuakl merge
mysql-test/r/type_newdecimal.result:
  manuakl merge
mysql-test/t/create.test:
  manuakl merge
mysql-test/t/func_group.test:
  manuakl merge
mysql-test/t/type_newdecimal.test:
  manuakl merge
2006-07-05 16:16:09 -04:00
unknown
f481a6a894 BUG#20770: Added some more test cases
mysql-test/r/partition_range.result:
  New test case
mysql-test/t/partition_range.test:
  New test case
sql/partition_info.cc:
  No changes
2006-07-05 16:06:51 -04:00
unknown
43179555d9 BUG#20770: DATA DIRECTORY and INDEX DIRECTORY error when ALTER TABLE ADD/DROP/REORGANIZE partition
Also some error in handling options for subpartitions.


mysql-test/r/partition.result:
  New test cases
mysql-test/t/partition.test:
  New test cases
sql/ha_partition.cc:
  Added partition_element to prepare_new_partition so that we can properly set-up table
  before creating partitions.
sql/ha_partition.h:
  Added partition_element to prepare_new_partition so that we can properly set-up table
  before creating partitions.
sql/sql_yacc.yy:
  Ensure that subpartitions always inherit options from the partition they belong to.
  They can change it afterwards but will use the options as set on partition level
  if set at that level.
2006-07-05 12:57:23 -04:00
unknown
77e82450b3 Merge mysql.com:/home/bkroot/mysql-5.1-new-rpl
into  mysql.com:/home/bk/b20821-mysql-5.1-new-rpl


sql/sql_class.cc:
  Auto merged
sql/sql_insert.cc:
  Auto merged
2006-07-05 17:11:36 +02:00
unknown
53def7bda7 BUG#20821 (INSERT DELAYED fails to write some rows to binlog):
Reverting to old behaviour of writing the query before all rows
have been written.


mysql-test/r/rpl_row_delayed_ins.result:
  Result change
sql/sql_class.cc:
  Adding debug message to binlog_query()
sql/sql_insert.cc:
  - Changing write_delayed() to use a LEX_STRING for the query.
  - Adding query string to class delayed_row.
  - Removing query string from class delayed_insert.
  - Adding code to copy query string and delete it when the row
    is executed.
  - Logging query at first row instead of after all rows are 
    inserted (reverting to old behaviour).
  - Flushing the pending row event after all rows have been inserted.
    This is necessary since binlog_query() is called before all rows
    instead of after.
mysql-test/r/rpl_insert.result:
  New BitKeeper file ``mysql-test/r/rpl_insert.result''
mysql-test/t/rpl_insert.test:
  New BitKeeper file ``mysql-test/t/rpl_insert.test''
2006-07-05 16:58:56 +02:00
unknown
d87e4fbffb After merge fix 2006-07-05 16:23:18 +02:00
unknown
4e9d7d6c4b Fix for BUG#20188 "REPLACE or ON DUPLICATE KEY UPDATE in
auto_increment breaks binlog":
if slave's table had a higher auto_increment counter than master's (even
though all rows of the two tables were identical), then in some cases,
REPLACE and INSERT ON DUPLICATE KEY UPDATE failed to replicate
statement-based (it inserted different values on slave from on master).
write_record() contained a "thd->next_insert_id=0" to force an adjustment
of thd->next_insert_id after the update or replacement. But it is this
assigment introduced indeterminism of the statement on the slave, thus
the bug. For ON DUPLICATE, we replace that assignment by a call to
handler::adjust_next_insert_id_after_explicit_value() which is deterministic
(does not depend on slave table's autoinc counter). For REPLACE, this
assignment can simply be removed (as REPLACE can't insert a number larger
than thd->next_insert_id).
We also move a too early restore_auto_increment() down to when we really know
that we can restore the value.


mysql-test/r/rpl_insert_id.result:
  result update, without the bugfix, slave's "3 350" were "4 350".
mysql-test/t/rpl_insert_id.test:
  test for BUG#20188 "REPLACE or ON DUPLICATE KEY UPDATE in
  auto_increment breaks binlog".
  There is, in this order:
  - a test of the bug for the case of REPLACE
  - a test of basic ON DUPLICATE KEY UPDATE functionality which was not
  tested before
  - a test of the bug for the case of ON DUPLICATE KEY UPDATE
sql/handler.cc:
  the adjustment of next_insert_id if inserting a big explicit value, is
  moved to a separate method to be used elsewhere.
sql/handler.h:
  see handler.cc
sql/sql_insert.cc:
  restore_auto_increment() means "I know I won't use this autogenerated
  autoincrement value, you are free to reuse it for next row". But we were
  calling restore_auto_increment() in the case of REPLACE: if write_row() fails
  inserting the row, we don't know that we won't use the value, as we are going to
  try again by doing internally an UPDATE of the existing row, or a DELETE
  of the existing row and then an INSERT. So I move restore_auto_increment()
  further down, when we know for sure we failed all possibilities for the row.
  Additionally, in case of REPLACE, we don't need to reset THD::next_insert_id:
  the value of thd->next_insert_id will be suitable for the next row.
  In case of ON DUPLICATE KEY UPDATE, resetting thd->next_insert_id is also
  wrong (breaks statement-based binlog), but cannot simply be removed, as
  thd->next_insert_id must be adjusted if the explicit value exceeds it.
  We now do the adjustment by calling
  handler::adjust_next_insert_id_after_explicit_value() (which, contrary to
  thd->next_insert_id=0, does not depend on the slave table's autoinc counter,
  and so is deterministic).
2006-07-05 14:41:35 +02:00
unknown
a4a905f3fb Merge mysql.com:/home/mydev/mysql-4.1-bug17877
into  mysql.com:/home/mydev/mysql-5.0-ateam


myisam/mi_key.c:
  Auto merged
mysql-test/r/gis-rtree.result:
  Auto merged
mysql-test/t/gis-rtree.test:
  Auto merged
myisam/mi_check.c:
  SCCS merged
2006-07-05 11:23:21 +02:00
unknown
fef31470d5 Merge mysql.com:/home/mydev/mysql-4.1-bug14400
into  mysql.com:/home/mydev/mysql-5.0-ateam


libmysqld/libmysqld.c:
  Auto merged
myisam/mi_rkey.c:
  Auto merged
mysql-test/r/func_sapdb.result:
  Auto merged
mysql-test/r/symlink.result:
  Auto merged
mysql-test/t/func_sapdb.test:
  Auto merged
scripts/make_binary_distribution.sh:
  Auto merged
sql/item_geofunc.h:
  Auto merged
sql/item_timefunc.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
libmysqld/lib_sql.cc:
  Manual merge
mysql-test/r/func_time.result:
  Manual merge
mysql-test/r/gis.result:
  Manual merge
mysql-test/t/func_time.test:
  Manual merge
mysql-test/t/gis.test:
  Manual merge
sql-common/client.c:
  Manual merge
2006-07-05 11:20:10 +02:00
unknown
516fdb7197 Merge mysql.com:/home/mydev/mysql-4.1-bug11824
into  mysql.com:/home/mydev/mysql-5.0-ateam


myisam/mi_create.c:
  Auto merged
mysql-test/r/ctype_utf8.result:
  Auto merged
mysql-test/r/key.result:
  Auto merged
mysql-test/r/myisam.result:
  Auto merged
mysql-test/t/ctype_utf8.test:
  Auto merged
mysql-test/t/key.test:
  Auto merged
mysql-test/t/myisam.test:
  Auto merged
sql/opt_sum.cc:
  Auto merged
sql/table.cc:
  Auto merged
support-files/mysql.spec.sh:
  Auto merged
sql/field.cc:
  Manual merge
2006-07-05 11:11:40 +02:00
unknown
b8c8508d2a Merge mysql.com:/home/tomash/src/mysql_ab/mysql-5.0
into  mysql.com:/home/tomash/src/mysql_ab/mysql-5.0-bug20570
2006-07-05 12:04:04 +04:00
unknown
aad8b89a25 Merge ngrishakin@bk-internal.mysql.com:/home/bk/mysql-5.1
into  mysql.com:/home/ndbdev/ngrishakin/mysql-5.1
2006-07-05 04:48:44 +02:00
unknown
fed0ef2bc8 Merge rt.int.sifira.dk:/usr/local/mysql/mysql-5.1-pristine
into  rt.int.sifira.dk:/usr/local/mysql/tmp-5.1
2006-07-04 22:42:29 +02:00
unknown
758d4bb80b Fix hardcoded /tmp path (which causes problems when running multiple
tests on a single machine) to use $MYSQLTEST_VARDIR/tmp instead.


mysql-test/r/log_state.result:
  Fix hardcoded /tmp/ path.
mysql-test/t/log_state.test:
  Fix hardcoded /tmp/ path.
2006-07-04 22:37:32 +02:00
unknown
2a5fa3cf0c Merge mysql.com:/home/tomash/src/mysql_ab/mysql-5.0
into  mysql.com:/home/tomash/src/mysql_ab/mysql-5.0-bug20570


sql/item_strfunc.cc:
  Auto merged
sql/item_strfunc.h:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
mysql-test/r/view_grant.result:
  Manual merge.
mysql-test/t/view_grant.test:
  Manual merge.
2006-07-04 23:55:52 +04:00
unknown
c12cc90d12 A fix and a test case for Bug#17843 "Certain stored procedures fail to
run at startup"

The server returned an error when trying to execute init-file with a 
stored procedure that could return multiple result sets to the client. 
A stored procedure can return multiple result sets if it contains 
PREPARE, SELECT, SHOW and similar statements.
   
The fix is to set client_capabilites|=CLIENT_MULTI_RESULTS in
sql_parse.cc:handle_bootstrap(). There is no "client" really, so 
nothing is ever sent. This makes init-file feature behave consistently: 
the prepared statements that can be called directly in the init-file 
can be used in a stored procedure too.

Re-committed the patch originally submitted by Per-Erik after review.


mysql-test/Makefile.am:
  Fix re-make without make clean.
mysql-test/r/init_connect.result:
  Updated results (a test case for Bug#17843)
mysql-test/r/init_file.result:
  Updated results (a test case for Bug#17843)
mysql-test/std_data/init_file.dat:
  Add test coverage for new features added in 5.0. Note, that what can 
  be done in init_file is very limited as it does not support any other
  delimiter except ';' -- only "one liners" and no multiple statement 
  procedures. Also, this is executed with a dummy user "boot@", which 
  calls for the use of DEFINER clause.
mysql-test/t/init_connect.test:
  Add test coverage for new features added in 5.0.
mysql-test/t/init_file.test:
  Add test coverage for new features added in 5.0 --
  stored routines, views, triggers. The actual tests are in 
  std_data/init_file.dat, here we just check the results and clean up.
sql/sql_class.cc:
  Initialize Security_context::priv_host to an empty string:
  when executing an init-file, sql_parse.cc:get_default_definer()
  will use this for the value of the definer if it's not set in the query.
sql/sql_parse.cc:
  Set CLIENT_MULTI_RESULTS in handle_bootstrap(), to make prepared
  statements work in stored procedures called from init-file.
2006-07-04 23:46:15 +04:00
unknown
a5dfeb02e9 WL #3337 (Event scheduler new architecture)
Cut Nr. 8.

All tests pass.

Separated Event_scheduler into Event_queue and Event_scheduler.
Added new Event_scheduler_ng which is the new scheduler and is used
system-wide. Will be moved to the event_scheduler.cc in the future.
Using Event_timed in Event_queue as well as cloned during execution.
Next step is to have Event_worker_data which will be used during execution
and will take ::compile()/::execute() out of Event_timed.


mysql-test/r/events.result:
  update result
mysql-test/r/events_bugs.result:
  update result
mysql-test/r/ps_1general.result:
  update result
mysql-test/r/skip_name_resolve.result:
  update result
mysql-test/r/sp-threads.result:
  update result
mysql-test/r/sp_notembedded.result:
  update result
mysql-test/r/status.result:
  update result
mysql-test/t/events_stress.test:
  Make event_stress a bit longer
sql/Makefile.am:
  Add new event_scheduler_ng.h/cc . These are only to be in the experimental
  clone. Later their content will be moved to event_scheduler.h/cc
sql/event_data_objects.cc:
  Allocate strings memory on own memory root, instead
  on the schedulers. Thus don't "leak" memory. This should
  fix bug#18683 memory leak in event scheduler
sql/event_data_objects.h:
  add mem_root
  add THD - this is only temporal, will be moved to class Event_job_data
  once Event_job_data is responsible for the execution.
sql/event_db_repository.cc:
  Remove unused code.
  Cosmetic changes
sql/event_queue.cc:
  Now use the Event_scheduler_ng (NextGen)
sql/event_queue.h:
  Now use the Event_scheduler_ng (NextGen)
sql/event_scheduler.cc:
  This file is no more used, but will be soon.
sql/event_scheduler.h:
  This file is no more used but will be soon
sql/events.cc:
  Now use the Event_scheduler_ng (NextGen)
sql/events.h:
  Now use the Event_scheduler_ng (NextGen)
sql/mysqld.cc:
  Make it again possible to kill the scheduler thread
sql/set_var.cc:
  Now use the Event_scheduler_ng (NextGen)
sql/share/errmsg.txt:
  Shorten the message.
sql/sql_show.cc:
  Loading is on a own root, then don't use thd->mem_root
2006-07-04 18:44:35 +02:00
unknown
9fecf502a3 fix test. this should remove the problem of
fix for bug#20624  events_logs_tests.test fails randomly


BitKeeper/etc/ignore:
  Added server-tools/instance-manager/net_serv.cc to the ignore list
mysql-test/r/events_logs_tests.result:
  update result
mysql-test/t/events_logs_tests.test:
  fix test. this should remove the problem of 
  Bug #20624  events_logs_tests.test fails randomly
2006-07-04 17:30:39 +02:00
unknown
184ff212b6 WL#2928 Date Translation NRE
(implemented by by Josh Chamas)


libmysqld/Makefile.am:
  Adding new source file
mysql-test/r/date_formats.result:
  Adding test case
mysql-test/t/date_formats.test:
  Adding test case
sql/Makefile.am:
  Adding new source file
BitKeeper/etc/ignore:
  Added libmysqld/sql_locale.cc to the ignore list
sql/item_timefunc.cc:
  Using current locale data, instead of hard coded English names.
sql/mysql_priv.h:
  Adding new type MY_LOCALE, and declaring new global variables.
sql/set_var.cc:
  Adding "lc_time_names" system variable.
sql/set_var.h:
  Adding "lc_time_names" system variable.
sql/sql_cache.cc:
  Adding lc_time_names as a query cache flag.
sql/sql_class.cc:
  Setting default locale to en_US
sql/sql_class.h:
  Adding locale variable into system_variables.
sql/sql_locale.cc:
  Adding new file with locale data for various languages
2006-07-04 17:40:40 +05:00
unknown
bb576ed217 After merge fix 2006-07-04 12:34:23 +02:00
unknown
8a67bdd0c3 Merge mysql.com:/home/kgeorge/mysql/5.0/teamclean
into  mysql.com:/home/kgeorge/mysql/5.0/B16110


mysql-test/r/view.result:
  Auto merged
sql/sql_insert.cc:
  Auto merged
2006-07-04 12:20:45 +03:00
unknown
e08ff11534 Bug #16110: insert permitted into view col w/o default value
When compiling INSERT statements the check whether columns are provided values
depends on the flag whether a field is used in that query (Field::query_id).
However the check for updatability of VIEW columns (check_view_insertability())
was calling fix_fields() and thus setting the Field::query_id even for the 
view fields that are not referenced in the current INSERT statement.
So the correct check for columns without default values 
( check_that_all_fields_are_given_values() ) is assuming that all the VIEW
columns were mentioned in the INSERT field list and was issuing no 
warnings or errors.
Fixed check_view_insertability() to turn off the flag whether or not to set
Field::query_id (THREAD::set_query_id) before calling fix fields and restore
it when it's done.


mysql-test/r/view.result:
  Bug #16110: insert permitted into view col w/o default value
    * test case
mysql-test/t/view.test:
  Bug #16110: insert permitted into view col w/o default value
    * test case
sql/sql_insert.cc:
  Bug #16110: insert permitted into view col w/o default value
    * avoid setting the "field used" flag for fields when checking view columns 
      for updatability.
    * a missing DBUG_RETURN added.
2006-07-04 12:10:12 +03:00
unknown
597ee0392c Merge mysql.com:/home/mydev/mysql-5.0-tmp_merge
into  mysql.com:/home/mydev/mysql-5.1-amerge


mysys/thr_lock.c:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sql_handler.cc:
  Auto merged
sql/sql_insert.cc:
  Auto merged
mysql-test/r/lock_multi.result:
  Manual merge
mysql-test/t/lock_multi.test:
  Manual merge
sql/lock.cc:
  Manual merge
sql/sql_base.cc:
  Manual merge
sql/sql_parse.cc:
  Manual merge
sql/sql_table.cc:
  Manual merge
2006-07-04 10:02:11 +02:00
unknown
8e1162f830 bug #14807 (GeomFromText() should return MYSQL_TYPE_GEOMETRY)
we didn't have code creating GEOMETRY-type fields from Items (expression results)
So i added this code


mysql-test/r/gis.result:
  test result fixed
mysql-test/t/gis.test:
  testcase added
sql/item_geofunc.cc:
  Item_geometry_func::tmp_table_field implemented
sql/item_geofunc.h:
  tmp_table_field() and get_geometry_type() declared
2006-07-04 12:56:53 +05:00
unknown
2ef57b8362 Renumber events to make tests pass. This must be a result of removing extraneous
COMMITs -- the numbers collapse to fill the gaps.


mysql-test/r/rpl_row_create_table.result:
  Renumber event position.  This must be a result of extraneous COMMITs; see Bug#16206.
  I don't fully understand this, but I can't see any harm to it.
mysql-test/t/rpl_row_create_table.test:
  Renumber event position.  This must be a result of extraneous COMMITs; see Bug#16206.
  I don't fully understand this, but I can't see any harm to it.
2006-07-03 23:17:53 -04:00
unknown
f49ef0c3a8 Removed extraneous COMMITs, from Bug#16206. 2006-07-03 19:03:47 -04:00
unknown
430e94f119 Removed bdb test where the binlog format is indeterminate and updated a test
where it isn't.  Removed a test where the merge was incorrect (and a test 
duplicated.)


mysql-test/r/bdb.result:
  Removed binlog-format-specific test.
  
  Elliot says bdb is going away real soon now anyway.
mysql-test/r/binlog_row_blackhole.result:
  Removed superfluous commits.  Bug#16206.
mysql-test/r/mysqldump.result:
  Merged incorrectly.
mysql-test/t/bdb.test:
  Removed binlog-format-specific test.
  
  Elliot says bdb is going away real soon now anyway.
2006-07-03 18:29:01 -04:00
unknown
353efb230f Additional patch from Bug#16206. BEGIN/COMMIT behavior changed 5.0 -> 5.1 . 2006-07-03 13:49:25 -04:00
unknown
058cad7848 Merge zippy.(none):/home/cmiller/work/mysql/merge/mysql-5.0
into  zippy.(none):/home/cmiller/work/mysql/merge/mysql-5.1


BitKeeper/etc/ignore:
  auto-union
client/mysqldump.c:
  Auto merged
mysql-test/r/bdb.result:
  Auto merged
mysql-test/r/type_timestamp.result:
  Auto merged
mysql-test/r/udf.result:
  Auto merged
mysql-test/t/bdb.test:
  Auto merged
mysql-test/t/type_timestamp.test:
  Auto merged
mysys/my_lib.c:
  Auto merged
sql/log_event.cc:
  Auto merged
sql/log_event.h:
  Auto merged
sql/table.cc:
  Auto merged
mysql-test/r/func_time.result:
  manual merge
mysql-test/r/mysqldump.result:
  manual merge
mysql-test/t/func_time.test:
  manual merge
mysql-test/t/mysqldump.test:
  manual merge
sql/log.cc:
  manual merge
sql/sp_head.cc:
  manual merge
sql/sql_table.cc:
  manual merge
2006-07-03 11:35:58 -04:00
unknown
0770db0450 bug 20317 (test fails in embedded for different number of threads is
running)

I decided to make ps_1general test independent from actual number of
threads running


mysql-test/r/ps_1general.result:
  result fixed
mysql-test/t/ps_1general.test:
  as i think we don't really care about the number of threads running
  i just replace the number with '#'
2006-07-03 14:54:09 +05: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
d4350444c5 Merge mronstrom@bk-internal.mysql.com:/home/bk/mysql-5.1
into  dator5.(none):/home/pappa/bug17138


sql/item_sum.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_update.cc:
  Auto merged
2006-07-01 19:47:24 -04:00
unknown
44386279a5 Merge mysql.com:/home/dlenev/mysql-5.0-bg18437-3
into  mysql.com:/home/dlenev/mysql-5.1-bg18437


sql/mysql_priv.h:
  Auto merged
sql/sql_load.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_trigger.cc:
  Auto merged
include/my_base.h:
  Manual merge.
mysql-test/r/federated.result:
  Manual merge.
mysql-test/r/ndb_replace.result:
  Manual merge.
mysql-test/t/federated.test:
  Manual merge.
sql/ha_ndbcluster.cc:
  Manual merge.
sql/item.cc:
  Manual merge.
sql/sql_delete.cc:
  Manual merge.
sql/sql_insert.cc:
  Manual merge.
sql/sql_parse.cc:
  Manual merge.
sql/sql_trigger.h:
  Manual merge.
sql/sql_update.cc:
  Manual merge.
2006-07-02 02:12:53 +04: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
047e2be28c Post-merge fix 2006-07-01 09:28:41 +04:00
unknown
60d070b273 Merge dator5.(none):/home/pappa/bug20583
into  dator5.(none):/home/pappa/bug17138


mysql-test/r/partition.result:
  manual merge
mysql-test/t/partition.test:
  manual merge
2006-07-01 00:28:04 -04:00
unknown
3ed74d0e8d Merge dator5.(none):/home/pappa/clean-mysql-5.1
into  dator5.(none):/home/pappa/bug20583


mysql-test/r/partition.result:
  Auto merged
mysql-test/t/partition.test:
  Auto merged
sql/ha_partition.cc:
  Auto merged
2006-07-01 00:22:25 -04:00
unknown
a8e6d7f6e2 Merge dator5.(none):/home/pappa/clean-mysql-5.1
into  dator5.(none):/home/pappa/bug17138


BUILD/compile-pentium-gcov:
  Auto merged
sql/ha_ndbcluster.h:
  Auto merged
sql/handler.h:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
2006-07-01 00:19:23 -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