Commit graph

10810 commits

Author SHA1 Message Date
unknown
e4cd7e985f Merge bk-internal:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B28992-5.0-opt
2007-06-12 14:37:14 +03:00
unknown
030bb02b69 Bug #28992: trigger fails in pushbuild
- fixed wrong test case for bug 20903
 - closed the dangling connections in trigger.test
 - GET_LOCK() and RELEASE_LOCK() now produce more detailed log
 - fixed an omission in GET_LOCK() : assign the thread_id when
    acquiring the lock.


mysql-test/r/trigger.result:
  Bug #28992: test case updated
mysql-test/t/trigger.test:
  Bug #28992: test case updated. dangling connections closed.
sql/item_func.cc:
  Bug #28992: 
   - GET_LOCK() and RELEASE_LOCK() now produce more detailed log
   - fixed an omission in GET_LOCK() : assign the thread_id when
      acquiring the lock.
2007-06-12 14:35:36 +03:00
unknown
d447929a02 Merge polly.local:/home/kaa/src/maint/bug28895/my50-bug28895
into  polly.local:/home/kaa/src/maint/mysql-5.0-maint


sql/sql_select.cc:
  Auto merged
2007-06-12 11:42:39 +04:00
unknown
ccf393b67a Bug#28904: INSERT .. ON DUPLICATE was silently updating rows when it shouldn't.
When the INSERT .. ON DUPLICATE KEY UPDATE has to update a matched row but
the new data is the same as in the record then it returns as if
no rows were inserted or updated. Nevertheless the row is silently
updated. This leads to a situation when zero updated rows are reported 
in the case when data has actually been changed.

Now the write_record function updates a row only if new data differs from
that in the record.


sql/sql_insert.cc:
  Bug#28904: INSERT .. ON DUPLICATE was silently updating rows when it shouldn't.
  Now the write_record function updates a row only if new data differs from
  that in the record.
mysql-test/r/insert_update.result:
  Added a test case for the bug#28904: INSERT .. ON DUPLICATE was silently
  updating rows when it shouldn't.
mysql-test/t/insert_update.test:
  Added a test case for the bug#28904: INSERT .. ON DUPLICATE was silently
  updating rows when it shouldn't.
2007-06-12 01:41:23 +04:00
unknown
1c4ab3106e Fix for bug #29015 "Stack overflow in processing temporary table name when tmpdir path is long"
In create_tmp_table() don't set full table path as a table name. Other code assumes table names to not exceed NAME_LEN bytes.


sql/sql_select.cc:
  In create_tmp_table() don't set full table path as a table name. Other code assumes table names to not exceed NAME_LEN bytes.
mysql-test/r/long_tmpdir.result:
  Added testcase for bug #29015 "Stack overflow in processing temporary table name when tmpdir path is long"
mysql-test/t/long_tmpdir-master.opt:
  Added testcase for bug #29015 "Stack overflow in processing temporary table name when tmpdir path is long"
mysql-test/t/long_tmpdir-master.sh:
  Added testcase for bug #29015 "Stack overflow in processing temporary table name when tmpdir path is long"
mysql-test/t/long_tmpdir.test:
  Added testcase for bug #29015 "Stack overflow in processing temporary table name when tmpdir path is long"
2007-06-11 23:06:20 +04:00
unknown
84910c5a87 Merge chilla.local:/home/mydev/mysql-5.0-amain
into  chilla.local:/home/mydev/mysql-5.0-axmrg


configure.in:
  Auto merged
2007-06-11 17:40:01 +02:00
unknown
62b7d367e0 Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.0-rpl
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge
2007-06-11 16:42:24 +02:00
unknown
4c40289a49 Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.0-rpl
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge
2007-06-11 09:44:15 +02:00
unknown
7a86568318 Fix for bug #28748: "Select" returning one value too few
Problem: we may get unexpected results comparing [u]longlong values as doubles.
Fix: adjust the test to use integer comparators.
Note: it's not a real fix, we have to implement some new comparators 
to completely solve the original problem (see my comment in the bug report).


mysql-test/r/func_in.result:
  Fix for bug #28748: "Select" returning one value too few
    - result adjusted.
mysql-test/t/func_in.test:
  Fix for bug #28748: "Select" returning one value too few
    - test adjusted to use integer comparisons.
2007-06-09 17:13:33 +05:00
unknown
ce4e9f7580 Bug#28266 IS_UPDATABLE field on VIEWS table in I_S database is wrong
IS_UPDATABLE flag is set to 'yes' when the view has at least one updatable column and
the algorithm is not 'temporary'.


mysql-test/r/information_schema.result:
  test result
mysql-test/r/view.result:
  test result
mysql-test/t/information_schema.test:
  test case
mysql-test/t/view.test:
  test case
sql/sql_show.cc:
  IS_UPDATABLE flag is set to 'yes' when the view has at least one updatable column and
  the algorithm is not 'temporary'.
2007-06-09 16:52:37 +05:00
unknown
22d488e42b Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug28811
2007-06-08 09:59:07 -07:00
unknown
5031a418e5 Bug#18660 Can't grant any privileges on single table in database with underscore char
In case of database level grant the database name may be a pattern,
in case of table|column level grant the database name can not be a pattern.
We use 'dont_check_global_grants' as a flag to determine
if it's database level grant command 
(see SQLCOM_GRANT case, mysql_execute_command() function) and
set db_is_pattern according to 'dont_check_global_grants' value.


mysql-test/r/grant2.result:
  test result
mysql-test/t/grant2.test:
  test case
sql/sql_parse.cc:
  In case of database level grant the database name may be a pattern,
  in case of table|column level grant the database name can not be a pattern.
  We use 'dont_check_global_grants' as a flag to determine
  if it's database level grant command 
  (see SQLCOM_GRANT case, mysql_execute_command() function) and
  set db_is_pattern according to 'dont_check_global_grants' value.
2007-06-08 14:42:08 +05:00
unknown
928e00b8d8 Bug#28369 rpl test cases fail with binlog disabled
- Backport include/show_binlog_events.inc from 5.1 and use it to make
the test output consistent results


mysql-test/r/mix_innodb_myisam_binlog.result:
  Backport include/show_binlog_events.inc from 5.1 and use it to make
  the test output consistent results
mysql-test/t/mix_innodb_myisam_binlog.test:
  Backport include/show_binlog_events.inc from 5.1 and use it to make
  the test output consistent results
mysql-test/include/show_binlog_events.inc:
  New BitKeeper file ``mysql-test/include/show_binlog_events.inc''
2007-06-08 11:30:03 +02:00
unknown
67a197674c Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl
into  mysql.com:/home/bar/mysql-work/mysql-5.0.b28916
2007-06-08 13:25:25 +05:00
unknown
d8e2f2622d Fixed bug #28811: crash for a query containing a subquery with
ORDER BY and LIMIT 1. 
The bug was introduced by the patch for bug 21727. The patch
erroneously skipped initialization of the array of headers
for sorted records for non-first evaluations of the subquery.

To fix the problem a new parameter has been added to the
function make_char_array that performs the initialization.
Now this function is called for any invocation of the 
filesort procedure. Yet it allocates the buffer for sorted
records only if this parameter is NULL.


mysql-test/r/subselect.result:
  Added a test case for bug #28811.
mysql-test/t/subselect.test:
  Added a test case for bug #28811.
2007-06-07 22:35:31 -07:00
unknown
44626a6de8 Bug#28369 rpl test cases fail with binlog disabled
mysql-test/lib/mtr_cases.pl:
  Don't turn off binlog in versions prior to 5.0
mysql-test/r/binlog.result:
  Update result after adding "one more select"
mysql-test/t/binlog.test:
  Update result after adding "one more select"
2007-06-08 07:16:36 +02:00
unknown
5a148ba5fa Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/28763-bug-5.0-opt-mysql
2007-06-08 00:58:31 +04:00
unknown
18310fabf4 Bug#28763: Selecting geometry fields in UNION caused server crash.
This bug was introduced by the fix for the bug#27300. In this fix a section
of code was added to the Item::tmp_table_field_from_field_type method.
This section intended to create Field_geom fields for the Item_geometry_func
class and its descendants. In order to get the geometry type of the current
item it casted "this" to the Item_geometry_func* type. But the
Item::tmp_table_field_from_field_type method is also used for creation of
fields for UNION and in this case this method is called for an object of the
Item_type_holder class and the cast to the Item_geometry_func* type causes 
a server crash.

Now the Item::tmp_table_field_from_field_type method correctly works when it's
called for both the Item_type_holder and the Item_geometry_func classes.
The new geometry_type variable is added to the Item_type_holder class.
The new method called get_geometry_type is added to the Item_field
and the Field classes. It returns geometry type from the field for the
Item_field and the Field_geom classes and fails an assert for other Field
descendants.


sql/field.h:
  Bug#28763: Selecting geometry fields in UNION caused server crash.
  The new method called get_geometry_type is added to the Field class.
  It returns geometry type of the field for the Field_geom class
  and fails an assert for other Field descendants.
sql/item.cc:
  Bug#28763: Selecting geometry fields in UNION caused server crash.
  Now the Item::tmp_table_field_from_field_type method correctly works when it's
  called for both the Item_type_holder and the Item_geometry_func classes.
mysql-test/r/gis.result:
  Added a test case for the bug#28763: Selecting geometry fields in UNION caused server crash.
mysql-test/t/gis.test:
  Added a test case for the bug#28763: Selecting geometry fields in UNION caused server crash.
sql/item.h:
  Bug#28763: Selecting geometry fields in UNION caused server crash.
  The new method called get_geometry_type is added to the Item_field class.
  It returns geometry type from the field.
  The new geometry_type variable is added to the Item_type_holder class.
2007-06-08 00:33:03 +04:00
unknown
14b95f511b Remove "is_debug_build.inc" and use already existing "have-debug.inc"
BitKeeper/deleted/.del-is_debug_build.inc:
  Rename: mysql-test/include/is_debug_build.inc -> BitKeeper/deleted/.del-is_debug_build.inc
2007-06-07 22:23:47 +02:00
unknown
4935813cd0 Fix typo
Mark one more test as needing binlog


mysql-test/include/master-slave.inc:
  Fix typo
mysql-test/lib/mtr_cases.pl:
  Fix typo
mysql-test/r/have_log_bin.require:
  Fix typo
mysql-test/t/binlog_killed.test:
  Need binlog
2007-06-07 20:25:22 +02:00
unknown
2ad832032b Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug28449
2007-06-07 10:26:38 -07:00
unknown
bddba33221 Merge pilot.(none):/data/msvensson/mysql/bug28369/my50-bug28369
into  pilot.(none):/data/msvensson/mysql/mysql-5.0-maint


mysql-test/t/blackhole.test:
  Auto merged
mysql-test/t/mysqldump.test:
  Auto merged
2007-06-07 19:21:01 +02:00
unknown
33df97dfa4 Bug#28369 rpl test cases fail with binlog disabled
- Turn on binlog only for tests that need it
 - Skip those tests if --skip-binlog is used


BitKeeper/deleted/.del-ctype_cp932_notembedded.result:
  Rename: mysql-test/r/ctype_cp932_notembedded.result -> BitKeeper/deleted/.del-ctype_cp932_notembedded.result
BitKeeper/deleted/.del-ctype_cp932_notembedded.test:
  Rename: mysql-test/t/ctype_cp932_notembedded.test -> BitKeeper/deleted/.del-ctype_cp932_notembedded.test
mysql-test/include/master-slave.inc:
  Need binlog
mysql-test/lib/mtr_cases.pl:
  Turn on binlog only for tests that need it
  Skip those tests if --skip-binlog is used
mysql-test/r/sp_trans.result:
  Moved to "sp_binlog"
mysql-test/t/binlog.test:
  Need binlog
mysql-test/t/blackhole.test:
  Need binlog
mysql-test/t/ctype_cp932_binlog.test:
  Need binlog
mysql-test/t/ctype_ucs_binlog.test:
  Need binlog
mysql-test/t/drop_temp_table.test:
  Need binlog
mysql-test/t/flush_block_commit_notembedded.test:
  Need binlog
mysql-test/t/innodb.test:
  Need binlog
mysql-test/t/insert_select-binlog.test:
  Need binlog
mysql-test/t/mix_innodb_myisam_binlog.test:
  Need binlog
mysql-test/t/mysqlbinlog-cp932.test:
  Need binlog
mysql-test/t/mysqlbinlog.test:
  Need binlog
mysql-test/t/mysqlbinlog2.test:
  Need binlog
mysql-test/t/mysqldump.test:
  Need binlog
mysql-test/t/rpl000015.test:
  Need binlog
mysql-test/t/rpl000017.test:
  Need binlog
mysql-test/t/rpl_rotate_logs.test:
  Need binlog
mysql-test/t/sp_trans.test:
  Moved to "sp_binlog"
mysql-test/t/user_var-binlog.test:
  Need binlog
mysql-test/r/sp_trans_log.result:
  New BitKeeper file ``mysql-test/r/sp_trans_log.result''
mysql-test/t/sp_trans_log.test:
  New BitKeeper file ``mysql-test/t/sp_trans_log.test''
2007-06-07 19:18:01 +02:00
unknown
af0a3afe05 Bug#28916 LDML doesn't work for utf8
and is not described in the manual
- Adding missing initialization for utf8 collations
- Minor code clean-ups: renaming variables,
  moving code into a new separate function.
- Adding test, to check that both ucs2 and utf8 user
  defined collations work (ucs2_test_ci and utf8_test_ci)
- Adding Vietnamese collation as a complex user defined
  collation example.


include/m_ctype.h:
  Renaming variable names to match collation names (for convenience).
mysys/charset-def.c:
  - Removing redundant declarations for variables declared in m_ctype.h
  - Renaming variable names to match collation names (for convenience).
mysys/charset.c:
  - Renaming "new" to "newcs", to avoid using C reserved word as a variable name
  - Moving UCA initialization code into a separate function
  - The bug fix itself: adding initialization of utf8 collations
strings/ctype-uca.c:
  Renaming variable names to match collation names (for convenience).
strings/ctype.c:
  Increasing buffer size to fit tailoring for languages
  with complex rules (e.g. Vietnamese).
mysql-test/r/ctype_ldml.result:
  Adding test case
mysql-test/std_data/Index.xml:
  Adding Index.xml example with user defined collations.
mysql-test/t/ctype_ldml-master.opt:
  Adding OPT file for the test case,
  to use the example Index.xml file.
mysql-test/t/ctype_ldml.test:
  Adding test case
2007-06-07 17:55:55 +05:00
unknown
84bc498895 Merge pilot.(none):/data/msvensson/mysql/bug28718/my50-bug28718
into  pilot.(none):/data/msvensson/mysql/mysql-5.0-maint
2007-06-07 14:33:13 +02:00
unknown
47559994b1 Bug#28718 Running backup testcase fails in mysql testsuite
- Skip test if the mysqld to test is not started from MYSQLTEST_VARDIR


mysql-test/t/backup.test:
  Skip test if the mysqld to test is not started from MYSQLTEST_VARDIR
mysql-test/t/blackhole.test:
  Skip test if the mysqld to test is not started from MYSQLTEST_VARDIR
mysql-test/include/uses_vardir.inc:
  New BitKeeper file ``mysql-test/include/uses_vardir.inc''
2007-06-07 14:25:17 +02:00
unknown
3babaecc41 Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl
into  mysql.com:/home/bar/mysql-work/mysql-5.0.b26711
2007-06-07 13:17:19 +05:00
unknown
2971d645c1 Bug#26711 "Binary content 0x00 sometimes becomes 0x5C 0x00 after dump/load"
Problem: "SELECT INTO OUTFILE" created incorrect dumps for BLOBs,
so "LOAD DATA" later incorrectly interpreted 0x5C as the second
byte of a multi-byte sequence, instead of escape character.
Fix: adding escaping of multi-byte heads.


mysql-test/r/ctype_big5.result:
  Adding test case
mysql-test/t/ctype_big5.test:
  Adding test case
sql/sql_class.cc:
  Add escape characters before multi-byte heads.
strings/ctype-big5.c:
  Flagging character set as dangerous for escaping.
strings/ctype-gbk.c:
  Flagging character set as dangerous for escaping.
strings/ctype-sjis.c:
  Flagging character set as dangerous for escaping.
2007-06-07 13:16:49 +05:00
unknown
89d96dd48e Fixed bug #28449: a crash may happen at some rare conditions when
a temporary table has grown out of heap memory reserved for it and 
the remaining disk space is not big enough to store the table as
a MyISAM table.

The crash happens because the function create_myisam_from_heap
does not handle safely the mem_root structure associated 
with the converted table in the case when an error has occurred.


sql/sql_select.cc:
  Fixed bug #28449: a crash may happen at some rare conditions when
  a temporary table has grown out of heap memory reserved for it and 
  the remaining disk space is not big enough to store the table as
  a MyISAM table.
  
  The crash happens because the function create_myisam_from_heap
  does not handle safely the mem_root structure associated 
  with the converted table in the case when an error has occurred.
  
  As it's hard to create a sitiation that would throw an error 
  a special code has been added that raises an error for a newly 
  created test called error_simulation.
mysql-test/r/error_simulation.result:
  New BitKeeper file ``mysql-test/r/error_simulation.result''
  
  Added a test case for bug #28449.
mysql-test/t/error_simulation-master.opt:
  New BitKeeper file ``mysql-test/t/error_simulation-master.opt''
mysql-test/t/error_simulation.test:
  New BitKeeper file ``mysql-test/t/error_simulation.test''
  
  Added a test case for bug #28449.
2007-06-07 00:59:08 -07:00
unknown
81d32d9a87 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B28878-5.0-opt
2007-06-07 10:10:18 +03:00
unknown
970b26e679 Bug#28878: InnoDB tables with UTF8 character set and indexes cause
wrong result for DML
When making key reference buffers over CHAR fields whitespace (0x20) 
must be used to fill in the remaining space in the field's buffer.
This is what Field_string::store() does.
Fixed Field_string::get_key_image() to do the same.


mysql-test/r/innodb_mysql.result:
  Bug#28878: test case
mysql-test/t/innodb_mysql.test:
  Bug#28878: test case
sql/field.cc:
  Bug#28878: Fill with space instead of binary zeros.
2007-06-07 10:08:44 +03:00
unknown
3ee66aa65e Merge 81.176.158.240:devel/mysql/BUG26976/mysql-5.0-engines
into  mysql.com:/home/svoj/devel/mysql/BUG26976/mysql-5.0-engines


mysql-test/r/ps.result:
  Auto merged
mysql-test/r/sp.result:
  Auto merged
mysql-test/r/view.result:
  Auto merged
sql/sql_table.cc:
  Auto merged
2007-06-07 12:07:41 +05:00
unknown
a4422e8af7 Merge xiphis.org:/home/antony/work2/mysql-5.0-engines
into  xiphis.org:/home/antony/work2/mysql-5.0-engines.merge


sql/mysqld.cc:
  Auto merged
2007-06-06 12:03:54 -07:00
unknown
cdf0327e62 Merge trift2.:/MySQL/M50/mysql-5.0
into  trift2.:/MySQL/M50/push-5.0


CMakeLists.txt:
  Auto merged
mysql-test/mysql-test-run.pl:
  Auto merged
mysql-test/t/ctype_cp932_binlog.test:
  Auto merged
mysql-test/t/mysqltest.test:
  Auto merged
2007-06-06 20:06:59 +02:00
unknown
64c6a91d40 after merge fix 2007-06-06 18:55:21 +05:00
unknown
98c7c87e45 Merge mysql.com:/home/gluh/MySQL/Merge/4.1-opt
into  mysql.com:/home/gluh/MySQL/Merge/5.0-opt


mysql-test/r/subselect.result:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
mysql-test/t/subselect.test:
  manual merge
2007-06-06 18:33:04 +05:00
unknown
593afb6a73 Bug#28553 mysqld crash in "purge master log before(select time from information_schema)"
forbid the use of subselect in PURGE LOGS BEFORE command


mysql-test/r/subselect.result:
  test result
mysql-test/t/subselect.test:
  test case
sql/sql_yacc.yy:
  forbid the use of subselect in PURGE LOGS BEFORE command
2007-06-06 18:29:15 +05:00
unknown
7ffa8c91cc Merge trift2.:/MySQL/M50/mysql-5.0
into  trift2.:/MySQL/M50/push-5.0


mysql-test/mysql-test-run.pl:
  Auto merged
mysql-test/t/mysqldump.test:
  Auto merged
2007-06-06 12:02:07 +02:00
unknown
55c765925d BUG#26976 - Missing table in merge not noted in related error msg +
SHOW CREATE TABLE fails

Underlying table names, that merge engine fails to open were not
reported.

With this fix CHECK TABLE issued against merge table reports all
underlying table names that it fails to open. Other statements
are unaffected, that is underlying table names are not included
into error message.

This fix doesn't solve SHOW CREATE TABLE issue.


myisammrg/myrg_def.h:
  Added myrg_print_wrong_table declaration.
myisammrg/myrg_open.c:
  If HA_OPEN_FOR_REPAIR is passed to merge engine open function,
  report names of tables that we fail to open.
mysql-test/r/backup.result:
  Updated test result.
mysql-test/r/key_cache.result:
  Updated test result - removed duplicate error.
mysql-test/r/lock.result:
  Updated test result - added summary row.
mysql-test/r/merge.result:
  A test case for BUG#26976.
mysql-test/r/preload.result:
  Updated test result - removed duplicate error, added summary row.
mysql-test/r/ps.result:
  Updated test result - removed duplicate error, added summary row.
mysql-test/r/repair.result:
  Updated test result - removed duplicate error, added summary row.
mysql-test/r/rpl_failed_optimize.result:
  Updated test result - removed duplicate error, added summary row.
mysql-test/r/sp.result:
  Updated test result - removed duplicate error, added summary row.
mysql-test/r/view.result:
  Updated test result - removed duplicate error, added summary row.
mysql-test/t/merge.test:
  A test case for BUG#26976.
sql/ha_myisam.cc:
  Do not report same error twice.
sql/ha_myisammrg.cc:
  If HA_OPEN_FOR_REPAIR is passed to merge engine open function,
  report names of tables that we fail to open.
  
  Added dummy ha_myisammrg::check to not confuse users with
  "not implemented" error in case all underlying tables are
  fine.
sql/ha_myisammrg.h:
   Added ha_myisammrg::check declaration.
sql/share/errmsg.txt:
  Added ER_ADMIN_WRONG_MRG_TABLE errno. It is used instead
  of ER_WRONG_MRG_TABLE in case HA_OPEN_FOR_REPAIR is
  passed to merge engine handler open function.
sql/sql_error.cc:
  warning_level_* are now public. It is required by mysql_admin_table to
  report message level.
sql/sql_error.h:
  warning_level_* are now public. It is required by mysql_admin_table to
  report message level.
sql/sql_table.cc:
  Reorder mysql_admin_table arguments to meet it's definition.
  
  Report errors that are pending in thd->warn_list as results of
  admin function.
2007-06-06 04:42:41 +05:00
unknown
f5bc5381ae Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-5.0
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/jun05/50


client/mysqldump.c:
  Auto merged
mysql-test/mysql-test-run.pl:
  Auto merged
sql/field.cc:
  Auto merged
sql/field.h:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2007-06-05 23:04:40 +02:00
unknown
0304a13ee7 Bug#28778: Wrong result of BETWEEN when comparing a DATETIME field with an
integer constants.

This bug is introduced by the fix for bug#16377. Before the fix the 
Item_func_between::fix_length_and_dec method converted the second and third
arguments to the type of the first argument if they were constant and the first
argument is of the DATE/DATETIME type. That approach worked well for integer
constants and sometimes produced bad result for string constants. The fix for
the bug#16377 wrongly removed that code at all and as a result of this the
comparison of a DATETIME field and an integer constant was carried out in a
wrong way and sometimes led to wrong result sets.

Now the Item_func_between::fix_length_and_dec method converts the second and
third arguments to the type of the first argument if they are constant, the
first argument is of the DATE/DATETIME type and the DATETIME comparator isn't
applicable.


sql/item_cmpfunc.cc:
  Bug#28778: Wrong result of BETWEEN when comparing a DATETIME field with an
  integer constants.
  Now the Item_func_between::fix_length_and_dec method converts the second and
  third arguments to the type of the first argument if they are constant, the
  first argument is of the DATE/DATETIME type and the DATETIME comparator isn't
  applicable.
mysql-test/r/type_datetime.result:
  Added a test case for the bug#28778: Wrong result of BETWEEN when comparing a DATETIME
  field with an integer constants.
mysql-test/t/type_datetime.test:
  Added a test case for the bug#28778: Wrong result of BETWEEN when comparing a DATETIME
  field with an integer constants.
2007-06-06 00:25:06 +04:00
unknown
797bbbd4b0 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  chilla.local:/home/mydev/mysql-5.0-axmrg


sql/mysqld.cc:
  Auto merged
2007-06-05 19:56:57 +02:00
unknown
1c72c3a8c1 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/50
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/jun05/50


mysql-test/mysql-test-run.pl:
  Auto merged
mysql-test/t/mysqltest.test:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2007-06-05 17:28:49 +02:00
unknown
c3ba8178b5 Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.0-rpl
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge


sql/sql_update.cc:
  Auto merged
2007-06-05 01:14:10 +02:00
unknown
da49952b7e Merge trift2.:/MySQL/M50/mysql-5.0
into  trift2.:/MySQL/M50/push-5.0


mysql-test/mysql-test-run.pl:
  Auto merged
mysql-test/t/mysqltest.test:
  Auto merged
2007-06-04 12:00:57 +02:00
unknown
a3c8a6d8b4 Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  mysql.com:/home/ram/work/b28652/b28652.5.0
2007-06-04 10:37:43 +05:00
unknown
7b8af0f555 Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug28728
2007-06-03 07:58:07 -07:00
unknown
a6f1d558f1 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/test-5.0-opt-mysql
2007-06-03 14:46:37 +04:00
unknown
4ef028600a user_var.result, user_var.test:
Extended test case for the bug#28494.


mysql-test/t/user_var.test:
  Extended test case for the bug#28494.
mysql-test/r/user_var.result:
  Extended test case for the bug#28494.
2007-06-03 14:46:09 +04:00
unknown
6c403ec920 Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug28728
2007-06-03 00:21:42 -07:00
unknown
b313fe1352 Merge bk-internal:/home/bk/mysql-5.0-opt
into  macbook.gmz:/Users/kgeorge/mysql/work/B26162-5.0-opt


mysql-test/r/trigger.result:
  Auto merged
mysql-test/t/trigger.test:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2007-06-03 10:03:37 +03:00
unknown
f9a41f9f35 Bug #26162: Trigger DML ignores low_priority_updates setting
The value of "low-priority-updates" option and the LOW PRIORITY
prefix was taken into account at parse time.
This caused triggers (among others) to ignore this flag (if
supplied for the DML statement).
Moved reading of the LOW_PRIORITY flag at run time.
Fixed an incosistency when handling
SET GLOBAL LOW_PRIORITY_UPDATES : now it is in effect for
delayed INSERTs.
Tested by checking the effect of LOW_PRIORITY flag via a 
trigger.


include/thr_lock.h:
  Bug #26162: moved reading of the LOW PRIORITY flag at run time
mysql-test/r/trigger.result:
  Bug #26162: test case
mysql-test/t/trigger.test:
  Bug #26162: test case
sql/set_var.cc:
  Bug #26162: fixed the handling of the "low-priority-updates" option
sql/sql_base.cc:
  Bug #26162: moved reading of the LOW PRIORITY flag at run time
sql/sql_yacc.yy:
  Bug #26162: moved reading of the LOW PRIORITY flag at run time
2007-06-03 09:40:00 +03:00
unknown
5c23a1c7f8 Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug28728
2007-06-02 12:46:48 -07:00
unknown
bce9860dcb Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/test-5.0-opt-mysql
2007-06-02 23:20:54 +04:00
unknown
8ab1830f9a Bug#28494: Grouping by Item_func_set_user_var produces incorrect result.
This is an additional fix.
Item::val_xxx methods are supposed to use original data source and
Item::val_xxx_result methods to use the item's result field. But for the
Item_func_set_user_var class val_xxx_result methods were mapped to val_xxx
methods. This leads, in particular, to producing bad sort keys and thus
wrong order of the result set of queries with group by/order by clauses.

The set of val_xxx_result methods is added to the Item_func_set_user_var
class. It's the same as the val_xxx set of method but uses the result_field
to return a value.


mysql-test/t/user_var.test:
  Corrected test case for hte bug#28494.
mysql-test/r/user_var.result:
  Corrected test case for hte bug#28494.
sql/item_func.cc:
  Bug#28494: Grouping by Item_func_set_user_var produces incorrect result.
  The set of val_xxx_result methods is added to the Item_func_set_user_var
  class. It's the same as the val_xxx set of method but uses the result_field
  to return a value.
sql/item_func.h:
  Bug#28494: Grouping by Item_func_set_user_var produces incorrect result.
  The set of val_xxx_result methods is added to the Item_func_set_user_var
  class.
2007-06-02 23:17:46 +04:00
unknown
8c4ff24b56 Fixed bug #28728: a crash when executing EXPLAIN EXTENDED for a query
using a derived table over a grouping subselect.

This crash happens only when materialization of the derived tables 
requires creation of auxiliary temporary table, for example when
a grouping operation is carried out with usage of a temporary table.

The crash happened because EXPLAIN EXTENDED when printing the query
expression made an attempt to use the objects created in the mem_root
of the temporary table which has been already freed by the moment
when printing is called.

This bug appeared after the method Item_field::print() had been 
introduced.    


mysql-test/r/subselect.result:
  Added a test case for bug #28728.
mysql-test/t/subselect.test:
  Added a test case for bug #28728.
sql/sql_select.cc:
  Fixed bug #28728: a crash when executing EXPLAIN EXTENDED for a query
  using a derived table over a grouping subselect.
  The crash happened because EXPLAIN EXTENDED when printing the query
  expression made an attempt to use the objects created in the mem_root
  of the temporary table which has been already freed by the moment
  when printing is accomplished.
  The fix in JOIN::exec() ensures using existing objects when printing 
  subselects for a derived tables by EXPLAIN EXTENDED.
2007-06-02 11:44:16 -07:00
unknown
e3cfdb301f Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-build
2007-06-02 06:34:48 +02:00
unknown
5697c0c10c Merge bk-internal.mysql.com:/data0/bk/mysql-5.0
into  bk-internal.mysql.com:/data0/bk/mysql-5.0-opt


mysql-test/r/sp.result:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
mysql-test/t/strict.test:
  Auto merged
mysql-test/t/subselect3.test:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_update.cc:
  Auto merged
sql/sql_view.cc:
  Manual merge
2007-06-02 00:57:25 +02:00
unknown
55aa43e2f5 Fix for bug #28652: MySQL (with-debug=full) asserts when alter table operations
Problem: we may create a deadlock committing changes in the mysql_alter_table() when 
LOCK_open is set. Moreover, "in some variants of the ALTER TABLE commit
happens earlier, outside of LOCK_open, in other later - inside. It's no good, a storage 
engine code that is called in between could expect a consistency - either there is a 
transaction or there is not".
Fix: move the commit to happen earlier and outside of the LOCK_open.


mysql-test/r/innodb_mysql.result:
  Fix for bug #28652: MySQL (with-debug=full) asserts when alter table operations
    - test result.
mysql-test/t/innodb_mysql.test:
  Fix for bug #28652: MySQL (with-debug=full) asserts when alter table operations
    - test case.
sql/sql_table.cc:
  Fix for bug #28652: MySQL (with-debug=full) asserts when alter table operations
    - commit moved to happen earlier in the mysql_alter_table(), 
      now we commit changes at the same time as in case when a temporary 
      table is used.
2007-06-01 22:53:50 +05:00
unknown
e21076463c Fix more mysqltest warnings. 2007-06-01 20:05:34 +04:00
unknown
68cc0a34b7 Fix a typo in the test case.
mysql-test/r/rpl_loaddata.result:
  Update result.
mysql-test/t/rpl_loaddata.test:
  Fix a typo in the test file.
2007-06-01 18:04:25 +04:00
unknown
d8cd88cd2a Fix some mysqltest warnings.
mysql-test/r/sp.result:
  Update results.
mysql-test/t/mysql.test:
  Fix a typo.
mysql-test/t/mysqltest.test:
  Fix a typo.
mysql-test/t/order_by.test:
  Fix a typo.
mysql-test/t/row.test:
  Remove an unsupported command.
mysql-test/t/sp.test:
  Fix a typo.
mysql-test/t/subselect3.test:
  Fix  mysqltest warnings - now it warns when sees some suspicious --
  comment
2007-06-01 17:49:01 +04:00
unknown
c73e0cfb60 Merge pilot.(none):/data/msvensson/mysql/bug28373/my50-bug28373
into  pilot.(none):/data/msvensson/mysql/mysql-5.0-maint


mysql-test/r/mysqltest.result:
  Auto merged
mysql-test/t/mysqltest.test:
  Auto merged
2007-06-01 15:43:04 +02:00
unknown
0bf2d59fcf Merge bk-internal:/home/bk/mysql-5.0-maint
into  pilot.(none):/data/msvensson/mysql/mysql-5.0-maint
2007-06-01 14:53:58 +02:00
unknown
861b193ea1 Merge pilot.(none):/data/msvensson/mysql/bug28497/my50-bug28497
into  pilot.(none):/data/msvensson/mysql/mysql-5.0-maint
2007-06-01 14:35:47 +02:00
unknown
9f1998b1a5 Merge pilot.(none):/data/msvensson/mysql/bug28497/my41-bug28497-query_get_value
into  pilot.(none):/data/msvensson/mysql/mysql-4.1-maint
2007-06-01 14:35:30 +02:00
unknown
3b74591e36 Add missing semicolon after connect command 2007-06-01 13:39:54 +02:00
unknown
4e2283f4ba Turn query_logging back on to avoid sideeffects in folloing test section 2007-06-01 12:38:41 +02:00
unknown
4bdbc3396e Merge aelkin@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl
into  dsl-hkibras1-ff5dc300-70.dhcp.inet.fi:/home/elkin/MySQL/TEAM/FIXES/5.0/bug27716-multi_upd_no_binlog


mysql-test/r/innodb.result:
  Auto merged
mysql-test/t/innodb.test:
  Auto merged
sql/sql_update.cc:
  Auto merged
2007-06-01 13:22:52 +03:00
unknown
2fdaa5931d Merge pilot.(none):/data/msvensson/mysql/bug28497/my41-bug28497-query_get_value
into  pilot.(none):/data/msvensson/mysql/bug28497/my50-bug28497


client/mysqltest.c:
  Auto merged
mysql-test/r/mysqltest.result:
  Auto merged
mysql-test/t/mysqltest.test:
  Auto merged
2007-06-01 12:04:05 +02:00
unknown
5b0e66a752 Bug#28497 wait_for_slave_to_stop can cause random replication mysql-test failures
- Add funtion "query_get_value to allow reading a fields value
   into a $variable


client/mysqltest.c:
  - Add function "let $var= query_get_value(<query>,<colname>,<row>)"
    making it possible to read a value from a specific field in a query 
    into a $variable.
mysql-test/r/mysqltest.result:
  Add test cases for "query_get_value"
mysql-test/t/mysqltest.test:
  Add test cases for "query_get_value"
2007-06-01 12:01:42 +02:00
unknown
6b94fc579f Bug #27716 multi-update did partially and has not binlogged
Implementation of mysql_multi_update did not call multi_update::send_error method in some cases 
(see the test reported on bug page and test cases in changeset).

Fixed with deploying the method, ::send_error() is refined to get binlogging code which works whenever 
there is modified non-transactional table.
thd->no_trans_update.stmt flag is set in to TRUE to ease testing though being the beginning of relative 
bug#27417 fix (addresses a part of those issues).
Eliminating two minor issues (small bugs) in multi_update methods.
This patch for multi-update also addresses a part of the issues reported in bug#13270,bug#23333.


mysql-test/r/innodb.result:
  result changed
mysql-test/r/multi_update.result:
  results changed
mysql-test/t/innodb.test:
  regression test for the bug combining transactional and non-transaction tables
mysql-test/t/multi_update.test:
  regression tests added - erred query must be binlogged
sql/sql_update.cc:
  making a call to multi_update::send_error when mysql_select return an error;
  deploying binlogging inside of ::send_error;
  refining multi_update::send_eof() to mark binlogging work done when its call to ::do_updates() errs
  and the query is binlogged with the error. ::send_error() will be called after all but
  do not do anything;
  thd->no_trans_update.stmt is corrected to be set to TRUE according to the existed code pattern. 
  Although this part relates to another bugs (bug#27417 etc) it is needed here for testing;
  Eliminating a separate issue in multi_update::do_updates where                
  either one of the class members trans_safe, transactional_tables was          
  set after the per-table loop whereas both should be calculated during         
  looping. 
  Eliminating a separate issue in ::send_eof() where thd->no_trans_update.all won't be set TRUE when
  amoung others there'd be at least one modified transactional table.
  Binlogging is done to satisfy to general character bug#13270,bug#23333 so that those won't have
  fixes specific for multi-update.
2007-06-01 11:14:04 +03:00
unknown
9fa12a386b Merge gshchepa@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  gleb.loc:/home/uchum/work/bk/mysql-5.0-opt
2007-06-01 02:51:35 +05:00
unknown
e8bf6c5b69 Merge gleb.loc:/home/uchum/work/bk/mysql-5.0-opt-27827-fresh
into  gleb.loc:/home/uchum/work/bk/mysql-5.0-opt


mysql-test/r/view.result:
  Merge with bug #27827 fix.
mysql-test/t/view.test:
  Merge with bug #27827 fix.
2007-06-01 02:40:49 +05:00
unknown
d173306942 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/28494-bug-5.0-opt-mysql
2007-06-01 01:18:45 +04:00
unknown
b4a35cd76e Bug#28494: Grouping by Item_func_set_user_var produces incorrect result.
The end_update() function uses the Item::save_org_in_field() function to
save original values of items into the group buffer. But for the 
Item_func_set_user_var this method was mapped to the save_in_field method.
The latter function wrongly decides to use the result_field. This leads to
saving incorrect value in the grouping buffer and wrong result of the whole
query.

The can_use_result_field argument of the bool type is added to the
Item_func_set_user_var::save_in_field() function. If it is set to FALSE
then the item's result field won't be used. Otherwise it will be detected
whether the result field will be used (old behaviour).
Two wrapping functions for the function above are added to the 
Item_func_set_user_var class:
the save_in_field(Field *field, bool no_conversions) - it calls the above
function with the can_use_result_field set to TRUE.
the save_org_in_field(Field *field) - same, but the can_use_result_field
is set to FALSE.


mysql-test/t/user_var.test:
  Added a test case for the bug#28494: Grouping by Item_func_set_user_var
  produces incorrect result.
mysql-test/r/user_var.result:
  Added a test case for the bug#28494: Grouping by Item_func_set_user_var
  produces incorrect result.
sql/item_func.cc:
  Bug#28494: Grouping by Item_func_set_user_var produces incorrect result.
  The can_use_result_field argument of the bool type is added to the
  Item_func_set_user_var::save_in_field() function. If it is set to FALSE
  then the item's result field won't be used. Otherwise it will be detected
  whether the result field will be used (old behaviour).
sql/item_func.h:
  Bug#28494: Grouping by Item_func_set_user_var produces incorrect result.
  The can_use_result_field argument of the bool type is added to the
  Item_func_set_user_var::save_in_field() function.
  Two wrapping functions for the function above are added to the 
  Item_func_set_user_var class:
  the save_in_field(Field *field, bool no_conversions) - it calls the above
  function with the can_use_result_field set to TRUE.
  the save_org_in_field(Field *field) - same, but the can_use_result_field
  is set to FALSE.
2007-06-01 01:17:14 +04:00
unknown
e2c7a5b044 Fixed bug #27827.
ON conditions from JOIN expression were ignored at CHECK OPTION
check when updating a multi-table view with CHECK OPTION.

The st_table_list::prep_check_option function has been
modified to to take into account ON conditions at CHECK OPTION check
It was also changed to build the check option condition only once
for any update used in PS/SP.


sql/table.h:
  Fixed bug #27827.
  The st_table_list::check_option_processed variable has been added
  to build the check option condition only once for any update used
  in PS/SP.
sql/table.cc:
  Fixed bug #27827.
  The st_table_list::prep_check_option function has been
  modified to to take into account ON conditions at CHECK OPTION check
  It was also changed to build the check option condition only once
  for any update used in PS/SP.
mysql-test/t/view.test:
  Updated test case for bug #27827.
mysql-test/r/view.result:
  Updated test case for bug #27827.
2007-06-01 02:15:40 +05:00
unknown
a471267a24 Merge chilla.local:/home/mydev/mysql-5.0-bug23068
into  chilla.local:/home/mydev/mysql-5.0-axmrg


sql/mysqld.cc:
  Auto merged
2007-05-31 20:08:23 +02:00
unknown
489a3fe4ee Bug#28478 - Improper key_cache_block_size corrupts MyISAM tables
Setting a key_cache_block_size which is not a power of 2
could corrupt MyISAM tables.

A couple of computations in the key cache code use bit
operations which do only work if key_cache_block_size
is a power of 2.

Replaced bit operations by arithmetic operations
to make key cache able to handle block sizes that are
not a power of 2.


include/keycache.h:
  Bug#28478 - Improper key_cache_block_size corrupts MyISAM tables
  Removed element 'key_cache_shift' from KEY_CACHE after
  the changes in mf_keycache.c made it unused.
mysql-test/r/key_cache.result:
  Bug#28478 - Improper key_cache_block_size corrupts MyISAM tables
  Added test result
mysql-test/t/key_cache.test:
  Bug#28478 - Improper key_cache_block_size corrupts MyISAM tables
  Added test
mysys/mf_keycache.c:
  Bug#28478 - Improper key_cache_block_size corrupts MyISAM tables
  Replaced bit operations by arithmetic operations
  to make key cache able to handle block sizes that are
  not a power of 2.
2007-05-31 20:04:54 +02:00
unknown
7ff06317a4 Bug#28373 mysqltest test case fails with binlog disabled
- Update tests to be independent how the mysqld was started


mysql-test/r/mysqltest.result:
  Update result file
mysql-test/t/mysqltest.test:
  The purpose of these three test is to check that "sync_with_master"
  detects illegal parameters, the parameter checking is done before
  sending any command to the server and the "save_master_pos" can be
  removed in two cases to make the tests independent of mysqld.
  The thirs test is removed since it's a syntax check that is done
  after the command has been executed and is done for all comands in
  mysqltest - it's tested elsewhere and is not specific to "sync_with_master"
2007-05-31 15:58:22 +02:00
unknown
88423fae0d Merge gshchepa@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  gleb.loc:/home/uchum/work/bk/mysql-5.0-opt
2007-05-31 18:19:38 +05:00
unknown
9172429817 Merge gleb.loc:/home/uchum/work/bk/mysql-5.0-opt
into  gleb.loc:/home/uchum/work/bk/mysql-5.0-opt-28244
2007-05-31 18:16:29 +05:00
unknown
d22c33992a Fixed bug #28244.
When the same VIEW was created at the master side twice,
malformed (truncated after the word 'AS') query string 
was forwarded to client side, so error messages on the
master and client was different, and replication was
broken.

The mysql_register_view function call failed
too early: fields of `view' output argument of this 
function was not filled yet with correct data required
for query replication.
The mysql_register_view function also copied pointers to 
local buffers into a memory allocated by the caller.


sql/sql_view.cc:
  Fixed bug #28244.
  Checking of existence of VIEW .frm file has been
  moved down to the place, when `view' argument is
  completely filled with proper data.
  view->query.str and view->query.md5 pointers has been
  set to the NULL before return from the mysql_register_view
  function.
mysql-test/t/rpl_view.test:
  Updated test case for bug #28244.
mysql-test/r/rpl_view.result:
  Updated test case for bug #28244.
2007-05-31 17:30:56 +05:00
unknown
b21a0587bb fix test case
mysql-test/r/binlog.result:
  transaction ids increased by one due to have_log_bin.inc
mysql-test/t/binlog.test:
  transaction ids for ps-protocol increased by one due to have_log_bin.inc
2007-05-31 14:05:07 +02:00
unknown
b8587557b1 Merge polly.local:/home/kaa/src/maint/bug27643/my50-bug27643
into  polly.local:/home/kaa/src/maint/mysql-5.0-maint


sql/sql_select.cc:
  Auto merged
2007-05-31 15:01:49 +04:00
unknown
f18a10c6c1 Fix for bug #27643 "query failed : 1114 (The table '' is full)
Problem:

HASH indexes on VARCHAR columns with binary collations did not ignore trailing spaces from strings before comparisons. This could result in duplicate records being successfully inserted into a MEMORY table with unique key constraints.

As a direct consequence of the above, internal MEMORY tables used for GROUP BY calculation in testcases for bug #27643 contained duplicate rows which resulted in duplicate key errors when converting those temporary tables to MyISAM. Additionally, that error was incorrectly converted to the 'table is full' error.

Solution:

- ignore trailing spaces in VARCHAR fields with binary collations when calculating hashes.
- return a proper error from create_myisam_from_heap() when conversion fails.


mysql-test/r/ctype_ucs2_def.result:
  Added a testcase for bug #27643.
mysql-test/r/heap_hash.result:
  Added a testcase for bug #27643.
mysql-test/t/ctype_ucs2_def.test:
  Added a testcase for bug #27643.
mysql-test/t/heap_hash.test:
  Added a testcase for bug #27643.
sql/sql_select.cc:
  Return an appropriate error instead of 'table is full' when conversion from MEMORY to MyISAM fails.
strings/ctype-bin.c:
  Added my_hash_sort_8bit_bin() which ignores trailing spaces when calculating hashes, and is now used for VARCHAR columns instead of my_hash_sort_bin().
strings/ctype-mb.c:
  Ignore trailing spaces when calculating a string hash in my_hash_sort_mb_bin().
strings/ctype-ucs2.c:
  Ignore trailing spaces when calculating a string hash in my_hash_sort_ucs2_bin().
2007-05-31 14:54:44 +04:00
unknown
0c138881c7 fix test case broken for ps-protocol by previous push
mysql-test/t/mix_innodb_myisam_binlog.test:
  have_log_bin.inc increases transaction count by one, modify ps-protocol substitutions accordingly
2007-05-31 12:21:55 +02:00
unknown
eb056fb82b Merge lthalmann@bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  mysql.com:/nfsdisk1/lars/bk/mysql-5.0-rpl


mysql-test/t/disabled.def:
  Auto merged
2007-05-31 10:20:58 +02:00
unknown
0fd8118948 Merge pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.0-build-work
into  pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.0-build-work-nn


mysql-test/t/blackhole.test:
  Auto merged
mysql-test/t/mysqltest.test:
  Auto merged
mysql-test/t/sp_trans.test:
  Auto merged
2007-05-31 10:09:34 +02:00
unknown
cde3be8612 Merge gshchepa@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  gleb.loc:/home/uchum/work/bk/mysql-5.0-opt-28598


sql/sql_select.cc:
  Auto merged
2007-05-31 12:43:59 +05:00
unknown
c063a677ac some test cases cannot run with --skip-log-bin
mysql-test/r/mix_innodb_myisam_binlog.result:
  have_log_bin.inc increases transaction count by onw
mysql-test/t/binlog.test:
  test obviously requires binlog
mysql-test/t/blackhole.test:
  test requires binlog for now
mysql-test/t/ctype_cp932_binlog.test:
  test requires binlog
mysql-test/t/ctype_cp932_notembedded.test:
  test requires binlog for now
mysql-test/t/ctype_ucs_binlog.test:
  test requires binlog
mysql-test/t/drop_temp_table.test:
  test requires binlog for now
mysql-test/t/flush_block_commit_notembedded.test:
  test requires binlog for now
mysql-test/t/insert_select-binlog.test:
  test requires binlog
mysql-test/t/mix_innodb_myisam_binlog.test:
  test requires binlog
mysql-test/t/mysqlbinlog-cp932.test:
  test requires binlog
mysql-test/t/mysqlbinlog.test:
  test requires binlog
mysql-test/t/mysqlbinlog2.test:
  test requires binlog
mysql-test/t/mysqltest.test:
  test requires binlog for now
mysql-test/t/sp_trans.test:
  test requires binlog for now
mysql-test/t/user_var-binlog.test:
  test requires binlog for now
2007-05-31 09:34:24 +02:00
unknown
ebedff7775 Fixed bug #28598.
mysqld crashed when a long-running explain query was killed from
another connection.

When the current thread caught a kill signal executing the function
best_extension_by_limited_search it just silently returned to  
the calling function greedy_search without initializing elements of
the join->best_positions array.
However, the greedy_search function ignored thd->killed status
after a calls to the best_extension_by_limited_search function, and
after several calls the greedy_search function used an uninitialized
data from the join->best_positions[idx] to search position in the
join->best_ref array. 
That search failed, and greedy_search tried to call swap_variables
function with NULL argument - that caused a crash.


sql/sql_select.cc:
  Fixed bug #28598.
  choose_plan(), greedy_search(), best_extension_by_limited_search()
  and find_best() functions have been changed to return TRUE in case
  of fatal error.
mysql-test/t/kill.test:
  Updated test case for bug #28598.
mysql-test/r/kill.result:
  Updated test case for bug #28598.
2007-05-31 12:10:21 +05:00
unknown
7d06ed8281 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/50
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/50


strings/strtod.c:
  Auto merged
2007-05-30 23:46:21 +02:00
unknown
dd190b0e6b bug#22725
refining the test because of Bug #28786 'reset master' does not reset binlogging on embeded server


mysql-test/t/binlog_killed.test:
  the test can not pass on embedded server. Setting the include-guard.
2007-05-30 22:29:15 +03:00
unknown
a7cf92bbce Bug#28729: Field_enum wrongly reported an error while storing an empty string.
ENUM fields internally store their values as integers and may use integer
values as indexes to their values. Invalid values are mapped to zero value.
When storing an empty string the ENUM field fails to find an appropriate value
and tries to convert the provided string to integer. The conversion also
fails and error is returned even if the thd->count_cuted_fields is set to
CHECK_FIELD_IGNORE. This makes the range optimizer wrongly decide that an
impossible range is present.

Now the Field_enum::store() returns error while storing an empty string only
if the thd->count_cuted_fields isn't set to CHECK_FIELD_IGNORE.


sql/field.cc:
  Bug#28729: Field_enum wrongly reported an error while storing an empty string.
  Now the Field_enum::store() returns error while storing an empty string only
  if the thd->count_cuted_fields isn't set to CHECK_FIELD_IGNORE.
mysql-test/r/type_enum.result:
  Added a test case for the bug#28729: Field_enum wrongly reported an error
  while storing an empty string.
mysql-test/t/type_enum.test:
  Added a test case for the bug#28729: Field_enum wrongly reported an error
  while storing an empty string.
2007-05-30 23:28:14 +04:00
unknown
001c930a9b Merge pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.0-build-work-nn
into  pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.0-build-work


mysql-test/mysql-test-run.pl:
  Auto merged
2007-05-30 17:09:41 +02:00
unknown
b79b490993 Merge mhansson@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  dl145s.mysql.com:/users/mhansson/mysql/autopush/my50-bug28250


sql/item_func.cc:
  Auto merged
2007-05-30 14:43:59 +02:00
unknown
7d944077fa Merge sgluhov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  mysql.com:/home/gluh/MySQL/Merge/5.0-opt


mysql-test/r/view.result:
  Auto merged
2007-05-30 17:09:16 +05:00
unknown
11b084102d backport of Bug#11491 Misleading error message if not NULL column set to NULL, SQL mode TRADITIONAL
mysql-test/r/auto_increment.result:
  result fix
mysql-test/r/create.result:
  result fix
mysql-test/r/insert.result:
  result fix
mysql-test/r/insert_select.result:
  result fix
mysql-test/r/insert_update.result:
  result fix
mysql-test/r/key.result:
  result fix
mysql-test/r/null.result:
  result fix
mysql-test/r/null_key.result:
  result fix
mysql-test/r/ps_2myisam.result:
  result fix
mysql-test/r/ps_3innodb.result:
  result fix
mysql-test/r/ps_4heap.result:
  result fix
mysql-test/r/ps_5merge.result:
  result fix
mysql-test/r/ps_6bdb.result:
  result fix
mysql-test/r/ps_7ndb.result:
  result fix
mysql-test/r/strict.result:
  result fix
mysql-test/r/view.result:
  result fix
mysql-test/r/warnings.result:
  result fix
mysql-test/t/strict.test:
  test fix
2007-05-30 17:04:04 +05:00
unknown
6fa44b38e6 Merge gshchepa@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  gleb.loc:/home/uchum/work/bk/mysql-5.0-opt


mysql-test/r/view.result:
  Auto merged
2007-05-30 15:46:23 +05:00
unknown
a5c232a0e0 Merge gleb.loc:/home/uchum/work/bk/mysql-5.0-opt
into  gleb.loc:/home/uchum/work/bk/mysql-5.0-opt-28716


sql/sql_class.h:
  Auto merged
mysql-test/r/view.result:
  SCCS merged
mysql-test/t/view.test:
  SCCS merged
2007-05-30 14:34:52 +05:00
unknown
98b5043a3d Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B28492-5.0-opt


mysql-test/r/sp.result:
  Auto merged
2007-05-30 11:23:39 +03:00
unknown
e5c4d97c9e bug#22725
test comments correction


mysql-test/r/binlog_killed.result:
  changed
mysql-test/t/binlog_killed.test:
  wrong comments (but important ones) left;
  little refinement in result calc
2007-05-30 10:56:18 +03:00
unknown
9f15fe64bd Disable IM-tests. 2007-05-30 11:53:50 +04:00
unknown
94507ee756 Fixed bug #28716.
The result of the CHECK OPTION condition evaluation over an
updated record and records of merged tables was arbitrary and
dependant on the order of records in the merged tables during
the execution of SELECT statement.

The CHECK OPTION expression was evaluated over expired record
buffers (with arbitrary data in the fields).

Rowids of tables used in the CHECK OPTION expression were
added to temporary table rows. The multi_update::do_updates()
method was modified to restore necessary record buffers
before evaluation of the CHECK OPTION condition.


sql/sql_class.h:
  Fixed bug #29716.
  The multi_update::unupdatable_check_opt_tables variable
  has been added.
sql/sql_update.cc:
  Fixed bug #29716.
  Rowids of tables used in the CHECK OPTION expression were
  added to temporary table rows. The multi_update::do_updates()
  method was modified to restore necessary record buffers
  before evaluation of the CHECK OPTION condition.
mysql-test/t/view.test:
  Updated test case for bug #28716.
mysql-test/r/view.result:
  Updated test case for bug #28716.
2007-05-30 12:21:39 +05:00
unknown
5462e46bf5 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B28605-5.0-opt
2007-05-30 10:02:22 +03:00
unknown
4e9cef545c Bug #28492: subselect returns LONG in >5.0.24a and LONGLONG in <=5.0.24a
Integer values with 10 digits may or may not fit into an int column 
(e.g. 2147483647 vs 6147483647).
Thus when creating a temp table column for such an int we must
use bigint instead.
Fixed to use bigint.
Also subsituted a "magic number" with a named constant.


mysql-test/r/analyse.result:
  Bug #28492: Adjusted the results after having fixed the bug
mysql-test/r/metadata.result:
  Bug #28492: test case
mysql-test/r/olap.result:
  Bug #28492: Adjusted the results after having fixed the bug
mysql-test/r/sp.result:
  Bug #28492: Adjusted the results after having fixed the bug
mysql-test/r/view.result:
  Bug #28492: Adjusted the results after having fixed the bug
mysql-test/t/metadata.test:
  Bug #28492: test case
sql/field.h:
  Bug #28492: Replaced a magic number with a constant
sql/sql_select.cc:
  Bug #28492: Treat integers with 10 and more digits as 
  bigint.
2007-05-30 09:55:38 +03:00
unknown
9a1e9de91f bug#22725
combining the final result variable in such way that either option of the test execution
will yield zero.


mysql-test/r/binlog_killed.result:
  results changed
mysql-test/t/binlog_killed.test:
  there are two options for the test passing:
  1. no rows inserted and the INSERT gets killed, then there is no INSERT query in binlog
  2. all rows inserted, then INSERT gets to binlog and error_code is zero
2007-05-30 00:22:24 +03:00
unknown
d393c9e666 Bug#28450: The Item_date_add_interval in select list may fail the field
type assertion.

The bug was introduced by the patch for bug #16377.
The "+ INTERVAL" (Item_date_add_interval) function detects its result type
by the type of its first argument. But in some cases it returns STRING
as the result type. This happens when, for example, the first argument is a 
DATE represented as string. All this makes the get_datetime_value()
function misinterpret such result and return wrong DATE/DATETIME value.
To avoid such cases in the fix for #16377 the code that detects correct result
field type on the first execution was added to the
Item_date_add_interval::get_date() function. Due to this the result
field type of the Item_date_add_interval item stored by the send_fields()
function differs from item's result field type at the moment when
the item is actually sent. It causes an assertion failure.

Now the get_datetime_value() detects that the DATE value is returned by
some item not only by checking the result field type but also by comparing
the returned value with the 100000000L constant - any DATE value should be
less than this value.
Removed result field type adjusting code from the
Item_date_add_interval::get_date() function.


sql/item_cmpfunc.cc:
  Bug#28450: The Item_date_add_interval in select list may fail the field 
  type assertion.
  Now the get_datetime_value() detects that the DATE value is returned by
  some item not only by checking the result field type but also by comparing
  the returned value with the 100000000L constant - any DATE value should be
  less than this value.
mysql-test/r/func_date_add.result:
  Added a test case for the bug#28450: The Item_date_add_interval in select list may fail the field
  type assertion.
sql/item_timefunc.cc:
  Bug#28450: The Item_date_add_interval in select list may fail the field 
  type assertion.
  Removed result field type adjusting code from the
  Item_date_add_interval::get_date() function.
mysql-test/t/func_date_add.test:
  Added a test case for the bug#28450: The Item_date_add_interval in select list may fail the field
  type assertion.
2007-05-30 00:33:12 +04:00
unknown
54e1f2f0ce bug#22725
tests refining, see binlog_killed.test file for details


mysql-test/r/binlog_killed.result:
  results changed
mysql-test/t/binlog_killed.test:
  killer conn waits for the first row to appear;
  log-disabling kill query since prey's id is not deterministic;
  correcting pattern to search in binlog for insert query;
2007-05-29 23:16:50 +03:00
unknown
70a530e401 bug#22725
refining the test.


mysql-test/t/binlog_killed.test:
  due to killing reap may catch an error though it's indeterministic.
2007-05-29 21:05:08 +03:00
unknown
00710d17bb Bug#22725 Replication outages from ER_SERVER_SHUTDOWN (1053) set in replication events
Refining the tests since pb revealed the older version's fragality - the error from SF() due to killed
may be different on different env:s.
DBUG_ASSERT instead of assert.


mysql-test/r/binlog_killed.result:
  new result file
mysql-test/t/binlog_killed.test:
  regression for bug#22725 simplified. tests for bug27563, BUG#27565 made inactive.
sql/sql_insert.cc:
  DBUG_ASSERT
2007-05-29 16:27:55 +03:00
unknown
9e06efb45c Bug #28605: SHOW CREATE VIEW with views using stored_procedures no
longer showing SP names.
SHOW CREATE VIEW uses Item::print() methods to reconstruct the 
statement text from the parse tree.
The print() method for stored procedure calls needs allocate 
space to print the function's quoted name.
It was incorrectly calculating the length of the buffer needed 
(was too short).
Fixed to reflect the actual space needed.


mysql-test/r/sp.result:
  Bug #28605: test case
mysql-test/t/sp.test:
  Bug #28605: test case
sql/item_func.cc:
  Bug #28605: fixed the string length calculation
2007-05-29 14:45:30 +03:00
unknown
f27bf2b463 Bug#22725 Replication outages from ER_SERVER_SHUTDOWN (1053) set in replication events
The reason for the bug was that replaying of a query on slave could not be possible since its event
was recorded with the killed error. Due to the specific of handling INSERT, which per-row-while-loop is 
unbreakable to killing, the query on transactional table should have not appeared in binlog unless
there was  a call to a stored routine that got interrupted with killing (and then there must be an error
returned out of the loop).
   
The offered solution added the following rule for binlogging of INSERT that accounts the above
specifics:
For INSERT on transactional-table if the error was not set the only raised flag
is harmless and is ignored via masking out on time of creation of binlog event.
   
For both table types the combination of raised error and KILLED flag indicates that there
was potentially partial execution on master and consistency is under the question.
In that case the code continues to binlog an event with an appropriate killed error.
 
The fix relies on the specified behaviour of stored routine that must propagate the error 
to the top level query handling if the thd->killed flag was raised in the routine execution.
   
The patch adds an arg with the default killed-status-unset value to Query_log_event::Query_log_event.


sql/log_event.cc:
  killed_status as the value of thd->killed can be passed as an arg to the constructor.
  if the value is different from the default the arg is set to the current thd->killed value.
  A caller might need to masquerade thd->killed with THD::NOT_KILLED.
  So far only mysql_insert() uses such explicit way to tell the constructor about killing status.
sql/log_event.h:
  default arg to the constructor with meaning of killed status of the query. 
  if the arg is not explicitly provided the status of thd->killed will be snapshot 
  inside of the constuctor, which is potentially incorrect (see bug#27571)
sql/sql_class.h:
  extending killed_state with no-state member.
sql/sql_insert.cc:
  ignore the KILLED flag incl KILL_BAD_DATA when the INSERT query event 
  is created without an `error';
sql/sql_update.cc:
  Suggestion how to fix bug#27571 as comments.
mysql-test/r/binlog_killed.result:
  new result file
mysql-test/t/binlog_killed.test:
  regression tests also apply for bug27563, BUG#27565
2007-05-28 22:20:22 +03:00
unknown
8046747c62 Merge mskold@bk-internal.mysql.com:/home/bk/mysql-5.0-ndb
into  mysql.com:/windows/Linux_space/MySQL/mysql-5.0-ndb


sql/handler.cc:
  Auto merged
sql/ha_ndbcluster.cc:
  Merge
2007-05-28 15:23:28 +02:00
unknown
b1a5f427bc Bug #28719: multi pk update ignore corrupts data
- check multi update as well as update
- this bug is not present in 5.0, but execution patch is wrong, so there are probably other bugs


mysql-test/r/ndb_basic.result:
  Bug #28719: multi pk update ignore corrupts data
  - add test + backport some tests from 5.1
mysql-test/t/ndb_basic.test:
  Bug #28719: multi pk update ignore corrupts data
  - add test + backport some tests from 5.1
2007-05-28 13:23:11 +02:00
unknown
8358a0c7c7 Merge polly.local:/home/kaa/src/maint/bug28121/my50-bug28121
into  polly.local:/home/kaa/src/maint/mysql-5.0-maint


sql/field.cc:
  Auto merged
sql/field.h:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
strings/strtod.c:
  Auto merged
2007-05-28 14:34:36 +04:00
unknown
e3af3c2127 Fix for bug #28121 "INSERT or UPDATE into DOUBLE(200,0) field being truncated to 31 digits"
When storing a large number to a FLOAT or DOUBLE field with fixed length, it could be incorrectly truncated if the field's length was greater than 31.

This patch also does some code cleanups to be able to reuse code which is common between Field_float::store() and Field_double::store().


include/m_string.h:
  Added declarations for log_10 and log_01 from strtod.c
mysql-test/r/type_float.result:
  Added the testcase for bug #28121 "INSERT or UPDATE into DOUBLE(200,0) field being truncated to 31 digits"
mysql-test/t/type_float.test:
  Added the testcase for bug #28121 "INSERT or UPDATE into DOUBLE(200,0) field being truncated to 31 digits"
sql/field.cc:
  Moved common code from Field_float::store() and Field_double:store() to Field_real::truncate()
  Fixed the algorithm to not truncate large input numbers if the field length is greater than 31.
  Fixed rounding to not depend on FLT_MAX/DBL_MAX constants.
sql/field.h:
  Moved not_fixed member from Field_double to Field_real to allow code reuse between Field_float::store() and Field_double::store()
  Added truncate() method to Field_real which is used by both Field_float and Field_double
sql/init.cc:
  log_10[] and log_01[] are now defined as statical arrays in strtod.c, no need to pre-computed them.
sql/item_cmpfunc.cc:
  log_01[] now starts from 1e0, not from 1e-1 for consistency.
sql/mysql_priv.h:
  Moved log_10[] and log_01[] from mysqld.cc to libmystrings.
sql/mysqld.cc:
  Moved log_10[] and log_01[] from mysqld.cc to libmystrings.
strings/strtod.c:
  Define and use log_10[] and log_01[] as static arrays of constants instead of values pre-computed at startup.
2007-05-28 12:44:59 +04:00
unknown
9f757559ee Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.0-rpl
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge


mysql-test/mysql-test-run.pl:
  Auto merged
mysql-test/t/disabled.def:
  Auto merged
sql/sql_load.cc:
  Auto merged
2007-05-28 09:21:42 +02:00
unknown
11dd353e12 Merge bk-internal.mysql.com:/data0/bk/mysql-5.0
into  bk-internal.mysql.com:/data0/bk/mysql-5.0-opt


client/mysqldump.c:
  Auto merged
mysql-test/r/mysqldump.result:
  Auto merged
mysql-test/r/ps_2myisam.result:
  Auto merged
mysql-test/r/ps_3innodb.result:
  Auto merged
mysql-test/r/ps_4heap.result:
  Auto merged
mysql-test/r/ps_5merge.result:
  Auto merged
mysql-test/r/ps_6bdb.result:
  Auto merged
mysql-test/r/ps_7ndb.result:
  Auto merged
sql/field.h:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/my_decimal.h:
  Auto merged
sql/sql_base.cc:
  Auto merged
2007-05-28 00:05:38 +02:00
unknown
90484de3f7 Fixed bug #28571. Outer join queries with ON conditions over
constant outer tables did not return null complemented
rows when conditions were evaluated to FALSE.
Wrong results were returned because the conditions over constant
outer tables, when being pushed down, were erroneously enclosed 
into the guard function used for WHERE conditions.


mysql-test/r/join_outer.result:
  Added a test case for bug #28571.
mysql-test/t/join_outer.test:
  Added a test case for bug #28571.
sql/sql_select.cc:
  Fixed bug #28571. Outer join queries with ON conditions over
  constant outer tables did not return null complemented
  rows when conditions were evaluated to FALSE.
  Wrong results were returned because the conditions over constant
  outer tables, when being pushed down, were erroneously enclosed 
  into the guard function used for WHERE conditions.
  The problem is fixed in the function make_join_select. Now the
  conditions over constant tables from ON expressions are pushed
  down after the conditions from WHERE has been pushed down.
2007-05-26 10:33:01 -07:00
unknown
a2051ec57c Merge gshchepa@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  gleb.loc:/home/uchum/work/bk/mysql-5.0-opt
2007-05-25 21:27:34 +05:00
unknown
c326457d78 Fixed bug #28522:
sometimes `mysqldump --hex-blob' overruned output buffer by '\0' byte.

The dump_table() function has been fixed to reserve 1 byte more for the
last '\0' byte of dumped string.


client/mysqldump.c:
  Fixed bug #28522.
  The dump_table() function has been fixed to reserve 1 byte more for the
  last '\0' byte of dumped string.
mysql-test/t/mysqldump.test:
  Updated test case for bug #28522.
mysql-test/r/mysqldump.result:
  Updated test case for bug #28522.
2007-05-25 17:24:17 +05:00
unknown
26b4a7db2c Merge mysql.com:/home/ram/work/mysql-5.0-maint
into  mysql.com:/home/ram/work/b26842/b26842.5.0
2007-05-25 11:13:32 +05:00
unknown
33f40d86e1 Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug28561
2007-05-24 16:16:19 -07:00
unknown
c8236f564c Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  vajra.(none):/opt/local/work/mysql-5.0-runtime


sql/mysql_priv.h:
  Auto merged
sql/sql_base.cc:
  Auto merged
2007-05-24 19:23:52 +04:00
unknown
7be03ef01f Merge mysql.com:/home/ram/work/mysql-5.0-maint
into  mysql.com:/home/ram/work/b28464.new/b28464.new.5.0


sql/item.h:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
sql/item.cc:
  SCCS merged
2007-05-24 20:21:04 +05:00
unknown
3791e35f79 Fix for
bug #26842: master binary log contains invalid queries - replication fails
bug #12826: Possible to get inconsistent slave using SQL syntax Prepared Statements

Problem:  
binlogging PS' we may produce syntacticly incorrect queries in the binlog replacing 
some parameters with variable names (instead of variable values).
E.g. in the reported case of "limit ?" clause: replacing "?" with "@var"
produces "limit @var" which is not a correct SQL syntax. 
Also it may lead to different query execution on slave if we
set and use a variable in the same statement, e.g.
"insert into t1 values (@x:=@x+1, ?)"

Fix: make the stored statement string created upon its execution use variable values
(instead of names) to fill placeholders.


mysql-test/r/ctype_cp932_binlog.result:
  Fix for
  bug #26842: master binary log contains invalid queries - replication fails
  bug #12826: Possible to get inconsistent slave using SQL syntax Prepared Statements
    - result adjusted.
mysql-test/r/ctype_cp932_notembedded.result:
  Fix for
  bug #26842: master binary log contains invalid queries - replication fails
  bug #12826: Possible to get inconsistent slave using SQL syntax Prepared Statements
    - result adjusted.
mysql-test/r/rpl_user_variables.result:
  Fix for
  bug #26842: master binary log contains invalid queries - replication fails
  bug #12826: Possible to get inconsistent slave using SQL syntax Prepared Statements
    - test result.
mysql-test/t/ctype_cp932_binlog.test:
  Fix for
  bug #26842: master binary log contains invalid queries - replication fails
  bug #12826: Possible to get inconsistent slave using SQL syntax Prepared Statements
    - test adjusted.
mysql-test/t/rpl_user_variables.test:
  Fix for
  bug #26842: master binary log contains invalid queries - replication fails
  bug #12826: Possible to get inconsistent slave using SQL syntax Prepared Statements
    - test case.
sql/sql_prepare.cc:
  Fix for
  bug #26842: master binary log contains invalid queries - replication fails
  bug #12826: Possible to get inconsistent slave using SQL syntax Prepared Statements
    - set val to the variable's value (escaped if needed) then insert it into the query
      string in the position of the placeholder. We don't need to call
      get_var_with_binlog() here as there is no trace of the variable's name in the binlog.
2007-05-24 15:35:43 +05:00
unknown
e079e20499 Merge pilot.blaudden:/home/msvensson/mysql/bug27438/my50-bug27438
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
2007-05-24 12:04:03 +02:00
unknown
48af05a8e9 Fixed bug #28561: assertion abort for update on multi-table view with
CHECK OPTION and a subquery in WHERE condition.
The abort was triggered by setting the value of join->tables for
subqueries in the function JOIN::cleanup. This function was called
after an invocation of the JOIN::join_free method for subqueries
used in WHERE condition.


mysql-test/r/view.result:
  Added a test case for bug #28561.
mysql-test/t/view.test:
  Added a test case for bug #28561.
sql/sql_select.cc:
  Fixed bug #28561: assertion abort for update on multi-table view with
  CHECK OPTION and a subquery in WHERE condition.
  The abort was triggered by setting the value of join->tables for
  subqueries in the function JOIN::cleanup. This function was called
  after an invocation of the JOIN::join_free method for subqueries
  used in WHERE condition.
  Setting the value of join->tables to for a subquery created serious
  problems for checking WHERE condition after update of the multi-table
  view as this check is performed in the do_select function right
  after a call of the JOIN::join_free method.
  In fact setting join->tables to 0 in JOIN::cleanup is not needed 
  anywhere in the current code.
2007-05-23 19:04:12 -07:00
unknown
c57d6f729d Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/27563-bug-5.0-opt-mysql


sql/item_func.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sql_base.cc:
  Auto merged
2007-05-23 23:31:33 +04:00
unknown
1734b4e990 Bug#27563: Stored functions and triggers wasn't throwing an error when killed.
If a stored function or a trigger was killed it had aborted but no error
was thrown. This allows the caller statement to continue without a notice.
This may lead to a wrong data being inserted/updated to/deleted as in such
cases the correct result of a stored function isn't guaranteed. In the case
of triggers it allows the caller statement to ignore kill signal and to
waste time because of re-evaluation of triggers that always will fail
because thd->killed flag is still on.

Now the Item_func_sp::execute() and the sp_head::execute_trigger() functions
check whether a function or a trigger were killed during execution and
throws an appropriate error if so.
Now the fill_record() function stops filling record if an error was reported
through thd->net.report_error.


sql/item_func.cc:
  Bug#27563: Stored functions and triggers wasn't throwing an error when killed.
  Now the Item_func_sp::execute() function checks whether a trigger was killed
  during execution and throws an appropriate error if so.
sql/sp_head.cc:
  Bug#27563: Stored functions and triggers wasn't throwing an error when killed.
  Now the sp_head::execute_trigger() function checks whether a function was
  killed during execution and throws an appropriate error if so.
sql/sql_base.cc:
  Bug#27563: Stored functions and triggers wasn't throwing an error when killed.
  Now the fill_record() function stops filling record if an error was reported
  through thd->net.report_error.
mysql-test/r/kill.result:
  Added a test case for the bug#27563: Stored functions and triggers wasn't
  throwing an error when killed.
mysql-test/t/kill.test:
  Added a test case for the bug#27563: Stored functions and triggers wasn't
  throwing an error when killed.
2007-05-23 23:24:16 +04:00
unknown
8998080a37 Bug #28250: Run-Time Check Failure #3 - The variable 'value' is
being used without being def

Inside method Item_func_unsigned::val_int, the variable value 
can be returned without being initialized when the CAST argument
is of type DECIMAL and has a NULL value. This gives a run-time 
error when building debug binaries using Visual C++ 2005.

Solution: Initialize value to 0


mysql-test/t/cast.test:
  bug#28250: There is no need for an extra test case, but we
  recognize that this one catches the bug.
sql/item_func.cc:
  bug#28250: initialization of value.
2007-05-23 14:43:06 +02:00
unknown
f9d7642e7b 5.0 version of fix for:
Bug #23667 "CREATE TABLE LIKE is not isolated from alteration
             by other connections"
 Bug #18950 "CREATE TABLE LIKE does not obtain LOCK_open"
As well as:
 Bug #25578 "CREATE TABLE LIKE does not require any privileges
             on source table".

The first and the second bugs resulted in various errors and wrong
binary log order when one tried to execute concurrently CREATE TABLE LIKE
statement and DDL statements on source table or DML/DDL statements on its
target table.

The problem was caused by incomplete protection/table-locking against
concurrent statements implemented in mysql_create_like_table() routine.
We solve it by simply implementing such protection in proper way (see
comment for sql_table.cc for details).

The third bug allowed user who didn't have any privileges on table create
its copy and therefore circumvent privilege check for SHOW CREATE TABLE.

This patch solves this problem by adding privilege check, which was missing.

Finally it also removes some duplicated code from mysql_create_like_table().

Note that, altough tests covering concurrency-related aspects of CREATE TABLE
LIKE behaviour will only be introduced in 5.1, they were run manually for
this patch as well.


mysql-test/r/grant2.result:
  Added test for bug#25578 "CREATE TABLE LIKE does not require any privileges
  on source table".
mysql-test/t/grant2.test:
  Added test for bug#25578 "CREATE TABLE LIKE does not require any privileges
  on source table".
sql/handler.h:
  Introduced new flag for HA_CREATE_INFO::options in order to be able to
  distinguish CREATE TABLE ... LIKE from other types of CREATE TABLE.
sql/mysql_priv.h:
  mysql_create_like_table() now takes source table name not as a
  Table_ident object but as regular table list element.
sql/sql_parse.cc:
  CREATE TABLE ... LIKE implementation now uses statement's table list
  for storing information about the source table. We also use flag
  in LEX::create_info.options for distinguishing it from other types
  of CREATE TABLE.
  Finally CREATE TABLE ... LIKE now requires the same privileges on
  the source tables as SHOW CREATE TABLE. Moved this privilege check
  to check_show_create_table_access() function.
sql/sql_table.cc:
  mysql_create_like_table():
   - Provided proper protection from concurrent statements.
     This is achieved by keeping name-lock on the source table and holding
     LOCK_open mutex during whole operation. This gives protection against
     concurrent DDL on source table. Also holding this mutex makes copying
     of .frm file, call to ha_create_table() and binlogging atomic against
     concurrent DML and DDL operations on target table.
   - Get rid of duplicated code related to source database/table name
     handling. All these operations are already done in
     st_select_lex::add_table_to_list(), so we achieve the same effect
     by including source table into the statement's table list.
sql/sql_yacc.yy:
  Now we use special flag in LEX::create_info::options for distinguishing
  CREATE TABLE ... LIKE from other types of CREATE TABLE and store name
  of source table as regular element in statement's table list.
2007-05-23 15:22:13 +04:00
unknown
e6f1c2dd14 Merge mysql.com:/home/ram/work/mysql-5.0-maint
into  mysql.com:/home/ram/work/b28509/b28509.5.0


mysql-test/r/ps.result:
  Auto merged
mysql-test/t/ps.test:
  Auto merged
sql/item.cc:
  Auto merged
2007-05-23 13:48:31 +05:00
unknown
adef673652 Merge mysql.com:/home/svoj/devel/bk/mysql-5.0
into  mysql.com:/home/svoj/devel/mysql/merge/mysql-5.0-engines
2007-05-23 12:39:33 +05:00
unknown
e5b2adeac1 Merge mysql.com:/home/svoj/devel/bk/mysql-4.1
into  mysql.com:/home/svoj/devel/mysql/merge/mysql-4.1-engines
2007-05-23 12:38:34 +05:00
unknown
f7f593ae7d Merge mhansson@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  dl145s.mysql.com:/users/mhansson/mysql/autopush/mysql-5.0o-pushee


sql/sql_select.cc:
  Auto merged
2007-05-22 18:30:23 +02:00
unknown
13cf5bddd8 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B28476-5.0-opt


sql/sql_base.cc:
  Auto merged
sql/table.h:
  Auto merged
2007-05-22 17:05:33 +03:00
unknown
3332b80130 Bug #28476: force index on a disabled myisam index gives error 124
When processing the USE/FORCE index hints
the optimizer was not checking if the indexes 
specified are enabled (see ALTER TABLE).
Fixed by:
 Backporting the fix for bug 20604 to 5.0


mysql-test/r/key.result:
  Test for BUG 20604.
  The important part of the test is the explain output that 
  tests what indexes are used.
mysql-test/r/myisam.result:
  Bug #28476: test cases
mysql-test/t/key.test:
  Bug 20604: 
  The minimal test case that reveals the bug. The optimizer for 
  aggregates relies on keys disabled with ALTER TABLE ... DISABLE KEYS
  not being in the set TABLE::keys_in_use_for_query.
  When the execution engine tries to use a disabled index, MyISAM
  returns an error.
mysql-test/t/myisam.test:
  Bug #28476: test cases
sql/sql_base.cc:
  Bug #28476: 
   - Ignore disabled indexes in USE/FORCE index
sql/sql_select.cc:
  Bug 20604 : The intersection operation between table->s->keys_in_use 
  and table->keys_in_use_for_query is no longer necessary.
  We can trust that the latter is a subset of the former.
sql/table.h:
  Bug 20604:
  Added comments to TABLE_SHARE::keys_in_use and
  TABLE::keys_in_use_for_query.
2007-05-22 15:58:30 +03:00
unknown
3c76d36956 Merge dl145s.mysql.com:/users/mhansson/mysql/push/bug23856/my50-bug23856
into  dl145s.mysql.com:/users/mhansson/mysql/push/bug23856/mysql-5.0o-pushee


sql/item_sum.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
mysql-test/r/func_gconcat.result:
  Bug#23856: Manually merged
mysql-test/t/func_gconcat.test:
  Bug#23856: Manually merged
2007-05-22 14:48:49 +02:00
unknown
f3b78f34e5 Bug#27507: Wrong DATETIME value was allowed by ALTER TABLE in the NO_ZERO_DATE
mode.

When a new DATE/DATETIME field without default value is being added by the
ALTER TABLE the '0000-00-00' value is used as the default one. But it wasn't
checked whether such value was allowed by the set sql mode. Due to this
'0000-00-00' values was allowed for DATE/DATETIME fields even in the
NO_ZERO_DATE mode.

Now the mysql_alter_table() function checks whether the '0000-00-00' value
is allowed for DATE/DATETIME fields by the set sql mode.
The new error_if_not_empty flag is used in the mysql_alter_table() function
to indicate that it should abort if the table being altered isn't empty.
The new new_datetime_field field is used in the mysql_alter_table() function
for error throwing purposes. 
The new error_if_not_empty parameter is added to the copy_data_between_tables()
function to indicate the it should return error if the source table isn't empty.


mysql-test/t/alter_table.test:
  Added a test case for the bug#27507: Wrong DATETIME value was allowed by
  ALTER TABLE in the NO_ZERO_DATE mode.
mysql-test/r/alter_table.result:
  Added a test case for the bug#27507: Wrong DATETIME value was allowed by
  ALTER TABLE in the NO_ZERO_DATE mode.
sql/sql_table.cc:
  Bug#27507: Wrong DATETIME value was allowed by ALTER TABLE in the NO_ZERO_DATE
  mode.
  Now the mysql_alter_table() function checks whether the '0000-00-00' value
  is allowed for DATE/DATETIME fields by the set sql mode.
  The new error_if_not_empty flag is used in the mysql_alter_table() function
  to indicate that it should abort if the table being altered isn't empty.
  The new new_datetime_field field is used in the mysql_alter_table() function
  for error throwing purposes. 
  The new error_if_not_empty parameter is added to the copy_data_between_tables()
  function to indicate the it should return error if the source table isn't empty.
2007-05-22 00:22:53 +04:00
unknown
221e23ad72 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/50
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/50


configure.in:
  Auto merged
mysql-test/r/strict.result:
  Auto merged
mysql-test/r/type_datetime.result:
  Auto merged
mysql-test/t/type_datetime.test:
  Auto merged
sql/item.cc:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
2007-05-21 20:50:08 +02:00
unknown
ea263c4a4d Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/41
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/41
2007-05-21 20:49:24 +02:00
unknown
741bbb75ad Merge bk@192.168.21.1:mysql-5.0-opt
into  mysql.com:/home/hf/work/27984/my50-27984


mysql-test/r/type_newdecimal.result:
  merging
mysql-test/t/type_newdecimal.test:
  merging
2007-05-21 22:28:50 +05:00
unknown
cfb9378b3d Bug #27984 Long Decimal Maths produces truncated results.
decimal_round failed to perform a correct rounding 
of a decimal number if its first nine digits were '9'.
It just sets those digits to 0.


mysql-test/r/type_newdecimal.result:
  Bug #27984 Long Decimal Maths produces truncated results.
  test result
mysql-test/t/type_newdecimal.test:
  Bug #27984 Long Decimal Maths produces truncated results.
  test case
strings/decimal.c:
  Bug #27984 Long Decimal Maths produces truncated results.
  when to == from we break the data if we do to->buf[0]=0
  So now doing this after the data is moved and only
  if we really need to set to->buf[0] to zero
2007-05-21 22:22:47 +05:00
unknown
f0f783786d Bug#27438 rpl_rotate_logs fails on Windows
- Fix test case to work also when filesystem time differs
   from mysqld' time. I.e when running with data files on a
   network share.


mysql-test/r/rpl_rotate_logs.result:
  Update result file
mysql-test/t/rpl_rotate_logs.test:
  Calculate time to use in "purge master logs before" by taking
  last modification time of t2 and adding 1 second
  This is done in order to handle the case where file system time differs
  from mysqld's time
2007-05-21 11:33:58 +02:00
unknown
84966af9fc bug#23856 2007-05-21 10:27:33 +02:00
unknown
330a82f066 Merge macbook:mysql/work/B22855-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/work/B22855-5.0-opt


sql/item_subselect.cc:
  Auto merged
mysql-test/r/subselect3.result:
  manual merge
mysql-test/t/subselect3.test:
  manual merge
2007-05-21 10:21:55 +03:00
unknown
59a7e066e3 bug #28361 Buffer overflow in DECIMAL code on Windows
my_decimal in some cases can contain more decimal digits than
is officially supported (DECIMAL_MAX_PRECISION), so we need to
prepare bigger buffer for the resulting string.


mysql-test/r/type_newdecimal.result:
  bug #28361 Buffer overflow in DECIMAL code on Windows
  test result
mysql-test/t/type_newdecimal.test:
  bug #28361 Buffer overflow in DECIMAL code on Windows
  test case
  This test case doesn't fall in most cases even without the fix
  Still valgrind shows the problemn
sql/my_decimal.h:
  bug #28361 Buffer overflow in DECIMAL code on Windows
  DECIMAL_MAX_POSSIBLE_PRECISION introduced to be used in places,
  when we need to check for the number of digits technicaly possible
  in my_decimal.
  DECIMAL_MAX_STR_LENGTH fixed as it has to fit for the MAX_POSSIBLE_PRECISION
2007-05-20 21:22:57 +05:00