List:Commits« Previous MessageNext Message »
From:tomas Date:January 12 2006 1:34pm
Subject:bk commit into 5.1 tree (tomas:1.2035)
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of tomas. When tomas does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet
  1.2035 06/01/12 14:34:01 tomas@stripped +19 -0
  Merge tulin@stripped:/home/bk/mysql-5.1-new
  into  poseidon.ndb.mysql.com:/home/tomas/mysql-5.1-wl2325-v6

  scripts/mysql_create_system_tables.sh
    1.28 06/01/12 14:33:55 tomas@stripped +0 -1
    manual merge

  mysql-test/t/disabled.def
    1.37 06/01/12 14:33:55 tomas@stripped +1 -1
    manual merge

  mysql-test/r/information_schema.result
    1.100 06/01/12 14:33:55 tomas@stripped +0 -1
    manual merge

  mysql-test/lib/init_db.sql
    1.19 06/01/12 14:33:55 tomas@stripped +3 -4
    manual merge

  storage/ndb/src/ndbapi/ndb_cluster_connection.cpp
    1.38 06/01/12 14:30:28 tomas@stripped +0 -0
    Auto merged

  storage/ndb/src/kernel/blocks/suma/Suma.cpp
    1.32 06/01/12 14:30:28 tomas@stripped +0 -0
    Auto merged

  storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp
    1.19 06/01/12 14:30:28 tomas@stripped +0 -0
    Auto merged

  storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp
    1.66 06/01/12 14:30:28 tomas@stripped +0 -0
    Auto merged

  sql/sql_parse.cc
    1.508 06/01/12 14:30:27 tomas@stripped +0 -0
    Auto merged

  sql/set_var.cc
    1.160 06/01/12 14:30:27 tomas@stripped +0 -0
    Auto merged

  sql/mysqld.cc
    1.519 06/01/12 14:30:27 tomas@stripped +0 -0
    Auto merged

  sql/Makefile.am
    1.127 06/01/12 14:30:26 tomas@stripped +0 -0
    Auto merged

  mysql-test/t/mysqltest.test
    1.29 06/01/12 14:30:26 tomas@stripped +0 -0
    Auto merged

  mysql-test/r/ps.result
    1.59 06/01/12 14:30:26 tomas@stripped +0 -0
    Auto merged

  mysql-test/r/mysqltest.result
    1.24 06/01/12 14:30:26 tomas@stripped +0 -0
    Auto merged

  mysql-test/r/mysqlcheck.result
    1.4 06/01/12 14:30:26 tomas@stripped +0 -0
    Auto merged

  libmysqld/Makefile.am
    1.77 06/01/12 14:30:26 tomas@stripped +0 -0
    Auto merged

  client/mysqltest.c
    1.173 06/01/12 14:30:26 tomas@stripped +0 -0
    Auto merged

  BitKeeper/etc/ignore
    1.221 06/01/12 14:29:56 tomas@stripped +48 -115
    auto-union

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	tomas
# Host:	poseidon.ndb.mysql.com
# Root:	/home/tomas/mysql-5.1-wl2325-v6/RESYNC

--- 1.126/sql/Makefile.am	2006-01-11 11:46:25 +01:00
+++ 1.127/sql/Makefile.am	2006-01-12 14:30:26 +01:00
@@ -58,6 +58,7 @@
 			sql_select.h structs.h table.h sql_udf.h hash_filo.h\
 			lex.h lex_symbol.h sql_acl.h sql_crypt.h  \
 			log_event.h sql_repl.h slave.h rpl_filter.h \
+			rpl_injector.h \
 			stacktrace.h sql_sort.h sql_cache.h set_var.h \
 			spatial.h gstream.h client_settings.h tzfile.h \
                         tztime.h my_decimal.h\
@@ -89,6 +90,7 @@
 			sql_load.cc mf_iocache.cc field_conv.cc sql_show.cc \
 			sql_udf.cc sql_analyse.cc sql_analyse.h sql_cache.cc \
 			slave.cc sql_repl.cc rpl_filter.cc rpl_tblmap.cc \
+			rpl_injector.cc \
                         sql_union.cc sql_derived.cc \
 			client.c sql_client.cc mini_client_errors.c pack.c\
 			stacktrace.c repl_failsafe.h repl_failsafe.cc \
@@ -104,6 +106,8 @@
 			ha_innodb.h  ha_berkeley.h  ha_archive.h \
 			ha_blackhole.cc ha_federated.cc ha_ndbcluster.cc \
 			ha_blackhole.h  ha_federated.h  ha_ndbcluster.h \
+			ha_ndbcluster_binlog.cc ha_ndbcluster_binlog.h \
+			ha_ndbcluster_tables.h \
 			ha_partition.cc ha_partition.h
 mysqld_DEPENDENCIES =	@mysql_se_objs@
 gen_lex_hash_SOURCES =	gen_lex_hash.cc
@@ -158,6 +162,9 @@
 		$(CXXCOMPILE) @bdb_includes@ $(LM_CFLAGS) -c $<
 
 ha_ndbcluster.o:ha_ndbcluster.cc ha_ndbcluster.h
+		$(CXXCOMPILE) @ndbcluster_includes@ $(LM_CFLAGS) -c $<
+
+ha_ndbcluster_binlog.o:ha_ndbcluster_binlog.cc ha_ndbcluster_binlog.h
 		$(CXXCOMPILE) @ndbcluster_includes@ $(LM_CFLAGS) -c $<
 
 #Until we can get rid of dependencies on ha_ndbcluster.h

--- 1.518/sql/mysqld.cc	2006-01-11 11:31:01 +01:00
+++ 1.519/sql/mysqld.cc	2006-01-12 14:30:27 +01:00
@@ -24,6 +24,7 @@
 #include "stacktrace.h"
 #include "mysqld_suffix.h"
 #include "mysys_err.h"
+#include "event.h"
 
 #include "ha_myisam.h"
 
@@ -3627,6 +3628,8 @@
     }
   }
 
+  init_events();
+
   create_shutdown_thread();
   create_maintenance_thread();
 
@@ -3690,6 +3693,7 @@
   clean_up(1);
   wait_for_signal_thread_to_end();
   clean_up_mutexes();
+  shutdown_events();
   my_end(opt_endinfo ? MY_CHECK_ERROR | MY_GIVE_INFO : 0);
  
   exit(0);
@@ -4662,7 +4666,7 @@
   OPT_MAX_BINLOG_DUMP_EVENTS, OPT_SPORADIC_BINLOG_DUMP_FAIL,
   OPT_SAFE_USER_CREATE, OPT_SQL_MODE,
   OPT_HAVE_NAMED_PIPE,
-  OPT_DO_PSTACK, OPT_REPORT_HOST,
+  OPT_DO_PSTACK, OPT_EVENT_EXECUTOR, OPT_REPORT_HOST,
   OPT_REPORT_USER, OPT_REPORT_PASSWORD, OPT_REPORT_PORT,
   OPT_SHOW_SLAVE_AUTH_INFO,
   OPT_SLAVE_LOAD_TMPDIR, OPT_NO_MIX_TYPE,
@@ -4986,6 +4990,9 @@
    (gptr*) &global_system_variables.engine_condition_pushdown,
    (gptr*) &global_system_variables.engine_condition_pushdown,
    0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+  {"event-scheduler", OPT_EVENT_EXECUTOR, "Enable/disable the event scheduler.",
+   (gptr*) &opt_event_executor, (gptr*) &opt_event_executor, 0, GET_BOOL, NO_ARG,
+   0/*default*/, 0/*min-value*/, 1/*max-value*/, 0, 0, 0},
   {"exit-info", 'T', "Used for debugging;  Use at your own risk!", 0, 0, 0,
    GET_LONG, OPT_ARG, 0, 0, 0, 0, 0, 0},
   {"external-locking", OPT_USE_LOCKING, "Use system (external) locking.  With this option enabled you can run myisamchk to test (not repair) tables while the MySQL server is running.",
@@ -6577,6 +6584,7 @@
   {"Bytes_sent",               (char*) offsetof(STATUS_VAR, bytes_sent), SHOW_LONG_STATUS},
   {"Com_admin_commands",       (char*) offsetof(STATUS_VAR, com_other), SHOW_LONG_STATUS},
   {"Com_alter_db",	       (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_ALTER_DB]), SHOW_LONG_STATUS},
+  {"Com_alter_event",	       (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_ALTER_EVENT]), SHOW_LONG_STATUS},
   {"Com_alter_table",	       (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_ALTER_TABLE]), SHOW_LONG_STATUS},
   {"Com_analyze",	       (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_ANALYZE]), SHOW_LONG_STATUS},
   {"Com_backup_table",	       (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_BACKUP_TABLE]), SHOW_LONG_STATUS},
@@ -6587,6 +6595,7 @@
   {"Com_checksum",	       (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_CHECKSUM]), SHOW_LONG_STATUS},
   {"Com_commit",	       (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_COMMIT]), SHOW_LONG_STATUS},
   {"Com_create_db",	       (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_CREATE_DB]), SHOW_LONG_STATUS},
+  {"Com_create_event",	       (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_CREATE_EVENT]), SHOW_LONG_STATUS},
   {"Com_create_function",      (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_CREATE_FUNCTION]), SHOW_LONG_STATUS},
   {"Com_create_index",	       (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_CREATE_INDEX]), SHOW_LONG_STATUS},
   {"Com_create_table",	       (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_CREATE_TABLE]), SHOW_LONG_STATUS},
@@ -6595,6 +6604,7 @@
   {"Com_delete_multi",	       (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_DELETE_MULTI]), SHOW_LONG_STATUS},
   {"Com_do",                   (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_DO]), SHOW_LONG_STATUS},
   {"Com_drop_db",	       (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_DROP_DB]), SHOW_LONG_STATUS},
+  {"Com_drop_event",	       (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_DROP_EVENT]), SHOW_LONG_STATUS},
   {"Com_drop_function",	       (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_DROP_FUNCTION]), SHOW_LONG_STATUS},
   {"Com_drop_index",	       (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_DROP_INDEX]), SHOW_LONG_STATUS},
   {"Com_drop_table",	       (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_DROP_TABLE]), SHOW_LONG_STATUS},
@@ -6636,6 +6646,7 @@
   {"Com_show_collations",      (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_COLLATIONS]), SHOW_LONG_STATUS},
   {"Com_show_column_types",    (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_COLUMN_TYPES]), SHOW_LONG_STATUS},
   {"Com_show_create_db",       (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_CREATE_DB]), SHOW_LONG_STATUS},
+  {"Com_show_create_event",    (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_CREATE_EVENT]), SHOW_LONG_STATUS},
   {"Com_show_create_table",    (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_CREATE]), SHOW_LONG_STATUS},
   {"Com_show_databases",       (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_DATABASES]), SHOW_LONG_STATUS},
   {"Com_show_engine_logs",     (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_ENGINE_LOGS]), SHOW_LONG_STATUS},

--- 1.507/sql/sql_parse.cc	2006-01-11 12:45:11 +01:00
+++ 1.508/sql/sql_parse.cc	2006-01-12 14:30:27 +01:00
@@ -25,6 +25,7 @@
 #include "sp_head.h"
 #include "sp.h"
 #include "sp_cache.h"
+#include "event.h"
 
 #ifdef HAVE_OPENSSL
 /*
@@ -642,6 +643,9 @@
   uc_update_queries[SQLCOM_DROP_INDEX]=1;
   uc_update_queries[SQLCOM_CREATE_VIEW]=1;
   uc_update_queries[SQLCOM_DROP_VIEW]=1;
+  uc_update_queries[SQLCOM_CREATE_EVENT]=1;
+  uc_update_queries[SQLCOM_ALTER_EVENT]=1;
+  uc_update_queries[SQLCOM_DROP_EVENT]=1;  
 }
 
 bool is_update_query(enum enum_sql_command command)
@@ -3682,6 +3686,61 @@
     res=mysqld_show_create_db(thd,lex->name,&lex->create_info);
     break;
   }
+  case SQLCOM_CREATE_EVENT:
+  case SQLCOM_ALTER_EVENT:
+  case SQLCOM_DROP_EVENT:
+  {
+    uint rows_affected= 1;
+    DBUG_ASSERT(lex->et);
+    do {
+      if (! lex->et->dbname.str)
+      {
+        my_message(ER_NO_DB_ERROR, ER(ER_NO_DB_ERROR), MYF(0));
+        res= true;
+        break;
+      }
+
+      if (check_access(thd, EVENT_ACL, lex->et->dbname.str, 0, 0, 0,
+                       is_schema_db(lex->et->dbname.str)))
+        break;
+
+      switch (lex->sql_command) {
+      case SQLCOM_CREATE_EVENT:
+        res= evex_create_event(thd, lex->et, (uint) lex->create_info.options,
+                               &rows_affected);
+        break;
+      case SQLCOM_ALTER_EVENT:
+        res= evex_update_event(thd, lex->et, lex->spname, &rows_affected);
+        break;
+      case SQLCOM_DROP_EVENT:
+        res= evex_drop_event(thd, lex->et, lex->drop_if_exists, &rows_affected);
+      default:;
+      }
+      if (!res)
+        send_ok(thd, rows_affected);
+
+      /* lex->unit.cleanup() is called outside, no need to call it here */
+    } while (0);  
+    lex->et->free_sphead_on_delete= true;
+    delete lex->et;
+    lex->et= 0;
+    break;
+  }
+  case SQLCOM_SHOW_CREATE_EVENT:
+  {
+    if (check_access(thd, EVENT_ACL, lex->spname->m_db.str, 0, 0, 0,
+                     is_schema_db(lex->spname->m_db.str)))
+      break;
+
+    if (lex->spname->m_name.length > NAME_LEN)
+    {
+      my_error(ER_TOO_LONG_IDENT, MYF(0), lex->spname->m_name.str);
+      goto error;
+    }
+    /* TODO : Implement it */
+    send_ok(thd, 1);
+    break;
+  }
   case SQLCOM_CREATE_FUNCTION:                  // UDF function
   {
     if (check_access(thd,INSERT_ACL,"mysql",0,1,0,0))
@@ -5617,6 +5676,12 @@
 	    delete thd->lex->sphead;
 	    thd->lex->sphead= NULL;
 	  }
+          if (thd->lex->et)
+          {
+            thd->lex->et->free_sphead_on_delete= true;
+            delete thd->lex->et;
+            thd->lex->et= NULL;
+          }
 	}
 	else
 	{
@@ -5651,6 +5716,12 @@
 	/* Clean up after failed stored procedure/function */
 	delete thd->lex->sphead;
 	thd->lex->sphead= NULL;
+      }
+      if (thd->lex->et)
+      {
+        thd->lex->et->free_sphead_on_delete= true;
+        delete thd->lex->et;
+        thd->lex->et= NULL;
       }
     }
     thd->proc_info="freeing items";

--- 1.99/mysql-test/r/information_schema.result	2006-01-10 23:34:00 +01:00
+++ 1.100/mysql-test/r/information_schema.result	2006-01-12 14:33:55 +01:00
@@ -60,6 +60,7 @@
 binlog_index
 columns_priv
 db
+event
 func
 help_category
 help_keyword
@@ -401,6 +402,7 @@
 'mysqltest_1'@'localhost'	NULL	test	SHOW VIEW	YES
 'mysqltest_1'@'localhost'	NULL	test	CREATE ROUTINE	YES
 'mysqltest_1'@'localhost'	NULL	test	ALTER ROUTINE	YES
+'mysqltest_1'@'localhost'	NULL	test	EVENT	YES
 select * from information_schema.TABLE_PRIVILEGES where grantee like '%mysqltest_1%';
 GRANTEE	TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	PRIVILEGE_TYPE	IS_GRANTABLE
 'mysqltest_1'@'localhost'	NULL	test	t1	SELECT	NO
@@ -730,7 +732,7 @@
 CREATE VIEW a1 (t_CRASHME) AS SELECT f1 FROM t_crashme GROUP BY f1;
 CREATE VIEW a2 AS SELECT t_CRASHME FROM a1;
 count(*)
-105
+106
 drop view a2, a1;
 drop table t_crashme;
 select table_schema,table_name, column_name from
@@ -761,6 +763,10 @@
 TABLES	UPDATE_TIME	datetime
 TABLES	CHECK_TIME	datetime
 TRIGGERS	CREATED	datetime
+event	execute_at	datetime
+event	last_executed	datetime
+event	starts	datetime
+event	ends	datetime
 SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES A
 WHERE NOT EXISTS 
 (SELECT * FROM INFORMATION_SCHEMA.COLUMNS B

--- 1.3/mysql-test/r/mysqlcheck.result	2006-01-05 17:48:53 +01:00
+++ 1.4/mysql-test/r/mysqlcheck.result	2006-01-12 14:30:26 +01:00
@@ -1,6 +1,7 @@
 cluster_replication.binlog_index                   OK
 mysql.columns_priv                                 OK
 mysql.db                                           OK
+mysql.event                                        OK
 mysql.func                                         OK
 mysql.help_category                                OK
 mysql.help_keyword                                 OK
@@ -19,6 +20,7 @@
 mysql.user                                         OK
 mysql.columns_priv                                 OK
 mysql.db                                           OK
+mysql.event                                        OK
 mysql.func                                         OK
 mysql.help_category                                OK
 mysql.help_keyword                                 OK

--- 1.18/mysql-test/lib/init_db.sql	2005-12-16 13:01:40 +01:00
+++ 1.19/mysql-test/lib/init_db.sql	2006-01-12 14:33:55 +01:00
@@ -569,7 +569,6 @@
   PRIMARY KEY (db,name,type)
 ) character set utf8 comment='Stored Procedures';
 
-
 CREATE TABLE event (
   db char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '',
   name char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '',
@@ -594,3 +593,6 @@
   comment varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '',
   PRIMARY KEY  (db,name)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT 'Events';
+
+CREATE DATABASE IF NOT EXISTS cluster_replication;
+CREATE TABLE IF NOT EXISTS cluster_replication.binlog_index (Position BIGINT UNSIGNED NOT NULL, File VARCHAR(255) NOT NULL, epoch BIGINT UNSIGNED NOT NULL, inserts BIGINT UNSIGNED NOT NULL, updates BIGINT UNSIGNED NOT NULL, deletes BIGINT UNSIGNED NOT NULL, schemaops BIGINT UNSIGNED NOT NULL, PRIMARY KEY(epoch)) ENGINE=MYISAM;

--- 1.23/mysql-test/r/mysqltest.result	2006-01-10 14:11:35 +01:00
+++ 1.24/mysql-test/r/mysqltest.result	2006-01-12 14:30:26 +01:00
@@ -149,7 +149,7 @@
 mysqltest: At line 1: End of line junk detected: "6"
 mysqltest: At line 1: End of line junk detected: "6"
 mysqltest: At line 1: Missing delimiter
-mysqltest: End of line junk detected: "sleep 7
+mysqltest: At line 1: End of line junk detected: "sleep 7
 # Another comment
 "
 mysqltest: At line 1: Extra delimiter ";" found
@@ -221,25 +221,6 @@
 mysqltest: At line 1: Missing variable name in let
 mysqltest: At line 1: Missing variable name in let
 mysqltest: At line 1: Missing assignment operator in let
-var1
-hi	1	hi there
-hi
-1
-hi there
-var2
-2
-
-
-var2 again
-2
-
-2
-
-var3 two columns with same name
-1	2	3
-2
-2
-3
 mysqltest: At line 1: Missing file name in source
 mysqltest: At line 1: Could not open file ./non_existingFile
 mysqltest: In included file "./var/tmp/recursive.sql": At line 1: Source directives are nesting too deep

--- 1.36/mysql-test/t/disabled.def	2006-01-10 23:33:06 +01:00
+++ 1.37/mysql-test/t/disabled.def	2006-01-12 14:33:55 +01:00
@@ -22,6 +22,7 @@
 #ps_7ndb         : Bug#15923 Core dump in RBR mode when executing test suite
 rpl_ddl         : Bug#15963 SBR does not show "Definer" correctly
 mysqlslap       : Bug#16167
+events          : Affects flush test case. A table lock not released somewhere
 ndb_autodiscover : TBF with CR
 ndb_autodiscover2 : TBF with CR
 ndb_binlog_basic   : Results are not deterministic, Tomas will fix

--- 1.28/mysql-test/t/mysqltest.test	2006-01-10 14:11:35 +01:00
+++ 1.29/mysql-test/t/mysqltest.test	2006-01-12 14:30:26 +01:00
@@ -540,7 +540,7 @@
 # Test to assign let from query
 # let $<var_name>=`<query>`;
 # ----------------------------------------------------------------------------
-
+--disable_parsing
 echo var1;
 let $var1= `select "hi" as "Col", 1 as "Column1", "hi there" as Col3`;
 echo $var1;
@@ -571,7 +571,7 @@
 #echo failing query in let;
 #--error 1
 #--exec echo "let $var2= `failing query;`" | $MYSQL_TEST 2>&1
-
+--enable_parsing
 # ----------------------------------------------------------------------------
 # Test source command
 # ----------------------------------------------------------------------------

--- 1.65/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp	2006-01-11 12:45:11 +01:00
+++ 1.66/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp	2006-01-12 14:30:28 +01:00
@@ -15203,7 +15203,7 @@
     }
     
     release_object(f_ptr.p->m_obj_ptr_i);
-    c_file_pool.release(f_ptr);
+    c_file_hash.release(f_ptr);
   }
   
   execute(signal, op->m_callback, 0);
@@ -15241,7 +15241,7 @@
 
   decrease_ref_count(fg_ptr.p->m_obj_ptr_i);
   release_object(f_ptr.p->m_obj_ptr_i);
-  c_file_pool.release(f_ptr);
+  c_file_hash.release(f_ptr);
 
   execute(signal, op->m_callback, 0);
 }
@@ -15406,6 +15406,7 @@
       tableEntry->m_tableState = SchemaFile::DROP_TABLE_COMMITTED;
       computeChecksum(xsf, objId / NDB_SF_PAGE_ENTRIES);
       release_object(filePtr.p->m_obj_ptr_i);
+      c_file_hash.remove(filePtr);
     }
     list.release();
   }

--- 1.18/storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp	2006-01-11 12:45:12 +01:00
+++ 1.19/storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp	2006-01-12 14:30:28 +01:00
@@ -449,6 +449,37 @@
                                   Operationrec* const regOperPtr,
                                   Tablerec* const regTablePtr)
 {
+  Uint32 save_type = regOperPtr->op_struct.op_type;
+  Tuple_header *save_ptr = req_struct->m_tuple_ptr;  
+
+  switch (save_type) {
+  case ZUPDATE:
+  case ZINSERT:
+    req_struct->m_tuple_ptr = (Tuple_header*)
+      c_undo_buffer.get_ptr(&regOperPtr->m_copy_tuple_location);
+    break;
+  }
+
+  /**
+   * Set correct operation type and fix change mask
+   * Note ALLOC is set in "orig" tuple
+   */
+  if (save_ptr->m_header_bits & Tuple_header::ALLOC) {
+    if (save_type == ZDELETE) {
+      // insert + delete = nothing
+      ljam();
+      return;
+      goto end;
+    }
+    regOperPtr->op_struct.op_type = ZINSERT;
+  }
+  else if (save_type == ZINSERT) {
+    /**
+     * Tuple was not created but last op is INSERT.
+     * This is possible only on DELETE + INSERT
+     */
+    regOperPtr->op_struct.op_type = ZUPDATE;
+  }
   
   switch(regOperPtr->op_struct.op_type) {
   case(ZINSERT):
@@ -456,7 +487,7 @@
     if (regTablePtr->subscriptionInsertTriggers.isEmpty()) {
       // Table has no active triggers monitoring inserts at commit
       ljam();
-      return;
+      goto end;
     }
 
     // If any fired immediate insert trigger then fetch after tuple
@@ -469,7 +500,7 @@
     if (regTablePtr->subscriptionDeleteTriggers.isEmpty()) {
       // Table has no active triggers monitoring deletes at commit
       ljam();
-      return;
+      goto end;
     }
 
     // Execute any after delete triggers by sending 
@@ -483,7 +514,7 @@
     if (regTablePtr->subscriptionUpdateTriggers.isEmpty()) {
       // Table has no active triggers monitoring updates at commit
       ljam();
-      return;
+      goto end;
     }
 
     // If any fired immediate update trigger then fetch after tuple
@@ -496,6 +527,10 @@
     ndbrequire(false);
     break;
   }
+
+end:
+  regOperPtr->op_struct.op_type = save_type;
+  req_struct->m_tuple_ptr = save_ptr;
 }
 
 void 
@@ -548,40 +583,6 @@
 {
   
   TriggerPtr trigPtr;  
-  Uint32 save= regOperPtr->op_struct.op_type;
-  Tuple_header *save_ptr = req_struct->m_tuple_ptr;  
-
-  switch(save){
-  case ZUPDATE:
-  case ZINSERT:
-    req_struct->m_tuple_ptr = (Tuple_header*)
-      c_undo_buffer.get_ptr(&regOperPtr->m_copy_tuple_location);
-    break;
-  }
-
-  /**
-   * Set correct operation type and fix change mask
-   * Note ALLOC is set in "orig" tuple
-   */
-  if(save_ptr->m_header_bits & Tuple_header::ALLOC)
-  {
-    if(save == ZDELETE)
-    {
-      // insert + delete = nothing
-      ljam();
-      return;
-      goto end;
-    }
-    regOperPtr->op_struct.op_type = ZINSERT;
-  }
-  else if (save == ZINSERT)
-  /**
-   * Tuple was not created but last op is INSERT.
-   * This is possible only on DELETE + INSERT
-   */
-  {
-    regOperPtr->op_struct.op_type = ZUPDATE;
-  }
   
   /**
    * Set disk page
@@ -603,10 +604,6 @@
     }
     triggerList.next(trigPtr);
   }
-
-end:
-  regOperPtr->op_struct.op_type = save;
-  req_struct->m_tuple_ptr = save_ptr;
 }
 
 void Dbtup::executeTriggers(KeyReqStruct *req_struct,
@@ -629,7 +626,6 @@
                            TupTriggerData* const trigPtr,
                            Operationrec* const regOperPtr)
 {
-
   /**
    * The block below does not work together with GREP.
    * I have 2 db nodes (2 replicas) -> one node group.
@@ -835,7 +831,6 @@
 			   false);
   ndbrequire(ret != -1);
   noPrimKey= ret;
-
   Uint32 numAttrsToRead;
   if ((regOperPtr->op_struct.op_type == ZUPDATE) &&
       (trigPtr->sendOnlyChangedAttributes)) {

--- 1.31/storage/ndb/src/kernel/blocks/suma/Suma.cpp	2006-01-11 12:45:12 +01:00
+++ 1.32/storage/ndb/src/kernel/blocks/suma/Suma.cpp	2006-01-12 14:30:28 +01:00
@@ -4193,8 +4193,14 @@
   Bucket* bucket= c_buckets+buck;
   Page_pos pos= bucket->m_buffer_head;
 
-  Buffer_page* page= (Buffer_page*)m_tup->c_page_pool.getPtr(pos.m_page_id);
-  Uint32* ptr= page->m_data + pos.m_page_pos;
+  Buffer_page* page = 0;
+  Uint32 *ptr = 0;
+  
+  if (likely(pos.m_page_id != RNIL))
+  {
+    page= (Buffer_page*)m_tup->c_page_pool.getPtr(pos.m_page_id);
+    ptr= page->m_data + pos.m_page_pos;
+  }
 
   const bool same_gci = (gci == pos.m_last_gci) && (!ERROR_INSERTED(13022));
   

--- 1.159/sql/set_var.cc	2006-01-11 11:31:01 +01:00
+++ 1.160/sql/set_var.cc	2006-01-12 14:30:27 +01:00
@@ -109,6 +109,7 @@
 
 
 
+extern my_bool event_executor_running_global_var;
 
 static HASH system_variable_hash;
 const char *bool_type_names[]= { "OFF", "ON", NullS };
@@ -213,6 +214,8 @@
 						   &delayed_insert_timeout);
 sys_var_long_ptr	sys_delayed_queue_size("delayed_queue_size",
 					       &delayed_queue_size);
+sys_var_event_executor        sys_event_executor("event_scheduler",
+                                               &event_executor_running_global_var);
 sys_var_long_ptr	sys_expire_logs_days("expire_logs_days",
 					     &expire_logs_days);
 sys_var_bool_ptr	sys_flush("flush", &myisam_flush);
@@ -724,6 +727,7 @@
   {sys_div_precincrement.name,(char*) &sys_div_precincrement,SHOW_SYS},
   {sys_engine_condition_pushdown.name, 
    (char*) &sys_engine_condition_pushdown,                          SHOW_SYS},
+  {sys_event_executor.name,   (char*) &sys_event_executor,          SHOW_SYS},
   {sys_expire_logs_days.name, (char*) &sys_expire_logs_days,        SHOW_SYS},
   {sys_flush.name,             (char*) &sys_flush,                  SHOW_SYS},
   {sys_flush_time.name,        (char*) &sys_flush_time,             SHOW_SYS},
@@ -3428,6 +3432,7 @@
   warn_deprecated(thd);
   return sys_var_bool_ptr::update(thd, var);
 }
+
 
 /****************************************************************************
   Used templates

--- 1.76/libmysqld/Makefile.am	2006-01-11 12:01:29 +01:00
+++ 1.77/libmysqld/Makefile.am	2006-01-12 14:30:26 +01:00
@@ -66,11 +66,13 @@
 	parse_file.cc sql_view.cc sql_trigger.cc my_decimal.cc \
         event_executor.cc event.cc event_timed.cc \
         rpl_filter.cc sql_partition.cc handlerton.cc sql_plugin.cc \
-        sql_tablespace.cc
+        sql_tablespace.cc \
+        rpl_injector.cc
 
 libmysqld_int_a_SOURCES= $(libmysqld_sources) $(libmysqlsources) $(sqlsources)
 EXTRA_libmysqld_a_SOURCES =	ha_innodb.cc ha_berkeley.cc ha_archive.cc \
 			ha_blackhole.cc ha_federated.cc ha_ndbcluster.cc \
+			ha_ndbcluster_binlog.cc \
 			ha_partition.cc
 libmysqld_a_DEPENDENCIES= @mysql_se_objs@
 libmysqld_a_SOURCES=
@@ -100,6 +102,9 @@
 		$(CXXCOMPILE) @bdb_includes@ $(LM_CFLAGS) -c $<
 
 ha_ndbcluster.o:ha_ndbcluster.cc
+		$(CXXCOMPILE) @ndbcluster_includes@ $(LM_CFLAGS) -c $<
+
+ha_ndbcluster_binlog.o: ha_ndbcluster_binlog.cc
 		$(CXXCOMPILE) @ndbcluster_includes@ $(LM_CFLAGS) -c $<
 
 # Until we can remove dependency on ha_ndbcluster.h

--- 1.172/client/mysqltest.c	2006-01-10 23:33:06 +01:00
+++ 1.173/client/mysqltest.c	2006-01-12 14:30:26 +01:00
@@ -165,7 +165,6 @@
 static my_bool view_protocol= 0, view_protocol_enabled= 0;
 static my_bool cursor_protocol= 0, cursor_protocol_enabled= 0;
 static int parsing_disabled= 0;
-static uint start_lineno, *lineno;
 const char *manager_user="root",*manager_host=0;
 char *manager_pass=0;
 int manager_port=MYSQL_MANAGER_PORT;
@@ -180,13 +179,14 @@
 {
   FILE* file;
   const char *file_name;
+  uint lineno; /* Current line in file */
 } test_file;
 
 static test_file file_stack[MAX_INCLUDE_DEPTH];
 static test_file* cur_file;
 static test_file* file_stack_end;
+uint start_lineno; /* Start line of query */
 
-static uint lineno_stack[MAX_INCLUDE_DEPTH];
 static char TMPDIR[FN_REFLEN];
 static char delimiter[MAX_DELIMITER]= DEFAULT_DELIMITER;
 static uint delimiter_length= 1;
@@ -662,7 +662,7 @@
   va_start(args, fmt);
 
   fprintf(stderr, "mysqltest: ");
-  if (start_lineno > 0)
+  if (start_lineno != 0)
     fprintf(stderr, "At line %u: ", start_lineno);
   vfprintf(stderr, fmt, args);
   fprintf(stderr, "\n");
@@ -916,7 +916,7 @@
     die("Could not open file %s", buff);
   }
   cur_file->file_name= my_strdup(buff, MYF(MY_FAE));
-  *++lineno=1;
+  cur_file->lineno=1;
   DBUG_RETURN(0);
 }
 
@@ -1221,6 +1221,7 @@
     {
       if (row[0])
       {
+#ifdef NOT_YET
 	/* Add to <var_name>_<col_name> */
 	uint j;
 	char var_col_name[MAX_VAR_NAME];
@@ -1234,7 +1235,7 @@
         }
 	var_set(var_col_name,  var_col_name + length,
 		row[i], row[i] + lengths[i]);
-
+#endif
         /* Add column to tab separated string */
 	dynstr_append_mem(&result, row[i], lengths[i]);
       }
@@ -2596,7 +2597,7 @@
   DBUG_ENTER("read_line");
   LINT_INIT(quote);
 
-  start_lineno= *lineno;
+  start_lineno= cur_file->lineno;
   for (; p < buf_end ;)
   {
     no_save= 0;
@@ -2611,28 +2612,25 @@
       }
       my_free((gptr)cur_file->file_name, MYF(MY_ALLOW_ZERO_PTR));
       cur_file->file_name= 0;
-      lineno--;
-      start_lineno= *lineno;
       if (cur_file == file_stack)
       {
         /* We're back at the first file, check if
            all { have matching }
          */
         if (cur_block != block_stack)
-        {
-          start_lineno= *(lineno+1);
           die("Missing end of block");
-        }
+
         DBUG_PRINT("info", ("end of file"));
 	DBUG_RETURN(1);
       }
       cur_file--;
+      start_lineno= cur_file->lineno;
       continue;
     }
 
     /* Line counting is independent of state */
     if (c == '\n')
-      (*lineno)++;
+      cur_file->lineno++;
 
     switch(state) {
     case R_NORMAL:
@@ -2661,14 +2659,15 @@
       break;
     case R_LINE_START:
       /* Only accept start of comment if this is the first line in query */
-      if ((*lineno == start_lineno) && (c == '#' || c == '-' || parsing_disabled))
+      if ((cur_file->lineno == start_lineno) &&
+	  (c == '#' || c == '-' || parsing_disabled))
       {
 	state = R_COMMENT;
       }
       else if (my_isspace(charset_info, c))
       {
 	if (c == '\n')
-	  start_lineno= *lineno;		/* Query hasn't started yet */
+	  start_lineno= cur_file->lineno; /* Query hasn't started yet */
 	no_save= 1;
       }
       else if (c == '}')
@@ -2770,7 +2769,6 @@
     The advantage with this approach is to be able to execute commands
     terminated by new line '\n' regardless how many "delimiter" it contain.
 
-    If query starts with @<file_name> this will specify a file to ....
 */
 
 static char read_query_buf[MAX_QUERY];
@@ -2994,6 +2992,7 @@
             my_fopen(buff, O_RDONLY | FILE_BINARY, MYF(0))))
 	die("Could not open %s: errno = %d", buff, errno);
       cur_file->file_name= my_strdup(buff, MYF(MY_FAE));
+      cur_file->lineno= 1;
       break;
     }
   case 'm':
@@ -4383,25 +4382,30 @@
 
   save_file[0]=0;
   TMPDIR[0]=0;
+
+  /* Init cons */
   memset(cons, 0, sizeof(cons));
   cons_end = cons + MAX_CONS;
   next_con = cons + 1;
   cur_con = cons;
 
+  /* Init file stack */
   memset(file_stack, 0, sizeof(file_stack));
-  memset(&master_pos, 0, sizeof(master_pos));
   file_stack_end= file_stack + MAX_INCLUDE_DEPTH - 1;
   cur_file= file_stack;
-  lineno   = lineno_stack;
-  my_init_dynamic_array(&q_lines, sizeof(struct st_query*), INIT_Q_LINES,
-		     INIT_Q_LINES);
 
+  /* Init block stack */
   memset(block_stack, 0, sizeof(block_stack));
   block_stack_end= block_stack + BLOCK_STACK_DEPTH - 1;
   cur_block= block_stack;
   cur_block->ok= TRUE; /* Outer block should always be executed */
   cur_block->cmd= cmd_none;
 
+  my_init_dynamic_array(&q_lines, sizeof(struct st_query*), INIT_Q_LINES,
+		     INIT_Q_LINES);
+
+  memset(&master_pos, 0, sizeof(master_pos));
+
   init_dynamic_string(&ds_res, "", 0, 65536);
   parse_args(argc, argv);
 
@@ -4414,8 +4418,8 @@
   {
     cur_file->file= stdin;
     cur_file->file_name= my_strdup("<stdin>", MYF(MY_WME));
+    cur_file->lineno= 1;
   }
-  *lineno=1;
 #ifndef EMBEDDED_LIBRARY
   if (manager_host)
     init_manager();
@@ -4709,6 +4713,8 @@
 
     parser.current_line += current_line_inc;
   }
+
+  start_lineno= 0;
 
   /*
     The whole test has been executed _sucessfully_

--- 1.220/BitKeeper/etc/ignore	2006-01-09 18:04:02 +01:00
+++ 1.221/BitKeeper/etc/ignore	2006-01-12 14:29:56 +01:00
@@ -133,107 +133,6 @@
 autom4te.cache/output.0
 autom4te.cache/requests
 autom4te.cache/traces.0
-storage/bdb/*.ds?
-storage/bdb/*.vcproj
-storage/bdb/README
-storage/bdb/btree/btree_auto.c
-storage/bdb/build_unix/*
-storage/bdb/build_vxworks/db.h
-storage/bdb/build_vxworks/db_int.h
-storage/bdb/build_win32/db.h
-storage/bdb/build_win32/db_archive.dsp
-storage/bdb/build_win32/db_checkpoint.dsp
-storage/bdb/build_win32/db_config.h
-storage/bdb/build_win32/db_cxx.h
-storage/bdb/build_win32/db_deadlock.dsp
-storage/bdb/build_win32/db_dll.dsp
-storage/bdb/build_win32/db_dump.dsp
-storage/bdb/build_win32/db_int.h
-storage/bdb/build_win32/db_java.dsp
-storage/bdb/build_win32/db_load.dsp
-storage/bdb/build_win32/db_perf.dsp
-storage/bdb/build_win32/db_printlog.dsp
-storage/bdb/build_win32/db_recover.dsp
-storage/bdb/build_win32/db_stat.dsp
-storage/bdb/build_win32/db_static.dsp
-storage/bdb/build_win32/db_tcl.dsp
-storage/bdb/build_win32/db_test.dsp
-storage/bdb/build_win32/db_upgrade.dsp
-storage/bdb/build_win32/db_verify.dsp
-storage/bdb/build_win32/ex_access.dsp
-storage/bdb/build_win32/ex_btrec.dsp
-storage/bdb/build_win32/ex_env.dsp
-storage/bdb/build_win32/ex_lock.dsp
-storage/bdb/build_win32/ex_mpool.dsp
-storage/bdb/build_win32/ex_tpcb.dsp
-storage/bdb/build_win32/excxx_access.dsp
-storage/bdb/build_win32/excxx_btrec.dsp
-storage/bdb/build_win32/excxx_env.dsp
-storage/bdb/build_win32/excxx_lock.dsp
-storage/bdb/build_win32/excxx_mpool.dsp
-storage/bdb/build_win32/excxx_tpcb.dsp
-storage/bdb/build_win32/include.tcl
-storage/bdb/build_win32/libdb.def
-storage/bdb/build_win32/libdb.rc
-storage/bdb/db/crdel_auto.c
-storage/bdb/db/db_auto.c
-storage/bdb/dbinc_auto/*.*
-storage/bdb/dbreg/dbreg_auto.c
-storage/bdb/dist/autom4te-2.53.cache/*
-storage/bdb/dist/autom4te-2.53.cache/output.0
-storage/bdb/dist/autom4te-2.53.cache/requests
-storage/bdb/dist/autom4te-2.53.cache/traces.0
-storage/bdb/dist/autom4te.cache/*
-storage/bdb/dist/autom4te.cache/output.0
-storage/bdb/dist/autom4te.cache/requests
-storage/bdb/dist/autom4te.cache/traces.0
-storage/bdb/dist/config.hin
-storage/bdb/dist/configure
-storage/bdb/dist/tags
-storage/bdb/dist/template/db_server_proc
-storage/bdb/dist/template/gen_client_ret
-storage/bdb/dist/template/rec_btree
-storage/bdb/dist/template/rec_crdel
-storage/bdb/dist/template/rec_db
-storage/bdb/dist/template/rec_dbreg
-storage/bdb/dist/template/rec_fileops
-storage/bdb/dist/template/rec_hash
-storage/bdb/dist/template/rec_log
-storage/bdb/dist/template/rec_qam
-storage/bdb/dist/template/rec_txn
-storage/bdb/fileops/fileops_auto.c
-storage/bdb/hash/hash_auto.c
-storage/bdb/include/btree_auto.h
-storage/bdb/include/btree_ext.h
-storage/bdb/include/clib_ext.h
-storage/bdb/include/common_ext.h
-storage/bdb/include/crdel_auto.h
-storage/bdb/include/db_auto.h
-storage/bdb/include/db_ext.h
-storage/bdb/include/db_server.h
-storage/bdb/include/env_ext.h
-storage/bdb/include/gen_client_ext.h
-storage/bdb/include/gen_server_ext.h
-storage/bdb/include/hash_auto.h
-storage/bdb/include/hash_ext.h
-storage/bdb/include/lock_ext.h
-storage/bdb/include/log_auto.h
-storage/bdb/include/log_ext.h
-storage/bdb/include/mp_ext.h
-storage/bdb/include/mutex_ext.h
-storage/bdb/include/os_ext.h
-storage/bdb/include/qam_auto.h
-storage/bdb/include/qam_ext.h
-storage/bdb/include/rpc_client_ext.h
-storage/bdb/include/rpc_server_ext.h
-storage/bdb/include/tcl_ext.h
-storage/bdb/include/txn_auto.h
-storage/bdb/include/txn_ext.h
-storage/bdb/include/xa_ext.h
-storage/bdb/log/log_auto.c
-storage/bdb/qam/qam_auto.c
-storage/bdb/txn/txn_auto.c
-storage/bdb/txn/txn_autop.c
 binary/*
 bkpull.log
 bkpull.log*
@@ -270,6 +169,7 @@
 client/mysqlmanager-pwgen
 client/mysqlmanagerc
 client/mysqlshow
+client/mysqlslap
 client/mysqltest
 client/mysqltestmanager-pwgen
 client/mysqltestmanagerc
@@ -386,6 +286,7 @@
 isam/test3
 isamchk/*.ds?
 isamchk/*.vcproj
+item_xmlfunc.cc
 lib_debug/*
 lib_release/*
 libmysql/*.c
@@ -450,6 +351,7 @@
 libmysqld/ha_myisam.cc
 libmysqld/ha_myisammrg.cc
 libmysqld/ha_ndbcluster.cc
+libmysqld/ha_ndbcluster_binlog.cc
 libmysqld/ha_partition.cc
 libmysqld/ha_tina.cc
 libmysqld/handler.cc
@@ -494,6 +396,7 @@
 libmysqld/records.cc
 libmysqld/repl_failsafe.cc
 libmysqld/rpl_filter.cc
+libmysqld/rpl_injector.cc
 libmysqld/set_var.cc
 libmysqld/simple-test
 libmysqld/slave.cc
@@ -1137,6 +1040,9 @@
 stamp-h3
 stamp-h4
 start_mysqld.sh
+storage/archive/archive_test
+storage/bdb/*.ds?
+storage/bdb/*.vcproj
 storage/bdb/README
 storage/bdb/btree/btree_auto.c
 storage/bdb/btree/btree_autop.c
@@ -1156,6 +1062,38 @@
 storage/bdb/build_vxworks/dbdemo/dbdemo22.wpj
 storage/bdb/build_win32/*.dsp
 storage/bdb/build_win32/*.h
+storage/bdb/build_win32/db.h
+storage/bdb/build_win32/db_archive.dsp
+storage/bdb/build_win32/db_checkpoint.dsp
+storage/bdb/build_win32/db_config.h
+storage/bdb/build_win32/db_cxx.h
+storage/bdb/build_win32/db_deadlock.dsp
+storage/bdb/build_win32/db_dll.dsp
+storage/bdb/build_win32/db_dump.dsp
+storage/bdb/build_win32/db_int.h
+storage/bdb/build_win32/db_java.dsp
+storage/bdb/build_win32/db_load.dsp
+storage/bdb/build_win32/db_perf.dsp
+storage/bdb/build_win32/db_printlog.dsp
+storage/bdb/build_win32/db_recover.dsp
+storage/bdb/build_win32/db_stat.dsp
+storage/bdb/build_win32/db_static.dsp
+storage/bdb/build_win32/db_tcl.dsp
+storage/bdb/build_win32/db_test.dsp
+storage/bdb/build_win32/db_upgrade.dsp
+storage/bdb/build_win32/db_verify.dsp
+storage/bdb/build_win32/ex_access.dsp
+storage/bdb/build_win32/ex_btrec.dsp
+storage/bdb/build_win32/ex_env.dsp
+storage/bdb/build_win32/ex_lock.dsp
+storage/bdb/build_win32/ex_mpool.dsp
+storage/bdb/build_win32/ex_tpcb.dsp
+storage/bdb/build_win32/excxx_access.dsp
+storage/bdb/build_win32/excxx_btrec.dsp
+storage/bdb/build_win32/excxx_env.dsp
+storage/bdb/build_win32/excxx_lock.dsp
+storage/bdb/build_win32/excxx_mpool.dsp
+storage/bdb/build_win32/excxx_tpcb.dsp
 storage/bdb/build_win32/include.tcl
 storage/bdb/build_win32/libdb.def
 storage/bdb/build_win32/libdb.rc
@@ -1473,6 +1411,8 @@
 storage/ndb/src/mgmsrv/ndb_mgmd
 storage/ndb/src/mgmsrv/ndb_mgmd.dsp
 storage/ndb/src/ndbapi/libndbapi.dsp
+storage/ndb/test/ndbapi/DbAsyncGenerator
+storage/ndb/test/ndbapi/DbCreate
 storage/ndb/test/ndbapi/bank/bankCreator
 storage/ndb/test/ndbapi/bank/bankMakeGL
 storage/ndb/test/ndbapi/bank/bankSumAccounts
@@ -1488,21 +1428,26 @@
 storage/ndb/test/ndbapi/flexBench.dsp
 storage/ndb/test/ndbapi/flexHammer
 storage/ndb/test/ndbapi/flexTT
+storage/ndb/test/ndbapi/ndbapi_slow_select
 storage/ndb/test/ndbapi/testBackup
 storage/ndb/test/ndbapi/testBasic
 storage/ndb/test/ndbapi/testBasic.dsp
 storage/ndb/test/ndbapi/testBasicAsynch
+storage/ndb/test/ndbapi/testBitfield
 storage/ndb/test/ndbapi/testBlobs
 storage/ndb/test/ndbapi/testBlobs.dsp
 storage/ndb/test/ndbapi/testDataBuffers
 storage/ndb/test/ndbapi/testDeadlock
 storage/ndb/test/ndbapi/testDict
 storage/ndb/test/ndbapi/testIndex
+storage/ndb/test/ndbapi/testLcp
 storage/ndb/test/ndbapi/testMgm
 storage/ndb/test/ndbapi/testNdbApi
 storage/ndb/test/ndbapi/testNodeRestart
 storage/ndb/test/ndbapi/testOIBasic
 storage/ndb/test/ndbapi/testOperations
+storage/ndb/test/ndbapi/testPartitioning
+storage/ndb/test/ndbapi/testReadPerf
 storage/ndb/test/ndbapi/testRestartGci
 storage/ndb/test/ndbapi/testSRBank
 storage/ndb/test/ndbapi/testScan
@@ -1513,6 +1458,7 @@
 storage/ndb/test/ndbapi/testTimeout
 storage/ndb/test/ndbapi/testTransactions
 storage/ndb/test/ndbapi/test_event
+storage/ndb/test/ndbapi/test_event_merge
 storage/ndb/test/run-test/atrt
 storage/ndb/test/src/libNDBT.dsp
 storage/ndb/test/tools/copy_tab
@@ -1527,6 +1473,7 @@
 storage/ndb/test/tools/hugoPkUpdate
 storage/ndb/test/tools/hugoScanRead
 storage/ndb/test/tools/hugoScanUpdate
+storage/ndb/test/tools/listen_event
 storage/ndb/test/tools/ndb_cpcc
 storage/ndb/test/tools/restart
 storage/ndb/test/tools/verify_index
@@ -1658,8 +1605,3 @@
 vio/viotest.cpp
 zlib/*.ds?
 zlib/*.vcproj
-client/mysqlslap
-storage/archive/archive_test
-item_xmlfunc.cc
-libmysqld/ha_ndbcluster_binlog.cc
-libmysqld/rpl_injector.cc

--- 1.58/mysql-test/r/ps.result	2006-01-05 17:48:53 +01:00
+++ 1.59/mysql-test/r/ps.result	2006-01-12 14:30:26 +01:00
@@ -534,13 +534,13 @@
 prepare my_stmt from @aux;
 execute my_stmt;
 COUNT(*)
-37
+38
 execute my_stmt;
 COUNT(*)
-37
+38
 execute my_stmt;
 COUNT(*)
-37
+38
 deallocate prepare my_stmt;
 drop procedure if exists p1|
 drop table if exists t1|

--- 1.37/storage/ndb/src/ndbapi/ndb_cluster_connection.cpp	2006-01-12 10:11:54 +01:00
+++ 1.38/storage/ndb/src/ndbapi/ndb_cluster_connection.cpp	2006-01-12 14:30:28 +01:00
@@ -122,7 +122,7 @@
 }
 
 void
-Ndb_cluster_connection_impl::init_get_next_node
+Ndb_cluster_connection::init_get_next_node
 (Ndb_cluster_connection_node_iter &iter)
 {
   if (iter.scan_state != (Uint8)~0)
@@ -136,7 +136,7 @@
 }
 
 Uint32
-Ndb_cluster_connection_impl::get_next_node(Ndb_cluster_connection_node_iter &iter)
+Ndb_cluster_connection::get_next_node(Ndb_cluster_connection_node_iter &iter)
 {
   Uint32 cur_pos= iter.cur_pos;
   if (cur_pos >= no_db_nodes())

--- 1.27/scripts/mysql_create_system_tables.sh	2006-01-09 15:05:21 +01:00
+++ 1.28/scripts/mysql_create_system_tables.sh	2006-01-12 14:33:55 +01:00
@@ -72,6 +72,7 @@
   c_d="$c_d   Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
   c_d="$c_d   Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
   c_d="$c_d   Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
+  c_d="$c_d   Event_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
   c_d="$c_d PRIMARY KEY Host (Host,Db,User),"
   c_d="$c_d KEY User (User)"
   c_d="$c_d ) engine=MyISAM"
@@ -150,6 +151,7 @@
   c_u="$c_u   Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
   c_u="$c_u   Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
   c_u="$c_u   Create_user_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
+  c_u="$c_u   Event_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
   c_u="$c_u   ssl_type enum('','ANY','X509', 'SPECIFIED') COLLATE utf8_general_ci DEFAULT '' NOT NULL,"
   c_u="$c_u   ssl_cipher BLOB NOT NULL,"
   c_u="$c_u   x509_issuer BLOB NOT NULL,"
@@ -741,6 +743,35 @@
   c_p="$c_p comment='Stored Procedures';"
 fi
 
+
+if test ! -f $mdata/event.frm
+then
+  c_ev="$c_ev CREATE TABLE event ("
+  c_ev="$c_ev   db char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '',"
+  c_ev="$c_ev   name char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '',"
+  c_ev="$c_ev   body longblob NOT NULL,"
+  c_ev="$c_ev   definer char(77) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '',"
+  c_ev="$c_ev   execute_at DATETIME default NULL,"
+  c_ev="$c_ev   interval_value int(11) default NULL,"
+  c_ev="$c_ev   interval_field ENUM('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK',"
+  c_ev="$c_ev                        'SECOND','MICROSECOND', 'YEAR_MONTH','DAY_HOUR',"
+  c_ev="$c_ev                        'DAY_MINUTE','DAY_SECOND',"
+  c_ev="$c_ev                        'HOUR_MINUTE','HOUR_SECOND',"
+  c_ev="$c_ev                        'MINUTE_SECOND','DAY_MICROSECOND',"
+  c_ev="$c_ev                        'HOUR_MICROSECOND','MINUTE_MICROSECOND',"
+  c_ev="$c_ev                        'SECOND_MICROSECOND') default NULL,"
+  c_ev="$c_ev   created TIMESTAMP NOT NULL,"
+  c_ev="$c_ev   modified TIMESTAMP NOT NULL,"
+  c_ev="$c_ev   last_executed DATETIME default NULL,"
+  c_ev="$c_ev   starts DATETIME default NULL,"
+  c_ev="$c_ev   ends DATETIME default NULL,"
+  c_ev="$c_ev   status ENUM('ENABLED','DISABLED') NOT NULL default 'ENABLED',"
+  c_ev="$c_ev   on_completion ENUM('DROP','PRESERVE') NOT NULL default 'DROP',"
+  c_ev="$c_ev   comment varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '',"
+  c_ev="$c_ev   PRIMARY KEY  (db,name)"
+  c_ev="$c_ev ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT 'Events';"
+fi
+
 cat << END_OF_DATA
 use mysql;
 set storage_engine=myisam;
@@ -781,6 +812,7 @@
 $c_p
 $c_pp
 
+$c_ev
 CREATE DATABASE IF NOT EXISTS cluster_replication;
 CREATE TABLE IF NOT EXISTS cluster_replication.binlog_index (Position BIGINT UNSIGNED NOT NULL, File VARCHAR(255) NOT NULL, epoch BIGINT UNSIGNED NOT NULL, inserts BIGINT UNSIGNED NOT NULL, updates BIGINT UNSIGNED NOT NULL, deletes BIGINT UNSIGNED NOT NULL, schemaops BIGINT UNSIGNED NOT NULL, PRIMARY KEY(epoch)) ENGINE=MYISAM;
 
Thread
bk commit into 5.1 tree (tomas:1.2035)tomas12 Jan