Commit graph

21823 commits

Author SHA1 Message Date
unknown
ee7519a5d5 Merge sita.local:/Users/tsmith/m/bk/41
into  sita.local:/Users/tsmith/m/bk/maint/41
2007-07-09 01:21:22 -06:00
unknown
dabd3c9724 Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  sita.local:/Users/tsmith/m/bk/maint/50
2007-07-09 01:14:33 -06:00
unknown
82ac789172 Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB
dollin' it up for Guilhem ;) -- test streamlined,
better comments, faster code, add'l assert.


mysql-test/r/binlog.result:
  Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB
  
  streamlined test
mysql-test/t/binlog.test:
  Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB
  
  streamlined test
sql/log.cc:
  Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB
  
  comment clarified
2007-07-09 08:11:38 +02:00
unknown
b99786754f Merge mysql.com:/home/ram/work/b28808/b28808.5.0
into  mysql.com:/home/ram/work/b28808/b28808.5.1


sql/mysqld.cc:
  Auto merged
sql/unireg.h:
  Auto merged
mysql-test/t/show_check.test:
  merging
sql/sql_parse.cc:
  merging
2007-07-09 10:20:45 +05:00
unknown
0d177e16d0 Merge mysql.com:/home/ram/work/mysql-5.0-maint
into  mysql.com:/home/ram/work/b28808/b28808.5.0
2007-07-09 10:17:04 +05:00
unknown
e5da88af78 Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  sita.local:/Users/tsmith/m/bk/maint/50
2007-07-08 19:39:54 -06:00
unknown
36896fa844 Merge gshchepa@bk-internal.mysql.com:/home/bk/mysql-5.1-opt
into  gleb.loc:/home/uchum/work/bk/5.1-opt


sql/field.cc:
  Auto merged
2007-07-08 11:48:57 +05:00
unknown
f045039d86 Merge gshchepa@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-07-08 11:46:52 +05:00
unknown
f818654705 Post-merge fix. 2007-07-07 20:03:00 -07:00
unknown
2e5be55ae9 Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.1-opt


sql/field.cc:
  Auto merged
mysql-test/r/type_newdecimal.result:
  Manual merge
sql/item_create.cc:
  Manual merge
mysql-test/t/type_newdecimal.test:
  Manual merge.
2007-07-07 17:29:19 -07:00
unknown
3561de50b1 Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug29417


mysql-test/r/type_newdecimal.result:
  Manual merge.
mysql-test/t/type_newdecimal.test:
  Manual merge.
2007-07-07 15:45:28 -07:00
unknown
7ec0820b19 Merge gshchepa@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-07-08 03:40:01 +05:00
unknown
5e25d08e05 Merge gleb.loc:/home/uchum/work/bk/5.1
into  gleb.loc:/home/uchum/work/bk/5.1-opt


mysql-test/r/innodb_mysql.result:
  Auto merged
sql/sql_partition.cc:
  Auto merged
mysql-test/include/mix1.inc:
  Merge with 5.1 (main).
2007-07-08 01:27:07 +05:00
unknown
0671e30ae6 Fixed bug #29417.
An assertion abort could occur for some grouping queries that employed 
decimal user variables with assignments to them.

The problem appeared the constructors of the class Field_new_decimal
because the function my_decimal_length_to_precision did not guarantee
returning decimal precision not greater than DECIMAL_MAX_PRECISION.


mysql-test/r/type_newdecimal.result:
  Added a test case for bug #29417.
mysql-test/t/type_newdecimal.test:
  Added a test case for bug #29417.
sql/field.cc:
  Fixed bug #29417.
  An assertion abort could occur for some grouping queries that employed 
  decimal user variables with assignments to them.
  
  The problem appeared the constructors of the class Field_new_decimal
  because the function my_decimal_length_to_precision did not guarantee
  returning decimal precision not greater than DECIMAL_MAX_PRECISION.
  
  Now if the precision returned by calls to my_decimal_length_to_precision
  in the constructors of the class Field_new_decimal is greater than 
  DECIMAL_MAX_PRECISION the precision is set to this value.
2007-07-07 12:31:55 -07:00
unknown
16fc3a2771 Merge gleb.loc:/home/uchum/work/bk/5.0
into  gleb.loc:/home/uchum/work/bk/5.0-opt


mysql-test/r/innodb_mysql.result:
  Auto merged
mysql-test/t/innodb_mysql.test:
  Merge with 5.0 (main).
2007-07-08 00:19:31 +05:00
unknown
3756819e4b Fixed bug #29415.
The cast operation ignored the cases when the precision and/or the scale exceeded
the limits, 65 and 30 respectively. No errors were reported in these cases.
For some queries this may lead to an assertion abort.

Fixed by throwing errors for such cases.


mysql-test/r/type_newdecimal.result:
  Added a test case for bug #29415.
mysql-test/t/type_newdecimal.test:
  Added a test case for bug #29415.
2007-07-07 10:33:02 -07:00
unknown
a0336ad7d8 Merge gleb.loc:/home/uchum/work/bk/5.0-opt
into  gleb.loc:/home/uchum/work/bk/5.1-opt


mysql-test/r/gis.result:
  Auto merged
mysql-test/r/view.result:
  Auto merged
mysql-test/t/gis.test:
  Auto merged
mysql-test/t/loaddata.test:
  Auto merged
sql/item.h:
  Auto merged
sql/spatial.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
mysql-test/r/loaddata.result:
  Merge with 5.0-opt.
mysql-test/t/view.test:
  Merge with 5.0-opt.
2007-07-07 20:14:06 +05:00
unknown
5c60418104 Merge mysql.com:/home/ram/work/b29420/b29420.5.0
into  mysql.com:/home/ram/work/b29420/b29420.5.1


sql/sql_repl.cc:
  Auto merged
mysql-test/suite/rpl/r/rpl_rotate_logs.result:
  Auto merged
mysql-test/suite/rpl/t/rpl_rotate_logs.test:
  Auto merged
2007-07-07 12:04:11 +05:00
unknown
efbcbad4df Merge ymer.(none):/usr/local/mysql/mysql-5.0-engines
into  ymer.(none):/usr/local/mysql/mysql-5.1-engines


sql/stacktrace.c:
  Auto merged
BUILD/compile-pentium-gcov:
  Manual merge.
2007-07-07 07:48:43 +02:00
unknown
87e1a302c3 Bug #29543 GCov information not written in case of crash.
For GCov builds, if the server crashes, the normal exit handler for writing
coverage information is not executed due to the abnormal termination.

Fix this by explicitly calling the __gcov_flush function in our crash handler.
2007-07-07 07:46:17 +02:00
unknown
1f1366c4c6 Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-5.0-engines
into  sita.local:/Users/tsmith/m/bk/maint/50
2007-07-06 17:55:46 -06:00
unknown
89688aefcf Merge sita.local:/Users/tsmith/m/bk/50
into  sita.local:/Users/tsmith/m/bk/maint/50
2007-07-06 17:50:01 -06:00
unknown
b1dce946cc Merge acurtis@bk-internal.mysql.com:/home/bk/mysql-5.0
into  ppcg5.local:/private/Network/Servers/anubis.xiphis.org/home/antony/work/mysql-5.0-engines.merge
2007-07-06 14:29:58 -07:00
unknown
09ee3a5ae1 Merge anubis.xiphis.org:/usr/home/antony/work/mysql-5.1-engines
into  anubis.xiphis.org:/usr/home/antony/work/mysql-5.1-engines.merge


include/my_base.h:
  Auto merged
mysql-test/lib/mtr_report.pl:
  Auto merged
mysql-test/r/events_bugs.result:
  Auto merged
mysql-test/r/rpl_sp.result:
  Auto merged
mysql-test/r/show_check.result:
  Auto merged
mysql-test/r/sp.result:
  Auto merged
mysql-test/t/disabled.def:
  Auto merged
mysql-test/t/ndb_single_user.test:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/share/errmsg.txt:
  Auto merged
sql/sql_partition.cc:
  Auto merged
2007-07-06 09:03:50 -07:00
unknown
fec6d3f134 Merge anubis.xiphis.org:/usr/home/antony/work/mysql-5.0-engines
into  anubis.xiphis.org:/usr/home/antony/work/mysql-5.0-engines.merge


sql/sql_insert.cc:
  Auto merged
2007-07-06 09:00:40 -07:00
unknown
a64be676a4 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  bodhi.(none):/opt/local/work/mysql-5.0-runtime


sql/sql_lex.cc:
  Auto merged
sql/sql_lex.h:
  Auto merged
2007-07-06 16:22:11 +04:00
unknown
360a5ebc37 Remove typedef st_table_list TABLE_LIST and always use name 'TABLE_LIST'.
The need arose when working on Bug 26141, where it became
necessary to replace TABLE_LIST with its forward declaration in a few
headers, and this involved a lot of s/TABLE_LIST/st_table_list/.
Although other workarounds exist, this patch is in line
with our general strategy of moving away from typedef-ed names.
Sometime in future we might also rename TABLE_LIST to follow the
coding style, but this is a huge change.


sql/item.cc:
  st_table_list -> TABLE_LIST
sql/item.h:
  st_table_list -> TABLE_LIST
sql/mysql_priv.h:
  st_table_list -> TABLE_LIST
sql/sql_base.cc:
  st_table_list -> TABLE_LIST
sql/sql_lex.cc:
  st_table_list -> TABLE_LIST
sql/sql_lex.h:
  st_table_list -> TABLE_LIST
sql/sql_select.cc:
  st_table_list -> TABLE_LIST
sql/sql_show.cc:
  st_table_list -> TABLE_LIST
sql/sql_udf.h:
  Was not needed.
sql/table.cc:
  st_table_list -> TABLE_LIST
sql/table.h:
  st_table_list -> TABLE_LIST
2007-07-06 16:18:49 +04:00
unknown
4e825803bf Bug #29570 original error lost in write_event on slave
- make sure error gets propagated to thd->net by calling print_error
- also print the full error message
2007-07-06 12:39:03 +02:00
unknown
0b24005753 Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.0
into  labbari.dsl.inet.fi:/home/my/bk/mysql-5.0-marvel


libmysql/libmysql.c:
  Auto merged
mysql-test/r/innodb_mysql.result:
  Manual merge from main 5.1 to 5.1-marvel.
mysql-test/t/innodb_mysql.test:
  Manual merge from main 5.1 to 5.1-marvel.
2007-07-06 09:51:02 +03:00
unknown
8195a213c2 Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug29392


sql/item.h:
  Auto merged
2007-07-05 17:39:51 -07:00
unknown
50373d1ae7 Merge gshchepa@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-07-06 03:49:40 +05:00
unknown
725b49716b Fixed bug #29442.
The SELECT INTO OUTFILE FIELDS ENCLOSED BY digit or minus sign,
followed by the same LOAD DATA INFILE statement, used wrond encoding
of non-string fields contained the enclosed character in their text
representation.

Example:
  SELECT 15, 9 INTO OUTFILE 'text' FIELDS ENCLOSED BY '5';

Old encoded result in the text file:
  5155 595
         ^ was decoded as the 1st enclosing character of the 2nd field;
        ^ was skipped as garbage;
  ^    ^ was decoded as a pair of englosing characters of the 1st field;
      ^   was decoded as traling space of the first field;
    ^^ was decoded as a doubled enclosed character.

New encoded result in the text file:
  51\55 595
  ^   ^ pair of enclosing characters of the 1st field;
    ^^ escaped enclosed character.



sql/sql_class.h:
  Fixed bug #29442.
  The NUMERIC_CHARS macro constant has been defined to enumerate
  all possible characters of a numeric value text representation.
  The select_export::is_unsafe_field_sep boolean flag has been added
  to apply the encoding algorithm to non-string values when it is
  necessary.
sql/sql_class.cc:
  Fixed bug #29442.
  The select_export::send_data method has been modified to encode text
  representation of fields of all data types like string fields.
mysql-test/t/loaddata.test:
  Updated test case for bug #29442.
mysql-test/r/loaddata.result:
  Updated test case for bug #29442.
2007-07-06 03:43:23 +05:00
unknown
6139d34c92 Bug #29166:
AsText() needs to know the maximum number of
characters a IEEE double precision value can
occupy to make sure there's enough buffer space.
The number was too small to hold all possible
values and this caused buffer overruns.
Fixed by correcting the calculation of the 
maximum digits in a string representation of an
IEEE double precision value as printed by 
String::qs_append(double).


mysql-test/r/gis.result:
  Bug #29166: test case
mysql-test/t/gis.test:
  Bug #29166: test case
sql/spatial.cc:
  Bug #29166: correct calculation of the maximum digits in
  a string representation of a double
2007-07-05 18:24:48 +03:00
unknown
32c6341ea8 Fix for bug #28808: log_queries_not_using_indexes variable dynamic change is ignored
Problem: logging queries not using indexes we check a special flag which 
is set only at the server startup and is not changing with a corresponding
server variable together.

Fix: check the variable value instead of the flag.



mysql-test/r/show_check.result:
  Fix for bug #28808: log_queries_not_using_indexes variable dynamic change is ignored
    - test result.
mysql-test/t/show_check.test:
  Fix for bug #28808: log_queries_not_using_indexes variable dynamic change is ignored
    - test case.
sql/mysqld.cc:
  Fix for bug #28808: log_queries_not_using_indexes variable dynamic change is ignored
    - SPECIAL_LOG_QUERIES_NOT_USING_INDEXES is not used anymore.
sql/sql_parse.cc:
  Fix for bug #28808: log_queries_not_using_indexes variable dynamic change is ignored
    - check opt_log_queries_not_using_indexes instead of 
      SPECIAL_LOG_QUERIES_NOT_USING_INDEXES flag.
sql/unireg.h:
  Fix for bug #28808: log_queries_not_using_indexes variable dynamic change is ignored
    - SPECIAL_LOG_QUERIES_NOT_USING_INDEXES is not used anymore.
2007-07-05 15:34:12 +05:00
unknown
26af0b96a8 Bug#26827 - table->read_set is set incorrectly,
causing update of a different column

Post-pushbuild fix.

bitmap_set_bit() is an inline function in DEBUG builds and
a macro in non-DEBUG builds. The latter evaluates its 'bit'
argument twice. So one must not use increment/decrement operators
on this argument.

Moved increment of pointer out of bitmap_set_bit() call.


include/my_bitmap.h:
  Bug#26827 - table->read_set is set incorrectly,
              causing update of a different column
  Added a warning comment.
sql/sql_partition.cc:
  Bug#26827 - table->read_set is set incorrectly,
              causing update of a different column
  Moved increment of pointer out of bitmap_set_bit() call.
2007-07-05 11:31:03 +02:00
unknown
0d8f353b93 Fix for bug #29420: crash with show and purge binlogs
Problem: in case of failed 'show binlog events...' we don't inform that 
the log is not in use anymore. That may confuse following 'purge logs...'
command as it takes into account logs in use.

Fix: always notify that the log is not in use anymore.


mysql-test/r/rpl_rotate_logs.result:
  Fix for bug #29420: crash with show and purge binlogs
    - test result.
mysql-test/t/rpl_rotate_logs.test:
  Fix for bug #29420: crash with show and purge binlogs
    - test case.
sql/sql_repl.cc:
  Fix for bug #29420: crash with show and purge binlogs
    - always zero thd->current_linfo at the end of the mysql_show_binlog_events().
2007-07-05 13:09:56 +05:00
unknown
e8966deecc A fix and a test case for Bug#29050 Creation of a legal stored procedure
fails if a database is not selected prior.

The problem manifested itself when a user tried to
create a routine that had non-fully-qualified identifiers in its bodies
and there was no current database selected.

This is a regression introduced by the fix for Bug 19022:

The patch for Bug 19022 changes the code to always produce a warning
if we can't resolve the current database in the parser. 
In this case this was not necessary, since even though the produced
parsed tree was incorrect, we never re-use sphead
that was obtained at first parsing of CREATE PROCEDURE.
The sphead that is anyhow used is always obtained through db_load_routine,
and there we change the current database to sphead->m_db before
calling yyparse.

The idea of the fix is to resolve the current database directly using 
lex->sphead->m_db member when parsing a stored routine body, when
such is present.

This patch removes the need to reset the current database
when loading a trigger or routine definition into SP cache.
The redundant code will be removed in 5.1.


mysql-test/r/sp.result:
  Update test results (Bug#29050)
mysql-test/r/trigger.result:
  Update results.
mysql-test/t/sp.test:
  Add a test case for Bug#29050
mysql-test/t/trigger.test:
  Fix wrong behavior covered with tests.
sql/sql_lex.cc:
  Implement st_lex::copy_db_to().
sql/sql_lex.h:
  Declare st_lex::copy_db_to().
sql/sql_parse.cc:
  Use st_lex::copy_db_to() in add_table_to_list, rather than
  THD::copy_db_to(). The former will use the database of the sphead,
  if we're parsing a stored routine, not the default database in
  THD. The default database is needed to initialize tables->db
  when the database part was not explicitly specified in the identifier.
sql/sql_yacc.yy:
  Use st_lex::copy_db_to() in the parser, rather than
  THD::copy_db_to(). The former will use the database of the sphead,
  if we're parsing a stored routine, not the default database in
  THD.
2007-07-05 11:34:04 +04:00
unknown
5d88b654ed Fixed bug #29392.
This bug may manifest itself for select queries over a multi-table view
that includes an ORDER BY clause in its definition. If the select list of 
the query contains references to the same view column with different
aliases the names of the columns in the result output will be nevertheless
the same, coinciding with one of the alias.

The bug happened because the method Item_ref::get_tmp_table_item that
was inherited by the class Item_direct_view_ref ignored the fact that
the name of the view column reference must be inherited by the fields
of the temporary table that was created in order to get the result rows
sorted.


mysql-test/r/view.result:
  Added a test case for bug #29392.
mysql-test/t/view.test:
  Added a test case for bug #29392.
sql/item.h:
  Fixed bug #29392.
  This bug may manifest itself for select queries over a multi-table view
  that includes an ORDER BY clause in its definition. If the select list of 
  the query contains references to the same view column with different
  aliases the names of the columns in the result output will be nevertheless
  the same, coinciding with one of the alias.
  
  The bug happened because the method Item_ref::get_tmp_table_item that
  was inherited by the class Item_direct_view_ref ignored the fact that
  the name of the view column reference must be inherited by the fields
  of the temporary table that was created in order to get the result rows
  sorted.
  
  Fixed by providing a proper implementation of the get_tmp_table_item 
  method for the Item_direct_view_ref class.
2007-07-04 21:12:07 -07:00
unknown
bd8b9746bf WL#3914: Additonal accessors required to compile InnoDB as a plugin storage engine
Add more accessors to MySQL internals in mysql/plugin.h, for storage
engine plugins.

Add some accessors specific to the InnoDB storage engine, to allow
InnoDB to be compiled as a plugin (without MYSQL_SERVER).  InnoDB
has additional requirements, due to its foreign key support, etc.


include/m_string.h:
  Add structure tag to LEX_STRING definition, so that it can be referred
  to by forward declarations.  Allow struct st_mysql_lex_string to be
  defined here, or in mysql/plugin.h.
include/my_global.h:
  Define INNODB_COMPATIBILITY_HOOKS unconditionally; it brackets
  some definitions needed for the InnoDB storage engine plugin
  which do not belong in our general plugin interface.
include/mysql/plugin.h:
  Additional accessors for MySQL internals:
   
  - Full definition of MYSQL_LEX_STRING (identical to LEX_STRING from
    m_string.h)
  - Full definition of MYSQL_XID (binary compatible with XID from
    handler.h)
  - mysql_tmpfile(), creates a temporary file in mysqld's tmpdir
  - thd_killed(), to check killed state of connection
  - thd_alloc() and similar allocation functions
  - thd_get_xid(), to get XID of connection's transaction
  - mysql_query_cache_invalidate4, to invalidate a table's query cache entries
sql/handler.h:
  Use MYSQL_XIDDATASIZE definition from mysql/plugin.h, to avoid redundant
  definitions
sql/log.cc:
  Add definitions for two InnoDB compatibility hooks:
  - mysql_bin_log_file(), to get log filename
  - mysql_bin_log_file_pos, to get position in file
    
  These are defined only if INNODB_COMPATIBILITY_HOOKS is defined;
  they are needed by the InnoDB plugin, but aren't part of the general
  plugin interface.  They are declared in ha_innodb.h for InnoDB's
  use.
sql/mysql_priv.h:
  Expose some server internals when INNODB_COMPATIBILITY_HOOKS is
  defined, so that InnoDB can be built as a plugin when MYSQL_SERVER
  is not defined.
    
  Move make_lex_string inside THD class.
sql/sql_cache.cc:
  Add definiton of mysql_query_cache_invalidate4(), a part of the
  plugin API (mysql/plugin.h).
sql/sql_class.cc:
  Add definitions for several accessor functions which form part
  of the plugin API (mysql/plugin.h):
  - mysql_tmpfile()
  - thd_alloc() and friends
  - thd_make_lex_string()
  - thd_get_xid()
   
  Add definitons for accessor functions which InnoDB requires,
  but which are not part of the plugin interface:
  - thd_charset()
  - thd_query()
  - thd_slave_thread()
  - thd_non_transactional_update()
  - thd_binlog_format()
   
  Move definition of make_lex_string() from sql_show.cc into THD class
sql/sql_class.h:
  Remove LEX_STRING_make(), and move make_lex_string() from sql_show.cc inside THD
  class.
sql/sql_parse.cc:
  Use thd->make_lex_string() instead of thd->LEX_STRING_make()
sql/sql_show.cc:
  Move make_lex_string() inside THD class
storage/innobase/handler/ha_innodb.cc:
  Call thd_make_lex_string() instead of make_lex_string().
2007-07-05 01:05:47 +02:00
unknown
95c5287664 Merge gleb.loc:/home/uchum/work/bk/5.1
into  gleb.loc:/home/uchum/work/bk/5.1-opt


sql/item.h:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_partition.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2007-07-05 03:37:41 +05:00
unknown
e0f93ca8c1 Merge gleb.loc:/home/uchum/work/bk/5.0
into  gleb.loc:/home/uchum/work/bk/5.0-opt


sql/sql_class.h:
  Auto merged
2007-07-05 03:34:56 +05:00
unknown
285acf57ea Merge gleb.loc:/home/uchum/work/bk/5.0-opt
into  gleb.loc:/home/uchum/work/bk/5.1-opt


sql/sql_show.cc:
  Auto merged
2007-07-05 03:30:54 +05:00
unknown
b1ec3b534d A fix and a teset case for Bug#28551 The warning
'No database selected' is reported when calling stored procedures

Remove the offending warning introduced by the fix for Bug
25082
This minimal patch relies on the intrinsic knowledge of the fact that
mysql_change_db is never called with 'force_switch' set to TRUE
when such a warning may be needed:
 * every stored routine belongs to a database (unlike, e.g., a 
user defined function, which does not), so if we're activating the
database of a stored routine, it can never be NULL.
Therefore, this branch is never called for activation.
 * if we're restoring the 'old' current database after routine
execution is complete, we should not issue a warning, since it's OK to 
call a routine without having previously selected the current database.

TODO: 'force_switch' is an ambiguous flag, since we do not actually
have to 'force' the switch in case of stored routines at all.
When we activate the routine's database, we should perform
all the checks as in case of 'use db', and so we already do (in this
case 'force_switch' is unused).
When we load a routine into cache, we should not use mysql_change_db
at all, since there it's enough to call thd->reset_db(). We
do it this way for triggers, but code for routines is different (wrongly). 

TODO: bugs are lurking in replication, since it bypasses mysql_change_db
and calls thd->[re_]set_db to set the current database.
The latter does not change thd->db_charset, thd->sctx->db_access
and thd->variables.collation_database (and this may have nasty side
effects).

These todo items are to be addressed in a separate patch, if at all.


mysql-test/r/sp.result:
  Update results (Bug#28551)
mysql-test/t/sp.test:
  Add a test case (Bug#28551)
sql/sp.cc:
  Remove an obsolete comment.
  Replace a check with an assert.
sql/sql_db.cc:
  Remove the offending warning introduced by the fix for Bug
  25082
  This minimal patch relies on the intrinsic knowledge of the fact that
  mysql_change_db is never called with 'force_switch' set to TRUE
  when such a warning may be needed.
2007-07-05 02:20:32 +04:00
unknown
9e14ae9472 Merge maint1.mysql.com:/data/localhome/tsmith/bk/51
into  maint1.mysql.com:/data/localhome/tsmith/bk/maint/51


client/mysqldump.c:
  Auto merged
mysql-test/lib/mtr_cases.pl:
  Auto merged
mysql-test/lib/mtr_report.pl:
  Auto merged
mysql-test/r/mysqldump.result:
  Auto merged
mysql-test/suite/binlog/r/binlog_multi_engine.result:
  Auto merged
mysql-test/suite/binlog/t/binlog_multi_engine.test:
  Auto merged
mysql-test/suite/ndb/r/ndb_read_multi_range.result:
  Auto merged
mysql-test/suite/ndb/r/ndb_sp.result:
  Auto merged
mysql-test/suite/ndb/r/ndb_trigger.result:
  Auto merged
mysql-test/suite/ndb/r/ps_7ndb.result:
  Auto merged
mysql-test/suite/ndb/t/loaddata_autocom_ndb.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_alter_table.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_alter_table2.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_alter_table3.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_autodiscover.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_autodiscover2.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_autodiscover3.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_basic.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_binlog_ddl_multi.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_binlog_log_bin.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_binlog_multi.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_bitfield.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_blob.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_blob_partition.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_cache.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_cache2.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_cache_multi.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_cache_multi2.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_charset.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_condition_pushdown.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_config.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_config2.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_cursor.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_database.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_dd_alter.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_dd_backuprestore.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_dd_basic.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_dd_ddl.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_dd_disk2memory.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_dd_dump.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_dd_sql_features.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_gis.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_index.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_index_ordered.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_index_unique.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_insert.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_limit.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_loaddatalocal.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_lock.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_minmax.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_multi.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_partition_error.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_partition_key.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_partition_list.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_partition_range.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_read_multi_range.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_rename.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_replace.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_restore.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_restore_partition.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_restore_print.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_row_format.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_single_user.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_sp.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_subquery.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_temporary.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_transaction.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_trigger.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_truncate.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_types.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_update.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_view.test:
  Auto merged
mysql-test/suite/ndb/t/ndbapi.test:
  Auto merged
mysql-test/suite/ndb/t/ps_7ndb.test:
  Auto merged
mysql-test/suite/ndb/t/strict_autoinc_5ndb.test:
  Auto merged
mysql-test/suite/rpl/r/rpl_events.result:
  Auto merged
mysql-test/suite/rpl/r/rpl_replicate_do.result:
  Auto merged
mysql-test/suite/rpl/r/rpl_row_UUID.result:
  Auto merged
mysql-test/suite/rpl/r/rpl_sp.result:
  Auto merged
mysql-test/suite/rpl/r/rpl_switch_stm_row_mixed.result:
  Auto merged
mysql-test/suite/rpl/r/rpl_trigger.result:
  Auto merged
mysql-test/suite/rpl/r/rpl_view.result:
  Auto merged
mysql-test/suite/rpl_ndb/r/rpl_ndb_UUID.result:
  Auto merged
mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_advance.result:
  Auto merged
mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_commit_afterflush.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_advance.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb_trans.test:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb-master.opt:
  Auto merged
mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb.test:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
sql/Makefile.am:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sql_class.h:
  Auto merged
mysql-test/t/disabled.def:
  manual merge
  (Will need to follow up with moving a few test cases around post-merge)
2007-07-04 22:38:53 +02:00
unknown
435df1859f Bug#26827 - table->read_set is set incorrectly,
causing update of a different column

For efficiency some storage engines do not read a complete record
for update, but only the columns required for selecting the rows.

When updating a row of a partitioned table, modifying a column
that is part of the partition or subpartition expression, then
the row may need to move from one [sub]partition to another one.
This is done by inserting the new row into the target
[sub]partition and deleting the old row from the originating one.
For the insert we need a complete record.

If an above mentioned engine was used for a partitioned table, we
did not have a complete record in update_row(). The implicitly
executed write_row() got an incomplete record.

This is solved by instructing the engine to read a complete record
if one of the columns of the partition or subpartiton is to be
updated.

No testcase. This can be reproduced with Falcon only. The engines
contained in standard 5.1 do always return complete records on
update.


sql/ha_partition.cc:
  Bug#26827 - table->read_set is set incorrectly,
              causing update of a different column
  Setting partition field bits in read_set if a writing
  operation is going on. This replaces the old function
  include_partition_fields_in_used_fields().
  Setting all bits in read_set if write_set contains a column
  used in a partition or subpartition expression.
  Removed include_partition_fields_in_used_fields().
sql/ha_partition.h:
  Bug#26827 - table->read_set is set incorrectly,
              causing update of a different column
  Removed declaration of
  include_partition_fields_in_used_fields().
sql/partition_info.h:
  Bug#26827 - table->read_set is set incorrectly,
              causing update of a different column
  Added a bitmap to partition_info for a quick check of
  columns used in a partition or subpartition expression.
sql/sql_partition.cc:
  Bug#26827 - table->read_set is set incorrectly,
              causing update of a different column
  Initializing the new bitmap with all columns used in a
  partition or subpartition expression.
2007-07-04 21:55:26 +02:00
unknown
8d2d15203f Merge maint1.mysql.com:/data/localhome/tsmith/bk/50
into  maint1.mysql.com:/data/localhome/tsmith/bk/maint/50
2007-07-04 21:24:32 +02:00
unknown
1b827e0399 Merge maint1.mysql.com:/data/localhome/tsmith/bk/41
into  maint1.mysql.com:/data/localhome/tsmith/bk/maint/41
2007-07-04 21:22:35 +02:00
unknown
e2ccd8f849 Backport from 5.2: Fix valgrind failure: Don't access item_func->arguments()
if item_func->argument_count()==0
2007-07-04 17:11:56 +04:00
unknown
589762cff7 Merge magare.gmz:/home/kgeorge/mysql/work/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/work/merge-5.1-opt


mysql-test/r/loaddata.result:
  Auto merged
mysql-test/t/loaddata.test:
  Auto merged
sql/filesort.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_load.cc:
  Auto merged
sql/uniques.cc:
  Auto merged
mysql-test/include/mix1.inc:
  manual merge 5.0-opt -> 5.1-opt
mysql-test/r/innodb_mysql.result:
  manual merge 5.0-opt -> 5.1-opt
sql/log.cc:
  manual merge 5.0-opt -> 5.1-opt
2007-07-04 11:46:45 +03:00
unknown
5b5ef1767f Merge mysql.com:/home/ram/work/mysql-5.1-maint
into  mysql.com:/home/ram/work/b19328/b19328.5.1
2007-07-04 09:27:54 +05:00