From: jhe Date: August 15 2006 6:39am Subject: bk commit into 5.1 tree (Justin.He:1.2277) List-Archive: http://lists.mysql.com/commits/10410 Message-Id: <200608150639.k7F6dJfp030039@qa3-104.qa.cn.tlan> Below is the list of changes that have just been committed into a local 5.1 repository of justin.he. When justin.he 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@stripped, 2006-08-15 14:39:02+08:00, Justin.He@stripped +18 -0 Merge qa3-104.qa.cn.tlan:/mnt/sda7/justin.he/mysql/mysql-5.0-ndb-bj into qa3-104.qa.cn.tlan:/mnt/sda7/justin.he/mysql/mysql-5.1-ndb-bj MERGE: 1.1810.1697.129 client/mysql.cc@stripped, 2006-08-15 14:38:47+08:00, Justin.He@stripped +0 -0 Auto merged MERGE: 1.199.1.15 mysql-test/r/grant.result@stripped, 2006-08-15 14:38:47+08:00, Justin.He@stripped +0 -0 Auto merged MERGE: 1.37.1.17 mysql-test/r/grant2.result@stripped, 2006-08-15 14:38:47+08:00, Justin.He@stripped +0 -0 Auto merged MERGE: 1.25.2.6 mysql-test/r/heap_btree.result@stripped, 2006-08-15 14:38:47+08:00, Justin.He@stripped +0 -0 Auto merged MERGE: 1.18.1.4 mysql-test/t/grant.test@stripped, 2006-08-15 14:38:47+08:00, Justin.He@stripped +0 -0 Auto merged MERGE: 1.41.1.2 mysql-test/t/grant2.test@stripped, 2006-08-15 14:38:47+08:00, Justin.He@stripped +0 -0 Auto merged MERGE: 1.31.2.6 mysql-test/t/mysqlbinlog.test@stripped, 2006-08-15 14:38:47+08:00, Justin.He@stripped +0 -0 Auto merged MERGE: 1.21.1.12 scripts/fill_func_tables.sh@stripped, 2006-08-15 14:38:47+08:00, Justin.He@stripped +0 -0 Auto merged MERGE: 1.4.1.1 scripts/mysql_install_db.sh@stripped, 2006-08-15 14:38:47+08:00, Justin.He@stripped +0 -0 Auto merged MERGE: 1.64.1.1 sql/mysqld.cc@stripped, 2006-08-15 14:38:48+08:00, Justin.He@stripped +0 -0 Auto merged MERGE: 1.439.1.126 sql/set_var.cc@stripped, 2006-08-15 14:38:49+08:00, Justin.He@stripped +0 -0 Auto merged MERGE: 1.125.5.19 sql/sql_base.cc@stripped, 2006-08-15 14:38:49+08:00, Justin.He@stripped +0 -0 Auto merged MERGE: 1.235.1.113 sql/sql_update.cc@stripped, 2006-08-15 14:38:49+08:00, Justin.He@stripped +0 -0 Auto merged MERGE: 1.154.2.41 sql/sql_view.cc@stripped, 2006-08-15 14:38:50+08:00, Justin.He@stripped +0 -0 Auto merged MERGE: 1.78.1.18 storage/heap/hp_delete.c@stripped, 2006-08-15 14:38:50+08:00, Justin.He@stripped +0 -0 Auto merged MERGE: 1.14.3.2 storage/heap/hp_delete.c@stripped, 2006-08-15 14:38:46+08:00, Justin.He@stripped +0 -0 Merge rename: heap/hp_delete.c -> storage/heap/hp_delete.c storage/myisam/mi_update.c@stripped, 2006-08-15 14:38:50+08:00, Justin.He@stripped +0 -0 Auto merged MERGE: 1.17.5.2 storage/myisam/mi_update.c@stripped, 2006-08-15 14:38:46+08:00, Justin.He@stripped +0 -0 Merge rename: myisam/mi_update.c -> storage/myisam/mi_update.c storage/ndb/src/mgmsrv/ConfigInfo.cpp@stripped, 2006-08-15 14:38:50+08:00, Justin.He@stripped +0 -0 Auto merged MERGE: 1.60.18.2 storage/ndb/src/mgmsrv/ConfigInfo.cpp@stripped, 2006-08-15 14:38:46+08:00, Justin.He@stripped +0 -0 Merge rename: ndb/src/mgmsrv/ConfigInfo.cpp -> storage/ndb/src/mgmsrv/ConfigInfo.cpp storage/ndb/src/mgmsrv/MgmtSrvr.cpp@stripped, 2006-08-15 14:38:50+08:00, Justin.He@stripped +0 -0 Auto merged MERGE: 1.73.29.2 storage/ndb/src/mgmsrv/MgmtSrvr.cpp@stripped, 2006-08-15 14:38:46+08:00, Justin.He@stripped +0 -0 Merge rename: ndb/src/mgmsrv/MgmtSrvr.cpp -> storage/ndb/src/mgmsrv/MgmtSrvr.cpp # 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: Justin.He # Host: qa3-104.qa.cn.tlan # Root: /mnt/sda7/justin.he/mysql/mysql-5.1-ndb-bj/RESYNC --- 1.220/client/mysql.cc 2006-08-15 14:39:23 +08:00 +++ 1.221/client/mysql.cc 2006-08-15 14:39:23 +08:00 @@ -606,13 +606,13 @@ {"force", 'f', "Continue even if we get an sql error.", (gptr*) &ignore_errors, (gptr*) &ignore_errors, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"no-named-commands", 'g', - "Named commands are disabled. Use \\* form only, or use named commands only in the beginning of a line ending with a semicolon (;) Since version 10.9 the client now starts with this option ENABLED by default! Disable with '-G'. Long format commands still work from the first line. WARNING: option deprecated; use --disable-named-commands instead.", - 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"named-commands", 'G', "Enable named commands. Named commands mean this program's internal commands; see mysql> help . When enabled, the named commands can be used from any line of the query, otherwise only from the first line, before an enter. Disable with --disable-named-commands. This option is disabled by default.", (gptr*) &named_cmds, (gptr*) &named_cmds, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"no-named-commands", 'g', + "Named commands are disabled. Use \\* form only, or use named commands only in the beginning of a line ending with a semicolon (;) Since version 10.9 the client now starts with this option ENABLED by default! Disable with '-G'. Long format commands still work from the first line. WARNING: option deprecated; use --disable-named-commands instead.", + 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"ignore-spaces", 'i', "Ignore space after function names.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"local-infile", OPT_LOCAL_INFILE, "Enable/disable LOAD DATA LOCAL INFILE.", @@ -631,13 +631,6 @@ NO_ARG, 1, 0, 0, 0, 0, 0}, {"skip-line-numbers", 'L', "Don't write line number for errors. WARNING: -L is deprecated, use long version of this option instead.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, -#ifdef USE_POPEN - {"no-pager", OPT_NOPAGER, - "Disable pager and print to stdout. See interactive help (\\h) also. WARNING: option deprecated; use --disable-pager instead.", - 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, -#endif - {"no-tee", OPT_NOTEE, "Disable outfile. See interactive help (\\h) also. WARNING: option deprecated; use --disable-tee instead", 0, 0, 0, GET_NO_ARG, - NO_ARG, 0, 0, 0, 0, 0, 0}, {"unbuffered", 'n', "Flush buffer after each query.", (gptr*) &unbuffered, (gptr*) &unbuffered, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"column-names", OPT_COLUMN_NAMES, "Write column names in results.", @@ -657,8 +650,11 @@ 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #ifdef USE_POPEN {"pager", OPT_PAGER, - "Pager to use to display results. If you don't supply an option the default pager is taken from your ENV variable PAGER. Valid pagers are less, more, cat [> filename], etc. See interactive help (\\h) also. This option does not work in batch mode.", + "Pager to use to display results. If you don't supply an option the default pager is taken from your ENV variable PAGER. Valid pagers are less, more, cat [> filename], etc. See interactive help (\\h) also. This option does not work in batch mode. Disable with --disable-pager. This option is disabled by default.", 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, + {"no-pager", OPT_NOPAGER, + "Disable pager and print to stdout. See interactive help (\\h) also. WARNING: option deprecated; use --disable-pager instead.", + 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif {"password", 'p', "Password to use when connecting to server. If password is not given it's asked from the tty.", @@ -699,8 +695,10 @@ {"debug-info", 'T', "Print some debug info at exit.", (gptr*) &info_flag, (gptr*) &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"tee", OPT_TEE, - "Append everything into outfile. See interactive help (\\h) also. Does not work in batch mode.", + "Append everything into outfile. See interactive help (\\h) also. Does not work in batch mode. Disable with --disable-tee. This option is disabled by default.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"no-tee", OPT_NOTEE, "Disable outfile. See interactive help (\\h) also. WARNING: option deprecated; use --disable-tee instead", 0, 0, 0, GET_NO_ARG, + NO_ARG, 0, 0, 0, 0, 0, 0}, #ifndef DONT_ALLOW_USER_CHANGE {"user", 'u', "User for login if not current user.", (gptr*) ¤t_user, (gptr*) ¤t_user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, @@ -1804,7 +1802,14 @@ if (help_arg[0] != '\'') { - (void) strxnmov(cmd_buf, sizeof(cmd_buf), "help '", help_arg, "'", NullS); + char *end_arg= strend(help_arg); + if(--end_arg) + { + while (my_isspace(charset_info,*end_arg)) + end_arg--; + *++end_arg= '\0'; + } + (void) strxnmov(cmd_buf, sizeof(cmd_buf), "help '", help_arg, "'", NullS); server_cmd= cmd_buf; } @@ -1890,9 +1895,13 @@ { reg1 int i, j; char * help_arg= strchr(line,' '), buff[32], *end; - if (help_arg) - return com_server_help(buffer,line,help_arg+1); + { + while (my_isspace(charset_info,*help_arg)) + help_arg++; + if (*help_arg) + return com_server_help(buffer,line,help_arg); + } put_info("\nFor information about MySQL products and services, visit:\n" " http://www.mysql.com/\n" --- 1.65/scripts/mysql_install_db.sh 2006-08-15 14:39:23 +08:00 +++ 1.66/scripts/mysql_install_db.sh 2006-08-15 14:39:23 +08:00 @@ -1,4 +1,3 @@ - #!/bin/sh # Copyright (C) 2002-2003 MySQL AB # For a more info consult the file COPYRIGHT distributed with this file. --- 1.5/scripts/fill_func_tables.sh 2006-08-15 14:39:23 +08:00 +++ 1.6/scripts/fill_func_tables.sh 2006-08-15 14:39:23 +08:00 @@ -1,7 +1,12 @@ -#!/usr/bin/perl +#!@PERL@ +# +# Copyright (C) 2003 MySQL AB +# For a more info consult the file COPYRIGHT distributed with this file. +# # fill_func_tables - parse ../Docs/manual.texi - -# Original version by vva +# +# Original version by Victor Vagin +# my $cat_name= ""; my $func_name= ""; --- 1.21/mysql-test/r/heap_btree.result 2006-08-15 14:39:23 +08:00 +++ 1.22/mysql-test/r/heap_btree.result 2006-08-15 14:39:23 +08:00 @@ -246,6 +246,41 @@ SELECT * from t1; a DROP TABLE t1; +create table t1(a int not null, key using btree(a)) engine=heap; +insert into t1 values (2), (2), (2), (1), (1), (3), (3), (3), (3); +select a from t1 where a > 2 order by a; +a +3 +3 +3 +3 +delete from t1 where a < 4; +select a from t1 order by a; +a +insert into t1 values (2), (2), (2), (1), (1), (3), (3), (3), (3); +select a from t1 where a > 4 order by a; +a +delete from t1 where a > 4; +select a from t1 order by a; +a +1 +1 +2 +2 +2 +3 +3 +3 +3 +select a from t1 where a > 3 order by a; +a +delete from t1 where a >= 2; +select a from t1 order by a; +a +1 +1 +drop table t1; +End of 4.1 tests CREATE TABLE t1(val INT, KEY USING BTREE(val)) ENGINE=memory; INSERT INTO t1 VALUES(0); SELECT INDEX_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='t1'; --- 1.60.18.1/ndb/src/mgmsrv/ConfigInfo.cpp 2006-08-15 14:39:23 +08:00 +++ 1.85/storage/ndb/src/mgmsrv/ConfigInfo.cpp 2006-08-15 14:39:23 +08:00 @@ -762,6 +762,30 @@ STR_VALUE(MAX_INT_RNIL)}, { + CFG_DB_DISK_PAGE_BUFFER_MEMORY, + "DiskPageBufferMemory", + DB_TOKEN, + "Number bytes on each "DB_TOKEN_PRINT" node allocated for disk page buffer cache", + ConfigInfo::CI_USED, + false, + ConfigInfo::CI_INT64, + "64M", + "4M", + "1024G" }, + + { + CFG_DB_SGA, + "SharedGlobalMemory", + DB_TOKEN, + "Total number bytes on each "DB_TOKEN_PRINT" node allocated for any use", + ConfigInfo::CI_USED, + false, + ConfigInfo::CI_INT64, + "20M", + "0", + "65536G" }, // 32k pages * 32-bit i value + + { CFG_DB_START_PARTIAL_TIMEOUT, "StartPartialTimeout", DB_TOKEN, @@ -870,6 +894,18 @@ STR_VALUE(MAX_INT_RNIL) }, { + CFG_DB_INITIAL_OPEN_FILES, + "InitialNoOfOpenFiles", + DB_TOKEN, + "Initial number of files open per "DB_TOKEN_PRINT" node.(One thread is created per file)", + ConfigInfo::CI_USED, + false, + ConfigInfo::CI_INT, + "27", + "20", + STR_VALUE(MAX_INT_RNIL) }, + + { CFG_DB_TRANSACTION_CHECK_INTERVAL, "TimeBetweenInactiveTransactionAbortCheck", DB_TOKEN, @@ -1215,6 +1251,18 @@ "2K", STR_VALUE(MAX_INT_RNIL) }, + { + CFG_DB_STRING_MEMORY, + "StringMemory", + DB_TOKEN, + "Default size of string memory (0 -> 5% of max 1-100 -> %of max, >100 -> actual bytes)", + ConfigInfo::CI_USED, + false, + ConfigInfo::CI_INT, + "0", + "0", + STR_VALUE(MAX_INT_RNIL) }, + /*************************************************************************** * API ***************************************************************************/ --- 1.73.29.1/ndb/src/mgmsrv/MgmtSrvr.cpp 2006-08-15 14:39:23 +08:00 +++ 1.103/storage/ndb/src/mgmsrv/MgmtSrvr.cpp 2006-08-15 14:39:23 +08:00 @@ -37,10 +37,10 @@ #include #include #include -#include #include #include #include +#include #include #include #include @@ -494,10 +494,6 @@ case NODE_TYPE_MGM: nodeTypes[id] = NDB_MGM_NODE_TYPE_MGM; break; - case NODE_TYPE_REP: - nodeTypes[id] = NDB_MGM_NODE_TYPE_REP; - break; - case NODE_TYPE_EXT_REP: default: break; } @@ -580,8 +576,7 @@ DBUG_RETURN(false); } } - theFacade= TransporterFacade::theFacadeInstance - = new TransporterFacade(); + theFacade= new TransporterFacade(); if(theFacade == 0) { DEBUG("MgmtSrvr.cpp: theFacade is NULL."); @@ -1866,9 +1861,6 @@ break; case GSN_EVENT_REP: { - EventReport *rep = (EventReport*) signal->getDataPtr(); - if (rep->getNodeId() == 0) - rep->setNodeId(refToNode(signal->theSendersBlockRef)); eventReport(signal->getDataPtr()); break; } @@ -1909,7 +1901,6 @@ DBUG_VOID_RETURN; } } - rep->setNodeId(_ownNodeId); eventReport(theData); DBUG_VOID_RETURN; @@ -1982,6 +1973,89 @@ } } +int +MgmtSrvr::alloc_node_id_req(NodeId free_node_id, enum ndb_mgm_node_type type) +{ + SignalSender ss(theFacade); + ss.lock(); // lock will be released on exit + + SimpleSignal ssig; + AllocNodeIdReq* req = CAST_PTR(AllocNodeIdReq, ssig.getDataPtrSend()); + ssig.set(ss, TestOrd::TraceAPI, QMGR, GSN_ALLOC_NODEID_REQ, + AllocNodeIdReq::SignalLength); + + req->senderRef = ss.getOwnRef(); + req->senderData = 19; + req->nodeId = free_node_id; + req->nodeType = type; + + int do_send = 1; + NodeId nodeId = 0; + while (1) + { + if (nodeId == 0) + { + bool next; + while((next = getNextNodeId(&nodeId, NDB_MGM_NODE_TYPE_NDB)) == true && + theFacade->get_node_alive(nodeId) == false); + if (!next) + return NO_CONTACT_WITH_DB_NODES; + do_send = 1; + } + if (do_send) + { + if (ss.sendSignal(nodeId, &ssig) != SEND_OK) { + return SEND_OR_RECEIVE_FAILED; + } + do_send = 0; + } + + SimpleSignal *signal = ss.waitFor(); + + int gsn = signal->readSignalNumber(); + switch (gsn) { + case GSN_ALLOC_NODEID_CONF: + { + const AllocNodeIdConf * const conf = + CAST_CONSTPTR(AllocNodeIdConf, signal->getDataPtr()); + return 0; + } + case GSN_ALLOC_NODEID_REF: + { + const AllocNodeIdRef * const ref = + CAST_CONSTPTR(AllocNodeIdRef, signal->getDataPtr()); + if (ref->errorCode == AllocNodeIdRef::NotMaster || + ref->errorCode == AllocNodeIdRef::Busy) + { + do_send = 1; + nodeId = refToNode(ref->masterRef); + continue; + } + return ref->errorCode; + } + case GSN_NF_COMPLETEREP: + { + const NFCompleteRep * const rep = + CAST_CONSTPTR(NFCompleteRep, signal->getDataPtr()); +#ifdef VM_TRACE + ndbout_c("Node %d fail completed", rep->failedNodeId); +#endif + if (rep->failedNodeId == nodeId) + nodeId = 0; + continue; + } + case GSN_NODE_FAILREP:{ + // ignore NF_COMPLETEREP will come + continue; + } + default: + report_unknown_signal(signal); + return SEND_OR_RECEIVE_FAILED; + } + } + return 0; +} + bool MgmtSrvr::alloc_node_id(NodeId * nodeId, enum ndb_mgm_node_type type, @@ -2112,6 +2186,39 @@ } NdbMutex_Unlock(m_configMutex); + if (id_found && client_addr != 0) + { + int res = alloc_node_id_req(id_found, type); + unsigned save_id_found = id_found; + switch (res) + { + case 0: + // ok continue + break; + case NO_CONTACT_WITH_DB_NODES: + // ok continue + break; + default: + // something wrong + id_found = 0; + break; + + } + if (id_found == 0) + { + char buf[128]; + ndb_error_string(res, buf, sizeof(buf)); + error_string.appfmt("Cluster refused allocation of id %d. Error: %d (%s).", + save_id_found, res, buf); + g_eventLogger.warning("Cluster refused allocation of id %d. " + "Connection from ip %s. " + "Returned error string \"%s\"", save_id_found, + inet_ntoa(((struct sockaddr_in *)(client_addr))->sin_addr), + error_string.c_str()); + DBUG_RETURN(false); + } + } + if (id_found) { *nodeId= id_found; @@ -2485,17 +2592,6 @@ return ss.sendSignal(nodeId, &ssig) == SEND_OK ? 0 : SEND_OR_RECEIVE_FAILED; } - -/***************************************************************************** - * Global Replication - *****************************************************************************/ - -int -MgmtSrvr::repCommand(Uint32* repReqId, Uint32 request, bool waitCompleted) -{ - require(false); - return 0; -} MgmtSrvr::Allocated_resources::Allocated_resources(MgmtSrvr &m) : m_mgmsrv(m) --- 1.54/mysql-test/r/grant.result 2006-08-15 14:39:23 +08:00 +++ 1.55/mysql-test/r/grant.result 2006-08-15 14:39:23 +08:00 @@ -426,6 +426,7 @@ revoke all on mysqltest_2.t2 from mysqltest_3@localhost; grant all on mysqltest_2.* to mysqltest_3@localhost; grant select on *.* to mysqltest_3@localhost; +grant select on mysqltest_2.t1 to mysqltest_3@localhost; flush privileges; use mysqltest_1; update mysqltest_2.t1, mysqltest_2.t2 set c=500,d=600; --- 1.42/mysql-test/t/grant.test 2006-08-15 14:39:23 +08:00 +++ 1.43/mysql-test/t/grant.test 2006-08-15 14:39:23 +08:00 @@ -362,6 +362,8 @@ #test the db/table level privileges grant all on mysqltest_2.* to mysqltest_3@localhost; grant select on *.* to mysqltest_3@localhost; +# Next grant is needed to trigger bug#7391. Do not optimize! +grant select on mysqltest_2.t1 to mysqltest_3@localhost; flush privileges; disconnect conn1; connect (conn2,localhost,mysqltest_3,,); --- 1.185/sql/set_var.cc 2006-08-15 14:39:23 +08:00 +++ 1.186/sql/set_var.cc 2006-08-15 14:39:24 +08:00 @@ -589,7 +589,8 @@ static sys_var_thd_bit sys_big_selects("sql_big_selects", 0, set_option_bit, OPTION_BIG_SELECTS); -static sys_var_thd_bit sys_log_off("sql_log_off", 0, +static sys_var_thd_bit sys_log_off("sql_log_off", + check_log_update, set_option_bit, OPTION_LOG_OFF); static sys_var_thd_bit sys_log_update("sql_log_update", --- 1.31/mysql-test/r/grant2.result 2006-08-15 14:39:24 +08:00 +++ 1.32/mysql-test/r/grant2.result 2006-08-15 14:39:24 +08:00 @@ -118,6 +118,16 @@ drop user mysqltest_3@host3; drop user mysqltest_1@host1, mysqltest_2@host2, mysqltest_4@host4, mysqltest_5@host5, mysqltest_6@host6, mysqltest_7@host7; +create database mysqltest_1; +grant select, insert, update on `mysqltest\_1`.* to mysqltest_1@localhost; +set sql_log_off = 1; +ERROR 42000: Access denied; you need the SUPER privilege for this operation +set sql_log_bin = 0; +ERROR 42000: Access denied; you need the SUPER privilege for this operation +delete from mysql.user where user like 'mysqltest\_1'; +delete from mysql.db where user like 'mysqltest\_1'; +drop database mysqltest_1; +flush privileges; set sql_mode='maxdb'; drop table if exists t1, t2; create table t1(c1 int); --- 1.38/mysql-test/t/grant2.test 2006-08-15 14:39:24 +08:00 +++ 1.39/mysql-test/t/grant2.test 2006-08-15 14:39:24 +08:00 @@ -188,6 +188,24 @@ connection default; # +# Bug# 16180 - Setting SQL_LOG_OFF without SUPER privilege is silently ignored +# +create database mysqltest_1; +grant select, insert, update on `mysqltest\_1`.* to mysqltest_1@localhost; +connect (con10,localhost,mysqltest_1,,); +connection con10; +--error 1227 +set sql_log_off = 1; +--error 1227 +set sql_log_bin = 0; +disconnect con10; +connection default; +delete from mysql.user where user like 'mysqltest\_1'; +delete from mysql.db where user like 'mysqltest\_1'; +drop database mysqltest_1; +flush privileges; + +# End of 4.1 tests # Create and drop user # set sql_mode='maxdb';