Commit graph

48380 commits

Author SHA1 Message Date
unknown
cfdd203549 Bug#28641 CREATE EVENT with '2038.01.18 03:00:00' let server crash.
Creating an EVENT to be executed at a time close to the end of the allowed
range (2038.01.19 03:14:07 UTC) would cause the server to crash. The
expected behavior is to accept all calendar times within the interval and
reject all other values without crashing.

This patch replaces the function 'sec_to_epoch_TIME' with a Time_zone API call.
This function was broken because it invoked the internal function 'sec_to_epoch'
without respecting the restrictions on the function parameters (and this caused
assertion failure). It also was used as a reverse function to
Time_zone_utc::gmt_sec_to_TIME which it isn't.


mysql-test/r/events_bugs.result:
  Added test case
mysql-test/t/events_bugs.test:
  Added test case
sql/event_data_objects.cc:
  Replaced function 'sec_since_epoch_TIME' since it was implemented as
  a wrapper around 'sec_since_epoch' without taking parameter restrictions
  into account. The function was used to load information about event
  execution time from mysql.events table. Further more, the function wasn't
  the inverse function of Time_zone_utc::gmt_sec_to_TIME() which was used
  by events code to store information about event execution time.
sql/event_db_repository.cc:
  Replaced my_tz_UTC object with my_tz_OFFSET0 object because the first one
  doesn't supply us with a bijective MYSQL_TIME<->my_time_t translation. Instead
  the function sec_since_epoch_TIME was used as a reverse function to the method
  my_tz_UTC::gmt_sec_to_TIME.
sql/event_queue.cc:
  Replaced my_tz_UTC object with my_tz_OFFSET0 object because the first one
  doesn't supply us with a bijective MYSQL_TIME<->my_time_t translation. Instead
  the function sec_since_epoch_TIME was used as a reverse function to the method
  my_tz_UTC::gmt_sec_to_TIME.
sql/tztime.cc:
  * Remove function 'sec_since_epoch_TIME' since it was implemented as
  a wrapper around 'sec_since_epoch' without taking parameter restrictions
  into account. The function was used to load information about event
  execution time from mysql.events table. Further more, the function wasn't
  the inverse function of Time_zone_utc::gmt_sec_to_TIME() which was used
  by events code to store information about event execution time.
  
  * Added static Time_zone object for UTC+0 time zone.
sql/tztime.h:
  Include extern pointer to static Time_zone object.
2007-07-25 09:43:49 +02:00
unknown
8bbaf6addd Merge bk-internal.mysql.com:/home/bk/mysql-5.1-engines
into  bodhi.(none):/opt/local/work/mysql-5.1-runtime


mysql-test/include/mix1.inc:
  Auto merged
mysql-test/r/innodb_mysql.result:
  Auto merged
2007-07-17 13:32:19 +04:00
unknown
3258d996a4 Merge bodhi.(none):/opt/local/work/mysql-5.0-runtime
into  bodhi.(none):/opt/local/work/mysql-5.1-runtime
2007-07-17 13:13:49 +04:00
unknown
dd381deafc Merge bk-internal.mysql.com:/home/bk/mysql-5.1-engines
into  bodhi.(none):/opt/local/work/mysql-5.1-runtime


mysql-test/r/events_bugs.result:
  Auto merged
mysql-test/r/show_check.result:
  Auto merged
mysql-test/r/sp.result:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/share/errmsg.txt:
  Auto merged
2007-07-17 13:10:02 +04:00
unknown
cff1088d03 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-engines
into  bodhi.(none):/opt/local/work/mysql-5.0-runtime
2007-07-17 13:08:23 +04:00
unknown
342a894527 Merge svojtovich@bk-internal.mysql.com:/home/bk/mysql-5.1-engines
into  mysql.com:/home/svoj/devel/mysql/test/mysql-5.1-engines


mysql-test/t/disabled.def:
  SCCS merged
2007-07-17 13:20:32 +05:00
unknown
cc533adf9c Disabled a test case that reports an error on OSX. 2007-07-17 09:52:55 +02:00
unknown
6e3d4f1c98 Post-merge fixes
Disabled test cases that produce errors in a "server log".


mysql-test/t/disabled.def:
  Post-merge fixes
  Removed 'binlog_innodb' from the wrong disabled.def file.
2007-07-17 09:25:01 +02:00
unknown
b5ad823b65 Fix a build break on 64 bit (uint and size_t are distinct types). 2007-07-17 01:30:57 +04:00
unknown
f614b4b01f Merge chilla.local:/home/mydev/mysql-5.0-axmrg
into  chilla.local:/home/mydev/mysql-5.1-axmrg
2007-07-16 23:21:08 +02:00
unknown
351f811f00 Merge chilla.local:/home/mydev/mysql-5.1-amain
into  chilla.local:/home/mydev/mysql-5.1-axmrg
2007-07-16 23:19:45 +02:00
unknown
0a5ece1127 Merge bodhi.(none):/opt/local/work/mysql-5.0-runtime
into  bodhi.(none):/opt/local/work/mysql-5.1-runtime


mysql-test/t/sp.test:
  Auto merged
sql/item.h:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
mysql-test/include/mix1.inc:
  Manual merge.
mysql-test/r/innodb_mysql.result:
  Manual merge.
2007-07-17 01:06:47 +04:00
unknown
bc642e1132 Post-merge fixes (merge from the main).
mysql-test/r/innodb_mysql.result:
  Update test results (merge from the main tree).
mysql-test/r/query_cache.result:
  Update test results (merge from the main tree).
mysql-test/r/sp.result:
  Update test results (merge from the main tree).
mysql-test/t/query_cache.test:
  Use --echo End of to simplify future merges.
sql/handler.h:
  st_table_list -> TABLE_LIST
sql/item_create.cc:
  A post-merge fix (this code is in sql_yacc.yy in 5.0)
sql/rpl_utility.h:
  st_table_list -> TABLE_LIST
sql/sp.cc:
  A post-merge fix.
sql/sp_head.cc:
  In 5.1 memdup_root returns void*.
sql/sql_show.cc:
  st_table_list -> TABLE_LIST
sql/sql_show.h:
  st_table_list -> TABLE_LIST
sql/sql_yacc.yy:
  A post-merge fix.
sql/table.cc:
  st_table_list -> TABLE_LIST
sql/table.h:
  st_table_list -> TABLE_LIST
2007-07-17 00:59:21 +04:00
unknown
b94fb82847 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  bodhi.(none):/opt/local/work/mysql-5.0-runtime


mysql-test/t/sp.test:
  Auto merged
sql/item.h:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
mysql-test/r/innodb_mysql.result:
  Manual merge.
mysql-test/t/innodb_mysql.test:
  Manual merge.
2007-07-16 23:41:28 +04:00
unknown
d3c6816362 Merge bodhi.(none):/opt/local/work/mysql-5.0-runtime
into  bodhi.(none):/opt/local/work/mysql-5.1-runtime


sql/sql_parse.cc:
  Manual merge.
2007-07-16 23:38:55 +04:00
unknown
de2089264f Bug#29050 Creation of a legal stored procedure fails if a database is not
selected prior: ensure the fix also works for information_schema
tables.


sql/sql_parse.cc:
  Ensure the fix for Bug#29050 works for information_schema tables.
2007-07-16 23:37:02 +04:00
unknown
9562c54a5c Merge bodhi.(none):/opt/local/work/mysql-5.0-runtime
into  bodhi.(none):/opt/local/work/mysql-5.1-runtime


mysql-test/r/trigger.result:
  Auto merged
mysql-test/t/query_cache.test:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
mysql-test/t/trigger.test:
  Auto merged
sql/item.cc:
  Auto merged
sql/item.h:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sp_head.h:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_db.cc:
  Auto merged
sql/sql_lex.cc:
  Auto merged
sql/sql_lex.h:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/sql_trigger.h:
  Auto merged
sql/sql_view.cc:
  Auto merged
sql/table.cc:
  Auto merged
storage/myisam/ha_myisam.h:
  Auto merged
mysql-test/include/mix1.inc:
  Manual merge.
mysql-test/r/information_schema.result:
  Manual merge.
mysql-test/r/innodb_mysql.result:
  Manual merge.
mysql-test/r/query_cache.result:
  Manual merge.
mysql-test/r/sp.result:
  Manual merge.
mysql-test/t/information_schema.test:
  Manual merge.
sql/handler.h:
  Manual merge.
sql/sp.cc:
  Manual merge.
sql/sp_head.cc:
  Manual merge.
sql/sql_prepare.cc:
  Manual merge.
sql/sql_trigger.cc:
  Manual merge.
sql/sql_yacc.yy:
  Manual merge.
sql/table.h:
  Manual merge.
storage/myisam/ha_myisam.cc:
  Manual merge.
2007-07-16 23:31:36 +04:00
unknown
7dc853561c Merge chilla.local:/home/mydev/mysql-5.0-amain
into  chilla.local:/home/mydev/mysql-5.0-axmrg
2007-07-16 20:39:05 +02:00
unknown
b6c0fb605d Fix ndb_cache* test failures in the -runtime tree.
Do not try to acquire structure_guard_mutex for the second time
when invalidating a table from send_result_to_client.


sql/sql_cache.cc:
  Do not try to acquire mutex when invalidating a table
  from send_result_to_client().
  A follow up patch for the patch for Bug#21074.
  Reuse code by moving locking-independent invalidation functionality
  into invalidate_table_internal.
sql/sql_cache.h:
  Add a new declaration.
2007-07-16 22:34:36 +04:00
unknown
f3c857068d Post-merge fix
Disabled a test that reports Slave SQL error in warnings file.
2007-07-16 16:12:05 +02:00
unknown
146b0e1475 Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  bodhi.(none):/opt/local/work/mysql-5.1-runtime


client/mysqldump.c:
  Auto merged
mysql-test/r/show_check.result:
  Auto merged
mysql-test/t/show_check.test:
  Auto merged
sql/ha_ndbcluster.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sql_cache.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/share/errmsg.txt:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
mysql-test/r/events_bugs.result:
  Manual merge.
2007-07-16 17:22:33 +04:00
unknown
02a832df2e A follow up after the fix for Bug#21074 - fix NDB tests breaking on
asserts.
The patch for Bug#21074 replaces acquisition of the global LOCK_open lock
with exclusive locks on table names in such operations ad DROP TABLE
and RENAME TABLE.
Unfortunately, NDB internally assumes that LOCK_open is acquired and
tries to release it.
This dependency should be fixed by a separate (and significant in size)
patch. For now we just satisfy it - after all, the original
goal of the patch for Bug#21074 was to move query_cache_invalidate
outside of the scope of LOCK_open, and we still can do that.

This fixes some failing NDB tests in the runtime tree.


sql/sql_rename.cc:
  Move release of LOCK_open after ha_ndbcluster::rename_tables to
  satisfy an assert in ndb_log_schema_op.
2007-07-16 15:57:20 +04:00
unknown
67e3dbc3d8 Merge pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.0
into  pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.1
2007-07-16 12:42:14 +02:00
unknown
7d3cecca0a Raise version number after cloning 5.0.46 2007-07-16 12:42:12 +02:00
unknown
a21ff66095 BUG#29807 - innodb_mysql.test: Cannot find table test/t2 from the
internal data dictionary
- re-enabled innodb_mysql test;
- added a rule to through away expected warning to mtr_report.pl;
- fixed a test case to produce unique warning.


mysql-test/include/mix1.inc:
  Modified a test case to through away expected warning.
mysql-test/lib/mtr_report.pl:
  Through away a warning produced by BUG#29807 test.
mysql-test/r/innodb_mysql.result:
  Modified a test case to through away expected warning.
mysql-test/t/disabled.def:
  Re-enabled innodb_mysql.test.
2007-07-16 15:09:46 +05:00
unknown
9828ab7096 Post-merge fixes
Disabled tests which break automatic merging due to
non-empty warnings file.
2007-07-15 18:47:57 +02:00
unknown
8023d91929 Add a teste case for Bug#27296 "Assertion in ALTER TABLE SET DEFAULT in
Linux Debug build (possible deadlock)"

The bug is not repeatable any more.


mysql-test/r/innodb_mysql.result:
  Update test results (Bug#27296)
mysql-test/t/innodb_mysql.test:
  Add a teste case for Bug#27296 "Assertion in ALTER TABLE SET DEFAULT in 
  Linux Debug build (possible deadlock)"
2007-07-15 13:34:35 +04:00
unknown
7416224c60 A fix for Bug#27406 Events: failure only causes a warning. Update test
results.
When executing a CREATE EVENT statement with ON COMPLETION NOT PRESERVE 
clause (explicit or implicit) and completion date in the past, we do not 
create the event. Or, put it differently, we create it and then drop 
immediately.
A warning is issued in this case, not an error -- we want to load 
successfully old database dumps, and such dumps may contain events
that are no longer valid.

Update the warning text to not imply an erroneous condition. 


mysql-test/r/events_bugs.result:
  Update the test results (Bug#27406)
sql/share/errmsg.txt:
  Fix Bug#27406 "Events: failure only causes a warning" -- update the error
  message to not imply that there was a failure.
2007-07-15 13:25:38 +04:00
unknown
4e77ad2c64 Merge chilla.local:/home/mydev/mysql-5.0-axmrg
into  chilla.local:/home/mydev/mysql-5.1-axmrg
2007-07-14 19:37:06 +02:00
unknown
bfa3d409bd Merge chilla.local:/home/mydev/mysql-5.1-amain
into  chilla.local:/home/mydev/mysql-5.1-axmrg


mysql-test/lib/mtr_report.pl:
  Auto merged
mysql-test/r/show_check.result:
  Auto merged
mysql-test/suite/ndb/r/ndb_update.result:
  Auto merged
mysql-test/suite/ndb/t/ndb_single_user.test:
  Auto merged
mysql-test/suite/ndb/t/ndb_update.test:
  Auto merged
mysql-test/suite/parts/r/rpl_partition.result:
  Auto merged
mysql-test/suite/parts/t/rpl_partition.test:
  Auto merged
mysql-test/t/disabled.def:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sql_class.cc:
  Auto merged
mysql-test/suite/rpl/r/rpl_sp.result:
  Auto merged
2007-07-14 19:35:43 +02:00
unknown
bf78cb1e6e Merge chilla.local:/home/mydev/mysql-4.1-axmrg
into  chilla.local:/home/mydev/mysql-5.0-axmrg
2007-07-14 17:51:52 +02:00
unknown
15070b3a55 Merge chilla.local:/home/mydev/mysql-5.0-amain
into  chilla.local:/home/mydev/mysql-5.0-axmrg
2007-07-14 17:51:00 +02:00
unknown
26b8578fa9 Merge chilla.local:/home/mydev/mysql-4.1-amain
into  chilla.local:/home/mydev/mysql-4.1-axmrg
2007-07-14 16:19:17 +02:00
unknown
32638825f3 Merge mysql.com:/home/svoj/devel/mysql/BUG29734/mysql-5.0-engines
into  mysql.com:/home/svoj/devel/mysql/BUG29734/mysql-5.1-engines


sql/sql_class.cc:
  Manual merge.
2007-07-14 18:09:48 +05:00
unknown
a9c6a0bbbc BUG#29734 - thread_id=0 in binary log which leads to temporary table conflicts
pseudo_thread_id was reset to zero via mysql_change_user() handling
whereas there is no reason to do that.  Moreover, having two
concurrent threads that change user and create a namesake temp tables
leads to recording the dup pair of queries:

   set @@session.pseudo_thread_id = 0;
   CREATE temporary table `the namesake`;

which will stall the slave as the second instance can not be created.
And that is the bug case.

Fixed by correcting pseudo_thread_id value after mysql_change_user().


sql/sql_class.cc:
  Fixed that pseudo_thread_id was set to 0 after mysql_change_user().
2007-07-14 17:58:39 +05:00
unknown
393e0f6541 Fix a compiler warning. 2007-07-14 05:22:24 +04:00
unknown
9a52e13ccb Fix a warning in a non-debug build. 2007-07-14 04:38:21 +04:00
unknown
31ea7d042b A follow up after the patch for Bug#21074 - even though
we now have exclusive name lock on the table name in mysql_rm_table_part2,
we still should keep LOCK_open - some storage engines are not
ready for locking scope change and assume that LOCK_open is kept.
Still, the binary logging and query cache invalidation calls
moved out of LOCK_open scope.
Fixes some of the broken 5.1-runtime tests (tests break on asserts).


sql/ha_ndbcluster.cc:
  Do not lock LOCK_open for mysql_rm_table_part2 - it does that
  for us now.
sql/mysql_priv.h:
  Remove an unused flag.
sql/sql_class.h:
  Fix an unrelated compiler warning.
sql/sql_db.cc:
  Adjust to the changed signature.
sql/sql_table.cc:
  mysql_rm_table_part2: we need to keep LOCK_open while calling
  storage engine functions, even though now 
  we have an exclusive lock on the table name. Some of them assume that it's 
  kept and attempt to unlock it.
2007-07-14 02:04:48 +04:00
unknown
08510d6903 Merge chilla.local:/home/mydev/mysql-5.1-ateam
into  chilla.local:/home/mydev/mysql-5.1-bug28810
2007-07-13 08:18:27 +02:00
unknown
bae6562762 BUG#29464 - load data infile into table with big5 chinese fulltext index
hangs 100% cpu

Moved a test case for BUG#29464 into fulltext3.test, since it requires big5
character set.


mysql-test/r/fulltext.result:
  Moved a test case for BUG#29464 into fulltext3.test, since it requires big5
  character set.
mysql-test/r/fulltext3.result:
  Moved a test case for BUG#29464 into fulltext3.test, since it requires big5
  character set.
mysql-test/t/fulltext.test:
  Moved a test case for BUG#29464 into fulltext3.test, since it requires big5
  character set.
mysql-test/t/fulltext3.test:
  Moved a test case for BUG#29464 into fulltext3.test, since it requires big5
  character set.
2007-07-13 03:29:25 +05:00
unknown
62738bf97e BUG#29445 - match ... against () never returns
Part 2:
Searching fulltext index for a word with boolean mode truncation
operator may cause infinite loop.

The problem was that "smarter index merge" was used with "trunc-words",
which must never happen.

Affects 5.1 only.


mysql-test/r/fulltext.result:
  Addition to a test case for BUG#29445.
mysql-test/t/fulltext.test:
  Addition to a test case for BUG#29445.
storage/myisam/ft_boolean_search.c:
  Fulltext "smarter index merge" optimization assumes that rows
  it gets are ordered by doc_id. That is not the case when we
  search for a word with truncation operator. It may return
  rows in random order. Thus we may not use "smarter index merge"
  optimization with "trunc-words".
  
  Also fixed compiler warning introduced by Part 1 patch.
2007-07-13 03:25:27 +05:00
unknown
42a41896f8 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  bodhi.(none):/opt/local/work/mysql-5.0-runtime


sql/sql_prepare.cc:
  Auto merged
2007-07-12 23:22:17 +04:00
unknown
0e2bb8dd43 Apply community contributed fix for Bug#13326 SQLPS statement logging is
incomplete in 5.0 (and review fixes).

When in 5.0.13 I introduced class Prepared_statement and methods
::prepare and ::execute, general logging was left out of this class.
This was good for stored procedures, since in stored procedures
we do not log sub-statements, but introduced a regression in case of SQL
syntax for prepared statements, as previously we would log the actual
statements to the log, and after the change we would log only
COM_QUERY text.

Restore the old behavior, but still suppress logging if inside a stored 
procedure.

Based on a community contributed patch from Vladimir Shebordaev.

No test case since we do not have a mechanism to test output
of the general log.


sql/sql_prepare.cc:
  Apply community contributed fix for Bug#13326 SQLPS statement logging is 
  incomplete in 5.0 (and review fixes).
2007-07-12 23:14:00 +04:00
unknown
1d40659c1f Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  bodhi.(none):/opt/local/work/mysql-5.0-26141-final


sql/sql_yacc.yy:
  Auto merged
2007-07-12 22:28:13 +04:00
unknown
9dc3088f9e A fix and a test case for Bug#26141 mixing table types in trigger
causes full table lock on innodb table.
Also fixes Bug#28502 Triggers that update another innodb table 
will block on X lock unnecessarily (duplciate).
Code review fixes.

Both bugs' synopses are misleading: InnoDB table is
not X locked. The statements, however, cannot proceed concurrently, 
but this happens due to lock conflicts for tables used in triggers,
not for the InnoDB table. 

If a user had an InnoDB table, and two triggers, AFTER UPDATE and 
AFTER INSERT, competing for different resources (e.g. two distinct
MyISAM tables), then these two triggers would not be able to execute
concurrently. Moreover, INSERTS/UPDATES of the InnoDB table would
not be able to run concurrently. 
The problem had other side-effects (see respective bug reports).

This behavior was a consequence of a shortcoming of the pre-locking
algorithm, which would not distinguish between different DML operations
(e.g. INSERT and DELETE) and pre-lock all the tables
that are used by any trigger defined on the subject table.

The idea of the fix is to extend the pre-locking algorithm to keep track,
for each table, what DML operation it is used for and not
load triggers that are known to never be fired.


mysql-test/r/trigger-trans.result:
  Update results (Bug#26141)
mysql-test/r/trigger.result:
  Update results (Bug#28502)
mysql-test/t/trigger-trans.test:
  Add a test case for Bug#26141 mixing table types in trigger causes 
  full table lock on innodb table.
mysql-test/t/trigger.test:
  Add a test case for Bug#28502 Triggers that update another innodb 
  table will block echo on X lock unnecessarily. Add more test 
  coverage for triggers.
sql/item.h:
  enum trg_event_type is needed in table.h
sql/sp.cc:
  Take into account table_list->trg_event_map when determining
  what tables to pre-lock. 
  
  After this change, if we attempt to fire a 
  trigger for which we had not pre-locked any tables, error
  'Table was not locked with LOCK TABLES' will be printed.
  This, however, should never happen, provided the pre-locking
  algorithm has no programming bugs.
  
  Previously a trigger key in the sroutines hash was based on the name 
  of the table the trigger belongs to. This was possible because we would
  always add to the pre-locking list all the triggers defined for a table when
  handling this table.
  Now the key is based on the name of the trigger, owing
  to the fact that a trigger name must be unique in the database it
  belongs to.
sql/sp_head.cc:
  Generate sroutines hash key in init_spname(). This is a convenient
  place since there we have all the necessary information and can
  avoid an extra alloc.
  
  Maintain and merge trg_event_map when adding and merging elements
  of the pre-locking list.
sql/sp_head.h:
  Add ,m_sroutines_key member, used when inserting the sphead for a
  trigger into the cache of routines used by a statement.
  Previously the key was based on the table name the trigger belonged
  to, since for a given table we would add to the sroutines list
  all the triggers defined on it.
sql/sql_lex.cc:
  Introduce a new lex step: set_trg_event_type_for_tables().
  It is called when we have finished parsing but before opening
  and locking tables. Now this step is used to evaluate for each
  TABLE_LIST instance which INSERT/UPDATE/DELETE operation, if any,
  it is used in.
  In future this method could be extended to aggregate other information
  that is hard to aggregate during parsing.
sql/sql_lex.h:
  Add declaration for set_trg_event_type_for_tables().
sql/sql_parse.cc:
  Call set_trg_event_type_for_tables() after MYSQLparse(). Remove tabs.
sql/sql_prepare.cc:
  Call set_trg_event_type_for_tables() after  MYSQLparse().
sql/sql_trigger.cc:
  Call set_trg_event_type_for_tables() after MYSQLparse().
sql/sql_trigger.h:
  Remove an obsolete member.
sql/sql_view.cc:
  Call set_trg_event_type_for_tables() after MYSQLparse().
sql/sql_yacc.yy:
  Move assignment of sp_head::m_type before calling sp_head::init_spname(), 
  one is now used inside another.
sql/table.cc:
  Implement TABLE_LIST::set_trg_event_map() - a method that calculates
  wh triggers may be fired on this table when executing a statement.
sql/table.h:
  Add missing declarations.
  Move declaration of trg_event_type from item.h (it will be needed for 
  trg_event_map bitmap when we start using Bitmap template instead
  of uint8).
2007-07-12 22:26:41 +04:00
unknown
653c2937bc Merge chilla.local:/home/mydev/mysql-5.1-ateam
into  chilla.local:/home/mydev/mysql-5.1-bug28810
2007-07-12 20:24:18 +02:00
unknown
afbac0070f Bug#28158 - table->read_set is set incorrectly,
causing wrong error message in Falcon

An error message about a duplicate key could show a wrong key
value when not all columns of the key were used to select the
rows for update.

Some storage engines return a record with only the selected
columns filled.

This is fixed by re-reading the record with a read_set which
includes all columns of the duplicate key after a duplicate key
error happens and before the error message is printed.


mysql-test/r/ndb_update.result:
  Bug#28158 - table->read_set is set incorrectly,
              causing wrong error message in Falcon
  Added test result.
mysql-test/t/ndb_update.test:
  Bug#28158 - table->read_set is set incorrectly,
              causing wrong error message in Falcon
  Added test from falcon_bug_28158.
sql/sql_update.cc:
  Bug#28158 - table->read_set is set incorrectly,
              causing wrong error message in Falcon
  Added a function for re-reading a record with a read_set
  that contains all fields used by a duplicate key.
  Called the function before every call to handler::print_error(),
  which could print a duplicate key value.
2007-07-12 20:21:17 +02:00
unknown
5529b14f7a Merge kpettersson@bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  adventure.(none):/home/thek/Development/cpp/mysql-5.0-runtime
2007-07-12 15:38:23 +02:00
unknown
5ee37c1439 Merge adventure.(none):/home/thek/Development/cpp/bug28249/my50-bug28249
into  adventure.(none):/home/thek/Development/cpp/mysql-5.0-runtime


mysql-test/t/query_cache.test:
  Auto merged
sql/ha_myisam.cc:
  Auto merged
sql/handler.h:
  Auto merged
mysql-test/r/query_cache.result:
  SCCS merged
2007-07-12 15:30:34 +02:00
unknown
30810f80b1 Bug#28249 Query Cache returns wrong result with concurrent insert / certain lock
A race condition in the integration between MyISAM and the query cache code 
caused the query cache to fail to invalidate itself on concurrently inserted
data.

This patch fix this problem by using the existing handler interface which, upon
each statement cache attempt, compare the size of the table as viewed from the 
cache writing thread and with any snap shot of the global table state. If the
two sizes are different the global table size is unknown and the current
statement can't be cached.


mysql-test/r/query_cache.result:
  Added test case
mysql-test/t/query_cache.test:
  Added test case
sql/ha_myisam.cc:
  - Implemented handler interface for ha_myisam class to dermine if the table
   belonging to the currently processed statement can be cached or not.
sql/ha_myisam.h:
  - Implemented handler interface for ha_myisam class to dermine if the table
   belonging to the currently processed statement can be cached or not.
sql/handler.h:
  - Documented register_query_cache_table method in the handler interface.
2007-07-12 13:29:51 +02:00