Commit graph

16525 commits

Author SHA1 Message Date
unknown
bbe0990bc7 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/mar20/maint/41
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/mar20/maint/50


sql/sql_class.cc:
  Auto merged
2007-03-20 21:35:11 +01:00
unknown
6bb78b95de Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-5.0-build
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/mar20/maint/50
2007-03-20 20:59:41 +01:00
unknown
2fd6320136 Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug27257


sql/item_sum.cc:
  Auto merged
2007-03-20 12:20:18 -07:00
unknown
91f7f31816 Fixed bug #27257: queries containing subqueries with COUNT(*)
aggregated in outer context returned wrong results.
This happened only if the subquery did not contain any references
to outer fields.
As there were no references to outer fields the subquery erroneously
was taken for non-correlated one.
Now any set function aggregated in outer context makes the subquery
correlated.


mysql-test/r/subselect.result:
  Added a test case for bug #27257.
mysql-test/t/subselect.test:
  Added a test case for bug #27257.
2007-03-20 11:51:09 -07:00
unknown
23fa1ee874 Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/kent/bk/tmp/mysql-5.0-build
2007-03-20 19:23:20 +01:00
unknown
d59272fb3d Bug #27231: Server crash when dumping into outfile with long FIELDS ENCLOSED BY option
- Problem: data separators were copied to a fixed-size buffer
  on the stack; memcpy was used, without bounds checking; a
  server crash could result if long FIELDS ENCLOSED BY, etc.,
  was given
- Fix: write the separators directly, instead of copying to
  a buffer first (in select_export::send_data())


sql/sql_class.cc:
  In select_export::send_data(), write data separators
  directly, instead of copying into a fixed-size memory
  buffer before writing.  This avoids a buffer overflow
  when very large separators are specified.
2007-03-20 19:09:28 +01:00
unknown
bac27bb9f5 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B24484-5.0


mysql-test/r/subselect3.result:
  Auto merged
sql/item.h:
  Auto merged
sql/item_sum.cc:
  Auto merged
sql/opt_range.cc:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
2007-03-20 19:49:38 +02:00
unknown
9c89dd654e Bug #24484:
To correctly decide which predicates can be evaluated with a given table
the optimizer must know the exact set of tables that a predicate depends 
on. If that mask is too wide (refer to non-existing tables) the optimizer
can erroneously skip a predicate.
One such case of wrong table usage mask were the aggregate functions.
The have a all-1 mask (meaning depend on all tables, including non-existent
ones).
Fixed by making a real used_tables mask for the aggregates. The mask is
constructed in the following way :
1. OR the table dependency masks of all the arguments of the aggregate.
2. If all the arguments of the function are from the local name resolution 
  context and it is evaluated in the same name resolution
  context where it is referenced all the tables from that name resolution 
  context are OR-ed to the dependency mask. This is to denote that an
  aggregate function depends on the number of rows it processes.
3. Handle correctly the case of an aggregate function optimization (such that
  the aggregate function can be pre-calculated and made a constant).

Made sure that an aggregate function is never a constant (unless subject of a 
specific optimization and pre-calculation).  

One other flaw was revealed and fixed in the process : references were 
not calling the recalculation method for used_tables of their targets.


mysql-test/r/subselect3.result:
  Bug #24484: test case
mysql-test/t/subselect3.test:
  Bug #24484: test case
sql/item.h:
  Bug #24484: Item_ref must update the used tables.
sql/item_sum.cc:
  Bug #24484: correct calculation of used_tables for aggregates.
sql/item_sum.h:
  Bug #24484: correct calculation of used_tables for aggregates.
sql/opt_range.cc:
  Bug #24484: fixed ref resolution in loose index scan
sql/sql_base.cc:
  Bug #24484: moved counting of leaf tables inside 
  setup_tables_and_check_access.
sql/sql_class.h:
  Bug #24484: changed table count to more narrow type.
sql/sql_insert.cc:
  Bug #24484: moved counting of leaf tables inside 
  setup_tables_and_check_access. Substract the first
  table (and its subtables) of an INSERT statement
  from leaf_count.
sql/sql_select.cc:
  Bug #24484: correct check for aggregates
2007-03-20 19:46:02 +02:00
unknown
da8e832a05 Merge polly.local:/tmp/maint/bug23775/my50-bug23775
into  polly.local:/home/kaa/src/maint/mysql-5.0-maint


sql/slave.cc:
  Auto merged
2007-03-20 17:27:49 +03:00
unknown
a491b2c116 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/50
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/50
2007-03-20 08:57:55 +01:00
unknown
168515a179 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/50
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/50
2007-03-19 23:10:58 +01:00
unknown
3798a7d500 sql_insert.cc:
Removed wrong fix for the bug#27006.
  The bug was added by the fix for the bug#19978 and fixed by Monty on 2007/02/21.
trigger.test, trigger.result:
  Corrected test case for the bug#27006.


sql/sql_insert.cc:
  Removed wrong fix for the bug#27006.
  The bug was added by the fix for the bug#19978 and fixed by Monty on 2007/02/21.
mysql-test/t/trigger.test:
  Corrected test case for the bug#27006.
mysql-test/r/trigger.result:
  Corrected test case for the bug#27006.
2007-03-20 00:46:19 +03:00
unknown
adf4f63513 Merge trift2.:/MySQL/M50/clone-5.0
into  trift2.:/MySQL/M50/push-5.0


sql/mysql_priv.h:
  Auto merged
2007-03-19 22:18:31 +01:00
unknown
14ab9bef52 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  bodhi.local:/opt/local/work/mysql-5.0-runtime


sql/field.cc:
  Auto merged
sql/item.cc:
  Auto merged
sql/item.h:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
mysql-test/r/sp.result:
  SCCS merged
mysql-test/t/sp.test:
  SCCS merged
2007-03-19 23:59:53 +03:00
unknown
24c0048ed0 Merge mysql_cab_desk.:C:/source/c++/mysql-5.0-rpl
into  mysql_cab_desk.:C:/source/c++/mysql-5.0_BUG_25543


sql/sql_class.cc:
  Auto merged
2007-03-19 16:12:46 -04:00
unknown
ccb75090c3 Fix a failure in test "func_in" on some 64-bit big-endian hosts in first 5.0.38 builds.
sql/item_cmpfunc.cc:
  Ensure both operands of a comparison are cast to "ulonglong", not just one only.
  Without this, some 64-bit big-endian hosts failed test "func_in" when 5.0.38 builds were started.
  
  Patch provided by Timothy.
2007-03-17 19:45:01 +01:00
unknown
77fccd038f Bug#20166 mysql-test-run.pl does not test system privilege tables creation
- Build sql files for netware from the mysql_system_tables*.sq files
 - Fix comments about mysql_create_system_tables.sh
 - Use mysql_install_db.sh to create system tables for mysql_test-run-shell
 - Fix mysql-test-run.pl to also look in share/mysql for the msyql_system*.sql files

Changeset coded today by Magnus Svensson, just the application to 5.0.38 is by Joerg Bruehe.


BitKeeper/deleted/.del-init_db.sql~e2b8d0c8390e8023:
  Delete: netware/init_db.sql
BitKeeper/deleted/.del-test_db.sql:
  Delete: netware/test_db.sql
BitKeeper/etc/ignore:
  Added netware/init_db.sql netware/test_db.sql to the ignore list
mysql-test/install_test_db.sh:
  Use mysql_install_db from install_test_db(which is used by mysql-test-run-shell)
  to install the system tables
mysql-test/mysql-test-run.pl:
  Look for the mysql_system_tables*.sql also in share/mysql
netware/Makefile.am:
  Build netware/init_db.sql and netware/test_db.sql from
  the sources in scripts/msyql_system_tables*.sql
scripts/make_binary_distribution.sh:
  netware/init_db.sql and netware/test_db.sql are now built by the Makefiles
  from the scripts/mysql_system_tables*.sql files
sql/mysql_priv.h:
  Update comment remindging to update the MySQL system table definitions
  when adding a new SQL_MODE
sql/sql_acl.h:
  Update comment reminding to update the MySQL System tables
  when changing the ACL defines
2007-03-16 20:56:16 +01:00
unknown
f7aa1930f4 Fix for bug #23775 "Replicated event larger that max_allowed_packet infinitely re-transmits".
Problem: to handle a situation when the size of event on the master is greater than max_allowed_packet on slave, we checked for the wrong constant (ER_NET_PACKET_TOO_LARGE instead of CR_NET_PACKET_TOO_LARGE).

Solution: test for the client "packet too large" error code instead of the server one in slave I/O thread.


mysql-test/r/rpl_packet.result:
  Added test case for bug #23775 "Replicated event larger that max_allowed_packet infinitely re-transmits"
mysql-test/t/rpl_packet.test:
  Added test case for bug #23775 "Replicated event larger that max_allowed_packet infinitely re-transmits"
sql/slave.cc:
  Test for the client "packet too large" error code instead of the server one in slave I/O thread.
2007-03-16 17:25:20 +03:00
unknown
6d93f15039 Bug#27006: AFTER UPDATE triggers not fired with INSERT ... ON DUPLICATE KEY
UPDATE if the row wasn't actually changed.

This bug was caused by fix for bug#19978. It causes AFTER UPDATE triggers
not firing if a row wasn't actually changed by the update part of the
INSERT .. ON DUPLICATE KEY UPDATE.

Now triggers are always fired if a row is touched by the INSERT ... ON
DUPLICATE KEY UPDATE.


sql/sql_insert.cc:
  Bug#27006: AFTER UPDATE triggers not fired with INSERT ... ON DUPLICATE KEY
  UPDATE if the row wasn't actually changed.
  Now triggers are always fired if a row is touched by the INSERT ... ON
  DUPLICATE KEY UPDATE.
mysql-test/r/trigger.result:
  Added a test case for the bug#27006: AFTER UPDATE triggers not fired with INSERT ... ON DUPLICATE KEY
  UPDATE if the row wasn't actually changed.
mysql-test/t/trigger.test:
  Added a test case for the bug#27006: AFTER UPDATE triggers not fired with INSERT ... ON DUPLICATE KEY
  UPDATE if the row wasn't actually changed.
2007-03-16 17:23:26 +03:00
unknown
13643101e0 Merge bk-internal.mysql.com:/home/bk/mysql-4.1-engines
into  chilla.local:/home/mydev/mysql-4.1-bug25289


sql/ha_myisam.cc:
  Auto merged
2007-03-16 14:26:45 +01:00
unknown
ffc605aad5 Bug#20777 Function w BIGINT UNSIGNED shows diff. behaviour with and without --ps-protocol
- Stored procedures returning unsinged values returns signed values if
  text protocol is used. The reason is that the stored proceedure item
  Item_func_sp wasn't initializing the member variables properly based
  on the information contained in the associated result field.
- The patch is to upon field-item association, ::fix_fields, initialize
  the member variables in appropriate order.
- Field type of an Item_func_sp was hard coded to MYSQL_TYPE_VARCHAR.
  This is changed to return the type of the actual result field.
- Member function name sp_result_field was refactored to the more 
  appropriate init_result_field.
- Member function name find_and_check_access was refactored to 
  sp_check_access.


mysql-test/r/sp.result:
  - Added test
mysql-test/t/sp.test:
  - Added test
sql/item_func.cc:
  Bug#20777 Function w BIGINT UNSIGNED shows diff. behaviour with and without --ps-protocol
  
  - Stored procedures returning unsinged values returns signed values if
    text protocol is used. The reason is that the stored proceedure item
    Item_func_sp wasn't initializing the member variables properly based
    on the information contained in the associated result field.
  - The patch is to upon field-item association, ::fix_fields, initialize
    the member variables in appropriate order.
  - Field type of an Item_func_sp was hard coded to MYSQL_TYPE_VARCHAR.
    This is changed to to return the type of the actual result field.
  - Member function name sp_result_field was refactored to the more 
    appropriate init_result_field.
  - Member function name find_and_check_access was refactored to 
    sp_check_access.
sql/item_func.h:
  Bug#20777 Function w BIGINT UNSIGNED shows diff. behaviour with and without --ps-protocol
  
  - Stored procedures returning unsinged values returns signed values if
    text protocol is used. The reason is that the stored proceedure item
    Item_func_sp wasn't initializing the member variables properly based
    on the information contained in the associated result field.
  - The patch is to upon field-item association, ::fix_fields, initialize
    the member variables in appropriate order.
  - Field type of an Item_func_sp was hard coded to MYSQL_TYPE_VARCHAR.
    This is changed to to return the type of the actual result field.
  - Member function name sp_result_field was refactored to the more 
    appropriate init_result_field.
  - Member function name find_and_check_access was refactored to 
    sp_check_access.
2007-03-16 14:25:11 +01:00
unknown
43b9ff1b21 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B26261-5.0-opt


sql/mysql_priv.h:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_prepare.cc:
  Auto merged
mysql-test/r/insert_update.result:
  SCCS merged
mysql-test/t/insert_update.test:
  SCCS merged
2007-03-16 10:50:33 +02:00
unknown
2e8e78a42c Bug #26261:
INSERT uses query_id to verify what fields are
 mentioned in the fields list of the INSERT command.
 However the check for that is made after the 
 ON DUPLICATE KEY is processed. This causes all
 the fields mentioned in ON DUPLICATE KEY to be 
 considered as mentioned in the fields list of 
 INSERT.
 Moved the check up, right after processing the
 fields list.


mysql-test/r/insert_update.result:
  Bug #26261: test case
mysql-test/t/insert_update.test:
  Bug #26261: test case
sql/mysql_priv.h:
  Bug #26261: moved the check inside mysql_prepare_insert
sql/sql_insert.cc:
  Bug #26261: move the check inside mysql_prepare_insert
  before setting up the ON DUPLICATE KEY part
sql/sql_prepare.cc:
  Bug #26261: moved the check inside mysql_prepare_insert
2007-03-16 10:35:39 +02:00
unknown
1a259b885f Merge sgluhov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  mysql.com:/home/gluh/MySQL/Merge/5.0-opt
2007-03-16 12:16:15 +04:00
unknown
a51b768600 Bug#26285 selecting information_schema crahes server
The crash happens when 'skip-grant-tables' is enabled.
We skip the filling of I_S privilege tables 
if acl_cache is not initialized.


mysql-test/r/skip_grants.result:
  test result
mysql-test/t/skip_grants.test:
  test case
sql/sql_acl.cc:
  skip filling of I_S privilege tables
  if acl_cache is not initialized
2007-03-16 12:15:51 +04:00
unknown
6b428e8507 Merge bk@192.168.21.1:mysql-5.0-opt
into  mysql.com:/home/hf/work/mrg/mysql-5.0-opt
2007-03-16 12:06:36 +04:00
unknown
173dc70d3f Merge bk@192.168.21.1:mysql-5.0
into  mysql.com:/home/hf/work/mrg/mysql-5.0-opt


sql/sql_parse.cc:
  Auto merged
2007-03-16 11:55:16 +04:00
unknown
c6ab94bdf1 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/27033-bug-5.0-opt-mysql
2007-03-15 23:56:21 +03:00
unknown
542f18a31a Bug#27033: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE if rows were
touched but not actually changed.

The LAST_INSERT_ID() is reset to 0 if no rows were inserted or changed.
This is the case when an INSERT ... ON DUPLICATE KEY UPDATE updates a row
with the same values as the row contains.

Now the LAST_INSERT_ID() values is reset to 0 only if there were no rows
successfully inserted or touched.
The new 'touched' field is added to the COPY_INFO structure. It holds the
number of rows that were touched no matter whether they were actually
changed or not.


sql/sql_class.h:
  Bug#27033: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE if rows were
  touched but not actually changed.
  
  The new 'touched' field is added to the COPY_INFO structure. It holds the
  number of rows that were touched no matter whether they were actually
  changed or not.
mysql-test/r/insert_update.result:
  Added a test case for the bug#27033: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE if rows were
  touched but not actually changed.
mysql-test/t/insert_update.test:
  Added a test case for the bug#27033: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE if rows were
  touched but not actually changed.
sql/sql_insert.cc:
  Bug#27033: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE if rows were
  touched but not actually changed.
  
  Now the LAST_INSERT_ID() values is reset to 0 only if there were no rows
  successfully inserted or touched.
2007-03-15 23:21:29 +03:00
unknown
34c5586773 Merge mysql.com:/home/hf/work/26833/my50-26833
into  mysql.com:/home/hf/work/mrg/mysql-5.0-opt


sql/sql_parse.cc:
  Auto merged
2007-03-15 16:26:37 +04:00
unknown
b6515184e0 Merge bk@192.168.21.1:mysql-5.0
into  mysql.com:/home/hf/work/mrg/mysql-5.0-opt


mysql-test/r/gis-rtree.result:
  Auto merged
2007-03-15 16:21:43 +04:00
unknown
c7ce63fb0b Merge chilla.local:/home/mydev/mysql-4.1-bug25289
into  chilla.local:/home/mydev/mysql-5.0-bug25289


sql/ha_myisam.cc:
  Bug#25289 - repair table causes "my_seek.c:56:
              my_seek: Assertion `fd != -1' failed"
  Manual merge from 4.1
2007-03-15 13:02:18 +01:00
unknown
cdd2a2e40d Fix for bug #25966 "2MB per second endless memory consumption after LOCK
TABLE ... WRITE".

Memory and CPU hogging occured when connection which had to wait for table
lock was serviced by thread which previously serviced connection that was
killed (note that connections can reuse threads if thread cache is enabled).
One possible scenario which exposed this problem was when thread which
provided binlog dump to replication slave was implicitly/automatically
killed when the same slave reconnected and started pulling data through
different thread/connection.
The problem also occured when one killed particular query in connection
(using KILL QUERY) and later this connection had to wait for some table
lock.

This problem was caused by the fact that thread-specific mysys_var::abort
variable, which indicates that waiting operations on mysys layer should
be aborted (this includes waiting for table locks), was set by kill
operation but was never reset back. So this value was "inherited" by the
following statements or even other connections (which reused the same
physical thread). Such discrepancy between this variable and THD::killed
flag broke logic on SQL-layer and caused CPU and memory hogging.

This patch tries to fix this problem by properly resetting this member.

There is no test-case associated with this patch since it is hard to test
for memory/CPU hogging conditions in our test-suite.


sql/mysqld.cc:
  We should not forget to reset THD::mysys_var::abort after kill operation
  if we are going to use thread to which this operation was applied for
  handling of other connections.
sql/sp_head.cc:
  We should not forget to reset THD::mysys_var::abort after kill operation
  if we are going to use thread to which this operation was applied for
  handling of further statements.
sql/sql_parse.cc:
  We should not forget to reset THD::mysys_var::abort after kill operation
  if we are going to use thread to which this operation was applied for
  handling of further statements.
2007-03-15 11:51:35 +03:00
unknown
db1d2f64d1 Fix for bug #25966 "2MB per second endless memory consumption after LOCK
TABLE ... WRITE".

CPU hogging occured when connection which had to wait for table lock was
serviced by thread which previously serviced connection that was killed
(note that connections can reuse threads if thread cache is enabled).
One possible scenario which exposed this problem was when thread which
provided binlog dump to replication slave was implicitly/automatically
killed when the same slave reconnected and started pulling data through
different thread/connection.
In 5.* versions memory hogging was added to CPU hogging. Moreover in
those versions the problem also occured when one killed particular query
in connection (using KILL QUERY) and later this connection had to wait for
some table lock.

This problem was caused by the fact that thread-specific mysys_var::abort
variable, which indicates that waiting operations on mysys layer should
be aborted (this includes waiting for table locks), was set by kill
operation but was never reset back. So this value was "inherited" by the
following statements or even other connections (which reused the same
physical thread). Such discrepancy between this variable and THD::killed
flag broke logic on SQL-layer and caused CPU and memory hogging.

This patch tries to fix this problem by properly resetting this member.

There is no test-case associated with this patch since it is hard to test
for memory/CPU hogging conditions in our test-suite.


sql/mysqld.cc:
  We should not forget to reset THD::mysys_var::abort after kill operation
  if we are going to use thread to which this operation was applied for
  handling of other connections.
2007-03-15 11:30:17 +03:00
unknown
9e5691cb33 Fix for bug #24558: Increasing decimal column length causes data loss
Altering to a decimal field we get double value then store it 
that may cause data loss. 
Fix: use store_decimal() instead.



mysql-test/r/type_newdecimal.result:
  Fix for bug #24558: Increasing decimal column length causes data loss
    - test result.
mysql-test/t/type_newdecimal.test:
  Fix for bug #24558: Increasing decimal column length causes data loss
    - test case.
sql/field_conv.cc:
  Fix for bug #24558: Increasing decimal column length causes data loss
    - if target field's result type is DECIMAL_RESULT
      use store_decimal(val_decimal()) in order not to loss data.
2007-03-15 12:06:06 +04:00
unknown
cfcd27b3db Merge malff@bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  weblab.(none):/home/marcsql/TREE/mysql-5.0-26503
2007-03-14 14:29:27 -06:00
unknown
79344c7b67 Bug#26503 (Illegal SQL exception handler code causes the server to crash)
Before this fix, the parser would accept illegal code in SQL exceptions
handlers, that later causes the runtime to crash when executing the code,
due to memory violations in the exception handler stack.

The root cause of the problem is instructions within an exception handler
that jumps to code located outside of the handler. This is illegal according
to the SQL 2003 standard, since labels located outside the handler are not
supposed to be visible (they are "out of scope"), so any instruction that
jumps to these labels, like ITERATE or LEAVE, should not parse.

The section of the standard that is relevant for this is :
  SQL:2003 SQL/PSM (ISO/IEC 9075-4:2003)
  section 13.1 <compound statement>,
  syntax rule 4
<quote>
  The scope of the <beginning label> is CS excluding every <SQL schema
  statement> contained in CS and excluding every
  <local handler declaration list> contained in CS. <beginning label> shall
  not be equivalent to any other <beginning label>s within that scope.
</quote>

With this fix, the C++ class sp_pcontext, which represent the "parsing
context" tree (a.k.a symbol table) of a stored procedure, has been changed
as follows:
- constructors have been cleaned up, so that only building a root node for
the tree is public; building nodes inside a tree is not public.
- a new member, m_label_scope, indicates if a given syntactic context
belongs to a DECLARE HANDLER block,
- label resolution, in the method find_label(), has been changed to
implement the restriction of scope regarding labels used in a compound
statement.

The actions in the parser, when parsing the body of a SQL exception handler,
have been changed as follows:
- the implementation of an exception handler (DECLARE HANDLER) now creates
explicitly a new sp_pcontext, to isolate the code inside the handler from
the containing compound statement context.
- registering exception handlers as a result occurs in the parent context,
see the rule sp_hcond_element
- the code in sp_hcond_list has been cleaned up, to avoid code duplication

In addition, the flags IN_SIMPLE_CASE and IN_HANDLER, declared in sp_head.h
have been removed, since they are unused and broken by design (as seen with
Bug 19194 (Right recursion in parser for CASE causes excessive stack usage,
limitation), representing a stack in a single flag is not possible.

Tests in sp-error have been added to show that illegal constructs are now
rejected.

Tests in sp have been added for code coverage, to show that ITERATE or LEAVE
statements are legal when jumping to a label in scope, inside the body of
an exception handler.


mysql-test/r/sp-error.result:
  SQL Exception handlers define a parsing context for label resolution.
mysql-test/r/sp.result:
  SQL Exception handlers define a parsing context for label resolution.
mysql-test/t/sp-error.test:
  SQL Exception handlers define a parsing context for label resolution.
mysql-test/t/sp.test:
  SQL Exception handlers define a parsing context for label resolution.
sql/sp_head.cc:
  Minor cleanup
sql/sp_head.h:
  Minor cleanup
sql/sp_pcontext.cc:
  SQL Exception handlers define a parsing context for label resolution.
sql/sp_pcontext.h:
  SQL Exception handlers define a parsing context for label resolution.
sql/sql_yacc.yy:
  SQL Exception handlers define a parsing context for label resolution.
2007-03-14 12:02:32 -06:00
unknown
3c89dd7966 Bug#25289 - repair table causes "my_seek.c:56:
my_seek: Assertion `fd != -1' failed"

In difficult optimize/repair situations the server could crash.
Under some circumstances the server retries an optimize/repair
with more elaborate options. But it did not check if the first
attempt failed so badly that a second one must not be tried.

This could happen when a new data file has been created
but it was not possible to open it. In this case the
repair leaves behind a table with closed data file.
This must not be used for another repair attempt.

We do now detect the closed data file and do not try
another repair attempt in this situation.

No test case. The required table corruption can not be
repeated easily. There is a test program attached to
bug 25433.


sql/ha_myisam.cc:
  Bug#25289 - repair table causes "my_seek.c:56:
              my_seek: Assertion `fd != -1' failed"
  Added code to detect a closed data file. It could be closed
  by a preceeding repair attempt. We must not try another
  repair then.
2007-03-14 16:27:37 +01:00
unknown
ff810fb952 Bug #26794: fixed valgrind warning 2007-03-14 15:58:14 +02:00
unknown
347e832abf Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B26794-5.0-opt


sql/field.cc:
  Auto merged
2007-03-14 11:55:40 +02:00
unknown
a22f257e04 Bug #26794:
Different set of conditions is used to verify
the validity of index definitions over a GEOMETRY
column in ALTER TABLE and CREATE TABLE. 
The difference was on how sub-keys notion validity
is checked.
Fixed by extending the CREATE TABLE condition to
support the cases allowed in ALTER TABLE.
Made the SHOW CREATE TABLE not to display spatial
indexes using the sub-key notion.


mysql-test/r/alter_table.result:
  Bug #26794: test case
mysql-test/r/gis-rtree.result:
  Bug #26794: fixed SHOW CREATE TABLE output.
mysql-test/t/alter_table.test:
  Bug #26794: test case
sql/field.cc:
  Bug #26794: Allow sub-keys for GEOMETRY
sql/sql_show.cc:
  Bug #26794: Don't show sub-key notion 
   in SHOW CREATE TABLE for SPATIAL indexes.
sql/sql_table.cc:
  Bug #26794: Allow sub-keys for GEOMETRY
2007-03-14 11:54:20 +02:00
unknown
4108ca9617 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B26672-5.0-opt


mysql-test/r/order_by.result:
  Auto merged
mysql-test/t/order_by.test:
  Auto merged
2007-03-13 18:46:46 +02:00
unknown
968d1695a7 Merge mysql.com:/home/svoj/devel/mysql/BUG26881/mysql-4.1-engines
into  mysql.com:/home/svoj/devel/mysql/BUG26881/mysql-5.0-engines


myisam/mi_create.c:
  Auto merged
mysql-test/t/merge.test:
  Auto merged
sql/ha_myisam.cc:
  Auto merged
sql/sql_parse.cc:
  Use local.
mysql-test/r/merge.result:
  SCCS merged
2007-03-13 18:11:47 +04:00
unknown
969b71653d BUG#26881 - Large MERGE tables report incorrect specification when no
differences in tables
Certain merge tables were wrongly reported as having incorrect definition:
- Some fields that are 1 byte long (e.g. TINYINT, CHAR(1)), might
  be internally casted (in certain cases) to a different type on a
  storage engine layer. (affects 4.1 and up)
- If tables in a merge (and a MERGE table itself) had short VARCHAR column (less
  than 4 bytes) and at least one (but not all) tables were ALTER'ed (even to an
  identical table: ALTER TABLE xxx ENGINE=yyy), table definitions went ouf of
  sync. (affects 4.1 only)

This is fixed by relaxing a check for underlying conformance and setting
field type to FIELD_TYPE_STRING in case varchar is shorter than 4
when a table is created.


myisam/mi_create.c:
  Added a comment.
mysql-test/r/merge.result:
  A test case for bug#26881.
mysql-test/t/merge.test:
  A test case for bug#26881.
sql/ha_myisam.cc:
  Relaxed some checks performed by check_definition():
  As comparing of fulltext keys (and key segments) is not yet implemented,
  only return an error in case one of keys is fulltext and other is not.
  Otherwise, if both keys are fulltext, accept them as is.
  
  As comparing of spatial keys (and key segments) is not yet implemented,
  only return an error in case one of keys is spatial and other is not.
  Otherwise, if both keys are spatial, accept them as is.
  
  A workaround to handle situation when field is casted from FIELD_SKIP_ZERO
  to FIELD_NORMAL. This could happen only in case field length is 1 and row
  format is fixed.
sql/sql_parse.cc:
  When a table that has varchar field shorter than 4 is created, field type is
  set to FIELD_TYPE_VAR_STRING. Later, when a table is modified using alter
  table, field type is changed to FIELD_TYPE_STRING (see Field_string::type).
  That means HA_OPTION_PACK_RECORD flag might be lost and thus null_bit might
  be shifted by alter table, in other words alter table doesn't create 100%
  equal table definition.
  
  This is usually not a problem, since when a table is created/altered,
  definition on a storage engine layer is based on one that is passed from
  sql layer. But it is a problem for merge engine - null_bit is shifted when
  a table (merge or underlying) is altered.
  
  Set field type to FIELD_TYPE_STRING in case FIELD_TYPE_VAR_STRING is shorter
  than 4 when a table is created as it is done in Field::type.
2007-03-13 18:02:06 +04:00
unknown
d496ab15e4 Merge mysql.com:/home/svoj/devel/bk/mysql-5.0
into  mysql.com:/home/svoj/devel/mysql/BUG26881/mysql-5.0-engines


myisam/rt_index.c:
  Auto merged
sql/field.h:
  Auto merged
2007-03-13 16:58:52 +04:00
unknown
e266365cad Merge mysql.com:/home/svoj/devel/bk/mysql-4.1
into  mysql.com:/home/svoj/devel/mysql/BUG26881/mysql-4.1-engines
2007-03-13 16:57:16 +04:00
unknown
ed80fe2dfb Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug26963


mysql-test/r/select.result:
  Auto merged
mysql-test/t/select.test:
  Auto merged
2007-03-12 02:24:09 -07:00
unknown
91abf15ed2 Fixed bug #26738: incomplete string values in a result set column
when the column is to be read from a derived table column which 
was specified as a concatenation of string literals.
The bug happened because the Item_string::append did not adjust the
value of Item_string::max_length. As a result of it the temporary 
table column  defined to store the concatenation of literals was 
not wide enough to hold the whole value.



mysql-test/r/subselect.result:
  Added a test case for bug #26738.
mysql-test/t/subselect.test:
  Added a test case for bug #26738.
2007-03-12 01:39:57 -07:00
unknown
13c05162f3 Fixed bug #26963: invalid optimization of the pushdown conditions
after single-row table substitution could lead to a wrong result set.
The bug happened because the function Item_field::replace_equal_field
erroniously assumed that any field included in a multiple equality
with a constant has been already substituted for this constant.
This not true for fields becoming constant after row substitutions
for constant tables.
 


mysql-test/r/select.result:
  Added a test case for bug #26963.
mysql-test/t/select.test:
  Added a test case for bug #26963.
sql/item.cc:
  Fixed bug #26963: invalid optimization of the pushdown conditions
  after single-row table substitution could lead to a wrong result set.
  The bug happened because the function Item_field::replace_equal_field
  erroneously assumed that any field included in a multiple equality
  with a constant has been already substituted for this constant.
  This not true for fields becoming constant after row substitutions
  for constant tables.
2007-03-11 23:34:40 -07:00
unknown
d00731db77 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/WL3527-5.0-opt-merge
2007-03-11 10:10:33 +02:00
unknown
2f774b479b Merge moonbone.local:/mnt/gentoo64/work/15757-bug-5.0-opt-mysql
into  moonbone.local:/mnt/gentoo64/work/25373-bug-5.0-opt-mysql


sql/item_strfunc.cc:
  Auto merged
mysql-test/r/func_str.result:
  SCCS merged
mysql-test/t/func_str.test:
  SCCS merged
2007-03-10 19:57:18 +03:00
unknown
816ea8a379 Bug#15757: Wrong SUBSTRING() result when a tmp table was employed.
When the SUBSTRING() function was used over a LONGTEXT field the max_length of
the SUBSTRING() result was wrongly calculated and set to 0. As the max_length
parameter is used while tmp field creation it limits the length of the result
field and leads to printing an empty string instead of the correct result.

Now the Item_func_substr::fix_length_and_dec() function correctly calculates
the max_length parameter.


mysql-test/t/func_str.test:
  Added a test case for the bug#15757: Wrong SUBSTRING() result when a tmp table was employed.
mysql-test/r/func_str.result:
  Added a test case for the bug#15757: Wrong SUBSTRING() result when a tmp table was employed.
sql/item_strfunc.cc:
  Bug#15757: Wrong SUBSTRING() result when a tmp table was employed.
  Now the Item_func_substr::fix_length_and_dec() function correctly calculates
  the max_length parameter.
2007-03-10 19:55:34 +03:00
unknown
c0a0543545 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/25373-bug-5.0-opt-mysql


mysql-test/r/func_str.result:
  Auto merged
mysql-test/r/subselect.result:
  Auto merged
mysql-test/r/union.result:
  Auto merged
sql/item.cc:
  Auto merged
2007-03-10 19:53:59 +03:00
unknown
67733ea5f8 bug #26833 (Compile error with embedded lib)
org_tables declaration was mistakenly #ifdef-ed with the EMBEDDED_LIBRARY
instead of ACCESS_CHECKS


sql/sql_parse.cc:
  default condition fixed
2007-03-10 17:44:25 +04:00
unknown
4d6ad7ac60 Fixed bug #26830: a crash for the query with a subselect containing ROLLUP.
Crash happened because the function get_best_group_min_max detected
joins with ROLLUP incorrectly.


mysql-test/r/olap.result:
  Added a test case for bug #26830.
mysql-test/t/olap.test:
  Added a test case for bug #26830.
2007-03-10 02:47:47 -08:00
unknown
944030aef7 Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized
away.

Additional fix for bug#22331. Now Item_field prints its value in the case of
the const field.


mysql-test/r/varbinary.result:
  Corrected test case after fix for bug#22331.
mysql-test/r/union.result:
  Corrected test case after fix for bug#22331.
mysql-test/r/subselect.result:
  Corrected test case after fix for bug#22331.
mysql-test/r/func_test.result:
  Corrected test case after fix for bug#22331.
mysql-test/r/having.result:
  Corrected test case after fix for bug#22331.
mysql-test/r/func_regexp.result:
  Corrected test case after fix for bug#22331.
mysql-test/r/func_str.result:
  Corrected test case after fix for bug#22331.
mysql-test/r/func_default.result:
  Corrected test case after fix for bug#22331.
mysql-test/r/explain.result:
  Corrected test case after fix for bug#22331.
sql/sql_union.cc:
  Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized
  away.
  Cleanup of the SELECT_LEX::order_list list.
sql/item.h:
  Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized
  away.
  Added the print() member function to the Item_field class.
sql/item.cc:
  Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized
  away.
  Added the print() member function to the Item_field class.
2007-03-10 00:29:02 +03:00
unknown
bcba75df42 Bug #25543 Replication of wrong values if using rand() in stored procedure
When rand() is called multiple times inside a stored procedure, the server does 
not binlog the correct random seed values.

This patch corrects the problem by resetting rand_used= 0 in 
THD::cleanup_after_query() allowing the system to save the random seeds if needed
for each command in a stored procedure body.

However, rand_used is not reset if executing in a stored function or trigger 
because these operations are binlogged by call and thus only the calling statement
need detect the call to rand() made by its substatements. These substatements must 
not set rand_used to 0 because it would remove the detection of rand() by the 
calling statement.


mysql-test/r/rpl_misc_functions.result:
  Bug #25543 Replication of wrong values if using rand() in stored procedure
  
  The result file was modified to include the correct processing of the new
  additions to the test. The results from execution are written to files on 
  both the master and the slave. The files are compared to ensure the values 
  from rand() generated on the master are correctly generated on the slave.
mysql-test/t/rpl_misc_functions.test:
  Bug #25543 Replication of wrong values if using rand() in stored procedure
  
  The test was modified to include a test of a stored procedure that calls
  the rand() function multiple times. 
  
  The results from execution are written to files on both the master and the
  slave. The files are compared to ensure the values from rand() generated
  on the master are correctly generated on the slave.
sql/sql_class.cc:
  Bug #25543 Replication of wrong values if using rand() in stored procedure
  
  The code was modified to reset rand_used so that detection of calls to rand() 
  will save random seeds if needed by the slave.
2007-03-09 12:18:28 -05:00
unknown
81beab69a4 Merge bk-internal:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/work/WL3527-5.0-opt-merge


sql/sql_yacc.yy:
  Auto merged
mysql-test/r/select.result:
  merge
mysql-test/t/select.test:
  merge
2007-03-09 16:30:44 +02:00
unknown
ff79cd6870 WL#3527: Extend IGNORE INDEX so places where index is ignored can
be specified
 5.0 part of the fix. Implements IGNORE INDEX FOR JOIN as a synonym
 of IGNORE INDEX for backward compatibility with the 5.1 fix.


mysql-test/r/select.result:
  WL#3527: Extend IGNORE INDEX so places where index is ignored can 
           be specified
  - test case
mysql-test/t/select.test:
  WL#3527: Extend IGNORE INDEX so places where index is ignored can 
           be specified
  - test case
2007-03-09 15:20:06 +02:00
unknown
52fb60dadf Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B26281-5.0-opt
2007-03-09 14:48:19 +02:00
unknown
c7de22a1c7 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B26281-5.0-opt


sql/item_strfunc.cc:
  Auto merged
mysql-test/r/func_str.result:
  resolved test merge conflicts
mysql-test/t/func_str.test:
  resolved test merge conflicts
2007-03-09 13:05:41 +02:00
unknown
29b6d55402 Bug #26281:
Fixed boundry checks in the INSERT() function:
 were one off.


mysql-test/r/func_str.result:
  Bug #26281: test case
mysql-test/t/func_str.test:
  Bug #26281: test case
sql/item_strfunc.cc:
  Bug #26281: fixed boundry checks
2007-03-09 12:47:12 +02:00
unknown
e68df7a1ab Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  olga.mysql.com:/home/igor/mysql-5.0-opt


sql/item.cc:
  Auto merged
2007-03-09 02:45:17 -08:00
unknown
413604f907 Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug26661
2007-03-09 01:50:17 -08:00
unknown
729bcaf430 Fixed bug #26661: crash when order by clause in a union
construct references invalid name.
Derived tables currently cannot use outer references.
Thus there is no outer context for them.
The 4.1 code takes this fact into account while the 
Item_field::fix_outer_field code of 5.0 lost the check that blocks
any attempts to resolve names in outer context for derived tables.


mysql-test/r/union.result:
  Added a test case for bug #26661.
mysql-test/t/union.test:
  Added a test case for bug #26661.
sql/item.cc:
  Fixed bug #26661.
  Derived tables currently cannot use outer references.
  Thus there is no outer context for them.
  The 4.1 code takes this fact into account while the 
  Item_field::fix_outer_field code of 5.0 lost the check that blocks
  any attempts to resolve names in outer context for derived tables.
2007-03-09 01:45:32 -08:00
unknown
76542acdce Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  mysql.com:/home/hf/work/mrg/mysql-5.0-opt


sql/sql_select.cc:
  Auto merged
2007-03-09 13:44:43 +04:00
unknown
264bcedd7e Fix typo. 2007-03-09 10:44:48 +03:00
unknown
a0521cd749 Polishing: use constants instead of magic numbers.
include/my_global.h:
  Introduce constants to be used instead of magic numbers.
sql/field.cc:
  Polishing: use contants instead of magic numbers.
sql/ha_innodb.cc:
  Polishing: use contants instead of magic numbers.
sql/handler.cc:
  Polishing: use contants instead of magic numbers.
sql/item.cc:
  Polishing: use contants instead of magic numbers.
sql/item.h:
  Polishing: use contants instead of magic numbers.
sql/item_func.cc:
  Polishing: use contants instead of magic numbers.
sql/item_subselect.cc:
  Polishing: use contants instead of magic numbers.
sql/log_event.cc:
  Polishing: use contants instead of magic numbers.
sql/sql_base.cc:
  Polishing: use contants instead of magic numbers.
sql/sql_select.cc:
  Polishing: use contants instead of magic numbers.
sql/sql_show.cc:
  Polishing: use contants instead of magic numbers.
sql/sql_table.cc:
  Polishing: use contants instead of magic numbers.
2007-03-09 08:05:08 +03:00
unknown
12af658570 Merge bk@192.168.21.1:mysql-5.0
into  mysql.com:/home/hf/work/mrg/mysql-5.0-opt


mysql-test/r/order_by.result:
  Auto merged
mysql-test/r/subselect.result:
  Auto merged
mysql-test/t/order_by.test:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
sql/item.cc:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/item_cmpfunc.h:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_lex.cc:
  Auto merged
sql/sql_lex.h:
  Auto merged
sql/sql_load.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_update.cc:
  Auto merged
mysql-test/r/func_str.result:
  merging
mysql-test/r/sp.result:
  merging
mysql-test/r/view.result:
  merging
mysql-test/t/func_str.test:
  merging
mysql-test/t/view.test:
  merging
2007-03-08 21:42:41 +04:00
unknown
0fcd9c2bfb Merge bk@192.168.21.1:mysql-4.1
into  mysql.com:/home/hf/work/mrg/mysql-4.1-opt
2007-03-08 21:14:31 +04:00
unknown
4c0ab891ea sql_select.cc:
Postfix for bug#22331.


sql/sql_select.cc:
  Postfix for bug#22331.
2007-03-08 19:38:21 +03:00
unknown
cc379fff6d Merge bk-internal:/home/bk/mysql-5.0-maint
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint


extra/comp_err.c:
  Auto merged
sql/mysqld.cc:
  Auto merged
2007-03-08 13:30:04 +01:00
unknown
980569877a Merge moonlight.home:/home/tomash/src/mysql_ab/mysql-5.0
into  moonlight.home:/home/tomash/src/mysql_ab/mysql-5.0-bug20492


sql/sql_select.cc:
  Auto merged
mysql-test/r/sp.result:
  Manual merge.
mysql-test/t/sp.test:
  Manual merge.
2007-03-08 15:16:21 +03:00
unknown
b33780693c Fix -ansi -pedantic warning (can't cast a pointer to function
to a pointer to object, that is, int foo(); void *bar= (void*) foo
is not allowed.


sql/lex.h:
  Fix -ansi -pedantic warning.
sql/lex_symbol.h:
  Fix -ansi -pedantic warning.
2007-03-08 12:04:45 +03:00
unknown
30c1622ec4 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/50
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/mrg0306/50


sql/mysqld.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_parse.cc:
  Auto merged
2007-03-07 23:55:25 +01:00
unknown
1631f65dfd sql_select.cc:
Postfix for bug#22331 for windows platform.
explain.test, explain.result:
  Cleanup after bugfix#22331.


mysql-test/t/explain.test:
  Cleanup after bugfix#22331.
mysql-test/r/explain.result:
  Cleanup after bugfix#22331.
sql/sql_select.cc:
  Postfix for bug#22331 for windows platform.
2007-03-08 00:27:42 +03:00
unknown
d773874044 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/25373-bug-5.0-opt-mysql


sql/sql_select.cc:
  Auto merged
2007-03-07 22:23:08 +03:00
unknown
6f18c39265 Merge moonbone.local:/mnt/gentoo64/work/22331-bug-5.0-opt-mysql
into  moonbone.local:/mnt/gentoo64/work/25373-bug-5.0-opt-mysql


mysql-test/r/subselect.result:
  Auto merged
sql/sql_lex.h:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_lex.cc:
  SCCS merged
2007-03-07 22:22:19 +03:00
unknown
11b533b8be Bug#25373: Stored functions wasn't compared correctly which leads to a wrong
result.

For built-in functions like sqrt() function names are hard-coded and can be
compared by pointer. But this isn't the case for a used-defined stored
functions - names there are dynamical and should be compared as strings.

Now the Item_func::eq() function employs my_strcasecmp() function to compare
used-defined stored functions names.


mysql-test/t/sp.test:
  Added a test case for bug#25373: Stored functions wasn't compared correctly which leads to a wrong result.
mysql-test/r/sp.result:
  Added a test case for bug#25373: Stored functions wasn't compared correctly which leads to a wrong result.
sql/item_func.cc:
  Bug#25373: Stored functions wasn't compared correctly which leads to a wrong
  result.
  Now the Item_func::eq() function employs my_strcasecmp() function to compare
  used-defined stored functions names.
2007-03-07 22:11:57 +03:00
unknown
6de277910b Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized
away.

During optimization stage the WHERE conditions can be changed or even
be removed at all if they know for sure to be true of false. Thus they aren't
showed in the EXPLAIN EXTENDED which prints conditions after optimization.

Now if all elements of an Item_cond were removed this Item_cond is substituted
for an Item_int with the int value of the Item_cond.
If there were conditions that were totally optimized away then values of the
saved cond_value and having_value will be printed instead.


mysql-test/t/explain.test:
  Added a test case for the bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized away.
mysql-test/r/subselect.result:
  Corrected test case result after fix for bug#22331.
mysql-test/r/func_test.result:
  Corrected test case result after fix for bug#22331.
mysql-test/r/explain.result:
  Added a test case for the bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized away.
sql/sql_select.cc:
  Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized
  away.
  Now if all elements of an Item_cond were removed this Item_cond is substituted
  for an Item_int with the int value of the Item_cond.
  If there were conditions that were totally optimized away then values of the
  saved cond_value and having_value will be printed instead.
sql/sql_lex.h:
  Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized
  away.
  The cond_value and the having_value variables are
  added to the SELECT_LEX class.
sql/sql_lex.cc:
  Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized
  away.
  The initialization of the cond_value and the having_value variables.
sql/sql_select.h:
  Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized
  away.
  Now having_value is also stored in the JOIN class.
2007-03-07 21:44:58 +03:00
unknown
a6131b85c0 Bug 8407, post review cleanup: use instr::get_cont_dest() to get the instruction
continuation instruction, for CONTINUE exception handlers.


sql/sp_head.cc:
  Post review cleanup: use instr::get_cont_dest() to get the instruction
  continuation instruction, for CONTINUE exception handlers.
sql/sp_head.h:
  Post review cleanup: use instr::get_cont_dest() to get the instruction
  continuation instruction, for CONTINUE exception handlers.
2007-03-07 09:53:46 -07:00
unknown
e4cdb58013 Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug26560


sql/sql_base.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
2007-03-07 07:58:34 -08:00
unknown
e2706b6721 Bug #26672:
DATE/DATETIME values are out of the currently supported
 4 basic value types (INT,STRING,REAL and DECIMAL).
 So expressions (not fields) of compile type DATE/DATETIME are 
 generally considered as STRING values. This is not so
 when they are compared : then they are compared as 
 INTEGER values.
 But the rule for comparison as INTEGERS must be checked
 explicitly each time when a comparison is to be performed.
 filesort is one such place. However there the check was 
 not done and hence the expressions (not fields) of type 
 DATE/DATETIME were sorted by their string representation.
 Fixed to compare them as INTEGER values for filesort.


mysql-test/r/order_by.result:
  Bug #26672: test case
mysql-test/t/order_by.test:
  Bug #26672: test case
sql/filesort.cc:
  Bug #26672: sort dates/times as integers
2007-03-07 14:51:45 +02:00
unknown
4d6e16f284 A fix for the windows build (harmless warning).
sql/sql_lex.cc:
  A fix for the windows build.
2007-03-07 14:03:44 +03:00
unknown
7f69b747d0 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  bodhi.local:/opt/local/work/mysql-5.0-26750


sql/mysqld.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_class.h:
  Manual merge.
2007-03-07 12:28:16 +03:00
unknown
053c6c01d6 A fix for Bug#26750 "valgrind leak in sp_head" (and post-review
fixes).

The legend: on a replication slave, in case a trigger creation
was filtered out because of application of replicate-do-table/
replicate-ignore-table rule, the parsed definition of a trigger was not 
cleaned up properly. LEX::sphead member was left around and leaked 
memory. Until the actual implementation of support of 
replicate-ignore-table rules for triggers by the patch for Bug 24478 it 
was never the case that "case SQLCOM_CREATE_TRIGGER"
was not executed once a trigger was parsed,
so the deletion of lex->sphead there worked and the memory did not leak.

The fix: 

The real cause of the bug is that there is no 1 or 2 places where
we can clean up the main LEX after parse. And the reason we 
can not have just one or two places where we clean up the LEX is
asymmetric behaviour of MYSQLparse in case of success or error. 

One of the root causes of this behaviour is the code in Item::Item()
constructor. There, a newly created item adds itself to THD::free_list
- a single-linked list of Items used in a statement. Yuck. This code
is unaware that we may have more than one statement active at a time,
and always assumes that the free_list of the current statement is
located in THD::free_list. One day we need to be able to explicitly
allocate an item in a given Query_arena.
Thus, when parsing a definition of a stored procedure, like
CREATE PROCEDURE p1() BEGIN SELECT a FROM t1; SELECT b FROM t1; END;
we actually need to reset THD::mem_root, THD::free_list and THD::lex
to parse the nested procedure statement (SELECT *).
The actual reset and restore is implemented in semantic actions
attached to sp_proc_stmt grammar rule.
The problem is that in case of a parsing error inside a nested statement
Bison generated parser would abort immediately, without executing the
restore part of the semantic action. This would leave THD in an 
in-the-middle-of-parsing state.
This is why we couldn't have had a single place where we clean up the LEX
after MYSQLparse - in case of an error we needed to do a clean up
immediately, in case of success a clean up could have been delayed.
This left the door open for a memory leak.

One of the following possibilities were considered when working on a fix:
- patch the replication logic to do the clean up. Rejected
as breaks module borders, replication code should not need to know the
gory details of clean up procedure after CREATE TRIGGER.
- wrap MYSQLparse with a function that would do a clean up.
Rejected as ideally we should fix the problem when it happens, not
adjust for it outside of the problematic code.
- make sure MYSQLparse cleans up after itself by invoking the clean up
functionality in the appropriate places before return. Implemented in 
this patch.
- use %destructor rule for sp_proc_stmt to restore THD - cleaner
than the prevoius approach, but rejected
because needs a careful analysis of the side effects, and this patch is 
for 5.0, and long term we need to use the next alternative anyway
- make sure that sp_proc_stmt doesn't juggle with THD - this is a 
large work that will affect many modules.

Cleanup: move main_lex and main_mem_root from Statement to its
only two descendants Prepared_statement and THD. This ensures that
when a Statement instance was created for purposes of statement backup,
we do not involve LEX constructor/destructor, which is fairly expensive.
In order to track that the transformation produces equivalent 
functionality please check the respective constructors and destructors
of Statement, Prepared_statement and THD - these members were
used only there.
This cleanup is unrelated to the patch.


sql/log_event.cc:
  THD::main_lex is private and should not be used.
sql/mysqld.cc:
  Move MYSQLerror to sql_yacc.yy as it depends on LEX headers now.
sql/sql_class.cc:
  Cleanup: move main_lex and main_mem_root to THD and Prepared_statement
sql/sql_class.h:
  Cleanup: move main_lex and main_mem_root to THD and Prepared_statement
sql/sql_lex.cc:
  Implement st_lex::restore_lex()
sql/sql_lex.h:
  Declare st_lex::restore_lex().
sql/sql_parse.cc:
  Consolidate the calls to unit.cleanup() and deletion of lex->sphead
  in mysql_parse (COM_QUERY handler)
sql/sql_prepare.cc:
  No need to delete lex->sphead to restore memory roots now in case of a 
  parse error - this is done automatically inside MYSQLparse
sql/sql_trigger.cc:
  This code could lead to double deletion apparently, as in case
  of an error lex.sphead was never reset.
sql/sql_yacc.yy:
  Trap all returns from the parser to ensure that MySQL-specific cleanup
  is invoked: we need to restore the global state of THD and LEX in 
  case of a parsing error. In case of a parsing success this happens as 
  part of normal grammar reduction process.
2007-03-07 12:24:46 +03:00
unknown
cf31dff6f2 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/25376-bug-5.0-opt-mysql


sql/sql_select.cc:
  Auto merged
2007-03-07 12:10:59 +03:00
unknown
cd5140d389 Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-4.1-runtime
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/mrg0306/41
2007-03-07 07:02:00 +01:00
unknown
a966b0b71c Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/mrg0306/50


mysql-test/mysql-test-run.pl:
  Auto merged
mysql-test/r/sp.result:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/item_cmpfunc.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_parse.cc:
  Auto merged
2007-03-07 06:54:35 +01:00
unknown
b68519f7dc Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-4.1
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/mrg0306/41
2007-03-07 05:59:56 +01:00
unknown
609970750b Merge siva.hindu.god:/home/tsmith/m/bk/maint/mar05/50
into  siva.hindu.god:/home/tsmith/m/bk/maint/50


libmysql/libmysql.c:
  Auto merged
sql/sql_class.cc:
  Auto merged
2007-03-06 15:36:07 -07:00
unknown
5fdfea0023 Bug #25075: sql_class.cc doesn't compile with --without-query-cache
Wrap query_cache_init_query() call with #ifdef HAVE_QUERY_CACHE in THD::THD()
2007-03-06 14:55:52 -07:00
unknown
38acf43e34 Bug#25376: Incomplete setup of ORDER BY clause results in a wrong result.
Functions over sum functions wasn't set up correctly for the ORDER BY clause
which leads to a wrong order of the result set.

The split_sum_func() function is called now for each ORDER BY item that
contains a sum function to set it up correctly.


mysql-test/t/order_by.test:
  Added a test case for bug#25376: Incomplete setup of ORDER BY clause results in a wrong result.
mysql-test/r/order_by.result:
  Added a test case for bug#25376: Incomplete setup of ORDER BY clause results in a wrong result.
sql/sql_select.cc:
  Bug#25376: Incomplete setup of ORDER BY clause results in a wrong result.
  The split_sum_func() function is called now for each ORDER BY item that
  contains a sum function to set it up correctly.
2007-03-06 23:58:10 +03:00
unknown
307c9f1e8f Merge malff@bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  weblab.(none):/home/marcsql/TREE/mysql-5.0-8407_b


mysql-test/r/view.result:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sp_head.h:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_update.cc:
  Auto merged
sql/table.cc:
  Auto merged
sql/table.h:
  Auto merged
sql/sql_base.cc:
  Manual merge
2007-03-06 11:30:08 -07:00
unknown
2f863451b5 Merge chilla.local:/home/mydev/mysql-4.1-bug26464
into  chilla.local:/home/mydev/mysql-5.0-bug26464


mysql-test/t/merge.test:
  Auto merged
mysql-test/r/merge.result:
  Bug#26464 - insert delayed + update + merge = corruption
  Manual merge from 4.1
sql/ha_myisammrg.h:
  Bug#26464 - insert delayed + update + merge = corruption
  Manual merge from 4.1
2007-03-06 10:34:14 +01:00
unknown
266a7fff52 Bug#8407 (Stored functions/triggers ignore exception handler)
Bug 18914 (Calling certain SPs from triggers fail)
Bug 20713 (Functions will not not continue for SQLSTATE VALUE '42S02')
Bug 21825 (Incorrect message error deleting records in a table with a
  trigger for inserting)
Bug 22580 (DROP TABLE in nested stored procedure causes strange dependency
  error)
Bug 25345 (Cursors from Functions)


This fix resolves a long standing issue originally reported with bug 8407,
which affect the behavior of Stored Procedures, Stored Functions and Trigger
in many different ways, causing symptoms reported by all the bugs listed.
In all cases, the root cause of the problem traces back to 8407 and how the
server locks tables involved with sub statements.

Prior to this fix, the implementation of stored routines would:
- compute the transitive closure of all the tables referenced by a top level
statement
- open and lock all the tables involved
- execute the top level statement
"transitive closure of tables" means collecting:
- all the tables,
- all the stored functions,
- all the views,
- all the table triggers
- all the stored procedures
involved, and recursively inspect these objects definition to find more
references to more objects, until the list of every object referenced does
not grow any more.
This mechanism is known as "pre-locking" tables before execution.
The motivation for locking all the tables (possibly) used at once is to
prevent dead locks.

One problem with this approach is that, if the execution path the code
really takes during runtime does not use a given table, and if the table is
missing, the server would not execute the statement.
This in particular has a major impact on triggers, since a missing table
referenced by an update/delete trigger would prevent an insert trigger to run.

Another problem is that stored routines might define SQL exception handlers
to deal with missing tables, but the server implementation would never give
user code a chance to execute this logic, since the routine is never
executed when a missing table cause the pre-locking code to fail.

With this fix, the internal implementation of the pre-locking code has been
relaxed of some constraints, so that failure to open a table does not
necessarily prevent execution of a stored routine.

In particular, the pre-locking mechanism is now behaving as follows:

1) the first step, to compute the transitive closure of all the tables
possibly referenced by a statement, is unchanged.

2) the next step, which is to open all the tables involved, only attempts
to open the tables added by the pre-locking code, but silently fails without
reporting any error or invoking any exception handler is the table is not
present. This is achieved by trapping internal errors with
Prelock_error_handler

3) the locking step only locks tables that were successfully opened.

4) when executing sub statements, the list of tables used by each statements
is evaluated as before. The tables needed by the sub statement are expected
to be already opened and locked. Statement referencing tables that were not
opened in step 2) will fail to find the table in the open list, and only at
this point will execution of the user code fail.

5) when a runtime exception is raised at 4), the instruction continuation
destination (the next instruction to execute in case of SQL continue
handlers) is evaluated.
This is achieved with sp_instr::exec_open_and_lock_tables()

6) if a user exception handler is present in the stored routine, that
handler is invoked as usual, so that ER_NO_SUCH_TABLE exceptions can be
trapped by stored routines. If no handler exists, then the runtime execution
will fail as expected.

With all these changes, a side effect is that view security is impacted, in
two different ways.

First, a view defined as "select stored_function()", where the stored
function references a table that may not exist, is considered valid.
The rationale is that, because the stored function might trap exceptions
during execution and still return a valid result, there is no way to decide
when the view is created if a missing table really cause the view to be invalid.

Secondly, testing for existence of tables is now done later during
execution. View security, which consist of trapping errors and return a
generic ER_VIEW_INVALID (to prevent disclosing information) was only
implemented at very specific phases covering *opening* tables, but not
covering the runtime execution. Because of this existing limitation,
errors that were previously trapped and converted into ER_VIEW_INVALID are
not trapped, causing table names to be reported to the user.
This change is exposing an existing problem, which is independent and will
be resolved separately.


mysql-test/r/information_schema_db.result:
  Revised the pre-locking code implementation, aligned the tests.
mysql-test/r/sp-error.result:
  Revised the pre-locking code implementation, aligned the tests.
mysql-test/r/sp.result:
  Revised the pre-locking code implementation, aligned the tests.
mysql-test/r/trigger.result:
  Revised the pre-locking code implementation, aligned the tests.
mysql-test/r/view.result:
  Revised the pre-locking code implementation, aligned the tests.
mysql-test/t/sp-error.test:
  Revised the pre-locking code implementation, aligned the tests.
mysql-test/t/sp.test:
  Revised the pre-locking code implementation, aligned the tests.
mysql-test/t/trigger.test:
  Revised the pre-locking code implementation, aligned the tests.
sql/lock.cc:
  table->placeholder now checks for schema_table
sql/mysqld.cc:
  my_message_sql(): invoke internal exception handlers
sql/sp_head.cc:
  exec_open_and_lock_tables(): open and lock tables, or return the
  continuation destination of this instruction
sql/sp_head.h:
  exec_open_and_lock_tables(): open and lock tables, or return the
  continuation destination of this instruction
sql/sql_base.cc:
  Prelock_error_handler: delay open table errors until execution
sql/sql_class.cc:
  THD: add internal error handler, as an exception mechanism.
sql/sql_class.h:
  THD: add internal error handler, as an exception mechanism.
sql/sql_update.cc:
  table->placeholder now checks for schema_table
sql/table.cc:
  st_table_list::hide_view_error(): masked more errors for view security
sql/table.h:
  table->placeholder now checks for schema_table, and unopened tables
2007-03-05 19:42:07 -07:00
unknown
4b40ed9532 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1-opt
into  moonbone.local:/mnt/gentoo64/work/clean-5.0-opt-mysql


mysql-test/t/update.test:
  Auto merged
mysql-test/r/update.result:
  Manually merged
sql/sql_base.cc:
  Manually merged
sql/sql_select.cc:
  Manually merged
2007-03-05 23:33:57 +03:00
unknown
4660b8f094 Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  mysql.com:/home/ram/work/b26038/b26038.5.0


sql/item_geofunc.cc:
  Auto merged
sql/spatial.cc:
  Auto merged
sql/spatial.h:
  Auto merged
2007-03-05 18:22:35 +04:00
unknown
49110f3e30 Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.1-maint
into  mysql.com:/home/ram/work/b26038/b26038.4.1
2007-03-05 18:21:52 +04:00
unknown
da9c659c81 Bug#26464 - insert delayed + update + merge = corruption
Using INSERT DELAYED on MERGE tables could lead to table
corruptions.

The manual lists a couple of storage engines, which can be
used with INSERT DELAYED. MERGE is not in this list.

The attempt to try it anyway has not been rejected yet.
This bug was not detected earlier as it can work under
special circumstances. Most notable is low concurrency.

To be safe, this patch rejects any attempt to use INSERT
DELAYED on MERGE tables.


mysql-test/r/merge.result:
  Bug#26464 - insert delayed + update + merge = corruption
  Added test result.
mysql-test/t/merge.test:
  Bug#26464 - insert delayed + update + merge = corruption
  Added test.
sql/ha_myisammrg.h:
  Bug#26464 - insert delayed + update + merge = corruption
  Removed HA_CAN_INSERT_DELAYED flag from table_flags().
  The insert delayed thread upgrades the lock from the first
  entry in MYSQL_LOCK::locks only. Hence it is incapable to
  handle MERGE tables, which have as many entries in this
  array as they have MyISAM sub-tables.
2007-03-05 11:52:28 +01:00
unknown
ede298b0ac Merge pilot.blaudden:/home/msvensson/mysql/bug21781/my50-bug21781
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint


sql/mysql_priv.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
2007-03-05 11:50:59 +01:00
unknown
3880c80fc6 Add "have_ssl" as synonym for "have_openssl"
mysql-test/t/openssl_1.test:
  Add "have_ssl" as synonym for "have_openssl"
  Correct comment
2007-03-05 10:03:42 +01:00
unknown
6da758c216 Fixed bug #26560.
The flag alias_name_used was not set on for the outer references
in subqueries. It resulted in replacement of any outer reference
resolved against an alias for a full field name when the frm 
representation of a view with a subquery was generated. 
If the subquery and the outer query referenced the same table in
their from lists this replacement effectively changed the meaning
of the view and led to wrong results for selects from this view. 

Modified several functions to ensure setting the right value of
the alias_name_used flag for outer references resolved against
aliases.
 


mysql-test/r/view.result:
  Added a test case for bug #26560.
mysql-test/t/view.test:
  Added a test case for bug #26560.
sql/item.cc:
  Fixed bug #26560.
  Made the function resolve_ref_in_select_and_group analyze the return
  value of the last parameter with the type of the name resolution for
  the submitted reference. If the reference has been resolved against 
  an alias name from select list then its flag alias_name_used is set on.
  Now this value is used in Item_field::fix_outer_field to initialize the flag
  when the item_ref object is created for an outer reference.
  Added a parameter for the second Item_ref::Item_ref constructor to initialize
  properly the flag alias_name_used. The default value of the parameter is FALSE.
  If this flag is set on at the creation of an object by this constructor it
  will never be changed. Corrected appropriately the Item_ref::set_properties
  function.
  The function Item_ref::print now prints alias name for an outer reference
  if the flag alias_name_used is set on.
sql/item.h:
  Fixed bug #26560.
  Added a parameter for the second Item_ref::Item_ref constructor to initialize
  properly the flag alias_name_used. The default value of the parameter is FALSE.
  A similar change has been applied to the first Item_direct_ref::Item_direct_ref
  constructor.
sql/mysql_priv.h:
  Fixed bug #26560.
  Added an an enumeration type enum_resolution_type to return info on
  how the function find_item_in_list has resolved the submitted item.
  The type is used only for this function.
sql/sql_base.cc:
  Fixed bug #26560.
  Made the last parameter of the function find_field_in_tables return
  more detailed information on how the submitted item has been resolved.
  Now it says whether the item has been resolved
    against an alias name,
    or as a field name without alias,
    or as a field name hidden by alias, 
    or was resolved ignoring alias.
sql/sql_select.cc:
  Fixed bug #26560.
  Took into account the new type of the last parameter of the function
  find_item_in_list.
2007-03-04 19:54:35 -08:00
unknown
72773f4f8a Bug#25126: Wrongly resolved field leads to a crash.
When the ORDER BY clause gets fixed it's allowed to search in the current
item_list in order to find aliased fields and expressions. This is ok for a
SELECT but wrong for an UPDATE statement. If the ORDER BY clause will
contain a non-existing field which is mentioned in the UPDATE set list
then the server will crash due to using of non-existing (0x0) field.

When an Item_field is getting fixed it's allowed to search item list for
aliased expressions and fields only for selects.


sql/sql_base.cc:
  Bug#25126: Wrongly resolved field leads to a crash.
  When an Item_field is getting fixed it's allowed to search item list for
  aliased expressions and fields only for selects.
sql/sql_select.cc:
  Bug#25126: Wrongly resolved field leads to a crash.
  When an Item_field is getting fixed it's allowed to search item list for
  aliased expressions and fields only for selects.
mysql-test/r/update.result:
  Added a test case for bug#25126: Wrongly resolved field leads to a crash.
mysql-test/t/update.test:
  Added a test case for bug#25126: Wrongly resolved field leads to a crash.
2007-03-04 00:47:42 +03:00
unknown
81c3505967 Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  mysql.com:/home/tnurnberg/21103/50-21103


sql/field.cc:
  Auto merged
2007-03-03 01:00:30 +01:00
unknown
476f91b50c fixed win32 warnings 2007-03-02 19:32:46 +02:00
unknown
2ebd43960b Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B19342-5.0-opt
2007-03-02 17:37:44 +02:00
unknown
f77eb48712 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B19342-5.0-opt


sql/item.h:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/item_cmpfunc.h:
  Auto merged
2007-03-02 16:28:41 +02:00
unknown
b114118ab7 Bug #19342:
Several problems here :
 1. The conversion to double of an hex string const item
 was not taking into account the unsigned flag.
 
 2. IN was not behaving in the same was way as comparisons
 when performed over an INT/DATE/DATETIME/TIMESTAMP column
 and a constant. The ordinary comparisons in that case 
 convert the constant to an INTEGER value and do int 
 comparisons. Fixed the IN to do the same.
 
 3. IN is not taking into account the unsigned flag when 
 calculating <expr> IN (<int_const1>, <int_const2>, ...).
 Extended the implementation of IN to store and process
 the unsigned flag for its arguments.


mysql-test/r/func_in.result:
  Bug #19342: test case
mysql-test/t/func_in.test:
  Bug #19342: test case
sql/item.h:
  Bug #19342: correct handling of sign in conersion to real.
sql/item_cmpfunc.cc:
  Bug #19342: exteneded the IN values list
   to support unsigned longlong values.
   Correct comparison of integers in IN with
   regard of signedness.
   Compare DATE/DATETIME/TIMESTAMP values as
   integers in IN.
sql/item_cmpfunc.h:
  Bug #19342: exteneded the IN values list
   to support unsigned longlong values.
   Correct comparison of integers in IN with
   regard of signedness.
2007-03-02 16:25:56 +02:00
unknown
fed9bb9820 Bug #21103: DATE column not compared as DATE
If we compare two items A and B, with B being (a constant) of a
larger type, then A gets promoted to B's type for comparison if
it's a constant, function, or CAST() column, but B gets demoted
to A's type if A is a (not explicitly CAST()) column. This is
counter-intuitive and not mandated by the standard.
 
Disabling optimisation where it would be lossy so field value
will properly get promoted and compared as binary string (rather
than as integers).


mysql-test/include/ps_conv.inc:
  Bug #21103: DATE column not compared as DATE
  
  When comparing a DATE field with a DATETIME constant, we now compare
  as DATETIMEs, not as DATEs.  Fix certain queries to still work.
mysql-test/r/func_time.result:
  Bug #21103: DATE column not compared as DATE
  
  When comparing a DATE field with a DATETIME constant, we now compare
  as DATETIMEs, not as DATEs.  Show that everything works as expected.
mysql-test/r/ps_2myisam.result:
  Bug #21103: DATE column not compared as DATE
  
  When comparing a DATE field with a DATETIME constant, we now compare
  as DATETIMEs, not as DATEs.  Fix certain queries to still work.
mysql-test/r/ps_3innodb.result:
  Bug #21103: DATE column not compared as DATE
  
  When comparing a DATE field with a DATETIME constant, we now compare
  as DATETIMEs, not as DATEs.  Fix certain queries to still work.
mysql-test/r/ps_4heap.result:
  Bug #21103: DATE column not compared as DATE
  
  When comparing a DATE field with a DATETIME constant, we now compare
  as DATETIMEs, not as DATEs.  Fix certain queries to still work.
mysql-test/r/ps_5merge.result:
  Bug #21103: DATE column not compared as DATE
  
  When comparing a DATE field with a DATETIME constant, we now compare
  as DATETIMEs, not as DATEs.  Fix certain queries to still work.
mysql-test/r/ps_7ndb.result:
  Bug #21103: DATE column not compared as DATE
  
  When comparing a DATE field with a DATETIME constant, we now compare
  as DATETIMEs, not as DATEs.  Fix certain queries to still work.
mysql-test/t/func_time.test:
  Bug #21103: DATE column not compared as DATE
  
  When comparing a DATE field with a DATETIME constant, we now compare
  as DATETIMEs, not as DATEs.  Show that everything works as expected.
sql/field.cc:
  Bug #21103: DATE column not compared as DATE
  
  #0 stores the date only as a 3-byte integer; save_in_field() in
  #1 saves 'this' in field's format (DATE), #2 "converts a constant
  item to an int and replaces the original item" -- consequently,
  this replaces the Item_string "2006-11-06 04:08:36.0" with the
  Item_int_with_ref 20061106.
  
  #0  Field_newdate::store (this=0x8d26880, from=0x8d5e658 "2006-11-06
  04:08:36.0", len=21, cs=0x88022c0) at field.cc:5344
  #1  0x0817e3b0 in Item_string::save_in_field (this=0x8d5e670, field=0x8d26880, no_conversions=true) at item.cc:4340
  #2  0x081b22ae in convert_constant_item (thd=0x8d25240, field=0x8d26880, item=0x8d5e74c) at item_cmpfunc.cc:245
  #3  0x081b8a36 in Item_bool_func2::fix_length_and_dec (this=0x8d5e6f8) at item_cmpfunc.cc:309
  #4  0x081a3427 in Item_func::fix_fields (this=0x8d5e6f8, thd=0x8d25240, ref=0x8d5f5fc) at item_func.cc:190
  #5  0x0825bc2d in setup_conds (thd=0x8d25240, tables=0x8d5e410, leaves=0x8d5e410, conds=0x8d5f5fc) at sql_base.cc:4941
  ...
  
  Disabling optimisation where it would be lossy so field value will
  properly get promoted and compared as binary string (rather than as
  integers).
2007-03-02 15:23:13 +01:00
unknown
2464f10826 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B26537-5.0-opt
2007-03-02 16:18:00 +02:00
unknown
f7f5f00649 Freeze the number of conflicts. We should not introduce any more
conflicts without proper analysis and documentation of the nature of
the conflict.
2007-03-02 15:05:16 +03:00
unknown
b0e07932c6 Rename a macro to better reflect the action taken.
sql/sql_yacc.yy:
  Rename: YYERROR_UNLESS -> YYABORT_UNLESS
  yyerror doesn't have to abort of the parser, whereas this macro
  does explicitly call YYABORT.
2007-03-02 14:29:51 +03:00
unknown
d4272a16de after merge fix (bug #26038)
Item_func_geometry_from_text::val_str() should set null_value
in case of wrong data.


mysql-test/include/gis_generic.inc:
  after merge fix
  
  Item_func_geometry_from_text::val_str() should set null_value
  in case of wrong data.
mysql-test/r/archive_gis.result:
  after merge fix
  
  Item_func_geometry_from_text::val_str() should set null_value
  in case of wrong data.
mysql-test/r/gis.result:
  after merge fix
  
  Item_func_geometry_from_text::val_str() should set null_value
  in case of wrong data.
mysql-test/r/innodb_gis.result:
  after merge fix
  
  Item_func_geometry_from_text::val_str() should set null_value
  in case of wrong data.
mysql-test/r/ndb_gis.result:
  after merge fix
  
  Item_func_geometry_from_text::val_str() should set null_value
  in case of wrong data.
mysql-test/t/gis.test:
  after merge fix
  
  Item_func_geometry_from_text::val_str() should set null_value
  in case of wrong data.
sql/item_geofunc.cc:
  after merge fix
  
  Item_func_geometry_from_text::val_str() should set null_value
  in case of wrong data.
2007-03-02 15:09:44 +04:00
unknown
19948e8a7f sql_base.cc:
Post fix for bug#25122.


sql/sql_base.cc:
  Post fix for bug#25122.
2007-03-02 13:25:41 +03:00
unknown
399bf23c1d Bug #26537: item_unhex() was not expected
to return NULL for non-NULL arguments.
This is not the case as it can return NULL
for invalid hexidecimal strings.
Fixed by setting the maybe_null flag.


mysql-test/r/func_str.result:
  Bug #26537: test case
mysql-test/t/func_str.test:
  Bug #26537: test case
sql/item_strfunc.h:
  Bug #26537: item_unhex() can return NULLs
  even for guaranteed non-null arguments.
2007-03-02 12:14:50 +02:00
unknown
133e08af14 Merge malff@bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  weblab.(none):/home/marcsql/TREE/mysql-5.0-26093


sql/item_func.cc:
  Auto merged
2007-03-01 20:08:58 -07:00
unknown
0a93be2869 Bug#26093 (SELECT BENCHMARK() for SELECT statements does not produce valid
results)

Before this fix, the function BENCHMARK() would fail to evaluate expressions
like "(select avg(a) from t1)" in debug builds (with an assert),
or would report a time of zero in non debug builds.

The root cause is that evaluation of DECIMAL_RESULT expressions was not
supported in Item_func_benchmark::val_int().

This has been fixed by this change.


mysql-test/r/func_misc.result:
  Added support for DECIMAL_RESULT in Item_func_benchmark::val_int()
mysql-test/t/func_misc.test:
  Added support for DECIMAL_RESULT in Item_func_benchmark::val_int()
sql/item_func.cc:
  Added support for DECIMAL_RESULT in Item_func_benchmark::val_int()
2007-03-01 19:20:47 -07:00
unknown
b72e3110da Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/25122-bug-5.0-opt-mysql


sql/mysql_priv.h:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_delete.cc:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_load.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_update.cc:
  Auto merged
2007-03-02 00:10:25 +03:00
unknown
1437a9c532 Bug#25122: Views based on a self-joined table aren't insertable.
When INSERT is done over a view the table being inserted into is 
checked to be unique among all views tables. But if the view contains
self-joined table an error will be thrown even if all tables are used under
different aliases.

The unique_table() function now also checks tables' aliases when needed.


sql/mysql_priv.h:
  Bug#25122:  Views based on a self-joined table aren't insertable.
  Updated prototype of the unique_table() function.
sql/sql_base.cc:
  Bug#25122:  Views based on a self-joined table aren't insertable.
  Now the unique_table() function checks tables' aliases when needed.
sql/sql_delete.cc:
  Bug#25122:  Views based on a self-joined table aren't insertable.
  Updated calls to the unique_table() function.
sql/sql_insert.cc:
  Bug#25122:  Views based on a self-joined table aren't insertable.
  Updated calls to the unique_table() function.
sql/sql_load.cc:
  Bug#25122:  Views based on a self-joined table aren't insertable.
  Updated calls to the unique_table() function.
sql/sql_parse.cc:
  Bug#25122:  Views based on a self-joined table aren't insertable.
  Updated calls to the unique_table() function.
sql/sql_update.cc:
  Bug#25122:  Views based on a self-joined table aren't insertable.
  Updated calls to the unique_table() function.
2007-03-02 00:09:22 +03:00
unknown
57b6c86411 Merge weblab.(none):/home/marcsql/TREE/mysql-5.0-base
into  weblab.(none):/home/marcsql/TREE/mysql-5.0-rt-merge


mysql-test/mysql-test-run.pl:
  Auto merged
mysql-test/t/disabled.def:
  Auto merged
server-tools/instance-manager/instance_options.cc:
  Auto merged
server-tools/instance-manager/mysqlmanager.cc:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/item_cmpfunc.h:
  Auto merged
sql/item_subselect.cc:
  Auto merged
sql/item_subselect.h:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_lex.cc:
  Auto merged
sql/sql_lex.h:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2007-03-01 14:06:57 -07:00
unknown
4a9edcc32c Merge pilot.blaudden:/home/msvensson/mysql/mysql-5.0
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint


BitKeeper/etc/ignore:
  auto-union
client/mysqltest.c:
  Auto merged
extra/comp_err.c:
  Auto merged
include/my_time.h:
  Auto merged
mysql-test/r/innodb.result:
  Auto merged
mysql-test/r/mysqltest.result:
  Auto merged
mysql-test/r/type_blob.result:
  Auto merged
mysql-test/t/mysqltest.test:
  Auto merged
sql/item.cc:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/item_cmpfunc.h:
  Auto merged
sql/item_strfunc.cc:
  Auto merged
sql/log.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_load.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/tztime.cc:
  Auto merged
client/mysql_upgrade.c:
  Manual merge
mysql-test/mysql-test-run.pl:
  Manual merge
mysql-test/r/ctype_cp932.result:
  Manual merge
mysql-test/r/mysqlbinlog.result:
  Manual merge
mysql-test/t/ctype_cp932.test:
  Manual merge
mysql-test/t/mysql.test:
  Manual merge
mysql-test/t/mysqlbinlog.test:
  Manual merge
2007-03-01 18:12:56 +01:00
unknown
71d12e9f31 Merge weblab.(none):/home/marcsql/TREE/mysql-4.1-base
into  weblab.(none):/home/marcsql/TREE/mysql-4.1-runtime


sql/sql_parse.cc:
  Auto merged
2007-03-01 05:59:16 -07:00
unknown
3616b5e3d5 Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.0
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge


sql/field.cc:
  Auto merged
sql/log.cc:
  Auto merged
sql/slave.cc:
  Auto merged
sql/sql_repl.cc:
  Auto merged
2007-03-01 11:37:28 +01:00
unknown
a7ec72b21b Merge bk-internal.mysql.com:/data0/bk/mysql-5.0
into  bk-internal.mysql.com:/data0/bk/mysql-5.0-marvel
2007-03-01 10:47:30 +01:00
unknown
8fa0d1b98e Removing two more compilation warnings.
sql/slave.cc:
  Guard declaration of variable to avoid "unused variable" warning.
sql/sql_repl.cc:
  Guard declaration of variable to avoid "unused variable" warning.
2007-03-01 10:40:48 +01:00
unknown
c04d5985c1 Disabled compiler warnings.
sql/ha_archive.cc:
  Fixed a warning from unused computed value. This block is
  only used in debug mode and changes nothing.
support-files/compiler_warnings.supp:
  Disabled a warning from BDB.
2007-03-01 10:52:25 +02:00
unknown
fdb1170eb1 Merge quant.(none):/ext/mysql/bkroot/mysql-5.0-rpl
into  quant.(none):/ext/mysql/bk/mysql-5.0-rpl-warnings


sql/mysql_priv.h:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2007-03-01 08:47:49 +01:00
unknown
b3fafa40fc Fixes of compilation warnings and errors.
sql/mysql_priv.h:
  Removing compiler warning "NULL used in arithmetic"
sql/mysqld.cc:
  First argument to WARN_DEPRECATED is supposed to be a pointer (to THD structure)
sql/sql_insert.cc:
  Removing compiler warning "unused variable". Apparently query is not used when compiling libmysqld.
sql/sql_yacc.yy:
  Removing compiler error "Macro already defined"
2007-03-01 08:41:13 +01:00
unknown
d5e983aafc Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.0-rpl
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge


sql/mysql_priv.h:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2007-02-28 22:30:40 +01:00
unknown
def9c0b236 Fixed compiler warnings.
client/mysql_upgrade.c:
  Fixed problem with mysql_upgrade being dependent
  on local my.cnf files and problem with memory not being freed.
client/mysqltest.c:
  Changed type to avoid warning.
cmd-line-utils/readline/xmalloc.c:
  Fix to avoid warning.
include/my_dbug.h:
  To disable parts from code in non-debug more.
sql/field.cc:
  Fixed warning.
sql/ha_archive.cc:
  Fixed warning.
sql/ha_berkeley.cc:
  Added casts to avoid warnings.
sql/ha_ndbcluster.cc:
  Fixed warnings.
sql/log.cc:
  Added casts to avoid warnings.
sql/slave.cc:
  Avoid warning.
sql/sql_repl.cc:
  Avoid warning.
support-files/compiler_warnings.supp:
  Added disabled warnings to compiler_warnings.supp file.
  These are backported mainly from 5.1 suppress file, but there
  are some additional new ones.
2007-02-28 22:23:35 +02:00
unknown
2a02f9c964 Merge pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint-bug20166
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint


BitKeeper/etc/ignore:
  auto-union
BitKeeper/deleted/.del-init_db.sql:
  Auto merged
BitKeeper/deleted/.del-init_db.sql~a77d572c39d5a1f8:
  Auto merged
client/mysqltest.c:
  Auto merged
mysql-test/Makefile.am:
  Auto merged
mysql-test/lib/mtr_process.pl:
  Auto merged
mysql-test/mysql-test-run.pl:
  Auto merged
sql/mysqld.cc:
  Auto merged
2007-02-28 16:40:03 +01:00
unknown
47a824ae4a Merge pilot.blaudden:/home/msvensson/mysql/mysql-4.1-maint
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint


BitKeeper/etc/ignore:
  auto-union
mysql-test/Makefile.am:
  Auto merged
sql/mysqld.cc:
  Auto merged
BitKeeper/deleted/.del-init_db.sql:
  Auto merged
BitKeeper/deleted/.del-init_db.sql~a77d572c39d5a1f8:
  Auto merged
2007-02-28 16:39:26 +01:00
unknown
87eee8fcad Bug#24878 mysql server doesn't log incident time in "mysqld got signal 11" error messages
- Add printout of current time when mysqld is killed by an
   unhandled signal


sql/mysqld.cc:
  Add printout of current time before the "mysqld got signal %d" message
  Hopefully we don't crash in the calls to 'time' or 'localtime_r'
  but if that should start to happen we can move the printout of
  time further down. At least it's now below the check for segfault
  inside of segfault handler.
2007-02-28 16:37:50 +01:00
unknown
af44be2d25 BUG#26238 - inserted delayed always inserts 0 for BIT columns
INSERT DELAYED inserts garbage for BIT columns.

When delayed thread clones TABLE object, it didn't adjusted bit_ptr
to newly created record (though it correctly adjusts ptr and null_ptr).

This is fixed by correctly adjusting bit_ptr when performing a clone.
With this fix BIT values are stored correctly by INSERT DELAYED.


mysql-test/r/delayed.result:
  A test case for BUG#26238.
mysql-test/t/delayed.test:
  A test case for BUG#26238.
sql/field.h:
  Added move_field() to Field_bit class. When moving a field, adjust
  bit_ptr also, which is specific to Field_bit class.
2007-02-28 18:34:35 +04:00
unknown
a2b4f52912 Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl
into  mysql.com:/home/bar/mysql-5.0.b24478
2007-02-28 18:21:00 +04:00
unknown
de61d5b0d5 Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl
into  mysql.com:/home/bar/mysql-5.0.b15126


sql/log_event.cc:
  Auto merged
sql/log_event.h:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_load.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
mysql-test/r/mysqlbinlog.result:
  After merge fix
mysql-test/t/mysqlbinlog.test:
  After merge fix
2007-02-28 17:17:06 +04:00
unknown
c3a3aff54f Bug#15126 character_set_database is not replicated (LOAD DATA INFILE need it)
This patch fixes problem that LOAD DATA could use different
character sets when loading files on master and on slave sides:
- Adding replication of thd->variables.collation_database
- Adding optional character set clause into LOAD DATA

Note, the second way, with explicit CHARACTER SET clause
should be the recommended way to load data using an alternative
character set.
The old way, using "SET @@character_set_database=xxx" should be
gradually depricated.


mysql-test/r/mysqlbinlog.result:
  Adding test case
mysql-test/t/mysqlbinlog.test:
  Adding test case
sql/log_event.cc:
  Adding logging of thd->variables.collation_database
sql/log_event.h:
  Adding declarations
sql/sql_class.cc:
  Exchange character set is null by default
sql/sql_class.h:
  Adding character set into sql_exchange
sql/sql_load.cc:
  - Using exchange character set (if it was specified in LOAD DATA syntax)
  - Using thd->variables.collation_database by default
sql/sql_yacc.yy:
  Adding optional character set clause into LOAD DATA syntax
mysql-test/r/rpl_loaddata2.result:
  New BitKeeper file ``mysql-test/r/rpl_loaddata2.result''
mysql-test/std_data/loaddata6.dat:
  New BitKeeper file ``mysql-test/std_data/loaddata6.dat''
mysql-test/t/rpl_loaddata2.test:
  New BitKeeper file ``mysql-test/t/rpl_loaddata2.test''
2007-02-28 17:06:57 +04:00
unknown
d9227f159f Add more comments to open_table and open_tables. No real changes. 2007-02-28 16:03:38 +03:00
unknown
65fc58524f Merge pilot.blaudden:/home/msvensson/mysql/bug25197/my50-bug25197
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint


sql/item_strfunc.cc:
  Auto merged
2007-02-28 11:21:29 +01:00
unknown
6842f6b12a Merge mysql.com:/home/ram/work/b26038/b26038.4.1
into  mysql.com:/home/ram/work/b26038/b26038.5.0


sql/item_geofunc.cc:
  Auto merged
sql/spatial.cc:
  Auto merged
sql/spatial.h:
  Auto merged
mysql-test/r/gis.result:
  will be fixed after the merging.
mysql-test/t/gis.test:
  merging, the result will be fixed in an after-merge fix CS
sql/item_geofunc.h:
  merging
2007-02-28 12:13:46 +04:00
unknown
9c8637dc4c Merge quant.(none):/ext/mysql/bkroot/mysql-5.0-rpl
into  quant.(none):/ext/mysql/bk/mysql-5.0-bug25306
2007-02-28 08:50:25 +01:00
unknown
f0e5877c53 Merge quant.(none):/ext/mysql/bkroot/mysql-5.0-rpl
into  quant.(none):/ext/mysql/bk/mysql-5.0-bug25306


sql/slave.cc:
  Auto merged
sql/sql_repl.cc:
  Auto merged
2007-02-27 19:38:39 +01:00
unknown
0ddc3250e9 Merge mysql.com:/nfsdisk1/lars/MERGE/mysql-4.1-merge
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge


sql/sql_load.cc:
  Manual merge
2007-02-27 18:40:57 +01:00
unknown
4be9d3cc0a BUG#20141 "User-defined variables are not replicated properly for
SF/Triggers in SBR mode."
BUG#14914 "SP: Uses of session variables in routines are not always replicated"
BUG#25167 "Dupl. usage of user-variables in trigger/function is not replicated
          correctly"

This patch corrects a minor error in the previous patch for BUG#20141. This patch
corrects an errant code change to sp_head.cc. The comments for the first patch follow:

User-defined variables used inside of stored functions/triggers in
statements which did not update tables directly were not replicated.
We also had problems with replication of user-defined variables which
were used in triggers (or stored functions called from table-updating
statements) more than once.

This patch addresses the first issue by enabling logging of all
references to user-defined variables in triggers/stored functions
and not only references from table-updating statements.

The second issue stemmed from the fact that for user-defined
variables used from triggers or stored functions called from
table-updating statements we were writing binlog events for each
reference instead of only one event for the first reference.
This problem is already solved for stored functions called from
non-updating statements with help of "event unioning" mechanism.
So the patch simply extends this mechanism to the case affected.
It also fixes small problem in this mechanism which caused wrong
logging of references to user-variables in cases when non-updating
statement called several stored functions which used the same
variable and some of these function calls were omitted from binlog
as they were not updating any tables.


sql/sp_head.cc:
  BUG#20141 "User-defined variables are not replicated properly for 
            SF/Triggers in SBR mode."
  
  This patch corrects a minor error in the previous patch for BUG#20141. The code:
  
  q= ::query_id; 
  
  was an errant line of code that was not intended to be in the patch. Instead, the
  correct line of code is:
  
  q= global_query_id;
2007-02-27 10:32:45 -05:00
unknown
5bc306b220 Merge pilot.blaudden:/home/msvensson/mysql/bug20166/my50-bug20166
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint


mysql-test/mysql-test-run.pl:
  Auto merged
mysql-test/t/rpl_temporary.test:
  Auto merged
sql/mysqld.cc:
  Auto merged
2007-02-27 14:54:33 +01:00
unknown
e91d273871 Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl
into  mysql.com:/home/bar/mysql-5.0.b24478


sql/sql_parse.cc:
  Auto merged
sql/sql_trigger.cc:
  Auto merged
sql/sql_trigger.h:
  Auto merged
2007-02-27 12:46:50 +04:00
unknown
3a520a785e removed unused variable 2007-02-27 12:37:17 +04:00
unknown
2e669d8e7b Fix for BUG#26050 "LOAD DATA INFILE breaks ACID"; the ok must be sent
to the client only after the binlog write and engine commit.
No testcase for this bug, as to reproduce it, we need to "kill -9" mysqld,
which we cannot do in the testsuite. But, I tested by hand.


sql/sql_load.cc:
  D in ACID means that once the client got the ok from the server, the data
  is durable on disk. Implies that the ok must be sent after the binlog write
  and after the engine commit, not before.
2007-02-26 20:35:28 +01:00
unknown
1636d00fa7 Merge cbell@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl
into  mysql_cab_desk.:C:/source/c++/mysql-5.0-rpl


sql/item_func.cc:
  Auto merged
sql/log.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
2007-02-26 14:30:44 -05:00
unknown
de5d4e32fb Merge mysql.com:/home/gluh/MySQL/Merge/5.0
into  mysql.com:/home/gluh/MySQL/Merge/5.0-opt


sql/item.cc:
  Auto merged
sql/item.h:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_lex.cc:
  Auto merged
sql/sql_lex.h:
  Auto merged
sql/sql_prepare.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_union.cc:
  Auto merged
sql/sql_update.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2007-02-26 16:57:45 +04:00
unknown
7d883c0def Bug#24478 DROP TRIGGER is not caught by replicate-*-table filters
Problem: DROP TRIGGER was not properly handled in combination
with slave filters, which made replication stop
Fix: loading table name before checking slave filters when
dropping a trigger.


mysql-test/r/rpl_replicate_do.result:
  Adding test case
mysql-test/t/rpl_replicate_do.test:
  Adding test case
sql/sql_parse.cc:
  Loading table name when dropping a trigger
  before checking slave filtering rules.
sql/sql_trigger.cc:
  Making add_table_for_trigger() public
sql/sql_trigger.h:
  Making add_table_for_trigger() public
2007-02-26 15:25:43 +04:00
unknown
90d4f80922 item.cc, item.h:
Post fix for bug#23800.


sql/item.h:
  Post fix for bug#23800.
sql/item.cc:
  Post fix for bug#23800.
2007-02-26 09:01:43 +03:00
unknown
84e6892719 item.h:
Post fix for bug#23800.
  Copy the table name of an Item_outer_ref to the conventional memory.


sql/item.h:
  Post fix for bug#23800.
  Copy the table name of an Item_outer_ref to the conventional memory.
2007-02-25 23:02:11 +03:00
unknown
dc8b4bacc5 log_on needed also in embedded server 2007-02-25 00:31:26 +01:00
unknown
33dbda5eae Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.0-rpl
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge


sql/field.cc:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/log.cc:
  Auto merged
sql/log_event.cc:
  Auto merged
sql/log_event.h:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/slave.cc:
  Auto merged
sql/sql_insert.cc:
  Auto merged
2007-02-25 00:10:51 +01:00
unknown
b1e1f77f1f item.cc:
Post fix for bug#23800.
  The Item_field constructor now increases the select_n_where_fields counter.
sql_yacc.yy:
  Post fix for bug#23800.
  Take into account fields that might be added by subselects.
sql_lex.h:
  Post fix for bug#23800.
  Added the select_n_where_fields variable to the st_select_lex class.
sql_lex.cc:
  Post fix for bug#23800.
  Initialization of the select_n_where_fields variable.


sql/sql_lex.cc:
  Post fix for bug#23800.
  Initialization of the select_n_where_fields variable.
sql/sql_lex.h:
  Post fix for bug#23800.
  Added the select_n_where_fields variable to the st_select_lex class.
sql/item.cc:
  Post fix for bug#23800.
  The Item_field constructor now increases the select_n_where_fields counter.
sql/sql_yacc.yy:
  Post fix for bug#23800.
  Take into account fields that might be added by subselects.
2007-02-24 23:04:15 +03:00
unknown
dfb019ea74 Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.0-rpl
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge


sql/field.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/slave.cc:
  Auto merged
sql/sql_insert.cc:
  Auto merged
mysql-test/t/disabled.def:
  Manual merge
2007-02-24 11:41:31 +01:00
unknown
3a8a519acb Merge mysql_cab_desk.:C:/source/c++/mysql-5.0-rpl
into  mysql_cab_desk.:C:/source/c++/mysql-5.0_BUG_20141


sql/log.cc:
  Auto merged
2007-02-23 13:00:08 -05:00
unknown
e52ec3e6d5 BUG#20141 "User-defined variables are not replicated properly for SF/
Triggers in SBR mode."
BUG#14914 "SP: Uses of session variables in routines are not always
           replicated"
BUG#25167 "Dupl. usage of user-variables in trigger/function is not
           replicated correctly"

User-defined variables used inside of stored functions/triggers in
statements which did not update tables directly were not replicated.
We also had problems with replication of user-defined variables which
were used in triggers (or stored functions called from table-updating
statements) more than once.

This patch addresses the first issue by enabling logging of all
references to user-defined variables in triggers/stored functions
and not only references from table-updating statements.

The second issue stemmed from the fact that for user-defined
variables used from triggers or stored functions called from
table-updating statements we were writing binlog events for each
reference instead of only one event for the first reference.
This problem is already solved for stored functions called from
non-updating statements with help of "event unioning" mechanism.
So the patch simply extends this mechanism to the case affected.
It also fixes small problem in this mechanism which caused wrong
logging of references to user-variables in cases when non-updating
statement called several stored functions which used the same
variable and some of these function calls were omitted from binlog
as they were not updating any tables.


mysql-test/r/rpl_user_variables.result:
  BUG#20141 - User-defined variables are not replicated properly for SF/Triggers in SBR mode.
  This patch adds the correct results for execution of the added test procedures to the
  rpl_user_variables test.
mysql-test/t/rpl_user_variables.test:
  BUG#20141 - User-defined variables are not replicated properly for SF/Triggers in SBR mode.
  This patch adds additional tests to the rpl_user_variables test that test many of the
  different ways user-defined variables can be required to be replicated.
sql/item_func.cc:
  BUG#20141 - User-defined variables are not replicated properly for SF/Triggers in SBR mode.
  To properly log accesses to user-defined variables from stored functions/triggers,
  the get_var_with_binlog() method needs to log references to such variables even from 
  non-table-updating statements within them.
sql/log.cc:
  BUG#20141 - User-defined variables are not replicated properly for SF/Triggers in SBR mode.
  This patch modifies the start_union_events method to accept the query id from a parameter.
  This allows callers to set the query_id to the id of the sub statement such as a trigger
  or stored function. Which permits the code to identify when a user defined variable has
  been used by the statement and this already present in THD::user_var_event.
  
  Note:
  The changes to sql_class.cc, sp_head.cc, and log.cc are designed to allow the proper 
  replication of access to user-defined variables under a special test case (the last case 
  shown in rpl_user_variables.test).
sql/sp_head.cc:
  BUG#20141 - User-defined variables are not replicated properly for SF/Triggers in SBR mode.
  This patch modifies the code to allow for cases where events for function calls have
  a separate union for each event and thus cannot use the query_id of the caller as the
  start of the union. Thus, we use an artifically created query_id to set the start of 
  the events.
  
  Note:
  The changes to sql_class.cc, sp_head.cc, and log.cc are designed to allow the proper 
  replication of access to user-defined variables under a special test case (the last case 
  shown in rpl_user_variables.test).
sql/sql_class.cc:
  BUG#20141 - User-defined variables are not replicated properly for SF/Triggers in SBR mode.
  This patch adds the query_id parameter to the calls to mysql_bin_log.start_union_events().
  
  Note:
  The changes to sql_class.cc, sp_head.cc, and log.cc are designed to allow the proper 
  replication of access to user-defined variables under a special test case (the last case 
  shown in rpl_user_variables.test).
sql/sql_class.h:
  BUG#20141 - User-defined variables are not replicated properly for SF/Triggers in SBR mode.
  This patch adds the query_id parameter to the calls to mysql_bin_log.start_union_events().
2007-02-23 12:58:56 -05:00
unknown
86c7444391 Merge pilot.blaudden:/home/msvensson/mysql/bug26536/my50-bug26536
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
2007-02-23 17:59:33 +01:00
unknown
4e4152c56f Bug #26186:
When handling DELETE ... FROM if there is no
condition it is internally transformed to 
TRUNCATE for more efficient execution by the
storage handler.
The check for validity of the optional ORDER BY 
clause is done after the check for the above 
optimization and will not be performed if the
optimization can be applied.
Moved the validity check for ORDER BY before 
the optimization so it performed regardless of
the optimization.


mysql-test/r/delete.result:
  Bug #26186: test case
mysql-test/t/delete.test:
  Bug #26186: test case
sql/sql_delete.cc:
  Bug #26186: do validity check of the ORDER BY
  before deciding to skip it.
2007-02-23 18:49:41 +02:00
unknown
d8ba8b8c98 Bug#26536 func_time failure on vm-win2003-64-b, occurs every time
- Avoid overflow in sec_since_epoch by shifting the time
   back 2 days for times close to the maximum range of my_time_t
 - Improve comment about why we need my_time_t
 - Patch will also fix timezone2.test


include/my_time.h:
  Improve comment for my_time_t, especially that we require
  it to be at least a 32bit unsigned type
sql/tztime.cc:
  - Add assert in sec_since_epoch to guard it against broken down time
  values that would cause overflow in my_time_t on systems with 32 bit
  my_time_t
  - Avoid overflow in sec_since_epoch by "shifting" the broken down
  time back 2 days for times that are near the max value.c
2007-02-23 17:33:11 +01:00
unknown
8c07265ce1 the fix for BUG#24432
"INSERT... ON DUPLICATE KEY UPDATE skips auto_increment values"
didn't make it into 5.0.36 and 5.1.16,
so we need to adjust the bug-detection-based-on-version-number code.
Because the rpl tree has a too old version, rpl_insert_id cannot pass,
so I disable it (like is already the case in 5.1-rpl for the same reason),
and the repl team will re-enable it when they merge 5.0 and 5.1 into
their trees (thus getting the right version number).


mysql-test/t/disabled.def:
      rpl_insert_id tests statement-based replication of INSERT ON
      DUPLICATE KEY UPDATE. This type of INSERT had BUG#24432, which is
      fixed in 5.0.38; we made the slave detect if it is connected to a
      <5.0.38 master and if so refuse to replicate.
      The problem is that this 5.0-rpl tree, even though it will produce
      the 5.0.38 release, still has a 5.0.36 version in configure.in.
      Thus rpl_insert_id fails. So I disable it. As soon as the 5.0-rpl
      tree gets the changesets from the main 5.0, its version will change
      to 5.0.38 and so the repl team will re-enable the test.
sql/slave.cc:
  the fix for BUG#24432 didn't make it into 5.0.36 and 5.1.16,
  so we need to adjust the bug-detection-based-on-version-number code.
2007-02-23 15:32:51 +01:00
unknown
d79f0973ce Bug#25197 repeat function returns null when using table field directly as count
- Return empty string also if count is unsigned and value is 0


mysql-test/r/func_str.result:
  Update test result
mysql-test/t/func_str.test:
  Add test case for using an unsigned value as count parameter
  for REPEAT
sql/item_strfunc.cc:
  The repeat function should return the emptystring if
  count is unsigned and equal to zero or
  count is signed and less than or equal to zero
2007-02-23 10:28:50 +01:00
unknown
44bdb07028 Merge quant.(none):/ext/mysql/bkroot/mysql-5.0-rpl
into  quant.(none):/ext/mysql/bk/mysql-5.0-bug25306


sql/slave.cc:
  Auto merged
2007-02-23 01:28:24 +01:00
unknown
9a8f8497f0 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/my/mysql-5.0


mysys/my_thr_init.c:
  Auto merged
ndb/include/util/OutputStream.hpp:
  Auto merged
ndb/src/common/debugger/EventLogger.cpp:
  Auto merged
ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp:
  Auto merged
ndb/src/kernel/blocks/dbdih/Dbdih.hpp:
  Auto merged
ndb/src/kernel/blocks/dblqh/Dblqh.hpp:
  Auto merged
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
  Auto merged
ndb/src/kernel/blocks/dbtc/Dbtc.hpp:
  Auto merged
ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
  Auto merged
ndb/src/kernel/blocks/dbtup/Dbtup.hpp:
  Auto merged
ndb/src/kernel/blocks/ndbcntr/Ndbcntr.hpp:
  Auto merged
ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp:
  Auto merged
ndb/src/kernel/blocks/qmgr/Qmgr.hpp:
  Auto merged
ndb/src/kernel/blocks/qmgr/QmgrMain.cpp:
  Auto merged
ndb/src/mgmapi/mgmapi.cpp:
  Auto merged
ndb/src/mgmsrv/InitConfigFileParser.cpp:
  Auto merged
ndb/src/mgmsrv/MgmtSrvr.cpp:
  Auto merged
ndb/src/mgmsrv/MgmtSrvr.hpp:
  Auto merged
ndb/src/mgmsrv/Services.cpp:
  Auto merged
ndb/src/ndbapi/ClusterMgr.hpp:
  Auto merged
ndb/src/ndbapi/SignalSender.cpp:
  Auto merged
sql/ha_ndbcluster.cc:
  Auto merged
sql/mysqld.cc:
  Auto merged
2007-02-22 20:32:19 +02:00
unknown
2b4851f0cf Merge bk-internal:/home/bk/mysql-5.0-maint
into  pilot.blaudden:/home/msvensson/mysql/comp_err_checksum/my50-comp_err_checksum


sql/share/errmsg.txt:
  Auto merged
2007-02-22 19:16:18 +01:00
unknown
bac1c946ce Bug#24617 Typo in Czech translation
sql/share/errmsg.txt:
  Add the missing "d"
2007-02-22 17:53:41 +01:00
unknown
c36e2c2332 Bug #26571 Different format specifiers in errmsg.txt
- Add check of format specifiers in error message strings
- Update error message text accordingly to be equal between all translations


extra/Makefile.am:
  comp_err uses my_cheksum, link with zlib
extra/comp_err.c:
  Add check of format specifiers in error message strings
sql/share/errmsg.txt:
  Update error messages after checks
  ---
  Remove the newly added space in error message, should not be there
2007-02-22 16:41:51 +01:00
unknown
50bd97a943 Fixed compiler warnings (for linux and win32 and win64)
Fixed a couple of usage of not initialized warnings (unlikely cases)


client/mysqldump.c:
  Fixed compiler warnings from 'max' build
client/mysqltest.c:
  Removed compiler warnings
cmd-line-utils/readline/xmalloc.c:
  Fixed compiler warnings from 'max' build
extra/comp_err.c:
  Fixed compiler warnings from 'max' build
extra/yassl/include/openssl/ssl.h:
  Changed prototype for SSL_set_fd() to fix compiler warnings (and possible errors) on windows 64 bit
extra/yassl/include/socket_wrapper.hpp:
  Moved socket_t to ssl.h, to be able to removed compiler warnings on windows 64 bit
extra/yassl/src/ssl.cpp:
  Changed prototype for SSL_set_fd() to fix compiler warnings (and possible errors) on windows 64 bit
extra/yassl/taocrypt/src/integer.cpp:
  Fixed compiler warnings
include/my_global.h:
  Added my_offsetof() macro from 5.1 to get rid of compiler warnings
innobase/include/ut0byte.ic:
  Fixed compiler warnings on win64
innobase/include/ut0ut.ic:
  Fixed compiler warnings on win64
libmysql/libmysql.def:
  Fixed compiler warnings on win64
myisam/mi_packrec.c:
  Fixed compiler warnings on win64
myisam/myisamchk.c:
  Fixed compiler warnings from 'max' build
mysys/base64.c:
  Fixed compiler warnings on win64
mysys/mf_keycache.c:
  Fixed compiler warnings from 'max' build
mysys/my_getopt.c:
  Fixed compiler warnings from 'max' build
mysys/my_init.c:
  Fixed compiler warnings from 'max' build
mysys/my_thr_init.c:
  Fixed compiler warnings
mysys/ptr_cmp.c:
  Fixed compiler warnings from 'max' build
ndb/include/kernel/signaldata/DictTabInfo.hpp:
  Fixed compiler warnings
server-tools/instance-manager/mysql_connection.cc:
  Fixed compiler warnings
server-tools/instance-manager/mysqlmanager.cc:
  Fixed compiler warnings
sql/filesort.cc:
  Initalize variable that was used unitialized in error conditions
sql/ha_berkeley.cc:
  Moved get_auto_primary_key() here as int5store() gives (wrong) compiler warnings in win64
sql/ha_berkeley.h:
  Moved get_auto_primary_key() to ha_berkeley.cc
sql/ha_innodb.cc:
  Fixed compiler warnings
sql/item.cc:
  Fixed compiler warnings from 'max' build
sql/item_timefunc.cc:
  Fixed compiler warnings
sql/mysqld.cc:
  Fixed compiler warnings
sql/sql_acl.cc:
  Fixed compiler warnings from 'max' build
sql/sql_base.cc:
  Fixed compiler warnings from 'max' build
sql/sql_insert.cc:
  Initialize variable that may be used unitialized on error conditions (not fatal)
sql/sql_prepare.cc:
  Fixed compiler warnings from 'max' build
sql/sql_select.cc:
  Fixed compiler warnings
sql/sql_show.cc:
  Fixed compiler warnings
sql/udf_example.def:
  Fixed compiler warnings on win64
sql/unireg.cc:
  Initialize variable that may be used unitialized on error conditions
strings/ctype-ucs2.c:
  Fixed compiler warnings
strings/ctype-utf8.c:
  Fixed compiler warnings
strings/decimal.c:
  Fixed compiler warnings
support-files/compiler_warnings.supp:
  Ignore warnings from sql_yacc.cc that are hard to remove
  Ignore some not important warnings from windows 64 bit build
tools/mysqlmanager.c:
  Fixed compiler warnings
2007-02-22 16:59:57 +02:00
unknown
a1234294c6 Merge moonbone.local:/mnt/gentoo64/work/bk-trees/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/23800-bug1-5.0-opt-mysql


sql/item.cc:
  Auto merged
sql/item.h:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sql_select.cc:
  Auto merged
2007-02-21 23:18:17 +03:00
unknown
f8855142d7 Bug#23800: Outer fields in correlated subqueries is used in a temporary table
created for sorting.

Any outer reference in a subquery was represented by an Item_field object.
If the outer select employs a temporary table all such fields should be
replaced with fields from that temporary table in order to point to the 
actual data. This replacement wasn't done and that resulted in a wrong
subquery evaluation and a wrong result of the whole query.

Now any outer field is represented by two objects - Item_field placed in the
outer select and Item_outer_ref in the subquery. Item_field object is
processed as a normal field and the reference to it is saved in the
ref_pointer_array. Thus the Item_outer_ref is always references the correct
field. The original field is substituted for a reference in the
Item_field::fix_outer_field() function.

New function called fix_inner_refs() is added to fix fields referenced from
inner selects and to fix references (Item_ref objects) to these fields.

The new Item_outer_ref class is a descendant of the Item_direct_ref class.
It additionally stores a reference to the original field and designed to
behave more like a field.


sql/item.cc:
  Bug#23800: Correlated sub query returning incorrect results when operated upon.
  Now all outer fields are substituted with references to them (Item_outer_ref objects)
  in the Item_field::fix_outer_field() function.
  The original field is saved in the Item_outer_ref object.
sql/item.h:
  Bug#23800: Correlated sub query returning incorrect results when operated upon.
  Added the Item_outer_ref class.
sql/mysql_priv.h:
  Bug#23800: Correlated sub query returning incorrect results when operated upon.
  Added the fix_inner_refs() function prototype.
sql/sql_delete.cc:
  Bug#23800: Correlated sub query returning incorrect results when operated upon.
  Added call to the fix_inner_refs() function.
sql/sql_select.cc:
  Bug#23800: Correlated sub query returning incorrect results when operated upon.
  The new function called fix_inner_refs() is added.
mysql-test/r/subselect.result:
  Added a test case for bug#23800: Correlated sub query returning incorrect results when
  operated upon.
sql/sql_update.cc:
  Bug#23800: Correlated sub query returning incorrect results when operated upon.
  Added call to the fix_inner_refs() function.
mysql-test/r/subselect3.result:
  Corrected test cases result after fix for bug#23800: Correlated sub query returning
  incorrect results when operated upon.
mysql-test/t/subselect.test:
  Added a test case for bug#23800: Correlated sub query returning incorrect results when
  operated upon.
sql/sql_lex.cc:
  Bug#23800: Correlated sub query returning incorrect results when operated upon.
  Added cleanup of the inner_refs_list.
sql/sql_lex.h:
  Bug#23800: Correlated sub query returning incorrect results when operated upon.
  The inner_refs_list is added to the SELECT_LEX class.
2007-02-21 23:00:32 +03:00
unknown
e5706080f0 After merge fixes
This also fixes a bug in counting number of rows that are updated when we have many simultanous queries


extra/yassl/src/ssl.cpp:
  Removed compiler warning
extra/yassl/taocrypt/src/asn.cpp:
  After merge fixes
extra/yassl/testsuite/testsuite.cpp:
  Removed compiler warning
mysql-test/r/ndb_lock.result:
  After merge fixes
ndb/src/common/debugger/EventLogger.cpp:
  Removed compiler warning
ndb/src/common/util/ConfigValues.cpp:
  Removed compiler warning
ndb/src/common/util/NdbSqlUtil.cpp:
  Removed compiler warning
ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
  Removed compiler warning
ndb/src/kernel/blocks/dbtup/DbtupIndex.cpp:
  Removed compiler warning
ndb/src/kernel/blocks/dbtup/DbtupSystemRestart.cpp:
  Removed compiler warning
ndb/src/kernel/vm/ndbd_malloc.cpp:
  Removed compiler warning
ndb/src/mgmclient/main.cpp:
  Removed compiler warning
ndb/src/ndbapi/SignalSender.cpp:
  Removed compiler warning
sql/ha_ndbcluster.cc:
  Some extra safety
sql/item_cmpfunc.cc:
  After merge fixes
sql/item_subselect.cc:
  After merge fixes
sql/sql_insert.cc:
  After merge fixes
  (This actually fixes a bug in old code when many connections are in use)
support-files/compiler_warnings.supp:
  Removed some suppressed warnings
2007-02-21 19:38:40 +02:00
unknown
1953d57d78 Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0
into  poseidon.mysql.com:/home/tomas/mysql-5.0
2007-02-21 21:50:43 +07:00
unknown
1384e64005 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/my/mysql-5.0


BitKeeper/etc/ignore:
  auto-union
BUILD/SETUP.sh:
  Auto merged
Makefile.am:
  Auto merged
client/mysql.cc:
  Auto merged
cmd-line-utils/readline/display.c:
  Auto merged
configure.in:
  Auto merged
extra/yassl/include/buffer.hpp:
  Auto merged
extra/yassl/include/crypto_wrapper.hpp:
  Auto merged
extra/yassl/include/yassl_imp.hpp:
  Auto merged
extra/yassl/include/yassl_int.hpp:
  Auto merged
extra/yassl/src/crypto_wrapper.cpp:
  Auto merged
extra/yassl/taocrypt/include/algebra.hpp:
  Auto merged
extra/yassl/taocrypt/include/des.hpp:
  Auto merged
extra/yassl/taocrypt/include/hash.hpp:
  Auto merged
extra/yassl/taocrypt/include/hmac.hpp:
  Auto merged
extra/yassl/taocrypt/include/modarith.hpp:
  Auto merged
extra/yassl/taocrypt/include/modes.hpp:
  Auto merged
extra/yassl/taocrypt/include/rsa.hpp:
  Auto merged
extra/yassl/taocrypt/include/type_traits.hpp:
  Auto merged
extra/yassl/taocrypt/mySTL/list.hpp:
  Auto merged
extra/yassl/taocrypt/src/aes.cpp:
  Auto merged
extra/yassl/taocrypt/src/algebra.cpp:
  Auto merged
extra/yassl/testsuite/testsuite.cpp:
  Auto merged
include/my_global.h:
  Auto merged
include/my_pthread.h:
  Auto merged
libmysqld/lib_sql.cc:
  Auto merged
myisam/mi_open.c:
  Auto merged
mysql-test/mysql-test-run.pl:
  Auto merged
mysql-test/r/mysqltest.result:
  Auto merged
mysql-test/t/mysqltest.test:
  Auto merged
mysys/default.c:
  Auto merged
ndb/src/common/transporter/Transporter.cpp:
  Auto merged
ndb/src/common/util/File.cpp:
  Auto merged
ndb/src/common/util/SocketClient.cpp:
  Auto merged
ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp:
  Auto merged
ndb/src/kernel/blocks/dbtc/Dbtc.hpp:
  Auto merged
ndb/src/kernel/blocks/qmgr/Qmgr.hpp:
  Auto merged
ndb/src/kernel/blocks/qmgr/QmgrMain.cpp:
  Auto merged
ndb/src/mgmapi/mgmapi.cpp:
  Auto merged
ndb/src/mgmclient/CommandInterpreter.cpp:
  Auto merged
ndb/src/mgmsrv/ConfigInfo.cpp:
  Auto merged
ndb/src/mgmsrv/MgmtSrvr.cpp:
  Auto merged
ndb/src/ndbapi/ClusterMgr.hpp:
  Auto merged
ndb/src/ndbapi/Ndb.cpp:
  Auto merged
ndb/src/ndbapi/NdbScanOperation.cpp:
  Auto merged
ndb/src/ndbapi/SignalSender.cpp:
  Auto merged
sql/field.cc:
  Auto merged
sql/filesort.cc:
  Auto merged
sql/ha_myisammrg.cc:
  Auto merged
sql/handler.cc:
  Auto merged
sql/item.cc:
  Auto merged
sql/item.h:
  Auto merged
sql/item_cmpfunc.h:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/item_strfunc.cc:
  Auto merged
sql/item_subselect.h:
  Auto merged
sql/item_sum.cc:
  Auto merged
sql/item_timefunc.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/net_serv.cc:
  Auto merged
sql/opt_range.cc:
  Auto merged
sql/opt_range.h:
  Auto merged
sql/repl_failsafe.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/set_var.h:
  Auto merged
sql/slave.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_lex.cc:
  Auto merged
sql/sql_lex.h:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_prepare.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_union.cc:
  Auto merged
sql/sql_update.cc:
  Auto merged
sql-common/client.c:
  Auto merged
sql/sql_view.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
sql/table.cc:
  Auto merged
sql/unireg.cc:
  Auto merged
extra/yassl/taocrypt/src/asn.cpp:
  Manual merge (Fix shadowed variable name)
extra/yassl/taocrypt/test/test.cpp:
  No changes
ndb/src/common/util/ConfigValues.cpp:
  Manual merge (Fix shadowed variable name)
sql/field.h:
  manual merge
sql/ha_myisam.cc:
  manual merge
sql/ha_ndbcluster.cc:
  manual merge
sql/item_cmpfunc.cc:
  manual merge
sql/item_subselect.cc:
  Manual merge (Fix shadowed variable name)
sql/mysqld.cc:
  no changes
2007-02-21 14:07:08 +02:00
unknown
2f3a17b63e Fixed unsafe define of uint4korr()
Fixed that --extern works with mysql-test-run.pl
Small trivial cleanups


include/my_global.h:
  Fixed unsafe define of uint4korr()
mysql-test/lib/mtr_report.pl:
  Removed wrong messages when using --extern
mysql-test/mysql-test-run.pl:
  Fixed that --extern works
  Print help on stdout instead of stderr (make it easier to pipe it to less)
mysql-test/t/ndb_lock.test:
  Added other possible error code
sql/sql_prepare.cc:
  Removed not needed casts
2007-02-21 13:02:57 +02:00
unknown
cbb38476e1 Fix for bug #26038: X() value of empty NOT NULL POINT is neither NULL nor NOT NULL
Having maybe_null flag unset for geometry/spatial functions leads to
wrong Item_func_isnull::val_int()'s results.
Fix: set maybe_null flag and add is_null() methods.


mysql-test/r/gis.result:
  Fix for bug #26038: X() value of empty NOT NULL POINT is neither NULL nor NOT NULL
    - test result.
mysql-test/t/gis.test:
  Fix for bug #26038: X() value of empty NOT NULL POINT is neither NULL nor NOT NULL
    - test case.
sql/item_geofunc.cc:
  Fix for bug #26038: X() value of empty NOT NULL POINT is neither NULL nor NOT NULL
    - set maybe_null flag for Item_geometry_func and Item_func_as_wkt.
    - moved length check to the beginnig of the 
      Item_func_spatial_collection::val_str() to affect geometry 
      collection objects at once.
    - changed Item_func_isempty::val_int() and Item_func_issimple::val_int()
      to properly handle null_value.
sql/item_geofunc.h:
  Fix for bug #26038: X() value of empty NOT NULL POINT is neither NULL nor NOT NULL
    - set maybe_null flag for geometry/spatial functions.
    - added is_null() to Item_geometry_func and Item_func_spatial_rel
      classes.
sql/spatial.cc:
  Fix for bug #26038: X() value of empty NOT NULL POINT is neither NULL nor NOT NULL
    - changed return type of Geometry::create_from_wkb() to be 
      consistent with Geometry::create_from_wkt(), now it returns
      Geometry object or NULL in case of error.
sql/spatial.h:
  Fix for bug #26038: X() value of empty NOT NULL POINT is neither NULL nor NOT NULL
    - changed return type of Geometry::create_from_wkb() to be 
      consistent with Geometry::create_from_wkt(), now it returns
      Geometry object or NULL in case of error.
2007-02-21 14:45:19 +04:00
unknown
96753a29ed Merge polly.local:/tmp/maint/bug25137/my50-bug25137
into  polly.local:/home/kaa/src/maint/mysql-5.0-maint


mysql-test/r/sp.result:
  Auto merged
mysql-test/t/innodb.test:
  Auto merged
mysql-test/t/mysql.test:
  Auto merged
mysql-test/t/mysqlbinlog.test:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
sql/mysqld.cc:
  Auto merged
mysql-test/r/mysqlbinlog.result:
  SCCS merged
2007-02-20 22:23:51 +03:00
unknown
629b9cf87f Bug#20166 mysql-test-run.pl does not test system privilege tables creation
- Part 2, add @@hostname system variable


mysql-test/r/variables.result:
  Add testcase for @@hostname
mysql-test/t/variables.test:
  Add testcase for @@hostname
sql/log.cc:
  Use pidfile_name as base when generating the default log name
sql/mysqld.cc:
  Init "glob_hostname" to that of hostname, fallback to "localhost"
  if 'gethostname' should fail.
  Init "pidfile_name" to hostname.pid and fallback to "mysql.pid" if
  'gethostname' should fail
sql/set_var.cc:
  Add new system variable "hostname"
2007-02-20 16:24:38 +01:00
unknown
aafe189af0 Bug#20166 mysql-test-run.pl does not test system privilege tables creation
- Add test of bootstrap mode
 - Make mysqld return error if bootstrap failed  


mysql-test/mysql-test-run.pl:
  Remove options --skip-grant-tables as that is always
  turned on by --bootstrap
  Remove options --console as that does not affect --bootstrap mode
  at all
  Add environment variable MYSQLD_BOOTSTRAP_CMD containing path 
  to mysqld and the arguments used for bootstrap
sql/sql_parse.cc:
  Abort bootstrap if execution fails
  Report error to stderr/log
mysql-test/r/bootstrap.result:
  New BitKeeper file ``mysql-test/r/bootstrap.result''
mysql-test/t/bootstrap.test:
  New BitKeeper file ``mysql-test/t/bootstrap.test''
2007-02-20 12:48:15 +01:00
unknown
a06fe4abde Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  rakia.gmz:/home/kgeorge/mysql/autopush/B19717-5.0-opt
2007-02-19 17:35:19 +02:00
unknown
6e8be53804 Merge kpdesk.mysql.com:/home/thek/dev/bug23240/my41-bug23240
into  kpdesk.mysql.com:/home/thek/dev/mysql-4.1-runtime


sql/sql_parse.cc:
  Auto merged
2007-02-19 15:26:07 +01:00
unknown
a3be5294e6 Merge kpdesk.mysql.com:/home/thek/dev/bug23240/my50-bug23240
into  kpdesk.mysql.com:/home/thek/dev/mysql-5.0-runtime


sql/sql_parse.cc:
  Auto merged
2007-02-19 15:24:01 +01:00
unknown
a48276798b Bug#23240 --init_file statements with NOW() reports '1970-01-01 11:00:00'as the date time
- Starting time of a query sent by bootstrapping wasn't initialized
  and starting time defaulted to 0. This later used value by NOW-
  item and was translated to 1970-01-01 11:00:00.
- Marketing the time with thd->set_time() before the call to
  mysql_parse resolves this issue.
- set_time was refactored to be part of the thd->init_for_queries-
  process.


mysql-test/r/init_file.result:
  Manual merge from 4.1
mysql-test/std_data/init_file.dat:
  Manual merge from 4.1
sql/sql_class.cc:
  - Moved set_time into init_for_queries process.
2007-02-19 14:57:54 +01:00
unknown
3f9876d77e Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  rakia.gmz:/home/kgeorge/mysql/autopush/B19717-5.0-opt
2007-02-19 15:45:01 +02:00
unknown
6d537f01fd Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  rakia.gmz:/home/kgeorge/mysql/autopush/B25831-5.0-opt


sql/item.h:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_prepare.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2007-02-19 14:47:16 +02:00
unknown
a97fd19371 Bug #25831: Deficiencies in INSERT ... SELECT ... field name resolving.
Several problems fixed: 
  1. There was a "catch-all" context initialization in setup_tables()
    that was causing the table that we insert into to be visible in the 
    SELECT part of an INSERT .. SELECT .. statement with no tables in
    its FROM clause. This was making sure all the under-initialized
    contexts in various parts of the code are not left uninitialized.
    Fixed by removing the "catch-all" statement and initializing the 
    context in the parser.
  2. Incomplete name resolution context when resolving the right-hand
    values in the ON DUPLICATE KEY UPDATE ... part of an INSERT ... SELECT ...
    caused columns from NATURAL JOIN/JOIN USING table references in the
    FROM clause of the select to be unavailable.
    Fixed by establishing a proper name resolution context.
  3. When setting up the special name resolution context for problem 2
    there was no check for cases where an aggregate function without a
    GROUP BY effectively takes the column from the SELECT part of an 
    INSERT ... SELECT unavailable for ON DUPLICATE KEY UPDATE.
    Fixed by checking for that condition when setting up the name 
    resolution context.


mysql-test/r/insert_update.result:
  Bug #25831: Deficiencies in INSERT ... SELECT ... field name resolving.
   - test case
mysql-test/t/insert_update.test:
  Bug #25831: Deficiencies in INSERT ... SELECT ... field name resolving.
   - test case
sql/item.h:
  Bug #25831: Deficiencies in INSERT ... SELECT ... field name resolving.
   - save_next_local is not referenced any more outside class methods
sql/sql_base.cc:
  Bug #25831: Deficiencies in INSERT ... SELECT ... field name resolving.
   - removed a "catch-all" code to cater for correct context initialization
sql/sql_help.cc:
  Bug #25831: Deficiencies in INSERT ... SELECT ... field name resolving.
   - fixed the name resolution context initialization
sql/sql_insert.cc:
  Bug #25831: Deficiencies in INSERT ... SELECT ... field name resolving.
   - Fixed the context of resolving the values in INSERT SELECT ON UPDATE
sql/sql_prepare.cc:
  Bug #25831: Deficiencies in INSERT ... SELECT ... field name resolving.
   - Correct context for name resolution of prepared INSERT .. SELECT
sql/sql_union.cc:
  Bug #25831: Deficiencies in INSERT ... SELECT ... field name resolving.
   - fixed the name resolution context initialization
sql/sql_yacc.yy:
  Bug #25831: Deficiencies in INSERT ... SELECT ... field name resolving.
   - Set the context here instead of setup_tables()
2007-02-19 14:39:37 +02:00
unknown
d7b2f201f4 Merge pilot.blaudden:/home/msvensson/mysql/comp_err_checksum/my50-comp_err_checksum
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint


sql/share/errmsg.txt:
  Auto merged
2007-02-19 12:50:36 +01:00
unknown
db36a2aa5d Bug#18743: Several test cases fails if "classic" configuration in 5.0
The problem happened because those tests were using "cp932" and "ucs2" without checking whether these character sets are available. This fix moves test parts to make character set specific parts be tested only if they are:
- some parts were moved to "ctype_ucs.test" and "ctype_cp932.test"
- some parts were moved to the newly added tests "innodb-ucs2.test", "mysqlbinglog-cp932.test" and "sp-ucs2.test"


mysql-test/r/ctype_cp932.result:
  Moved cp932-specific test case from mysql.test
mysql-test/r/innodb.result:
  Moved ucs2-specific test cases to innodb-ucs2.test
mysql-test/r/mysql.result:
  Move cp932-specific test cases to ctype_cp932.test
mysql-test/r/mysqlbinlog.result:
  Moved cp932-specific test case to mysqlbinlog-cp932.test
mysql-test/r/sp.result:
  Moved ucs2-specific test case to sp-ucs2.test
mysql-test/t/ctype_cp932.test:
  Moved cp932-specific test case from mysql.test
mysql-test/t/ctype_ucs2_def-master.opt:
  Use the comma-separated list of character sets to avoid mysql-test errors when ucs2 is not available in the server
mysql-test/t/ctype_ucs2_def.test:
  Added requirement for ucs2 in the server
mysql-test/t/innodb.test:
  Moved ucs2-specific test cases to innodb-ucs2.test
mysql-test/t/mysql.test:
  Move cp932-specific test cases to ctype_cp932.test
mysql-test/t/mysqlbinlog.test:
  Moved cp932-specific test case to mysqlbinlog-cp932.test
mysql-test/t/sp.test:
  Moved ucs2-specific test case to sp-ucs2.test
sql/mysqld.cc:
  Allow specifying several character sets for test purposes, to make "mysqld" start even if the character set being tested is not compiled:
  mysqld --default-character-set=ucs2,latin1
  The first available character set will be chosen.
mysql-test/r/innodb-ucs2.result:
  New BitKeeper file ``mysql-test/r/innodb-ucs2.result''
mysql-test/r/mysqlbinlog-cp932.result:
  New BitKeeper file ``mysql-test/r/mysqlbinlog-cp932.result''
mysql-test/r/sp-ucs2.result:
  New BitKeeper file ``mysql-test/r/sp-ucs2.result''
mysql-test/t/innodb-ucs2.test:
  New BitKeeper file ``mysql-test/t/innodb-ucs2.test''
mysql-test/t/mysqlbinlog-cp932.test:
  New BitKeeper file ``mysql-test/t/mysqlbinlog-cp932.test''
mysql-test/t/sp-ucs2.test:
  New BitKeeper file ``mysql-test/t/sp-ucs2.test''
2007-02-19 13:57:06 +03:00
unknown
114e5b8ddb Bug#23240 --init-file statements with NOW() reports '1970-01-01 11:00:00'as the date time
- Starting time of a query sent by file bootstrapping wasn't initialized
  and starting time defaulted to 0. This later used value by the Now-
  item and is translated to 1970-01-01 11:00:00.
- marking the time with thd->set_time() before the call to 
  mysql_parse resolves this issue.


mysql-test/r/init_file.result:
  Appended test case
mysql-test/std_data/init_file.dat:
  Appended test case
mysql-test/t/init_file.test:
  Appended test case
2007-02-19 09:37:34 +01:00
unknown
4b51bbde8c Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  olga.mysql.com:/home/igor/mysql-5.0-opt


sql/sql_select.cc:
  Auto merged
2007-02-16 09:39:08 -08:00
unknown
98f87d9702 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/16630-bug-5.0-opt-mysql


sql/item.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
2007-02-16 19:44:54 +03:00
unknown
d5813a06f6 Bug#16630: The update fields of the INSERT .. SELECT .. ON DUPLICATE KEY
UPDATE contains wrong data if the SELECT employs a temporary table.

If the UPDATE values of the INSERT .. SELECT .. ON DUPLICATE KEY UPDATE
statement contains fields from the SELECT part and the select employs a
temporary table then those fields will contain wrong values because they
aren't corrected to get data from the temporary table.

The solution is to add these fields to the selects all_fields list,
to store pointers to those fields in the selects ref_pointer_array and
to access them via Item_ref objects.

The substitution for Item_ref objects is done in the new function called 
Item_field::update_value_transformer(). It is called through the
item->transform() mechanism at the end of the select_insert::prepare()
function.


sql/item.cc:
  Bug#16630: The update fields of the INSERT .. SELECT .. ON DUPLICATE KEY
  UPDATE contains wrong data if the SELECT employs a temporary table.
  The new method Item_field::update_value_transformer() is added. It
  substitutes fields in the update values list for references 
  (Item_ref objects) to them.
sql/item.h:
  Bug#16630: The update fields of the INSERT .. SELECT .. ON DUPLICATE KEY
  UPDATE contains wrong data if the SELECT employs a temporary table.
  The update_value_transformer() method is added to the Item and to the
  Item_field classes.
sql/sql_insert.cc:
  Bug#16630: The update fields of the INSERT .. SELECT .. ON DUPLICATE KEY
  UPDATE contains wrong data if the SELECT employs a temporary table.
  Traverse update values and substitute fields from the select for
  references (Item_ref objects) to them.
sql/sql_select.cc:
  Bug#16630: The update fields of the INSERT .. SELECT .. ON DUPLICATE KEY
  UPDATE contains wrong data if the SELECT employs a temporary table.
  Traverse update values and substitute fields from the select for
  references (Item_ref objects) to them.
mysql-test/r/insert_select.result:
  Added a test case for bug#16630: The update fields of the INSERT .. SELECT ..
  ON DUPLICATE KEY UPDATE contains wrong data if the SELECT employs a 
  temporary table.
mysql-test/t/insert_select.test:
  Added a test case for bug#16630: The update fields of the INSERT .. SELECT ..
  ON DUPLICATE KEY UPDATE contains wrong data if the SELECT employs a 
  temporary table.
2007-02-16 19:39:28 +03:00
unknown
a858d8e84a Merge weblab.(none):/home/marcsql/TREE/mysql-5.0-base
into  weblab.(none):/home/marcsql/TREE/mysql-5.0-rt-merge


sql/item_cmpfunc.cc:
  Auto merged
sql/item_cmpfunc.h:
  Auto merged
sql/item_subselect.cc:
  Auto merged
sql/item_subselect.h:
  Auto merged
sql/sql_lex.cc:
  Auto merged
sql/sql_lex.h:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2007-02-16 09:02:02 -07:00
unknown
bd502ac625 Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0
into  poseidon.mysql.com:/home/tomas/mysql-5.0-ndb
2007-02-16 20:07:05 +07:00
unknown
ba1de16601 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  chilla.local:/home/mydev/mysql-5.0-axmrg
2007-02-16 10:39:45 +01:00
unknown
92584188d4 Merge 192.168.0.10:mysql/mysql-5.0-maint
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint


sql/mysql_priv.h:
  Auto merged
2007-02-15 15:56:38 +01:00
unknown
9dfb1d9011 Backport from the Falcon tree.
When opening/creating the transaction coordinator's log, if binlog is
used, the tc log is the binlog so we use the binlog's name; otherwise
we use the mmap-based log, named after the mandatory argument of the
--log-tc option (meant for that).


sql/log.cc:
  fixing wrong order of arguments to my_create()
  (3rd param is the desired modes of the file; "0" lead to no rights
  for anybody on the file).
sql/mysqld.cc:
  When opening/creating the transaction coordinator's log, if binlog is
  used, the tc log is the binlog so we use the binlog's name; otherwise
  we use the mmap-based log, named after the mandatory argument of the
  --log-tc option (meant for that).
2007-02-15 15:50:56 +01:00
unknown
f6834c02ca Fix for BUG#25507 "multi-row insert delayed + auto increment causes
duplicate key entries on slave" (two concurrrent connections doing
multi-row INSERT DELAYED to insert into an auto_increment column,
caused replication slave to stop with "duplicate key error" (and
binlog was wrong)), and BUG#26116 "If multi-row INSERT
DELAYED has errors, statement-based binlogging breaks" (the binlog
was not accounting for all rows inserted, or slave could stop).
The fix is that: if (statement-based) binlogging is on, a multi-row
INSERT DELAYED is silently converted to a non-delayed INSERT.
Note: it is not possible to test BUG#25507 in 5.0 (requires mysqlslap),
so it is tested only in the changeset for 5.1. However, BUG#26116
is tested here, and the fix for BUG#25507 is the same code change.


mysql-test/r/innodb-replace.result:
  result update
mysql-test/t/innodb-replace.test:
  now that multi-row delayed inserts are converted to normal inserts
  if the statement-based binlog is enabled,
  no error is issued even if this engine does not support INSERT DELAYED,
  as the insert does not go through the INSERT DELAYED code.
  To preserve the goal of this test, we change the statements to single-
  row inserts.
sql/sql_insert.cc:
  A multi-row INSERT DELAYED cannot be recorded to a statement-based
  binlog in a way that describes the insertions actually done;
  in that case we fallback to a non-delayed INSERT.
mysql-test/r/rpl_insert_delayed.result:
  result. Master and slave match.
mysql-test/t/rpl_insert_delayed.test:
  Test for BUG#26116 (see if one error at first row on master makes the
  slave's data incorrect, see if one error at second row on master
  makes slave stop).
2007-02-15 15:39:03 +01:00