From ea16e525b57c1b8b9d9d53ca0b291b42567beba6 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 11 Apr 2006 02:10:08 +1000 Subject: BUG#18966 Change in stop/shutdown behaviour fix behaviour of ALL STOP and SHUTDOWN in relation to MGM nodes ndb/src/mgmclient/CommandInterpreter.cpp: Shutdown management servers properly (one we're connected to last). Fix potential problems if disconnect from one mgmd and connect to another (that's a different cluster) ndb/src/mgmsrv/MgmtSrvr.cpp: fix regression in how nodes are stopped ALL STOP - db nodes only SHUTDOWN - db and mgm nodes fix race where mgmd could stop itself before it sends the response to stop. In ~MgmApiSession() we now do the disconnect. We have (in various places) a return stopSelf which tells the caller if they need to stop or restart this daemon. ndb/src/mgmsrv/MgmtSrvr.hpp: add stopSelf return parameter to stopNodes and restartNodes. Rename stop to shutdownDB as this name better reflects what it does Rename restart to restartDB as this name better reflects what it does ndb/src/mgmsrv/Services.cpp: Stop or restart server only on mgm session disconnect (of session that asked us to) ndb/src/mgmsrv/Services.hpp: add m_stopSelf member for tracking what we should do --- ndb/src/mgmclient/CommandInterpreter.cpp | 250 +++++++++++++++++-------------- ndb/src/mgmsrv/MgmtSrvr.cpp | 73 +++++---- ndb/src/mgmsrv/MgmtSrvr.hpp | 20 +-- ndb/src/mgmsrv/Services.cpp | 15 +- ndb/src/mgmsrv/Services.hpp | 1 + 5 files changed, 205 insertions(+), 154 deletions(-) diff --git a/ndb/src/mgmclient/CommandInterpreter.cpp b/ndb/src/mgmclient/CommandInterpreter.cpp index 39c84fd8055..0fdb81989b3 100644 --- a/ndb/src/mgmclient/CommandInterpreter.cpp +++ b/ndb/src/mgmclient/CommandInterpreter.cpp @@ -162,6 +162,7 @@ private: NdbMgmHandle m_mgmsrv; NdbMgmHandle m_mgmsrv2; + const char *m_constr; bool m_connected; int m_verbose; int try_reconnect; @@ -390,22 +391,7 @@ convert(const char* s, int& val) { CommandInterpreter::CommandInterpreter(const char *_host,int verbose) : m_verbose(verbose) { - m_mgmsrv = ndb_mgm_create_handle(); - if(m_mgmsrv == NULL) { - ndbout_c("Cannot create handle to management server."); - exit(-1); - } - m_mgmsrv2 = ndb_mgm_create_handle(); - if(m_mgmsrv2 == NULL) { - ndbout_c("Cannot create 2:nd handle to management server."); - exit(-1); - } - if (ndb_mgm_set_connectstring(m_mgmsrv, _host)) - { - printError(); - exit(-1); - } - + m_constr= _host; m_connected= false; m_event_thread= 0; try_reconnect = 0; @@ -422,8 +408,6 @@ CommandInterpreter::CommandInterpreter(const char *_host,int verbose) CommandInterpreter::~CommandInterpreter() { disconnect(); - ndb_mgm_destroy_handle(&m_mgmsrv); - ndb_mgm_destroy_handle(&m_mgmsrv2); } static bool @@ -447,7 +431,6 @@ CommandInterpreter::printError() { if (ndb_mgm_check_connection(m_mgmsrv)) { - m_connected= false; disconnect(); } ndbout_c("* %5d: %s", @@ -497,78 +480,97 @@ event_thread_run(void* m) } bool -CommandInterpreter::connect() +CommandInterpreter::connect() { DBUG_ENTER("CommandInterpreter::connect"); - if(!m_connected) + + if(m_connected) + DBUG_RETURN(m_connected); + + m_mgmsrv = ndb_mgm_create_handle(); + if(m_mgmsrv == NULL) { + ndbout_c("Cannot create handle to management server."); + exit(-1); + } + m_mgmsrv2 = ndb_mgm_create_handle(); + if(m_mgmsrv2 == NULL) { + ndbout_c("Cannot create 2:nd handle to management server."); + exit(-1); + } + + if (ndb_mgm_set_connectstring(m_mgmsrv, m_constr)) { - if(!ndb_mgm_connect(m_mgmsrv, try_reconnect-1, 5, 1)) + printError(); + exit(-1); + } + + if(ndb_mgm_connect(m_mgmsrv, try_reconnect-1, 5, 1)) + DBUG_RETURN(m_connected); // couldn't connect, always false + + const char *host= ndb_mgm_get_connected_host(m_mgmsrv); + unsigned port= ndb_mgm_get_connected_port(m_mgmsrv); + BaseString constr; + constr.assfmt("%s:%d",host,port); + if(!ndb_mgm_set_connectstring(m_mgmsrv2, constr.c_str()) && + !ndb_mgm_connect(m_mgmsrv2, try_reconnect-1, 5, 1)) + { + DBUG_PRINT("info",("2:ndb connected to Management Server ok at: %s:%d", + host, port)); + assert(m_event_thread == 0); + assert(do_event_thread == 0); + do_event_thread= 0; + m_event_thread = NdbThread_Create(event_thread_run, + (void**)&m_mgmsrv2, + 32768, + "CommandInterpreted_event_thread", + NDB_THREAD_PRIO_LOW); + if (m_event_thread != 0) { - const char *host= ndb_mgm_get_connected_host(m_mgmsrv); - unsigned port= ndb_mgm_get_connected_port(m_mgmsrv); - BaseString constr; - constr.assfmt("%s:%d",host,port); - if(!ndb_mgm_set_connectstring(m_mgmsrv2, constr.c_str()) && - !ndb_mgm_connect(m_mgmsrv2, try_reconnect-1, 5, 1)) - { - DBUG_PRINT("info",("2:ndb connected to Management Server ok at: %s:%d", - host, port)); - assert(m_event_thread == 0); - assert(do_event_thread == 0); - do_event_thread= 0; - m_event_thread = NdbThread_Create(event_thread_run, - (void**)&m_mgmsrv2, - 32768, - "CommandInterpreted_event_thread", - NDB_THREAD_PRIO_LOW); - if (m_event_thread != 0) - { - DBUG_PRINT("info",("Thread created ok, waiting for started...")); - int iter= 1000; // try for 30 seconds - while(do_event_thread == 0 && - iter-- > 0) - NdbSleep_MilliSleep(30); - } - if (m_event_thread == 0 || - do_event_thread == 0 || - do_event_thread == -1) - { - DBUG_PRINT("info",("Warning, event thread startup failed, " - "degraded printouts as result, errno=%d", - errno)); - printf("Warning, event thread startup failed, " - "degraded printouts as result, errno=%d\n", errno); - do_event_thread= 0; - if (m_event_thread) - { - void *res; - NdbThread_WaitFor(m_event_thread, &res); - NdbThread_Destroy(&m_event_thread); - } - ndb_mgm_disconnect(m_mgmsrv2); - } - } - else - { - DBUG_PRINT("warning", - ("Could not do 2:nd connect to mgmtserver for event listening")); - DBUG_PRINT("info", ("code: %d, msg: %s", - ndb_mgm_get_latest_error(m_mgmsrv2), - ndb_mgm_get_latest_error_msg(m_mgmsrv2))); - printf("Warning, event connect failed, degraded printouts as result\n"); - printf("code: %d, msg: %s\n", - ndb_mgm_get_latest_error(m_mgmsrv2), - ndb_mgm_get_latest_error_msg(m_mgmsrv2)); - } - m_connected= true; - DBUG_PRINT("info",("Connected to Management Server at: %s:%d", host, port)); - if (m_verbose) + DBUG_PRINT("info",("Thread created ok, waiting for started...")); + int iter= 1000; // try for 30 seconds + while(do_event_thread == 0 && + iter-- > 0) + NdbSleep_MilliSleep(30); + } + if (m_event_thread == 0 || + do_event_thread == 0 || + do_event_thread == -1) + { + DBUG_PRINT("info",("Warning, event thread startup failed, " + "degraded printouts as result, errno=%d", + errno)); + printf("Warning, event thread startup failed, " + "degraded printouts as result, errno=%d\n", errno); + do_event_thread= 0; + if (m_event_thread) { - printf("Connected to Management Server at: %s:%d\n", - host, port); + void *res; + NdbThread_WaitFor(m_event_thread, &res); + NdbThread_Destroy(&m_event_thread); } + ndb_mgm_disconnect(m_mgmsrv2); } } + else + { + DBUG_PRINT("warning", + ("Could not do 2:nd connect to mgmtserver for event listening")); + DBUG_PRINT("info", ("code: %d, msg: %s", + ndb_mgm_get_latest_error(m_mgmsrv2), + ndb_mgm_get_latest_error_msg(m_mgmsrv2))); + printf("Warning, event connect failed, degraded printouts as result\n"); + printf("code: %d, msg: %s\n", + ndb_mgm_get_latest_error(m_mgmsrv2), + ndb_mgm_get_latest_error_msg(m_mgmsrv2)); + } + m_connected= true; + DBUG_PRINT("info",("Connected to Management Server at: %s:%d", host, port)); + if (m_verbose) + { + printf("Connected to Management Server at: %s:%d\n", + host, port); + } + DBUG_RETURN(m_connected); } @@ -576,20 +578,18 @@ bool CommandInterpreter::disconnect() { DBUG_ENTER("CommandInterpreter::disconnect"); + if (m_event_thread) { void *res; do_event_thread= 0; NdbThread_WaitFor(m_event_thread, &res); NdbThread_Destroy(&m_event_thread); m_event_thread= 0; - ndb_mgm_disconnect(m_mgmsrv2); + ndb_mgm_destroy_handle(&m_mgmsrv2); } if (m_connected) { - if (ndb_mgm_disconnect(m_mgmsrv) == -1) { - ndbout_c("Could not disconnect from management server"); - printError(); - } + ndb_mgm_destroy_handle(&m_mgmsrv); m_connected= false; } DBUG_RETURN(true); @@ -1066,28 +1066,39 @@ CommandInterpreter::executeShutdown(char* parameters) ndbout << result << " NDB Cluster node(s) have shutdown." << endl; - int mgm_id= 0; - mgm_id= ndb_mgm_get_mgmd_nodeid(m_mgmsrv); - if (mgm_id == 0) + int nodeId= 0; + int this_mgmd= 0; + this_mgmd= ndb_mgm_get_mgmd_nodeid(m_mgmsrv); + while(get_next_nodeid(state, &nodeId, NDB_MGM_NODE_TYPE_MGM)) { - ndbout << "Unable to locate management server, " - << "shutdown manually with STOP" - << endl; - return 1; + if(nodeId==this_mgmd) + continue; + ndbout << "Shutting down NDB Cluster management server nodeId=" + << nodeId << "..."; + result = ndb_mgm_stop(m_mgmsrv, 1, &nodeId); + if (result <= 0) { + ndbout << " failed." << endl; + printError(); + } + else + ndbout << "Done." << endl; } - result = ndb_mgm_stop(m_mgmsrv, 1, &mgm_id); + ndbout << "Shutting down NDB Cluster management server nodeId=" + << this_mgmd << "..."; + result= ndb_mgm_stop(m_mgmsrv, 1, &this_mgmd); if (result <= 0) { - ndbout << "Shutdown of NDB Cluster management server failed." << endl; + ndbout << " failed." << endl; printError(); - if (result == 0) - return 1; - return result; } - - m_connected= false; - disconnect(); - ndbout << "NDB Cluster management server shutdown." << endl; + else + { + ndbout << "Done." << endl; + ndbout << "Disconnecting to allow management server to shutdown." + << endl; + disconnect(); + } + ndbout << "NDB Cluster management servers shutdown." << endl; return 0; } @@ -1311,12 +1322,7 @@ CommandInterpreter::executeConnect(char* parameters) { disconnect(); if (!emptyString(parameters)) { - if (ndb_mgm_set_connectstring(m_mgmsrv, - BaseString(parameters).trim().c_str())) - { - printError(); - return; - } + m_constr= BaseString(parameters).trim().c_str(); } connect(); } @@ -1507,10 +1513,25 @@ CommandInterpreter::executeStop(Vector &command_list, ndbout_c("NDB Cluster has shutdown."); else { + int mgm_id= 0; + int need_reconnect= 0; + mgm_id= ndb_mgm_get_mgmd_nodeid(m_mgmsrv); ndbout << "Node"; for (int i= 0; i < no_of_nodes; i++) - ndbout << " " << node_ids[i]; + { + if(node_ids[i] == mgm_id) + need_reconnect= 1; + else + ndbout << " " << node_ids[i]; + } ndbout_c(" has shutdown."); + if(need_reconnect) + { + ndbout << "You are connected to node " << mgm_id + << ", disconnecting to allow it to shutdown" + << endl; + disconnect(); + } } } } @@ -1640,9 +1661,16 @@ CommandInterpreter::executeRestart(Vector &command_list, ndbout_c("NDB Cluster is being restarted."); else { + int mgm_id= 0; + mgm_id= ndb_mgm_get_mgmd_nodeid(m_mgmsrv); + ndbout << "Node"; for (int i= 0; i < no_of_nodes; i++) + { + if(node_ids[i] == mgm_id) + disconnect(); ndbout << " " << node_ids[i]; + } ndbout_c(" is being restarted"); } } diff --git a/ndb/src/mgmsrv/MgmtSrvr.cpp b/ndb/src/mgmsrv/MgmtSrvr.cpp index 9b518ba938b..4c3631488e6 100644 --- a/ndb/src/mgmsrv/MgmtSrvr.cpp +++ b/ndb/src/mgmsrv/MgmtSrvr.cpp @@ -60,9 +60,6 @@ #include -extern bool g_StopServer; -extern bool g_RestartServer; - //#define MGM_SRV_DEBUG #ifdef MGM_SRV_DEBUG #define DEBUG(x) do ndbout << x << endl; while(0) @@ -932,6 +929,13 @@ int MgmtSrvr::sendStopMgmd(NodeId nodeId, * client connection to that mgmd and stop it that way. * This allows us to stop mgm servers when there isn't any real * distributed communication up. + * + * node_ids.size()==0 means to stop all DB nodes. + * MGM nodes will *NOT* be stopped. + * + * If we work out we should be stopping or restarting ourselves, + * we return <0 in stopSelf for restart, >0 for stop + * and 0 for do nothing. */ int MgmtSrvr::sendSTOP_REQ(const Vector &node_ids, @@ -941,7 +945,8 @@ int MgmtSrvr::sendSTOP_REQ(const Vector &node_ids, bool stop, bool restart, bool nostart, - bool initialStart) + bool initialStart, + int* stopSelf) { int error = 0; DBUG_ENTER("MgmtSrvr::sendSTOP_REQ"); @@ -990,12 +995,13 @@ int MgmtSrvr::sendSTOP_REQ(const Vector &node_ids, NodeId nodeId= 0; int use_master_node= 0; int do_send= 0; - int do_stop_self= 0; + *stopSelf= 0; NdbNodeBitmask nodes_to_stop; { for (unsigned i= 0; i < node_ids.size(); i++) { nodeId= node_ids[i]; + ndbout << "asked to stop " << nodeId << endl; if (getNodeType(nodeId) != NDB_MGM_NODE_TYPE_MGM) nodes_to_stop.set(nodeId); else if (nodeId != getOwnNodeId()) @@ -1006,7 +1012,11 @@ int MgmtSrvr::sendSTOP_REQ(const Vector &node_ids, stoppedNodes.set(nodeId); } else - do_stop_self= 1;; + { + ndbout << "which is me" << endl; + *stopSelf= (restart)? -1 : 1; + stoppedNodes.set(nodeId); + } } } int no_of_nodes_to_stop= nodes_to_stop.count(); @@ -1039,14 +1049,6 @@ int MgmtSrvr::sendSTOP_REQ(const Vector &node_ids, nodes.set(nodeId); } } - nodeId= 0; - while(getNextNodeId(&nodeId, NDB_MGM_NODE_TYPE_MGM)) - { - if(nodeId==getOwnNodeId()) - continue; - if(sendStopMgmd(nodeId, abort, stop, restart, nostart, initialStart)==0) - stoppedNodes.set(nodeId); - } } // now wait for the replies @@ -1153,11 +1155,9 @@ int MgmtSrvr::sendSTOP_REQ(const Vector &node_ids, DBUG_RETURN(SEND_OR_RECEIVE_FAILED); } } - if (!error && do_stop_self) + if (error && *stopSelf) { - if (restart) - g_RestartServer= true; - g_StopServer= true; + *stopSelf= 0; } DBUG_RETURN(error); } @@ -1167,7 +1167,7 @@ int MgmtSrvr::sendSTOP_REQ(const Vector &node_ids, */ int MgmtSrvr::stopNodes(const Vector &node_ids, - int *stopCount, bool abort) + int *stopCount, bool abort, int* stopSelf) { if (!abort) { @@ -1189,20 +1189,25 @@ int MgmtSrvr::stopNodes(const Vector &node_ids, false, false, false, - false); + false, + stopSelf); if (stopCount) *stopCount= nodes.count(); return ret; } /* - * Perform system shutdown + * Perform DB nodes shutdown. + * MGM servers are left in their current state */ -int MgmtSrvr::stop(int * stopCount, bool abort) +int MgmtSrvr::shutdownDB(int * stopCount, bool abort) { NodeBitmask nodes; Vector node_ids; + + int tmp; + int ret = sendSTOP_REQ(node_ids, nodes, 0, @@ -1210,7 +1215,8 @@ int MgmtSrvr::stop(int * stopCount, bool abort) true, false, false, - false); + false, + &tmp); if (stopCount) *stopCount = nodes.count(); return ret; @@ -1235,6 +1241,7 @@ int MgmtSrvr::enterSingleUser(int * stopCount, Uint32 singleUserNodeId) } NodeBitmask nodes; Vector node_ids; + int stopSelf; int ret = sendSTOP_REQ(node_ids, nodes, singleUserNodeId, @@ -1242,7 +1249,8 @@ int MgmtSrvr::enterSingleUser(int * stopCount, Uint32 singleUserNodeId) false, false, false, - false); + false, + &stopSelf); if (stopCount) *stopCount = nodes.count(); return ret; @@ -1254,7 +1262,8 @@ int MgmtSrvr::enterSingleUser(int * stopCount, Uint32 singleUserNodeId) int MgmtSrvr::restartNodes(const Vector &node_ids, int * stopCount, bool nostart, - bool initialStart, bool abort) + bool initialStart, bool abort, + int *stopSelf) { NodeBitmask nodes; int ret= sendSTOP_REQ(node_ids, @@ -1264,21 +1273,24 @@ int MgmtSrvr::restartNodes(const Vector &node_ids, false, true, nostart, - initialStart); + initialStart, + stopSelf); if (stopCount) *stopCount = nodes.count(); return ret; } /* - * Perform system restart + * Perform restart of all DB nodes */ -int MgmtSrvr::restart(bool nostart, bool initialStart, - bool abort, int * stopCount ) +int MgmtSrvr::restartDB(bool nostart, bool initialStart, + bool abort, int * stopCount) { NodeBitmask nodes; Vector node_ids; + int tmp; + int ret = sendSTOP_REQ(node_ids, nodes, 0, @@ -1286,7 +1298,8 @@ int MgmtSrvr::restart(bool nostart, bool initialStart, true, true, true, - initialStart); + initialStart, + &tmp); if (ret) return ret; diff --git a/ndb/src/mgmsrv/MgmtSrvr.hpp b/ndb/src/mgmsrv/MgmtSrvr.hpp index fe1603a1953..b47ee69fd9f 100644 --- a/ndb/src/mgmsrv/MgmtSrvr.hpp +++ b/ndb/src/mgmsrv/MgmtSrvr.hpp @@ -253,12 +253,13 @@ public: * @param processId: Id of the DB process to stop * @return 0 if succeeded, otherwise: as stated above, plus: */ - int stopNodes(const Vector &node_ids, int *stopCount, bool abort); + int stopNodes(const Vector &node_ids, int *stopCount, bool abort, + int *stopSelf); /** - * Stop the system + * shutdown the DB nodes */ - int stop(int * cnt = 0, bool abort = false); + int shutdownDB(int * cnt = 0, bool abort = false); /** * print version info about a node @@ -292,14 +293,14 @@ public: */ int restartNodes(const Vector &node_ids, int *stopCount, bool nostart, - bool initialStart, bool abort); + bool initialStart, bool abort, int *stopSelf); /** - * Restart the system + * Restart all DB nodes */ - int restart(bool nostart, bool initialStart, - bool abort = false, - int * stopCount = 0); + int restartDB(bool nostart, bool initialStart, + bool abort = false, + int * stopCount = 0); struct BackupEvent { enum Event { @@ -503,7 +504,8 @@ private: bool stop, bool restart, bool nostart, - bool initialStart); + bool initialStart, + int *stopSelf); /** * Check if it is possible to send a signal to a (DB) process diff --git a/ndb/src/mgmsrv/Services.cpp b/ndb/src/mgmsrv/Services.cpp index a80827abd8f..a6c483fcdcd 100644 --- a/ndb/src/mgmsrv/Services.cpp +++ b/ndb/src/mgmsrv/Services.cpp @@ -35,6 +35,7 @@ #include extern bool g_StopServer; +extern bool g_RestartServer; extern EventLogger g_eventLogger; static const unsigned int MAX_READ_TIMEOUT = 1000 ; @@ -267,6 +268,7 @@ MgmApiSession::MgmApiSession(class MgmtSrvr & mgm, NDB_SOCKET_TYPE sock) m_output = new SocketOutputStream(sock); m_parser = new Parser_t(commands, *m_input, true, true, true); m_allocated_resources= new MgmtSrvr::Allocated_resources(m_mgmsrv); + m_stopSelf= 0; DBUG_VOID_RETURN; } @@ -286,6 +288,10 @@ MgmApiSession::~MgmApiSession() NDB_CLOSE_SOCKET(m_socket); m_socket= NDB_INVALID_SOCKET; } + if(m_stopSelf < 0) + g_RestartServer= true; + if(m_stopSelf) + g_StopServer= true; DBUG_VOID_RETURN; } @@ -870,7 +876,8 @@ MgmApiSession::restart(Parser::Context &, &restarted, nostart != 0, initialstart != 0, - abort != 0); + abort != 0, + &m_stopSelf); m_output->println("restart reply"); if(result != 0){ @@ -894,7 +901,7 @@ MgmApiSession::restartAll(Parser::Context &, args.get("nostart", &nostart); int count = 0; - int result = m_mgmsrv.restart(nostart, initialstart, abort, &count); + int result = m_mgmsrv.restartDB(nostart, initialstart, abort, &count); m_output->println("restart reply"); if(result != 0) @@ -1013,7 +1020,7 @@ MgmApiSession::stop(Parser::Context &, int stopped= 0; int result= 0; if (nodes.size()) - result= m_mgmsrv.stopNodes(nodes, &stopped, abort != 0); + result= m_mgmsrv.stopNodes(nodes, &stopped, abort != 0, &m_stopSelf); m_output->println("stop reply"); if(result != 0) @@ -1032,7 +1039,7 @@ MgmApiSession::stopAll(Parser::Context &, Uint32 abort; args.get("abort", &abort); - int result = m_mgmsrv.stop(&stopped, abort != 0); + int result = m_mgmsrv.shutdownDB(&stopped, abort != 0); m_output->println("stop reply"); if(result != 0) diff --git a/ndb/src/mgmsrv/Services.hpp b/ndb/src/mgmsrv/Services.hpp index f97223750a1..b8a73f5e4bc 100644 --- a/ndb/src/mgmsrv/Services.hpp +++ b/ndb/src/mgmsrv/Services.hpp @@ -40,6 +40,7 @@ private: Parser_t *m_parser; MgmtSrvr::Allocated_resources *m_allocated_resources; char m_err_str[1024]; + int m_stopSelf; // -1 is restart, 0 do nothing, 1 stop void getConfig_common(Parser_t::Context &ctx, const class Properties &args, -- cgit v1.2.1 From 3010775ed19b6fbbbc2837e5ed8b377266c5533a Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 17 Apr 2006 14:40:25 +0500 Subject: Bug#18201: XML: ExtractValue works even if the xml fragment is not well-formed xml Problem: - ExtractValue silently returned NULL if a wrong XML value is passed. - In some cases "unexpected END-OF-INPUT" error was not detected, and a non-NULL result could be returned for a bad XML value. Fix: - Adding warning messages, to make user aware why NULL was returned. - Missing "unexpected END-OF-INPUT" error is reported now. mysql-test/r/xml.result: - Fixing XML systax error in old test - Adding test cases. mysql-test/t/xml.test: - Fixing XML systax error in old test - Adding test cases. sql/item_xmlfunc.cc: Produce warning in case of XML systax error, instead of silentrly returning NULL. strings/xml.c: - Making error messages better looking and clearer: It is important because now they're seen in SHOW WARNINGS (previously they were used only for debugging purposes). - Adding "unexpected END-OF-INPUT" error if after scanning closing tag for the root element some input is left (previously this error was ignored in a mistake). --- mysql-test/r/xml.result | 32 +++++++++++++++++++++++++++++++- mysql-test/t/xml.test | 13 ++++++++++++- sql/item_xmlfunc.cc | 12 +++++++++++- strings/xml.c | 27 +++++++++++++++++++-------- 4 files changed, 73 insertions(+), 11 deletions(-) diff --git a/mysql-test/r/xml.result b/mysql-test/r/xml.result index 7e44673dd78..15daf7bb9b5 100644 --- a/mysql-test/r/xml.result +++ b/mysql-test/r/xml.result @@ -132,7 +132,7 @@ xb1 xc1 SELECT extractValue(@xml,'/a//@x[2]'); extractValue(@xml,'/a//@x[2]') xb2 xc2 -SET @xml='b1b2c1b1c1b2c2b1/a>'; +SET @xml='b1b2c1b1c1b2c2b1'; SELECT extractValue(@xml,'//b[1]'); extractValue(@xml,'//b[1]') b1 c1b1 c2b1 @@ -612,6 +612,36 @@ extractvalue('Jack' collate latin1_bin,'/a[contains(../a,"j")]') select ExtractValue('','/tag1'); ExtractValue('','/tag1') test +select extractValue('a','/a'); +extractValue('a','/a') +NULL +Warnings: +Warning 1504 Incorrect XML value: 'parse error at line 1 pos 5: unexpected END-OF-INPUT' +select extractValue('a<','/a'); +extractValue('a<','/a') +NULL +Warnings: +Warning 1504 Incorrect XML value: 'parse error at line 1 pos 6: END-OF-INPUT unexpected (ident or '/' wanted)' +select extractValue('aaaa' wanted)' +select extractValue('a','/a'); +extractValue('a','/a') +NULL +Warnings: +Warning 1504 Incorrect XML value: 'parse error at line 1 pos 12: '' unexpected (END-OF-INPUT wanted)' +select extractValue('a','/a'); +extractValue('a','/a') +NULL +Warnings: +Warning 1504 Incorrect XML value: 'parse error at line 1 pos 7: '>' unexpected (ident or string wanted)' select extractValue('1','position()'); ERROR HY000: XPATH syntax error: '' select extractValue('1','last()'); diff --git a/mysql-test/t/xml.test b/mysql-test/t/xml.test index 8ed623883b6..af509a2f45e 100644 --- a/mysql-test/t/xml.test +++ b/mysql-test/t/xml.test @@ -53,7 +53,7 @@ SELECT extractValue(@xml,'/a//@x'); SELECT extractValue(@xml,'/a//@x[1]'); SELECT extractValue(@xml,'/a//@x[2]'); -SET @xml='b1b2c1b1c1b2c2b1/a>'; +SET @xml='b1b2c1b1c1b2c2b1'; SELECT extractValue(@xml,'//b[1]'); SELECT extractValue(@xml,'/descendant::b[1]'); @@ -284,6 +284,17 @@ select extractvalue('Jack' collate latin1_bin,'/a[contains(../a,"j")]'); # select ExtractValue('','/tag1'); +# +# Bug#18201: XML: ExtractValue works even if the xml fragment +# is not well-formed xml +# +select extractValue('a','/a'); +select extractValue('a<','/a'); +select extractValue('aaa','/a'); +select extractValue('a','/a'); + # # Bug #18171 XML: ExtractValue: the XPath position() # function crashes the server! diff --git a/sql/item_xmlfunc.cc b/sql/item_xmlfunc.cc index 71900c26c2d..6bbbf67e074 100644 --- a/sql/item_xmlfunc.cc +++ b/sql/item_xmlfunc.cc @@ -2563,7 +2563,17 @@ String *Item_xml_str_func::parse_xml(String *raw_xml, String *parsed_xml_buf) xml_enter(&p, raw_xml->ptr(), 0); /* Execute XML parser */ - rc= my_xml_parse(&p, raw_xml->ptr(), raw_xml->length()); + if ((rc= my_xml_parse(&p, raw_xml->ptr(), raw_xml->length())) != MY_XML_OK) + { + char buf[128]; + my_snprintf(buf, sizeof(buf)-1, "parse error at line %d pos %d: %s", + my_xml_error_lineno(&p) + 1, + my_xml_error_pos(&p) + 1, + my_xml_error_string(&p)); + push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN, + ER_WRONG_VALUE, + ER(ER_WRONG_VALUE), "XML", buf); + } my_xml_parser_free(&p); return rc == MY_XML_OK ? parsed_xml_buf : 0; diff --git a/strings/xml.c b/strings/xml.c index 4c09e85604d..76fdd07f25e 100644 --- a/strings/xml.c +++ b/strings/xml.c @@ -43,7 +43,7 @@ static const char *lex2str(int lex) { switch(lex) { - case MY_XML_EOF: return "EOF"; + case MY_XML_EOF: return "END-OF-INPUT"; case MY_XML_STRING: return "STRING"; case MY_XML_IDENT: return "IDENT"; case MY_XML_CDATA: return "CDATA"; @@ -195,8 +195,13 @@ static int my_xml_leave(MY_XML_PARSER *p, const char *str, uint slen) if (str && (slen != glen)) { mstr(s,str,sizeof(s)-1,slen); - mstr(g,e+1,sizeof(g)-1,glen), - sprintf(p->errstr,"'' unexpected ('' wanted)",s,g); + if (glen) + { + mstr(g,e+1,sizeof(g)-1,glen), + sprintf(p->errstr,"'' unexpected ('' wanted)",s,g); + } + else + sprintf(p->errstr,"'' unexpected (END-OF-INPUT wanted)", s); return MY_XML_ERROR; } @@ -247,7 +252,7 @@ int my_xml_parse(MY_XML_PARSER *p,const char *str, uint len) { if (MY_XML_IDENT != (lex=my_xml_scan(p,&a))) { - sprintf(p->errstr,"1: %s unexpected (ident wanted)",lex2str(lex)); + sprintf(p->errstr,"%s unexpected (ident wanted)",lex2str(lex)); return MY_XML_ERROR; } if (MY_XML_OK != my_xml_leave(p,a.beg,(uint) (a.end-a.beg))) @@ -275,7 +280,7 @@ int my_xml_parse(MY_XML_PARSER *p,const char *str, uint len) } else { - sprintf(p->errstr,"3: %s unexpected (ident or '/' wanted)", + sprintf(p->errstr,"%s unexpected (ident or '/' wanted)", lex2str(lex)); return MY_XML_ERROR; } @@ -297,7 +302,7 @@ int my_xml_parse(MY_XML_PARSER *p,const char *str, uint len) } else { - sprintf(p->errstr,"4: %s unexpected (ident or string wanted)", + sprintf(p->errstr,"%s unexpected (ident or string wanted)", lex2str(lex)); return MY_XML_ERROR; } @@ -325,7 +330,7 @@ gt: { if (lex != MY_XML_QUESTION) { - sprintf(p->errstr,"6: %s unexpected ('?' wanted)",lex2str(lex)); + sprintf(p->errstr,"%s unexpected ('?' wanted)",lex2str(lex)); return MY_XML_ERROR; } if (MY_XML_OK != my_xml_leave(p,NULL,0)) @@ -341,7 +346,7 @@ gt: if (lex != MY_XML_GT) { - sprintf(p->errstr,"5: %s unexpected ('>' wanted)",lex2str(lex)); + sprintf(p->errstr,"%s unexpected ('>' wanted)",lex2str(lex)); return MY_XML_ERROR; } } @@ -359,6 +364,12 @@ gt: } } } + + if (p->attr[0]) + { + sprintf(p->errstr,"unexpected END-OF-INPUT"); + return MY_XML_ERROR; + } return MY_XML_OK; } -- cgit v1.2.1 From faa5f3e00754f326eed456b9d7b36be751fd11b3 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 17 Apr 2006 22:51:34 -0400 Subject: BUG#16002: Make partition functions that are unsigned work properly mysql-test/r/partition.result: A number of new test cases for unsigned partition functions mysql-test/r/partition_error.result: A number of new test cases for unsigned partition functions mysql-test/r/partition_range.result: A number of new test cases for unsigned partition functions mysql-test/t/partition.test: A number of new test cases for unsigned partition functions mysql-test/t/partition_error.test: A number of new test cases for unsigned partition functions mysql-test/t/partition_range.test: A number of new test cases for unsigned partition functions sql/ha_partition.cc: Error message for no partition found needs to take signed/unsigned into account when printing erroneus value sql/partition_element.h: Introduced signed_flag and max_value flag on partition elements Also list is now a list of a struct rather than simply longlong values Small rearranges of order sql/partition_info.cc: Introduced signed_flag and max_value flag on partition elements Also list is now a list of a struct rather than simply longlong values Small rearranges of order Lots of new code to handle checks of proper definition of table when partition function is unsigned sql/partition_info.h: Mostly rearrangement of code and some addition of a THD object in check_partition_info call plus a new method for comparing unsigned values sql/share/errmsg.txt: Negative values not ok for unsigned partition functions sql/sql_partition.cc: Fixed a multi-thread bug (when defining several partitioned tables in parallel) New code to generate partition syntax that takes into account sign of constants. Made function fix_fields_part_func more reusable. Fixed a number of get_partition_id functions for range and list and similar functions for partition pruning code. Unfortunately fairly much duplication of code with just small changes. sql/sql_partition.h: New function headers sql/sql_show.cc: Changed list of values for LIST partitioned tables Also fixed printing of unsigned values in INFORMATION SCHEMA for partitioned table sql/sql_table.cc: Fixed for new interface sql/sql_yacc.yy: Moved definition of struct to partition_element.h Added code to keep track of sign of constants in RANGE and LIST partitions sql/table.cc: Fixed for new interface --- mysql-test/r/partition.result | 20 ++ mysql-test/r/partition_error.result | 4 + mysql-test/r/partition_range.result | 12 + mysql-test/t/partition.test | 23 ++ mysql-test/t/partition_error.test | 5 + mysql-test/t/partition_range.test | 17 ++ sql/ha_partition.cc | 17 +- sql/partition_element.h | 22 +- sql/partition_info.cc | 115 ++++++--- sql/partition_info.h | 23 +- sql/share/errmsg.txt | 3 + sql/sql_partition.cc | 455 ++++++++++++++++++++++++++---------- sql/sql_partition.h | 7 +- sql/sql_show.cc | 9 +- sql/sql_table.cc | 4 +- sql/sql_yacc.yy | 23 +- sql/table.cc | 3 +- 17 files changed, 559 insertions(+), 203 deletions(-) diff --git a/mysql-test/r/partition.result b/mysql-test/r/partition.result index 2e293df50e2..e14cd3b8fe8 100644 --- a/mysql-test/r/partition.result +++ b/mysql-test/r/partition.result @@ -1,4 +1,14 @@ drop table if exists t1; +create table t1 (a bigint unsigned); +insert into t1 values (0xFFFFFFFFFFFFFFFD); +insert into t1 values (0xFFFFFFFFFFFFFFFE); +select * from t1 where (a + 1) < 10; +a +select * from t1 where (a + 1) > 10; +a +18446744073709551613 +18446744073709551614 +drop table t1; CREATE TABLE t1 ( a int not null, b int not null, @@ -839,4 +849,14 @@ SHOW TABLE STATUS; Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment t1 MyISAM 10 Dynamic 0 0 0 0 0 0 NULL NULL NULL NULL latin1_swedish_ci NULL partitioned DROP TABLE t1; +create table t1 (a bigint unsigned) +partition by list (a) +(partition p0 values in (0-1)); +ERROR HY000: Partition function is unsigned, cannot have negative constants +create table t1 (a bigint unsigned) +partition by range (a) +(partition p0 values less than (10)); +insert into t1 values (0xFFFFFFFFFFFFFFFF); +ERROR HY000: Table has no partition for value 18446744073709551615 +drop table t1; End of 5.1 tests diff --git a/mysql-test/r/partition_error.result b/mysql-test/r/partition_error.result index 1a0b1dd9b3a..cc51b909c51 100644 --- a/mysql-test/r/partition_error.result +++ b/mysql-test/r/partition_error.result @@ -554,3 +554,7 @@ PARTITION BY RANGE (a) (PARTITION p1 VALUES LESS THAN(5)); insert into t1 values (10); ERROR HY000: Table has no partition for value 10 drop table t1; +create table t1 (a bigint unsigned) +partition by range (a) +(partition p0 values less than (-1)); +ERROR HY000: Partition function is unsigned, cannot have negative constants diff --git a/mysql-test/r/partition_range.result b/mysql-test/r/partition_range.result index fc9350f5902..4d071c0edc1 100644 --- a/mysql-test/r/partition_range.result +++ b/mysql-test/r/partition_range.result @@ -363,3 +363,15 @@ SELECT COUNT(*) FROM t1 WHERE c3 < '2000-12-31'; COUNT(*) 10 DROP TABLE t1; +create table t1 (a bigint unsigned) +partition by range (a) +(partition p0 values less than (0), +partition p1 values less than (10)); +ERROR HY000: VALUES LESS THAN value must be strictly increasing for each partition +create table t1 (a bigint unsigned) +partition by range (a) +(partition p0 values less than (2), +partition p1 values less than (10)); +insert into t1 values (0xFFFFFFFFFFFFFFFF); +ERROR HY000: Table has no partition for value 18446744073709551615 +drop table t1; diff --git a/mysql-test/t/partition.test b/mysql-test/t/partition.test index a3aa3f6f025..a916e4c34a9 100644 --- a/mysql-test/t/partition.test +++ b/mysql-test/t/partition.test @@ -9,6 +9,13 @@ drop table if exists t1; --enable_warnings +create table t1 (a bigint unsigned); +insert into t1 values (0xFFFFFFFFFFFFFFFD); +insert into t1 values (0xFFFFFFFFFFFFFFFE); +select * from t1 where (a + 1) < 10; +select * from t1 where (a + 1) > 10; +drop table t1; + # # Partition by key no partition defined => OK # @@ -956,4 +963,20 @@ PARTITION p2 VALUES LESS THAN (30) ENGINE = MyISAM); SHOW TABLE STATUS; DROP TABLE t1; +# +#BUG 16002 Erroneus handling of unsigned partition functions +# +--error ER_SIGNED_PARTITION_CONSTANT_ERROR +create table t1 (a bigint unsigned) +partition by list (a) +(partition p0 values in (0-1)); + +create table t1 (a bigint unsigned) +partition by range (a) +(partition p0 values less than (10)); + +--error ER_NO_PARTITION_FOR_GIVEN_VALUE +insert into t1 values (0xFFFFFFFFFFFFFFFF); +drop table t1; + --echo End of 5.1 tests diff --git a/mysql-test/t/partition_error.test b/mysql-test/t/partition_error.test index 03a2ab41807..dad2d2beda6 100644 --- a/mysql-test/t/partition_error.test +++ b/mysql-test/t/partition_error.test @@ -747,3 +747,8 @@ CREATE TABLE t1(a int) --error ER_NO_PARTITION_FOR_GIVEN_VALUE insert into t1 values (10); drop table t1; + +--error ER_SIGNED_PARTITION_CONSTANT_ERROR +create table t1 (a bigint unsigned) +partition by range (a) +(partition p0 values less than (-1)); diff --git a/mysql-test/t/partition_range.test b/mysql-test/t/partition_range.test index a4d8c3740b7..239c6cc8144 100644 --- a/mysql-test/t/partition_range.test +++ b/mysql-test/t/partition_range.test @@ -388,3 +388,20 @@ SELECT COUNT(*) FROM t1 WHERE c3 BETWEEN '1996-12-31' AND '2000-12-31'; SELECT COUNT(*) FROM t1 WHERE c3 < '2000-12-31'; DROP TABLE t1; +# +# BUG 16002: Unsigned partition functions not handled correctly +# +--error ER_RANGE_NOT_INCREASING_ERROR +create table t1 (a bigint unsigned) +partition by range (a) +(partition p0 values less than (0), + partition p1 values less than (10)); + +create table t1 (a bigint unsigned) +partition by range (a) +(partition p0 values less than (2), + partition p1 values less than (10)); +--error ER_NO_PARTITION_FOR_GIVEN_VALUE +insert into t1 values (0xFFFFFFFFFFFFFFFF); + +drop table t1; diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index 7cf841a5d71..c9f4c6b02e9 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -5165,9 +5165,20 @@ void ha_partition::print_error(int error, myf errflag) if (error == HA_ERR_NO_PARTITION_FOUND) { char buf[100]; - my_error(ER_NO_PARTITION_FOR_GIVEN_VALUE, MYF(0), - m_part_info->part_expr->null_value ? "NULL" : - llstr(m_part_info->part_expr->val_int(), buf)); + longlong value= m_part_info->part_expr->val_int(); + if (!m_part_info->part_expr->unsigned_flag || + m_part_info->part_expr->null_value) + { + my_error(ER_NO_PARTITION_FOR_GIVEN_VALUE, MYF(0), + m_part_info->part_expr->null_value ? "NULL" : + llstr(m_part_info->part_expr->val_int(), buf)); + } + else + { + ulonglong value= m_part_info->part_expr->val_int(); + longlong2str(value, buf, 10); + my_error(ER_NO_PARTITION_FOR_GIVEN_VALUE, MYF(0), buf); + } } else m_file[0]->print_error(error, errflag); diff --git a/sql/partition_element.h b/sql/partition_element.h index d20715d2408..7063e514901 100644 --- a/sql/partition_element.h +++ b/sql/partition_element.h @@ -36,15 +36,22 @@ enum partition_state { PART_IS_ADDED= 8 }; +typedef struct p_elem_val +{ + longlong value; + bool null_value; + bool unsigned_flag; +} part_elem_value; + class partition_element :public Sql_alloc { public: List subpartitions; - List list_val_list; + List list_val_list; ulonglong part_max_rows; ulonglong part_min_rows; + longlong range_value; char *partition_name; char *tablespace_name; - longlong range_value; char* part_comment; char* data_file_name; char* index_file_name; @@ -52,13 +59,16 @@ public: enum partition_state part_state; uint16 nodegroup_id; bool has_null_value; + bool signed_flag; + bool max_value; partition_element() - : part_max_rows(0), part_min_rows(0), partition_name(NULL), - tablespace_name(NULL), range_value(0), part_comment(NULL), + : part_max_rows(0), part_min_rows(0), range_value(0), + partition_name(NULL), tablespace_name(NULL), part_comment(NULL), data_file_name(NULL), index_file_name(NULL), - engine_type(NULL),part_state(PART_NORMAL), - nodegroup_id(UNDEF_NODEGROUP), has_null_value(FALSE) + engine_type(NULL), part_state(PART_NORMAL), + nodegroup_id(UNDEF_NODEGROUP), has_null_value(FALSE), + signed_flag(FALSE), max_value(FALSE) { subpartitions.empty(); list_val_list.empty(); diff --git a/sql/partition_info.cc b/sql/partition_info.cc index ad0aa053ae2..7f2fea252f1 100644 --- a/sql/partition_info.cc +++ b/sql/partition_info.cc @@ -445,10 +445,12 @@ bool partition_info::check_range_constants() { partition_element* part_def; longlong current_largest_int= LONGLONG_MIN; + ulonglong current_largest_uint= 0; longlong part_range_value_int; uint i; List_iterator it(partitions); bool result= TRUE; + bool signed_flag= !part_expr->unsigned_flag; DBUG_ENTER("partition_info::check_range_constants"); DBUG_PRINT("enter", ("INT_RESULT with %d parts", no_parts)); @@ -463,19 +465,40 @@ bool partition_info::check_range_constants() do { part_def= it++; - if ((i != (no_parts - 1)) || !defined_max_value) - part_range_value_int= part_def->range_value; - else - part_range_value_int= LONGLONG_MAX; - if (likely(current_largest_int < part_range_value_int)) + if (signed_flag) { - current_largest_int= part_range_value_int; - range_int_array[i]= part_range_value_int; + if ((i != (no_parts - 1)) || !defined_max_value) + part_range_value_int= part_def->range_value; + else + part_range_value_int= LONGLONG_MAX; + if (likely(current_largest_int < part_range_value_int)) + { + current_largest_int= part_range_value_int; + range_int_array[i]= part_range_value_int; + } + else + { + my_error(ER_RANGE_NOT_INCREASING_ERROR, MYF(0)); + goto end; + } } else { - my_error(ER_RANGE_NOT_INCREASING_ERROR, MYF(0)); - goto end; + ulonglong upart_range_value_int; + if ((i != (no_parts - 1)) || !defined_max_value) + upart_range_value_int= part_def->range_value; + else + upart_range_value_int= ULONGLONG_MAX; + if (likely(current_largest_uint < upart_range_value_int)) + { + current_largest_uint= upart_range_value_int; + range_int_array[i]= part_range_value_int; + } + else + { + my_error(ER_RANGE_NOT_INCREASING_ERROR, MYF(0)); + goto end; + } } } while (++i < no_parts); result= FALSE; @@ -485,8 +508,8 @@ end: /* - A support routine for check_list_constants used by qsort to sort the - constant list expressions. + Support routines for check_list_constants used by qsort to sort the + constant list expressions. One routine for unsigned and one for signed. SYNOPSIS list_part_cmp() @@ -511,6 +534,18 @@ int partition_info::list_part_cmp(const void* a, const void* b) return 0; } +int partition_info::list_part_cmp_unsigned(const void* a, const void* b) +{ + ulonglong a1= ((LIST_PART_ENTRY*)a)->list_value; + ulonglong b1= ((LIST_PART_ENTRY*)b)->list_value; + if (a1 < b1) + return -1; + else if (a1 > b1) + return +1; + else + return 0; +} + /* This routine allocates an array for all list constants to achieve a fast @@ -536,7 +571,7 @@ bool partition_info::check_list_constants() { uint i; uint list_index= 0; - longlong *list_value; + part_elem_value *list_value; bool not_first; bool result= TRUE; longlong curr_value, prev_value; @@ -577,7 +612,7 @@ bool partition_info::check_list_constants() has_null_part_id= i; found_null= TRUE; } - List_iterator list_val_it1(part_def->list_val_list); + List_iterator list_val_it1(part_def->list_val_list); while (list_val_it1++) no_list_values++; } while (++i < no_parts); @@ -593,33 +628,40 @@ bool partition_info::check_list_constants() do { part_def= list_func_it++; - List_iterator list_val_it2(part_def->list_val_list); + List_iterator list_val_it2(part_def->list_val_list); while ((list_value= list_val_it2++)) { - list_array[list_index].list_value= *list_value; + list_array[list_index].list_value= list_value->value; list_array[list_index++].partition_id= i; } } while (++i < no_parts); - qsort((void*)list_array, no_list_values, sizeof(LIST_PART_ENTRY), - &list_part_cmp); - - not_first= FALSE; - i= prev_value= 0; //prev_value initialised to quiet compiler - do + if (fixed) { - curr_value= list_array[i].list_value; - if (likely(!not_first || prev_value != curr_value)) - { - prev_value= curr_value; - not_first= TRUE; - } + if (!part_expr->unsigned_flag) + qsort((void*)list_array, no_list_values, sizeof(LIST_PART_ENTRY), + &list_part_cmp); else + qsort((void*)list_array, no_list_values, sizeof(LIST_PART_ENTRY), + &list_part_cmp_unsigned); + + not_first= FALSE; + i= prev_value= 0; //prev_value initialised to quiet compiler + do { - my_error(ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR, MYF(0)); - goto end; - } - } while (++i < no_list_values); + curr_value= list_array[i].list_value; + if (likely(!not_first || prev_value != curr_value)) + { + prev_value= curr_value; + not_first= TRUE; + } + else + { + my_error(ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR, MYF(0)); + goto end; + } + } while (++i < no_list_values); + } result= FALSE; end: DBUG_RETURN(result); @@ -647,7 +689,7 @@ end: */ -bool partition_info::check_partition_info(handlerton **eng_type, +bool partition_info::check_partition_info(THD *thd, handlerton **eng_type, handler *file, ulonglong max_rows) { handlerton **engine_array= NULL; @@ -733,9 +775,12 @@ bool partition_info::check_partition_info(handlerton **eng_type, list constants. */ - if (unlikely((part_type == RANGE_PARTITION && check_range_constants()) || - (part_type == LIST_PARTITION && check_list_constants()))) - goto end; + if (fixed) + { + if (unlikely((part_type == RANGE_PARTITION && check_range_constants()) || + (part_type == LIST_PARTITION && check_list_constants()))) + goto end; + } result= FALSE; end: my_free((char*)engine_array,MYF(MY_ALLOW_ZERO_PTR)); diff --git a/sql/partition_info.h b/sql/partition_info.h index 664c8834b0b..5a2cacd3c71 100644 --- a/sql/partition_info.h +++ b/sql/partition_info.h @@ -163,6 +163,7 @@ public: uint no_subpart_fields; uint no_full_part_fields; + uint has_null_part_id; /* This variable is used to calculate the partition id when using LINEAR KEY/HASH. This functionality is kept in the MySQL Server @@ -182,7 +183,6 @@ public: bool fixed; bool from_openfrm; bool has_null_value; - uint has_null_part_id; partition_info() @@ -204,19 +204,13 @@ public: no_parts(0), no_subparts(0), count_curr_subparts(0), part_error_code(0), no_list_values(0), no_part_fields(0), no_subpart_fields(0), - no_full_part_fields(0), linear_hash_mask(0), - use_default_partitions(TRUE), - use_default_no_partitions(TRUE), - use_default_subpartitions(TRUE), - use_default_no_subpartitions(TRUE), - default_partitions_setup(FALSE), - defined_max_value(FALSE), + no_full_part_fields(0), has_null_part_id(0), linear_hash_mask(0), + use_default_partitions(TRUE), use_default_no_partitions(TRUE), + use_default_subpartitions(TRUE), use_default_no_subpartitions(TRUE), + default_partitions_setup(FALSE), defined_max_value(FALSE), list_of_part_fields(FALSE), list_of_subpart_fields(FALSE), - linear_hash_ind(FALSE), - fixed(FALSE), - from_openfrm(FALSE), - has_null_value(FALSE), - has_null_part_id(0) + linear_hash_ind(FALSE), fixed(FALSE), from_openfrm(FALSE), + has_null_value(FALSE) { all_fields_in_PF.clear_all(); all_fields_in_PPF.clear_all(); @@ -248,10 +242,11 @@ public: static bool check_engine_mix(handlerton **engine_array, uint no_parts); bool check_range_constants(); bool check_list_constants(); - bool check_partition_info(handlerton **eng_type, + bool check_partition_info(THD *thd, handlerton **eng_type, handler *file, ulonglong max_rows); private: static int list_part_cmp(const void* a, const void* b); + static int list_part_cmp_unsigned(const void* a, const void* b); bool set_up_default_partitions(handler *file, ulonglong max_rows, uint start_no); bool set_up_default_subpartitions(handler *file, ulonglong max_rows); diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt index e8766b3d882..3724ff464f2 100644 --- a/sql/share/errmsg.txt +++ b/sql/share/errmsg.txt @@ -5826,3 +5826,6 @@ ER_NDB_CANT_SWITCH_BINLOG_FORMAT eng "The NDB cluster engine does not support changing the binlog format on the fly yet" ER_PARTITION_NO_TEMPORARY eng "Cannot create temporary table with partitions" +ER_SIGNED_PARTITION_CONSTANT_ERROR + eng "Partition function is unsigned, cannot have negative constants" + swe "Partitionsfunktionen är positiv, kan inte ha negativa konstanter" diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index 5cae38f2773..4605a4dc28c 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -61,7 +61,6 @@ static const char *equal_str= "="; static const char *end_paren_str= ")"; static const char *begin_paren_str= "("; static const char *comma_str= ","; -static char buff[22]; int get_partition_id_list(partition_info *part_info, uint32 *part_id, @@ -189,9 +188,9 @@ bool is_name_in_list(char *name, SYNOPSIS partition_default_handling() table Table object - table_name Table name to use when getting no_parts - db_name Database name to use when getting no_parts part_info Partition info to set up + is_create_table_ind Is this part of a table creation + normalized_path Normalized path name of table and database RETURN VALUES TRUE Error @@ -793,6 +792,43 @@ end: } +/* + Support function to check if all VALUES * (expression) is of the + right sign (no signed constants when unsigned partition function) + + SYNOPSIS + check_signed_flag() + part_info Partition info object + + RETURN VALUES + 0 No errors due to sign errors + >0 Sign error +*/ + +int check_signed_flag(partition_info *part_info) +{ + int error= 0; + uint i= 0; + if (part_info->part_type != HASH_PARTITION && + part_info->part_expr->unsigned_flag) + { + List_iterator part_it(part_info->partitions); + do + { + partition_element *part_elem= part_it++; + + if (part_elem->signed_flag) + { + my_error(ER_SIGNED_PARTITION_CONSTANT_ERROR, MYF(0)); + error= ER_SIGNED_PARTITION_CONSTANT_ERROR; + break; + } + } while (++i < part_info->no_parts); + } + return error; +} + + /* The function uses a new feature in fix_fields where the flag GET_FIXED_FIELDS_FLAG is set for all fields in the item tree. @@ -802,10 +838,11 @@ end: SYNOPSIS fix_fields_part_func() thd The thread object - tables A list of one table, the partitioned table func_expr The item tree reference of the partition function + table The table object part_info Reference to partitioning data structure sub_part Is the table subpartitioned as well + set_up_fields Flag if we are to set-up field arrays RETURN VALUE TRUE An error occurred, something was wrong with the @@ -828,26 +865,54 @@ end: on the field object. */ -static bool fix_fields_part_func(THD *thd, TABLE_LIST *tables, - Item* func_expr, partition_info *part_info, - bool is_sub_part) +bool fix_fields_part_func(THD *thd, Item* func_expr, TABLE *table, + bool is_sub_part, bool is_field_to_be_setup) { + partition_info *part_info= table->part_info; + uint dir_length, home_dir_length; bool result= TRUE; - TABLE *table= tables->table; + TABLE_LIST tables; TABLE_LIST *save_table_list, *save_first_table, *save_last_table; int error; Name_resolution_context *context; const char *save_where; + char* db_name; + char db_name_string[FN_REFLEN]; DBUG_ENTER("fix_fields_part_func"); + if (part_info->fixed) + { + if (!(is_sub_part || (error= check_signed_flag(part_info)))) + result= FALSE; + goto end; + } + + /* + Set-up the TABLE_LIST object to be a list with a single table + Set the object to zero to create NULL pointers and set alias + and real name to table name and get database name from file name. + */ + + bzero((void*)&tables, sizeof(TABLE_LIST)); + tables.alias= tables.table_name= (char*) table->s->table_name.str; + tables.table= table; + tables.next_local= 0; + tables.next_name_resolution_table= 0; + strmov(db_name_string, table->s->normalized_path.str); + dir_length= dirname_length(db_name_string); + db_name_string[dir_length - 1]= 0; + home_dir_length= dirname_length(db_name_string); + db_name= &db_name_string[home_dir_length]; + tables.db= db_name; + context= thd->lex->current_context(); table->map= 1; //To ensure correct calculation of const item table->get_fields_in_item_tree= TRUE; save_table_list= context->table_list; save_first_table= context->first_name_resolution_table; save_last_table= context->last_name_resolution_table; - context->table_list= tables; - context->first_name_resolution_table= tables; + context->table_list= &tables; + context->first_name_resolution_table= &tables; context->last_name_resolution_table= NULL; func_expr->walk(&Item::change_context_processor, (byte*) context); save_where= thd->where; @@ -859,7 +924,8 @@ static bool fix_fields_part_func(THD *thd, TABLE_LIST *tables, if (unlikely(error)) { DBUG_PRINT("info", ("Field in partition function not part of table")); - clear_field_flag(table); + if (is_field_to_be_setup) + clear_field_flag(table); goto end; } thd->where= save_where; @@ -869,7 +935,13 @@ static bool fix_fields_part_func(THD *thd, TABLE_LIST *tables, clear_field_flag(table); goto end; } - result= set_up_field_array(table, is_sub_part); + if ((!is_sub_part) && (error= check_signed_flag(part_info))) + goto end; + result= FALSE; + if (is_field_to_be_setup) + result= set_up_field_array(table, is_sub_part); + if (!is_sub_part) + part_info->fixed= TRUE; end: table->get_fields_in_item_tree= FALSE; table->map= 0; //Restore old value @@ -1303,7 +1375,6 @@ static uint32 get_part_id_from_linear_hash(longlong hash_value, uint mask, SYNOPSIS fix_partition_func() thd The thread object - name The name of the partitioned table table TABLE object for which partition fields are set-up create_table_ind Indicator of whether openfrm was called as part of CREATE or ALTER TABLE @@ -1325,15 +1396,10 @@ NOTES of an error that is not discovered until here. */ -bool fix_partition_func(THD *thd, const char* name, TABLE *table, +bool fix_partition_func(THD *thd, TABLE *table, bool is_create_table_ind) { bool result= TRUE; - uint dir_length, home_dir_length; - TABLE_LIST tables; - TABLE_SHARE *share= table->s; - char db_name_string[FN_REFLEN]; - char* db_name; partition_info *part_info= table->part_info; ulong save_set_query_id= thd->set_query_id; Item *thd_free_list= thd->free_list; @@ -1345,23 +1411,6 @@ bool fix_partition_func(THD *thd, const char* name, TABLE *table, } thd->set_query_id= 0; DBUG_PRINT("info", ("thd->set_query_id: %d", thd->set_query_id)); - /* - Set-up the TABLE_LIST object to be a list with a single table - Set the object to zero to create NULL pointers and set alias - and real name to table name and get database name from file name. - */ - - bzero((void*)&tables, sizeof(TABLE_LIST)); - tables.alias= tables.table_name= (char*) share->table_name.str; - tables.table= table; - tables.next_local= 0; - tables.next_name_resolution_table= 0; - strmov(db_name_string, name); - dir_length= dirname_length(db_name_string); - db_name_string[dir_length - 1]= 0; - home_dir_length= dirname_length(db_name_string); - db_name= &db_name_string[home_dir_length]; - tables.db= db_name; if (!is_create_table_ind || thd->lex->sql_command != SQLCOM_CREATE_TABLE) @@ -1391,9 +1440,8 @@ bool fix_partition_func(THD *thd, const char* name, TABLE *table, } else { - if (unlikely(fix_fields_part_func(thd, &tables, - part_info->subpart_expr, part_info, - TRUE))) + if (unlikely(fix_fields_part_func(thd, part_info->subpart_expr, + table, TRUE, TRUE))) goto end; if (unlikely(part_info->subpart_expr->result_type() != INT_RESULT)) { @@ -1420,8 +1468,8 @@ bool fix_partition_func(THD *thd, const char* name, TABLE *table, } else { - if (unlikely(fix_fields_part_func(thd, &tables, part_info->part_expr, - part_info, FALSE))) + if (unlikely(fix_fields_part_func(thd, part_info->part_expr, + table, FALSE, TRUE))) goto end; if (unlikely(part_info->part_expr->result_type() != INT_RESULT)) { @@ -1434,6 +1482,9 @@ bool fix_partition_func(THD *thd, const char* name, TABLE *table, else { const char *error_str; + if (unlikely(fix_fields_part_func(thd, part_info->part_expr, + table, FALSE, TRUE))) + goto end; if (part_info->part_type == RANGE_PARTITION) { error_str= partition_keywords[PKW_RANGE].str; @@ -1457,9 +1508,6 @@ bool fix_partition_func(THD *thd, const char* name, TABLE *table, my_error(ER_PARTITIONS_MUST_BE_DEFINED_ERROR, MYF(0), error_str); goto end; } - if (unlikely(fix_fields_part_func(thd, &tables, part_info->part_expr, - part_info, FALSE))) - goto end; if (unlikely(part_info->part_expr->result_type() != INT_RESULT)) { my_error(ER_PARTITION_FUNC_NOT_ALLOWED_ERROR, MYF(0), part_str); @@ -1479,7 +1527,6 @@ bool fix_partition_func(THD *thd, const char* name, TABLE *table, check_range_capable_PF(table); set_up_partition_key_maps(table, part_info); set_up_partition_func_pointers(part_info); - part_info->fixed= TRUE; set_up_range_analysis_info(part_info); result= FALSE; end: @@ -1563,6 +1610,7 @@ static int add_hash(File fptr) static int add_partition(File fptr) { + char buff[22]; strxmov(buff, part_str, space_str, NullS); return add_string(fptr, buff); } @@ -1576,6 +1624,7 @@ static int add_subpartition(File fptr) static int add_partition_by(File fptr) { + char buff[22]; strxmov(buff, part_str, space_str, by_str, space_str, NullS); return add_string(fptr, buff); } @@ -1616,10 +1665,18 @@ static int add_key_partition(File fptr, List field_list) static int add_int(File fptr, longlong number) { + char buff[32]; llstr(number, buff); return add_string(fptr, buff); } +static int add_uint(File fptr, ulonglong number) +{ + char buff[32]; + longlong2str(number, buff, 10); + return add_string(fptr, buff); +} + static int add_keyword_string(File fptr, const char *keyword, bool should_use_quotes, const char *keystr) @@ -1681,28 +1738,43 @@ static int add_partition_options(File fptr, partition_element *p_elem) } static int add_partition_values(File fptr, partition_info *part_info, - partition_element *p_elem) + partition_element *p_elem) { int err= 0; if (part_info->part_type == RANGE_PARTITION) { err+= add_string(fptr, "VALUES LESS THAN "); - if (p_elem->range_value != LONGLONG_MAX) + if (p_elem->signed_flag) { - err+= add_begin_parenthesis(fptr); - err+= add_int(fptr, p_elem->range_value); - err+= add_end_parenthesis(fptr); + if (!p_elem->max_value) + { + err+= add_begin_parenthesis(fptr); + err+= add_int(fptr, p_elem->range_value); + err+= add_end_parenthesis(fptr); + } + else + err+= add_string(fptr, partition_keywords[PKW_MAXVALUE].str); } else - err+= add_string(fptr, partition_keywords[PKW_MAXVALUE].str); + { + if (!p_elem->max_value) + { + err+= add_begin_parenthesis(fptr); + err+= add_uint(fptr, (ulonglong)p_elem->range_value); + err+= add_end_parenthesis(fptr); + } + else + err+= add_string(fptr, partition_keywords[PKW_MAXVALUE].str); + } } else if (part_info->part_type == LIST_PARTITION) { uint i; - List_iterator list_val_it(p_elem->list_val_list); + List_iterator list_val_it(p_elem->list_val_list); err+= add_string(fptr, "VALUES IN "); uint no_items= p_elem->list_val_list.elements; + err+= add_begin_parenthesis(fptr); if (p_elem->has_null_value) { @@ -1717,8 +1789,12 @@ static int add_partition_values(File fptr, partition_info *part_info, i= 0; do { - longlong *list_value= list_val_it++; - err+= add_int(fptr, *list_value); + part_elem_value *list_value= list_val_it++; + + if (!list_value->unsigned_flag) + err+= add_int(fptr, list_value->value); + else + err+= add_uint(fptr, list_value->value); if (i != (no_items-1)) err+= add_comma(fptr); } while (++i < no_items); @@ -2294,15 +2370,15 @@ static uint32 get_part_id_linear_key(partition_info *part_info, int get_partition_id_list(partition_info *part_info, - uint32 *part_id, - longlong *func_value) + uint32 *part_id, + longlong *func_value) { LIST_PART_ENTRY *list_array= part_info->list_array; int list_index; - longlong list_value; int min_list_index= 0; int max_list_index= part_info->no_list_values - 1; longlong part_func_value= part_val_int(part_info->part_expr); + bool unsigned_flag= part_info->part_expr->unsigned_flag; DBUG_ENTER("get_partition_id_list"); if (part_info->part_expr->null_value) @@ -2315,22 +2391,49 @@ int get_partition_id_list(partition_info *part_info, goto notfound; } *func_value= part_func_value; - while (max_list_index >= min_list_index) + if (!unsigned_flag) { - list_index= (max_list_index + min_list_index) >> 1; - list_value= list_array[list_index].list_value; - if (list_value < part_func_value) - min_list_index= list_index + 1; - else if (list_value > part_func_value) + longlong list_value; + while (max_list_index >= min_list_index) { - if (!list_index) - goto notfound; - max_list_index= list_index - 1; + list_index= (max_list_index + min_list_index) >> 1; + list_value= list_array[list_index].list_value; + if (list_value < part_func_value) + min_list_index= list_index + 1; + else if (list_value > part_func_value) + { + if (!list_index) + goto notfound; + max_list_index= list_index - 1; + } + else + { + *part_id= (uint32)list_array[list_index].partition_id; + DBUG_RETURN(0); + } } - else + } + else + { + ulonglong ulist_value; + ulonglong upart_func_value= part_func_value; + while (max_list_index >= min_list_index) { - *part_id= (uint32)list_array[list_index].partition_id; - DBUG_RETURN(0); + list_index= (max_list_index + min_list_index) >> 1; + ulist_value= list_array[list_index].list_value; + if (ulist_value < upart_func_value) + min_list_index= list_index + 1; + else if (ulist_value > upart_func_value) + { + if (!list_index) + goto notfound; + max_list_index= list_index - 1; + } + else + { + *part_id= (uint32)list_array[list_index].partition_id; + DBUG_RETURN(0); + } } } notfound: @@ -2381,34 +2484,65 @@ uint32 get_list_array_idx_for_endpoint(partition_info *part_info, bool left_endpoint, bool include_endpoint) { - DBUG_ENTER("get_list_array_idx_for_endpoint"); LIST_PART_ENTRY *list_array= part_info->list_array; uint list_index; - longlong list_value; uint min_list_index= 0, max_list_index= part_info->no_list_values - 1; /* Get the partitioning function value for the endpoint */ longlong part_func_value= part_val_int(part_info->part_expr); - while (max_list_index >= min_list_index) + bool unsigned_flag= part_info->part_expr->unsigned_flag; + DBUG_ENTER("get_list_array_idx_for_endpoint"); + + if (!unsigned_flag) { - list_index= (max_list_index + min_list_index) >> 1; - list_value= list_array[list_index].list_value; - if (list_value < part_func_value) - min_list_index= list_index + 1; - else if (list_value > part_func_value) + longlong list_value; + while (max_list_index >= min_list_index) { - if (!list_index) - goto notfound; - max_list_index= list_index - 1; + list_index= (max_list_index + min_list_index) >> 1; + list_value= list_array[list_index].list_value; + if (list_value < part_func_value) + min_list_index= list_index + 1; + else if (list_value > part_func_value) + { + if (!list_index) + goto notfound_signed; + max_list_index= list_index - 1; + } + else + { + DBUG_RETURN(list_index + test(left_endpoint ^ include_endpoint)); + } } - else + notfound_signed: + if (list_value < part_func_value) + list_index++; + DBUG_RETURN(list_index); + } + else + { + ulonglong upart_func_value= part_func_value; + ulonglong ulist_value; + while (max_list_index >= min_list_index) { - DBUG_RETURN(list_index + test(left_endpoint ^ include_endpoint)); + list_index= (max_list_index + min_list_index) >> 1; + ulist_value= list_array[list_index].list_value; + if (ulist_value < upart_func_value) + min_list_index= list_index + 1; + else if (ulist_value > upart_func_value) + { + if (!list_index) + goto notfound_unsigned; + max_list_index= list_index - 1; + } + else + { + DBUG_RETURN(list_index + test(left_endpoint ^ include_endpoint)); + } } + notfound_unsigned: + if (ulist_value < upart_func_value) + list_index++; + DBUG_RETURN(list_index); } -notfound: - if (list_value < part_func_value) - list_index++; - DBUG_RETURN(list_index); } @@ -2422,6 +2556,7 @@ int get_partition_id_range(partition_info *part_info, uint max_part_id= max_partition; uint loc_part_id; longlong part_func_value= part_val_int(part_info->part_expr); + bool unsigned_flag= part_info->part_expr->unsigned_flag; DBUG_ENTER("get_partition_id_int_range"); if (part_info->part_expr->null_value) @@ -2429,24 +2564,52 @@ int get_partition_id_range(partition_info *part_info, *part_id= 0; DBUG_RETURN(0); } - while (max_part_id > min_part_id) + *func_value= part_func_value; + if (!unsigned_flag) { - loc_part_id= (max_part_id + min_part_id + 1) >> 1; - if (range_array[loc_part_id] <= part_func_value) - min_part_id= loc_part_id + 1; - else - max_part_id= loc_part_id - 1; + while (max_part_id > min_part_id) + { + loc_part_id= (max_part_id + min_part_id + 1) >> 1; + if (range_array[loc_part_id] <= part_func_value) + min_part_id= loc_part_id + 1; + else + max_part_id= loc_part_id - 1; + } + loc_part_id= max_part_id; + if (part_func_value >= range_array[loc_part_id]) + if (loc_part_id != max_partition) + loc_part_id++; + *part_id= (uint32)loc_part_id; + if (loc_part_id == max_partition) + if (range_array[loc_part_id] != LONGLONG_MAX) + if (part_func_value >= range_array[loc_part_id]) + DBUG_RETURN(HA_ERR_NO_PARTITION_FOUND); + } + else + { + ulonglong upart_func_value= part_func_value; + ulonglong urange_value; + while (max_part_id > min_part_id) + { + loc_part_id= (max_part_id + min_part_id + 1) >> 1; + urange_value= range_array[loc_part_id]; + if (urange_value <= upart_func_value) + min_part_id= loc_part_id + 1; + else + max_part_id= loc_part_id - 1; + } + loc_part_id= max_part_id; + urange_value= range_array[loc_part_id]; + if (upart_func_value >= urange_value) + if (loc_part_id != max_partition) + loc_part_id++; + *part_id= (uint32)loc_part_id; + urange_value= range_array[loc_part_id]; + if (loc_part_id == max_partition) + if (urange_value != ULONGLONG_MAX) + if (upart_func_value >= urange_value) + DBUG_RETURN(HA_ERR_NO_PARTITION_FOUND); } - loc_part_id= max_part_id; - if (part_func_value >= range_array[loc_part_id]) - if (loc_part_id != max_partition) - loc_part_id++; - *part_id= (uint32)loc_part_id; - *func_value= part_func_value; - if (loc_part_id == max_partition) - if (range_array[loc_part_id] != LONGLONG_MAX) - if (part_func_value >= range_array[loc_part_id]) - DBUG_RETURN(HA_ERR_NO_PARTITION_FOUND); DBUG_RETURN(0); } @@ -2496,39 +2659,79 @@ uint32 get_partition_id_range_for_endpoint(partition_info *part_info, bool left_endpoint, bool include_endpoint) { - DBUG_ENTER("get_partition_id_range_for_endpoint"); longlong *range_array= part_info->range_int_array; uint max_partition= part_info->no_parts - 1; uint min_part_id= 0, max_part_id= max_partition, loc_part_id; /* Get the partitioning function value for the endpoint */ longlong part_func_value= part_val_int(part_info->part_expr); + bool unsigned_flag= part_info->part_expr->unsigned_flag; + DBUG_ENTER("get_partition_id_range_for_endpoint"); - while (max_part_id > min_part_id) + if (!unsigned_flag) { - loc_part_id= (max_part_id + min_part_id + 1) >> 1; - if (range_array[loc_part_id] <= part_func_value) - min_part_id= loc_part_id + 1; - else - max_part_id= loc_part_id - 1; - } - loc_part_id= max_part_id; - if (loc_part_id < max_partition && - part_func_value >= range_array[loc_part_id+1]) - { - loc_part_id++; - } - if (left_endpoint) - { - if (part_func_value >= range_array[loc_part_id]) + while (max_part_id > min_part_id) + { + loc_part_id= (max_part_id + min_part_id + 1) >> 1; + if (range_array[loc_part_id] <= part_func_value) + min_part_id= loc_part_id + 1; + else + max_part_id= loc_part_id - 1; + } + loc_part_id= max_part_id; + if (loc_part_id < max_partition && + part_func_value >= range_array[loc_part_id+1]) + { + loc_part_id++; + } + if (left_endpoint) + { + if (part_func_value >= range_array[loc_part_id]) + loc_part_id++; + } + else + { + if (part_func_value == range_array[loc_part_id]) + loc_part_id += test(include_endpoint); + else if (part_func_value > range_array[loc_part_id]) + loc_part_id++; loc_part_id++; + } } - else + else { - if (part_func_value == range_array[loc_part_id]) - loc_part_id += test(include_endpoint); - else if (part_func_value > range_array[loc_part_id]) + ulonglong upart_func_value= part_func_value; + ulonglong urange_value; + while (max_part_id > min_part_id) + { + loc_part_id= (max_part_id + min_part_id + 1) >> 1; + urange_value= range_array[loc_part_id]; + if (urange_value <= upart_func_value) + min_part_id= loc_part_id + 1; + else + max_part_id= loc_part_id - 1; + } + loc_part_id= max_part_id; + urange_value= range_array[loc_part_id+1]; + if (loc_part_id < max_partition && + upart_func_value >= urange_value) + { + loc_part_id++; + } + if (left_endpoint) + { + urange_value= range_array[loc_part_id]; + if (upart_func_value >= urange_value) + loc_part_id++; + } + else + { + urange_value= range_array[loc_part_id]; + if (upart_func_value == urange_value) + loc_part_id += test(include_endpoint); + else if (upart_func_value > urange_value) + loc_part_id++; loc_part_id++; - loc_part_id++; + } } DBUG_RETURN(loc_part_id); } @@ -4497,8 +4700,8 @@ the generated partition syntax in a correct manner. tab_part_info->use_default_subpartitions= FALSE; tab_part_info->use_default_no_subpartitions= FALSE; } - if (tab_part_info->check_partition_info((handlerton**)NULL, - table->file, ULL(0))) + if (tab_part_info->check_partition_info(thd, (handlerton**)NULL, + table->file, ULL(0))) { DBUG_RETURN(TRUE); } diff --git a/sql/sql_partition.h b/sql/sql_partition.h index fd2c474236f..9fde3db2883 100644 --- a/sql/sql_partition.h +++ b/sql/sql_partition.h @@ -65,9 +65,8 @@ int get_part_for_delete(const byte *buf, const byte *rec0, partition_info *part_info, uint32 *part_id); void prune_partition_set(const TABLE *table, part_id_range *part_spec); bool check_partition_info(partition_info *part_info,handlerton **eng_type, - handler *file, ulonglong max_rows); -bool fix_partition_func(THD *thd, const char *name, TABLE *table, - bool create_table_ind); + TABLE *table, handler *file, ulonglong max_rows); +bool fix_partition_func(THD *thd, TABLE *table, bool create_table_ind); char *generate_partition_syntax(partition_info *part_info, uint *buf_length, bool use_sql_alloc, bool write_all); @@ -91,6 +90,8 @@ uint32 get_list_array_idx_for_endpoint(partition_info *part_info, uint32 get_partition_id_range_for_endpoint(partition_info *part_info, bool left_endpoint, bool include_endpoint); +bool fix_fields_part_func(THD *thd, Item* func_expr, TABLE *table, + bool is_sub_part, bool is_field_to_be_setup); /* A "Get next" function for partition iterator. diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 19535f3182a..86515355936 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -3851,8 +3851,8 @@ static int get_schema_partitions_record(THD *thd, struct st_table_list *tables, } else if (part_info->part_type == LIST_PARTITION) { - List_iterator list_val_it(part_elem->list_val_list); - longlong *list_value; + List_iterator list_val_it(part_elem->list_val_list); + part_elem_value *list_value; uint no_items= part_elem->list_val_list.elements; tmp_str.length(0); tmp_res.length(0); @@ -3864,7 +3864,10 @@ static int get_schema_partitions_record(THD *thd, struct st_table_list *tables, } while ((list_value= list_val_it++)) { - tmp_res.set(*list_value, cs); + if (!list_value->unsigned_flag) + tmp_res.set(list_value->value, cs); + else + tmp_res.set((ulonglong)list_value->value, cs); tmp_str.append(tmp_res); if (--no_items != 0) tmp_str.append(","); diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 2687b64841f..71ffb4d28b7 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -2141,8 +2141,8 @@ bool mysql_create_table_internal(THD *thd, } DBUG_PRINT("info", ("db_type = %d", ha_legacy_type(part_info->default_engine_type))); - if (part_info->check_partition_info( &engine_type, file, - create_info->max_rows)) + if (part_info->check_partition_info(thd, &engine_type, file, + create_info->max_rows)) goto err; part_info->default_engine_type= engine_type; diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index e48748bcfa5..8037eaa5b21 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -42,12 +42,6 @@ #include #include -typedef struct p_elem_val -{ - longlong value; - bool null_value; -} part_elem_value; - int yylex(void *yylval, void *yythd); const LEX_STRING null_lex_str={0,0}; @@ -3712,6 +3706,7 @@ part_func_max: YYABORT; } lex->part_info->defined_max_value= TRUE; + lex->part_info->curr_part_elem->max_value= TRUE; lex->part_info->curr_part_elem->range_value= LONGLONG_MAX; } | part_range_func @@ -3727,7 +3722,10 @@ part_func_max: part_range_func: '(' part_bit_expr ')' { - Lex->part_info->curr_part_elem->range_value= $2->value; + partition_info *part_info= Lex->part_info; + if (!($2->unsigned_flag)) + part_info->curr_part_elem->signed_flag= TRUE; + part_info->curr_part_elem->range_value= $2->value; } ; @@ -3740,9 +3738,12 @@ part_list_item: part_bit_expr { part_elem_value *value_ptr= $1; + partition_info *part_info= Lex->part_info; + if (!value_ptr->unsigned_flag) + part_info->curr_part_elem->signed_flag= TRUE; if (!value_ptr->null_value && - Lex->part_info->curr_part_elem-> - list_val_list.push_back((longlong*) &value_ptr->value)) + part_info->curr_part_elem-> + list_val_list.push_back(value_ptr)) { mem_alloc_error(sizeof(part_elem_value)); YYABORT; @@ -3783,6 +3784,10 @@ part_bit_expr: } thd->where= save_where; value_ptr->value= part_expr->val_int(); + value_ptr->unsigned_flag= TRUE; + if (!part_expr->unsigned_flag && + value_ptr->value < 0) + value_ptr->unsigned_flag= FALSE; if ((value_ptr->null_value= part_expr->null_value)) { if (Lex->part_info->curr_part_elem->has_null_value) diff --git a/sql/table.cc b/sql/table.cc index 41621a19900..7252940eb27 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -1488,8 +1488,7 @@ int open_table_from_share(THD *thd, TABLE_SHARE *share, const char *alias, Fix the partition functions and ensure they are not constant functions */ - if (fix_partition_func(thd, share->normalized_path.str, outparam, - is_create_table)) + if (fix_partition_func(thd, outparam, is_create_table)) goto err; } #endif -- cgit v1.2.1 From 87b8bf2257c07c5b438017904830b492aa1a4207 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 24 Apr 2006 15:20:45 -0700 Subject: BUG#19318 valgrind: memory leak in ndb_mgmd clean up after ConfigValuesFactory ndb/include/util/ConfigValues.hpp: We now have a destructor ndb/src/common/util/ConfigValues.cpp: Free m_cfg on destruct (if we've set it). Also getConfigValues() instead of m_cfg --- ndb/include/util/ConfigValues.hpp | 1 + ndb/src/common/util/ConfigValues.cpp | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ndb/include/util/ConfigValues.hpp b/ndb/include/util/ConfigValues.hpp index 457488e3c42..8dfb3c83df3 100644 --- a/ndb/include/util/ConfigValues.hpp +++ b/ndb/include/util/ConfigValues.hpp @@ -96,6 +96,7 @@ public: public: ConfigValuesFactory(Uint32 keys = 50, Uint32 data = 10); // Initial ConfigValuesFactory(ConfigValues * m_cfg); // + ~ConfigValuesFactory(); ConfigValues * m_cfg; ConfigValues * getConfigValues(); diff --git a/ndb/src/common/util/ConfigValues.cpp b/ndb/src/common/util/ConfigValues.cpp index 5c4b17c73ca..ae4fbfd2f71 100644 --- a/ndb/src/common/util/ConfigValues.cpp +++ b/ndb/src/common/util/ConfigValues.cpp @@ -294,6 +294,12 @@ ConfigValuesFactory::ConfigValuesFactory(ConfigValues * cfg){ } } +ConfigValuesFactory::~ConfigValuesFactory() +{ + if(m_cfg) + free(m_cfg); +} + ConfigValues * ConfigValuesFactory::create(Uint32 keys, Uint32 data){ Uint32 sz = sizeof(ConfigValues); @@ -528,7 +534,7 @@ ConfigValuesFactory::extractCurrentSection(const ConfigValues::ConstIterator & c } } - ConfigValues * ret = fac->m_cfg; + ConfigValues * ret = fac->getConfigValues(); delete fac; return ret; } -- cgit v1.2.1 From b8493cd65f19006aa4a41cf5de198eb5bb29d915 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 24 Apr 2006 15:59:34 -0700 Subject: BUG#19318 valgrind: memory leak in ndb_mgmd 2nd part of the patch fix functions called by ndbd to deal with memory allocation properly. ndb/src/mgmapi/mgmapi.cpp: in get_configuration() - get a copy to return instead of just passing one back and loosing some memory ndb/src/mgmsrv/ConfigInfo.cpp: clean up after ourselves in constructor --- ndb/src/mgmapi/mgmapi.cpp | 2 +- ndb/src/mgmsrv/ConfigInfo.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ndb/src/mgmapi/mgmapi.cpp b/ndb/src/mgmapi/mgmapi.cpp index b02367a8870..631b401263c 100644 --- a/ndb/src/mgmapi/mgmapi.cpp +++ b/ndb/src/mgmapi/mgmapi.cpp @@ -1808,7 +1808,7 @@ ndb_mgm_get_configuration(NdbMgmHandle handle, unsigned int version) { } delete prop; - return (ndb_mgm_configuration*)cvf.m_cfg; + return (ndb_mgm_configuration*)cvf.getConfigValues(); } while(0); delete prop; diff --git a/ndb/src/mgmsrv/ConfigInfo.cpp b/ndb/src/mgmsrv/ConfigInfo.cpp index 817943f5e51..668a0ed3529 100644 --- a/ndb/src/mgmsrv/ConfigInfo.cpp +++ b/ndb/src/mgmsrv/ConfigInfo.cpp @@ -2344,6 +2344,7 @@ ConfigInfo::ConfigInfo() ndbout << "Edit file " << __FILE__ << "." << endl; require(false); } + delete section; } } -- cgit v1.2.1 From d7b7d480b1a2245ccfbdfa0f661fbb0bdd913eaa Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 24 Apr 2006 16:38:28 -0700 Subject: BUG#19318 valgrind: memory leak in ndb_mgmd now deal with memory correctly during ConfigInfo construction (due to previous changes) ndb/src/mgmsrv/ConfigInfo.cpp: Correctly deal with memory during ConfigInfo construction --- ndb/src/mgmsrv/ConfigInfo.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ndb/src/mgmsrv/ConfigInfo.cpp b/ndb/src/mgmsrv/ConfigInfo.cpp index 668a0ed3529..1466ae2e0f5 100644 --- a/ndb/src/mgmsrv/ConfigInfo.cpp +++ b/ndb/src/mgmsrv/ConfigInfo.cpp @@ -2229,11 +2229,11 @@ ConfigInfo::ConfigInfo() if (!m_info.getCopy(param._section, §ion)) { Properties newsection(true); m_info.put(param._section, &newsection); + + // Get copy of section + m_info.getCopy(param._section, §ion); } - - // Get copy of section - m_info.getCopy(param._section, §ion); - + // Create pinfo (parameter info) entry Properties pinfo(true); pinfo.put("Id", param._paramId); -- cgit v1.2.1 From f4cab9f5e5e2a0b8086e757fd954fa1cf0bbc72a Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 27 Apr 2006 21:59:04 +0930 Subject: sql_mode.test: BUG#14765: Modified test file. sql_mode.result: BUG#14765: Modified result file. mysql-test/r/sql_mode.result: BUG#14765: Modified result file. mysql-test/t/sql_mode.test: BUG#14765: Modified test file. --- mysql-test/r/sql_mode.result | 4 ++++ mysql-test/t/sql_mode.test | 3 +++ 2 files changed, 7 insertions(+) diff --git a/mysql-test/r/sql_mode.result b/mysql-test/r/sql_mode.result index b05680f9c54..474659f7dfc 100644 --- a/mysql-test/r/sql_mode.result +++ b/mysql-test/r/sql_mode.result @@ -485,6 +485,10 @@ set sql_mode=2097152; select @@sql_mode; @@sql_mode STRICT_TRANS_TABLES +set sql_mode=4194304; +select @@sql_mode; +@@sql_mode +STRICT_ALL_TABLES set sql_mode=16384+(65536*4); select @@sql_mode; @@sql_mode diff --git a/mysql-test/t/sql_mode.test b/mysql-test/t/sql_mode.test index b67f1a73db6..2699cb66471 100644 --- a/mysql-test/t/sql_mode.test +++ b/mysql-test/t/sql_mode.test @@ -258,6 +258,9 @@ drop table t1, t2; select @@sql_mode; set sql_mode=2097152; select @@sql_mode; +# BUG#14675 +set sql_mode=4194304; +select @@sql_mode; set sql_mode=16384+(65536*4); select @@sql_mode; --error 1231 -- cgit v1.2.1 From 409fb4895fd08e876b33c4d809919952871996a9 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 2 May 2006 18:00:44 +0500 Subject: Fix for bug #16546: DATETIME+0 not always coerced the same way mysql-test/r/func_time.result: Fix for bug #16546: DATETIME+0 not always coerced the same way - test case mysql-test/t/func_time.test: Fix for bug #16546: DATETIME+0 not always coerced the same way - test case sql/item_timefunc.cc: Fix for bug #16546: DATETIME+0 not always coerced the same way - set decimals to DATETIME_DEC sql/item_timefunc.h: Fix for bug #16546: DATETIME+0 not always coerced the same way - set decimals to DATETIME_DEC --- mysql-test/r/func_time.result | 12 ++++++++---- mysql-test/t/func_time.test | 8 ++++++++ sql/item_timefunc.cc | 6 +++--- sql/item_timefunc.h | 1 + 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/mysql-test/r/func_time.result b/mysql-test/r/func_time.result index fc872285acb..d3375dee8b6 100644 --- a/mysql-test/r/func_time.result +++ b/mysql-test/r/func_time.result @@ -7,20 +7,20 @@ period_add("9602",-12) period_diff(199505,"9404") 199502 13 select now()-now(),weekday(curdate())-weekday(now()),unix_timestamp()-unix_timestamp(now()); now()-now() weekday(curdate())-weekday(now()) unix_timestamp()-unix_timestamp(now()) -0 0 0 +0.000000 0 0 select from_unixtime(unix_timestamp("1994-03-02 10:11:12")),from_unixtime(unix_timestamp("1994-03-02 10:11:12"),"%Y-%m-%d %h:%i:%s"),from_unixtime(unix_timestamp("1994-03-02 10:11:12"))+0; from_unixtime(unix_timestamp("1994-03-02 10:11:12")) from_unixtime(unix_timestamp("1994-03-02 10:11:12"),"%Y-%m-%d %h:%i:%s") from_unixtime(unix_timestamp("1994-03-02 10:11:12"))+0 -1994-03-02 10:11:12 1994-03-02 10:11:12 19940302101112 +1994-03-02 10:11:12 1994-03-02 10:11:12 19940302101112.000000 select sec_to_time(9001),sec_to_time(9001)+0,time_to_sec("15:12:22"), sec_to_time(time_to_sec("0:30:47")/6.21); sec_to_time(9001) sec_to_time(9001)+0 time_to_sec("15:12:22") sec_to_time(time_to_sec("0:30:47")/6.21) -02:30:01 23001 54742 00:04:57 +02:30:01 23001.000000 54742 00:04:57 select sec_to_time(time_to_sec('-838:59:59')); sec_to_time(time_to_sec('-838:59:59')) -838:59:59 select now()-curdate()*1000000-curtime(); now()-curdate()*1000000-curtime() -0 +0.000000 select strcmp(current_timestamp(),concat(current_date()," ",current_time())); strcmp(current_timestamp(),concat(current_date()," ",current_time())) 0 @@ -626,3 +626,7 @@ last_day('2005-01-00') NULL Warnings: Warning 1292 Truncated incorrect datetime value: '2005-01-00' +select now() - now() + 0, curtime() - curtime() + 0, +sec_to_time(1) + 0, from_unixtime(1) + 0; +now() - now() + 0 curtime() - curtime() + 0 sec_to_time(1) + 0 from_unixtime(1) + 0 +0.000000 0.000000 1.000000 19700101030001.000000 diff --git a/mysql-test/t/func_time.test b/mysql-test/t/func_time.test index 68a33afd85c..d9a8579ce0f 100644 --- a/mysql-test/t/func_time.test +++ b/mysql-test/t/func_time.test @@ -315,4 +315,12 @@ select last_day('2005-00-00'); select last_day('2005-00-01'); select last_day('2005-01-00'); +# +# Bug #16546 +# + +select now() - now() + 0, curtime() - curtime() + 0, + sec_to_time(1) + 0, from_unixtime(1) + 0; + + # End of 4.1 tests diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc index f3d6858755c..34850d4efdd 100644 --- a/sql/item_timefunc.cc +++ b/sql/item_timefunc.cc @@ -1372,7 +1372,7 @@ void Item_func_curtime::fix_length_and_dec() { TIME ltime; - decimals=0; + decimals= DATETIME_DEC; collation.set(&my_charset_bin); store_now_in_TIME(<ime); value= TIME_to_ulonglong_time(<ime); @@ -1419,7 +1419,7 @@ String *Item_func_now::val_str(String *str) void Item_func_now::fix_length_and_dec() { - decimals=0; + decimals= DATETIME_DEC; collation.set(&my_charset_bin); store_now_in_TIME(<ime); @@ -1680,7 +1680,7 @@ void Item_func_from_unixtime::fix_length_and_dec() { thd= current_thd; collation.set(&my_charset_bin); - decimals=0; + decimals= DATETIME_DEC; max_length=MAX_DATETIME_WIDTH*MY_CHARSET_BIN_MB_MAXLEN; maybe_null= 1; thd->time_zone_used= 1; diff --git a/sql/item_timefunc.h b/sql/item_timefunc.h index 163b1591e52..ac26455371d 100644 --- a/sql/item_timefunc.h +++ b/sql/item_timefunc.h @@ -580,6 +580,7 @@ public: { collation.set(&my_charset_bin); maybe_null=1; + decimals= DATETIME_DEC; max_length=MAX_TIME_WIDTH*MY_CHARSET_BIN_MB_MAXLEN; } enum_field_types field_type() const { return MYSQL_TYPE_TIME; } -- cgit v1.2.1 From 39f93cd92efa82907510db6987b5d9599246b16e Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 May 2006 16:28:11 +0930 Subject: rpl_auto_increment_11932.result, rpl_auto_increment_11932.test: Test case for BUG#11932 --- mysql-test/r/rpl_auto_increment_11932.result | 46 ++++++++++++++++++++++ mysql-test/t/rpl_auto_increment_11932.test | 59 ++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 mysql-test/r/rpl_auto_increment_11932.result create mode 100644 mysql-test/t/rpl_auto_increment_11932.test diff --git a/mysql-test/r/rpl_auto_increment_11932.result b/mysql-test/r/rpl_auto_increment_11932.result new file mode 100644 index 00000000000..753e9e9f223 --- /dev/null +++ b/mysql-test/r/rpl_auto_increment_11932.result @@ -0,0 +1,46 @@ +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +drop database if exists t1; +create database t1; +use t1; +CREATE TABLE `t` ( +`id` int(10) unsigned NOT NULL auto_increment, +`fname` varchar(100) default NULL, +PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; +INSERT INTO `t` VALUES (1, 'blablabla'); +CREATE TABLE `test3` ( +`id` int(10) NOT NULL auto_increment, +`comment` varchar(255) NOT NULL default '', +PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=3 ; +INSERT INTO `test3` VALUES (1, 'testtest 1'); +INSERT INTO `test3` VALUES (2, 'test 2'); +CREATE PROCEDURE simpleproc3 () +NOT DETERMINISTIC +BEGIN +INSERT INTO t (fname) (SELECT test3.comment FROM test3 WHERE test3.id = '1'); +INSERT INTO t (fname) VALUES('test'); +END +$ +CALL simpleproc3(); +select * from test3; +id comment +1 testtest 1 +2 test 2 +TRUNCATE TABLE `t`; +CALL simpleproc3(); +select * from t; +id fname +1 testtest 1 +2 test +use t1; +select * from t; +id fname +1 testtest 1 +2 test +drop database t1; diff --git a/mysql-test/t/rpl_auto_increment_11932.test b/mysql-test/t/rpl_auto_increment_11932.test new file mode 100644 index 00000000000..db9a11277ac --- /dev/null +++ b/mysql-test/t/rpl_auto_increment_11932.test @@ -0,0 +1,59 @@ +# +# Test of auto_increment +# BUG#11932 +# +# Test supplied by Are Casilla +# + +source include/master-slave.inc; +--disable_warnings +connection master; +drop database if exists t1; +--enable_warnings +create database t1; +use t1; + +CREATE TABLE `t` ( + `id` int(10) unsigned NOT NULL auto_increment, + `fname` varchar(100) default NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; + +INSERT INTO `t` VALUES (1, 'blablabla'); + +CREATE TABLE `test3` ( + `id` int(10) NOT NULL auto_increment, + `comment` varchar(255) NOT NULL default '', + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=3 ; + +INSERT INTO `test3` VALUES (1, 'testtest 1'); +INSERT INTO `test3` VALUES (2, 'test 2'); + +DELIMITER $; +CREATE PROCEDURE simpleproc3 () + NOT DETERMINISTIC + BEGIN + INSERT INTO t (fname) (SELECT test3.comment FROM test3 WHERE test3.id = '1'); + INSERT INTO t (fname) VALUES('test'); + END + $ +DELIMITER ;$ + +CALL simpleproc3(); + +select * from test3; + +TRUNCATE TABLE `t`; +CALL simpleproc3(); + +select * from t; + +save_master_pos; +connection slave; +sync_with_master; + +use t1; +select * from t; + +drop database t1; -- cgit v1.2.1 From 51e0c5187b9615d40134067adee9c96f6bc635ce Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 5 May 2006 10:45:58 +0400 Subject: WL#3153 "Split logs". Recommit with post-review fixes sql/ha_ndbcluster_binlog.cc: use MYSQL_BIN_LOG instead of MYSQL_LOG sql/log.cc: Split MYSQL_LOG into base MYSQL_LOG and MYSQL_GENERAL_LOG, MYSQL_SLOW_LOG, MYSQL_BIN_LOG sql/log.h: Split MYSQL_LOG into base MYSQL_LOG and MYSQL_GENERAL_LOG, MYSQL_SLOW_LOG, MYSQL_BIN_LOG sql/log_event.h: use MYSQL_BIN_LOG instead of MYSQL_LOG sql/mysql_priv.h: use MYSQL_BIN_LOG instead of MYSQL_LOG sql/mysqld.cc: fix appropriate comments: use MYSQL_BIN_LOG instead of MYSQL_LOG sql/rpl_injector.cc: use MYSQL_BIN_LOG instead of MYSQL_LOG sql/rpl_injector.h: use MYSQL_BIN_LOG instead of MYSQL_LOG sql/rpl_rli.h: use MYSQL_BIN_LOG instead of MYSQL_LOG sql/slave.cc: Fix appropriate comments: use MYSQL_BIN_LOG instead of MYSQL_LOG. Fix usage of new_file(): now we don't need to pass locking-related info to the function. sql/slave.h: Use MYSQL_BIN_LOG instead of MYSQL_LOG in appropriate comments --- sql/ha_ndbcluster_binlog.cc | 4 +- sql/log.cc | 1004 +++++++++++++++++++++++++------------------ sql/log.h | 135 +++--- sql/log_event.h | 2 +- sql/mysql_priv.h | 2 +- sql/mysqld.cc | 6 +- sql/rpl_injector.cc | 2 +- sql/rpl_injector.h | 4 +- sql/rpl_rli.h | 2 +- sql/slave.cc | 7 +- sql/slave.h | 4 +- 11 files changed, 691 insertions(+), 481 deletions(-) diff --git a/sql/ha_ndbcluster_binlog.cc b/sql/ha_ndbcluster_binlog.cc index ac4b67928b1..637388dc441 100644 --- a/sql/ha_ndbcluster_binlog.cc +++ b/sql/ha_ndbcluster_binlog.cc @@ -428,7 +428,7 @@ static void ndbcluster_binlog_wait(THD *thd) } /* - Called from MYSQL_LOG::reset_logs in log.cc when binlog is emptied + Called from MYSQL_BIN_LOG::reset_logs in log.cc when binlog is emptied */ static int ndbcluster_reset_logs(THD *thd) { @@ -452,7 +452,7 @@ static int ndbcluster_reset_logs(THD *thd) } /* - Called from MYSQL_LOG::purge_logs in log.cc when the binlog "file" + Called from MYSQL_BIN_LOG::purge_logs in log.cc when the binlog "file" is removed */ diff --git a/sql/log.cc b/sql/log.cc index e9a5011db4d..d1c33afcda7 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -42,7 +42,7 @@ extern char *opt_logname, *opt_slow_logname; LOGGER logger; -MYSQL_LOG mysql_bin_log; +MYSQL_BIN_LOG mysql_bin_log; ulong sync_binlog_counter= 0; static bool test_if_number(const char *str, @@ -557,9 +557,8 @@ void Log_to_file_event_handler::cleanup() void Log_to_file_event_handler::flush() { - /* reopen log files */ - mysql_log.new_file(1); - mysql_slow_log.new_file(1); + mysql_log.reopen_file(); + mysql_slow_log.reopen_file(); } /* @@ -1054,7 +1053,7 @@ void Log_to_csv_event_handler:: /* this function is mostly a placeholder. - conceptually, binlog initialization (now mostly done in MYSQL_LOG::open) + conceptually, binlog initialization (now mostly done in MYSQL_BIN_LOG::open) should be moved here. */ @@ -1128,7 +1127,7 @@ static int binlog_prepare(THD *thd, bool all) do nothing. just pretend we can do 2pc, so that MySQL won't switch to 1pc. - real work will be done in MYSQL_LOG::log() + real work will be done in MYSQL_BIN_LOG::log() */ return 0; } @@ -1144,7 +1143,7 @@ static int binlog_commit(THD *thd, bool all) if (trx_data->empty()) { - // we're here because trans_log was flushed in MYSQL_LOG::log() + // we're here because trans_log was flushed in MYSQL_BIN_LOG::log() DBUG_RETURN(0); } Query_log_event qev(thd, STRING_WITH_LEN("COMMIT"), TRUE, FALSE); @@ -1382,12 +1381,125 @@ static int find_uniq_filename(char *name) } +void MYSQL_LOG::init(enum_log_type log_type_arg, + enum cache_type io_cache_type_arg) +{ + DBUG_ENTER("MYSQL_LOG::init"); + log_type= log_type_arg; + io_cache_type= io_cache_type_arg; + DBUG_PRINT("info",("log_type: %d", log_type)); + DBUG_VOID_RETURN; +} + + +/* + Open a (new) log file. + + SYNOPSIS + open() + + log_name The name of the log to open + log_type_arg The type of the log. E.g. LOG_NORMAL + new_name The new name for the logfile. This is only needed + when the method is used to open the binlog file. + io_cache_type_arg The type of the IO_CACHE to use for this log file + + DESCRIPTION + Open the logfile, init IO_CACHE and write startup messages + (in case of general and slow query logs). + + RETURN VALUES + 0 ok + 1 error +*/ + +bool MYSQL_LOG::open(const char *log_name, enum_log_type log_type_arg, + const char *new_name, enum cache_type io_cache_type_arg) +{ + char buff[FN_REFLEN]; + File file= -1; + int open_flags= O_CREAT | O_BINARY; + DBUG_ENTER("MYSQL_LOG::open"); + DBUG_PRINT("enter", ("log_type: %d", (int) log_type_arg)); + + write_error= 0; + + init(log_type_arg, io_cache_type_arg); + + if (!(name= my_strdup(log_name, MYF(MY_WME)))) + { + name= (char *)log_name; // for the error message + goto err; + } + + if (new_name) + strmov(log_file_name, new_name); + else if (generate_new_name(log_file_name, name)) + goto err; + + if (io_cache_type == SEQ_READ_APPEND) + open_flags |= O_RDWR | O_APPEND; + else + open_flags |= O_WRONLY | (log_type == LOG_BIN ? 0 : O_APPEND); + + db[0]= 0; + + if ((file= my_open(log_file_name, open_flags, + MYF(MY_WME | ME_WAITTANG))) < 0 || + init_io_cache(&log_file, file, IO_SIZE, io_cache_type, + my_tell(file, MYF(MY_WME)), 0, + MYF(MY_WME | MY_NABP | + ((log_type == LOG_BIN) ? MY_WAIT_IF_FULL : 0)))) + goto err; + + switch (log_type) { + case LOG_NORMAL: + { + char *end; + int len=my_snprintf(buff, sizeof(buff), "%s, Version: %s. " +#ifdef EMBEDDED_LIBRARY + "embedded library\n", my_progname, server_version +#elif __NT__ + "started with:\nTCP Port: %d, Named Pipe: %s\n", + my_progname, server_version, mysqld_port, + mysqld_unix_port +#else + "started with:\nTcp port: %d Unix socket: %s\n", + my_progname, server_version, mysqld_port, + mysqld_unix_port +#endif + ); + end= strnmov(buff + len, "Time Id Command Argument\n", + sizeof(buff) - len); + if (my_b_write(&log_file, (byte*) buff, (uint) (end-buff)) || + flush_io_cache(&log_file)) + goto err; + break; + } + case LOG_CLOSED: // Impossible + case LOG_TO_BE_OPENED: + DBUG_ASSERT(1); + break; + } + + DBUG_RETURN(0); + +err: + sql_print_error("Could not use %s for logging (error %d). \ +Turning logging off for the whole duration of the MySQL server process. \ +To turn it on again: fix the cause, \ +shutdown the MySQL server and restart it.", name, errno); + if (file >= 0) + my_close(file, MYF(0)); + end_io_cache(&log_file); + safeFree(name); + log_type= LOG_CLOSED; + DBUG_RETURN(1); +} + MYSQL_LOG::MYSQL_LOG() - :bytes_written(0), last_time(0), query_start(0), name(0), - prepared_xids(0), log_type(LOG_CLOSED), file_id(1), open_count(1), - write_error(FALSE), inited(FALSE), need_start_event(TRUE), - m_table_map_version(0), - description_event_for_exec(0), description_event_for_queue(0) + : name(0), log_type(LOG_CLOSED), write_error(FALSE), + inited(FALSE), last_time(0) { /* We don't want to initialize LOCK_Log here as such initialization depends on @@ -1395,9 +1507,54 @@ MYSQL_LOG::MYSQL_LOG() called only in main(). Doing initialization here would make it happen before main(). */ - index_file_name[0] = 0; - bzero((char*) &log_file,sizeof(log_file)); - bzero((char*) &index_file, sizeof(index_file)); + bzero((char*) &log_file, sizeof(log_file)); +} + +void MYSQL_LOG::init_pthread_objects() +{ + DBUG_ASSERT(inited == 0); + inited= 1; + (void) pthread_mutex_init(&LOCK_log, MY_MUTEX_INIT_SLOW); +} + +/* + Close the log file + + SYNOPSIS + close() + exiting Bitmask. For the slow and general logs the only used bit is + LOG_CLOSE_TO_BE_OPENED. This is used if we intend to call + open at once after close. + + NOTES + One can do an open on the object at once after doing a close. + The internal structures are not freed until cleanup() is called +*/ + +void MYSQL_LOG::close(uint exiting) +{ // One can't set log_type here! + DBUG_ENTER("MYSQL_LOG::close"); + DBUG_PRINT("enter",("exiting: %d", (int) exiting)); + if (log_type != LOG_CLOSED && log_type != LOG_TO_BE_OPENED) + { + end_io_cache(&log_file); + + if (my_sync(log_file.file, MYF(MY_WME)) && ! write_error) + { + write_error= 1; + sql_print_error(ER(ER_ERROR_ON_WRITE), name, errno); + } + + if (my_close(log_file.file, MYF(MY_WME)) && ! write_error) + { + write_error= 1; + sql_print_error(ER(ER_ERROR_ON_WRITE), name, errno); + } + } + + log_type= (exiting & LOG_CLOSE_TO_BE_OPENED) ? LOG_TO_BE_OPENED : LOG_CLOSED; + safeFree(name); + DBUG_VOID_RETURN; } /* this is called only once */ @@ -1408,17 +1565,57 @@ void MYSQL_LOG::cleanup() if (inited) { inited= 0; - close(LOG_CLOSE_INDEX|LOG_CLOSE_STOP_EVENT); - delete description_event_for_queue; - delete description_event_for_exec; (void) pthread_mutex_destroy(&LOCK_log); - (void) pthread_mutex_destroy(&LOCK_index); - (void) pthread_cond_destroy(&update_cond); + close(0); } DBUG_VOID_RETURN; } +/* + Reopen the log file + + SYNOPSIS + reopen_file() + + DESCRIPTION + Reopen the log file. The method is used during FLUSH LOGS + and locks LOCK_log mutex +*/ + + +void MYSQL_LOG::reopen_file() +{ + enum_log_type save_log_type; + char *save_name; + + DBUG_ENTER("MYSQL_LOG::reopen_file"); + if (!is_open()) + { + DBUG_PRINT("info",("log is closed")); + DBUG_VOID_RETURN; + } + + pthread_mutex_lock(&LOCK_log); + + save_name= name; + save_log_type= log_type; + name= 0; // Don't free name + close(LOG_CLOSE_TO_BE_OPENED); + + /* + Note that at this point, log_type != LOG_CLOSED (important for is_open()). + */ + + open(save_name, save_log_type, 0, io_cache_type); + my_free(save_name, MYF(0)); + + pthread_mutex_unlock(&LOCK_log); + + DBUG_VOID_RETURN; +} + + int MYSQL_LOG::generate_new_name(char *new_name, const char *log_name) { fn_format(new_name,log_name,mysql_data_home,"",4); @@ -1437,33 +1634,245 @@ int MYSQL_LOG::generate_new_name(char *new_name, const char *log_name) } -void MYSQL_LOG::init(enum_log_type log_type_arg, - enum cache_type io_cache_type_arg, - bool no_auto_events_arg, - ulong max_size_arg) +/* + Write a command to traditional general log file + + SYNOPSIS + write() + + event_time command start timestamp + user_host the pointer to the string with user@host info + user_host_len length of the user_host string. this is computed once + and passed to all general log event handlers + thread_id Id of the thread, issued a query + command_type the type of the command being logged + command_type_len the length of the string above + sql_text the very text of the query being executed + sql_text_len the length of sql_text string + + DESCRIPTION + + Log given command to to normal (not rotable) log file + + RETURN + FASE - OK + TRUE - error occured +*/ + +bool MYSQL_GENERAL_LOG::write(time_t event_time, const char *user_host, + uint user_host_len, int thread_id, + const char *command_type, uint command_type_len, + const char *sql_text, uint sql_text_len) { - DBUG_ENTER("MYSQL_LOG::init"); - log_type = log_type_arg; - io_cache_type = io_cache_type_arg; - no_auto_events = no_auto_events_arg; - max_size=max_size_arg; - DBUG_PRINT("info",("log_type: %d max_size: %lu", log_type, max_size)); - DBUG_VOID_RETURN; + char buff[32]; + uint length= 0; + char time_buff[MAX_TIME_SIZE]; + struct tm start; + uint time_buff_len= 0; + + /* Test if someone closed between the is_open test and lock */ + if (is_open()) + { + /* Note that my_b_write() assumes it knows the length for this */ + if (event_time != last_time) + { + last_time= event_time; + + localtime_r(&event_time, &start); + + time_buff_len= my_snprintf(time_buff, MAX_TIME_SIZE, + "%02d%02d%02d %2d:%02d:%02d", + start.tm_year % 100, start.tm_mon + 1, + start.tm_mday, start.tm_hour, + start.tm_min, start.tm_sec); + + if (my_b_write(&log_file, (byte*) &time_buff, time_buff_len)) + goto err; + } + else + if (my_b_write(&log_file, (byte*) "\t\t" ,2) < 0) + goto err; + + /* command_type, thread_id */ + length= my_snprintf(buff, 32, "%5ld ", thread_id); + + if (my_b_write(&log_file, (byte*) buff, length)) + goto err; + + if (my_b_write(&log_file, (byte*) command_type, command_type_len)) + goto err; + + if (my_b_write(&log_file, (byte*) "\t", 1)) + goto err; + + /* sql_text */ + if (my_b_write(&log_file, (byte*) sql_text, sql_text_len)) + goto err; + + if (my_b_write(&log_file, (byte*) "\n", 1) || + flush_io_cache(&log_file)) + goto err; + } + + return FALSE; +err: + + if (!write_error) + { + write_error= 1; + sql_print_error(ER(ER_ERROR_ON_WRITE), name, errno); + } + return TRUE; } -void MYSQL_LOG::init_pthread_objects() +/* + Log a query to the traditional slow log file + + SYNOPSIS + write() + + thd THD of the query + current_time current timestamp + query_start_arg command start timestamp + user_host the pointer to the string with user@host info + user_host_len length of the user_host string. this is computed once + and passed to all general log event handlers + query_time Amount of time the query took to execute (in seconds) + lock_time Amount of time the query was locked (in seconds) + is_command The flag, which determines, whether the sql_text is a + query or an administrator command. + sql_text the very text of the query or administrator command + processed + sql_text_len the length of sql_text string + + DESCRIPTION + + Log a query to the slow log file. + + RETURN + FALSE - OK + TRUE - error occured +*/ + +bool MYSQL_SLOW_LOG::write(THD *thd, time_t current_time, + time_t query_start_arg, const char *user_host, + uint user_host_len, longlong query_time, + longlong lock_time, bool is_command, + const char *sql_text, uint sql_text_len) { - DBUG_ASSERT(inited == 0); - inited= 1; - (void) pthread_mutex_init(&LOCK_log,MY_MUTEX_INIT_SLOW); - (void) pthread_mutex_init(&LOCK_index, MY_MUTEX_INIT_SLOW); - (void) pthread_cond_init(&update_cond, 0); + bool error= 0; + DBUG_ENTER("MYSQL_SLOW_LOG::write"); + + if (!is_open()) + DBUG_RETURN(0); + + if (is_open()) + { // Safety agains reopen + int tmp_errno= 0; + char buff[80], *end; + uint buff_len; + end= buff; + + if (!(specialflag & SPECIAL_SHORT_LOG_FORMAT)) + { + Security_context *sctx= thd->security_ctx; + if (current_time != last_time) + { + last_time= current_time; + struct tm start; + localtime_r(¤t_time, &start); + + buff_len= my_snprintf(buff, sizeof buff, + "# Time: %02d%02d%02d %2d:%02d:%02d\n", + start.tm_year % 100, start.tm_mon + 1, + start.tm_mday, start.tm_hour, + start.tm_min, start.tm_sec); + + /* Note that my_b_write() assumes it knows the length for this */ + if (my_b_write(&log_file, (byte*) buff, buff_len)) + tmp_errno= errno; + } + if (my_b_printf(&log_file, "# User@Host: ", sizeof("# User@Host: ") - 1) + != sizeof("# User@Host: ") - 1) + tmp_errno= errno; + if (my_b_printf(&log_file, user_host, user_host_len) != user_host_len) + tmp_errno= errno; + if (my_b_write(&log_file, (byte*) "\n", 1)) + tmp_errno= errno; + } + /* For slow query log */ + if (my_b_printf(&log_file, + "# Query_time: %lu Lock_time: %lu" + " Rows_sent: %lu Rows_examined: %lu\n", + (ulong) query_time, (ulong) lock_time, + (ulong) thd->sent_row_count, + (ulong) thd->examined_row_count) == (uint) -1) + tmp_errno= errno; + if (thd->db && strcmp(thd->db, db)) + { // Database changed + if (my_b_printf(&log_file,"use %s;\n",thd->db) == (uint) -1) + tmp_errno= errno; + strmov(db,thd->db); + } + if (thd->last_insert_id_used) + { + end=strmov(end, ",last_insert_id="); + end=longlong10_to_str((longlong) thd->current_insert_id, end, -10); + } + // Save value if we do an insert. + if (thd->insert_id_used) + { + if (!(specialflag & SPECIAL_SHORT_LOG_FORMAT)) + { + end=strmov(end,",insert_id="); + end=longlong10_to_str((longlong) thd->last_insert_id, end, -10); + } + } + + /* + This info used to show up randomly, depending on whether the query + checked the query start time or not. now we always write current + timestamp to the slow log + */ + end= strmov(end, ",timestamp="); + end= int10_to_str((long) current_time, end, 10); + + if (end != buff) + { + *end++=';'; + *end='\n'; + if (my_b_write(&log_file, (byte*) "SET ", 4) || + my_b_write(&log_file, (byte*) buff + 1, (uint) (end-buff))) + tmp_errno= errno; + } + if (is_command) + { + end= strxmov(buff, "# administrator command: ", NullS); + buff_len= (ulong) (end - buff); + my_b_write(&log_file, (byte*) buff, buff_len); + } + if (my_b_write(&log_file, (byte*) sql_text, sql_text_len) || + my_b_write(&log_file, (byte*) ";\n",2) || + flush_io_cache(&log_file)) + tmp_errno= errno; + if (tmp_errno) + { + error= 1; + if (! write_error) + { + write_error= 1; + sql_print_error(ER(ER_ERROR_ON_WRITE), name, error); + } + } + } + DBUG_RETURN(error); } + const char *MYSQL_LOG::generate_name(const char *log_name, - const char *suffix, - bool strip_ext, char *buff) + const char *suffix, + bool strip_ext, char *buff) { if (!log_name || !log_name[0]) { @@ -1471,22 +1880,78 @@ const char *MYSQL_LOG::generate_name(const char *log_name, TODO: The following should be using fn_format(); We just need to first change fn_format() to cut the file name if it's too long. */ - strmake(buff,glob_hostname,FN_REFLEN-5); - strmov(fn_ext(buff),suffix); + strmake(buff, glob_hostname, FN_REFLEN - 5); + strmov(fn_ext(buff), suffix); return (const char *)buff; } // get rid of extension if the log is binary to avoid problems if (strip_ext) { - char *p = fn_ext(log_name); - uint length=(uint) (p-log_name); - strmake(buff,log_name,min(length,FN_REFLEN)); + char *p= fn_ext(log_name); + uint length= (uint) (p - log_name); + strmake(buff, log_name, min(length, FN_REFLEN)); return (const char*)buff; } return log_name; } -bool MYSQL_LOG::open_index_file(const char *index_file_name_arg, + +MYSQL_BIN_LOG::MYSQL_BIN_LOG() + :bytes_written(0), prepared_xids(0), file_id(1), open_count(1), + need_start_event(TRUE), m_table_map_version(0), + description_event_for_exec(0), description_event_for_queue(0) +{ + /* + We don't want to initialize locks here as such initialization depends on + safe_mutex (when using safe_mutex) which depends on MY_INIT(), which is + called only in main(). Doing initialization here would make it happen + before main(). + */ + index_file_name[0] = 0; + bzero((char*) &index_file, sizeof(index_file)); +} + +/* this is called only once */ + +void MYSQL_BIN_LOG::cleanup() +{ + DBUG_ENTER("cleanup"); + if (inited) + { + inited= 0; + close(LOG_CLOSE_INDEX|LOG_CLOSE_STOP_EVENT); + delete description_event_for_queue; + delete description_event_for_exec; + (void) pthread_mutex_destroy(&LOCK_log); + (void) pthread_mutex_destroy(&LOCK_index); + (void) pthread_cond_destroy(&update_cond); + } + DBUG_VOID_RETURN; +} + + +/* Init binlog-specific vars */ +void MYSQL_BIN_LOG::init(bool no_auto_events_arg, ulong max_size_arg) +{ + DBUG_ENTER("MYSQL_BIN_LOG::init"); + no_auto_events= no_auto_events_arg; + max_size= max_size_arg; + DBUG_PRINT("info",("max_size: %lu", max_size)); + DBUG_VOID_RETURN; +} + + +void MYSQL_BIN_LOG::init_pthread_objects() +{ + DBUG_ASSERT(inited == 0); + inited= 1; + (void) pthread_mutex_init(&LOCK_log, MY_MUTEX_INIT_SLOW); + (void) pthread_mutex_init(&LOCK_index, MY_MUTEX_INIT_SLOW); + (void) pthread_cond_init(&update_cond, 0); +} + + +bool MYSQL_BIN_LOG::open_index_file(const char *index_file_name_arg, const char *log_name) { File index_file_nr= -1; @@ -1523,10 +1988,10 @@ bool MYSQL_LOG::open_index_file(const char *index_file_name_arg, /* - Open a (new) log file. + Open a (new) binlog file. DESCRIPTION - - If binary logs, also open the index file and register the new + - Open the log file and the index file. Register the new file name in it - When calling this when the file is in use, you must have a locks on LOCK_log and LOCK_index. @@ -1536,94 +2001,33 @@ bool MYSQL_LOG::open_index_file(const char *index_file_name_arg, 1 error */ -bool MYSQL_LOG::open(const char *log_name, - enum_log_type log_type_arg, - const char *new_name, - enum cache_type io_cache_type_arg, - bool no_auto_events_arg, - ulong max_size_arg, - bool null_created_arg) +bool MYSQL_BIN_LOG::open(const char *log_name, + enum_log_type log_type_arg, + const char *new_name, + enum cache_type io_cache_type_arg, + bool no_auto_events_arg, + ulong max_size_arg, + bool null_created_arg) { char buff[FN_REFLEN]; File file= -1; int open_flags = O_CREAT | O_BINARY; - DBUG_ENTER("MYSQL_LOG::open"); + DBUG_ENTER("MYSQL_BIN_LOG::open"); DBUG_PRINT("enter",("log_type: %d",(int) log_type_arg)); - last_time=query_start=0; + last_time= 0; write_error=0; - init(log_type_arg,io_cache_type_arg,no_auto_events_arg,max_size_arg); + /* open the main log file */ + if (MYSQL_LOG::open(log_name, log_type_arg, new_name, io_cache_type_arg)) + DBUG_RETURN(1); /* all warnings issued */ - if (!(name=my_strdup(log_name,MYF(MY_WME)))) - { - name= (char *)log_name; // for the error message - goto err; - } - if (new_name) - strmov(log_file_name,new_name); - else if (generate_new_name(log_file_name, name)) - goto err; + init(no_auto_events_arg, max_size_arg); - if (io_cache_type == SEQ_READ_APPEND) - open_flags |= O_RDWR | O_APPEND; - else - open_flags |= O_WRONLY | (log_type == LOG_BIN ? 0 : O_APPEND); - - db[0]=0; open_count++; - if ((file=my_open(log_file_name,open_flags, - MYF(MY_WME | ME_WAITTANG))) < 0 || - init_io_cache(&log_file, file, IO_SIZE, io_cache_type, - my_tell(file,MYF(MY_WME)), 0, - MYF(MY_WME | MY_NABP | - ((log_type == LOG_BIN) ? MY_WAIT_IF_FULL : 0)))) - goto err; - switch (log_type) { - case LOG_NORMAL: - { - char *end; - int len=my_snprintf(buff, sizeof(buff), "%s, Version: %s. " -#ifdef EMBEDDED_LIBRARY - "embedded library\n", my_progname, server_version -#elif __NT__ - "started with:\nTCP Port: %d, Named Pipe: %s\n", - my_progname, server_version, mysqld_port, mysqld_unix_port -#else - "started with:\nTcp port: %d Unix socket: %s\n", - my_progname,server_version,mysqld_port,mysqld_unix_port -#endif - ); - end=strnmov(buff+len,"Time Id Command Argument\n", - sizeof(buff)-len); - if (my_b_write(&log_file, (byte*) buff,(uint) (end-buff)) || - flush_io_cache(&log_file)) - goto err; - break; - } - case LOG_NEW: - { - uint len; - time_t skr=time(NULL); - struct tm tm_tmp; - - localtime_r(&skr,&tm_tmp); - len= my_snprintf(buff,sizeof(buff), - "# %s, Version: %s at %02d%02d%02d %2d:%02d:%02d\n", - my_progname,server_version, - tm_tmp.tm_year % 100, - tm_tmp.tm_mon+1, - tm_tmp.tm_mday, - tm_tmp.tm_hour, - tm_tmp.tm_min, - tm_tmp.tm_sec); - if (my_b_write(&log_file, (byte*) buff, len) || - flush_io_cache(&log_file)) - goto err; - break; - } - case LOG_BIN: + DBUG_ASSERT(log_type == LOG_BIN); + { bool write_file_name_to_index_file=0; @@ -1714,12 +2118,6 @@ bool MYSQL_LOG::open(const char *log_name, my_sync(index_file.file, MYF(MY_WME))) goto err; } - break; - } - case LOG_CLOSED: // Impossible - case LOG_TO_BE_OPENED: - DBUG_ASSERT(1); - break; } DBUG_RETURN(0); @@ -1738,7 +2136,7 @@ shutdown the MySQL server and restart it.", name, errno); } -int MYSQL_LOG::get_current_log(LOG_INFO* linfo) +int MYSQL_BIN_LOG::get_current_log(LOG_INFO* linfo) { pthread_mutex_lock(&LOCK_log); strmake(linfo->log_file_name, log_file_name, sizeof(linfo->log_file_name)-1); @@ -1825,7 +2223,7 @@ err: LOG_INFO_IO Got IO error while reading file */ -int MYSQL_LOG::find_log_pos(LOG_INFO *linfo, const char *log_name, +int MYSQL_BIN_LOG::find_log_pos(LOG_INFO *linfo, const char *log_name, bool need_lock) { int error= 0; @@ -1899,7 +2297,7 @@ int MYSQL_LOG::find_log_pos(LOG_INFO *linfo, const char *log_name, LOG_INFO_IO Got IO error while reading file */ -int MYSQL_LOG::find_next_log(LOG_INFO* linfo, bool need_lock) +int MYSQL_BIN_LOG::find_next_log(LOG_INFO* linfo, bool need_lock) { int error= 0; uint length; @@ -1947,7 +2345,7 @@ err: 1 error */ -bool MYSQL_LOG::reset_logs(THD* thd) +bool MYSQL_BIN_LOG::reset_logs(THD* thd) { LOG_INFO linfo; bool error=0; @@ -2047,7 +2445,7 @@ err: #ifdef HAVE_REPLICATION -int MYSQL_LOG::purge_first_log(struct st_relay_log_info* rli, bool included) +int MYSQL_BIN_LOG::purge_first_log(struct st_relay_log_info* rli, bool included) { int error; DBUG_ENTER("purge_first_log"); @@ -2123,7 +2521,7 @@ err: Update log index_file */ -int MYSQL_LOG::update_log_index(LOG_INFO* log_info, bool need_update_threads) +int MYSQL_BIN_LOG::update_log_index(LOG_INFO* log_info, bool need_update_threads) { if (copy_up_file_and_fill(&index_file, log_info->index_file_start_offset)) return LOG_INFO_IO; @@ -2156,7 +2554,7 @@ int MYSQL_LOG::update_log_index(LOG_INFO* log_info, bool need_update_threads) LOG_INFO_EOF to_log not found */ -int MYSQL_LOG::purge_logs(const char *to_log, +int MYSQL_BIN_LOG::purge_logs(const char *to_log, bool included, bool need_mutex, bool need_update_threads, @@ -2242,7 +2640,7 @@ err: LOG_INFO_PURGE_NO_ROTATE Binary file that can't be rotated */ -int MYSQL_LOG::purge_logs_before_date(time_t purge_time) +int MYSQL_BIN_LOG::purge_logs_before_date(time_t purge_time) { int error; LOG_INFO log_info; @@ -2301,7 +2699,7 @@ err: If file name will be longer then FN_REFLEN it will be truncated */ -void MYSQL_LOG::make_log_name(char* buf, const char* log_ident) +void MYSQL_BIN_LOG::make_log_name(char* buf, const char* log_ident) { uint dir_len = dirname_length(log_file_name); if (dir_len > FN_REFLEN) @@ -2315,29 +2713,49 @@ void MYSQL_LOG::make_log_name(char* buf, const char* log_ident) Check if we are writing/reading to the given log file */ -bool MYSQL_LOG::is_active(const char *log_file_name_arg) +bool MYSQL_BIN_LOG::is_active(const char *log_file_name_arg) { return !strcmp(log_file_name, log_file_name_arg); } +/* + Wrappers around new_file_impl to avoid using argument + to control locking. The argument 1) less readable 2) breaks + incapsulation 3) allows external access to the class without + a lock (which is not possible with private new_file_without_locking + method). +*/ + +void MYSQL_BIN_LOG::new_file() +{ + new_file_impl(1); +} + + +void MYSQL_BIN_LOG::new_file_without_locking() +{ + new_file_impl(0); +} + + /* Start writing to a new log file or reopen the old file SYNOPSIS - new_file() + new_file_impl() need_lock Set to 1 if caller has not locked LOCK_log NOTE The new file name is stored last in the index file */ -void MYSQL_LOG::new_file(bool need_lock) +void MYSQL_BIN_LOG::new_file_impl(bool need_lock) { char new_name[FN_REFLEN], *new_name_ptr, *old_name; enum_log_type save_log_type; - DBUG_ENTER("MYSQL_LOG::new_file"); + DBUG_ENTER("MYSQL_BIN_LOG::new_file_impl"); if (!is_open()) { DBUG_PRINT("info",("log is closed")); @@ -2433,11 +2851,11 @@ end: } -bool MYSQL_LOG::append(Log_event* ev) +bool MYSQL_BIN_LOG::append(Log_event* ev) { bool error = 0; pthread_mutex_lock(&LOCK_log); - DBUG_ENTER("MYSQL_LOG::append"); + DBUG_ENTER("MYSQL_BIN_LOG::append"); DBUG_ASSERT(log_file.type == SEQ_READ_APPEND); /* @@ -2452,7 +2870,7 @@ bool MYSQL_LOG::append(Log_event* ev) bytes_written+= ev->data_written; DBUG_PRINT("info",("max_size: %lu",max_size)); if ((uint) my_b_append_tell(&log_file) > max_size) - new_file(0); + new_file_without_locking(); err: pthread_mutex_unlock(&LOCK_log); @@ -2461,10 +2879,10 @@ err: } -bool MYSQL_LOG::appendv(const char* buf, uint len,...) +bool MYSQL_BIN_LOG::appendv(const char* buf, uint len,...) { bool error= 0; - DBUG_ENTER("MYSQL_LOG::appendv"); + DBUG_ENTER("MYSQL_BIN_LOG::appendv"); va_list(args); va_start(args,len); @@ -2482,7 +2900,7 @@ bool MYSQL_LOG::appendv(const char* buf, uint len,...) } while ((buf=va_arg(args,const char*)) && (len=va_arg(args,uint))); DBUG_PRINT("info",("max_size: %lu",max_size)); if ((uint) my_b_append_tell(&log_file) > max_size) - new_file(0); + new_file_without_locking(); err: if (!error) @@ -2491,99 +2909,7 @@ err: } -/* - Write a command to traditional general log file - - SYNOPSIS - write() - - event_time command start timestamp - user_host the pointer to the string with user@host info - user_host_len length of the user_host string. this is computed once - and passed to all general log event handlers - thread_id Id of the thread, issued a query - command_type the type of the command being logged - command_type_len the length of the string above - sql_text the very text of the query being executed - sql_text_len the length of sql_text string - - DESCRIPTION - - Log given command to to normal (not rotable) log file - - RETURN - FASE - OK - TRUE - error occured -*/ - -bool MYSQL_LOG::write(time_t event_time, const char *user_host, - uint user_host_len, int thread_id, - const char *command_type, uint command_type_len, - const char *sql_text, uint sql_text_len) -{ - char buff[32]; - uint length= 0; - char time_buff[MAX_TIME_SIZE]; - struct tm start; - uint time_buff_len= 0; - - /* Test if someone closed between the is_open test and lock */ - if (is_open()) - { - /* Note that my_b_write() assumes it knows the length for this */ - if (event_time != last_time) - { - last_time= event_time; - - localtime_r(&event_time, &start); - - time_buff_len= my_snprintf(time_buff, MAX_TIME_SIZE, - "%02d%02d%02d %2d:%02d:%02d", - start.tm_year % 100, start.tm_mon + 1, - start.tm_mday, start.tm_hour, - start.tm_min, start.tm_sec); - - if (my_b_write(&log_file, (byte*) &time_buff, time_buff_len)) - goto err; - } - else - if (my_b_write(&log_file, (byte*) "\t\t" ,2) < 0) - goto err; - - /* command_type, thread_id */ - length= my_snprintf(buff, 32, "%5ld ", thread_id); - - if (my_b_write(&log_file, (byte*) buff, length)) - goto err; - - if (my_b_write(&log_file, (byte*) command_type, command_type_len)) - goto err; - - if (my_b_write(&log_file, (byte*) "\t", 1)) - goto err; - - /* sql_text */ - if (my_b_write(&log_file, (byte*) sql_text, sql_text_len)) - goto err; - - if (my_b_write(&log_file, (byte*) "\n", 1) || - flush_io_cache(&log_file)) - goto err; - } - - return FALSE; -err: - - if (!write_error) - { - write_error= 1; - sql_print_error(ER(ER_ERROR_ON_WRITE), name, errno); - } - return TRUE; -} - - -bool MYSQL_LOG::flush_and_sync() +bool MYSQL_BIN_LOG::flush_and_sync() { int err=0, fd=log_file.file; safe_mutex_assert_owner(&LOCK_log); @@ -2597,7 +2923,7 @@ bool MYSQL_LOG::flush_and_sync() return err; } -void MYSQL_LOG::start_union_events(THD *thd) +void MYSQL_BIN_LOG::start_union_events(THD *thd) { DBUG_ASSERT(!thd->binlog_evt_union.do_union); thd->binlog_evt_union.do_union= TRUE; @@ -2606,13 +2932,13 @@ void MYSQL_LOG::start_union_events(THD *thd) thd->binlog_evt_union.first_query_id= thd->query_id; } -void MYSQL_LOG::stop_union_events(THD *thd) +void MYSQL_BIN_LOG::stop_union_events(THD *thd) { DBUG_ASSERT(thd->binlog_evt_union.do_union); thd->binlog_evt_union.do_union= FALSE; } -bool MYSQL_LOG::is_query_in_union(THD *thd, query_id_t query_id_param) +bool MYSQL_BIN_LOG::is_query_in_union(THD *thd, query_id_t query_id_param) { return (thd->binlog_evt_union.do_union && query_id_param >= thd->binlog_evt_union.first_query_id); @@ -2716,9 +3042,10 @@ THD::binlog_set_pending_rows_event(Rows_log_event* ev) (either cached binlog if transaction, or disk binlog). Sets a new pending event. */ -int MYSQL_LOG::flush_and_set_pending_rows_event(THD *thd, Rows_log_event* event) +int MYSQL_BIN_LOG:: + flush_and_set_pending_rows_event(THD *thd, Rows_log_event* event) { - DBUG_ENTER("MYSQL_LOG::flush_and_set_pending_rows_event(event)"); + DBUG_ENTER("MYSQL_BIN_LOG::flush_and_set_pending_rows_event(event)"); DBUG_ASSERT(thd->current_stmt_binlog_row_based && mysql_bin_log.is_open()); DBUG_PRINT("enter", ("event=%p", event)); @@ -2801,11 +3128,11 @@ int MYSQL_LOG::flush_and_set_pending_rows_event(THD *thd, Rows_log_event* event) Write an event to the binary log */ -bool MYSQL_LOG::write(Log_event *event_info) +bool MYSQL_BIN_LOG::write(Log_event *event_info) { THD *thd= event_info->thd; bool error= 1; - DBUG_ENTER("MYSQL_LOG::write(Log_event *)"); + DBUG_ENTER("MYSQL_BIN_LOG::write(Log_event *)"); if (thd->binlog_evt_union.do_union) { @@ -3014,14 +3341,14 @@ bool general_log_print(THD *thd, enum enum_server_command command, return error; } -void MYSQL_LOG::rotate_and_purge(uint flags) +void MYSQL_BIN_LOG::rotate_and_purge(uint flags) { if (!(flags & RP_LOCK_LOG_IS_ALREADY_LOCKED)) pthread_mutex_lock(&LOCK_log); if ((flags & RP_FORCE_ROTATE) || (my_b_tell(&log_file) >= (my_off_t) max_size)) { - new_file(0); + new_file_without_locking(); #ifdef HAVE_REPLICATION if (expire_logs_days) { @@ -3035,7 +3362,7 @@ void MYSQL_LOG::rotate_and_purge(uint flags) pthread_mutex_unlock(&LOCK_log); } -uint MYSQL_LOG::next_file_id() +uint MYSQL_BIN_LOG::next_file_id() { uint res; pthread_mutex_lock(&LOCK_log); @@ -3066,9 +3393,9 @@ uint MYSQL_LOG::next_file_id() that the same updates are run on the slave. */ -bool MYSQL_LOG::write(THD *thd, IO_CACHE *cache, Log_event *commit_event) +bool MYSQL_BIN_LOG::write(THD *thd, IO_CACHE *cache, Log_event *commit_event) { - DBUG_ENTER("MYSQL_LOG::write(THD *, IO_CACHE *, Log_event *)"); + DBUG_ENTER("MYSQL_BIN_LOG::write(THD *, IO_CACHE *, Log_event *)"); VOID(pthread_mutex_lock(&LOCK_log)); if (likely(is_open())) // Should always be true @@ -3163,148 +3490,6 @@ err: } -/* - Log a query to the traditional slow log file - - SYNOPSIS - write() - - thd THD of the query - current_time current timestamp - query_start_arg command start timestamp - user_host the pointer to the string with user@host info - user_host_len length of the user_host string. this is computed once - and passed to all general log event handlers - query_time Amount of time the query took to execute (in seconds) - lock_time Amount of time the query was locked (in seconds) - is_command The flag, which determines, whether the sql_text is a - query or an administrator command. - sql_text the very text of the query or administrator command - processed - sql_text_len the length of sql_text string - - DESCRIPTION - - Log a query to the slow log file. - - RETURN - FALSE - OK - TRUE - error occured -*/ - -bool MYSQL_LOG::write(THD *thd, time_t current_time, time_t query_start_arg, - const char *user_host, uint user_host_len, - longlong query_time, longlong lock_time, bool is_command, - const char *sql_text, uint sql_text_len) -{ - bool error= 0; - DBUG_ENTER("MYSQL_LOG::write"); - - if (!is_open()) - DBUG_RETURN(0); - - if (is_open()) - { // Safety agains reopen - int tmp_errno= 0; - char buff[80], *end; - uint buff_len; - end= buff; - - if (!(specialflag & SPECIAL_SHORT_LOG_FORMAT)) - { - Security_context *sctx= thd->security_ctx; - if (current_time != last_time) - { - last_time= current_time; - struct tm start; - localtime_r(¤t_time, &start); - - buff_len= my_snprintf(buff, sizeof buff, - "# Time: %02d%02d%02d %2d:%02d:%02d\n", - start.tm_year % 100, start.tm_mon + 1, - start.tm_mday, start.tm_hour, - start.tm_min, start.tm_sec); - - /* Note that my_b_write() assumes it knows the length for this */ - if (my_b_write(&log_file, (byte*) buff, buff_len)) - tmp_errno=errno; - } - if (my_b_printf(&log_file, "# User@Host: ", sizeof("# User@Host: ") - 1)) - tmp_errno=errno; - if (my_b_printf(&log_file, user_host, user_host_len)) - tmp_errno=errno; - if (my_b_write(&log_file, (byte*) "\n", 1)) - tmp_errno=errno; - } - /* For slow query log */ - if (my_b_printf(&log_file, - "# Query_time: %lu Lock_time: %lu" - " Rows_sent: %lu Rows_examined: %lu\n", - (ulong) query_time, (ulong) lock_time, - (ulong) thd->sent_row_count, - (ulong) thd->examined_row_count) == (uint) -1) - tmp_errno=errno; - if (thd->db && strcmp(thd->db,db)) - { // Database changed - if (my_b_printf(&log_file,"use %s;\n",thd->db) == (uint) -1) - tmp_errno=errno; - strmov(db,thd->db); - } - if (thd->last_insert_id_used) - { - end=strmov(end,",last_insert_id="); - end=longlong10_to_str((longlong) thd->current_insert_id,end,-10); - } - // Save value if we do an insert. - if (thd->insert_id_used) - { - if (!(specialflag & SPECIAL_SHORT_LOG_FORMAT)) - { - end=strmov(end,",insert_id="); - end=longlong10_to_str((longlong) thd->last_insert_id,end,-10); - } - } - - /* - This info used to show up randomly, depending on whether the query - checked the query start time or not. now we always write current - timestamp to the slow log - */ - end= strmov(end, ",timestamp="); - end= int10_to_str((long) current_time, end, 10); - - if (end != buff) - { - *end++=';'; - *end='\n'; - if (my_b_write(&log_file, (byte*) "SET ",4) || - my_b_write(&log_file, (byte*) buff+1,(uint) (end-buff))) - tmp_errno=errno; - } - if (is_command) - { - end= strxmov(buff, "# administrator command: ", NullS); - buff_len= (ulong) (end - buff); - my_b_write(&log_file, (byte*) buff, buff_len); - } - if (my_b_write(&log_file, (byte*) sql_text, sql_text_len) || - my_b_write(&log_file, (byte*) ";\n",2) || - flush_io_cache(&log_file)) - tmp_errno=errno; - if (tmp_errno) - { - error=1; - if (! write_error) - { - write_error=1; - sql_print_error(ER(ER_ERROR_ON_WRITE),name,error); - } - } - } - DBUG_RETURN(error); -} - - /* Wait until we get a signal that the binary log has been updated @@ -3321,7 +3506,7 @@ bool MYSQL_LOG::write(THD *thd, time_t current_time, time_t query_start_arg, THD::enter_cond() (see NOTES in sql_class.h). */ -void MYSQL_LOG::wait_for_update(THD* thd, bool is_slave) +void MYSQL_BIN_LOG::wait_for_update(THD* thd, bool is_slave) { const char *old_msg; DBUG_ENTER("wait_for_update"); @@ -3354,9 +3539,9 @@ void MYSQL_LOG::wait_for_update(THD* thd, bool is_slave) The internal structures are not freed until cleanup() is called */ -void MYSQL_LOG::close(uint exiting) +void MYSQL_BIN_LOG::close(uint exiting) { // One can't set log_type here! - DBUG_ENTER("MYSQL_LOG::close"); + DBUG_ENTER("MYSQL_BIN_LOG::close"); DBUG_PRINT("enter",("exiting: %d", (int) exiting)); if (log_type != LOG_CLOSED && log_type != LOG_TO_BE_OPENED) { @@ -3370,7 +3555,6 @@ void MYSQL_LOG::close(uint exiting) signal_update(); } #endif /* HAVE_REPLICATION */ - end_io_cache(&log_file); /* don't pwrite in a file opened with O_APPEND - it doesn't work */ if (log_file.type == WRITE_CACHE && log_type == LOG_BIN) @@ -3380,16 +3564,8 @@ void MYSQL_LOG::close(uint exiting) my_pwrite(log_file.file, &flags, 1, offset, MYF(0)); } - if (my_sync(log_file.file,MYF(MY_WME)) && ! write_error) - { - write_error=1; - sql_print_error(ER(ER_ERROR_ON_WRITE), name, errno); - } - if (my_close(log_file.file,MYF(MY_WME)) && ! write_error) - { - write_error=1; - sql_print_error(ER(ER_ERROR_ON_WRITE), name, errno); - } + /* this will cleanup IO_CACHE, sync and close the file */ + MYSQL_LOG::close(exiting); } /* @@ -3412,7 +3588,7 @@ void MYSQL_LOG::close(uint exiting) } -void MYSQL_LOG::set_max_size(ulong max_size_arg) +void MYSQL_BIN_LOG::set_max_size(ulong max_size_arg) { /* We need to take locks, otherwise this may happen: @@ -3421,7 +3597,7 @@ void MYSQL_LOG::set_max_size(ulong max_size_arg) uses the old_max_size argument, so max_size_arg has been overwritten and it's like if the SET command was never run. */ - DBUG_ENTER("MYSQL_LOG::set_max_size"); + DBUG_ENTER("MYSQL_BIN_LOG::set_max_size"); pthread_mutex_lock(&LOCK_log); if (is_open()) max_size= max_size_arg; @@ -3570,9 +3746,9 @@ bool flush_error_log() return result; } -void MYSQL_LOG::signal_update() +void MYSQL_BIN_LOG::signal_update() { - DBUG_ENTER("MYSQL_LOG::signal_update"); + DBUG_ENTER("MYSQL_BIN_LOG::signal_update"); pthread_cond_broadcast(&update_cond); DBUG_VOID_RETURN; } @@ -4175,7 +4351,7 @@ int TC_LOG::using_heuristic_recover() } /****** transaction coordinator log for 2pc - binlog() based solution ******/ -#define TC_LOG_BINLOG MYSQL_LOG +#define TC_LOG_BINLOG MYSQL_BIN_LOG /* TODO keep in-memory list of prepared transactions diff --git a/sql/log.h b/sql/log.h index 03d5466e549..589932dcac0 100644 --- a/sql/log.h +++ b/sql/log.h @@ -147,33 +147,89 @@ typedef struct st_log_info class Log_event; class Rows_log_event; -enum enum_log_type { LOG_CLOSED, LOG_TO_BE_OPENED, LOG_NORMAL, LOG_NEW, LOG_BIN}; +enum enum_log_type { LOG_CLOSED, LOG_TO_BE_OPENED, LOG_NORMAL, LOG_BIN}; /* - TODO split MYSQL_LOG into base MYSQL_LOG and - MYSQL_QUERY_LOG, MYSQL_SLOW_LOG, MYSQL_BIN_LOG - most of the code from MYSQL_LOG should be in the MYSQL_BIN_LOG - only (TC_LOG included) - TODO use mmap instead of IO_CACHE for binlog (mmap+fsync is two times faster than write+fsync) */ -class MYSQL_LOG: public TC_LOG +class MYSQL_LOG +{ +public: + MYSQL_LOG(); + void init_pthread_objects(); + void cleanup(); + void reopen_file(); + bool open(const char *log_name, + enum_log_type log_type, + const char *new_name, + enum cache_type io_cache_type_arg); + void init(enum_log_type log_type_arg, + enum cache_type io_cache_type_arg); + void close(uint exiting); + inline bool is_open() { return log_type != LOG_CLOSED; } + const char *generate_name(const char *log_name, const char *suffix, + bool strip_ext, char *buff); + int generate_new_name(char *new_name, const char *log_name); + protected: + /* LOCK_log is inited by init_pthread_objects() */ + pthread_mutex_t LOCK_log; + char *name; + char log_file_name[FN_REFLEN]; + char time_buff[20], db[NAME_LEN + 1]; + bool write_error, inited; + IO_CACHE log_file; + volatile enum_log_type log_type; + enum cache_type io_cache_type; + time_t last_time; + + friend class Log_event; +}; + +class MYSQL_GENERAL_LOG: public MYSQL_LOG +{ +public: + MYSQL_GENERAL_LOG() {} /* get rid of gcc warning */ + bool write(time_t event_time, const char *user_host, + uint user_host_len, int thread_id, + const char *command_type, uint command_type_len, + const char *sql_text, uint sql_text_len); + bool open_query_log(const char *log_name) + { + char buf[FN_REFLEN]; + return open(generate_name(log_name, ".log", 0, buf), LOG_NORMAL, 0, + WRITE_CACHE); + } +}; + +class MYSQL_SLOW_LOG: public MYSQL_LOG +{ +public: + MYSQL_SLOW_LOG() {} /* get rid of gcc warning */ + bool write(THD *thd, time_t current_time, time_t query_start_arg, + const char *user_host, uint user_host_len, + longlong query_time, longlong lock_time, bool is_command, + const char *sql_text, uint sql_text_len); + bool open_slow_log(const char *log_name) + { + char buf[FN_REFLEN]; + return open(generate_name(log_name, "-slow.log", 0, buf), LOG_NORMAL, 0, + WRITE_CACHE); + } +}; + +class MYSQL_BIN_LOG: public TC_LOG, private MYSQL_LOG { private: /* LOCK_log and LOCK_index are inited by init_pthread_objects() */ - pthread_mutex_t LOCK_log, LOCK_index; + pthread_mutex_t LOCK_index; pthread_mutex_t LOCK_prep_xids; pthread_cond_t COND_prep_xids; pthread_cond_t update_cond; ulonglong bytes_written; - time_t last_time,query_start; - IO_CACHE log_file; IO_CACHE index_file; - char *name; - char time_buff[20],db[NAME_LEN+1]; - char log_file_name[FN_REFLEN],index_file_name[FN_REFLEN]; + char index_file_name[FN_REFLEN]; /* The max size before rotation (usable only if log_type == LOG_BIN: binary logs and relay logs). @@ -186,13 +242,10 @@ class MYSQL_LOG: public TC_LOG */ ulong max_size; ulong prepared_xids; /* for tc log - number of xids to remember */ - volatile enum_log_type log_type; - enum cache_type io_cache_type; // current file sequence number for load data infile binary logging uint file_id; uint open_count; // For replication int readers_count; - bool write_error, inited; bool need_start_event; /* no_auto_events means we don't want any of these automatic events : @@ -202,13 +255,20 @@ class MYSQL_LOG: public TC_LOG In 5.0 it's 0 for relay logs too! */ bool no_auto_events; - friend class Log_event; ulonglong m_table_map_version; int write_to_file(IO_CACHE *cache); + /* + This is used to start writing to a new log file. The difference from + new_file() is locking. new_file_without_locking() does not acquire + LOCK_log. + */ + void new_file_without_locking(); + void new_file_impl(bool need_lock); public: + MYSQL_LOG::generate_name; /* These describe the log's format. This is used only for relay logs. _for_exec is used by the SQL thread, _for_queue by the I/O thread. It's @@ -220,9 +280,9 @@ public: Format_description_log_event *description_event_for_exec, *description_event_for_queue; - MYSQL_LOG(); + MYSQL_BIN_LOG(); /* - note that there's no destructor ~MYSQL_LOG() ! + note that there's no destructor ~MYSQL_BIN_LOG() ! The reason is that we don't want it to be automatically called on exit() - but only during the correct shutdown process */ @@ -264,9 +324,7 @@ public: void signal_update(); void wait_for_update(THD* thd, bool master_or_slave); void set_need_start_event() { need_start_event = 1; } - void init(enum_log_type log_type_arg, - enum cache_type io_cache_type_arg, - bool no_auto_events_arg, ulong max_size); + void init(bool no_auto_events_arg, ulong max_size); void init_pthread_objects(); void cleanup(); bool open(const char *log_name, @@ -275,35 +333,10 @@ public: enum cache_type io_cache_type_arg, bool no_auto_events_arg, ulong max_size, bool null_created); - const char *generate_name(const char *log_name, const char *suffix, - bool strip_ext, char *buff); - /* simplified open_xxx wrappers for the gigantic open above */ - bool open_query_log(const char *log_name) - { - char buf[FN_REFLEN]; - return open(generate_name(log_name, ".log", 0, buf), - LOG_NORMAL, 0, WRITE_CACHE, 0, 0, 0); - } - bool open_slow_log(const char *log_name) - { - char buf[FN_REFLEN]; - return open(generate_name(log_name, "-slow.log", 0, buf), - LOG_NORMAL, 0, WRITE_CACHE, 0, 0, 0); - } bool open_index_file(const char *index_file_name_arg, const char *log_name); - void new_file(bool need_lock); - /* log a command to the old-fashioned general log */ - bool write(time_t event_time, const char *user_host, - uint user_host_len, int thread_id, - const char *command_type, uint command_type_len, - const char *sql_text, uint sql_text_len); - - /* log a query to the old-fashioned slow query log */ - bool write(THD *thd, time_t current_time, time_t query_start_arg, - const char *user_host, uint user_host_len, - longlong query_time, longlong lock_time, bool is_command, - const char *sql_text, uint sql_text_len); + /* Use this to start writing a new log file */ + void new_file(); bool write(Log_event* event_info); // binary log write bool write(THD *thd, IO_CACHE *cache, Log_event *commit_event); @@ -319,7 +352,6 @@ public: bool appendv(const char* buf,uint len,...); bool append(Log_event* ev); - int generate_new_name(char *new_name,const char *old_name); void make_log_name(char* buf, const char* log_ident); bool is_active(const char* log_file_name); int update_log_index(LOG_INFO* linfo, bool need_update_threads); @@ -416,7 +448,8 @@ public: class Log_to_file_event_handler: public Log_event_handler { - MYSQL_LOG mysql_log, mysql_slow_log; + MYSQL_GENERAL_LOG mysql_log; + MYSQL_SLOW_LOG mysql_slow_log; bool is_initialized; public: Log_to_file_event_handler(): is_initialized(FALSE) diff --git a/sql/log_event.h b/sql/log_event.h index b24686514e3..b94d94c8513 100644 --- a/sql/log_event.h +++ b/sql/log_event.h @@ -470,7 +470,7 @@ enum Int_event_type #ifndef MYSQL_CLIENT class String; -class MYSQL_LOG; +class MYSQL_BIN_LOG; class THD; #endif diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 749a968a5af..2f7450e6261 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -1525,7 +1525,7 @@ extern char *default_tz_name; extern my_bool opt_large_pages; extern uint opt_large_page_size; -extern MYSQL_LOG mysql_bin_log; +extern MYSQL_BIN_LOG mysql_bin_log; extern LOGGER logger; extern TABLE_LIST general_log, slow_log; extern FILE *bootstrap_file; diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 7d89b67b583..dec1cb81a4c 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -2610,10 +2610,10 @@ static int init_common_variables(const char *conf_file_name, int argc, global_system_variables.time_zone= my_tz_SYSTEM; /* - Init mutexes for the global MYSQL_LOG objects. + Init mutexes for the global MYSQL_BIN_LOG objects. As safe_mutex depends on what MY_INIT() does, we can't init the mutexes of - global MYSQL_LOGs in their constructors, because then they would be inited - before MY_INIT(). So we do it here. + global MYSQL_BIN_LOGs in their constructors, because then they would be + inited before MY_INIT(). So we do it here. */ mysql_bin_log.init_pthread_objects(); diff --git a/sql/rpl_injector.cc b/sql/rpl_injector.cc index 265f5f61213..ec0add4165f 100644 --- a/sql/rpl_injector.cc +++ b/sql/rpl_injector.cc @@ -25,7 +25,7 @@ /* inline since it's called below */ inline -injector::transaction::transaction(MYSQL_LOG *log, THD *thd) +injector::transaction::transaction(MYSQL_BIN_LOG *log, THD *thd) : m_state(START_STATE), m_thd(thd) { /* diff --git a/sql/rpl_injector.h b/sql/rpl_injector.h index 14d5cca9b6c..3b0857e0833 100644 --- a/sql/rpl_injector.h +++ b/sql/rpl_injector.h @@ -26,7 +26,7 @@ /* Forward declarations */ class handler; -class MYSQL_LOG; +class MYSQL_BIN_LOG; class st_table; typedef st_table TABLE; @@ -219,7 +219,7 @@ public: private: /* Only the injector may construct these object */ - transaction(MYSQL_LOG *, THD *); + transaction(MYSQL_BIN_LOG *, THD *); void swap(transaction& o) { /* std::swap(m_start_pos, o.m_start_pos); */ diff --git a/sql/rpl_rli.h b/sql/rpl_rli.h index cacae1aa4c2..5fb0f85d8fe 100644 --- a/sql/rpl_rli.h +++ b/sql/rpl_rli.h @@ -69,7 +69,7 @@ typedef struct st_relay_log_info Protected with internal locks. Must get data_lock when resetting the logs. */ - MYSQL_LOG relay_log; + MYSQL_BIN_LOG relay_log; LOG_INFO linfo; IO_CACHE cache_buf,*cur_log; diff --git a/sql/slave.cc b/sql/slave.cc index 4ab9e951813..4ed78ea2de1 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -4570,7 +4570,7 @@ static Log_event* next_event(RELAY_LOG_INFO* rli) When the relay log is created when the I/O thread starts, easy: the master will send the description event and we will queue it. But if the relay log is created by new_file(): then the solution is: - MYSQL_LOG::open() will write the buffered description event. + MYSQL_BIN_LOG::open() will write the buffered description event. */ if ((ev=Log_event::read_log_event(cur_log,0, rli->relay_log.description_event_for_exec))) @@ -4832,7 +4832,8 @@ err: Rotate a relay log (this is used only by FLUSH LOGS; the automatic rotation because of size is simpler because when we do it we already have all relevant locks; here we don't, so this function is mainly taking locks). - Returns nothing as we cannot catch any error (MYSQL_LOG::new_file() is void). + Returns nothing as we cannot catch any error (MYSQL_BIN_LOG::new_file() + is void). */ void rotate_relay_log(MASTER_INFO* mi) @@ -4854,7 +4855,7 @@ void rotate_relay_log(MASTER_INFO* mi) } /* If the relay log is closed, new_file() will do nothing. */ - rli->relay_log.new_file(1); + rli->relay_log.new_file(); /* We harvest now, because otherwise BIN_LOG_HEADER_SIZE will not immediately diff --git a/sql/slave.h b/sql/slave.h index 0b77d7f7c4f..053358dc686 100644 --- a/sql/slave.h +++ b/sql/slave.h @@ -73,7 +73,7 @@ run_lock protects all information about the run state: slave_running, and the existence of the I/O thread (to stop/start it, you need this mutex). data_lock protects some moving members of the struct: counters (log name, - position) and relay log (MYSQL_LOG object). + position) and relay log (MYSQL_BIN_LOG object). In RELAY_LOG_INFO: run_lock, data_lock see MASTER_INFO @@ -81,7 +81,7 @@ Order of acquisition: if you want to have LOCK_active_mi and a run_lock, you must acquire LOCK_active_mi first. - In MYSQL_LOG: LOCK_log, LOCK_index of the binlog and the relay log + In MYSQL_BIN_LOG: LOCK_log, LOCK_index of the binlog and the relay log LOCK_log: when you write to it. LOCK_index: when you create/delete a binlog (so that you have to update the .index file). */ -- cgit v1.2.1 From 36815fa1ad44d678c7ba01312562d08a550cb0ca Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 16 May 2006 11:16:23 +0200 Subject: Bug#16837 (Missing #ifdef cause compile problem --without-row-based-replication): Added #ifdef's to make code work even when the system is built without row-based replication. mysql-test/r/create.result: Result change mysql-test/r/innodb_mysql.result: Result change mysql-test/t/create.test: Moving InnoDB specific test to innodb_mysql.test mysql-test/t/innodb_mysql.test: Moving InnoDB-specific test from create.test mysql-test/t/rpl_rbr_to_sbr.test: Test only sensible if we have row-based replication compiled in. mysql-test/t/rpl_row_basic_8partition.test: Test only sensible if we have row-based replication compiled in. sql/log.cc: Adding HAVE_ROW_BASED_REPLICATION guards on code to work without row-based replication. sql/set_var.cc: Adding HAVE_ROW_BASED_REPLICATION guards on code to work without row-based replication. sql/set_var.h: Adding HAVE_ROW_BASED_REPLICATION guards on code to work without row-based replication. sql/share/errmsg.txt: Adding HAVE_ROW_BASED_REPLICATION guards on code to work without row-based replication. sql/sql_base.cc: Adding HAVE_ROW_BASED_REPLICATION guards on code to work without row-based replication. sql/sql_class.cc: Adding HAVE_ROW_BASED_REPLICATION guards on code to work without row-based replication. sql/sql_class.h: Adding HAVE_ROW_BASED_REPLICATION guards on code to work without row-based replication. sql/sql_insert.cc: Adding HAVE_ROW_BASED_REPLICATION guards on code to work without row-based replication. sql/sql_parse.cc: Adding HAVE_ROW_BASED_REPLICATION guards on code to work without row-based replication. sql/sql_table.cc: Not running hooks --- mysql-test/r/create.result | 6 ------ mysql-test/r/innodb_mysql.result | 6 ++++++ mysql-test/t/create.test | 8 -------- mysql-test/t/innodb_mysql.test | 9 +++++++++ mysql-test/t/rpl_rbr_to_sbr.test | 1 + mysql-test/t/rpl_row_basic_8partition.test | 1 + sql/log.cc | 15 ++++++++++++++- sql/set_var.cc | 10 ++++++++++ sql/set_var.h | 9 +++++++-- sql/share/errmsg.txt | 2 ++ sql/sql_base.cc | 2 ++ sql/sql_class.cc | 13 ++++++++++++- sql/sql_class.h | 23 +++++++++++++++++------ sql/sql_insert.cc | 10 ++++++++-- sql/sql_parse.cc | 2 ++ sql/sql_table.cc | 3 ++- 16 files changed, 93 insertions(+), 27 deletions(-) diff --git a/mysql-test/r/create.result b/mysql-test/r/create.result index d45960cf787..41baeedf3f8 100644 --- a/mysql-test/r/create.result +++ b/mysql-test/r/create.result @@ -772,9 +772,3 @@ t1 CREATE TABLE `t1` ( `i` int(11) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 MAX_ROWS=4294967295 drop table t1; -create table t1(f1 varchar(800) binary not null, key(f1)) engine = innodb -character set utf8 collate utf8_general_ci; -Warnings: -Warning 1071 Specified key was too long; max key length is 765 bytes -insert into t1 values('aaa'); -drop table t1; diff --git a/mysql-test/r/innodb_mysql.result b/mysql-test/r/innodb_mysql.result index 878c5cb5451..212e352390f 100644 --- a/mysql-test/r/innodb_mysql.result +++ b/mysql-test/r/innodb_mysql.result @@ -1 +1,7 @@ drop table if exists t1; +create table t1(f1 varchar(800) binary not null, key(f1)) engine = innodb +character set utf8 collate utf8_general_ci; +Warnings: +Warning 1071 Specified key was too long; max key length is 765 bytes +insert into t1 values('aaa'); +drop table t1; diff --git a/mysql-test/t/create.test b/mysql-test/t/create.test index fe8cfe70c4e..9b1b7a33029 100644 --- a/mysql-test/t/create.test +++ b/mysql-test/t/create.test @@ -667,12 +667,4 @@ alter table t1 max_rows=100000000000; show create table t1; drop table t1; -# -# Bug#17530: Incorrect key truncation on table creation caused server crash. -# -create table t1(f1 varchar(800) binary not null, key(f1)) engine = innodb - character set utf8 collate utf8_general_ci; -insert into t1 values('aaa'); -drop table t1; - # End of 5.0 tests diff --git a/mysql-test/t/innodb_mysql.test b/mysql-test/t/innodb_mysql.test index b942b9fbc0d..f4eac1094b0 100644 --- a/mysql-test/t/innodb_mysql.test +++ b/mysql-test/t/innodb_mysql.test @@ -3,3 +3,12 @@ --disable_warnings drop table if exists t1; --enable_warnings + +# +# Bug#17530: Incorrect key truncation on table creation caused server crash. +# +create table t1(f1 varchar(800) binary not null, key(f1)) engine = innodb + character set utf8 collate utf8_general_ci; +insert into t1 values('aaa'); +drop table t1; + diff --git a/mysql-test/t/rpl_rbr_to_sbr.test b/mysql-test/t/rpl_rbr_to_sbr.test index f04caf05057..c10199f8ff5 100644 --- a/mysql-test/t/rpl_rbr_to_sbr.test +++ b/mysql-test/t/rpl_rbr_to_sbr.test @@ -1,3 +1,4 @@ +-- source include/have_row_based.inc -- source include/have_binlog_format_statement.inc -- source include/master-slave.inc diff --git a/mysql-test/t/rpl_row_basic_8partition.test b/mysql-test/t/rpl_row_basic_8partition.test index 8cad2226d4a..640a420c10e 100644 --- a/mysql-test/t/rpl_row_basic_8partition.test +++ b/mysql-test/t/rpl_row_basic_8partition.test @@ -7,6 +7,7 @@ # partition tables with same engine (MyISAM) in both ends. # ############################################################ +--source include/have_row_based.inc --source include/have_partition.inc --source include/master-slave.inc connection master; diff --git a/sql/log.cc b/sql/log.cc index 7c8f314bc08..2141f34d798 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -63,11 +63,17 @@ static int binlog_prepare(THD *thd, bool all); struct binlog_trx_data { bool empty() const { +#ifdef HAVE_ROW_BASED_REPLICATION return pending == NULL && my_b_tell(&trans_log) == 0; +#else + return my_b_tell(&trans_log) == 0; +#endif } binlog_trx_data() {} IO_CACHE trans_log; // The transaction cache +#ifdef HAVE_ROW_BASED_REPLICATION Rows_log_event *pending; // The pending binrows event +#endif }; static const char binlog_hton_name[]= "binlog"; @@ -1090,9 +1096,12 @@ binlog_end_trans(THD *thd, binlog_trx_data *trx_data, Log_event *end_ev) were, we would have to ensure that we're not ending a statement inside a stored function. */ +#ifdef HAVE_ROW_BASED_REPLICATION thd->binlog_flush_pending_rows_event(TRUE); +#endif error= mysql_bin_log.write(thd, trans_log, end_ev); } +#ifdef HAVE_ROW_BASED_REPLICATION else { thd->binlog_delete_pending_rows_event(); @@ -1110,6 +1119,7 @@ binlog_end_trans(THD *thd, binlog_trx_data *trx_data, Log_event *end_ev) transaction cache. */ mysql_bin_log.update_table_map_version(); +#endif statistic_increment(binlog_cache_use, &LOCK_status); if (trans_log->disk_writes != 0) @@ -2655,6 +2665,7 @@ int THD::binlog_setup_trx_data() engine has registered for the transaction. */ +#ifdef HAVE_ROW_BASED_REPLICATION int THD::binlog_write_table_map(TABLE *table, bool is_trans) { int error; @@ -2797,6 +2808,7 @@ int MYSQL_LOG::flush_and_set_pending_rows_event(THD *thd, Rows_log_event* event) DBUG_RETURN(error); } +#endif // HAVE_ROW_BASED_REPLICATION /* Write an event to the binary log @@ -2829,9 +2841,11 @@ bool MYSQL_LOG::write(Log_event *event_info) we are inside a stored function, we do not end the statement since this will close all tables on the slave. */ +#ifdef HAVE_ROW_BASED_REPLICATION bool const end_stmt= thd->prelocked_mode && thd->lex->requires_prelocking(); thd->binlog_flush_pending_rows_event(end_stmt); +#endif // HAVE_ROW_BASED_REPLICATION pthread_mutex_lock(&LOCK_log); @@ -2880,7 +2894,6 @@ bool MYSQL_LOG::write(Log_event *event_info) (binlog_trx_data*) thd->ha_data[binlog_hton.slot]; IO_CACHE *trans_log= &trx_data->trans_log; bool trans_log_in_use= my_b_tell(trans_log) != 0; - if (event_info->get_cache_stmt() && !trans_log_in_use) trans_register_ha(thd, (thd->options & diff --git a/sql/set_var.cc b/sql/set_var.cc index ae45b299196..e478bff722c 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -1269,7 +1269,14 @@ bool sys_var_thd_binlog_format::is_readonly() const if global or not here. And this test will also prevent switching from RBR to RBR (a no-op which should not happen too often). + + If we don't have row-based replication compiled in, the variable + is always read-only. */ +#ifndef HAVE_ROW_BASED_REPLICATION + my_error(ER_RBR_NOT_AVAILABLE, MYF(0)); + return 1; +#else if ((thd->variables.binlog_format == BINLOG_FORMAT_ROW) && thd->temporary_tables) { @@ -1295,12 +1302,15 @@ bool sys_var_thd_binlog_format::is_readonly() const } #endif return sys_var_thd_enum::is_readonly(); +#endif } +#ifdef HAVE_ROW_BASED_REPLICATION void fix_binlog_format_after_update(THD *thd, enum_var_type type) { thd->reset_current_stmt_binlog_row_based(); } +#endif static void fix_max_binlog_size(THD *thd, enum_var_type type) { diff --git a/sql/set_var.h b/sql/set_var.h index 8076f10bb0a..d52b2720918 100644 --- a/sql/set_var.h +++ b/sql/set_var.h @@ -851,15 +851,20 @@ public: bool update(THD *thd, set_var *var); }; +#ifdef HAVE_ROW_BASED_REPLICATION extern void fix_binlog_format_after_update(THD *thd, enum_var_type type); +#endif class sys_var_thd_binlog_format :public sys_var_thd_enum { public: sys_var_thd_binlog_format(const char *name_arg, ulong SV::*offset_arg) :sys_var_thd_enum(name_arg, offset_arg, - &binlog_format_typelib, - fix_binlog_format_after_update) + &binlog_format_typelib +#ifdef HAVE_ROW_BASED_REPLICATION + , fix_binlog_format_after_update +#endif + ) {}; bool is_readonly() const; }; diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt index a2bc77714bb..864df32f9f5 100644 --- a/sql/share/errmsg.txt +++ b/sql/share/errmsg.txt @@ -5842,3 +5842,5 @@ ER_WRONG_PARTITION_NAME swe "Felaktigt partitionsnamn" ER_CANT_CHANGE_TX_ISOLATION 25001 eng "Transaction isolation level can't be changed while a transaction is in progress" +ER_RBR_NOT_AVAILABLE + eng "The server was not built with row-based replication" diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 77d2b165881..151af58780a 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -1069,7 +1069,9 @@ void close_thread_tables(THD *thd, bool lock_in_use, bool skip_derived) handled either before writing a query log event (inside binlog_query()) or when preparing a pending event. */ +#ifdef HAVE_ROW_BASED_REPLICATION thd->binlog_flush_pending_rows_event(TRUE); +#endif mysql_unlock_tables(thd, thd->lock); thd->lock=0; } diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 6166771e5d1..6bfcc4e2c23 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -197,7 +197,10 @@ THD::THD() :Statement(CONVENTIONAL_EXECUTION, 0, ALLOC_ROOT_MIN_BLOCK_SIZE, 0), Open_tables_state(refresh_version), rli_fake(0), lock_id(&main_lock_id), - user_time(0), in_sub_stmt(0), binlog_table_maps(0), + user_time(0), in_sub_stmt(0), +#ifdef HAVE_ROW_BASED_REPLICATION + binlog_table_maps(0), +#endif global_read_lock(0), is_fatal_error(0), rand_used(0), time_zone_used(0), last_insert_id_used(0), insert_id_used(0), clear_next_insert_id(0), @@ -2110,7 +2113,9 @@ void THD::reset_sub_statement_state(Sub_statement_state *backup, if ((!lex->requires_prelocking() || is_update_query(lex->sql_command)) && !current_stmt_binlog_row_based) + { options&= ~OPTION_BIN_LOG; + } /* Disable result sets */ client_capabilities &= ~CLIENT_MULTI_RESULTS; in_sub_stmt|= new_state; @@ -2699,6 +2704,7 @@ int THD::binlog_query(THD::enum_binlog_query_type qtype, to how you treat this. */ case THD::ROW_QUERY_TYPE: +#ifdef HAVE_ROW_BASED_REPLICATION if (current_stmt_binlog_row_based) { /* @@ -2717,6 +2723,7 @@ int THD::binlog_query(THD::enum_binlog_query_type qtype, DBUG_RETURN(binlog_flush_pending_rows_event(TRUE)); DBUG_RETURN(0); } +#endif /* Otherwise, we fall through */ case THD::STMT_QUERY_TYPE: /* @@ -2725,7 +2732,9 @@ int THD::binlog_query(THD::enum_binlog_query_type qtype, */ { Query_log_event qinfo(this, query, query_len, is_trans, suppress_use); +#ifdef HAVE_ROW_BASED_REPLICATION qinfo.flags|= LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F; +#endif /* Binlog table maps will be irrelevant after a Query_log_event (they are just removed on the slave side) so after the query @@ -2733,7 +2742,9 @@ int THD::binlog_query(THD::enum_binlog_query_type qtype, table maps were written. */ int error= mysql_bin_log.write(&qinfo); +#ifdef HAVE_ROW_BASED_REPLICATION binlog_table_maps= 0; +#endif DBUG_RETURN(error); } break; diff --git a/sql/sql_class.h b/sql/sql_class.h index 54f256997d0..56ddc7702f8 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -890,8 +890,10 @@ public: /* container for handler's private per-connection data */ void *ha_data[MAX_HA]; -#ifdef HAVE_ROW_BASED_REPLICATION #ifndef MYSQL_CLIENT + int binlog_setup_trx_data(); + +#ifdef HAVE_ROW_BASED_REPLICATION /* Public interface to write RBR events to the binlog @@ -921,7 +923,6 @@ public: RowsEventT* hint); Rows_log_event* binlog_get_pending_rows_event() const; void binlog_set_pending_rows_event(Rows_log_event* ev); - int binlog_setup_trx_data(); my_size_t max_row_length_blob(TABLE* table, const byte *data) const; my_size_t max_row_length(TABLE* table, const byte *data) const @@ -945,8 +946,9 @@ private: public: -#endif #endif /* HAVE_ROW_BASED_REPLICATION */ +#endif /* MYSQL_CLIENT */ + #ifndef MYSQL_CLIENT enum enum_binlog_query_type { /* @@ -1380,18 +1382,25 @@ public: void restore_sub_statement_state(Sub_statement_state *backup); void set_n_backup_active_arena(Query_arena *set, Query_arena *backup); void restore_active_arena(Query_arena *set, Query_arena *backup); +#ifdef HAVE_ROW_BASED_REPLICATION inline void set_current_stmt_binlog_row_based_if_mixed() { if (variables.binlog_format == BINLOG_FORMAT_MIXED) - current_stmt_binlog_row_based= 1; + current_stmt_binlog_row_based= TRUE; } inline void set_current_stmt_binlog_row_based() { - current_stmt_binlog_row_based= 1; + current_stmt_binlog_row_based= TRUE; } +#endif inline void reset_current_stmt_binlog_row_based() { - current_stmt_binlog_row_based= test(variables.binlog_format == BINLOG_FORMAT_ROW); +#ifdef HAVE_ROW_BASED_REPLICATION + current_stmt_binlog_row_based= + test(variables.binlog_format == BINLOG_FORMAT_ROW); +#else + current_stmt_binlog_row_based= FALSE; +#endif } }; @@ -1584,7 +1593,9 @@ public: {} int prepare(List &list, SELECT_LEX_UNIT *u); +#ifdef HAVE_ROW_BASED_REPLICATION void binlog_show_create_table(TABLE **tables, uint count); +#endif void store_values(List &values); void send_error(uint errcode,const char *err); bool send_eof(); diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 946c0536897..aed8b12d2c1 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -2523,6 +2523,8 @@ select_create::prepare(List &values, SELECT_LEX_UNIT *u) { DBUG_ENTER("select_create::prepare"); + TABLEOP_HOOKS *hook_ptr= NULL; +#ifdef HAVE_ROW_BASED_REPLICATION class MY_HOOKS : public TABLEOP_HOOKS { public: MY_HOOKS(select_create *x) : ptr(x) { } @@ -2537,11 +2539,14 @@ select_create::prepare(List &values, SELECT_LEX_UNIT *u) }; MY_HOOKS hooks(this); + hook_ptr= &hooks; +#endif unit= u; table= create_table_from_items(thd, create_info, create_table, extra_fields, keys, &values, &lock, - &hooks); + hook_ptr); + if (!table) DBUG_RETURN(-1); // abort() deletes table @@ -2579,6 +2584,7 @@ select_create::prepare(List &values, SELECT_LEX_UNIT *u) } +#ifdef HAVE_ROW_BASED_REPLICATION void select_create::binlog_show_create_table(TABLE **tables, uint count) { @@ -2622,7 +2628,7 @@ select_create::binlog_show_create_table(TABLE **tables, uint count) /* is_trans */ TRUE, /* suppress_use */ FALSE); } - +#endif // HAVE_ROW_BASED_REPLICATION void select_create::store_values(List &values) { diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 8ee78578631..a0fda91fa9e 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -2468,8 +2468,10 @@ mysql_execute_command(THD *thd) statistic_increment(thd->status_var.com_stat[lex->sql_command], &LOCK_status); +#ifdef HAVE_ROW_BASED_REPLICATION if (lex->binlog_row_based_if_mixed) thd->set_current_stmt_binlog_row_based_if_mixed(); +#endif switch (lex->sql_command) { case SQLCOM_SELECT: diff --git a/sql/sql_table.cc b/sql/sql_table.cc index f890f504952..f59ab2e9811 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -3507,7 +3507,8 @@ TABLE *create_table_from_items(THD *thd, HA_CREATE_INFO *create_info, save us from that ? */ table->reginfo.lock_type=TL_WRITE; - hooks->prelock(&table, 1); // Call prelock hooks + if (hooks) + hooks->prelock(&table, 1); // Call prelock hooks if (! ((*lock)= mysql_lock_tables(thd, &table, 1, MYSQL_LOCK_IGNORE_FLUSH, ¬_used))) { -- cgit v1.2.1 From 39b6d186e8933a1e6e5544194e66138f78e14b11 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 17 May 2006 15:57:45 +0200 Subject: After merge fixes --- sql/log.cc | 2 -- sql/set_var.cc | 9 ++++----- sql/sql_class.h | 3 ++- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/sql/log.cc b/sql/log.cc index 5546f47004d..aabed8fa246 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -2632,7 +2632,6 @@ bool MYSQL_LOG::is_query_in_union(THD *thd, query_id_t query_id_param) } -#ifdef HAVE_ROW_BASED_REPLICATION /* These functions are placed in this file since they need access to binlog_hton, which has internal linkage. @@ -2847,7 +2846,6 @@ bool MYSQL_LOG::write(Log_event *event_info) #ifdef HAVE_ROW_BASED_REPLICATION bool const end_stmt= thd->prelocked_mode && thd->lex->requires_prelocking(); -#ifdef HAVE_ROW_BASED_REPLICATION thd->binlog_flush_pending_rows_event(end_stmt); #endif /*HAVE_ROW_BASED_REPLICATION*/ diff --git a/sql/set_var.cc b/sql/set_var.cc index 26fb42166b1..971c32eb77a 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -1283,7 +1283,6 @@ bool sys_var_thd_binlog_format::is_readonly() const my_error(ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR, MYF(0)); return 1; } -#endif /*HAVE_ROW_BASED_REPLICATION*/ /* if in a stored function, it's too late to change mode */ @@ -1301,19 +1300,19 @@ bool sys_var_thd_binlog_format::is_readonly() const my_error(ER_NDB_CANT_SWITCH_BINLOG_FORMAT, MYF(0)); return 1; } -#endif +#endif /* HAVE_NDB_BINLOG */ +#endif /* HAVE_ROW_BASED_REPLICATION */ return sys_var_thd_enum::is_readonly(); -#endif } -#ifdef HAVE_ROW_BASED_REPLICATION + void fix_binlog_format_after_update(THD *thd, enum_var_type type) { #ifdef HAVE_ROW_BASED_REPLICATION thd->reset_current_stmt_binlog_row_based(); #endif /*HAVE_ROW_BASED_REPLICATION*/ } -#endif + static void fix_max_binlog_size(THD *thd, enum_var_type type) { diff --git a/sql/sql_class.h b/sql/sql_class.h index d9118cc7607..0135763b3b2 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -942,11 +942,12 @@ public: void binlog_delete_pending_rows_event(); private: +#ifdef HAVE_ROW_BASED_REPLICATION uint binlog_table_maps; // Number of table maps currently in the binlog +#endif /* HAVE_ROW_BASED_REPLICATION */ public: -#endif /* HAVE_ROW_BASED_REPLICATION */ #endif /* MYSQL_CLIENT */ #ifndef MYSQL_CLIENT -- cgit v1.2.1 From 9c686c8a68af12b3a491dc8049b7ddc50db8010e Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 18 May 2006 12:21:13 +0500 Subject: Bug#19392 Rename Database: Crash if case change Problem: Renaming a database to itself crashed server. It hapenned because of wrong DBUG_ASSERT. Fix: removing wrong DBUG_ASSERT. Now it reports a correct error message "database alreadt exists". mysql-test/r/renamedb.result: Adding test case mysql-test/t/renamedb.test: Adding test case sql/sql_db.cc: DBUG_ASSERT crashed server when renaming a database to itself. --- mysql-test/r/renamedb.result | 4 ++++ mysql-test/t/renamedb.test | 8 ++++++++ sql/sql_db.cc | 6 +++--- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/renamedb.result b/mysql-test/r/renamedb.result index 26ae42e72aa..b22322fbe8d 100644 --- a/mysql-test/r/renamedb.result +++ b/mysql-test/r/renamedb.result @@ -27,3 +27,7 @@ a 2 3 drop database testdb2; +create database testdb1; +rename database testdb1 to testdb1; +ERROR HY000: Can't create database 'testdb1'; database exists +drop database testdb1; diff --git a/mysql-test/t/renamedb.test b/mysql-test/t/renamedb.test index 5cfb2ce0c12..1e71adb3bf3 100644 --- a/mysql-test/t/renamedb.test +++ b/mysql-test/t/renamedb.test @@ -16,3 +16,11 @@ select database(); show tables; select a from t1 order by a; drop database testdb2; + +# +# Bug#19392 Rename Database: Crash if case change +# +create database testdb1; +--error 1007 +rename database testdb1 to testdb1; +drop database testdb1; diff --git a/sql/sql_db.cc b/sql/sql_db.cc index 3d035359b6f..cb43bb77def 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -134,9 +134,9 @@ void lock_db_delete(const char *name, uint length) { my_dblock_t *opt; safe_mutex_assert_owner(&LOCK_lock_db); - opt= (my_dblock_t *)hash_search(&lock_db_cache, (const byte*) name, length); - DBUG_ASSERT(opt != NULL); - hash_delete(&lock_db_cache, (byte*) opt); + if (opt= (my_dblock_t *)hash_search(&lock_db_cache, + (const byte*) name, length)) + hash_delete(&lock_db_cache, (byte*) opt); } -- cgit v1.2.1 From 143151913e636a770058106af66947dc24b75161 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 18 May 2006 12:28:39 +0500 Subject: sql_db.cc: Bug#19392: Rename Database: Crash if case change Additional minor fix, to avoid compiler warnings. sql/sql_db.cc: Bug#19392: Rename Database: Crash if case change Additional minor fix, to avoid compiler warnings. --- sql/sql_db.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sql/sql_db.cc b/sql/sql_db.cc index cb43bb77def..ca34d80b225 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -134,8 +134,8 @@ void lock_db_delete(const char *name, uint length) { my_dblock_t *opt; safe_mutex_assert_owner(&LOCK_lock_db); - if (opt= (my_dblock_t *)hash_search(&lock_db_cache, - (const byte*) name, length)) + if ((opt= (my_dblock_t *)hash_search(&lock_db_cache, + (const byte*) name, length))) hash_delete(&lock_db_cache, (byte*) opt); } -- cgit v1.2.1 From 564ba97b6244bd865ae82a4939e5a3badec104eb Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 18 May 2006 21:32:24 +1000 Subject: BUG#18966 Change in stop/shutdown behaviour Now need this fix to prevent crash of ndb_mgm on invalid mgm protocol. ndb/src/mgmclient/CommandInterpreter.cpp: fix crash on invalid mgm protocol --- ndb/src/mgmclient/CommandInterpreter.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ndb/src/mgmclient/CommandInterpreter.cpp b/ndb/src/mgmclient/CommandInterpreter.cpp index 0fdb81989b3..9e1224ab3ef 100644 --- a/ndb/src/mgmclient/CommandInterpreter.cpp +++ b/ndb/src/mgmclient/CommandInterpreter.cpp @@ -429,14 +429,14 @@ emptyString(const char* s) void CommandInterpreter::printError() { - if (ndb_mgm_check_connection(m_mgmsrv)) - { - disconnect(); - } ndbout_c("* %5d: %s", ndb_mgm_get_latest_error(m_mgmsrv), ndb_mgm_get_latest_error_msg(m_mgmsrv)); ndbout_c("* %s", ndb_mgm_get_latest_error_desc(m_mgmsrv)); + if (ndb_mgm_check_connection(m_mgmsrv)) + { + disconnect(); + } } //***************************************************************************** -- cgit v1.2.1 From 5632d02c8de3af3bfcb0395a9b3a7f80120af21a Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 18 May 2006 17:10:58 +0500 Subject: Fix for bug #15558: truncate doesn't clear table on archive storage engine tables. mysql-test/r/archive.result: Fix for bug #15558: truncate doesn't clear table on archive storage engine tables. - adjusted result mysql-test/t/archive.test: Fix for bug #15558: truncate doesn't clear table on archive storage engine tables. - adjusted test sql/examples/ha_archive.cc: Fix for bug #15558: truncate doesn't clear table on archive storage engine tables. - return an error as we don't suport delete_all_rows. --- mysql-test/r/archive.result | 2 ++ mysql-test/t/archive.test | 2 ++ sql/examples/ha_archive.cc | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/archive.result b/mysql-test/r/archive.result index 246e96bf993..2626b439059 100644 --- a/mysql-test/r/archive.result +++ b/mysql-test/r/archive.result @@ -2616,6 +2616,7 @@ select count(*) from t4; count(*) 1203 DELETE FROM t2; +ERROR HY000: Table storage engine for 't2' doesn't have this option SELECT * FROM t2; auto fld1 companynr fld3 fld4 fld5 fld6 1 000001 00 Omaha teethe neat @@ -5033,6 +5034,7 @@ auto fld1 companynr fld3 fld4 fld5 fld6 3 011402 37 Romans scholastics jarring 4 011403 37 intercepted audiology tinily TRUNCATE TABLE t2; +ERROR HY000: Table storage engine for 't2' doesn't have this option SELECT * FROM t2; auto fld1 companynr fld3 fld4 fld5 fld6 1 000001 00 Omaha teethe neat diff --git a/mysql-test/t/archive.test b/mysql-test/t/archive.test index f10ff0f648e..7b3ee45de5f 100644 --- a/mysql-test/t/archive.test +++ b/mysql-test/t/archive.test @@ -1316,12 +1316,14 @@ select count(*) from t4; # # For bug #12836 # Delete was allowing all rows to be removed +--error 1031 DELETE FROM t2; SELECT * FROM t2; INSERT INTO t2 VALUES (2,011401,37,'breaking','dreaded','Steinberg','W'); INSERT INTO t2 VALUES (3,011402,37,'Romans','scholastics','jarring',''); INSERT INTO t2 VALUES (4,011403,37,'intercepted','audiology','tinily',''); SELECT * FROM t2; +--error 1031 TRUNCATE TABLE t2; SELECT * FROM t2; diff --git a/sql/examples/ha_archive.cc b/sql/examples/ha_archive.cc index ee4cad25460..55fc359348f 100644 --- a/sql/examples/ha_archive.cc +++ b/sql/examples/ha_archive.cc @@ -1010,6 +1010,6 @@ ha_rows ha_archive::records_in_range(uint inx, key_range *min_key, int ha_archive::delete_all_rows() { DBUG_ENTER("ha_archive::delete_all_rows"); - DBUG_RETURN(0); + DBUG_RETURN(HA_ERR_WRONG_COMMAND); } #endif /* HAVE_ARCHIVE_DB */ -- cgit v1.2.1 From 96ceaeb5442b864227a2590fd8857d94484e50ec Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 19 May 2006 01:26:19 +0400 Subject: WL#3244 "CSV engine: convert mmap to read/write calls" mysql-test/r/csv.result: Correct result file storage/csv/ha_tina.cc: Get rid of mmap in tina. Use usual reads/writes to access the file. storage/csv/ha_tina.h: Add Transparent_file class, which hides details of access to the file. Perform a cleanup & add new functions. --- mysql-test/r/csv.result | 4 +- storage/csv/ha_tina.cc | 463 ++++++++++++++++++++++++++++++------------------ storage/csv/ha_tina.h | 69 +++++++- 3 files changed, 357 insertions(+), 179 deletions(-) diff --git a/mysql-test/r/csv.result b/mysql-test/r/csv.result index 3adcc895474..04f0636d400 100644 --- a/mysql-test/r/csv.result +++ b/mysql-test/r/csv.result @@ -4944,10 +4944,10 @@ val UPDATE bug13894 SET val=6 WHERE val=10; SELECT * FROM bug13894; val -5 -11 6 6 +5 +11 DROP TABLE bug13894; DROP TABLE IF EXISTS bug14672; CREATE TABLE bug14672 (c1 integer) engine = CSV; diff --git a/storage/csv/ha_tina.cc b/storage/csv/ha_tina.cc index de69df90ed5..409364f59c6 100644 --- a/storage/csv/ha_tina.cc +++ b/storage/csv/ha_tina.cc @@ -61,7 +61,7 @@ TODO: /* The file extension */ #define CSV_EXT ".CSV" // The data file -#define CSN_EXT ".CSN" // Files used during repair +#define CSN_EXT ".CSN" // Files used during repair and update #define CSM_EXT ".CSM" // Meta file @@ -114,9 +114,59 @@ handlerton tina_hton= { NULL, /* Fill FILES Table */ HTON_CAN_RECREATE, NULL, /* binlog_func */ - NULL /* binlog_log_query */ + NULL, /* binlog_log_query */ + NULL /* release_temporary_latches */ }; + +off_t Transparent_file::read_next() +{ + off_t bytes_read; + + /* + No need to seek here, as the file managed by Transparent_file class + always points to upper_bound byte + */ + if ((bytes_read= my_read(filedes, buff, buff_size, MYF(0))) == MY_FILE_ERROR) + return -1; + + /* end of file */ + if (!bytes_read) + return -1; + + lower_bound= upper_bound; + upper_bound+= bytes_read; + + return lower_bound; +} + + +char Transparent_file::get_value(off_t offset) +{ + off_t bytes_read; + + /* check boundaries */ + if ((lower_bound <= offset) && (offset < upper_bound)) + return buff[offset - lower_bound]; + else + { + VOID(my_seek(filedes, offset, MY_SEEK_SET, MYF(0))); + /* read appropriate portion of the file */ + if ((bytes_read= my_read(filedes, buff, buff_size, + MYF(0))) == MY_FILE_ERROR) + return 0; + + lower_bound= offset; + upper_bound= lower_bound + bytes_read; + + /* end of file */ + if (upper_bound == offset) + return 0; + + return buff[0]; + } +} + /***************************************************************************** ** TINA tables *****************************************************************************/ @@ -130,7 +180,7 @@ int sort_set (tina_set *a, tina_set *b) We assume that intervals do not intersect. So, it is enought to compare any two points. Here we take start of intervals for comparison. */ - return ( a->begin > b->begin ? -1 : ( a->begin < b->begin ? 1 : 0 ) ); + return ( a->begin > b->begin ? 1 : ( a->begin < b->begin ? -1 : 0 ) ); } static byte* tina_get_key(TINA_SHARE *share,uint *length, @@ -140,48 +190,6 @@ static byte* tina_get_key(TINA_SHARE *share,uint *length, return (byte*) share->table_name; } -/* - Reloads the mmap file. -*/ -int get_mmap(TINA_SHARE *share, int write) -{ - DBUG_ENTER("ha_tina::get_mmap"); - if (share->mapped_file && my_munmap(share->mapped_file, - share->file_stat.st_size)) - DBUG_RETURN(1); - - if (my_fstat(share->data_file, &share->file_stat, MYF(MY_WME)) == -1) - DBUG_RETURN(1); - - if (share->file_stat.st_size) - { - if (write) - share->mapped_file= (byte *)my_mmap(NULL, share->file_stat.st_size, - PROT_READ|PROT_WRITE, MAP_SHARED, - share->data_file, 0); - else - share->mapped_file= (byte *)my_mmap(NULL, share->file_stat.st_size, - PROT_READ, MAP_PRIVATE, - share->data_file, 0); - if ((share->mapped_file == MAP_FAILED)) - { - /* - Bad idea you think? See the problem is that nothing actually checks - the return value of ::rnd_init(), so tossing an error is about - it for us. - Never going to happen right? :) - */ - my_message(errno, "Woops, blew up opening a mapped file", 0); - DBUG_ASSERT(0); - DBUG_RETURN(1); - } - } - else - share->mapped_file= NULL; - - DBUG_RETURN(0); -} - static int tina_init_func() { @@ -218,6 +226,7 @@ static TINA_SHARE *get_share(const char *table_name, TABLE *table) { TINA_SHARE *share; char meta_file_name[FN_REFLEN]; + MY_STAT file_stat; /* Stat information for the data file */ char *tmp_name; uint length; @@ -250,6 +259,8 @@ static TINA_SHARE *get_share(const char *table_name, TABLE *table) share->table_name= tmp_name; share->crashed= FALSE; share->rows_recorded= 0; + share->update_file_opened= FALSE; + share->tina_write_opened= FALSE; strmov(share->table_name, table_name); fn_format(share->data_file_name, table_name, "", CSV_EXT, MY_REPLACE_EXT|MY_UNPACK_FILENAME); @@ -277,27 +288,16 @@ static TINA_SHARE *get_share(const char *table_name, TABLE *table) */ if (read_meta_file(share->meta_file, &share->rows_recorded)) share->crashed= TRUE; - else - (void)write_meta_file(share->meta_file, share->rows_recorded, TRUE); - if ((share->data_file= my_open(share->data_file_name, O_RDWR|O_APPEND, - MYF(0))) == -1) + if (my_stat(share->data_file_name, &file_stat, MYF(MY_WME)) == NULL) goto error2; - - share->mapped_file= NULL; // We don't know the state as we just allocated it - if (get_mmap(share, 0) > 0) - goto error3; - - /* init file length value used by readers */ - share->saved_data_file_length= share->file_stat.st_size; + share->saved_data_file_length= file_stat.st_size; } share->use_count++; pthread_mutex_unlock(&tina_mutex); return share; -error3: - my_close(share->data_file,MYF(0)); error2: thr_lock_delete(&share->lock); pthread_mutex_destroy(&share->mutex); @@ -425,6 +425,30 @@ bool ha_tina::check_and_repair(THD *thd) } +int ha_tina::init_tina_writer() +{ + DBUG_ENTER("ha_tina::init_tina_writer"); + + /* + Mark the file as crashed. We will set the flag back when we close + the file. In the case of the crash it will remain marked crashed, + which enforce recovery. + */ + (void)write_meta_file(share->meta_file, share->rows_recorded, TRUE); + + if ((share->tina_write_filedes= + my_open(share->data_file_name, O_RDWR|O_APPEND, MYF(0))) == -1) + { + DBUG_PRINT("info", ("Could not open tina file writes")); + share->crashed= TRUE; + DBUG_RETURN(1); + } + share->tina_write_opened= TRUE; + + DBUG_RETURN(0); +} + + bool ha_tina::is_crashed() const { DBUG_ENTER("ha_tina::is_crashed"); @@ -445,10 +469,13 @@ static int free_share(TINA_SHARE *share) share->crashed ? TRUE :FALSE); if (my_close(share->meta_file, MYF(0))) result_code= 1; - if (share->mapped_file) - my_munmap(share->mapped_file, share->file_stat.st_size); - share->mapped_file= NULL; - result_code= my_close(share->data_file,MYF(0)); + if (share->tina_write_opened) + { + if (my_close(share->tina_write_filedes, MYF(0))) + result_code= 1; + share->tina_write_opened= FALSE; + } + hash_delete(&tina_open_tables, (byte*) share); thr_lock_delete(&share->lock); pthread_mutex_destroy(&share->mutex); @@ -468,16 +495,16 @@ int tina_end(ha_panic_function type) Finds the end of a line. Currently only supports files written on a UNIX OS. */ -byte * find_eoln(byte *data, off_t begin, off_t end) + +off_t find_eoln_buff(Transparent_file *data_buff, off_t begin, off_t end) { for (off_t x= begin; x < end; x++) - if (data[x] == '\n') - return data + x; + if (data_buff->get_value(x) == '\n') + return x; return 0; } - static handler *tina_create_handler(TABLE_SHARE *table) { return new ha_tina(table); @@ -491,7 +518,7 @@ ha_tina::ha_tina(TABLE_SHARE *table_arg) They are not probably completely right. */ current_position(0), next_position(0), local_saved_data_file_length(0), - chain_alloced(0), chain_size(DEFAULT_CHAIN_LENGTH), + file_buff(0), chain_alloced(0), chain_size(DEFAULT_CHAIN_LENGTH), records_is_known(0) { /* Set our original buffers from pre-allocated memory */ @@ -619,50 +646,50 @@ int ha_tina::chain_append() */ int ha_tina::find_current_row(byte *buf) { - byte *mapped_ptr; - byte *end_ptr; + off_t end_offset, curr_offset= current_position; DBUG_ENTER("ha_tina::find_current_row"); - mapped_ptr= (byte *)share->mapped_file + current_position; - /* We do not read further then local_saved_data_file_length in order not to conflict with undergoing concurrent insert. */ - if ((end_ptr= find_eoln(share->mapped_file, current_position, - local_saved_data_file_length)) == 0) + if ((end_offset= find_eoln_buff(file_buff, current_position, + local_saved_data_file_length)) == 0) DBUG_RETURN(HA_ERR_END_OF_FILE); for (Field **field=table->field ; *field ; field++) { buffer.length(0); - if (*mapped_ptr == '"') - mapped_ptr++; // Increment past the first quote + if (file_buff->get_value(curr_offset) == '"') + curr_offset++; // Incrementpast the first quote else DBUG_RETURN(HA_ERR_CRASHED_ON_USAGE); - for(;mapped_ptr != end_ptr; mapped_ptr++) + for(;curr_offset != end_offset; curr_offset++) { // Need to convert line feeds! - if (*mapped_ptr == '"' && - (((mapped_ptr[1] == ',') && (mapped_ptr[2] == '"')) || - (mapped_ptr == end_ptr -1 ))) + if (file_buff->get_value(curr_offset) == '"' && + (((file_buff->get_value(curr_offset + 1) == ',') && + (file_buff->get_value(curr_offset + 2) == '"')) || + (curr_offset == end_offset -1 ))) { - mapped_ptr += 2; // Move past the , and the " + curr_offset+= 2; // Move past the , and the " break; } - if (*mapped_ptr == '\\' && mapped_ptr != (end_ptr - 1)) + if (file_buff->get_value(curr_offset) == '\\' && + curr_offset != (end_offset - 1)) { - mapped_ptr++; - if (*mapped_ptr == 'r') + curr_offset++; + if (file_buff->get_value(curr_offset) == 'r') buffer.append('\r'); - else if (*mapped_ptr == 'n' ) + else if (file_buff->get_value(curr_offset) == 'n' ) buffer.append('\n'); - else if ((*mapped_ptr == '\\') || (*mapped_ptr == '"')) - buffer.append(*mapped_ptr); + else if ((file_buff->get_value(curr_offset) == '\\') || + (file_buff->get_value(curr_offset) == '"')) + buffer.append(file_buff->get_value(curr_offset)); else /* This could only happed with an externally created file */ { buffer.append('\\'); - buffer.append(*mapped_ptr); + buffer.append(file_buff->get_value(curr_offset)); } } else // ordinary symbol @@ -671,14 +698,14 @@ int ha_tina::find_current_row(byte *buf) We are at final symbol and no last quote was found => we are working with a damaged file. */ - if (mapped_ptr == end_ptr -1) + if (curr_offset == end_offset - 1) DBUG_RETURN(HA_ERR_CRASHED_ON_USAGE); - buffer.append(*mapped_ptr); + buffer.append(file_buff->get_value(curr_offset)); } } (*field)->store(buffer.ptr(), buffer.length(), system_charset_info); } - next_position= (end_ptr - share->mapped_file)+1; + next_position= end_offset + 1; /* Maybe use \N for null? */ memset(buf, 0, table->s->null_bytes); /* We do not implement nulls! */ @@ -776,7 +803,7 @@ void ha_tina::get_status() void ha_tina::update_status() { /* correct local_saved_data_file_length for writers */ - share->saved_data_file_length= share->file_stat.st_size; + share->saved_data_file_length= local_saved_data_file_length; } @@ -827,6 +854,11 @@ int ha_tina::open(const char *name, int mode, uint open_options) DBUG_RETURN(HA_ERR_CRASHED_ON_USAGE); } + if ((data_file= my_open(share->data_file_name, O_RDONLY, MYF(0))) == -1) + DBUG_RETURN(0); + + file_buff= new Transparent_file(data_file); + /* Init locking. Pass handler object to the locking routines, so that they could save/update local_saved_data_file_length value @@ -845,12 +877,14 @@ int ha_tina::open(const char *name, int mode, uint open_options) /* Close a database file. We remove ourselves from the shared strucutre. - If it is empty we destroy it and free the mapped file. + If it is empty we destroy it. */ int ha_tina::close(void) { + int rc= 0; DBUG_ENTER("ha_tina::close"); - DBUG_RETURN(free_share(share)); + rc= my_close(data_file, MYF(0)); + DBUG_RETURN(free_share(share) || rc); } /* @@ -873,22 +907,17 @@ int ha_tina::write_row(byte * buf) size= encode_quote(buf); - if (my_write(share->data_file, (byte*)buffer.ptr(), size, - MYF(MY_WME | MY_NABP))) - DBUG_RETURN(-1); + if (!share->tina_write_opened) + if (init_tina_writer()) + DBUG_RETURN(-1); - /* - Ok, this is means that we will be doing potentially bad things - during a bulk insert on some OS'es. What we need is a cleanup - call for ::write_row that would let us fix up everything after the bulk - insert. The archive handler does this with an extra mutx call, which - might be a solution for this. - */ - if (get_mmap(share, 0) > 0) + /* use pwrite, as concurrent reader could have changed the position */ + if (my_write(share->tina_write_filedes, buffer.ptr(), size, + MYF(MY_WME | MY_NABP))) DBUG_RETURN(-1); /* update local copy of the max position to see our own changes */ - local_saved_data_file_length= share->file_stat.st_size; + local_saved_data_file_length+= size; /* update shared info */ pthread_mutex_lock(&share->mutex); @@ -903,6 +932,23 @@ int ha_tina::write_row(byte * buf) } +int ha_tina::open_update_temp_file_if_needed() +{ + char updated_fname[FN_REFLEN]; + + if (!share->update_file_opened) + { + if ((update_temp_file= + my_create(fn_format(updated_fname, share->table_name, + "", CSN_EXT, + MY_REPLACE_EXT | MY_UNPACK_FILENAME), + 0, O_RDWR | O_TRUNC, MYF(MY_WME))) < 0) + return 1; + share->update_file_opened= TRUE; + } + return 0; +} + /* This is called for an update. Make sure you put in code to increment the auto increment, also @@ -926,16 +972,16 @@ int ha_tina::update_row(const byte * old_data, byte * new_data) if (chain_append()) DBUG_RETURN(-1); - if (my_write(share->data_file, (byte*)buffer.ptr(), size, + if (open_update_temp_file_if_needed()) + DBUG_RETURN(-1); + + if (my_write(update_temp_file, (byte*)buffer.ptr(), size, MYF(MY_WME | MY_NABP))) DBUG_RETURN(-1); /* UPDATE should never happen on the log tables */ DBUG_ASSERT(!share->is_log_table); - /* update local copy of the max position to see our own changes */ - local_saved_data_file_length= share->file_stat.st_size; - DBUG_RETURN(0); } @@ -1001,6 +1047,8 @@ int ha_tina::rnd_init(bool scan) { DBUG_ENTER("ha_tina::rnd_init"); + /* set buffer to the beginning of the file */ + file_buff->init_buff(data_file); if (share->crashed) DBUG_RETURN(HA_ERR_CRASHED_ON_USAGE); @@ -1008,11 +1056,6 @@ int ha_tina::rnd_init(bool scan) records= 0; records_is_known= 0; chain_ptr= chain; -#ifdef HAVE_MADVISE - if (scan) - (void) madvise(share->mapped_file, share->file_stat.st_size, - MADV_SEQUENTIAL); -#endif DBUG_RETURN(0); } @@ -1042,8 +1085,11 @@ int ha_tina::rnd_next(byte *buf) ha_statistic_increment(&SSV::ha_read_rnd_next_count); current_position= next_position; - if (!share->mapped_file) + + /* don't scan an empty file */ + if (!local_saved_data_file_length) DBUG_RETURN(HA_ERR_END_OF_FILE); + if ((rc= find_current_row(buf))) DBUG_RETURN(rc); @@ -1112,6 +1158,22 @@ int ha_tina::extra(enum ha_extra_function operation) DBUG_RETURN(0); } +/* + Set end_pos to the last valid byte of continuous area, closest + to the given "hole", stored in the buffer. "Valid" here means, + not listed in the chain of deleted records ("holes"). +*/ +bool ha_tina::get_write_pos(off_t *end_pos, tina_set *closest_hole) +{ + if (closest_hole == chain_ptr) /* no more chains */ + *end_pos= file_buff->end(); + else + *end_pos= min(file_buff->end(), + closest_hole->begin); + return (closest_hole != chain_ptr) && (*end_pos == closest_hole->begin); +} + + /* Called after each table scan. In particular after deletes, and updates. In the last case we employ chain of deleted @@ -1120,53 +1182,99 @@ int ha_tina::extra(enum ha_extra_function operation) */ int ha_tina::rnd_end() { + char updated_fname[FN_REFLEN]; + off_t file_buffer_start= 0; DBUG_ENTER("ha_tina::rnd_end"); records_is_known= 1; - /* First position will be truncate position, second will be increment */ if ((chain_ptr - chain) > 0) { - tina_set *ptr; - size_t length; + tina_set *ptr= chain; /* - Setting up writable map, this will contain all of the data after the - get_mmap call that we have added to the file. + Re-read the beginning of a file (as the buffer should point to the + end of file after the scan). */ - if (get_mmap(share, 1) > 0) - DBUG_RETURN(-1); - length= share->file_stat.st_size; + file_buff->init_buff(data_file); /* - The sort handles updates/deletes with random orders. - It also sorts so that we move the final blocks to the - beginning so that we move the smallest amount of data possible. + The sort is needed when there were updates/deletes with random orders. + It sorts so that we move the firts blocks to the beginning. */ qsort(chain, (size_t)(chain_ptr - chain), sizeof(tina_set), (qsort_cmp)sort_set); - for (ptr= chain; ptr < chain_ptr; ptr++) + + off_t write_begin= 0, write_end; + + /* create the file to write updated table if it wasn't yet created */ + if (open_update_temp_file_if_needed()) + DBUG_RETURN(-1); + + /* write the file with updated info */ + while ((file_buffer_start != -1)) // while not end of file { - memmove(share->mapped_file + ptr->begin, share->mapped_file + ptr->end, - length - (size_t)ptr->end); - length= length - (size_t)(ptr->end - ptr->begin); + bool in_hole= get_write_pos(&write_end, ptr); + + /* if there is something to write, write it */ + if ((write_end - write_begin) && + (my_write(update_temp_file, + file_buff->ptr() + (write_begin - file_buff->start()), + write_end - write_begin, MYF_RW))) + goto error; + + if (in_hole) + { + /* skip hole */ + while (file_buff->end() <= ptr->end && file_buffer_start != -1) + file_buffer_start= file_buff->read_next(); + write_begin= ptr->end; + ptr++; + } + else + write_begin= write_end; + + if (write_end == file_buff->end()) + file_buffer_start= file_buff->read_next(); /* shift the buffer */ + } - /* Unmap the file before the new size is set */ - if (my_munmap(share->mapped_file, share->file_stat.st_size)) + if (my_close(update_temp_file, MYF(0))) DBUG_RETURN(-1); - /* We set it to null so that get_mmap() won't try to unmap it */ - share->mapped_file= NULL; + share->update_file_opened= FALSE; - /* Set the file to the new size */ - if (my_chsize(share->data_file, length, 0, MYF(MY_WME))) + if (share->tina_write_opened) + { + if (my_close(share->tina_write_filedes, MYF(0))) + DBUG_RETURN(-1); + /* + Mark that the writer fd is closed, so that init_tina_writer() + will reopen it later. + */ + share->tina_write_opened= FALSE; + } + + /* + Close opened fildes's. Then move updated file in place + of the old datafile. + */ + if (my_close(data_file, MYF(0)) || + my_rename(fn_format(updated_fname, share->table_name, "", CSN_EXT, + MY_REPLACE_EXT | MY_UNPACK_FILENAME), + share->data_file_name, MYF(0))) DBUG_RETURN(-1); - if (get_mmap(share, 0) > 0) + /* Open the file again and sync it */ + if (((data_file= my_open(share->data_file_name, O_RDONLY, MYF(0))) == -1) + || my_sync(data_file, MYF(MY_WME))) DBUG_RETURN(-1); } DBUG_RETURN(0); +error: + my_close(update_temp_file, MYF(0)); + share->update_file_opened= FALSE; + DBUG_RETURN(-1); } @@ -1195,10 +1303,11 @@ int ha_tina::repair(THD* thd, HA_CHECK_OPT* check_opt) File repair_file; int rc; ha_rows rows_repaired= 0; + off_t write_begin= 0, write_end; DBUG_ENTER("ha_tina::repair"); /* empty file */ - if (!share->mapped_file) + if (!share->saved_data_file_length) { share->rows_recorded= 0; goto end; @@ -1207,12 +1316,15 @@ int ha_tina::repair(THD* thd, HA_CHECK_OPT* check_opt) if (!(buf= (byte*) my_malloc(table->s->reclength, MYF(MY_WME)))) DBUG_RETURN(HA_ERR_OUT_OF_MEM); + /* position buffer to the start of the file */ + file_buff->init_buff(data_file); + /* Local_saved_data_file_length is initialized during the lock phase. Sometimes this is not getting executed before ::repair (e.g. for the log tables). We set it manually here. */ - local_saved_data_file_length= share->file_stat.st_size; + local_saved_data_file_length= share->saved_data_file_length; /* set current position to the beginning of the file */ current_position= next_position= 0; @@ -1227,11 +1339,10 @@ int ha_tina::repair(THD* thd, HA_CHECK_OPT* check_opt) if (rc == HA_ERR_END_OF_FILE) { - /* All rows were read ok until end of file, the file does not need repair. */ - /* - If rows_recorded != rows_repaired, we should update - rows_recorded value to the current amount of rows. + All rows were read ok until end of file, the file does not need repair. + If rows_recorded != rows_repaired, we should update rows_recorded value + to the current amount of rows. */ share->rows_recorded= rows_repaired; goto end; @@ -1247,36 +1358,45 @@ int ha_tina::repair(THD* thd, HA_CHECK_OPT* check_opt) 0, O_RDWR | O_TRUNC,MYF(MY_WME))) < 0) DBUG_RETURN(HA_ERR_CRASHED_ON_REPAIR); - if (my_write(repair_file, (byte*)share->mapped_file, current_position, - MYF(MY_NABP))) - DBUG_RETURN(HA_ERR_CRASHED_ON_USAGE); - my_close(repair_file, MYF(0)); + file_buff->init_buff(data_file); + + /* we just truncated the file up to the first bad row. update rows count. */ share->rows_recorded= rows_repaired; - if (my_munmap(share->mapped_file, share->file_stat.st_size)) - DBUG_RETURN(-1); - /* We set it to null so that get_mmap() won't try to unmap it */ - share->mapped_file= NULL; + /* write repaired file */ + while (1) + { + write_end= min(file_buff->end(), current_position); + if ((write_end - write_begin) && + (my_write(repair_file, file_buff->ptr(), + write_end - write_begin, MYF_RW))) + DBUG_RETURN(-1); + + write_begin= write_end; + if (write_end== current_position) + break; + else + file_buff->read_next(); /* shift the buffer */ + } /* - Close the "to"-file before renaming - On Windows one cannot rename a file, which descriptor - is still open. EACCES will be returned when trying to delete - the "to"-file in my_rename() + Close the files and rename repaired file to the datafile. + We have to close the files, as on Windows one cannot rename + a file, which descriptor is still open. EACCES will be returned + when trying to delete the "to"-file in my_rename(). */ - my_close(share->data_file,MYF(0)); - - if (my_rename(repaired_fname, share->data_file_name, MYF(0))) + if (my_close(data_file,MYF(0)) || my_close(repair_file, MYF(0)) || + my_rename(repaired_fname, share->data_file_name, MYF(0))) DBUG_RETURN(-1); /* Open the file again, it should now be repaired */ - if ((share->data_file= my_open(share->data_file_name, O_RDWR|O_APPEND, - MYF(0))) == -1) + if ((data_file= my_open(share->data_file_name, O_RDWR|O_APPEND, + MYF(0))) == -1) DBUG_RETURN(-1); - if (get_mmap(share, 0) > 0) - DBUG_RETURN(-1); + /* Set new file size. The file size will be updated by ::update_status() */ + local_saved_data_file_length= (size_t) current_position; end: share->crashed= FALSE; @@ -1295,17 +1415,12 @@ int ha_tina::delete_all_rows() if (!records_is_known) DBUG_RETURN(my_errno=HA_ERR_WRONG_COMMAND); - /* Unmap the file before the new size is set */ - if (share->mapped_file && my_munmap(share->mapped_file, - share->file_stat.st_size)) - DBUG_RETURN(-1); - share->mapped_file= NULL; + if (!share->tina_write_opened) + if (init_tina_writer()) + DBUG_RETURN(-1); /* Truncate the file to zero size */ - rc= my_chsize(share->data_file, 0, 0, MYF(MY_WME)); - - if (get_mmap(share, 0) > 0) - DBUG_RETURN(-1); + rc= my_chsize(share->tina_write_filedes, 0, 0, MYF(MY_WME)); records=0; DBUG_RETURN(rc); @@ -1367,12 +1482,15 @@ int ha_tina::check(THD* thd, HA_CHECK_OPT* check_opt) if (!(buf= (byte*) my_malloc(table->s->reclength, MYF(MY_WME)))) DBUG_RETURN(HA_ERR_OUT_OF_MEM); + /* position buffer to the start of the file */ + file_buff->init_buff(data_file); + /* Local_saved_data_file_length is initialized during the lock phase. Check does not use store_lock in certain cases. So, we set it manually here. */ - local_saved_data_file_length= share->file_stat.st_size; + local_saved_data_file_length= share->saved_data_file_length; /* set current position to the beginning of the file */ current_position= next_position= 0; /* Read the file row-by-row. If everything is ok, repair is not needed. */ @@ -1412,6 +1530,7 @@ mysql_declare_plugin(csv) tina_init_func, /* Plugin Init */ tina_done_func, /* Plugin Deinit */ 0x0100 /* 1.0 */, + 0 } mysql_declare_plugin_end; diff --git a/storage/csv/ha_tina.h b/storage/csv/ha_tina.h index d155a614780..eb30f150bbe 100644 --- a/storage/csv/ha_tina.h +++ b/storage/csv/ha_tina.h @@ -19,6 +19,7 @@ #include #define DEFAULT_CHAIN_LENGTH 512 +#define DEFAULT_FILE_WINDOW_SIZE 4096 /* Version for file format. 1 - Initial Version. That is, the version when the metafile was introduced. @@ -29,15 +30,12 @@ typedef struct st_tina_share { char *table_name; char data_file_name[FN_REFLEN]; - byte *mapped_file; /* mapped region of file */ uint table_name_length, use_count; /* Below flag is needed to make log tables work with concurrent insert. For more details see comment to ha_tina::update_status. */ my_bool is_log_table; - MY_STAT file_stat; /* Stat information for the data file */ - File data_file; /* Current open data file */ /* Here we save the length of the file for readers. This is updated by inserts, updates and deletes. The var is initialized along with the @@ -46,7 +44,10 @@ typedef struct st_tina_share { off_t saved_data_file_length; pthread_mutex_t mutex; THR_LOCK lock; + bool update_file_opened; + bool tina_write_opened; File meta_file; /* Meta file we use */ + File tina_write_filedes; /* File handler for readers */ bool crashed; /* Meta file is crashed */ ha_rows rows_recorded; /* Number of rows in tables */ } TINA_SHARE; @@ -56,6 +57,54 @@ struct tina_set { off_t end; }; +class Transparent_file +{ + File filedes; + byte *buff; /* in-memory window to the file or mmaped area */ + /* current window sizes */ + off_t lower_bound; + off_t upper_bound; + uint buff_size; + + public: + + Transparent_file(File filedes_arg) : lower_bound(0), + buff_size(DEFAULT_FILE_WINDOW_SIZE) + { + buff= (byte *) my_malloc(buff_size*sizeof(byte), MYF(MY_WME)); + /* read the beginning of the file */ + init_buff(filedes_arg); + } + + ~Transparent_file() + { my_free(buff, MYF(MY_ALLOW_ZERO_PTR)); } + + void init_buff(File filedes_arg) + { + filedes= filedes_arg; + /* read the beginning of the file */ + lower_bound= 0; + VOID(my_seek(filedes, 0, MY_SEEK_SET, MYF(0))); + if (filedes && buff) + upper_bound= my_read(filedes, buff, buff_size, MYF(0)); + } + + byte *ptr() + { return buff; } + + off_t start() + { return lower_bound; } + + off_t end() + { return upper_bound; } + + /* get a char from the given position in the file */ + char get_value (off_t offset); + /* shift a buffer windows to see the next part of the file */ + off_t read_next(); + +}; + class ha_tina: public handler { THR_LOCK_DATA lock; /* MySQL lock */ @@ -64,6 +113,9 @@ class ha_tina: public handler off_t next_position; /* Next position in the file scan */ off_t local_saved_data_file_length; /* save position for reads */ byte byte_buffer[IO_SIZE]; + Transparent_file *file_buff; + File data_file; /* File handler for readers */ + File update_temp_file; String buffer; /* The chain contains "holes" in the file, occured because of @@ -77,12 +129,19 @@ class ha_tina: public handler uint32 chain_size; bool records_is_known; +private: + bool get_write_pos(off_t *end_pos, tina_set *closest_hole); + int open_update_temp_file_if_needed(); + int init_tina_writer(); + public: ha_tina(TABLE_SHARE *table_arg); - ~ha_tina() + ~ha_tina() { if (chain_alloced) - my_free((gptr)chain,0); + my_free((gptr)chain, 0); + if (file_buff) + delete file_buff; } const char *table_type() const { return "CSV"; } const char *index_type(uint inx) { return "NONE"; } -- cgit v1.2.1 From 2b546d8ccc44558caeea20b1714b9bae100c4506 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 20 May 2006 02:41:30 +0400 Subject: WL#3244 "CSV engine: convert mmap to read/write calls" post-review fixes storage/csv/ha_tina.cc: post-review fixes storage/csv/ha_tina.h: post-review fixes --- storage/csv/ha_tina.cc | 12 ++++++++---- storage/csv/ha_tina.h | 10 ++-------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/storage/csv/ha_tina.cc b/storage/csv/ha_tina.cc index 409364f59c6..eaabea2454d 100644 --- a/storage/csv/ha_tina.cc +++ b/storage/csv/ha_tina.cc @@ -282,8 +282,7 @@ static TINA_SHARE *get_share(const char *table_name, TABLE *table) share->crashed= TRUE; /* - After we read, we set the file to dirty. When we close, we will do the - opposite. If the meta file will not open we assume it is crashed and + If the meta file will not open we assume it is crashed and mark it as such. */ if (read_meta_file(share->meta_file, &share->rows_recorded)) @@ -524,6 +523,7 @@ ha_tina::ha_tina(TABLE_SHARE *table_arg) /* Set our original buffers from pre-allocated memory */ buffer.set((char*)byte_buffer, IO_SIZE, system_charset_info); chain= chain_buffer; + file_buff= new Transparent_file(); } @@ -857,8 +857,6 @@ int ha_tina::open(const char *name, int mode, uint open_options) if ((data_file= my_open(share->data_file_name, O_RDONLY, MYF(0))) == -1) DBUG_RETURN(0); - file_buff= new Transparent_file(data_file); - /* Init locking. Pass handler object to the locking routines, so that they could save/update local_saved_data_file_length value @@ -1268,6 +1266,12 @@ int ha_tina::rnd_end() if (((data_file= my_open(share->data_file_name, O_RDONLY, MYF(0))) == -1) || my_sync(data_file, MYF(MY_WME))) DBUG_RETURN(-1); + /* + The datafile is consistent at this point and the write filedes is + closed, so nothing worrying will happen to it in case of a crash. + Here we record this fact to the meta-file. + */ + (void)write_meta_file(share->meta_file, share->rows_recorded, FALSE); } DBUG_RETURN(0); diff --git a/storage/csv/ha_tina.h b/storage/csv/ha_tina.h index eb30f150bbe..df5e4143a5c 100644 --- a/storage/csv/ha_tina.h +++ b/storage/csv/ha_tina.h @@ -19,7 +19,6 @@ #include #define DEFAULT_CHAIN_LENGTH 512 -#define DEFAULT_FILE_WINDOW_SIZE 4096 /* Version for file format. 1 - Initial Version. That is, the version when the metafile was introduced. @@ -68,13 +67,8 @@ class Transparent_file public: - Transparent_file(File filedes_arg) : lower_bound(0), - buff_size(DEFAULT_FILE_WINDOW_SIZE) - { - buff= (byte *) my_malloc(buff_size*sizeof(byte), MYF(MY_WME)); - /* read the beginning of the file */ - init_buff(filedes_arg); - } + Transparent_file() : lower_bound(0), buff_size(IO_SIZE) + { buff= (byte *) my_malloc(buff_size*sizeof(byte), MYF(MY_WME)); } ~Transparent_file() { my_free(buff, MYF(MY_ALLOW_ZERO_PTR)); } -- cgit v1.2.1 From 345cd57a34886518530749262bc0e3c529253148 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 22 May 2006 10:08:13 +0930 Subject: rpl_auto_increment_11932.result, rpl_auto_increment_11932.test: Update with correct table and database names. mysql-test/t/rpl_auto_increment_11932.test: Update with correct table and database names. mysql-test/r/rpl_auto_increment_11932.result: Update with correct table and database names. --- mysql-test/r/rpl_auto_increment_11932.result | 32 ++++++++++++------------- mysql-test/t/rpl_auto_increment_11932.test | 36 +++++++++++++++------------- 2 files changed, 35 insertions(+), 33 deletions(-) diff --git a/mysql-test/r/rpl_auto_increment_11932.result b/mysql-test/r/rpl_auto_increment_11932.result index 753e9e9f223..d3bf052f0c9 100644 --- a/mysql-test/r/rpl_auto_increment_11932.result +++ b/mysql-test/r/rpl_auto_increment_11932.result @@ -4,43 +4,43 @@ reset master; reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; -drop database if exists t1; -create database t1; -use t1; -CREATE TABLE `t` ( +drop database if exists test1; +create database test1; +use test1; +CREATE TABLE `t1` ( `id` int(10) unsigned NOT NULL auto_increment, `fname` varchar(100) default NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; -INSERT INTO `t` VALUES (1, 'blablabla'); -CREATE TABLE `test3` ( +INSERT INTO `t1` VALUES (1, 'blablabla'); +CREATE TABLE `t2` ( `id` int(10) NOT NULL auto_increment, `comment` varchar(255) NOT NULL default '', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=3 ; -INSERT INTO `test3` VALUES (1, 'testtest 1'); -INSERT INTO `test3` VALUES (2, 'test 2'); +INSERT INTO `t2` VALUES (1, 'testtest 1'); +INSERT INTO `t2` VALUES (2, 'test 2'); CREATE PROCEDURE simpleproc3 () NOT DETERMINISTIC BEGIN -INSERT INTO t (fname) (SELECT test3.comment FROM test3 WHERE test3.id = '1'); -INSERT INTO t (fname) VALUES('test'); +INSERT INTO t1 (fname) (SELECT t2.comment FROM t2 WHERE t2.id = '1'); +INSERT INTO t1 (fname) VALUES('test'); END $ CALL simpleproc3(); -select * from test3; +select * from t2; id comment 1 testtest 1 2 test 2 -TRUNCATE TABLE `t`; +TRUNCATE TABLE `t1`; CALL simpleproc3(); -select * from t; +select * from t1; id fname 1 testtest 1 2 test -use t1; -select * from t; +use test1; +select * from t1; id fname 1 testtest 1 2 test -drop database t1; +drop database test1; diff --git a/mysql-test/t/rpl_auto_increment_11932.test b/mysql-test/t/rpl_auto_increment_11932.test index db9a11277ac..057b0c0911b 100644 --- a/mysql-test/t/rpl_auto_increment_11932.test +++ b/mysql-test/t/rpl_auto_increment_11932.test @@ -2,58 +2,60 @@ # Test of auto_increment # BUG#11932 # -# Test supplied by Are Casilla +# Bug reported that master and slave get out of sync after TRUNCATE +# TABLE. # +# Test supplied by Are Casilla source include/master-slave.inc; --disable_warnings connection master; -drop database if exists t1; +drop database if exists test1; --enable_warnings -create database t1; -use t1; +create database test1; +use test1; -CREATE TABLE `t` ( +CREATE TABLE `t1` ( `id` int(10) unsigned NOT NULL auto_increment, `fname` varchar(100) default NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; -INSERT INTO `t` VALUES (1, 'blablabla'); +INSERT INTO `t1` VALUES (1, 'blablabla'); -CREATE TABLE `test3` ( +CREATE TABLE `t2` ( `id` int(10) NOT NULL auto_increment, `comment` varchar(255) NOT NULL default '', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=3 ; -INSERT INTO `test3` VALUES (1, 'testtest 1'); -INSERT INTO `test3` VALUES (2, 'test 2'); +INSERT INTO `t2` VALUES (1, 'testtest 1'); +INSERT INTO `t2` VALUES (2, 'test 2'); DELIMITER $; CREATE PROCEDURE simpleproc3 () NOT DETERMINISTIC BEGIN - INSERT INTO t (fname) (SELECT test3.comment FROM test3 WHERE test3.id = '1'); - INSERT INTO t (fname) VALUES('test'); + INSERT INTO t1 (fname) (SELECT t2.comment FROM t2 WHERE t2.id = '1'); + INSERT INTO t1 (fname) VALUES('test'); END $ DELIMITER ;$ CALL simpleproc3(); -select * from test3; +select * from t2; -TRUNCATE TABLE `t`; +TRUNCATE TABLE `t1`; CALL simpleproc3(); -select * from t; +select * from t1; save_master_pos; connection slave; sync_with_master; -use t1; -select * from t; +use test1; +select * from t1; -drop database t1; +drop database test1; -- cgit v1.2.1 From 6d3f0f8c2f11db22fe65d1c9599a3f6ee1166e65 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 22 May 2006 12:18:18 +0930 Subject: rpl_auto_increment_11932.test, rpl_auto_increment_11932.result: Drop test1 table in master as well. mysql-test/r/rpl_auto_increment_11932.result: Drop test1 table in master as well. mysql-test/t/rpl_auto_increment_11932.test: Drop test1 table in master as well. --- mysql-test/r/rpl_auto_increment_11932.result | 1 + mysql-test/t/rpl_auto_increment_11932.test | 2 ++ 2 files changed, 3 insertions(+) diff --git a/mysql-test/r/rpl_auto_increment_11932.result b/mysql-test/r/rpl_auto_increment_11932.result index d3bf052f0c9..25eda6ee454 100644 --- a/mysql-test/r/rpl_auto_increment_11932.result +++ b/mysql-test/r/rpl_auto_increment_11932.result @@ -44,3 +44,4 @@ id fname 1 testtest 1 2 test drop database test1; +drop database test1; diff --git a/mysql-test/t/rpl_auto_increment_11932.test b/mysql-test/t/rpl_auto_increment_11932.test index 057b0c0911b..d4b7872fb2b 100644 --- a/mysql-test/t/rpl_auto_increment_11932.test +++ b/mysql-test/t/rpl_auto_increment_11932.test @@ -59,3 +59,5 @@ use test1; select * from t1; drop database test1; +connection master; +drop database test1; -- cgit v1.2.1 From e94ce460dbf17817d85f38cd2ecaf8e721a75d07 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 23 May 2006 14:45:56 +1000 Subject: BUG#20016 error in mgm protocol parser error message incorrect fix display of mgm protocol parser error in mgmapi ndb/src/mgmapi/mgmapi.cpp: fix display of mgm protocol parser error. --- ndb/src/mgmapi/mgmapi.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ndb/src/mgmapi/mgmapi.cpp b/ndb/src/mgmapi/mgmapi.cpp index 061360428af..b6c68962e4b 100644 --- a/ndb/src/mgmapi/mgmapi.cpp +++ b/ndb/src/mgmapi/mgmapi.cpp @@ -361,8 +361,9 @@ ndb_mgm_call(NdbMgmHandle handle, const ParserRow *command_reply, * Print some info about why the parser returns NULL */ fprintf(handle->errstream, - "Error in mgm protocol parser. cmd: >%s< status: %d curr: %d\n", - cmd, (Uint32)ctx.m_status, ctx.m_currentToken); + "Error in mgm protocol parser. cmd: >%s< status: %d curr: %s\n", + cmd, (Uint32)ctx.m_status, + (ctx.m_currentToken)?ctx.m_currentToken:"NULL"); DBUG_PRINT("info",("ctx.status: %d, ctx.m_currentToken: %s", ctx.m_status, ctx.m_currentToken)); } -- cgit v1.2.1 From 466b548f15f28db0840cc9ad91f2c52a3b6f721f Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 23 May 2006 14:51:04 +1000 Subject: BUG#19932 mgmapi crash if disconnect in ndb_mgm_get_status correctly detect and report errors in talking to mgm server and memory allocation ndb/src/mgmapi/mgmapi.cpp: correctly detect and return errors in ndb_mgm_get_status --- ndb/src/mgmapi/mgmapi.cpp | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/ndb/src/mgmapi/mgmapi.cpp b/ndb/src/mgmapi/mgmapi.cpp index 061360428af..70c492be8b1 100644 --- a/ndb/src/mgmapi/mgmapi.cpp +++ b/ndb/src/mgmapi/mgmapi.cpp @@ -678,7 +678,11 @@ ndb_mgm_get_status(NdbMgmHandle handle) out.println(""); char buf[1024]; - in.gets(buf, sizeof(buf)); + if(!in.gets(buf, sizeof(buf))) + { + SET_ERROR(handle, NDB_MGM_ILLEGAL_SERVER_REPLY, "Probably disconnected"); + return NULL; + } if(buf[strlen(buf)-1] == '\n') buf[strlen(buf)-1] = '\0'; @@ -687,7 +691,11 @@ ndb_mgm_get_status(NdbMgmHandle handle) return NULL; } - in.gets(buf, sizeof(buf)); + if(!in.gets(buf, sizeof(buf))) + { + SET_ERROR(handle, NDB_MGM_ILLEGAL_SERVER_REPLY, "Probably disconnected"); + return NULL; + } if(buf[strlen(buf)-1] == '\n') buf[strlen(buf)-1] = '\0'; @@ -710,6 +718,13 @@ ndb_mgm_get_status(NdbMgmHandle handle) malloc(sizeof(ndb_mgm_cluster_state)+ noOfNodes*(sizeof(ndb_mgm_node_state)+sizeof("000.000.000.000#"))); + if(!state) + { + SET_ERROR(handle, NDB_MGM_OUT_OF_MEMORY, + "Allocating ndb_mgm_cluster_state"); + return NULL; + } + state->no_of_nodes= noOfNodes; ndb_mgm_node_state * ptr = &state->node_states[0]; int nodeId = 0; @@ -719,7 +734,13 @@ ndb_mgm_get_status(NdbMgmHandle handle) } i = -1; ptr--; for(; i Date: Tue, 23 May 2006 16:24:26 +1000 Subject: BUG#18966 Change in stop/shutdown behaviour Improvements that were discussed with Tomas. Maintain protocol backwards/forwards compatibilty for client and server and support the commands from ndb_mgm 'as expected' ndb/include/mgmapi/mgmapi.h: Add ndb_mgm_stop3 mgmapi function. - This supports stopping all DB nodes, or all DB and MGM nodes. - It also returns to mgmapi program if it needs to disconnect to apply changes. Add ndb_mgm_restart3 mgmapi function. - Tells mgmapi program if it needs to disconnect to apply changes Add (internal) ndb_mgm_get_version - designed to be used to find out what protocol version we need to speak to the server. ndb/src/mgmapi/mgmapi.cpp: Add cache of mgmd version to ndb_mgm_handle. Only filled out in functions that need to know the version of the mgmd we're talking to. Initialize these members in create handle. added ndb_mgm_get_version which asks the mgm server what version it is. This call has been supported since the dawn of time, no compatibility issues here. Add implementation of ndb_mgm_stop3 Check what version of the protocol the server speaks, and speak it. Add compatibility for ndb_mgm_stop2 Same for ndb_mgm_restart3. ndb/src/mgmclient/CommandInterpreter.cpp: Simplify stop and restart code. Use the new ndb_mgm_(stop|restart)3 calls to find out if we need to disconnect. ndb/src/mgmsrv/MgmtSrvr.cpp: Add nice call for shutting down MGM servers (like shutdownDB) ndb/src/mgmsrv/MgmtSrvr.hpp: add prototype for shutdownMGM ndb/src/mgmsrv/Services.cpp: Add restart node v2, stop v2, stop all v2 while maintaining protocol backwards compatibility. Unfortunately we can't add result lines due to protocol errors in clients :( Neither can we add extra things to the 'result: Ok' line due to the use of strcmp instead of strncmp. ndb/src/mgmsrv/Services.hpp: Add prototypes for restart, stop and stopall v1 and v2 --- ndb/include/mgmapi/mgmapi.h | 57 +++++++++ ndb/src/mgmapi/mgmapi.cpp | 196 +++++++++++++++++++++++++++---- ndb/src/mgmclient/CommandInterpreter.cpp | 75 +++--------- ndb/src/mgmsrv/MgmtSrvr.cpp | 21 ++++ ndb/src/mgmsrv/MgmtSrvr.hpp | 2 + ndb/src/mgmsrv/Services.cpp | 81 +++++++++++-- ndb/src/mgmsrv/Services.hpp | 12 +- 7 files changed, 352 insertions(+), 92 deletions(-) diff --git a/ndb/include/mgmapi/mgmapi.h b/ndb/include/mgmapi/mgmapi.h index c6c0fdebb65..798e09f0c2b 100644 --- a/ndb/include/mgmapi/mgmapi.h +++ b/ndb/include/mgmapi/mgmapi.h @@ -694,6 +694,28 @@ extern "C" { int ndb_mgm_stop2(NdbMgmHandle handle, int no_of_nodes, const int * node_list, int abort); + /** + * Stops cluster nodes + * + * @param handle Management handle. + * @param no_of_nodes Number of database nodes to stop
+ * -1: All database and management nodes
+ * 0: All database nodes in cluster
+ * n: Stop the n node(s) specified in + * the array node_list + * @param node_list List of node IDs of database nodes to be stopped + * @param abort Don't perform graceful stop, + * but rather stop immediately + * @param disconnect Returns true if you need to disconnect to apply + * the stop command (e.g. stopping the mgm server + * that handle is connected to) + * + * @return Number of nodes stopped (-1 on error). + */ + int ndb_mgm_stop3(NdbMgmHandle handle, int no_of_nodes, + const int * node_list, int abort, int *disconnect); + + /** * Restart database nodes * @@ -733,6 +755,31 @@ extern "C" { const int * node_list, int initial, int nostart, int abort); + /** + * Restart nodes + * + * @param handle Management handle. + * @param no_of_nodes Number of database nodes to be restarted:
+ * 0: Restart all database nodes in the cluster
+ * n: Restart the n node(s) specified in the + * array node_list + * @param node_list List of node IDs of database nodes to be restarted + * @param initial Remove filesystem from restarting node(s) + * @param nostart Don't actually start node(s) but leave them + * waiting for start command + * @param abort Don't perform graceful restart, + * but rather restart immediately + * @param disconnect Returns true if mgmapi client must disconnect from + * server to apply the requested operation. (e.g. + * restart the management server) + * + * + * @return Number of nodes stopped (-1 on error). + */ + int ndb_mgm_restart3(NdbMgmHandle handle, int no_of_nodes, + const int * node_list, int initial, + int nostart, int abort, int *disconnect); + /** * Start database nodes * @@ -1023,6 +1070,16 @@ extern "C" { */ Uint32 ndb_mgm_get_mgmd_nodeid(NdbMgmHandle handle); + /** + * Get the version of the mgm server we're talking to. + * Designed to allow switching of protocol depending on version + * so that new clients can speak to old servers in a compat mode + */ + int ndb_mgm_get_version(NdbMgmHandle handle, + int *major, int *minor, int* build, + int len, char* str); + + /** * Config iterator */ diff --git a/ndb/src/mgmapi/mgmapi.cpp b/ndb/src/mgmapi/mgmapi.cpp index b02367a8870..3109cea7782 100644 --- a/ndb/src/mgmapi/mgmapi.cpp +++ b/ndb/src/mgmapi/mgmapi.cpp @@ -27,6 +27,7 @@ #include #include "mgmapi_configuration.hpp" #include +#include #include #include @@ -103,6 +104,9 @@ struct ndb_mgm_handle { #endif FILE *errstream; char *m_name; + int mgmd_version_major; + int mgmd_version_minor; + int mgmd_version_build; }; #define SET_ERROR(h, e, s) setError(h, e, __LINE__, s) @@ -168,6 +172,10 @@ ndb_mgm_create_handle() h->logfile = 0; #endif + h->mgmd_version_major= -1; + h->mgmd_version_minor= -1; + h->mgmd_version_build= -1; + DBUG_PRINT("info", ("handle=0x%x", (UintPtr)h)); DBUG_RETURN(h); } @@ -826,37 +834,75 @@ ndb_mgm_stop(NdbMgmHandle handle, int no_of_nodes, const int * node_list) return ndb_mgm_stop2(handle, no_of_nodes, node_list, 0); } - extern "C" -int +int ndb_mgm_stop2(NdbMgmHandle handle, int no_of_nodes, const int * node_list, int abort) { - SET_ERROR(handle, NDB_MGM_NO_ERROR, "Executing: ndb_mgm_stop2"); - const ParserRow stop_reply[] = { + int disconnect; + return ndb_mgm_stop3(handle, no_of_nodes, node_list, abort, &disconnect); +} + + +extern "C" +int +ndb_mgm_stop3(NdbMgmHandle handle, int no_of_nodes, const int * node_list, + int abort, int *disconnect) +{ + SET_ERROR(handle, NDB_MGM_NO_ERROR, "Executing: ndb_mgm_stop3"); + const ParserRow stop_reply_v1[] = { + MGM_CMD("stop reply", NULL, ""), + MGM_ARG("stopped", Int, Optional, "No of stopped nodes"), + MGM_ARG("result", String, Mandatory, "Error message"), + MGM_END() + }; + const ParserRow stop_reply_v2[] = { MGM_CMD("stop reply", NULL, ""), MGM_ARG("stopped", Int, Optional, "No of stopped nodes"), MGM_ARG("result", String, Mandatory, "Error message"), + MGM_ARG("disconnect", Int, Mandatory, "Need to disconnect"), MGM_END() }; + CHECK_HANDLE(handle, -1); CHECK_CONNECTED(handle, -1); - if(no_of_nodes < 0){ + if(handle->mgmd_version_build==-1) + { + char verstr[50]; + ndb_mgm_get_version(handle, + &(handle->mgmd_version_major), + &(handle->mgmd_version_minor), + &(handle->mgmd_version_build), + sizeof(verstr), + verstr); + } + int use_v2= (handle->mgmd_version_major==5) + && ( + (handle->mgmd_version_minor==0 && handle->mgmd_version_build>=21) + ||(handle->mgmd_version_minor==1 && handle->mgmd_version_build>=12) + ); + + if(no_of_nodes < -1){ SET_ERROR(handle, NDB_MGM_ILLEGAL_NUMBER_OF_NODES, "Negative number of nodes requested to stop"); return -1; } Uint32 stoppedNoOfNodes = 0; - if(no_of_nodes == 0){ + if(no_of_nodes <= 0){ /** - * All database nodes should be stopped + * All nodes should be stopped (all or just db) */ Properties args; args.put("abort", abort); + if(use_v2) + args.put("stop", (no_of_nodes==-1)?"mgm,db":"db"); const Properties *reply; - reply = ndb_mgm_call(handle, stop_reply, "stop all", &args); + if(use_v2) + reply = ndb_mgm_call(handle, stop_reply_v2, "stop all v2", &args); + else + reply = ndb_mgm_call(handle, stop_reply_v1, "stop all", &args); CHECK_REPLY(reply, -1); if(!reply->get("stopped", &stoppedNoOfNodes)){ @@ -865,6 +911,10 @@ ndb_mgm_stop2(NdbMgmHandle handle, int no_of_nodes, const int * node_list, delete reply; return -1; } + if(use_v2) + reply->get("disconnect", (Uint32*)disconnect); + else + *disconnect= 0; BaseString result; reply->get("result", result); if(strcmp(result.c_str(), "Ok") != 0) { @@ -890,7 +940,11 @@ ndb_mgm_stop2(NdbMgmHandle handle, int no_of_nodes, const int * node_list, args.put("abort", abort); const Properties *reply; - reply = ndb_mgm_call(handle, stop_reply, "stop", &args); + if(use_v2) + reply = ndb_mgm_call(handle, stop_reply_v2, "stop v2", &args); + else + reply = ndb_mgm_call(handle, stop_reply_v1, "stop", &args); + CHECK_REPLY(reply, stoppedNoOfNodes); if(!reply->get("stopped", &stoppedNoOfNodes)){ SET_ERROR(handle, NDB_MGM_STOP_FAILED, @@ -898,6 +952,10 @@ ndb_mgm_stop2(NdbMgmHandle handle, int no_of_nodes, const int * node_list, delete reply; return -1; } + if(use_v2) + reply->get("disconnect", (Uint32*)disconnect); + else + *disconnect= 0; BaseString result; reply->get("result", result); if(strcmp(result.c_str(), "Ok") != 0) { @@ -909,22 +967,65 @@ ndb_mgm_stop2(NdbMgmHandle handle, int no_of_nodes, const int * node_list, return stoppedNoOfNodes; } +extern "C" +int +ndb_mgm_restart(NdbMgmHandle handle, int no_of_nodes, const int *node_list) +{ + SET_ERROR(handle, NDB_MGM_NO_ERROR, "Executing: ndb_mgm_restart"); + return ndb_mgm_restart2(handle, no_of_nodes, node_list, 0, 0, 0); +} + extern "C" int ndb_mgm_restart2(NdbMgmHandle handle, int no_of_nodes, const int * node_list, int initial, int nostart, int abort) { - SET_ERROR(handle, NDB_MGM_NO_ERROR, "Executing: ndb_mgm_restart2"); + int disconnect; + + return ndb_mgm_restart3(handle, no_of_nodes, node_list, initial, nostart, + abort, &disconnect); +} + +extern "C" +int +ndb_mgm_restart3(NdbMgmHandle handle, int no_of_nodes, const int * node_list, + int initial, int nostart, int abort, int *disconnect) +{ + SET_ERROR(handle, NDB_MGM_NO_ERROR, "Executing: ndb_mgm_restart3"); Uint32 restarted = 0; - const ParserRow restart_reply[] = { + const ParserRow restart_reply_v1[] = { + MGM_CMD("restart reply", NULL, ""), + MGM_ARG("result", String, Mandatory, "Error message"), + MGM_ARG("restarted", Int, Optional, "No of restarted nodes"), + MGM_END() + }; + const ParserRow restart_reply_v2[] = { MGM_CMD("restart reply", NULL, ""), MGM_ARG("result", String, Mandatory, "Error message"), MGM_ARG("restarted", Int, Optional, "No of restarted nodes"), + MGM_ARG("disconnect", Int, Optional, "Disconnect to apply"), MGM_END() }; + CHECK_HANDLE(handle, -1); CHECK_CONNECTED(handle, -1); - + + if(handle->mgmd_version_build==-1) + { + char verstr[50]; + ndb_mgm_get_version(handle, + &(handle->mgmd_version_major), + &(handle->mgmd_version_minor), + &(handle->mgmd_version_build), + sizeof(verstr), + verstr); + } + int use_v2= (handle->mgmd_version_major==5) + && ( + (handle->mgmd_version_minor==0 && handle->mgmd_version_build>=21) + ||(handle->mgmd_version_minor==1 && handle->mgmd_version_build>=12) + ); + if(no_of_nodes < 0){ SET_ERROR(handle, NDB_MGM_RESTART_FAILED, "Restart requested of negative number of nodes"); @@ -939,7 +1040,7 @@ ndb_mgm_restart2(NdbMgmHandle handle, int no_of_nodes, const int * node_list, const Properties *reply; const int timeout = handle->read_timeout; handle->read_timeout= 5*60*1000; // 5 minutes - reply = ndb_mgm_call(handle, restart_reply, "restart all", &args); + reply = ndb_mgm_call(handle, restart_reply_v1, "restart all", &args); handle->read_timeout= timeout; CHECK_REPLY(reply, -1); @@ -975,7 +1076,10 @@ ndb_mgm_restart2(NdbMgmHandle handle, int no_of_nodes, const int * node_list, const Properties *reply; const int timeout = handle->read_timeout; handle->read_timeout= 5*60*1000; // 5 minutes - reply = ndb_mgm_call(handle, restart_reply, "restart node", &args); + if(use_v2) + reply = ndb_mgm_call(handle, restart_reply_v2, "restart node v2", &args); + else + reply = ndb_mgm_call(handle, restart_reply_v1, "restart node", &args); handle->read_timeout= timeout; if(reply != NULL) { BaseString result; @@ -986,20 +1090,16 @@ ndb_mgm_restart2(NdbMgmHandle handle, int no_of_nodes, const int * node_list, return -1; } reply->get("restarted", &restarted); + if(use_v2) + reply->get("disconnect", (Uint32*)disconnect); + else + *disconnect= 0; delete reply; } return restarted; } -extern "C" -int -ndb_mgm_restart(NdbMgmHandle handle, int no_of_nodes, const int *node_list) -{ - SET_ERROR(handle, NDB_MGM_NO_ERROR, "Executing: ndb_mgm_restart"); - return ndb_mgm_restart2(handle, no_of_nodes, node_list, 0, 0, 0); -} - static const char *clusterlog_severity_names[]= { "enabled", "debug", "info", "warning", "error", "critical", "alert" }; @@ -2353,4 +2453,56 @@ int ndb_mgm_end_session(NdbMgmHandle handle) DBUG_RETURN(0); } +extern "C" +int ndb_mgm_get_version(NdbMgmHandle handle, + int *major, int *minor, int *build, int len, char* str) +{ + DBUG_ENTER("ndb_mgm_get_version"); + CHECK_HANDLE(handle, 0); + CHECK_CONNECTED(handle, 0); + + Properties args; + + const ParserRow reply[]= { + MGM_CMD("version", NULL, ""), + MGM_ARG("id", Int, Mandatory, "ID"), + MGM_ARG("major", Int, Mandatory, "Major"), + MGM_ARG("minor", Int, Mandatory, "Minor"), + MGM_ARG("string", String, Mandatory, "String"), + MGM_END() + }; + + const Properties *prop; + prop = ndb_mgm_call(handle, reply, "get version", &args); + CHECK_REPLY(prop, 0); + + Uint32 id; + if(!prop->get("id",&id)){ + fprintf(handle->errstream, "Unable to get value\n"); + return 0; + } + *build= getBuild(id); + + if(!prop->get("major",(Uint32*)major)){ + fprintf(handle->errstream, "Unable to get value\n"); + return 0; + } + + if(!prop->get("minor",(Uint32*)minor)){ + fprintf(handle->errstream, "Unable to get value\n"); + return 0; + } + + BaseString result; + if(!prop->get("string", result)){ + fprintf(handle->errstream, "Unable to get value\n"); + return 0; + } + + strncpy(str, result.c_str(), len); + + delete prop; + DBUG_RETURN(1); +} + template class Vector*>; diff --git a/ndb/src/mgmclient/CommandInterpreter.cpp b/ndb/src/mgmclient/CommandInterpreter.cpp index 9e1224ab3ef..290f57a881a 100644 --- a/ndb/src/mgmclient/CommandInterpreter.cpp +++ b/ndb/src/mgmclient/CommandInterpreter.cpp @@ -1057,7 +1057,8 @@ CommandInterpreter::executeShutdown(char* parameters) NdbAutoPtr ap1((char*)state); int result = 0; - result = ndb_mgm_stop(m_mgmsrv, 0, 0); + int need_disconnect; + result = ndb_mgm_stop3(m_mgmsrv, -1, 0, 0, &need_disconnect); if (result < 0) { ndbout << "Shutdown of NDB Cluster node(s) failed." << endl; printError(); @@ -1066,39 +1067,11 @@ CommandInterpreter::executeShutdown(char* parameters) ndbout << result << " NDB Cluster node(s) have shutdown." << endl; - int nodeId= 0; - int this_mgmd= 0; - this_mgmd= ndb_mgm_get_mgmd_nodeid(m_mgmsrv); - while(get_next_nodeid(state, &nodeId, NDB_MGM_NODE_TYPE_MGM)) - { - if(nodeId==this_mgmd) - continue; - ndbout << "Shutting down NDB Cluster management server nodeId=" - << nodeId << "..."; - result = ndb_mgm_stop(m_mgmsrv, 1, &nodeId); - if (result <= 0) { - ndbout << " failed." << endl; - printError(); - } - else - ndbout << "Done." << endl; - } - - ndbout << "Shutting down NDB Cluster management server nodeId=" - << this_mgmd << "..."; - result= ndb_mgm_stop(m_mgmsrv, 1, &this_mgmd); - if (result <= 0) { - ndbout << " failed." << endl; - printError(); - } - else - { - ndbout << "Done." << endl; + if(need_disconnect) { ndbout << "Disconnecting to allow management server to shutdown." << endl; disconnect(); } - ndbout << "NDB Cluster management servers shutdown." << endl; return 0; } @@ -1487,6 +1460,7 @@ CommandInterpreter::executeStop(Vector &command_list, unsigned command_pos, int *node_ids, int no_of_nodes) { + int need_disconnect; int abort= 0; for (; command_pos < command_list.size(); command_pos++) { @@ -1501,7 +1475,8 @@ CommandInterpreter::executeStop(Vector &command_list, return; } - int result= ndb_mgm_stop2(m_mgmsrv, no_of_nodes, node_ids, abort); + int result= ndb_mgm_stop3(m_mgmsrv, no_of_nodes, node_ids, abort, + &need_disconnect); if (result < 0) { ndbout_c("Shutdown failed."); @@ -1513,27 +1488,19 @@ CommandInterpreter::executeStop(Vector &command_list, ndbout_c("NDB Cluster has shutdown."); else { - int mgm_id= 0; - int need_reconnect= 0; - mgm_id= ndb_mgm_get_mgmd_nodeid(m_mgmsrv); ndbout << "Node"; for (int i= 0; i < no_of_nodes; i++) - { - if(node_ids[i] == mgm_id) - need_reconnect= 1; - else ndbout << " " << node_ids[i]; - } ndbout_c(" has shutdown."); - if(need_reconnect) - { - ndbout << "You are connected to node " << mgm_id - << ", disconnecting to allow it to shutdown" - << endl; - disconnect(); - } } } + + if(need_disconnect) + { + ndbout << "Disconnecting to allow Management Server to shutdown" << endl; + disconnect(); + } + } void @@ -1624,6 +1591,7 @@ CommandInterpreter::executeRestart(Vector &command_list, int nostart= 0; int initialstart= 0; int abort= 0; + int need_disconnect= 0; for (; command_pos < command_list.size(); command_pos++) { @@ -1648,9 +1616,9 @@ CommandInterpreter::executeRestart(Vector &command_list, return; } - result= ndb_mgm_restart2(m_mgmsrv, no_of_nodes, node_ids, - initialstart, nostart, abort); - + result= ndb_mgm_restart3(m_mgmsrv, no_of_nodes, node_ids, + initialstart, nostart, abort, &need_disconnect); + if (result <= 0) { ndbout_c("Restart failed."); printError(); @@ -1661,18 +1629,13 @@ CommandInterpreter::executeRestart(Vector &command_list, ndbout_c("NDB Cluster is being restarted."); else { - int mgm_id= 0; - mgm_id= ndb_mgm_get_mgmd_nodeid(m_mgmsrv); - ndbout << "Node"; for (int i= 0; i < no_of_nodes; i++) - { - if(node_ids[i] == mgm_id) - disconnect(); ndbout << " " << node_ids[i]; - } ndbout_c(" is being restarted"); } + if(need_disconnect) + disconnect(); } } diff --git a/ndb/src/mgmsrv/MgmtSrvr.cpp b/ndb/src/mgmsrv/MgmtSrvr.cpp index 4c3631488e6..8a9a33779d8 100644 --- a/ndb/src/mgmsrv/MgmtSrvr.cpp +++ b/ndb/src/mgmsrv/MgmtSrvr.cpp @@ -1196,6 +1196,27 @@ int MgmtSrvr::stopNodes(const Vector &node_ids, return ret; } +int MgmtSrvr::shutdownMGM(int *stopCount, bool abort, int *stopSelf) +{ + NodeId nodeId = 0; + int error; + + while(getNextNodeId(&nodeId, NDB_MGM_NODE_TYPE_MGM)) + { + if(nodeId==getOwnNodeId()) + continue; + error= sendStopMgmd(nodeId, abort, true, false, + false, false); + if (error == 0) + *stopCount++; + } + + *stopSelf= 1; + *stopCount++; + + return 0; +} + /* * Perform DB nodes shutdown. * MGM servers are left in their current state diff --git a/ndb/src/mgmsrv/MgmtSrvr.hpp b/ndb/src/mgmsrv/MgmtSrvr.hpp index b47ee69fd9f..2102897eb61 100644 --- a/ndb/src/mgmsrv/MgmtSrvr.hpp +++ b/ndb/src/mgmsrv/MgmtSrvr.hpp @@ -256,6 +256,8 @@ public: int stopNodes(const Vector &node_ids, int *stopCount, bool abort, int *stopSelf); + int shutdownMGM(int *stopCount, bool abort, int *stopSelf); + /** * shutdown the DB nodes */ diff --git a/ndb/src/mgmsrv/Services.cpp b/ndb/src/mgmsrv/Services.cpp index a6c483fcdcd..01f11d600df 100644 --- a/ndb/src/mgmsrv/Services.cpp +++ b/ndb/src/mgmsrv/Services.cpp @@ -145,7 +145,13 @@ ParserRow commands[] = { MGM_CMD("get info clusterlog", &MgmApiSession::getInfoClusterLog, ""), - MGM_CMD("restart node", &MgmApiSession::restart, ""), + MGM_CMD("restart node", &MgmApiSession::restart_v1, ""), + MGM_ARG("node", String, Mandatory, "Nodes to restart"), + MGM_ARG("initialstart", Int, Optional, "Initial start"), + MGM_ARG("nostart", Int, Optional, "No start"), + MGM_ARG("abort", Int, Optional, "Abort"), + + MGM_CMD("restart node v2", &MgmApiSession::restart_v2, ""), MGM_ARG("node", String, Mandatory, "Nodes to restart"), MGM_ARG("initialstart", Int, Optional, "Initial start"), MGM_ARG("nostart", Int, Optional, "No start"), @@ -186,13 +192,21 @@ ParserRow commands[] = { MGM_CMD("abort backup", &MgmApiSession::abortBackup, ""), MGM_ARG("id", Int, Mandatory, "Backup id"), - MGM_CMD("stop", &MgmApiSession::stop, ""), + MGM_CMD("stop", &MgmApiSession::stop_v1, ""), MGM_ARG("node", String, Mandatory, "Node"), MGM_ARG("abort", Int, Mandatory, "Node"), - MGM_CMD("stop all", &MgmApiSession::stopAll, ""), + MGM_CMD("stop v2", &MgmApiSession::stop_v2, ""), + MGM_ARG("node", String, Mandatory, "Node"), MGM_ARG("abort", Int, Mandatory, "Node"), - + + MGM_CMD("stop all", &MgmApiSession::stopAll_v1, ""), + MGM_ARG("abort", Int, Mandatory, "Node"), + + MGM_CMD("stop all v2", &MgmApiSession::stopAll_v2, ""), + MGM_ARG("abort", Int, Mandatory, "Node"), + MGM_ARG("stop", String, Mandatory, "MGM/DB or both"), + MGM_CMD("enter single user", &MgmApiSession::enterSingleUser, ""), MGM_ARG("nodeId", Int, Mandatory, "Node"), @@ -850,8 +864,19 @@ MgmApiSession::stopSignalLog(Parser::Context &, } void -MgmApiSession::restart(Parser::Context &, +MgmApiSession::restart_v1(Parser::Context &, Properties const &args) { + restart(args,1); +} + +void +MgmApiSession::restart_v2(Parser::Context &, + Properties const &args) { + restart(args,2); +} + +void +MgmApiSession::restart(Properties const &args, int version) { Uint32 nostart = 0, initialstart = 0, @@ -885,6 +910,8 @@ MgmApiSession::restart(Parser::Context &, } else m_output->println("result: Ok"); m_output->println("restarted: %d", restarted); + if(version>1) + m_output->println("disconnect: %d", (m_stopSelf)?1:0); m_output->println(""); } @@ -994,8 +1021,19 @@ MgmApiSession::getInfoClusterLog(Parser::Context &, } void -MgmApiSession::stop(Parser::Context &, - Properties const &args) { +MgmApiSession::stop_v1(Parser::Context &, + Properties const &args) { + stop(args,1); +} + +void +MgmApiSession::stop_v2(Parser::Context &, + Properties const &args) { + stop(args,2); +} + +void +MgmApiSession::stop(Properties const &args, int version) { Uint32 abort; char *nodes_str; Vector nodes; @@ -1028,25 +1066,46 @@ MgmApiSession::stop(Parser::Context &, else m_output->println("result: Ok"); m_output->println("stopped: %d", stopped); + if(version>1) + m_output->println("disconnect: %d", (m_stopSelf)?1:0); m_output->println(""); } void -MgmApiSession::stopAll(Parser::Context &, +MgmApiSession::stopAll_v1(Parser::Context &, Properties const &args) { - int stopped = 0; + stopAll(args,"db",1); +} + +void +MgmApiSession::stopAll_v2(Parser::Context &, + Properties const &args) { + BaseString tostop; + args.get("stop", tostop); + stopAll(args, tostop.c_str(), 2); +} + +void +MgmApiSession::stopAll(Properties const &args, const char* tostop, int ver) { + int stopped[2] = {0,0}; Uint32 abort; args.get("abort", &abort); - int result = m_mgmsrv.shutdownDB(&stopped, abort != 0); + int result= 0; + if(strstr(tostop,"db")) + result= m_mgmsrv.shutdownDB(&stopped[0], abort != 0); + if(strstr(tostop,"mgm")) + result= m_mgmsrv.shutdownMGM(&stopped[1], abort!=0, &m_stopSelf); m_output->println("stop reply"); if(result != 0) m_output->println("result: %s", get_error_text(result)); else m_output->println("result: Ok"); - m_output->println("stopped: %d", stopped); + m_output->println("stopped: %d", stopped[0]+stopped[1]); + if(ver >1) + m_output->println("disconnect: %d", (m_stopSelf)?1:0); m_output->println(""); } diff --git a/ndb/src/mgmsrv/Services.hpp b/ndb/src/mgmsrv/Services.hpp index b8a73f5e4bc..0d4331b128b 100644 --- a/ndb/src/mgmsrv/Services.hpp +++ b/ndb/src/mgmsrv/Services.hpp @@ -63,7 +63,9 @@ public: void getVersion(Parser_t::Context &ctx, const class Properties &args); void getStatus(Parser_t::Context &ctx, const class Properties &args); void getInfoClusterLog(Parser_t::Context &ctx, const class Properties &args); - void restart(Parser_t::Context &ctx, const class Properties &args); + void restart(const class Properties &args, int version); + void restart_v1(Parser_t::Context &ctx, const class Properties &args); + void restart_v2(Parser_t::Context &ctx, const class Properties &args); void restartAll(Parser_t::Context &ctx, const class Properties &args); void insertError(Parser_t::Context &ctx, const class Properties &args); void setTrace(Parser_t::Context &ctx, const class Properties &args); @@ -75,8 +77,12 @@ public: void abortBackup(Parser_t::Context &ctx, const class Properties &args); void enterSingleUser(Parser_t::Context &ctx, const class Properties &args); void exitSingleUser(Parser_t::Context &ctx, const class Properties &args); - void stop(Parser_t::Context &ctx, const class Properties &args); - void stopAll(Parser_t::Context &ctx, const class Properties &args); + void stop_v1(Parser_t::Context &ctx, const class Properties &args); + void stop_v2(Parser_t::Context &ctx, const class Properties &args); + void stop(const class Properties &args, int version); + void stopAll_v1(Parser_t::Context &ctx, const class Properties &args); + void stopAll_v2(Parser_t::Context &ctx, const class Properties &args); + void stopAll(Properties const &args, const char* tostop, int ver); void start(Parser_t::Context &ctx, const class Properties &args); void startAll(Parser_t::Context &ctx, const class Properties &args); void bye(Parser_t::Context &ctx, const class Properties &args); -- cgit v1.2.1 From 17c4ddeb3af71f6c3d262a64f1ba196bc83f4ae5 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 23 May 2006 19:36:06 +0200 Subject: don't let bugfix for bug#8303 break the bugfix for bug#8378 revert the fix for bug#8303 correct the test for bug#8378 mysql-test/r/ctype_sjis.result: updated mysql-test/t/ctype_sjis.test: updated sql/sql_lex.cc: revert the fix for bug#8303 tests/mysql_client_test.c: correct the test for bug#8378 --- mysql-test/r/ctype_sjis.result | 4 ++-- mysql-test/t/ctype_sjis.test | 2 +- sql/sql_lex.cc | 30 +++++------------------------- tests/mysql_client_test.c | 21 ++++++++++++++------- 4 files changed, 22 insertions(+), 35 deletions(-) diff --git a/mysql-test/r/ctype_sjis.result b/mysql-test/r/ctype_sjis.result index d1976a516d2..dab5991b505 100644 --- a/mysql-test/r/ctype_sjis.result +++ b/mysql-test/r/ctype_sjis.result @@ -172,6 +172,6 @@ c2h ab_def drop table t1; SET NAMES sjis; -SELECT HEX('²“‘@\Œ\') FROM DUAL; -HEX('²“‘@_Œ\') +SELECT HEX('²“‘@Œ\') FROM DUAL; +HEX('²“‘@Œ\') 8DB2939181408C5C diff --git a/mysql-test/t/ctype_sjis.test b/mysql-test/t/ctype_sjis.test index 1d807b5e9a8..01e0b334554 100644 --- a/mysql-test/t/ctype_sjis.test +++ b/mysql-test/t/ctype_sjis.test @@ -78,6 +78,6 @@ SET collation_connection='sjis_bin'; --character_set sjis SET NAMES sjis; -SELECT HEX('²“‘@\Œ\') FROM DUAL; +SELECT HEX('²“‘@Œ\') FROM DUAL; # End of 4.1 tests diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index 16641ad6dd5..fbc8403cbbc 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -295,18 +295,7 @@ static char *get_text(LEX *lex) found_escape=1; if (lex->ptr == lex->end_of_query) return 0; -#ifdef USE_MB - int l; - if (use_mb(cs) && - (l = my_ismbchar(cs, - (const char *)lex->ptr, - (const char *)lex->end_of_query))) { - lex->ptr += l; - continue; - } - else -#endif - yySkip(); + yySkip(); } else if (c == sep) { @@ -335,9 +324,6 @@ static char *get_text(LEX *lex) { uchar *to; - /* Re-use found_escape for tracking state of escapes */ - found_escape= 0; - for (to=start ; str != end ; str++) { #ifdef USE_MB @@ -351,7 +337,7 @@ static char *get_text(LEX *lex) continue; } #endif - if (!found_escape && *str == '\\' && str+1 != end) + if (*str == '\\' && str+1 != end) { switch(*++str) { case 'n': @@ -377,20 +363,14 @@ static char *get_text(LEX *lex) *to++= '\\'; // remember prefix for wildcard /* Fall through */ default: - found_escape= 1; - str--; + *to++= *str; break; } } - else if (!found_escape && *str == sep) - { - found_escape= 1; - } + else if (*str == sep) + *to++= *str++; // Two ' or " else - { *to++ = *str; - found_escape= 0; - } } *to=0; lex->yytoklen=(uint) (to-start); diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index 71ae5e4f052..662fac6116a 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -11554,25 +11554,26 @@ static void test_bug7990() static void test_bug8378() { #if defined(HAVE_CHARSET_gbk) && !defined(EMBEDDED_LIBRARY) - MYSQL *lmysql; + MYSQL *old_mysql=mysql; char out[9]; /* strlen(TEST_BUG8378)*2+1 */ - int len; + char buf[256]; + int len, rc; myheader("test_bug8378"); if (!opt_silent) fprintf(stdout, "\n Establishing a test connection ..."); - if (!(lmysql= mysql_init(NULL))) + if (!(mysql= mysql_init(NULL))) { myerror("mysql_init() failed"); exit(1); } - if (mysql_options(lmysql, MYSQL_SET_CHARSET_NAME, "gbk")) + if (mysql_options(mysql, MYSQL_SET_CHARSET_NAME, "gbk")) { myerror("mysql_options() failed"); exit(1); } - if (!(mysql_real_connect(lmysql, opt_host, opt_user, + if (!(mysql_real_connect(mysql, opt_host, opt_user, opt_password, current_db, opt_port, opt_unix_socket, 0))) { @@ -11582,12 +11583,18 @@ static void test_bug8378() if (!opt_silent) fprintf(stdout, " OK"); - len= mysql_real_escape_string(lmysql, out, TEST_BUG8378_IN, 4); + len= mysql_real_escape_string(mysql, out, TEST_BUG8378_IN, 4); /* No escaping should have actually happened. */ DIE_UNLESS(memcmp(out, TEST_BUG8378_OUT, len) == 0); - mysql_close(lmysql); + sprintf(buf, "SELECT '%s'", out); + rc=mysql_real_query(mysql, buf, strlen(buf)); + myquery(rc); + + mysql_close(mysql); + + mysql=old_mysql; #endif } -- cgit v1.2.1 From 45710b7f477ba344aae5ddd2f9749707a8a2451b Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 25 May 2006 17:30:28 +0930 Subject: BUG#17201: Improve handling of views. client/mysqldump.c: Better view handling: Distinguish better between tables and views in the output. Add many comments about the distinctions between tables and views, and the tradeoffs that we make, notably that, since we don't maintain dependencies. get_table_structure: Clarify in the output that a view is first created as a workaround for the lack of dependencies. dump_table: Return if we're trying to dump a view. dump_all_views_in_db: Don't call init_dumping. It's already been done in dump_all_tables_in_db. This is the problem reported in BUG#17201. Change the variable was_views to seen_views, and clarify the comment. The previous name was not overly "intuitive". mysql-test/r/mysqldump.result: We no longer have spurious text in the results. Add results for the final test (BUG#17201) mysql-test/t/mysqldump.test: Add a new test (BUG#17201) --- client/mysqldump.c | 896 +++++++++++++++++++++--------------------- mysql-test/r/mysqldump.result | 98 ++++- mysql-test/t/mysqldump.test | 15 + 3 files changed, 556 insertions(+), 453 deletions(-) diff --git a/client/mysqldump.c b/client/mysqldump.c index ee6d7b9d12b..49d2b9ae78c 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -21,7 +21,7 @@ ** AUTHOR: Igor Romanenko (igor@frog.kiev.ua) ** DATE: December 3, 1994 ** WARRANTY: None, expressed, impressed, implied -** or other +** or other ** STATUS: Public domain ** Adapted and optimized for MySQL by ** Michael Widenius, Sinisa Milivojevic, Jani Tolonen @@ -77,22 +77,22 @@ #define IGNORE_INSERT_DELAYED 0x02 /* table doesn't support INSERT DELAYED */ static char *add_load_option(char *ptr, const char *object, - const char *statement); + const char *statement); static ulong find_set(TYPELIB *lib, const char *x, uint length, - char **err_pos, uint *err_len); + char **err_pos, uint *err_len); static char *alloc_query_str(ulong size); static char *field_escape(char *to,const char *from,uint length); static my_bool verbose=0,tFlag=0,dFlag=0,quick= 1, extended_insert= 1, - lock_tables=1,ignore_errors=0,flush_logs=0, - opt_drop=1,opt_keywords=0,opt_lock=1,opt_compress=0, + lock_tables=1,ignore_errors=0,flush_logs=0, + opt_drop=1,opt_keywords=0,opt_lock=1,opt_compress=0, opt_delayed=0,create_options=1,opt_quoted=0,opt_databases=0, opt_alldbs=0,opt_create_db=0,opt_lock_all_tables=0, opt_set_charset=0, - opt_autocommit=0,opt_disable_keys=1,opt_xml=0, - opt_delete_master_logs=0, tty_password=0, - opt_single_transaction=0, opt_comments= 0, opt_compact= 0, - opt_hex_blob=0, opt_order_by_primary=0, opt_ignore=0, + opt_autocommit=0,opt_disable_keys=1,opt_xml=0, + opt_delete_master_logs=0, tty_password=0, + opt_single_transaction=0, opt_comments= 0, opt_compact= 0, + opt_hex_blob=0, opt_order_by_primary=0, opt_ignore=0, opt_complete_insert= 0, opt_drop_database= 0, opt_dump_triggers= 0, opt_routines=0, opt_tz_utc=1; static ulong opt_max_allowed_packet, opt_net_buffer_length; @@ -129,8 +129,8 @@ static const char *mysql_universal_client_charset= static char *default_charset; static CHARSET_INFO *charset_info= &my_charset_latin1; const char *default_dbug_option="d:t:o,/tmp/mysqldump.trace"; -/* do we met VIEWs during tables scaning */ -my_bool was_views= 0; +/* have we seen any VIEWs during table scanning? */ +my_bool seen_views= 0; const char *compatible_mode_names[]= { @@ -149,7 +149,7 @@ const char *compatible_mode_names[]= (1<<10) /* ANSI */\ ) TYPELIB compatible_mode_typelib= {array_elements(compatible_mode_names) - 1, - "", compatible_mode_names, NULL}; + "", compatible_mode_names, NULL}; HASH ignore_table; @@ -276,7 +276,7 @@ static struct my_option my_long_options[] = {"lines-terminated-by", OPT_LTB, "Lines in the i.file are terminated by ...", (gptr*) &lines_terminated, (gptr*) &lines_terminated, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"lock-all-tables", 'x', "Locks all tables across all databases. This " + {"lock-all-tables", 'x', "Locks all tables across all databases. This " "is achieved by taking a global read lock for the duration of the whole " "dump. Automatically turns --single-transaction and --lock-tables off.", (gptr*) &opt_lock_all_tables, (gptr*) &opt_lock_all_tables, 0, GET_BOOL, NO_ARG, @@ -297,7 +297,7 @@ static struct my_option my_long_options[] = GET_UINT, OPT_ARG, 0, 0, MYSQL_OPT_MASTER_DATA_COMMENTED_SQL, 0, 0, 0}, {"max_allowed_packet", OPT_MAX_ALLOWED_PACKET, "", (gptr*) &opt_max_allowed_packet, (gptr*) &opt_max_allowed_packet, 0, - GET_ULONG, REQUIRED_ARG, 24*1024*1024, 4096, + GET_ULONG, REQUIRED_ARG, 24*1024*1024, 4096, (longlong) 2L*1024L*1024L*1024L, MALLOC_OVERHEAD, 1024, 0}, {"net_buffer_length", OPT_NET_BUFFER_LENGTH, "", (gptr*) &opt_net_buffer_length, (gptr*) &opt_net_buffer_length, 0, @@ -411,8 +411,8 @@ static const char *load_default_groups[]= { "mysqldump","client",0 }; static void safe_exit(int error); static void write_header(FILE *sql_file, char *db_name); static void print_value(FILE *file, MYSQL_RES *result, MYSQL_ROW row, - const char *prefix,const char *name, - int string_value); + const char *prefix,const char *name, + int string_value); static int dump_selected_tables(char *db, char **table_names, int tables); static int dump_all_tables_in_db(char *db); static int init_dumping(char *); @@ -428,10 +428,10 @@ static my_bool dump_all_views_in_db(char *database); /* exit with message if ferror(file) - + SYNOPSIS check_io() - file - checked file + file - checked file */ void check_io(FILE *file) @@ -456,7 +456,7 @@ static void short_usage_sub(void) { printf("Usage: %s [OPTIONS] database [tables]\n", my_progname); printf("OR %s [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]\n", - my_progname); + my_progname); printf("OR %s [OPTIONS] --all-databases [OPTIONS]\n", my_progname); NETWARE_SET_SCREEN_MODE(1); } @@ -501,12 +501,12 @@ static void write_header(FILE *sql_file, char *db_name) { fprintf(sql_file, "-- MySQL dump %s\n--\n", DUMP_VERSION); fprintf(sql_file, "-- Host: %s Database: %s\n", - current_host ? current_host : "localhost", db_name ? db_name : - ""); + current_host ? current_host : "localhost", db_name ? db_name : + ""); fputs("-- ------------------------------------------------------\n", - sql_file); + sql_file); fprintf(sql_file, "-- Server version\t%s\n", - mysql_get_server_info(&mysql_connection)); + mysql_get_server_info(&mysql_connection)); } if (opt_set_charset) fprintf(sql_file, @@ -529,10 +529,10 @@ static void write_header(FILE *sql_file, char *db_name) "); } fprintf(sql_file, - "/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='%s%s%s' */;\n" - "/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;\n", - path?"":"NO_AUTO_VALUE_ON_ZERO",compatible_mode_normal_str[0]==0?"":",", - compatible_mode_normal_str); + "/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='%s%s%s' */;\n" + "/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;\n", + path?"":"NO_AUTO_VALUE_ON_ZERO",compatible_mode_normal_str[0]==0?"":",", + compatible_mode_normal_str); check_io(sql_file); } } /* write_header */ @@ -563,7 +563,7 @@ static void write_footer(FILE *sql_file) "/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;\n" "/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;\n"); fprintf(sql_file, - "/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;\n"); + "/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;\n"); fputs("\n", sql_file); check_io(sql_file); } @@ -577,7 +577,7 @@ static void free_table_ent(char *key) byte* get_table_key(const char *entry, uint *length, - my_bool not_used __attribute__((unused))) + my_bool not_used __attribute__((unused))) { *length= strlen(entry); return (byte*) entry; @@ -594,7 +594,7 @@ void init_table_rule_hash(HASH* h) static my_bool get_one_option(int optid, const struct my_option *opt __attribute__((unused)), - char *argument) + char *argument) { switch (optid) { #ifdef __NETWARE__ @@ -608,9 +608,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), char *start=argument; my_free(opt_password,MYF(MY_ALLOW_ZERO_PTR)); opt_password=my_strdup(argument,MYF(MY_FAE)); - while (*argument) *argument++= 'x'; /* Destroy argument */ + while (*argument) *argument++= 'x'; /* Destroy argument */ if (*start) - start[1]=0; /* Cut length of argument */ + start[1]=0; /* Cut length of argument */ tty_password= 0; } else @@ -618,7 +618,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), break; case 'r': if (!(md_result_file = my_fopen(argument, O_WRONLY | FILE_BINARY, - MYF(MY_WME)))) + MYF(MY_WME)))) exit(1); break; case 'W': @@ -639,7 +639,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), case 'V': print_version(); exit(0); case 'X': opt_xml = 1; - extended_insert= opt_drop= opt_lock= + extended_insert= opt_drop= opt_lock= opt_disable_keys= opt_autocommit= opt_create_db= 0; break; case 'I': @@ -692,36 +692,36 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), opt_set_charset= 0; opt_compatible_mode_str= argument; opt_compatible_mode= find_set(&compatible_mode_typelib, - argument, strlen(argument), - &err_ptr, &err_len); + argument, strlen(argument), + &err_ptr, &err_len); if (err_len) { - strmake(buff, err_ptr, min(sizeof(buff), err_len)); - fprintf(stderr, "Invalid mode to --compatible: %s\n", buff); - exit(1); + strmake(buff, err_ptr, min(sizeof(buff), err_len)); + fprintf(stderr, "Invalid mode to --compatible: %s\n", buff); + exit(1); } #if !defined(DBUG_OFF) { - uint size_for_sql_mode= 0; - const char **ptr; - for (ptr= compatible_mode_names; *ptr; ptr++) - size_for_sql_mode+= strlen(*ptr); - size_for_sql_mode+= sizeof(compatible_mode_names)-1; - DBUG_ASSERT(sizeof(compatible_mode_normal_str)>=size_for_sql_mode); + uint size_for_sql_mode= 0; + const char **ptr; + for (ptr= compatible_mode_names; *ptr; ptr++) + size_for_sql_mode+= strlen(*ptr); + size_for_sql_mode+= sizeof(compatible_mode_names)-1; + DBUG_ASSERT(sizeof(compatible_mode_normal_str)>=size_for_sql_mode); } #endif mode= opt_compatible_mode; for (i= 0, mode= opt_compatible_mode; mode; mode>>= 1, i++) { - if (mode & 1) - { - end= strmov(end, compatible_mode_names[i]); - end= strmov(end, ","); - } + if (mode & 1) + { + end= strmov(end, compatible_mode_names[i]); + end= strmov(end, ","); + } } if (end!=compatible_mode_normal_str) - end[-1]= 0; - /* + end[-1]= 0; + /* Set charset to the default compiled value if it hasn't been reset yet by --default-character-set=xxx. */ @@ -733,8 +733,8 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), { if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0) { - fprintf(stderr, "Unknown option to protocol: %s\n", argument); - exit(1); + fprintf(stderr, "Unknown option to protocol: %s\n", argument); + exit(1); } break; } @@ -760,12 +760,12 @@ static int get_options(int *argc, char ***argv) *mysql_params->p_net_buffer_length= opt_net_buffer_length; if (opt_delayed) - opt_lock=0; /* Can't have lock with delayed */ + opt_lock=0; /* Can't have lock with delayed */ if (!path && (enclosed || opt_enclosed || escaped || lines_terminated || - fields_terminated)) + fields_terminated)) { fprintf(stderr, - "%s: You must use option --tab with --fields-...\n", my_progname); + "%s: You must use option --tab with --fields-...\n", my_progname); return(1); } @@ -777,7 +777,7 @@ static int get_options(int *argc, char ***argv) fprintf(stderr, "%s: You can't use --single-transaction and " "--lock-all-tables at the same time.\n", my_progname); return(1); - } + } if (opt_master_data) opt_lock_all_tables= !opt_single_transaction; if (opt_single_transaction || opt_lock_all_tables) @@ -790,13 +790,13 @@ static int get_options(int *argc, char ***argv) if ((opt_databases || opt_alldbs) && path) { fprintf(stderr, - "%s: --databases or --all-databases can't be used with --tab.\n", - my_progname); + "%s: --databases or --all-databases can't be used with --tab.\n", + my_progname); return(1); } if (strcmp(default_charset, charset_info->csname) && - !(charset_info= get_charset_by_csname(default_charset, - MY_CS_PRIMARY, MYF(MY_WME)))) + !(charset_info= get_charset_by_csname(default_charset, + MY_CS_PRIMARY, MYF(MY_WME)))) exit(1); if ((*argc < 1 && !opt_alldbs) || (*argc > 0 && opt_alldbs)) { @@ -816,7 +816,7 @@ static void DB_error(MYSQL *mysql, const char *when) { DBUG_ENTER("DB_error"); my_printf_error(0,"Got error: %d: %s %s", MYF(0), - mysql_errno(mysql), mysql_error(mysql), when); + mysql_errno(mysql), mysql_error(mysql), when); safe_exit(EX_MYSQLERR); DBUG_VOID_RETURN; } /* DB_error */ @@ -830,14 +830,14 @@ static void DB_error(MYSQL *mysql, const char *when) mysql_query_with_error_report() mysql_con connection to use res if non zero, result will be put there with - mysql_store_result() + mysql_store_result() query query to send to server RETURN VALUES 0 query sending and (if res!=0) result reading went ok 1 error */ - + static int mysql_query_with_error_report(MYSQL *mysql_con, MYSQL_RES **res, const char *query) { @@ -869,7 +869,7 @@ static FILE* open_sql_file_for_table(const char* table) char filename[FN_REFLEN], tmp_path[FN_REFLEN]; convert_dirname(tmp_path,path,NullS); res= my_fopen(fn_format(filename, table, tmp_path, ".sql", 4), - O_WRONLY, MYF(MY_WME)); + O_WRONLY, MYF(MY_WME)); return res; } @@ -904,7 +904,7 @@ static int dbConnect(char *host, char *user,char *passwd) #ifdef HAVE_OPENSSL if (opt_use_ssl) mysql_ssl_set(&mysql_connection, opt_ssl_key, opt_ssl_cert, opt_ssl_ca, - opt_ssl_capath, opt_ssl_cipher); + opt_ssl_capath, opt_ssl_cipher); mysql_options(&mysql_connection,MYSQL_OPT_SSL_VERIFY_SERVER_CERT, (char*)&opt_ssl_verify_server_cert); #endif @@ -933,7 +933,7 @@ static int dbConnect(char *host, char *user,char *passwd) */ sock->reconnect= 0; my_snprintf(buff, sizeof(buff), "/*!40100 SET @@SQL_MODE='%s' */", - compatible_mode_normal_str); + compatible_mode_normal_str); if (mysql_query_with_error_report(sock, 0, buff)) { mysql_close(sock); @@ -941,7 +941,7 @@ static int dbConnect(char *host, char *user,char *passwd) return 1; } /* - set time_zone to UTC to allow dumping date types between servers with + set time_zone to UTC to allow dumping date types between servers with different time zone settings */ if (opt_tz_utc) @@ -975,8 +975,8 @@ static void unescape(FILE *file,char *pos,uint length) DBUG_ENTER("unescape"); if (!(tmp=(char*) my_malloc(length*2+1, MYF(MY_WME)))) { - ignore_errors=0; /* Fatal error */ - safe_exit(EX_MYSQLERR); /* Force exit */ + ignore_errors=0; /* Fatal error */ + safe_exit(EX_MYSQLERR); /* Force exit */ } mysql_real_escape_string(&mysql_connection, tmp, pos, length); fputc('\'', file); @@ -1003,13 +1003,13 @@ static my_bool test_if_special_chars(const char *str) /* quote_name(name, buff, force) - Quotes char string, taking into account compatible mode + Quotes char string, taking into account compatible mode Args name Unquoted string containing that which will be quoted buff The buffer that contains the quoted value, also returned - force Flag to make it ignore 'test_if_special_chars' + force Flag to make it ignore 'test_if_special_chars' Returns @@ -1082,13 +1082,13 @@ static char *quote_for_like(const char *name, char *buff) /* Quote and print a string. - + SYNOPSIS print_quoted_xml() - output - output file - str - string to print - len - its length - + output - output file + str - string to print + len - its length + DESCRIPTION Quote '<' '>' '&' '\"' chars and print a string to the xml_file. */ @@ -1096,7 +1096,7 @@ static char *quote_for_like(const char *name, char *buff) static void print_quoted_xml(FILE *xml_file, const char *str, ulong len) { const char *end; - + for (end= str + len; str != end; str++) { switch (*str) { @@ -1123,15 +1123,15 @@ static void print_quoted_xml(FILE *xml_file, const char *str, ulong len) /* Print xml tag with one attribute. - + SYNOPSIS print_xml_tag1() - xml_file - output file - sbeg - line beginning - stag_atr - tag and attribute - sval - value of attribute - send - line ending - + xml_file - output file + sbeg - line beginning + stag_atr - tag and attribute + sval - value of attribute + send - line ending + DESCRIPTION Print tag with one attribute to the xml_file. Format is: sbegsend @@ -1141,8 +1141,8 @@ static void print_quoted_xml(FILE *xml_file, const char *str, ulong len) */ static void print_xml_tag1(FILE * xml_file, const char* sbeg, - const char* stag_atr, const char* sval, - const char* send) + const char* stag_atr, const char* sval, + const char* send) { fputs(sbeg, xml_file); fputs("<", xml_file); @@ -1160,11 +1160,11 @@ static void print_xml_tag1(FILE * xml_file, const char* sbeg, SYNOPSIS print_xml_null_tag() - xml_file - output file - sbeg - line beginning - stag_atr - tag and attribute - sval - value of attribute - send - line ending + xml_file - output file + sbeg - line beginning + stag_atr - tag and attribute + sval - value of attribute + send - line ending DESCRIPTION Print tag with one attribute to the xml_file. Format is: @@ -1194,11 +1194,11 @@ static void print_xml_null_tag(FILE * xml_file, const char* sbeg, SYNOPSIS print_xml_row() - xml_file - output file - row_name - xml tag name - tableRes - query result - row - result row - + xml_file - output file + row_name - xml tag name + tableRes - query result + row - result row + DESCRIPTION Print tag with many attribute to the xml_file. Format is: \t\t @@ -1207,7 +1207,7 @@ static void print_xml_null_tag(FILE * xml_file, const char* sbeg, */ static void print_xml_row(FILE *xml_file, const char *row_name, - MYSQL_RES *tableRes, MYSQL_ROW *row) + MYSQL_RES *tableRes, MYSQL_ROW *row) { uint i; MYSQL_FIELD *field; @@ -1324,7 +1324,7 @@ static uint dump_routines_for_db(char *db) */ definer_begin= strstr(row[2], " DEFINER"); - + if (definer_begin) { char *definer_end= strstr(definer_begin, " PROCEDURE"); @@ -1388,7 +1388,7 @@ static uint dump_routines_for_db(char *db) ARGS table - table name db - db name - table_type - table type ie "InnoDB" + table_type - table type, e.g. "MyISAM" or "InnoDB", but also "VIEW" ignore_flag - what we must particularly ignore - see IGNORE_ defines above RETURN @@ -1400,10 +1400,10 @@ static uint get_table_structure(char *table, char *db, char *table_type, { my_bool init=0, delayed, write_data, complete_insert; my_ulonglong num_fields; - char *result_table, *opt_quoted_table; + char *result_table, *opt_quoted_table; const char *insert_option; - char name_buff[NAME_LEN+3],table_buff[NAME_LEN*2+3]; - char table_buff2[NAME_LEN*2+3], query_buff[512]; + char name_buff[NAME_LEN+3],table_buff[NAME_LEN*2+3]; + char table_buff2[NAME_LEN*2+3], query_buff[512]; FILE *sql_file = md_result_file; int len; MYSQL_RES *result; @@ -1473,21 +1473,30 @@ static uint get_table_structure(char *table, char *db, char *table_type, { if (!(sql_file= open_sql_file_for_table(table))) { - safe_exit(EX_MYSQLERR); - DBUG_RETURN(0); + safe_exit(EX_MYSQLERR); + DBUG_RETURN(0); } write_header(sql_file, db); } if (!opt_xml && opt_comments) { + if (strcmp (table_type, "VIEW") == 0) /* view */ + fprintf(sql_file, "\n--\n-- Temporary table structure for view %s\n--\n\n", + result_table); + else fprintf(sql_file, "\n--\n-- Table structure for table %s\n--\n\n", - result_table); - check_io(sql_file); + result_table); + check_io(sql_file); } if (opt_drop) { - fprintf(sql_file, "DROP TABLE IF EXISTS %s;\n", opt_quoted_table); - check_io(sql_file); + /* + Even if the "table" is a view, we do a DROP TABLE here. The + view-specific code below fills in the DROP VIEW. + */ + fprintf(sql_file, "DROP TABLE IF EXISTS %s;\n", + opt_quoted_table); + check_io(sql_file); } result= mysql_store_result(sock); @@ -1500,7 +1509,7 @@ static uint get_table_structure(char *table, char *db, char *table_type, mysql_free_result(result); /* - Create a table with the same name as the view and with columns of + Create a table with the same name as the view and with columns of the same name in order to satisfy views that depend on this view. The table will be removed when the actual view is created. @@ -1524,10 +1533,13 @@ static uint get_table_structure(char *table, char *db, char *table_type, { if (opt_drop) { + /* + We have already dropped any table of the same name + above, so here we just drop the view. + */ + fprintf(sql_file, "/*!50001 DROP VIEW IF EXISTS %s*/;\n", opt_quoted_table); - fprintf(sql_file, "/*!50001 DROP TABLE IF EXISTS %s*/;\n", - opt_quoted_table); check_io(sql_file); } @@ -1554,7 +1566,7 @@ static uint get_table_structure(char *table, char *db, char *table_type, } mysql_free_result(result); - was_views= 1; + seen_views= 1; DBUG_RETURN(0); } @@ -1564,11 +1576,11 @@ static uint get_table_structure(char *table, char *db, char *table_type, mysql_free_result(result); } my_snprintf(query_buff, sizeof(query_buff), "show fields from %s", - result_table); + result_table); if (mysql_query_with_error_report(sock, &result, query_buff)) { if (path) - my_fclose(sql_file, MYF(MY_WME)); + my_fclose(sql_file, MYF(MY_WME)); safe_exit(EX_MYSQLERR); DBUG_RETURN(0); } @@ -1621,7 +1633,7 @@ static uint get_table_structure(char *table, char *db, char *table_type, my_progname, mysql_error(sock)); my_snprintf(query_buff, sizeof(query_buff), "show fields from %s", - result_table); + result_table); if (mysql_query_with_error_report(sock, &result, query_buff)) { safe_exit(EX_MYSQLERR); @@ -1635,18 +1647,18 @@ static uint get_table_structure(char *table, char *db, char *table_type, { if (!(sql_file= open_sql_file_for_table(table))) { - safe_exit(EX_MYSQLERR); - DBUG_RETURN(0); + safe_exit(EX_MYSQLERR); + DBUG_RETURN(0); } write_header(sql_file, db); } if (!opt_xml && opt_comments) - fprintf(sql_file, "\n--\n-- Table structure for table %s\n--\n\n", - result_table); + fprintf(sql_file, "\n--\n-- Table structure for table %s\n--\n\n", + result_table); if (opt_drop) fprintf(sql_file, "DROP TABLE IF EXISTS %s;\n", result_table); if (!opt_xml) - fprintf(sql_file, "CREATE TABLE %s (\n", result_table); + fprintf(sql_file, "CREATE TABLE %s (\n", result_table); else print_xml_tag1(sql_file, "\t", "table_structure name=", table, "\n"); check_io(sql_file); @@ -1674,10 +1686,10 @@ static uint get_table_structure(char *table, char *db, char *table_type, if (init) { if (!opt_xml && !tFlag) - { - fputs(",\n",sql_file); - check_io(sql_file); - } + { + fputs(",\n",sql_file); + check_io(sql_file); + } if (complete_insert) dynstr_append_mem(&insert_pat, ", ", 2); } @@ -1687,30 +1699,30 @@ static uint get_table_structure(char *table, char *db, char *table_type, quote_name(row[SHOW_FIELDNAME], name_buff, 0)); if (!tFlag) { - if (opt_xml) - { - print_xml_row(sql_file, "field", result, &row); - continue; - } + if (opt_xml) + { + print_xml_row(sql_file, "field", result, &row); + continue; + } if (opt_keywords) - fprintf(sql_file, " %s.%s %s", result_table, - quote_name(row[SHOW_FIELDNAME],name_buff, 0), - row[SHOW_TYPE]); + fprintf(sql_file, " %s.%s %s", result_table, + quote_name(row[SHOW_FIELDNAME],name_buff, 0), + row[SHOW_TYPE]); else - fprintf(sql_file, " %s %s", quote_name(row[SHOW_FIELDNAME], - name_buff, 0), - row[SHOW_TYPE]); + fprintf(sql_file, " %s %s", quote_name(row[SHOW_FIELDNAME], + name_buff, 0), + row[SHOW_TYPE]); if (row[SHOW_DEFAULT]) { - fputs(" DEFAULT ", sql_file); - unescape(sql_file, row[SHOW_DEFAULT], lengths[SHOW_DEFAULT]); + fputs(" DEFAULT ", sql_file); + unescape(sql_file, row[SHOW_DEFAULT], lengths[SHOW_DEFAULT]); } if (!row[SHOW_NULL][0]) - fputs(" NOT NULL", sql_file); + fputs(" NOT NULL", sql_file); if (row[SHOW_EXTRA][0]) - fprintf(sql_file, " %s",row[SHOW_EXTRA]); - check_io(sql_file); + fprintf(sql_file, " %s",row[SHOW_EXTRA]); + check_io(sql_file); } } num_fields= mysql_num_rows(result); @@ -1730,9 +1742,9 @@ static uint get_table_structure(char *table, char *db, char *table_type, goto continue_xml; } fprintf(stderr, "%s: Can't get keys for table %s (%s)\n", - my_progname, result_table, mysql_error(sock)); + my_progname, result_table, mysql_error(sock)); if (path) - my_fclose(sql_file, MYF(MY_WME)); + my_fclose(sql_file, MYF(MY_WME)); safe_exit(EX_MYSQLERR); DBUG_RETURN(0); } @@ -1744,102 +1756,102 @@ static uint get_table_structure(char *table, char *db, char *table_type, { if (atoi(row[3]) == 1) { - keynr++; + keynr++; #ifdef FORCE_PRIMARY_KEY - if (atoi(row[1]) == 0 && primary_key == INT_MAX) - primary_key=keynr; + if (atoi(row[1]) == 0 && primary_key == INT_MAX) + primary_key=keynr; #endif - if (!strcmp(row[2],"PRIMARY")) - { - primary_key=keynr; - break; - } + if (!strcmp(row[2],"PRIMARY")) + { + primary_key=keynr; + break; + } } } mysql_data_seek(result,0); keynr=0; while ((row= mysql_fetch_row(result))) { - if (opt_xml) - { - print_xml_row(sql_file, "key", result, &row); - continue; - } + if (opt_xml) + { + print_xml_row(sql_file, "key", result, &row); + continue; + } if (atoi(row[3]) == 1) { - if (keynr++) - putc(')', sql_file); - if (atoi(row[1])) /* Test if duplicate key */ - /* Duplicate allowed */ - fprintf(sql_file, ",\n KEY %s (",quote_name(row[2],name_buff,0)); - else if (keynr == primary_key) - fputs(",\n PRIMARY KEY (",sql_file); /* First UNIQUE is primary */ - else - fprintf(sql_file, ",\n UNIQUE %s (",quote_name(row[2],name_buff, - 0)); + if (keynr++) + putc(')', sql_file); + if (atoi(row[1])) /* Test if duplicate key */ + /* Duplicate allowed */ + fprintf(sql_file, ",\n KEY %s (",quote_name(row[2],name_buff,0)); + else if (keynr == primary_key) + fputs(",\n PRIMARY KEY (",sql_file); /* First UNIQUE is primary */ + else + fprintf(sql_file, ",\n UNIQUE %s (",quote_name(row[2],name_buff, + 0)); } else - putc(',', sql_file); + putc(',', sql_file); fputs(quote_name(row[4], name_buff, 0), sql_file); if (row[7]) - fprintf(sql_file, " (%s)",row[7]); /* Sub key */ - check_io(sql_file); + fprintf(sql_file, " (%s)",row[7]); /* Sub key */ + check_io(sql_file); } if (!opt_xml) { - if (keynr) - putc(')', sql_file); - fputs("\n)",sql_file); - check_io(sql_file); + if (keynr) + putc(')', sql_file); + fputs("\n)",sql_file); + check_io(sql_file); } /* Get MySQL specific create options */ if (create_options) { - char show_name_buff[NAME_LEN*2+2+24]; + char show_name_buff[NAME_LEN*2+2+24]; - /* Check memory for quote_for_like() */ + /* Check memory for quote_for_like() */ my_snprintf(buff, sizeof(buff), "show table status like %s", - quote_for_like(table, show_name_buff)); + quote_for_like(table, show_name_buff)); if (mysql_query_with_error_report(sock, &result, buff)) { - if (mysql_errno(sock) != ER_PARSE_ERROR) - { /* If old MySQL version */ - if (verbose) - fprintf(stderr, - "-- Warning: Couldn't get status information for table %s (%s)\n", - result_table,mysql_error(sock)); - } + if (mysql_errno(sock) != ER_PARSE_ERROR) + { /* If old MySQL version */ + if (verbose) + fprintf(stderr, + "-- Warning: Couldn't get status information for table %s (%s)\n", + result_table,mysql_error(sock)); + } } else if (!(row= mysql_fetch_row(result))) { - fprintf(stderr, - "Error: Couldn't read status information for table %s (%s)\n", - result_table,mysql_error(sock)); + fprintf(stderr, + "Error: Couldn't read status information for table %s (%s)\n", + result_table,mysql_error(sock)); } else { - if (opt_xml) - print_xml_row(sql_file, "options", result, &row); - else - { - fputs("/*!",sql_file); - print_value(sql_file,result,row,"engine=","Engine",0); - print_value(sql_file,result,row,"","Create_options",0); - print_value(sql_file,result,row,"comment=","Comment",1); - fputs(" */",sql_file); - check_io(sql_file); - } + if (opt_xml) + print_xml_row(sql_file, "options", result, &row); + else + { + fputs("/*!",sql_file); + print_value(sql_file,result,row,"engine=","Engine",0); + print_value(sql_file,result,row,"","Create_options",0); + print_value(sql_file,result,row,"comment=","Comment",1); + fputs(" */",sql_file); + check_io(sql_file); + } } - mysql_free_result(result); /* Is always safe to free */ + mysql_free_result(result); /* Is always safe to free */ } continue_xml: if (!opt_xml) - fputs(";\n", sql_file); + fputs(";\n", sql_file); else - fputs("\t\n", sql_file); + fputs("\t\n", sql_file); check_io(sql_file); } } @@ -1871,8 +1883,8 @@ continue_xml: static void dump_triggers_for_table (char *table, char *db) { - char *result_table; - char name_buff[NAME_LEN*4+3], table_buff[NAME_LEN*2+3]; + char *result_table; + char name_buff[NAME_LEN*4+3], table_buff[NAME_LEN*2+3]; char query_buff[512]; uint old_opt_compatible_mode=opt_compatible_mode; FILE *sql_file = md_result_file; @@ -1921,7 +1933,7 @@ DELIMITER ;;\n"); uint host_name_len; char host_name_str[HOSTNAME_LENGTH + 1]; char quoted_host_name_str[HOSTNAME_LENGTH * 2 + 3]; - + parse_user(row[7], strlen(row[7]), user_name_str, &user_name_len, host_name_str, &host_name_len); @@ -1937,7 +1949,7 @@ DELIMITER ;;\n"); row[4], /* Timing */ row[1], /* Event */ result_table, - (strchr(" \t\n\r", *(row[3]))) ? "" : " ", + (strchr(" \t\n\r", *(row[3]))) ? "" : " ", row[3] /* Statement */); } if (mysql_num_rows(result)) @@ -1946,7 +1958,7 @@ DELIMITER ;;\n"); "/*!50003 SET SESSION SQL_MODE=@OLD_SQL_MODE */;\n"); mysql_free_result(result); /* - make sure to set back opt_compatible mode to + make sure to set back opt_compatible mode to original value */ opt_compatible_mode=old_opt_compatible_mode; @@ -1954,7 +1966,7 @@ DELIMITER ;;\n"); } static char *add_load_option(char *ptr,const char *object, - const char *statement) + const char *statement) { if (object) { @@ -1993,7 +2005,7 @@ static char *field_escape(char *to,const char *from,uint length) else { if (*from == '\'' && !end_backslashes) - *to++= *from; /* We want a duplicate of "'" for MySQL */ + *to++= *from; /* We want a duplicate of "'" for MySQL */ end_backslashes=0; } } @@ -2010,8 +2022,8 @@ static char *alloc_query_str(ulong size) if (!(query= (char*) my_malloc(size, MYF(MY_WME)))) { - ignore_errors= 0; /* Fatal error */ - safe_exit(EX_MYSQLERR); /* Force exit */ + ignore_errors= 0; /* Fatal error */ + safe_exit(EX_MYSQLERR); /* Force exit */ } return query; } @@ -2040,11 +2052,11 @@ static void dump_table(char *table, char *db) char *result_table, table_buff2[NAME_LEN*2+3], *opt_quoted_table; char *query= query_buf; int error= 0; - ulong rownr, row_break, total_length, init_length; + ulong rownr, row_break, total_length, init_length; uint num_fields; - MYSQL_RES *res; - MYSQL_FIELD *field; - MYSQL_ROW row; + MYSQL_RES *res; + MYSQL_FIELD *field; + MYSQL_ROW row; DBUG_ENTER("dump_table"); /* @@ -2053,13 +2065,19 @@ static void dump_table(char *table, char *db) */ num_fields= get_table_structure(table, db, table_type, &ignore_flag); + /* + The "table" could be a view. If so, we don't do anything here. + */ + if (strcmp (table_type, "VIEW") == 0) + return; + /* Check --no-data flag */ if (dFlag) { if (verbose) fprintf(stderr, "-- Skipping dump data for table '%s', --no-data was used\n", - table); + table); DBUG_VOID_RETURN; } @@ -2074,8 +2092,8 @@ static void dump_table(char *table, char *db) { if (verbose) fprintf(stderr, - "-- Warning: Skipping data for table '%s' because it's of type %s\n", - table, table_type); + "-- Warning: Skipping data for table '%s' because it's of type %s\n", + table, table_type); DBUG_VOID_RETURN; } /* Check that there are any fields in the table */ @@ -2083,8 +2101,8 @@ static void dump_table(char *table, char *db) { if (verbose) fprintf(stderr, - "-- Skipping dump data for table '%s', it has no fields\n", - table); + "-- Skipping dump data for table '%s', it has no fields\n", + table); DBUG_VOID_RETURN; } @@ -2100,11 +2118,11 @@ static void dump_table(char *table, char *db) my_load_path(tmp_path, tmp_path, NULL); fn_format(filename, table, tmp_path, ".txt", 4); my_delete(filename, MYF(0)); /* 'INTO OUTFILE' doesn't work, if - filename wasn't deleted */ + filename wasn't deleted */ to_unix_path(filename); - my_snprintf(query, QUERY_LENGTH, - "SELECT /*!40001 SQL_NO_CACHE */ * INTO OUTFILE '%s'", - filename); + my_snprintf(query, QUERY_LENGTH, + "SELECT /*!40001 SQL_NO_CACHE */ * INTO OUTFILE '%s'", + filename); end= strend(query); if (fields_terminated || enclosed || opt_enclosed || escaped) @@ -2141,12 +2159,12 @@ static void dump_table(char *table, char *db) if (!opt_xml && opt_comments) { fprintf(md_result_file,"\n--\n-- Dumping data for table %s\n--\n", - result_table); + result_table); check_io(md_result_file); } my_snprintf(query, QUERY_LENGTH, - "SELECT /*!40001 SQL_NO_CACHE */ * FROM %s", - result_table); + "SELECT /*!40001 SQL_NO_CACHE */ * FROM %s", + result_table); if (where || order_by) { query = alloc_query_str((ulong) (strlen(query) + 1 + @@ -2194,7 +2212,7 @@ static void dump_table(char *table, char *db) if (mysql_num_fields(res) != num_fields) { fprintf(stderr,"%s: Error in field count for table: %s ! Aborting.\n", - my_progname, result_table); + my_progname, result_table); error= EX_CONSCHECK; goto err; } @@ -2202,7 +2220,7 @@ static void dump_table(char *table, char *db) if (opt_disable_keys) { fprintf(md_result_file, "\n/*!40000 ALTER TABLE %s DISABLE KEYS */;\n", - opt_quoted_table); + opt_quoted_table); check_io(md_result_file); } if (opt_lock) @@ -2211,7 +2229,7 @@ static void dump_table(char *table, char *db) check_io(md_result_file); } - total_length= opt_net_buffer_length; /* Force row break */ + total_length= opt_net_buffer_length; /* Force row break */ row_break=0; rownr=0; init_length=(uint) insert_pat.length+4; @@ -2231,15 +2249,15 @@ static void dump_table(char *table, char *db) rownr++; if (!extended_insert && !opt_xml) { - fputs(insert_pat.str,md_result_file); - check_io(md_result_file); + fputs(insert_pat.str,md_result_file); + check_io(md_result_file); } mysql_field_seek(res,0); if (opt_xml) { fputs("\t\n", md_result_file); - check_io(md_result_file); + check_io(md_result_file); } for (i = 0; i < mysql_num_fields(res); i++) @@ -2247,21 +2265,21 @@ static void dump_table(char *table, char *db) int is_blob; ulong length= lengths[i]; - if (!(field = mysql_fetch_field(res))) - { - my_snprintf(query, QUERY_LENGTH, - "%s: Not enough fields from table %s! Aborting.\n", - my_progname, result_table); - fputs(query,stderr); - error= EX_CONSCHECK; - goto err; - } - - /* - 63 is my_charset_bin. If charsetnr is not 63, - we have not a BLOB but a TEXT column. - we'll dump in hex only BLOB columns. - */ + if (!(field = mysql_fetch_field(res))) + { + my_snprintf(query, QUERY_LENGTH, + "%s: Not enough fields from table %s! Aborting.\n", + my_progname, result_table); + fputs(query,stderr); + error= EX_CONSCHECK; + goto err; + } + + /* + 63 is my_charset_bin. If charsetnr is not 63, + we have not a BLOB but a TEXT column. + we'll dump in hex only BLOB columns. + */ is_blob= (opt_hex_blob && field->charsetnr == 63 && (field->type == MYSQL_TYPE_BIT || field->type == MYSQL_TYPE_STRING || @@ -2271,36 +2289,36 @@ static void dump_table(char *table, char *db) field->type == MYSQL_TYPE_LONG_BLOB || field->type == MYSQL_TYPE_MEDIUM_BLOB || field->type == MYSQL_TYPE_TINY_BLOB)) ? 1 : 0; - if (extended_insert) - { - if (i == 0) - dynstr_set(&extended_row,"("); - else - dynstr_append(&extended_row,","); - - if (row[i]) - { - if (length) - { - if (!IS_NUM_FIELD(field)) - { - /* - "length * 2 + 2" is OK for both HEX and non-HEX modes: - - In HEX mode we need exactly 2 bytes per character - plus 2 bytes for '0x' prefix. - - In non-HEX mode we need up to 2 bytes per character, - plus 2 bytes for leading and trailing '\'' characters. - */ - if (dynstr_realloc(&extended_row,length * 2+2)) - { - fputs("Aborting dump (out of memory)",stderr); - error= EX_EOM; - goto err; - } + if (extended_insert) + { + if (i == 0) + dynstr_set(&extended_row,"("); + else + dynstr_append(&extended_row,","); + + if (row[i]) + { + if (length) + { + if (!IS_NUM_FIELD(field)) + { + /* + "length * 2 + 2" is OK for both HEX and non-HEX modes: + - In HEX mode we need exactly 2 bytes per character + plus 2 bytes for '0x' prefix. + - In non-HEX mode we need up to 2 bytes per character, + plus 2 bytes for leading and trailing '\'' characters. + */ + if (dynstr_realloc(&extended_row,length * 2+2)) + { + fputs("Aborting dump (out of memory)",stderr); + error= EX_EOM; + goto err; + } if (opt_hex_blob && is_blob) { dynstr_append(&extended_row, "0x"); - extended_row.length+= mysql_hex_string(extended_row.str + + extended_row.length+= mysql_hex_string(extended_row.str + extended_row.length, row[i], length); extended_row.str[extended_row.length]= '\0'; @@ -2315,94 +2333,94 @@ static void dump_table(char *table, char *db) extended_row.str[extended_row.length]='\0'; dynstr_append(&extended_row,"'"); } - } - else - { - /* change any strings ("inf", "-inf", "nan") into NULL */ - char *ptr = row[i]; - if (my_isalpha(charset_info, *ptr) || (*ptr == '-' && - my_isalpha(charset_info, ptr[1]))) - dynstr_append(&extended_row, "NULL"); - else - { - if (field->type == FIELD_TYPE_DECIMAL) - { - /* add " signs around */ - dynstr_append(&extended_row, "'"); - dynstr_append(&extended_row, ptr); - dynstr_append(&extended_row, "'"); - } - else - dynstr_append(&extended_row, ptr); - } - } - } - else - dynstr_append(&extended_row,"''"); - } - else if (dynstr_append(&extended_row,"NULL")) - { - fputs("Aborting dump (out of memory)",stderr); - error= EX_EOM; - goto err; - } - } - else - { - if (i && !opt_xml) - { - fputc(',', md_result_file); - check_io(md_result_file); - } - if (row[i]) - { - if (!IS_NUM_FIELD(field)) - { - if (opt_xml) - { - print_xml_tag1(md_result_file, "\t\t", "field name=", - field->name, ""); - print_quoted_xml(md_result_file, row[i], length); - fputs("\n", md_result_file); - } - else if (opt_hex_blob && is_blob && length) + } + else + { + /* change any strings ("inf", "-inf", "nan") into NULL */ + char *ptr = row[i]; + if (my_isalpha(charset_info, *ptr) || (*ptr == '-' && + my_isalpha(charset_info, ptr[1]))) + dynstr_append(&extended_row, "NULL"); + else + { + if (field->type == FIELD_TYPE_DECIMAL) + { + /* add " signs around */ + dynstr_append(&extended_row, "'"); + dynstr_append(&extended_row, ptr); + dynstr_append(&extended_row, "'"); + } + else + dynstr_append(&extended_row, ptr); + } + } + } + else + dynstr_append(&extended_row,"''"); + } + else if (dynstr_append(&extended_row,"NULL")) + { + fputs("Aborting dump (out of memory)",stderr); + error= EX_EOM; + goto err; + } + } + else + { + if (i && !opt_xml) + { + fputc(',', md_result_file); + check_io(md_result_file); + } + if (row[i]) + { + if (!IS_NUM_FIELD(field)) + { + if (opt_xml) + { + print_xml_tag1(md_result_file, "\t\t", "field name=", + field->name, ""); + print_quoted_xml(md_result_file, row[i], length); + fputs("\n", md_result_file); + } + else if (opt_hex_blob && is_blob && length) { /* sakaik got the idea to to provide blob's in hex notation. */ char *ptr= row[i], *end= ptr + length; fputs("0x", md_result_file); for (; ptr < end ; ptr++) - fprintf(md_result_file, "%02X", *((uchar *)ptr)); + fprintf(md_result_file, "%02X", *((uchar *)ptr)); } else unescape(md_result_file, row[i], length); - } - else - { - /* change any strings ("inf", "-inf", "nan") into NULL */ - char *ptr = row[i]; - if (opt_xml) - { - print_xml_tag1(md_result_file, "\t\t", "field name=", - field->name, ""); - fputs(!my_isalpha(charset_info, *ptr) ? ptr: "NULL", - md_result_file); - fputs("\n", md_result_file); - } - else if (my_isalpha(charset_info, *ptr) || - (*ptr == '-' && my_isalpha(charset_info, ptr[1]))) - fputs("NULL", md_result_file); - else if (field->type == FIELD_TYPE_DECIMAL) - { - /* add " signs around */ - fputc('\'', md_result_file); - fputs(ptr, md_result_file); - fputc('\'', md_result_file); - } - else - fputs(ptr, md_result_file); - } - } - else + } + else + { + /* change any strings ("inf", "-inf", "nan") into NULL */ + char *ptr = row[i]; + if (opt_xml) + { + print_xml_tag1(md_result_file, "\t\t", "field name=", + field->name, ""); + fputs(!my_isalpha(charset_info, *ptr) ? ptr: "NULL", + md_result_file); + fputs("\n", md_result_file); + } + else if (my_isalpha(charset_info, *ptr) || + (*ptr == '-' && my_isalpha(charset_info, ptr[1]))) + fputs("NULL", md_result_file); + else if (field->type == FIELD_TYPE_DECIMAL) + { + /* add " signs around */ + fputc('\'', md_result_file); + fputs(ptr, md_result_file); + fputc('\'', md_result_file); + } + else + fputs(ptr, md_result_file); + } + } + else { /* The field value is NULL */ if (!opt_xml) @@ -2412,61 +2430,61 @@ static void dump_table(char *table, char *db) field->name, "\n"); } check_io(md_result_file); - } + } } if (opt_xml) { fputs("\t\n", md_result_file); - check_io(md_result_file); + check_io(md_result_file); } if (extended_insert) { - ulong row_length; - dynstr_append(&extended_row,")"); + ulong row_length; + dynstr_append(&extended_row,")"); row_length = 2 + extended_row.length; if (total_length + row_length < opt_net_buffer_length) { - total_length += row_length; - fputc(',',md_result_file); /* Always row break */ - fputs(extended_row.str,md_result_file); - } + total_length += row_length; + fputc(',',md_result_file); /* Always row break */ + fputs(extended_row.str,md_result_file); + } else { - if (row_break) - fputs(";\n", md_result_file); - row_break=1; /* This is first row */ + if (row_break) + fputs(";\n", md_result_file); + row_break=1; /* This is first row */ fputs(insert_pat.str,md_result_file); fputs(extended_row.str,md_result_file); - total_length = row_length+init_length; + total_length = row_length+init_length; } - check_io(md_result_file); + check_io(md_result_file); } else if (!opt_xml) { - fputs(");\n", md_result_file); - check_io(md_result_file); + fputs(");\n", md_result_file); + check_io(md_result_file); } } /* XML - close table tag and supress regular output */ if (opt_xml) - fputs("\t\n", md_result_file); + fputs("\t\n", md_result_file); else if (extended_insert && row_break) - fputs(";\n", md_result_file); /* If not empty table */ + fputs(";\n", md_result_file); /* If not empty table */ fflush(md_result_file); check_io(md_result_file); if (mysql_errno(sock)) { my_snprintf(query, QUERY_LENGTH, - "%s: Error %d: %s when dumping table %s at row: %ld\n", - my_progname, - mysql_errno(sock), - mysql_error(sock), - result_table, - rownr); + "%s: Error %d: %s when dumping table %s at row: %ld\n", + my_progname, + mysql_errno(sock), + mysql_error(sock), + result_table, + rownr); fputs(query,stderr); error= EX_CONSCHECK; goto err; @@ -2479,7 +2497,7 @@ static void dump_table(char *table, char *db) if (opt_disable_keys) { fprintf(md_result_file,"/*!40000 ALTER TABLE %s ENABLE KEYS */;\n", - opt_quoted_table); + opt_quoted_table); check_io(md_result_file); } if (opt_autocommit) @@ -2538,7 +2556,7 @@ static int dump_all_databases() if (dump_all_tables_in_db(row[0])) result=1; } - if (was_views) + if (seen_views) { if (mysql_query(sock, "SHOW DATABASES") || !(tableres = mysql_store_result(sock))) @@ -2567,7 +2585,7 @@ static int dump_databases(char **db_names) if (dump_all_tables_in_db(*db)) result=1; } - if (!result && was_views) + if (!result && seen_views) { for (db= db_names ; *db ; db++) { @@ -2583,26 +2601,26 @@ static int init_dumping(char *database) { if (mysql_get_server_version(sock) >= 50003 && !my_strcasecmp(&my_charset_latin1, database, "information_schema")) - return 1; + return 1; if (mysql_select_db(sock, database)) { DB_error(sock, "when selecting the database"); - return 1; /* If --force */ + return 1; /* If --force */ } if (!path && !opt_xml) { if (opt_databases || opt_alldbs) { /* - length of table name * 2 (if name contains quotes), 2 quotes and 0 + length of table name * 2 (if name contains quotes), 2 quotes and 0 */ char quoted_database_buf[64*2+3]; char *qdatabase= quote_name(database,quoted_database_buf,opt_quoted); if (opt_comments) { - fprintf(md_result_file,"\n--\n-- Current Database: %s\n--\n", qdatabase); - check_io(md_result_file); + fprintf(md_result_file,"\n--\n-- Current Database: %s\n--\n", qdatabase); + check_io(md_result_file); } if (!opt_create_db) { @@ -2610,9 +2628,9 @@ static int init_dumping(char *database) MYSQL_ROW row; MYSQL_RES *dbinfo; - my_snprintf(qbuf, sizeof(qbuf), - "SHOW CREATE DATABASE IF NOT EXISTS %s", - qdatabase); + my_snprintf(qbuf, sizeof(qbuf), + "SHOW CREATE DATABASE IF NOT EXISTS %s", + qdatabase); if (mysql_query(sock, qbuf) || !(dbinfo = mysql_store_result(sock))) { @@ -2621,22 +2639,22 @@ static int init_dumping(char *database) fprintf(md_result_file, "\n/*!40000 DROP DATABASE IF EXISTS %s;*/\n", qdatabase); - fprintf(md_result_file, - "\nCREATE DATABASE /*!32312 IF NOT EXISTS*/ %s;\n", - qdatabase); - } - else + fprintf(md_result_file, + "\nCREATE DATABASE /*!32312 IF NOT EXISTS*/ %s;\n", + qdatabase); + } + else { if (opt_drop_database) fprintf(md_result_file, "\n/*!40000 DROP DATABASE IF EXISTS %s*/;\n", qdatabase); - row = mysql_fetch_row(dbinfo); - if (row[1]) - { - fprintf(md_result_file,"\n%s;\n",row[1]); + row = mysql_fetch_row(dbinfo); + if (row[1]) + { + fprintf(md_result_file,"\n%s;\n",row[1]); } - } + } } fprintf(md_result_file,"\nUSE %s;\n", qdatabase); check_io(md_result_file); @@ -2741,8 +2759,6 @@ static my_bool dump_all_views_in_db(char *database) uint numrows; char table_buff[NAME_LEN*2+3]; - if (init_dumping(database)) - return 1; if (opt_xml) print_xml_tag1(md_result_file, "", "database name=", database, "\n"); if (lock_tables) @@ -2802,7 +2818,7 @@ static int get_actual_table_name(const char *old_table_name, /* Check memory for quote_for_like() */ DBUG_ASSERT(2*sizeof(old_table_name) < sizeof(show_name_buff)); my_snprintf(query, sizeof(query), "SHOW TABLES LIKE %s", - quote_for_like(old_table_name, show_name_buff)); + quote_for_like(old_table_name, show_name_buff)); if (mysql_query_with_error_report(sock, 0, query)) { @@ -2908,7 +2924,7 @@ static int dump_selected_tables(char *db, char **table_names, int tables) } /* Dump each selected view */ - if (was_views) + if (seen_views) { for(i=0; i < dump_tables.records; i++) { @@ -2961,14 +2977,14 @@ static int do_show_master_status(MYSQL *mysql_con) "recovery from\n--\n\n"); fprintf(md_result_file, "%sCHANGE MASTER TO MASTER_LOG_FILE='%s', MASTER_LOG_POS=%s;\n", - comment_prefix, row[0], row[1]); + comment_prefix, row[0], row[1]); check_io(md_result_file); } else if (!ignore_errors) { /* SHOW MASTER STATUS reports nothing and --force is not enabled */ - my_printf_error(0, "Error: Binlogging on server not active", - MYF(0)); + my_printf_error(0, "Error: Binlogging on server not active", + MYF(0)); mysql_free_result(master); return 1; } @@ -2988,7 +3004,7 @@ static int do_flush_tables_read_lock(MYSQL *mysql_con) and most client connections are stalled. Of course, if a second long update starts between the two FLUSHes, we have that bad stall. */ - return + return ( mysql_query_with_error_report(mysql_con, 0, "FLUSH TABLES") || mysql_query_with_error_report(mysql_con, 0, "FLUSH TABLES WITH READ LOCK") ); @@ -3030,7 +3046,7 @@ static int start_transaction(MYSQL *mysql_con, my_bool consistent_read_now) static ulong find_set(TYPELIB *lib, const char *x, uint length, - char **err_pos, uint *err_len) + char **err_pos, uint *err_len) { const char *end= x + length; ulong found= 0; @@ -3072,10 +3088,10 @@ static ulong find_set(TYPELIB *lib, const char *x, uint length, /* Print a value with a prefix on file */ static void print_value(FILE *file, MYSQL_RES *result, MYSQL_ROW row, - const char *prefix, const char *name, - int string_value) + const char *prefix, const char *name, + int string_value) { - MYSQL_FIELD *field; + MYSQL_FIELD *field; mysql_field_seek(result, 0); for ( ; (field = mysql_fetch_field(result)) ; row++) @@ -3084,18 +3100,18 @@ static void print_value(FILE *file, MYSQL_RES *result, MYSQL_ROW row, { if (row[0] && row[0][0] && strcmp(row[0],"0")) /* Skip default */ { - fputc(' ',file); - fputs(prefix, file); - if (string_value) - unescape(file,row[0],(uint) strlen(row[0])); - else - fputs(row[0], file); - check_io(file); - return; + fputc(' ',file); + fputs(prefix, file); + if (string_value) + unescape(file,row[0],(uint) strlen(row[0])); + else + fputs(row[0], file); + check_io(file); + return; } } } - return; /* This shouldn't happen */ + return; /* This shouldn't happen */ } /* print_value */ @@ -3106,19 +3122,19 @@ static void print_value(FILE *file, MYSQL_RES *result, MYSQL_ROW row, Check if we the table is one of the table types that should be ignored: MRG_ISAM, MRG_MYISAM, if opt_delayed, if that table supports delayed inserts. If the table should be altogether ignored, it returns a TRUE, FALSE if it - should not be ignored. If the user has selected to use INSERT DELAYED, it - sets the value of the bool pointer supports_delayed_inserts to 0 if not + should not be ignored. If the user has selected to use INSERT DELAYED, it + sets the value of the bool pointer supports_delayed_inserts to 0 if not supported, 1 if it is supported. ARGS check_if_ignore_table() - table_name Table name to check + table_name Table name to check table_type Type of table GLOBAL VARIABLES - sock MySQL socket - verbose Write warning messages + sock MySQL socket + verbose Write warning messages RETURN char (bit value) See IGNORE_ values at top @@ -3135,23 +3151,23 @@ char check_if_ignore_table(const char *table_name, char *table_type) /* Check memory for quote_for_like() */ DBUG_ASSERT(2*sizeof(table_name) < sizeof(show_name_buff)); my_snprintf(buff, sizeof(buff), "show table status like %s", - quote_for_like(table_name, show_name_buff)); + quote_for_like(table_name, show_name_buff)); if (mysql_query_with_error_report(sock, &res, buff)) { if (mysql_errno(sock) != ER_PARSE_ERROR) - { /* If old MySQL version */ + { /* If old MySQL version */ if (verbose) - fprintf(stderr, - "-- Warning: Couldn't get status information for table %s (%s)\n", - table_name,mysql_error(sock)); + fprintf(stderr, + "-- Warning: Couldn't get status information for table %s (%s)\n", + table_name,mysql_error(sock)); DBUG_RETURN(result); /* assume table is ok */ } } if (!(row= mysql_fetch_row(res))) { fprintf(stderr, - "Error: Couldn't read status information for table %s (%s)\n", - table_name, mysql_error(sock)); + "Error: Couldn't read status information for table %s (%s)\n", + table_name, mysql_error(sock)); mysql_free_result(res); DBUG_RETURN(result); /* assume table is ok */ } @@ -3214,8 +3230,8 @@ static char *primary_key_fields(const char *table_name) uint result_length = 0; char *result = 0; - my_snprintf(show_keys_buff, sizeof(show_keys_buff), - "SHOW KEYS FROM %s", table_name); + my_snprintf(show_keys_buff, sizeof(show_keys_buff), + "SHOW KEYS FROM %s", table_name); if (mysql_query(sock, show_keys_buff) || !(res = mysql_store_result(sock))) { @@ -3291,7 +3307,7 @@ static int replace(DYNAMIC_STRING *ds_str, if (!start) return 1; init_dynamic_string(&ds_tmp, "", - ds_str->length + replace_len, 256); + ds_str->length + replace_len, 256); dynstr_append_mem(&ds_tmp, ds_str->str, start - ds_str->str); dynstr_append_mem(&ds_tmp, replace_str, replace_len); dynstr_append(&ds_tmp, start + search_len); @@ -3319,9 +3335,9 @@ static my_bool get_view_structure(char *table, char* db) MYSQL_RES *table_res; MYSQL_ROW row; MYSQL_FIELD *field; - char *result_table, *opt_quoted_table; - char table_buff[NAME_LEN*2+3]; - char table_buff2[NAME_LEN*2+3]; + char *result_table, *opt_quoted_table; + char table_buff[NAME_LEN*2+3]; + char table_buff2[NAME_LEN*2+3]; char query[QUERY_LENGTH]; FILE *sql_file = md_result_file; DBUG_ENTER("get_view_structure"); @@ -3334,7 +3350,7 @@ static my_bool get_view_structure(char *table, char* db) #ifdef NOT_REALLY_USED_YET sprintf(insert_pat,"SET OPTION SQL_QUOTE_SHOW_CREATE=%d", - (opt_quoted || opt_keywords)); + (opt_quoted || opt_keywords)); #endif result_table= quote_name(table, table_buff, 1); @@ -3369,7 +3385,7 @@ static my_bool get_view_structure(char *table, char* db) if (!opt_xml && opt_comments) { - fprintf(sql_file, "\n--\n-- View structure for view %s\n--\n\n", + fprintf(sql_file, "\n--\n-- Final view structure for view %s\n--\n\n", result_table); check_io(sql_file); } @@ -3450,7 +3466,7 @@ static my_bool get_view_structure(char *table, char* db) char quoted_host_name_str[HOSTNAME_LENGTH * 2 + 3]; parse_user(row[1], lengths[1], user_name_str, &user_name_len, - host_name_str, &host_name_len); + host_name_str, &host_name_len); ptr= search_buf; search_len= diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result index 467e0818646..135c2f7abd4 100644 --- a/mysql-test/r/mysqldump.result +++ b/mysql-test/r/mysqldump.result @@ -1458,7 +1458,6 @@ UNLOCK TABLES; /*!40000 ALTER TABLE `t2` ENABLE KEYS */; DROP TABLE IF EXISTS `v2`; /*!50001 DROP VIEW IF EXISTS `v2`*/; -/*!50001 DROP TABLE IF EXISTS `v2`*/; /*!50001 CREATE TABLE `v2` ( `a` varchar(30) ) */; @@ -1763,7 +1762,6 @@ UNLOCK TABLES; /*!40000 ALTER TABLE `t1` ENABLE KEYS */; DROP TABLE IF EXISTS `v1`; /*!50001 DROP VIEW IF EXISTS `v1`*/; -/*!50001 DROP TABLE IF EXISTS `v1`*/; /*!50001 CREATE TABLE `v1` ( `a` int(11) ) */; @@ -1821,7 +1819,6 @@ UNLOCK TABLES; /*!40000 ALTER TABLE `t2` ENABLE KEYS */; DROP TABLE IF EXISTS `v2`; /*!50001 DROP VIEW IF EXISTS `v2`*/; -/*!50001 DROP TABLE IF EXISTS `v2`*/; /*!50001 CREATE TABLE `v2` ( `a` varchar(30) ) */; @@ -1914,7 +1911,6 @@ UNLOCK TABLES; /*!40000 ALTER TABLE `t1` ENABLE KEYS */; DROP TABLE IF EXISTS `v1`; /*!50001 DROP VIEW IF EXISTS `v1`*/; -/*!50001 DROP TABLE IF EXISTS `v1`*/; /*!50001 CREATE TABLE `v1` ( `a` int(11), `b` int(11), @@ -1922,13 +1918,11 @@ DROP TABLE IF EXISTS `v1`; ) */; DROP TABLE IF EXISTS `v2`; /*!50001 DROP VIEW IF EXISTS `v2`*/; -/*!50001 DROP TABLE IF EXISTS `v2`*/; /*!50001 CREATE TABLE `v2` ( `a` int(11) ) */; DROP TABLE IF EXISTS `v3`; /*!50001 DROP VIEW IF EXISTS `v3`*/; -/*!50001 DROP TABLE IF EXISTS `v3`*/; /*!50001 CREATE TABLE `v3` ( `a` int(11), `b` int(11), @@ -2489,7 +2483,6 @@ UNLOCK TABLES; /*!40000 ALTER TABLE `t1` ENABLE KEYS */; DROP TABLE IF EXISTS `v0`; /*!50001 DROP VIEW IF EXISTS `v0`*/; -/*!50001 DROP TABLE IF EXISTS `v0`*/; /*!50001 CREATE TABLE `v0` ( `a` int(11), `b` varchar(32), @@ -2497,7 +2490,6 @@ DROP TABLE IF EXISTS `v0`; ) */; DROP TABLE IF EXISTS `v1`; /*!50001 DROP VIEW IF EXISTS `v1`*/; -/*!50001 DROP TABLE IF EXISTS `v1`*/; /*!50001 CREATE TABLE `v1` ( `a` int(11), `b` varchar(32), @@ -2505,16 +2497,11 @@ DROP TABLE IF EXISTS `v1`; ) */; DROP TABLE IF EXISTS `v2`; /*!50001 DROP VIEW IF EXISTS `v2`*/; -/*!50001 DROP TABLE IF EXISTS `v2`*/; /*!50001 CREATE TABLE `v2` ( `a` int(11), `b` varchar(32), `c` varchar(32) ) */; - -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `test` /*!40100 DEFAULT CHARACTER SET latin1 */; - -USE `test`; /*!50001 DROP TABLE IF EXISTS `v0`*/; /*!50001 DROP VIEW IF EXISTS `v0`*/; /*!50001 CREATE ALGORITHM=UNDEFINED */ @@ -2731,3 +2718,88 @@ p CREATE DEFINER=`root`@`localhost` PROCEDURE `p`() select 42 drop function f; drop procedure p; +drop database if exists test; +create database test; +use test; +create table t1 (id int); +create view v1 as select * from t1; +insert into t1 values (1232131); +insert into t1 values (4711); +insert into t1 values (3231); +insert into t1 values (0815); +-- MySQL dump 10.10 +-- +-- Host: localhost Database: test +-- ------------------------------------------------------ +-- Server version 5.0.22-debug-log + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Current Database: `test` +-- + +/*!40000 DROP DATABASE IF EXISTS `test`*/; + +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `test` /*!40100 DEFAULT CHARACTER SET latin1 */; + +USE `test`; + +-- +-- Table structure for table `t1` +-- + +DROP TABLE IF EXISTS `t1`; +CREATE TABLE `t1` ( + `id` int(11) default NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1; + +-- +-- Dumping data for table `t1` +-- + + +/*!40000 ALTER TABLE `t1` DISABLE KEYS */; +LOCK TABLES `t1` WRITE; +INSERT INTO `t1` VALUES (1232131),(4711),(3231),(815); +UNLOCK TABLES; +/*!40000 ALTER TABLE `t1` ENABLE KEYS */; + +-- +-- Temporary table structure for view `v1` +-- + +DROP TABLE IF EXISTS `v1`; +/*!50001 DROP VIEW IF EXISTS `v1`*/; +/*!50001 CREATE TABLE `v1` ( + `id` int(11) +) */; + +-- +-- Final view structure for view `v1` +-- + +/*!50001 DROP TABLE IF EXISTS `v1`*/; +/*!50001 DROP VIEW IF EXISTS `v1`*/; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `v1` AS select `t1`.`id` AS `id` from `t1` */; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test index 4076fd258e9..01eb826881e 100644 --- a/mysql-test/t/mysqldump.test +++ b/mysql-test/t/mysqldump.test @@ -1143,3 +1143,18 @@ show create procedure p; drop function f; drop procedure p; +# +# BUG#17201 Spurious 'DROP DATABASE' in output, +# also confusion between tables and views. +# Example code from Markus Popp + +drop database if exists test; +create database test; +use test; +create table t1 (id int); +create view v1 as select * from t1; +insert into t1 values (1232131); +insert into t1 values (4711); +insert into t1 values (3231); +insert into t1 values (0815); +--exec $MYSQL_DUMP --add-drop-database --databases test -- cgit v1.2.1 From 1991a87d831bb48b31989c622e35acda11df7fef Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 26 May 2006 01:24:14 +0400 Subject: Fixed bug#16716: subselect in concat() may lead to a wrong result. The Item_func_concat::val_str() function tries to make as less re-allocations as possible. This results in appending strings returned by 2nd and next arguments to the string returned by 1st argument if the buffer for the first argument has enough free space. A constant subselect is evaluated only once and its result is stored in an Item_cache_str. In the case when the first argument of the concat() function is such a subselect Item_cache_str returns the stored value and Item_func_concat::val_str() append values of other arguments to it. But for the next row the value in the Item_cache_str isn't restored because the subselect is a constant one and it isn't evaluated second time. This results in appending string values of 2nd and next arguments to the result of the previous Item_func_concat::val_str() call. The Item_func_concat::val_str() function now checks whether the first argument is a constant one and if so it doesn't append values of 2nd and next arguments to the string value returned by it. mysql-test/t/func_concat.test: Added test case for bug#16716: subselect in concat() may lead to a wrong result. mysql-test/r/func_concat.result: Added test case for bug#16716: subselect in concat() may lead to a wrong result. sql/item_strfunc.cc: Fixed bug#16716: subselect in concat() may lead to a wrong result. The Item_func_concat::val_str() function now checks whether the first argument is a constant one and if so it doesn't append values of 2nd and next arguments to the string value returned by it. --- mysql-test/r/func_concat.result | 7 +++++++ mysql-test/t/func_concat.test | 7 +++++++ sql/item_strfunc.cc | 5 ++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/func_concat.result b/mysql-test/r/func_concat.result index cf6fbf2da4f..94f1f640523 100644 --- a/mysql-test/r/func_concat.result +++ b/mysql-test/r/func_concat.result @@ -64,3 +64,10 @@ select 'a' union select concat('a', -0.0); a a good +select concat((select x from (select 'a' as x) as t1 ), +(select y from (select 'b' as y) as t2 )) from (select 1 union select 2 ) +as t3; +concat((select x from (select 'a' as x) as t1 ), +(select y from (select 'b' as y) as t2 )) +ab +ab diff --git a/mysql-test/t/func_concat.test b/mysql-test/t/func_concat.test index 69ce10c83c9..f546a25f647 100644 --- a/mysql-test/t/func_concat.test +++ b/mysql-test/t/func_concat.test @@ -50,4 +50,11 @@ select 'a' union select concat('a', -0); --replace_result 'a-0.0' good 'a0.0' good select 'a' union select concat('a', -0.0); +# +# Bug#16716: subselect in concat() may lead to a wrong result +# +select concat((select x from (select 'a' as x) as t1 ), + (select y from (select 'b' as y) as t2 )) from (select 1 union select 2 ) + as t3; + # End of 4.1 tests diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index e74d0100b55..0dfbf3b7a1d 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -252,11 +252,13 @@ String *Item_func_concat::val_str(String *str) DBUG_ASSERT(fixed == 1); String *res,*res2,*use_as_buff; uint i; + bool is_const= 0; null_value=0; if (!(res=args[0]->val_str(str))) goto null; use_as_buff= &tmp_value; + is_const= args[0]->const_item(); for (i=1 ; i < arg_count ; i++) { if (res->length() == 0) @@ -279,7 +281,7 @@ String *Item_func_concat::val_str(String *str) current_thd->variables.max_allowed_packet); goto null; } - if (res->alloced_length() >= res->length()+res2->length()) + if (!is_const && res->alloced_length() >= res->length()+res2->length()) { // Use old buffer res->append(*res2); } @@ -334,6 +336,7 @@ String *Item_func_concat::val_str(String *str) res= &tmp_value; use_as_buff=str; } + is_const= 0; } } res->set_charset(collation.collation); -- cgit v1.2.1 From 45972e0e83efa046360b3d3cdae0de51c7977e92 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 26 May 2006 11:00:35 +0930 Subject: mysqldump.result: Get output from modified test (dropping t1). mysqldump.test: Drop t1 at end so that the next test doesn't trip over it. mysql-test/t/mysqldump.test: Drop t1 at end so that the next test doesn't trip over it. mysql-test/r/mysqldump.result: Get output from modified test (dropping t1). --- mysql-test/r/mysqldump.result | 1 + mysql-test/t/mysqldump.test | 1 + 2 files changed, 2 insertions(+) diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result index 135c2f7abd4..099304fe6e7 100644 --- a/mysql-test/r/mysqldump.result +++ b/mysql-test/r/mysqldump.result @@ -2803,3 +2803,4 @@ DROP TABLE IF EXISTS `v1`; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; +drop view v1; diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test index 01eb826881e..b7a714815b7 100644 --- a/mysql-test/t/mysqldump.test +++ b/mysql-test/t/mysqldump.test @@ -1158,3 +1158,4 @@ insert into t1 values (4711); insert into t1 values (3231); insert into t1 values (0815); --exec $MYSQL_DUMP --add-drop-database --databases test +drop view v1; -- cgit v1.2.1 From fd7d4d742993cb33641565e5f9923ae6a21fdb61 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 28 May 2006 22:01:38 +0400 Subject: Fixed bug#15351: Wrong collation used for comparison of md5() and sha() argument can lead to a wrong result. md5() and sha() functions treat their arguments as case sensitive strings. But when they are compared their arguments were compared as a case insensitive strings which leads to two functions with different arguments and thus different results to being identical. This can lead to a wrong decision made in the range optimizer and thus lead to a wrong result set. Item_func_md5::fix_length_and_dec() and Item_func_sha::fix_length_and_dec() functions now set binary collation on their arguments. sql/item_strfunc.cc: Fixed bug#15351: Wrong collation used for comparison of md5() and sha() argument can lead to a wrong result. Item_func_md5::fix_length_and_dec() and Item_func_sha::fix_length_and_dec() functions now set binary collation on their arguments. mysql-test/r/func_str.result: Added test case for the bug#15351: Wrong collation used for comparison of md5() and sha() argument can lead to a wrong result. mysql-test/t/func_str.test: Added test case for the bug#15351: Wrong collation used for comparison of md5() and sha() argument can lead to a wrong result. --- mysql-test/r/func_str.result | 15 +++++++++++++++ mysql-test/t/func_str.test | 12 ++++++++++++ sql/item_strfunc.cc | 20 ++++++++++++++++++-- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/func_str.result b/mysql-test/r/func_str.result index 0609624af18..24e6bb6f38a 100644 --- a/mysql-test/r/func_str.result +++ b/mysql-test/r/func_str.result @@ -1006,4 +1006,19 @@ NULL select ifnull(load_file("lkjlkj"),"it's null"); ifnull(load_file("lkjlkj"),"it's null") it's null +create table t1 (f1 varchar(4), f2 varchar(64), unique key k1 (f1,f2)); +insert into t1 values ( 'test',md5('test')), ('test', sha('test')); +select * from t1 where f1='test' and (f2= md5("test") or f2= md5("TEST")); +f1 f2 +test 098f6bcd4621d373cade4e832627b4f6 +select * from t1 where f1='test' and (f2= md5("TEST") or f2= md5("test")); +f1 f2 +test 098f6bcd4621d373cade4e832627b4f6 +select * from t1 where f1='test' and (f2= sha("test") or f2= sha("TEST")); +f1 f2 +test a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 +select * from t1 where f1='test' and (f2= sha("TEST") or f2= sha("test")); +f1 f2 +test a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 +drop table t1; End of 4.1 tests diff --git a/mysql-test/t/func_str.test b/mysql-test/t/func_str.test index c2f76dbac43..c36e15a08b9 100644 --- a/mysql-test/t/func_str.test +++ b/mysql-test/t/func_str.test @@ -669,4 +669,16 @@ drop table t1; select load_file("lkjlkj"); select ifnull(load_file("lkjlkj"),"it's null"); +# +# Bug#15351: Wrong collation used for comparison of md5() and sha() +# parameter can lead to a wrong result. +# +create table t1 (f1 varchar(4), f2 varchar(64), unique key k1 (f1,f2)); +insert into t1 values ( 'test',md5('test')), ('test', sha('test')); +select * from t1 where f1='test' and (f2= md5("test") or f2= md5("TEST")); +select * from t1 where f1='test' and (f2= md5("TEST") or f2= md5("test")); +select * from t1 where f1='test' and (f2= sha("test") or f2= sha("TEST")); +select * from t1 where f1='test' and (f2= sha("TEST") or f2= sha("test")); +drop table t1; + --echo End of 4.1 tests diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index e74d0100b55..e817edac6c0 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -118,7 +118,15 @@ String *Item_func_md5::val_str(String *str) void Item_func_md5::fix_length_and_dec() { - max_length=32; + max_length=32; + /* + The MD5() function treats its parameter as being a case sensitive. Thus + we set binary collation on it so different instances of MD5() will be + compared properly. + */ + args[0]->collation.set( + get_charset_by_csname(args[0]->collation.collation->csname, + MY_CS_BINSORT,MYF(0)), DERIVATION_COERCIBLE); } @@ -159,7 +167,15 @@ String *Item_func_sha::val_str(String *str) void Item_func_sha::fix_length_and_dec() { - max_length=SHA1_HASH_SIZE*2; // size of hex representation of hash + max_length=SHA1_HASH_SIZE*2; // size of hex representation of hash + /* + The SHA() function treats its parameter as being a case sensitive. Thus + we set binary collation on it so different instances of MD5() will be + compared properly. + */ + args[0]->collation.set( + get_charset_by_csname(args[0]->collation.collation->csname, + MY_CS_BINSORT,MYF(0)), DERIVATION_COERCIBLE); } -- cgit v1.2.1 From 2264b644735e869fdbb16397c75170d86e2de127 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 29 May 2006 00:32:59 +0400 Subject: Fixed bug#19225: unchecked error results in server crash In multi-table delete a table for delete can't be used for selecting in subselects. Appropriate error was raised but wasn't checked which leads to a crash at the execution phase. The mysql_execute_command() now checks for errors before executing select for multi-delete. mysql-test/t/multi_update.test: Added test case for bug#19225: unchecked error results in server crash mysql-test/r/multi_update.result: Added test case for bug#19225: unchecked error results in server crash sql/sql_parse.cc: Fixed bug#19225: unchecked error results in server crash The mysql_execute_command() now checks for errors before executing select for multi-delete. --- mysql-test/r/multi_update.result | 5 +++++ mysql-test/t/multi_update.test | 8 ++++++++ sql/sql_parse.cc | 4 ++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/multi_update.result b/mysql-test/r/multi_update.result index dba10296063..ee62bd3bce6 100644 --- a/mysql-test/r/multi_update.result +++ b/mysql-test/r/multi_update.result @@ -475,3 +475,8 @@ aclid bigint, index idx_acl(aclid) insert into t2 values(1,null); delete t2, t1 from t2 left join t1 on (t2.aclid=t1.aclid) where t2.refid='1'; drop table t1, t2; +create table t1(a int); +create table t2(a int); +delete from t1,t2 using t1,t2 where t1.a=(select a from t1); +ERROR HY000: You can't specify target table 't1' for update in FROM clause +drop table t1, t2; diff --git a/mysql-test/t/multi_update.test b/mysql-test/t/multi_update.test index 27bdf4df3d7..e628e900c73 100644 --- a/mysql-test/t/multi_update.test +++ b/mysql-test/t/multi_update.test @@ -448,4 +448,12 @@ insert into t2 values(1,null); delete t2, t1 from t2 left join t1 on (t2.aclid=t1.aclid) where t2.refid='1'; drop table t1, t2; +# +# Bug#19225: unchecked error leads to server crash +# +create table t1(a int); +create table t2(a int); +--error 1093 +delete from t1,t2 using t1,t2 where t1.a=(select a from t1); +drop table t1, t2; # End of 4.1 tests diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 51ef3f31b26..06005f31198 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -3047,8 +3047,8 @@ unsent_create_error: } } - if (!thd->is_fatal_error && (result= new multi_delete(thd,aux_tables, - table_count))) + if (!res && !thd->is_fatal_error && + (result= new multi_delete(thd,aux_tables, table_count))) { res= mysql_select(thd, &select_lex->ref_pointer_array, select_lex->get_table_list(), -- cgit v1.2.1 From 528e85a4c0de5b6cfe65f1c664089628db6cf1b4 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 29 May 2006 16:46:46 +0500 Subject: BUG#19580 - FULLTEXT search produces wrong results on UTF-8 columns The problem was that MySQL hadn't true ctype implementation. As a result many multibyte punctuation/whitespace characters were treated as word characters. This fix uses recently added CTYPE table for unicode character sets (WL1386) to detect unicode punctuation/whitespace characters correctly. Note: this is incompatible change since it changes parser behavior. One will have to use REPAIR TABLE statement to rebuild fulltext indexes. mysql-test/r/fulltext2.result: Testcase for BUG#19580. mysql-test/t/fulltext2.test: Testcase for BUG#19580. storage/myisam/ft_parser.c: Use WL1386 "CTYPE table for unicode character sets" functionality. storage/myisam/ft_update.c: Use WL1386 "CTYPE table for unicode character sets" functionality. Reverse fix for BUG#16489 "utf8 + fulltext leads to corrupt index file.". It is not needed anymore, since we have true ctype implementation. storage/myisam/ftdefs.h: Use WL1386 "CTYPE table for unicode character sets" functionality. Rework true_word_char macro so it accepts ctype instead of charset as first param. It doesn't use my_isalnum anymore, but instead directly checks ctype. Obsolete word_char macro removed. --- mysql-test/r/fulltext2.result | 8 ++++++++ mysql-test/t/fulltext2.test | 10 ++++++++++ storage/myisam/ft_parser.c | 32 ++++++++++++++++++++++---------- storage/myisam/ft_update.c | 5 ----- storage/myisam/ftdefs.h | 5 +++-- 5 files changed, 43 insertions(+), 17 deletions(-) diff --git a/mysql-test/r/fulltext2.result b/mysql-test/r/fulltext2.result index f6a4b20bc22..7e3e25370d3 100644 --- a/mysql-test/r/fulltext2.result +++ b/mysql-test/r/fulltext2.result @@ -241,3 +241,11 @@ select * from t1 where match a against('ab c' in boolean mode); a drop table t1; set names latin1; +SET NAMES utf8; +CREATE TABLE t1(a VARCHAR(255), FULLTEXT(a)) ENGINE=MyISAM DEFAULT CHARSET=utf8; +INSERT INTO t1 VALUES('„MySQL“'); +SELECT a FROM t1 WHERE MATCH a AGAINST('“MySQL„' IN BOOLEAN MODE); +a +„MySQL“ +DROP TABLE t1; +SET NAMES latin1; diff --git a/mysql-test/t/fulltext2.test b/mysql-test/t/fulltext2.test index fd97f795534..88967a5dd04 100644 --- a/mysql-test/t/fulltext2.test +++ b/mysql-test/t/fulltext2.test @@ -221,3 +221,13 @@ drop table t1; set names latin1; # End of 4.1 tests + +# +# BUG#19580 - FULLTEXT search produces wrong results on UTF-8 columns +# +SET NAMES utf8; +CREATE TABLE t1(a VARCHAR(255), FULLTEXT(a)) ENGINE=MyISAM DEFAULT CHARSET=utf8; +INSERT INTO t1 VALUES('„MySQL“'); +SELECT a FROM t1 WHERE MATCH a AGAINST('“MySQL„' IN BOOLEAN MODE); +DROP TABLE t1; +SET NAMES latin1; diff --git a/storage/myisam/ft_parser.c b/storage/myisam/ft_parser.c index 89ede813a2b..d3f83afbd7b 100644 --- a/storage/myisam/ft_parser.c +++ b/storage/myisam/ft_parser.c @@ -114,6 +114,7 @@ byte ft_get_word(CHARSET_INFO *cs, byte **start, byte *end, FT_WORD *word, MYSQL_FTPARSER_BOOLEAN_INFO *param) { byte *doc=*start; + int ctype; uint mwc, length, mbl; param->yesno=(FTB_YES==' ') ? 1 : (param->quot != 0); @@ -122,9 +123,11 @@ byte ft_get_word(CHARSET_INFO *cs, byte **start, byte *end, while (doc 0 ? mbl : 1)) { - if (true_word_char(cs,*doc)) break; + mbl= cs->cset->ctype(cs, &ctype, (uchar*)doc, (uchar*)end); + if (true_word_char(ctype, *doc)) + break; if (*doc == FTB_RQUOT && param->quot) { param->quot=doc; @@ -158,14 +161,16 @@ byte ft_get_word(CHARSET_INFO *cs, byte **start, byte *end, } mwc=length=0; - for (word->pos=doc; docpos= doc; doc < end; length++, doc+= (mbl > 0 ? mbl : 1)) + { + mbl= cs->cset->ctype(cs, &ctype, (uchar*)doc, (uchar*)end); + if (true_word_char(ctype, *doc)) mwc=0; else if (!misc_word_char(*doc) || mwc) break; else mwc++; - + } param->prev='A'; /* be sure *prev is true_word_char */ word->len= (uint)(doc-word->pos) - mwc; if ((param->trunc=(doc 0 ? mbl : 1)) { - if (doc >= end) DBUG_RETURN(0); - if (true_word_char(cs, *doc)) break; + if (doc >= end) + DBUG_RETURN(0); + mbl= cs->cset->ctype(cs, &ctype, (uchar*)doc, (uchar*)end); + if (true_word_char(ctype, *doc)) + break; } mwc= length= 0; - for (word->pos=doc; docpos= doc; doc < end; length++, doc+= (mbl > 0 ? mbl : 1)) + { + mbl= cs->cset->ctype(cs, &ctype, (uchar*)doc, (uchar*)end); + if (true_word_char(ctype, *doc)) mwc= 0; else if (!misc_word_char(*doc) || mwc) break; else mwc++; + } word->len= (uint)(doc-word->pos) - mwc; diff --git a/storage/myisam/ft_update.c b/storage/myisam/ft_update.c index f5501792dcd..adcdf81222f 100644 --- a/storage/myisam/ft_update.c +++ b/storage/myisam/ft_update.c @@ -174,11 +174,6 @@ int _mi_ft_cmp(MI_INFO *info, uint keynr, const byte *rec1, const byte *rec2) FT_SEG_ITERATOR ftsi1, ftsi2; CHARSET_INFO *cs=info->s->keyinfo[keynr].seg->charset; DBUG_ENTER("_mi_ft_cmp"); -#ifndef MYSQL_HAS_TRUE_CTYPE_IMPLEMENTATION - if (cs->mbmaxlen > 1) - DBUG_RETURN(THOSE_TWO_DAMN_KEYS_ARE_REALLY_DIFFERENT); -#endif - _mi_ft_segiterator_init(info, keynr, rec1, &ftsi1); _mi_ft_segiterator_init(info, keynr, rec2, &ftsi2); diff --git a/storage/myisam/ftdefs.h b/storage/myisam/ftdefs.h index 2c4cfa1ffd6..82429773824 100644 --- a/storage/myisam/ftdefs.h +++ b/storage/myisam/ftdefs.h @@ -24,9 +24,10 @@ #include #include -#define true_word_char(s,X) (my_isalnum(s,X) || (X)=='_') +#define true_word_char(ctype, character) \ + ((ctype) & (_MY_U | _MY_L | _MY_NMR) || \ + (character) == '_') #define misc_word_char(X) 0 -#define word_char(s,X) (true_word_char(s,X) || misc_word_char(X)) #define FT_MAX_WORD_LEN_FOR_SORT 31 -- cgit v1.2.1 From c007dabaf62b7ac7eb41e2460b12d652b132bb7f Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 30 May 2006 00:36:48 +0400 Subject: Fixed bug#18360: Incorrect type coercion in IN() results in false comparison The IN() function uses agg_cmp_type() to aggregate all types of its arguments to find out some common type for comparisons. In this particular case the char() and the int was aggregated to double because char() can contain values like '1.5'. But all strings which do not start from a digit are converted to 0. thus 'a' and 'z' become equal. This behaviour is reasonable when all function arguments are constants. But when there is a field or an expression this can lead to false comparisons. In this case it makes more sense to coerce constants to the type of the field argument. The agg_cmp_type() function now aggregates types of constant and non-constant items separately. If some non-constant items will be found then their aggregated type will be returned. Thus after the aggregation constants will be coerced to the aggregated type. mysql-test/t/func_in.test: Added test case for bug#18360: Incorrect type coercion in IN() results in false comparison. mysql-test/r/func_in.result: Added test case for bug#18360: Incorrect type coercion in IN() results in false comparison. sql/item_cmpfunc.cc: Fixed bug#18360: Incorrect type coercion in IN() results in false comparison. The agg_cmp_type() function now aggregates types of constant and non-constant items separately. If some non-constant items will be found then their aggregated type will be returned. Thus after the aggregation constants will be coerced to the aggregated type. --- mysql-test/r/func_in.result | 21 +++++++++++++++++++++ mysql-test/t/func_in.test | 12 ++++++++++++ sql/item_cmpfunc.cc | 37 +++++++++++++++++++++++++++++++++++-- 3 files changed, 68 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/func_in.result b/mysql-test/r/func_in.result index 3cf2afc83d1..0632dddb87e 100644 --- a/mysql-test/r/func_in.result +++ b/mysql-test/r/func_in.result @@ -202,3 +202,24 @@ select count(*) from t1 where id not in (1,2); count(*) 1 drop table t1; +create table t1 (f1 char(1), f2 int); +insert into t1 values (1,0),('a',1),('z',2); +select f1 from t1 where f1 in (1,'z'); +f1 +1 +z +select f2 from t1 where f2 in (1,'z'); +f2 +0 +1 +select f1 from t1 where 'z' in (1,f1); +f1 +z +select * from t1 where 'z' in (f2,f1); +f1 f2 +z 2 +select * from t1 where 1 in (f2,f1); +f1 f2 +1 0 +a 1 +drop table t1; diff --git a/mysql-test/t/func_in.test b/mysql-test/t/func_in.test index 2ffe5a2d5f7..3481f2c7b11 100644 --- a/mysql-test/t/func_in.test +++ b/mysql-test/t/func_in.test @@ -109,4 +109,16 @@ select count(*) from t1 where id not in (1); select count(*) from t1 where id not in (1,2); drop table t1; +# +# Bug#18360 Incorrect type coercion in IN() results in false comparison +# +create table t1 (f1 char(1), f2 int); +insert into t1 values (1,0),('a',1),('z',2); +select f1 from t1 where f1 in (1,'z'); +select f2 from t1 where f2 in (1,'z'); +select f1 from t1 where 'z' in (1,f1); +select * from t1 where 'z' in (f2,f1); +select * from t1 where 1 in (f2,f1); +drop table t1; + # End of 4.1 tests diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 3c41fb56d89..bfbb3355004 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -58,12 +58,45 @@ static void agg_result_type(Item_result *type, Item **items, uint nitems) } } + +/* + Aggregates result types from the array of items. + + SYNOPSIS: + agg_cmp_type() + type [out] the aggregated type + items array of items to aggregate the type from + nitems number of items in the array + + DESCRIPTION + This function aggregates result types from the array of items. Found type + supposed to be used later for comparison of values of these items. + Aggregation itself is performed by the item_cmp_type() function. + + NOTES + Aggregation rules: + If all items are constants the type will be aggregated from all items. + If there are some non-constant items then only types of non-constant + items will be used for aggregation. +*/ static void agg_cmp_type(Item_result *type, Item **items, uint nitems) { uint i; type[0]= items[0]->result_type(); - for (i=1 ; i < nitems ; i++) - type[0]= item_cmp_type(type[0], items[i]->result_type()); + /* Reset to 0 on first occurence of non-const item. 1 otherwise */ + bool is_const= items[0]->const_item(); + + for (i= 1 ; i < nitems ; i++) + { + if (!items[i]->const_item()) + { + type[0]= is_const ? items[i]->result_type() : + item_cmp_type(type[0], items[i]->result_type()); + is_const= 0; + } + else if (is_const) + type[0]= item_cmp_type(type[0], items[i]->result_type()); + } } static void my_coll_agg_error(DTCollation &c1, DTCollation &c2, -- cgit v1.2.1 From 10c5b8b6fd63365d5d3812964912752a6a89510b Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 30 May 2006 00:08:48 -0400 Subject: BUG#19801: Valgrind error in check_list_constants Needed some special handling of the case when no_list_values == 0 mysql-test/r/partition.result: Added a couple of new test cases mysql-test/t/partition.test: Added a couple of new test cases sql/partition_info.cc: Rearranged some code to handle case where no_list_values == 0 which happens when one partition with only one value == NULL. sql/sql_partition.cc: Rearranged code to remove compiler warning and also since we now have handled the case where no_list_values == 0 in a special case before coming here Added code for handling the special case where no_list_values == 0 --- mysql-test/r/partition.result | 12 ++++++++++++ mysql-test/t/partition.test | 6 ++++++ sql/partition_info.cc | 41 +++++++++++++++++++++++------------------ sql/sql_partition.cc | 21 +++++++++++++++++---- 4 files changed, 58 insertions(+), 22 deletions(-) diff --git a/mysql-test/r/partition.result b/mysql-test/r/partition.result index 3be9f3edee2..a4f40a130b5 100644 --- a/mysql-test/r/partition.result +++ b/mysql-test/r/partition.result @@ -757,6 +757,18 @@ insert into t1 values (null); select * from t1 where f1 is null; f1 NULL +select * from t1 where f1 < 1; +f1 +select * from t1 where f1 <= NULL; +f1 +select * from t1 where f1 < NULL; +f1 +select * from t1 where f1 >= NULL; +f1 +select * from t1 where f1 > NULL; +f1 +select * from t1 where f1 > 1; +f1 drop table t1; create table t1 (f1 smallint) partition by range (f1) (partition p0 values less than (0)); diff --git a/mysql-test/t/partition.test b/mysql-test/t/partition.test index a24124d3fb5..75defdeccf1 100644 --- a/mysql-test/t/partition.test +++ b/mysql-test/t/partition.test @@ -895,6 +895,12 @@ create table t1 (f1 smallint) partition by list (f1) (partition p0 values in (null)); insert into t1 values (null); select * from t1 where f1 is null; +select * from t1 where f1 < 1; +select * from t1 where f1 <= NULL; +select * from t1 where f1 < NULL; +select * from t1 where f1 >= NULL; +select * from t1 where f1 > NULL; +select * from t1 where f1 > 1; drop table t1; create table t1 (f1 smallint) diff --git a/sql/partition_info.cc b/sql/partition_info.cc index 0924a8adf6e..6e3023289d8 100644 --- a/sql/partition_info.cc +++ b/sql/partition_info.cc @@ -612,7 +612,8 @@ bool partition_info::check_list_constants() no_list_values++; } while (++i < no_parts); list_func_it.rewind(); - list_array= (LIST_PART_ENTRY*)sql_alloc(no_list_values*sizeof(LIST_PART_ENTRY)); + list_array= (LIST_PART_ENTRY*)sql_alloc((no_list_values+1) * + sizeof(LIST_PART_ENTRY)); if (unlikely(list_array == NULL)) { mem_alloc_error(no_list_values * sizeof(LIST_PART_ENTRY)); @@ -631,25 +632,29 @@ bool partition_info::check_list_constants() } } while (++i < no_parts); - qsort((void*)list_array, no_list_values, sizeof(LIST_PART_ENTRY), - &list_part_cmp); - - not_first= FALSE; - i= prev_value= 0; //prev_value initialised to quiet compiler - do + if (no_list_values) { - curr_value= list_array[i].list_value; - if (likely(!not_first || prev_value != curr_value)) - { - prev_value= curr_value; - not_first= TRUE; - } - else + qsort((void*)list_array, no_list_values, sizeof(LIST_PART_ENTRY), + &list_part_cmp); + + not_first= FALSE; + i= prev_value= 0; //prev_value initialised to quiet compiler + do { - my_error(ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR, MYF(0)); - goto end; - } - } while (++i < no_list_values); + DBUG_ASSERT(i < no_list_values); + curr_value= list_array[i].list_value; + if (likely(!not_first || prev_value != curr_value)) + { + prev_value= curr_value; + not_first= TRUE; + } + else + { + my_error(ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR, MYF(0)); + goto end; + } + } while (++i < no_list_values); + } result= FALSE; end: DBUG_RETURN(result); diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index e946e972968..b6756821245 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -2257,8 +2257,8 @@ static uint32 get_part_id_linear_key(partition_info *part_info, int get_partition_id_list(partition_info *part_info, - uint32 *part_id, - longlong *func_value) + uint32 *part_id, + longlong *func_value) { LIST_PART_ENTRY *list_array= part_info->list_array; int list_index; @@ -2351,7 +2351,8 @@ uint32 get_list_array_idx_for_endpoint(partition_info *part_info, uint min_list_index= 0, max_list_index= part_info->no_list_values - 1; /* Get the partitioning function value for the endpoint */ longlong part_func_value= part_val_int(part_info->part_expr); - while (max_list_index >= min_list_index) + DBUG_ASSERT(part_info->no_list_values); + do { list_index= (max_list_index + min_list_index) >> 1; list_value= list_array[list_index].list_value; @@ -2367,7 +2368,7 @@ uint32 get_list_array_idx_for_endpoint(partition_info *part_info, { DBUG_RETURN(list_index + test(left_endpoint ^ include_endpoint)); } - } + } while (max_list_index >= min_list_index); notfound: if (list_value < part_func_value) list_index++; @@ -6194,6 +6195,18 @@ int get_part_iter_for_interval_via_mapping(partition_info *part_info, part_iter->get_next= get_next_partition_id_list; part_iter->part_info= part_info; part_iter->ret_null_part= part_iter->ret_null_part_orig= FALSE; + if (max_endpoint_val == 0) + { + /* + We handle this special case without optimisations since it is + of little practical value but causes a great number of complex + checks later in the code. + */ + part_iter->part_nums.start= part_iter->part_nums.end= 0; + part_iter->part_nums.cur= 0; + part_iter->ret_null_part= part_iter->ret_null_part_orig= TRUE; + return -1; + } } else DBUG_ASSERT(0); -- cgit v1.2.1 From ba67edc47c6dbb17f423d51a0e51413dbd250cc0 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 30 May 2006 10:48:32 +0400 Subject: fix windows build of CSV storage/csv/ha_tina.cc: portability fix --- storage/csv/ha_tina.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/storage/csv/ha_tina.cc b/storage/csv/ha_tina.cc index b7d00caed8f..3f9320b7e19 100644 --- a/storage/csv/ha_tina.cc +++ b/storage/csv/ha_tina.cc @@ -939,7 +939,7 @@ int ha_tina::write_row(byte * buf) DBUG_RETURN(-1); /* use pwrite, as concurrent reader could have changed the position */ - if (my_write(share->tina_write_filedes, buffer.ptr(), size, + if (my_write(share->tina_write_filedes, (byte*)buffer.ptr(), size, MYF(MY_WME | MY_NABP))) DBUG_RETURN(-1); @@ -1246,7 +1246,8 @@ int ha_tina::rnd_end() /* if there is something to write, write it */ if ((write_end - write_begin) && (my_write(update_temp_file, - file_buff->ptr() + (write_begin - file_buff->start()), + (byte*)(file_buff->ptr() + + (write_begin - file_buff->start())), write_end - write_begin, MYF_RW))) goto error; @@ -1402,7 +1403,7 @@ int ha_tina::repair(THD* thd, HA_CHECK_OPT* check_opt) { write_end= min(file_buff->end(), current_position); if ((write_end - write_begin) && - (my_write(repair_file, file_buff->ptr(), + (my_write(repair_file, (byte*)file_buff->ptr(), write_end - write_begin, MYF_RW))) DBUG_RETURN(-1); -- cgit v1.2.1 From 443de04577b6dd94941ea449d45b09f083de1164 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 30 May 2006 14:49:05 +0200 Subject: Bug#17371: Unable to dump a schema with invalid views 'show create' works even on views that are short of a base-table (this throw a warning though, like you would expect). Unfortunately, this is not what mysqldump uses; it creates stand-in tables and hence requests 'show fields' on the view which fails with missing base-tables. The --force option prevents the dump from stopping at this point; furthermore this patch dumps a comment showing create for the offending view for better diagnostics. This solution was confirmed by submitter as solving their/clients' problem. Problem might become non-issue once mysqldump no longer creates stand-in tables. client/mysqldump.c: Dump a comment showing create for a view if we can't show fields for it for better diagnostics. mysql-test/r/mysqldump.result: add test for #17371 - be defensive. if we can't do a full dump on a view (incl. 'show fields' for a stand-in table), at least create a comment with the 'show create' info when --force is given. mysql-test/t/mysqldump.test: add test for #17371 - be defensive. if we can't do a full dump on a view (incl. 'show fields' for a stand-in table), at least create a comment with the 'show create' info when --force is given. --- client/mysqldump.c | 21 ++++++++++++++++++++- mysql-test/r/mysqldump.result | 9 +++++++++ mysql-test/t/mysqldump.test | 13 +++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/client/mysqldump.c b/client/mysqldump.c index ee6d7b9d12b..31882515a34 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -1494,9 +1494,15 @@ static uint get_table_structure(char *table, char *db, char *table_type, field= mysql_fetch_field_direct(result, 0); if (strcmp(field->name, "View") == 0) { + char *scv_buff = NULL; + if (verbose) fprintf(stderr, "-- It's a view, create dummy table for view\n"); + /* save "show create" statement for later */ + if ((row= mysql_fetch_row(result)) && (scv_buff=row[1])) + scv_buff= my_strdup(scv_buff, MYF(0)); + mysql_free_result(result); /* @@ -1514,9 +1520,22 @@ static uint get_table_structure(char *table, char *db, char *table_type, "SHOW FIELDS FROM %s", result_table); if (mysql_query_with_error_report(sock, 0, query_buff)) { + /* + View references invalid or privileged table/col/fun (err 1356), + so we cannot create a stand-in table. Be defensive and dump + a comment with the view's 'show create' statement. (Bug #17371) + */ + + if (mysql_errno(sock) == ER_VIEW_INVALID) + fprintf(sql_file, "\n-- failed on view %s: %s\n\n", result_table, scv_buff ? scv_buff : ""); + + my_free(scv_buff, MYF(MY_ALLOW_ZERO_PTR)); + safe_exit(EX_MYSQLERR); - DBUG_RETURN(0); + DBUG_RETURN(0); } + else + my_free(scv_buff, MYF(MY_ALLOW_ZERO_PTR)); if ((result= mysql_store_result(sock))) { diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result index 467e0818646..94c9c4f9007 100644 --- a/mysql-test/r/mysqldump.result +++ b/mysql-test/r/mysqldump.result @@ -2731,3 +2731,12 @@ p CREATE DEFINER=`root`@`localhost` PROCEDURE `p`() select 42 drop function f; drop procedure p; +create table t1 ( id serial ); +create view v1 as select * from t1; +drop table t1; +mysqldump { + +-- failed on view `v1`: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `test`.`t1`.`id` AS `id` from `t1` + +} mysqldump +drop view v1; diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test index 4076fd258e9..9cd8671bb99 100644 --- a/mysql-test/t/mysqldump.test +++ b/mysql-test/t/mysqldump.test @@ -1143,3 +1143,16 @@ show create procedure p; drop function f; drop procedure p; +# +# Bug #17371 Unable to dump a schema with invalid views +# +# +create table t1 ( id serial ); +create view v1 as select * from t1; +drop table t1; +# mysqldump gets 1356 from server, but gives us 2 +--echo mysqldump { +--error 2 +--exec $MYSQL_DUMP --force -N --compact --skip-comments test +--echo } mysqldump +drop view v1; -- cgit v1.2.1 From d948704bbaeff69310d7ccaa293b8d36f3777a59 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 30 May 2006 18:44:26 +0400 Subject: one more portability fix storage/csv/ha_tina.h: portability fix --- storage/csv/ha_tina.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storage/csv/ha_tina.h b/storage/csv/ha_tina.h index df5e4143a5c..6b72eef49ff 100644 --- a/storage/csv/ha_tina.h +++ b/storage/csv/ha_tina.h @@ -71,7 +71,7 @@ class Transparent_file { buff= (byte *) my_malloc(buff_size*sizeof(byte), MYF(MY_WME)); } ~Transparent_file() - { my_free(buff, MYF(MY_ALLOW_ZERO_PTR)); } + { my_free((gptr)buff, MYF(MY_ALLOW_ZERO_PTR)); } void init_buff(File filedes_arg) { -- cgit v1.2.1 From 63d6336465c13c010977c04a037468e55b68e9e0 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 30 May 2006 23:05:34 +0400 Subject: item_cmpfunc.cc, func_in.result, multi_update.result: After merge fix mysql-test/r/multi_update.result: After merge fix mysql-test/r/func_in.result: After merge fix sql/item_cmpfunc.cc: After merge fix --- mysql-test/r/func_in.result | 8 ++++++++ mysql-test/r/multi_update.result | 1 + sql/item_cmpfunc.cc | 23 +++++++++++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/mysql-test/r/func_in.result b/mysql-test/r/func_in.result index dd355c693d7..f758e2adfd9 100644 --- a/mysql-test/r/func_in.result +++ b/mysql-test/r/func_in.result @@ -212,12 +212,20 @@ select f2 from t1 where f2 in (1,'z'); f2 0 1 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: 'z' select f1 from t1 where 'z' in (1,f1); f1 z select * from t1 where 'z' in (f2,f1); f1 f2 +1 0 +a 1 z 2 +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'z' +Warning 1292 Truncated incorrect DOUBLE value: 'z' +Warning 1292 Truncated incorrect DOUBLE value: 'z' select * from t1 where 1 in (f2,f1); f1 f2 1 0 diff --git a/mysql-test/r/multi_update.result b/mysql-test/r/multi_update.result index 8d56cf6f2dc..b4a7aa5cb76 100644 --- a/mysql-test/r/multi_update.result +++ b/mysql-test/r/multi_update.result @@ -480,6 +480,7 @@ create table t1(a int); create table t2(a int); delete from t1,t2 using t1,t2 where t1.a=(select a from t1); ERROR HY000: You can't specify target table 't1' for update in FROM clause +drop table t1, t2; create table t1 ( c char(8) not null ) engine=innodb; insert into t1 values ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9'); insert into t1 values ('A'),('B'),('C'),('D'),('E'),('F'); diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 1701af2325f..cbf77507b84 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -63,6 +63,27 @@ static void agg_result_type(Item_result *type, Item **items, uint nitems) } +/* + Aggregates result types from the array of items. + + SYNOPSIS: + agg_cmp_type() + type [out] the aggregated type + items array of items to aggregate the type from + nitems number of items in the array + + DESCRIPTION + This function aggregates result types from the array of items. Found type + supposed to be used later for comparison of values of these items. + Aggregation itself is performed by the item_cmp_type() function. + + NOTES + Aggregation rules: + If all items are constants the type will be aggregated from all items. + If there are some non-constant items then only types of non-constant + items will be used for aggregation. +*/ + static void agg_cmp_type(THD *thd, Item_result *type, Item **items, uint nitems) { uint i; @@ -89,6 +110,8 @@ static void agg_cmp_type(THD *thd, Item_result *type, Item **items, uint nitems) } else if (is_const) type[0]= item_cmp_type(type[0], items[i]->result_type()); + else if (field && convert_constant_item(thd, field, &items[i])) + type[0]= INT_RESULT; } } -- cgit v1.2.1 From 11dbc1c48f6344cda00bae8e939d33f0ff215cd7 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 30 May 2006 17:10:53 -0700 Subject: Bug#19648 "Merge table does not work with bit types" MERGE should have HA_CAN_BIT_FIELD feature bit set or else table row is formatted incorrectly. mysql-test/r/merge.result: Bug#19648 Test for fix mysql-test/t/merge.test: Bug#19648 Test for fix sql/ha_myisammrg.h: Bug#19648 Must have HA_CAN_BIT_FIELD for BIT type support --- mysql-test/r/merge.result | 6 ++++++ mysql-test/t/merge.test | 9 +++++++++ sql/ha_myisammrg.h | 3 ++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/merge.result b/mysql-test/r/merge.result index 9a34d6fba58..568f83b7d6d 100644 --- a/mysql-test/r/merge.result +++ b/mysql-test/r/merge.result @@ -776,3 +776,9 @@ insert into t1 values ("Monty"),("WAX"),("Walrus"); alter table t1 engine=MERGE; ERROR HY000: Table storage engine for 't1' doesn't have this option drop table t1; +create table t1 (b bit(1)); +create table t2 (b bit(1)); +create table tm (b bit(1)) engine = merge union = (t1,t2); +select * from tm; +b +drop table tm, t1, t2; diff --git a/mysql-test/t/merge.test b/mysql-test/t/merge.test index 7ea14a811ed..400279a826b 100644 --- a/mysql-test/t/merge.test +++ b/mysql-test/t/merge.test @@ -390,4 +390,13 @@ insert into t1 values ("Monty"),("WAX"),("Walrus"); alter table t1 engine=MERGE; drop table t1; +# +# BUG#19648 - Merge table does not work with bit types +# +create table t1 (b bit(1)); +create table t2 (b bit(1)); +create table tm (b bit(1)) engine = merge union = (t1,t2); +select * from tm; +drop table tm, t1, t2; + # End of 5.0 tests diff --git a/sql/ha_myisammrg.h b/sql/ha_myisammrg.h index c762b7c286e..a73f368c51d 100644 --- a/sql/ha_myisammrg.h +++ b/sql/ha_myisammrg.h @@ -37,7 +37,8 @@ class ha_myisammrg: public handler { return (HA_REC_NOT_IN_SEQ | HA_AUTO_PART_KEY | HA_READ_RND_SAME | HA_NULL_IN_KEY | HA_CAN_INDEX_BLOBS | HA_FILE_BASED | - HA_CAN_INSERT_DELAYED | HA_ANY_INDEX_MAY_BE_UNIQUE); + HA_CAN_INSERT_DELAYED | HA_ANY_INDEX_MAY_BE_UNIQUE | + HA_CAN_BIT_FIELD); } ulong index_flags(uint inx, uint part, bool all_parts) const { -- cgit v1.2.1 From 883f72a6b4e21f5d133bb09260f77481ac6f49d2 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 31 May 2006 10:50:35 +0400 Subject: fix csv test failure on aix storage/csv/ha_tina.cc: one cannot sync file, opened for reading --- storage/csv/ha_tina.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/storage/csv/ha_tina.cc b/storage/csv/ha_tina.cc index 3f9320b7e19..35d7fc8d4a3 100644 --- a/storage/csv/ha_tina.cc +++ b/storage/csv/ha_tina.cc @@ -1267,8 +1267,10 @@ int ha_tina::rnd_end() } - if (my_close(update_temp_file, MYF(0))) + if (my_sync(update_temp_file, MYF(MY_WME)) || + my_close(update_temp_file, MYF(0))) DBUG_RETURN(-1); + share->update_file_opened= FALSE; if (share->tina_write_opened) @@ -1292,9 +1294,8 @@ int ha_tina::rnd_end() share->data_file_name, MYF(0))) DBUG_RETURN(-1); - /* Open the file again and sync it */ - if (((data_file= my_open(share->data_file_name, O_RDONLY, MYF(0))) == -1) - || my_sync(data_file, MYF(MY_WME))) + /* Open the file again */ + if (((data_file= my_open(share->data_file_name, O_RDONLY, MYF(0))) == -1)) DBUG_RETURN(-1); /* The datafile is consistent at this point and the write filedes is -- cgit v1.2.1 From 32a7fafe093d9d3a84eca63a6e4aad02c508539f Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 31 May 2006 00:07:58 -0700 Subject: Bug#12096 "Add line for non-executable stack in .s files" Fix so that configure will use "--noexecstack" for assembler if gcc supports option and compiled C doesn't need executable stack. config/ac-macros/compiler_flag.m4: Bug#12096 Add macro to check if "--noexecstack" should be used when compiling assembler configure.in: Bug#12096 Add macro to check if "--noexecstack" should be used when compiling assembler strings/Makefile.am: Bug#12096 Automake knows how to handle assembler --- config/ac-macros/compiler_flag.m4 | 22 ++++++++++++++++++++++ configure.in | 4 ++++ strings/Makefile.am | 6 ------ 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/config/ac-macros/compiler_flag.m4 b/config/ac-macros/compiler_flag.m4 index a236f61a198..9dda6da72fa 100644 --- a/config/ac-macros/compiler_flag.m4 +++ b/config/ac-macros/compiler_flag.m4 @@ -38,3 +38,25 @@ AC_DEFUN([AC_SYS_OS_COMPILER_FLAG], fi ]) +AC_DEFUN([AC_CHECK_NOEXECSTACK], +[ + AC_CACHE_CHECK(whether --noexecstack is desirable for .S files, + mysql_cv_as_noexecstack, [dnl + cat > conftest.c <&AS_MESSAGE_LOG_FD]) \ + && grep -q .note.GNU-stack conftest.s \ + && AC_TRY_COMMAND([${CC-cc} $CCASFLAGS $CPPFLAGS -Wa,--noexecstack + -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD]) + then + mysql_cv_as_noexecstack=yes + else + mysql_cv_as_noexecstack=no + fi + rm -f conftest*]) + if test $mysql_cv_as_noexecstack = yes; then + CCASFLAGS="$CCASFLAGS -Wa,--noexecstack" + fi +]) diff --git a/configure.in b/configure.in index ac1c122c2ea..1b44081a4a0 100644 --- a/configure.in +++ b/configure.in @@ -515,6 +515,10 @@ AM_PROG_CC_STDC # We need an assembler, too AM_PROG_AS +CCASFLAGS="$CCASFLAGS $ASFLAGS" + +# Check if we need noexec stack for assembler +AC_CHECK_NOEXECSTACK if test "$am_cv_prog_cc_stdc" = "no" then diff --git a/strings/Makefile.am b/strings/Makefile.am index c43cf0f290a..7ee115c09e5 100644 --- a/strings/Makefile.am +++ b/strings/Makefile.am @@ -66,12 +66,6 @@ conf_to_src_LDFLAGS= @NOINST_LDFLAGS@ #strtoull.o: @CHARSET_OBJS@ -if ASSEMBLER -# On Linux gcc can compile the assembly files -%.o : %.s - $(AS) $(ASFLAGS) -o $@ $< -endif - FLAGS=$(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) @NOINST_LDFLAGS@ str_test: str_test.c $(pkglib_LIBRARIES) -- cgit v1.2.1 From c69ba2559bd1b866895186d7e41d0a1e17e25714 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 31 May 2006 13:36:28 +0200 Subject: Bug#18462: mysqldump does not dump view structures correctly (The above problem only occurs with -T -- create a separate file for each table / view.) This ChangeSet results in correct output of view- information while omitting the information for the view's stand-in table. The rationale is that with -T, the user is likely interested in transferring part of a database, not the db in its entirety (that would be difficult as replay order is obscure, the files being named for the table/view they contain rather than getting a sequence number). client/mysqldump.c: Added missing fclose(). Before, a view's stand-in table would get dumped in get_table_structure(), and the file would remain open. get_view_structure() would re-open the same file and write to it, resulting in garbage. The way we handle it now, the table-struct gets closed, then the opening of the view-struct (same name) overwrites it. (The SQL for the view drop-if-exists the table, anyway.) If this were not desired and we wanted SQL for the views that contains the create for the stand-in table, we'd hand a mode to open_sql_file_for_table(), which would feature O_APPEND in get_view_structure(), but not in get_table_structure(). mysql-test/r/mysqldump.result: prove mysqldump -T (each item gets its own file) dumps views correctly mysql-test/t/mysqldump.test: prove mysqldump -T (each item gets its own file) dumps views correctly --- client/mysqldump.c | 3 +++ mysql-test/r/mysqldump.result | 19 +++++++++++++++++++ mysql-test/t/mysqldump.test | 21 +++++++++++++++++++++ 3 files changed, 43 insertions(+) diff --git a/client/mysqldump.c b/client/mysqldump.c index ee6d7b9d12b..bc41ebb486f 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -1554,6 +1554,9 @@ static uint get_table_structure(char *table, char *db, char *table_type, } mysql_free_result(result); + if (path) + my_fclose(sql_file, MYF(MY_WME)); + was_views= 1; DBUG_RETURN(0); } diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result index 467e0818646..2d5be53ea6f 100644 --- a/mysql-test/r/mysqldump.result +++ b/mysql-test/r/mysqldump.result @@ -2717,6 +2717,25 @@ end AFTER # root@localhost drop trigger tr1; drop trigger tr2; drop table t1, t2; +create table t (qty int, price int); +insert into t values(3, 50); +insert into t values(5, 51); +create view v1 as select qty, price, qty*price as value from t; +create view v2 as select qty from v1; +mysqldump { +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `v1` AS select `t`.`qty` AS `qty`,`t`.`price` AS `price`,(`t`.`qty` * `t`.`price`) AS `value` from `t` */; + +} mysqldump { +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `v2` AS select `v1`.`qty` AS `qty` from `v1` */; + +} mysqldump +drop view v1; +drop view v2; +drop table t; /*!50003 CREATE FUNCTION `f`() RETURNS bigint(20) return 42 */| /*!50003 CREATE PROCEDURE `p`() diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test index 4076fd258e9..f88b0f7cd2b 100644 --- a/mysql-test/t/mysqldump.test +++ b/mysql-test/t/mysqldump.test @@ -1127,6 +1127,27 @@ drop trigger tr2; drop table t1, t2; +# +# Bug#18462 mysqldump does not dump view structures correctly +# +# +create table t (qty int, price int); +insert into t values(3, 50); +insert into t values(5, 51); +create view v1 as select qty, price, qty*price as value from t; +create view v2 as select qty from v1; +--echo mysqldump { +--exec $MYSQL_DUMP --compact -F --tab . test +--exec cat v1.sql +--echo } mysqldump { +--exec cat v2.sql +--echo } mysqldump +--rm v.sql t.sql t.txt +drop view v1; +drop view v2; +drop table t; + + # # Bug#14857 Reading dump files with single statement stored routines fails. # fixed by patch for bug#16878 -- cgit v1.2.1 From e9b5cafa8b2a95a0bf414922ac61335ea199c765 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 31 May 2006 19:21:52 +0200 Subject: Bug#19995 (Extreneous table maps generated for statements that do not generate rows): Switched to writing out table maps for tables that are locked when the first row in a statement is seen. mysql-test/include/master-slave.inc: Moved code to reset master and slave into separate file. mysql-test/r/binlog_row_blackhole.result: Result change mysql-test/r/binlog_row_mix_innodb_myisam.result: Result change mysql-test/r/ndb_binlog_ignore_db.result: Result change mysql-test/r/rpl_ndb_charset.result: Result change mysql-test/r/rpl_row_basic_11bugs.result: Result change mysql-test/r/rpl_row_charset.result: Result change mysql-test/r/rpl_row_create_table.result: Result change mysql-test/t/rpl_row_basic_11bugs.test: Added test to check that no events are generated when no rows are changed. mysql-test/t/rpl_row_create_table.test: Master log position changed sql/handler.cc: Adding function write_locked_table_maps() that will write table maps for all tables locked for write. Using "table->in_use" instead of "current_thd" since tables are now locked when the function is called. Removing old code to write table map. sql/log_event.cc: Added assertion sql/sql_class.cc: Removing code to write "dummy termination event". sql/sql_class.h: Adding getter for binlog_table_maps. sql/sql_insert.cc: Setting thd->lock before calling write_record for the execution of CREATE-SELECT and INSERT-SELECT since they keep multiple locks in the air at the same time. mysql-test/include/master-slave-reset.inc: New BitKeeper file ``mysql-test/include/master-slave-reset.inc'' --- mysql-test/include/master-slave-reset.inc | 22 +++++ mysql-test/include/master-slave.inc | 24 +---- mysql-test/r/binlog_row_blackhole.result | 12 --- mysql-test/r/binlog_row_mix_innodb_myisam.result | 38 ++++---- mysql-test/r/ndb_binlog_ignore_db.result | 2 - mysql-test/r/rpl_ndb_charset.result | 10 --- mysql-test/r/rpl_row_basic_11bugs.result | 17 ++++ mysql-test/r/rpl_row_charset.result | 10 --- mysql-test/r/rpl_row_create_table.result | 22 ++--- mysql-test/t/rpl_row_basic_11bugs.test | 15 ++++ mysql-test/t/rpl_row_create_table.test | 8 +- sql/handler.cc | 108 ++++++++++++++--------- sql/log_event.cc | 1 + sql/sql_class.cc | 25 ------ sql/sql_class.h | 17 ++-- sql/sql_insert.cc | 32 ++++++- 16 files changed, 197 insertions(+), 166 deletions(-) create mode 100644 mysql-test/include/master-slave-reset.inc diff --git a/mysql-test/include/master-slave-reset.inc b/mysql-test/include/master-slave-reset.inc new file mode 100644 index 00000000000..204c6c5f5f6 --- /dev/null +++ b/mysql-test/include/master-slave-reset.inc @@ -0,0 +1,22 @@ +connection slave; +#we expect STOP SLAVE to produce a warning as the slave is stopped +#(the server was started with skip-slave-start) +--disable_warnings +stop slave; +--wait_for_slave_to_stop +--enable_warnings +connection master; +--disable_warnings +--disable_query_log +use test; +--enable_query_log +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +--enable_warnings +reset master; +connection slave; +reset slave; +# Clean up old test tables +--disable_warnings +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +--enable_warnings +start slave; diff --git a/mysql-test/include/master-slave.inc b/mysql-test/include/master-slave.inc index ea09f4e842b..fe1dacb433e 100644 --- a/mysql-test/include/master-slave.inc +++ b/mysql-test/include/master-slave.inc @@ -2,28 +2,8 @@ connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,); connect (master1,127.0.0.1,root,,test,$MASTER_MYPORT,); connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT,); connect (slave1,127.0.0.1,root,,test,$SLAVE_MYPORT,); -connection slave; -#we expect STOP SLAVE to produce a warning as the slave is stopped -#(the server was started with skip-slave-start) ---disable_warnings -stop slave; ---enable_warnings ---require r/slave-stopped.result -show status like 'Slave_running'; -connection master; ---disable_warnings -drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; ---enable_warnings -reset master; -connection slave; -reset slave; -# Clean up old test tables ---disable_warnings -drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; ---enable_warnings -start slave; ---require r/slave-running.result -show status like 'Slave_running'; + +-- source include/master-slave-reset.inc # Set the default connection to 'master' connection master; diff --git a/mysql-test/r/binlog_row_blackhole.result b/mysql-test/r/binlog_row_blackhole.result index 42bf7a10888..140d7d4da46 100644 --- a/mysql-test/r/binlog_row_blackhole.result +++ b/mysql-test/r/binlog_row_blackhole.result @@ -118,12 +118,6 @@ master-bin.000001 # Query 1 # use `test`; COMMIT master-bin.000001 # Table_map 1 # table_id: # (test.t1) master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F master-bin.000001 # Query 1 # use `test`; COMMIT -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Query 1 # use `test`; COMMIT -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Query 1 # use `test`; COMMIT master-bin.000001 # Query 1 # use `test`; create table t2 (a varchar(200)) engine=blackhole master-bin.000001 # Table_map 1 # table_id: # (test.t2) master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F @@ -131,12 +125,6 @@ master-bin.000001 # Query 1 # use `test`; COMMIT master-bin.000001 # Query 1 # use `test`; alter table t1 add b int master-bin.000001 # Query 1 # use `test`; alter table t1 drop b master-bin.000001 # Query 1 # use `test`; create table t3 like t1 -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Query 1 # use `test`; COMMIT -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Query 1 # use `test`; COMMIT drop table t1,t2,t3; reset master; create table t1 (a int) engine=blackhole; diff --git a/mysql-test/r/binlog_row_mix_innodb_myisam.result b/mysql-test/r/binlog_row_mix_innodb_myisam.result index 078a95d5abd..25ef16284fa 100644 --- a/mysql-test/r/binlog_row_mix_innodb_myisam.result +++ b/mysql-test/r/binlog_row_mix_innodb_myisam.result @@ -262,27 +262,23 @@ master-bin.000001 209 Write_rows 1 # table_id: # flags: STMT_END_F master-bin.000001 243 Table_map 1 # table_id: # (test.t1) master-bin.000001 282 Write_rows 1 # table_id: # flags: STMT_END_F master-bin.000001 316 Xid 1 # COMMIT /* xid= */ -master-bin.000001 343 Table_map 1 # table_id: # (test.t1) -master-bin.000001 382 Query 1 # use `test`; delete from t1 -master-bin.000001 459 Xid 1 # COMMIT /* xid= */ -master-bin.000001 486 Table_map 1 # table_id: # (test.t2) -master-bin.000001 525 Query 1 # use `test`; delete from t2 -master-bin.000001 602 Xid 1 # COMMIT /* xid= */ -master-bin.000001 629 Query 1 # use `test`; alter table t2 engine=MyISAM -master-bin.000001 720 Table_map 1 # table_id: # (test.t1) -master-bin.000001 759 Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 793 Xid 1 # COMMIT /* xid= */ -master-bin.000001 820 Query 1 # use `test`; BEGIN -master-bin.000001 888 Table_map 1 # table_id: # (test.t1) -master-bin.000001 927 Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 956 Xid 1 # COMMIT /* xid= */ -master-bin.000001 983 Query 1 # use `test`; drop table t1,t2 -master-bin.000001 1062 Query 1 # use `test`; create table t0 (n int) -master-bin.000001 1148 Table_map 1 # table_id: # (test.t0) -master-bin.000001 1187 Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 1221 Table_map 1 # table_id: # (test.t0) -master-bin.000001 1260 Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 1294 Query 1 # use `test`; create table t2 (n int) engine=innodb +master-bin.000001 343 Query 1 # use `test`; delete from t1 +master-bin.000001 420 Xid 1 # COMMIT /* xid= */ +master-bin.000001 447 Query 1 # use `test`; delete from t2 +master-bin.000001 524 Xid 1 # COMMIT /* xid= */ +master-bin.000001 551 Query 1 # use `test`; alter table t2 engine=MyISAM +master-bin.000001 642 Table_map 1 # table_id: # (test.t1) +master-bin.000001 681 Write_rows 1 # table_id: # flags: STMT_END_F +master-bin.000001 715 Xid 1 # COMMIT /* xid= */ +master-bin.000001 742 Table_map 1 # table_id: # (test.t2) +master-bin.000001 781 Write_rows 1 # table_id: # flags: STMT_END_F +master-bin.000001 815 Query 1 # use `test`; drop table t1,t2 +master-bin.000001 894 Query 1 # use `test`; create table t0 (n int) +master-bin.000001 980 Table_map 1 # table_id: # (test.t0) +master-bin.000001 1019 Write_rows 1 # table_id: # flags: STMT_END_F +master-bin.000001 1053 Table_map 1 # table_id: # (test.t0) +master-bin.000001 1092 Write_rows 1 # table_id: # flags: STMT_END_F +master-bin.000001 1126 Query 1 # use `test`; create table t2 (n int) engine=innodb do release_lock("lock1"); drop table t0,t2; reset master; diff --git a/mysql-test/r/ndb_binlog_ignore_db.result b/mysql-test/r/ndb_binlog_ignore_db.result index 2f411fcd03d..8dc2c1ff1f8 100644 --- a/mysql-test/r/ndb_binlog_ignore_db.result +++ b/mysql-test/r/ndb_binlog_ignore_db.result @@ -7,6 +7,4 @@ insert into t1 values (1, 1); show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # use `test`; drop table if exists t1 -master-bin.000001 # Table_map # # table_id: # (mysql.proc) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F drop database mysqltest; diff --git a/mysql-test/r/rpl_ndb_charset.result b/mysql-test/r/rpl_ndb_charset.result index 31a7e1368f3..0ce4446c8a5 100644 --- a/mysql-test/r/rpl_ndb_charset.result +++ b/mysql-test/r/rpl_ndb_charset.result @@ -112,16 +112,10 @@ drop database mysqltest3; show binlog events from 102; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query 1 # drop database if exists mysqltest2 -master-bin.000001 # Table_map 1 # table_id: # (mysql.proc) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F master-bin.000001 # Query 1 # drop database if exists mysqltest3 -master-bin.000001 # Table_map 1 # table_id: # (mysql.proc) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F master-bin.000001 # Query 1 # create database mysqltest2 character set latin2 master-bin.000001 # Query 1 # create database mysqltest3 master-bin.000001 # Query 1 # drop database mysqltest3 -master-bin.000001 # Table_map 1 # table_id: # (mysql.proc) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F master-bin.000001 # Query 1 # create database mysqltest3 master-bin.000001 # Query 1 # use `mysqltest2`; create table t1 (a int auto_increment primary key, b varchar(100)) master-bin.000001 # Table_map 1 # table_id: # (mysqltest2.t1) @@ -147,11 +141,7 @@ master-bin.000001 # Query 1 # use `mysqltest2`; truncate table t1 master-bin.000001 # Table_map 1 # table_id: # (mysqltest2.t1) master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F master-bin.000001 # Query 1 # drop database mysqltest2 -master-bin.000001 # Table_map 1 # table_id: # (mysql.proc) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F master-bin.000001 # Query 1 # drop database mysqltest3 -master-bin.000001 # Table_map 1 # table_id: # (mysql.proc) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F select "--- --global--" as ""; --- --global-- diff --git a/mysql-test/r/rpl_row_basic_11bugs.result b/mysql-test/r/rpl_row_basic_11bugs.result index 4ed7d54647b..7cd895f2041 100644 --- a/mysql-test/r/rpl_row_basic_11bugs.result +++ b/mysql-test/r/rpl_row_basic_11bugs.result @@ -44,3 +44,20 @@ t1 USE test_ignore; ERROR 42000: Unknown database 'test_ignore' DROP DATABASE test_ignore; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +CREATE TABLE t1 (a INT); +DELETE FROM t1; +INSERT INTO t1 VALUES (1),(2); +DELETE FROM t1 WHERE a = 0; +UPDATE t1 SET a=99 WHERE a = 0; +SHOW BINLOG EVENTS; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.11-beta-debug-log, Binlog ver: 4 +master-bin.000001 102 Query 1 188 use `test`; CREATE TABLE t1 (a INT) +master-bin.000001 188 Query 1 265 use `test`; DELETE FROM t1 +master-bin.000001 265 Table_map 1 304 table_id: # (test.t1) +master-bin.000001 304 Write_rows 1 343 table_id: # flags: STMT_END_F diff --git a/mysql-test/r/rpl_row_charset.result b/mysql-test/r/rpl_row_charset.result index d80b5fa60de..79cf75c8cc1 100644 --- a/mysql-test/r/rpl_row_charset.result +++ b/mysql-test/r/rpl_row_charset.result @@ -112,16 +112,10 @@ drop database mysqltest3; show binlog events from 102; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query 1 # drop database if exists mysqltest2 -master-bin.000001 # Table_map 1 # table_id: # (mysql.proc) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F master-bin.000001 # Query 1 # drop database if exists mysqltest3 -master-bin.000001 # Table_map 1 # table_id: # (mysql.proc) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F master-bin.000001 # Query 1 # create database mysqltest2 character set latin2 master-bin.000001 # Query 1 # create database mysqltest3 master-bin.000001 # Query 1 # drop database mysqltest3 -master-bin.000001 # Table_map 1 # table_id: # (mysql.proc) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F master-bin.000001 # Query 1 # create database mysqltest3 master-bin.000001 # Query 1 # use `mysqltest2`; create table t1 (a int auto_increment primary key, b varchar(100)) master-bin.000001 # Table_map 1 # table_id: # (mysqltest2.t1) @@ -147,11 +141,7 @@ master-bin.000001 # Query 1 # use `mysqltest2`; truncate table t1 master-bin.000001 # Table_map 1 # table_id: # (mysqltest2.t1) master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F master-bin.000001 # Query 1 # drop database mysqltest2 -master-bin.000001 # Table_map 1 # table_id: # (mysql.proc) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F master-bin.000001 # Query 1 # drop database mysqltest3 -master-bin.000001 # Table_map 1 # table_id: # (mysql.proc) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F select "--- --global--" as ""; --- --global-- diff --git a/mysql-test/r/rpl_row_create_table.result b/mysql-test/r/rpl_row_create_table.result index b3a8f5e1a0f..f314aa39b81 100644 --- a/mysql-test/r/rpl_row_create_table.result +++ b/mysql-test/r/rpl_row_create_table.result @@ -127,7 +127,7 @@ NULL 5 10 NULL 6 12 CREATE TABLE t7 (UNIQUE(b)) SELECT a,b FROM tt3; ERROR 23000: Duplicate entry '2' for key 'b' -SHOW BINLOG EVENTS FROM 1326; +SHOW BINLOG EVENTS FROM 1256; Log_name Pos Event_type Server_id End_log_pos Info CREATE TABLE t7 (a INT, b INT UNIQUE); INSERT INTO t7 SELECT a,b FROM tt3; @@ -137,11 +137,11 @@ a b 1 2 2 4 3 6 -SHOW BINLOG EVENTS FROM 1326; +SHOW BINLOG EVENTS FROM 1256; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 1326 Query 1 1426 use `test`; CREATE TABLE t7 (a INT, b INT UNIQUE) -master-bin.000001 1426 Table_map 1 1466 table_id: # (test.t7) -master-bin.000001 1466 Write_rows 1 1522 table_id: # flags: STMT_END_F +master-bin.000001 1256 Query 1 1356 use `test`; CREATE TABLE t7 (a INT, b INT UNIQUE) +master-bin.000001 1356 Table_map 1 1396 table_id: # (test.t7) +master-bin.000001 1396 Write_rows 1 1452 table_id: # flags: STMT_END_F SELECT * FROM t7 ORDER BY a,b; a b 1 2 @@ -154,10 +154,10 @@ INSERT INTO t7 SELECT a,b FROM tt4; ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back -SHOW BINLOG EVENTS FROM 1522; +SHOW BINLOG EVENTS FROM 1452; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 1522 Table_map 1 1562 table_id: # (test.t7) -master-bin.000001 1562 Write_rows 1 1618 table_id: # flags: STMT_END_F +master-bin.000001 1452 Table_map 1 1492 table_id: # (test.t7) +master-bin.000001 1492 Write_rows 1 1548 table_id: # flags: STMT_END_F SELECT * FROM t7 ORDER BY a,b; a b 1 2 @@ -191,10 +191,10 @@ Create Table CREATE TABLE `t9` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 -SHOW BINLOG EVENTS FROM 1618; +SHOW BINLOG EVENTS FROM 1548; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 1618 Query 1 1704 use `test`; CREATE TABLE t8 LIKE t4 -master-bin.000001 1704 Query 1 1843 use `test`; CREATE TABLE `t9` ( +master-bin.000001 1548 Query 1 1634 use `test`; CREATE TABLE t8 LIKE t4 +master-bin.000001 1634 Query 1 1773 use `test`; CREATE TABLE `t9` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL ) diff --git a/mysql-test/t/rpl_row_basic_11bugs.test b/mysql-test/t/rpl_row_basic_11bugs.test index 3a686ea6b3d..bd582ce349a 100644 --- a/mysql-test/t/rpl_row_basic_11bugs.test +++ b/mysql-test/t/rpl_row_basic_11bugs.test @@ -36,3 +36,18 @@ USE test_ignore; connection master; DROP DATABASE test_ignore; sync_slave_with_master; + +# Bug#19995: Extreneous table maps generated for statements that does +# not generate rows +--disable_query_log +--source include/master-slave-reset.inc +--enable_query_log + +connection master; +CREATE TABLE t1 (a INT); +DELETE FROM t1; +INSERT INTO t1 VALUES (1),(2); +DELETE FROM t1 WHERE a = 0; +UPDATE t1 SET a=99 WHERE a = 0; +--replace_regex /table_id: [0-9]+/table_id: #/ +SHOW BINLOG EVENTS; diff --git a/mysql-test/t/rpl_row_create_table.test b/mysql-test/t/rpl_row_create_table.test index 0cb0fd766a3..8a8ea01d688 100644 --- a/mysql-test/t/rpl_row_create_table.test +++ b/mysql-test/t/rpl_row_create_table.test @@ -67,7 +67,7 @@ connection master; CREATE TABLE t7 (UNIQUE(b)) SELECT a,b FROM tt3; # Shouldn't be written to the binary log --replace_regex /table_id: [0-9]+/table_id: #/ -SHOW BINLOG EVENTS FROM 1326; +SHOW BINLOG EVENTS FROM 1256; # Test that INSERT-SELECT works the same way as for SBR. CREATE TABLE t7 (a INT, b INT UNIQUE); @@ -76,7 +76,7 @@ INSERT INTO t7 SELECT a,b FROM tt3; SELECT * FROM t7 ORDER BY a,b; # Should be written to the binary log --replace_regex /table_id: [0-9]+/table_id: #/ -SHOW BINLOG EVENTS FROM 1326; +SHOW BINLOG EVENTS FROM 1256; sync_slave_with_master; SELECT * FROM t7 ORDER BY a,b; @@ -87,7 +87,7 @@ BEGIN; INSERT INTO t7 SELECT a,b FROM tt4; ROLLBACK; --replace_regex /table_id: [0-9]+/table_id: #/ -SHOW BINLOG EVENTS FROM 1522; +SHOW BINLOG EVENTS FROM 1452; SELECT * FROM t7 ORDER BY a,b; sync_slave_with_master; SELECT * FROM t7 ORDER BY a,b; @@ -101,7 +101,7 @@ CREATE TEMPORARY TABLE tt6 LIKE tt4; --query_vertical SHOW CREATE TABLE t8 --query_vertical SHOW CREATE TABLE t9 --replace_regex /table_id: [0-9]+/table_id: #/ -SHOW BINLOG EVENTS FROM 1618; +SHOW BINLOG EVENTS FROM 1548; sync_slave_with_master; --echo **** On Slave **** --query_vertical SHOW CREATE TABLE t8 diff --git a/sql/handler.cc b/sql/handler.cc index b9ef05a33c2..dfa3789f6a0 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -3199,6 +3199,58 @@ namespace { } } +/** + Write table maps for all (manually or automatically) locked tables + to the binary log. + + This function will generate and write table maps for all tables + that are locked by the thread 'thd'. Either manually locked + (stored in THD::locked_tables) and automatically locked (stored in + THD::lock) are considered. + + See THD::lock and THD::locked_tables for more information. + */ +static int +write_locked_table_maps(THD *thd) +{ + DBUG_ENTER("write_locked_table_maps"); + DBUG_PRINT("enter", ("thd=%p, thd->lock=%p, thd->locked_tables=%p", + thd, thd->lock, thd->locked_tables)); + + if (thd->get_binlog_table_maps() == 0) + { + /* + Exactly one table has to be locked, otherwise this code is not + guaranteed to work. + */ + DBUG_ASSERT((thd->lock != NULL) + (thd->locked_tables != NULL) == 1); + + MYSQL_LOCK *lock= thd->lock ? thd->lock : thd->locked_tables; + DBUG_ASSERT(lock->table_count > 0); + TABLE **const end_ptr= lock->table + lock->table_count; + for (TABLE **table_ptr= lock->table ; + table_ptr != end_ptr ; + ++table_ptr) + { + TABLE *const table= *table_ptr; + DBUG_PRINT("info", ("Checking table %s", table->s->table_name)); + if (table->current_lock == F_WRLCK && + check_table_binlog_row_based(thd, table)) + { + int const has_trans= table->file->has_transactions(); + int const error= thd->binlog_write_table_map(table, has_trans); + /* + If an error occurs, it is the responsibility of the caller to + roll back the transaction. + */ + if (unlikely(error)) + DBUG_RETURN(1); + } + } + } + DBUG_RETURN(0); +} + template int binlog_log_row(TABLE* table, const byte *before_record, const byte *after_record) @@ -3206,7 +3258,7 @@ template int binlog_log_row(TABLE* table, if (table->file->is_injective()) return 0; bool error= 0; - THD *const thd= current_thd; + THD *const thd= table->in_use; if (check_table_binlog_row_based(thd, table)) { @@ -3215,17 +3267,26 @@ template int binlog_log_row(TABLE* table, uint32 bitbuf[BITMAP_STACKBUF_SIZE/sizeof(uint32)]; uint n_fields= table->s->fields; my_bool use_bitbuf= n_fields <= sizeof(bitbuf)*8; + + /* + If there are no table maps written to the binary log, this is + the first row handled in this statement. In that case, we need + to write table maps for all locked tables to the binary log. + */ if (likely(!(error= bitmap_init(&cols, use_bitbuf ? bitbuf : NULL, (n_fields + 7) & ~7UL, false)))) { bitmap_set_all(&cols); - error= - RowsEventT::binlog_row_logging_function(thd, table, - table->file->has_transactions(), - &cols, table->s->fields, - before_record, after_record); + if (likely(!(error= write_locked_table_maps(thd)))) + { + error= + RowsEventT::binlog_row_logging_function(thd, table, + table->file->has_transactions(), + &cols, table->s->fields, + before_record, after_record); + } if (!use_bitbuf) bitmap_free(&cols); } @@ -3251,41 +3312,6 @@ int handler::ha_external_lock(THD *thd, int lock_type) int error; if (unlikely(error= external_lock(thd, lock_type))) DBUG_RETURN(error); -#ifdef HAVE_ROW_BASED_REPLICATION - if (table->file->is_injective()) - DBUG_RETURN(0); - - /* - There is a number of statements that are logged statement-based - but call external lock. For these, we do not need to generate a - table map. - - TODO: The need for this switch is an indication that the model for - locking combined with row-based replication needs to be looked - over. Ideally, no such special handling should be needed. - */ - switch (thd->lex->sql_command) { - case SQLCOM_TRUNCATE: - case SQLCOM_ALTER_TABLE: - case SQLCOM_OPTIMIZE: - case SQLCOM_REPAIR: - DBUG_RETURN(0); - default: - break; - } - - /* - If we are locking a table for writing, we generate a table map. - For all other kinds of locks, we don't do anything. - */ - if (lock_type == F_WRLCK && check_table_binlog_row_based(thd, table)) - { - int const has_trans= table->file->has_transactions(); - error= thd->binlog_write_table_map(table, has_trans); - if (unlikely(error)) - DBUG_RETURN(error); - } -#endif DBUG_RETURN(0); } diff --git a/sql/log_event.cc b/sql/log_event.cc index ab9fa2975a1..e78a6fc5865 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -5602,6 +5602,7 @@ int Rows_log_event::exec_event(st_relay_log_info *rli) bool Rows_log_event::write_data_header(IO_CACHE *file) { byte buf[ROWS_HEADER_LEN]; // No need to init the buffer + DBUG_ASSERT(m_table_id != ~0UL); DBUG_EXECUTE_IF("old_row_based_repl_4_byte_map_id_master", { int4store(buf + 0, m_table_id); diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 916bcd94e0e..b0f399b3c12 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -2624,31 +2624,6 @@ int THD::binlog_flush_pending_rows_event(bool stmt_end) error= mysql_bin_log.flush_and_set_pending_rows_event(this, 0); } - else if (stmt_end && binlog_table_maps > 0) - { /* there is no pending event at this point */ - /* - If pending is null and we are going to end the statement, we - have to write an extra, empty, binrow event so that the slave - knows to discard the tables it has received. Otherwise, the - table maps written this far will be included in the table maps - for the following statement. - - TODO: Remove the need for a dummy event altogether. It can be - fixed if we can write table maps to a memory buffer before - writing the first binrow event. We can then flush and clear the - memory buffer with table map events before writing the first - binrow event. In the event of a crash, nothing is lost since - the table maps are only needed if there are binrow events. - */ - - Rows_log_event *ev= - new Write_rows_log_event(this, 0, ~0UL, 0, FALSE); - ev->set_flags(Rows_log_event::STMT_END_F); - binlog_set_pending_rows_event(ev); - - error= mysql_bin_log.flush_and_set_pending_rows_event(this, 0); - binlog_table_maps= 0; - } DBUG_RETURN(error); } diff --git a/sql/sql_class.h b/sql/sql_class.h index 0135763b3b2..11225bb85fa 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -941,16 +941,18 @@ public: int binlog_flush_pending_rows_event(bool stmt_end); void binlog_delete_pending_rows_event(); -private: #ifdef HAVE_ROW_BASED_REPLICATION +private: uint binlog_table_maps; // Number of table maps currently in the binlog -#endif /* HAVE_ROW_BASED_REPLICATION */ - public: - + uint get_binlog_table_maps() const { + return binlog_table_maps; + } +#endif /* HAVE_ROW_BASED_REPLICATION */ #endif /* MYSQL_CLIENT */ #ifndef MYSQL_CLIENT +public: enum enum_binlog_query_type { /* The query can be logged row-based or statement-based @@ -1572,6 +1574,9 @@ class select_insert :public select_result_interceptor { bool send_eof(); /* not implemented: select_insert is never re-used in prepared statements */ void cleanup(); + +protected: + MYSQL_LOCK *lock; }; @@ -1581,7 +1586,6 @@ class select_create: public select_insert { List *extra_fields; List *keys; HA_CREATE_INFO *create_info; - MYSQL_LOCK *lock; Field **field; public: select_create (TABLE_LIST *table, @@ -1590,8 +1594,7 @@ public: List &keys_par, List &select_fields,enum_duplicates duplic, bool ignore) :select_insert (NULL, NULL, &select_fields, 0, 0, duplic, ignore), create_table(table), - extra_fields(&fields_par),keys(&keys_par), create_info(create_info_par), - lock(0) + extra_fields(&fields_par),keys(&keys_par), create_info(create_info_par) {} int prepare(List &list, SELECT_LEX_UNIT *u); diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index aed8b12d2c1..8dee3b054b3 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -2152,6 +2152,7 @@ select_insert::select_insert(TABLE_LIST *table_list_par, TABLE *table_par, bool ignore_check_option_errors) :table_list(table_list_par), table(table_par), fields(fields_par), last_insert_id(0), + lock(0), insert_into_view(table_list_par && table_list_par->view != 0) { bzero((char*) &info,sizeof(info)); @@ -2348,7 +2349,36 @@ bool select_insert::send_data(List &values) DBUG_RETURN(1); } } - if (!(error= write_record(thd, table, &info))) + + /* + The thd->lock lock contain the locks for the select part of the + statement and the 'lock' variable contain the write lock for the + currently locked table that is being created or inserted + into. However, the row-based replication will investigate the + thd->lock to decide what table maps are to be written, so this one + has to contain the tables locked for writing. To be able to write + table map for the table being created, we temporarily set + THD::lock to select_insert::lock while writing the record to the + storage engine. We cannot set this elsewhere, since the execution + of a stored function inside the select expression might cause the + lock structures to be NULL. + */ + + { + MYSQL_LOCK *saved_lock= NULL; + if (lock) + { + saved_lock= thd->lock; + thd->lock= lock; + } + + error= write_record(thd, table, &info); + + if (lock) + thd->lock= saved_lock; + } + + if (!error) { if (table->triggers || info.handle_duplicates == DUP_UPDATE) { -- cgit v1.2.1 From 2dca2a1a5d3689e30eea204bb7923620c369fed2 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 1 Jun 2006 10:34:04 +0400 Subject: Applied innodb-5.1-ss594 snapshot. Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter". Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error". Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable". Also: * Remove remnants of the obsolete concept of memoryfixing tables and indexes. * Remove unused dict_table_LRU_trim(). * Remove unused 'trx' parameter from dict_table_get_on_id_low(), dict_table_get(), dict_table_get_and_increment_handle_count(). * Add a normal linked list implementation. * Add a work queue implementation. * Add 'level' parameter to mutex_create() and rw_lock_create(). Remove mutex_set_level() and rw_lock_set_level(). * Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING. * Add support for bound ids in InnoDB's parser. * Define UNIV_BTR_DEBUG for enabling consistency checks of FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling pages of B-tree indexes. btr_validate_level(): Check the validity of the doubly linked list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV. * Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1. ut_print_name(), ut_print_name1(): Add parameter 'table_id' for distinguishing names of tables from other identifiers. New: innobase_convert_from_table_id(), innobase_convert_from_id(), innobase_convert_from_filename(), innobase_get_charset. dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(), dict_skip_word(), dict_create_foreign_constraints_low(): Add parameter 'cs' so that isspace() can be replaced with my_isspace(), whose operation depends on the connection character set. dict_scan_id(): Convert identifier to UTF-8. dict_str_starts_with_keyword(): New extern function, to replace dict_accept() in row_search_for_mysql(). mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier(). ha_innobase::create(): Remove the thd->convert_strin() call. Pass the statement to InnoDB in the connection character set and let InnoDB convert the identifier to UTF-8. * Add max_row_size to dict_table_t. * btr0cur.c btr_copy_externally_stored_field(): Only set the 'offset' variable when needed. * buf0buf.c buf_page_io_complete(): Write to the error log if the page number or the space id o the disk do not match those in memory. Also write to the error log if a page was read from the doublewrite buffer. The doublewrite buffer should be only read by the lower-level function fil_io() at database startup. * dict0dict.c dict_scan_table_name(): Remove fallback to differently encoded name when the table is not found. The encoding is handled at a higher level. * ha_innodb.cc Increment statistic counter in ha_innobase::index_prev() (bug 19542). Add innobase_convert_string wrapper function and a new file ha_prototypes.h. innobase_print_identifier(): Remove TODO comment before calling get_quote_char_for_identifier(). That function apparently assumes the identifier to be encoded in UTF-8. * ibuf0ibuf.c|h ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB. The function is only being called #ifdef UNIV_IBUF_DEBUG. * innodb.result Adjust the results for changes in the foreign key error messages. * mem0mem.c|h New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat(). * os0file.c Check the page trailers also after writing to disk. This improves chances of diagnosing bug 18886. os_file_check_page_trailers(): New function for checking that the two copies of the LSN stamped on the page match. os_aio_simulated_handle(): Call os_file_check_page_trailers() before and after os_file_write(). * row0mysql.c Move trx_commit_for_mysql(trx) calls before calls to row_mysql_unlock_data_dictionary(trx) (bug 19727). * row0sel.c row_fetch_print(): Handle SQL NULL values without crashing. row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field when handling an externally stored column. Fetch externally stored fields when using InnoDB's internal SQL parser. Optimize BLOB selects by using prebuilt->blob_heap directly instead of first reading BLOB data to a temporary heap and then copying it to prebuilt->blob_heap. * srv0srv.c srv_master_thread(): Remove unreachable code. * srv0start.c srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and 'g' as abbreviations of megabyte and gigabyte (bug 19609). srv_parse_megabytes(): New fuction. * ut0dbg.c|h Implement InnoDB assertions (ut_a and ut_error) with abort() when the code is compiled with GCC 3 or later on other platforms than Windows or Netware. Also disable the variable ut_dbg_stop_threads and the function ut_dbg_stop_thread() i this case, unless UNIV_SYC_DEBUG is defined. This should allow the compiler to generate more compact code for assertions. * ut0list.c|h Add ib_list_create_heap(). mysql-test/r/innodb.result: Applied innodb-5.1-ss594 snapshot. mysql-test/t/innodb.test: Copy the comment from the beginning of the file to the end because MySQL developers continue adding test cases to this file. sql/ha_innodb.cc: Applied innodb-5.1-ss594 snapshot. storage/innobase/CMakeLists.txt: Applied innodb-5.1-ss594 snapshot. storage/innobase/Makefile.am: Applied innodb-5.1-ss594 snapshot. storage/innobase/btr/btr0btr.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/btr/btr0cur.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/btr/btr0pcur.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/btr/btr0sea.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/buf/buf0buf.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/buf/buf0flu.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/data/data0type.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/dict/dict0crea.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/dict/dict0dict.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/dict/dict0load.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/dict/dict0mem.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/fil/fil0fil.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/ha/hash0hash.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/ibuf/ibuf0ibuf.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/data0type.h: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/dict0dict.h: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/dict0dict.ic: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/dict0mem.h: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/fil0fil.h: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/fsp0fsp.h: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/ibuf0ibuf.h: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/mem0mem.h: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/pars0pars.h: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/pars0sym.h: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/pars0types.h: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/rem0rec.h: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/row0purge.h: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/row0undo.h: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/srv0srv.h: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/sync0rw.h: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/sync0sync.h: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/univ.i: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/ut0dbg.h: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/ut0ut.h: Applied innodb-5.1-ss594 snapshot. storage/innobase/lock/lock0lock.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/log/log0log.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/log/log0recv.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/mem/mem0dbg.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/mem/mem0mem.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/mem/mem0pool.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/os/os0file.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/os/os0thread.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/pars/lexyy.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/pars/pars0lex.l: Applied innodb-5.1-ss594 snapshot. storage/innobase/pars/pars0pars.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/pars/pars0sym.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/row/row0ins.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/row/row0mysql.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/row/row0purge.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/row/row0row.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/row/row0sel.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/row/row0upd.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/srv/srv0srv.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/srv/srv0start.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/sync/sync0arr.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/sync/sync0rw.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/sync/sync0sync.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/thr/thr0loc.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/trx/trx0purge.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/trx/trx0rec.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/trx/trx0roll.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/trx/trx0rseg.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/trx/trx0sys.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/trx/trx0trx.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/ut/Makefile.am: Applied innodb-5.1-ss594 snapshot. storage/innobase/ut/ut0dbg.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/ut/ut0ut.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/ha_prototypes.h: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/ut0list.h: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/ut0list.ic: Applied innodb-5.1-ss594 snapshot. storage/innobase/include/ut0wqueue.h: Applied innodb-5.1-ss594 snapshot. storage/innobase/ut/ut0list.c: Applied innodb-5.1-ss594 snapshot. storage/innobase/ut/ut0wqueue.c: Applied innodb-5.1-ss594 snapshot. --- mysql-test/r/innodb.result | 42 +- mysql-test/t/innodb.test | 13 + sql/ha_innodb.cc | 199 ++++++- storage/innobase/CMakeLists.txt | 2 +- storage/innobase/Makefile.am | 2 +- storage/innobase/btr/btr0btr.c | 91 ++- storage/innobase/btr/btr0cur.c | 30 +- storage/innobase/btr/btr0pcur.c | 3 + storage/innobase/btr/btr0sea.c | 3 +- storage/innobase/buf/buf0buf.c | 48 +- storage/innobase/buf/buf0flu.c | 2 +- storage/innobase/data/data0type.c | 33 ++ storage/innobase/dict/dict0crea.c | 6 +- storage/innobase/dict/dict0dict.c | 432 ++++++++------ storage/innobase/dict/dict0load.c | 2 +- storage/innobase/dict/dict0mem.c | 6 +- storage/innobase/fil/fil0fil.c | 7 +- storage/innobase/ha/hash0hash.c | 4 +- storage/innobase/ibuf/ibuf0ibuf.c | 29 +- storage/innobase/include/data0type.h | 10 + storage/innobase/include/dict0dict.h | 49 +- storage/innobase/include/dict0dict.ic | 27 +- storage/innobase/include/dict0mem.h | 13 +- storage/innobase/include/fil0fil.h | 16 +- storage/innobase/include/fsp0fsp.h | 26 +- storage/innobase/include/ha_prototypes.h | 22 + storage/innobase/include/ibuf0ibuf.h | 2 + storage/innobase/include/mem0mem.h | 42 +- storage/innobase/include/pars0pars.h | 29 + storage/innobase/include/pars0sym.h | 10 + storage/innobase/include/pars0types.h | 1 + storage/innobase/include/rem0rec.h | 6 +- storage/innobase/include/row0purge.h | 4 +- storage/innobase/include/row0undo.h | 4 +- storage/innobase/include/srv0srv.h | 3 + storage/innobase/include/sync0rw.h | 19 +- storage/innobase/include/sync0sync.h | 26 +- storage/innobase/include/univ.i | 8 +- storage/innobase/include/ut0dbg.h | 27 +- storage/innobase/include/ut0list.h | 148 +++++ storage/innobase/include/ut0list.ic | 23 + storage/innobase/include/ut0ut.h | 2 + storage/innobase/include/ut0wqueue.h | 60 ++ storage/innobase/lock/lock0lock.c | 9 +- storage/innobase/log/log0log.c | 9 +- storage/innobase/log/log0recv.c | 4 +- storage/innobase/mem/mem0dbg.c | 3 +- storage/innobase/mem/mem0mem.c | 187 +++++- storage/innobase/mem/mem0pool.c | 3 +- storage/innobase/os/os0file.c | 59 +- storage/innobase/os/os0thread.c | 2 +- storage/innobase/pars/lexyy.c | 986 ++++++++++++++++--------------- storage/innobase/pars/pars0lex.l | 8 + storage/innobase/pars/pars0pars.c | 58 ++ storage/innobase/pars/pars0sym.c | 46 ++ storage/innobase/row/row0ins.c | 30 +- storage/innobase/row/row0mysql.c | 112 ++-- storage/innobase/row/row0purge.c | 2 +- storage/innobase/row/row0row.c | 6 +- storage/innobase/row/row0sel.c | 118 ++-- storage/innobase/row/row0upd.c | 3 +- storage/innobase/srv/srv0srv.c | 22 +- storage/innobase/srv/srv0start.c | 108 ++-- storage/innobase/sync/sync0arr.c | 3 +- storage/innobase/sync/sync0rw.c | 31 +- storage/innobase/sync/sync0sync.c | 37 +- storage/innobase/thr/thr0loc.c | 3 +- storage/innobase/trx/trx0purge.c | 6 +- storage/innobase/trx/trx0rec.c | 2 +- storage/innobase/trx/trx0roll.c | 6 +- storage/innobase/trx/trx0rseg.c | 3 +- storage/innobase/trx/trx0sys.c | 3 +- storage/innobase/trx/trx0trx.c | 3 +- storage/innobase/ut/Makefile.am | 2 +- storage/innobase/ut/ut0dbg.c | 10 +- storage/innobase/ut/ut0list.c | 169 ++++++ storage/innobase/ut/ut0ut.c | 49 +- storage/innobase/ut/ut0wqueue.c | 92 +++ 78 files changed, 2459 insertions(+), 1266 deletions(-) create mode 100644 storage/innobase/include/ha_prototypes.h create mode 100644 storage/innobase/include/ut0list.h create mode 100644 storage/innobase/include/ut0list.ic create mode 100644 storage/innobase/include/ut0wqueue.h create mode 100644 storage/innobase/ut/ut0list.c create mode 100644 storage/innobase/ut/ut0wqueue.c diff --git a/mysql-test/r/innodb.result b/mysql-test/r/innodb.result index 7ae87e42b8c..b0bc8fb52f2 100644 --- a/mysql-test/r/innodb.result +++ b/mysql-test/r/innodb.result @@ -1378,9 +1378,9 @@ insert into `t2`values ( 1 ) ; create table `t3` (`id` int( 11 ) not null default '0',key `id` ( `id` ) ,constraint `t2_id_fk` foreign key ( `id` ) references `t2` (`id` )) engine = innodb; insert into `t3`values ( 1 ) ; delete t3,t2,t1 from t1,t2,t3 where t1.id =1 and t2.id = t1.id and t3.id = t2.id; -ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test/t2`, CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)) +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)) update t1,t2,t3 set t3.id=5, t2.id=6, t1.id=7 where t1.id =1 and t2.id = t1.id and t3.id = t2.id; -ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test/t2`, CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)) +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)) update t3 set t3.id=7 where t1.id =1 and t2.id = t1.id and t3.id = t2.id; ERROR 42S22: Unknown column 't1.id' in 'where clause' drop table t3,t2,t1; @@ -1392,7 +1392,7 @@ foreign key(pid) references t1(id) on delete cascade) engine=innodb; insert into t1 values(0,0),(1,0),(2,1),(3,2),(4,3),(5,4),(6,5),(7,6), (8,7),(9,8),(10,9),(11,10),(12,11),(13,12),(14,13),(15,14); delete from t1 where id=0; -ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test/t1`, CONSTRAINT `t1_ibfk_1` FOREIGN KEY (`pid`) REFERENCES `t1` (`id`) ON DELETE CASCADE) +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t1`, CONSTRAINT `t1_ibfk_1` FOREIGN KEY (`pid`) REFERENCES `t1` (`id`) ON DELETE CASCADE) delete from t1 where id=15; delete from t1 where id=0; drop table t1; @@ -2633,18 +2633,18 @@ v INT, CONSTRAINT c1 FOREIGN KEY (v) REFERENCES t1(id) ) ENGINE=InnoDB; INSERT INTO t2 VALUES(2); -ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test/t2`, CONSTRAINT `c1` FOREIGN KEY (`v`) REFERENCES `t1` (`id`)) +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `c1` FOREIGN KEY (`v`) REFERENCES `t1` (`id`)) INSERT INTO t1 VALUES(1); INSERT INTO t2 VALUES(1); DELETE FROM t1 WHERE id = 1; -ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test/t2`, CONSTRAINT `c1` FOREIGN KEY (`v`) REFERENCES `t1` (`id`)) +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `c1` FOREIGN KEY (`v`) REFERENCES `t1` (`id`)) DROP TABLE t1; ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails SET FOREIGN_KEY_CHECKS=0; DROP TABLE t1; SET FOREIGN_KEY_CHECKS=1; INSERT INTO t2 VALUES(3); -ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test/t2`, CONSTRAINT `c1` FOREIGN KEY (`v`) REFERENCES `t1` (`id`)) +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `c1` FOREIGN KEY (`v`) REFERENCES `t1` (`id`)) DROP TABLE t2; create table t1(a int not null) engine=innodb DEFAULT CHARSET=latin1; insert into t1 values (1),(2); @@ -2922,23 +2922,23 @@ create table t4(a int primary key,constraint foreign key(a)references t3(a)) row insert into t1 values(1); insert into t3 values(1); insert into t2 values(2); -ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test/t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t1` (`a`)) +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t1` (`a`)) insert into t4 values(2); -ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test/t4`, CONSTRAINT `t4_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t3` (`a`)) +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t4`, CONSTRAINT `t4_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t3` (`a`)) insert into t2 values(1); insert into t4 values(1); update t1 set a=2; -ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test/t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t1` (`a`)) +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t1` (`a`)) update t2 set a=2; -ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test/t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t1` (`a`)) +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t1` (`a`)) update t3 set a=2; -ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test/t4`, CONSTRAINT `t4_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t3` (`a`)) +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t4`, CONSTRAINT `t4_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t3` (`a`)) update t4 set a=2; -ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test/t4`, CONSTRAINT `t4_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t3` (`a`)) +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t4`, CONSTRAINT `t4_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t3` (`a`)) truncate t1; -ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test/t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t1` (`a`)) +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t1` (`a`)) truncate t3; -ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test/t4`, CONSTRAINT `t4_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t3` (`a`)) +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t4`, CONSTRAINT `t4_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t3` (`a`)) truncate t2; truncate t4; truncate t1; @@ -2993,7 +2993,7 @@ create table t1 (a int primary key,s1 varbinary(3) not null unique) engine=innod create table t2 (s1 binary(2) not null, constraint c foreign key(s1) references t1(s1) on update cascade) engine=innodb; insert into t1 values(1,0x4100),(2,0x41),(3,0x4120),(4,0x42); insert into t2 values(0x42); -ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test/t2`, CONSTRAINT `c` FOREIGN KEY (`s1`) REFERENCES `t1` (`s1`) ON UPDATE CASCADE) +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `c` FOREIGN KEY (`s1`) REFERENCES `t1` (`s1`) ON UPDATE CASCADE) insert into t2 values(0x41); select hex(s1) from t2; hex(s1) @@ -3003,11 +3003,11 @@ select hex(s1) from t2; hex(s1) 4100 update t1 set s1=0x12 where a=1; -ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test/t2`, CONSTRAINT `c` FOREIGN KEY (`s1`) REFERENCES `t1` (`s1`) ON UPDATE CASCADE) +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `c` FOREIGN KEY (`s1`) REFERENCES `t1` (`s1`) ON UPDATE CASCADE) update t1 set s1=0x12345678 where a=1; -ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test/t2`, CONSTRAINT `c` FOREIGN KEY (`s1`) REFERENCES `t1` (`s1`) ON UPDATE CASCADE) +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `c` FOREIGN KEY (`s1`) REFERENCES `t1` (`s1`) ON UPDATE CASCADE) update t1 set s1=0x123457 where a=1; -ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test/t2`, CONSTRAINT `c` FOREIGN KEY (`s1`) REFERENCES `t1` (`s1`) ON UPDATE CASCADE) +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `c` FOREIGN KEY (`s1`) REFERENCES `t1` (`s1`) ON UPDATE CASCADE) update t1 set s1=0x1220 where a=1; select hex(s1) from t2; hex(s1) @@ -3021,11 +3021,11 @@ select hex(s1) from t2; hex(s1) 4200 delete from t1 where a=1; -ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test/t2`, CONSTRAINT `c` FOREIGN KEY (`s1`) REFERENCES `t1` (`s1`) ON UPDATE CASCADE) +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `c` FOREIGN KEY (`s1`) REFERENCES `t1` (`s1`) ON UPDATE CASCADE) delete from t1 where a=2; update t2 set s1=0x4120; delete from t1; -ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test/t2`, CONSTRAINT `c` FOREIGN KEY (`s1`) REFERENCES `t1` (`s1`) ON UPDATE CASCADE) +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `c` FOREIGN KEY (`s1`) REFERENCES `t1` (`s1`) ON UPDATE CASCADE) delete from t1 where a!=3; select a,hex(s1) from t1; a hex(s1) @@ -3051,7 +3051,7 @@ hex(s1) 12 delete from t1 where a=1; delete from t1 where a=2; -ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test/t2`, CONSTRAINT `c` FOREIGN KEY (`s1`) REFERENCES `t1` (`s1`) ON UPDATE CASCADE) +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `c` FOREIGN KEY (`s1`) REFERENCES `t1` (`s1`) ON UPDATE CASCADE) select a,hex(s1) from t1; a hex(s1) 2 12 diff --git a/mysql-test/t/innodb.test b/mysql-test/t/innodb.test index 92e060eed92..5b1b374e487 100644 --- a/mysql-test/t/innodb.test +++ b/mysql-test/t/innodb.test @@ -2510,3 +2510,16 @@ BEGIN; INSERT INTO t1 VALUES (1); OPTIMIZE TABLE t1; DROP TABLE t1; + +####################################################################### +# # +# Please, DO NOT TOUCH this file as well as the innodb.result file. # +# These files are to be modified ONLY BY INNOBASE guys. # +# # +# Use innodb_mysql.[test|result] files instead. # +# # +# If nevertheless you need to make some changes here, please, forward # +# your commit message To: dev@innodb.com Cc: dev-innodb@mysql.com # +# (otherwise your changes may be erased). # +# # +####################################################################### diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc index 0b2f561e8c9..bcc155db221 100644 --- a/sql/ha_innodb.cc +++ b/sql/ha_innodb.cc @@ -134,6 +134,7 @@ extern "C" { #include "../storage/innobase/include/fil0fil.h" #include "../storage/innobase/include/trx0xa.h" #include "../storage/innobase/include/thr0loc.h" +#include "../storage/innobase/include/ha_prototypes.h" } #define HA_INNOBASE_ROWS_IN_TABLE 10000 /* to get optimization right */ @@ -705,6 +706,61 @@ innobase_get_cset_width( } } +/********************************************************************** +Converts an identifier to a table name. + +NOTE that the exact prototype of this function has to be in +/innobase/dict/dict0dict.c! */ +extern "C" +void +innobase_convert_from_table_id( +/*===========================*/ + char* to, /* out: converted identifier */ + const char* from, /* in: identifier to convert */ + ulint len) /* in: length of 'to', in bytes */ +{ + uint errors; + + strconvert(current_thd->charset(), from, + &my_charset_filename, to, len, &errors); +} + +/********************************************************************** +Converts an identifier to UTF-8. + +NOTE that the exact prototype of this function has to be in +/innobase/dict/dict0dict.c! */ +extern "C" +void +innobase_convert_from_id( +/*=====================*/ + char* to, /* out: converted identifier */ + const char* from, /* in: identifier to convert */ + ulint len) /* in: length of 'to', in bytes */ +{ + uint errors; + + strconvert(current_thd->charset(), from, + system_charset_info, to, len, &errors); +} + +/********************************************************************** +Removes the filename encoding of a table or database name. + +NOTE that the exact prototype of this function has to be in +/innobase/dict/dict0dict.c! */ +extern "C" +void +innobase_convert_from_filename( +/*===========================*/ + char* s) /* in: identifier; out: decoded identifier */ +{ + uint errors; + + strconvert(&my_charset_filename, s, + system_charset_info, s, strlen(s), &errors); +} + /********************************************************************** Compares NUL-terminated UTF-8 strings case insensitively. @@ -735,6 +791,21 @@ innobase_casedn_str( my_casedn_str(system_charset_info, a); } +/************************************************************************** +Determines the connection character set. + +NOTE that the exact prototype of this function has to be in +/innobase/dict/dict0dict.c! */ +extern "C" +struct charset_info_st* +innobase_get_charset( +/*=================*/ + /* out: connection character set */ + void* mysql_thd) /* in: MySQL thread handle */ +{ + return(((THD*) mysql_thd)->charset()); +} + /************************************************************************* Creates a temporary file. */ extern "C" @@ -780,6 +851,25 @@ innobase_mysql_tmpfile(void) return(fd2); } +/************************************************************************* +Wrapper around MySQL's copy_and_convert function, see it for +documentation. */ +extern "C" +ulint +innobase_convert_string( +/*====================*/ + void* to, + ulint to_length, + CHARSET_INFO* to_cs, + const void* from, + ulint from_length, + CHARSET_INFO* from_cs, + uint* errors) +{ + return(copy_and_convert((char*)to, to_length, to_cs, + (const char*)from, from_length, from_cs, errors)); +} + /************************************************************************* Gets the InnoDB transaction handle for a MySQL handler object, creates an InnoDB transaction struct if the corresponding MySQL thread struct still @@ -1115,23 +1205,69 @@ innobase_invalidate_query_cache( } /********************************************************************* -Get the quote character to be used in SQL identifiers. +Display an SQL identifier. This definition must match the one in innobase/ut/ut0ut.c! */ extern "C" -int -mysql_get_identifier_quote_char( -/*============================*/ - /* out: quote character to be - used in SQL identifiers; EOF if none */ +void +innobase_print_identifier( +/*======================*/ + FILE* f, /* in: output stream */ trx_t* trx, /* in: transaction */ + ibool table_id,/* in: TRUE=decode table name */ const char* name, /* in: name to print */ ulint namelen)/* in: length of name */ { + const char* s = name; + char* qname = NULL; + int q; + + if (table_id) { + /* Decode the table name. The filename_to_tablename() + function expects a NUL-terminated string. The input and + output strings buffers must not be shared. The function + only produces more output when the name contains other + characters than [0-9A-Z_a-z]. */ + char* temp_name = my_malloc(namelen + 1, MYF(MY_WME)); + uint qnamelen = namelen + + (1 + sizeof srv_mysql50_table_name_prefix); + + if (temp_name) { + qname = my_malloc(qnamelen, MYF(MY_WME)); + if (qname) { + memcpy(temp_name, name, namelen); + temp_name[namelen] = 0; + s = qname; + namelen = filename_to_tablename(temp_name, + qname, qnamelen); + } + my_free(temp_name, MYF(0)); + } + } + if (!trx || !trx->mysql_thd) { - return(EOF); + + q = '"'; + } else { + q = get_quote_char_for_identifier((THD*) trx->mysql_thd, + s, (int) namelen); + } + + if (q == EOF) { + fwrite(s, 1, namelen, f); + } else { + const char* e = s + namelen; + putc(q, f); + while (s < e) { + int c = *s++; + if (c == q) { + putc(c, f); + } + putc(c, f); + } + putc(q, f); } - return(get_quote_char_for_identifier((THD*) trx->mysql_thd, - name, (int) namelen)); + + my_free(qname, MYF(MY_ALLOW_ZERO_PTR)); } /************************************************************************** @@ -1247,6 +1383,24 @@ innobase_init(void) ut_a(DATA_MYSQL_TRUE_VARCHAR == (ulint)MYSQL_TYPE_VARCHAR); +#ifdef UNIV_DEBUG + static const char test_filename[] = "-@"; + char test_tablename[sizeof test_filename + + sizeof srv_mysql50_table_name_prefix]; + if ((sizeof test_tablename) - 1 + != filename_to_tablename(test_filename, test_tablename, + sizeof test_tablename) + || strncmp(test_tablename, + srv_mysql50_table_name_prefix, + sizeof srv_mysql50_table_name_prefix) + || strcmp(test_tablename + + sizeof srv_mysql50_table_name_prefix, + test_filename)) { + sql_print_error("tablename encoding has been changed"); + goto error; + } +#endif /* UNIV_DEBUG */ + /* Check that values don't overflow on 32-bit systems. */ if (sizeof(ulint) == 4) { if (innobase_buffer_pool_size > UINT_MAX32) { @@ -2215,8 +2369,7 @@ ha_innobase::open( /* Get pointer to a table object in InnoDB dictionary cache */ - ib_table = dict_table_get_and_increment_handle_count( - norm_name, NULL); + ib_table = dict_table_get_and_increment_handle_count(norm_name); if (NULL == ib_table) { ut_print_timestamp(stderr); @@ -4132,6 +4285,9 @@ ha_innobase::index_prev( mysql_byte* buf) /* in/out: buffer for previous row in MySQL format */ { + statistic_increment(current_thd->status_var.ha_read_prev_count, + &LOCK_status); + return(general_fetch(buf, ROW_SEL_PREV, 0)); } @@ -4668,7 +4824,7 @@ ha_innobase::create( /* Get the transaction associated with the current thd, or create one if not yet created */ - parent_trx = check_trx_exists(current_thd); + parent_trx = check_trx_exists(thd); /* In case MySQL calls this in the middle of a SELECT query, release possible adaptive hash latch to avoid deadlocks of threads */ @@ -4764,20 +4920,9 @@ ha_innobase::create( } } - if (current_thd->query != NULL) { - LEX_STRING q; - - if (thd->convert_string(&q, system_charset_info, - current_thd->query, - current_thd->query_length, - current_thd->charset())) { - error = HA_ERR_OUT_OF_MEM; - - goto cleanup; - } - + if (thd->query != NULL) { error = row_table_add_foreign_constraints(trx, - q.str, norm_name, + thd->query, norm_name, create_info->options & HA_LEX_CREATE_TMP_TABLE); error = convert_error_code_to_mysql(error, NULL); @@ -4797,7 +4942,7 @@ ha_innobase::create( log_buffer_flush_to_disk(); - innobase_table = dict_table_get(norm_name, NULL); + innobase_table = dict_table_get(norm_name); DBUG_ASSERT(innobase_table != 0); @@ -4933,7 +5078,7 @@ ha_innobase::delete_table( /* Get the transaction associated with the current thd, or create one if not yet created */ - parent_trx = check_trx_exists(current_thd); + parent_trx = check_trx_exists(thd); /* In case MySQL calls this in the middle of a SELECT query, release possible adaptive hash latch to avoid deadlocks of threads */ diff --git a/storage/innobase/CMakeLists.txt b/storage/innobase/CMakeLists.txt index def51873725..8b8c3af6582 100644 --- a/storage/innobase/CMakeLists.txt +++ b/storage/innobase/CMakeLists.txt @@ -32,4 +32,4 @@ ADD_LIBRARY(innobase btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c thr/thr0loc.c trx/trx0purge.c trx/trx0rec.c trx/trx0roll.c trx/trx0rseg.c trx/trx0sys.c trx/trx0trx.c trx/trx0undo.c usr/usr0sess.c - ut/ut0byte.c ut/ut0dbg.c ut/ut0mem.c ut/ut0rnd.c ut/ut0ut.c ut/ut0vec.c) + ut/ut0byte.c ut/ut0dbg.c ut/ut0mem.c ut/ut0rnd.c ut/ut0ut.c ut/ut0vec.c ut/ut0list.c ut/ut0wqueue.c) diff --git a/storage/innobase/Makefile.am b/storage/innobase/Makefile.am index bf41d3dca88..6fdc1621059 100644 --- a/storage/innobase/Makefile.am +++ b/storage/innobase/Makefile.am @@ -76,7 +76,7 @@ EXTRA_DIST = include/btr0btr.h include/btr0btr.ic include/btr0cur.h include/btr include/univ.i include/usr0sess.h include/usr0sess.ic include/usr0types.h \ include/ut0byte.h include/ut0byte.ic include/ut0dbg.h include/ut0lst.h \ include/ut0mem.h include/ut0mem.ic include/ut0rnd.h include/ut0rnd.ic \ - include/ut0sort.h include/ut0ut.h include/ut0ut.ic include/ut0vec.h include/ut0vec.ic \ + include/ut0sort.h include/ut0ut.h include/ut0ut.ic include/ut0vec.h include/ut0vec.ic include/ha_prototypes.h \ CMakeLists.txt noinst_LIBRARIES = libinnobase.a diff --git a/storage/innobase/btr/btr0btr.c b/storage/innobase/btr/btr0btr.c index 5e338f97982..ae3e722b513 100644 --- a/storage/innobase/btr/btr0btr.c +++ b/storage/innobase/btr/btr0btr.c @@ -190,6 +190,10 @@ btr_get_prev_user_rec( || (mtr_memo_contains(mtr, buf_block_align(prev_page), MTR_MEMO_PAGE_X_FIX))); ut_a(page_is_comp(prev_page) == page_is_comp(page)); +#ifdef UNIV_BTR_DEBUG + ut_a(btr_page_get_next(prev_page, mtr) + == buf_frame_get_page_no(page)); +#endif /* UNIV_BTR_DEBUG */ return(page_rec_get_prev(page_get_supremum_rec(prev_page))); } @@ -237,6 +241,10 @@ btr_get_next_user_rec( MTR_MEMO_PAGE_S_FIX)) || (mtr_memo_contains(mtr, buf_block_align(next_page), MTR_MEMO_PAGE_X_FIX))); +#ifdef UNIV_BTR_DEBUG + ut_a(btr_page_get_prev(next_page, mtr) + == buf_frame_get_page_no(page)); +#endif /* UNIV_BTR_DEBUG */ ut_a(page_is_comp(next_page) == page_is_comp(page)); return(page_rec_get_next(page_get_infimum_rec(next_page))); @@ -597,9 +605,9 @@ btr_page_get_father_for_rec( buf_page_print(buf_frame_align(node_ptr)); fputs("InnoDB: Corruption of an index tree: table ", stderr); - ut_print_name(stderr, NULL, index->table_name); + ut_print_name(stderr, NULL, TRUE, index->table_name); fputs(", index ", stderr); - ut_print_name(stderr, NULL, index->name); + ut_print_name(stderr, NULL, FALSE, index->name); fprintf(stderr, ",\n" "InnoDB: father ptr page no %lu, child page no %lu\n", (ulong) @@ -1518,6 +1526,10 @@ btr_attach_half_pages( prev_page = btr_page_get(space, prev_page_no, RW_X_LATCH, mtr); ut_a(page_is_comp(prev_page) == page_is_comp(page)); +#ifdef UNIV_BTR_DEBUG + ut_a(btr_page_get_next(prev_page, mtr) + == buf_frame_get_page_no(page)); +#endif /* UNIV_BTR_DEBUG */ btr_page_set_next(prev_page, lower_page_no, mtr); } @@ -1805,6 +1817,10 @@ btr_level_list_remove( prev_page = btr_page_get(space, prev_page_no, RW_X_LATCH, mtr); ut_a(page_is_comp(prev_page) == page_is_comp(page)); +#ifdef UNIV_BTR_DEBUG + ut_a(btr_page_get_next(prev_page, mtr) + == buf_frame_get_page_no(page)); +#endif /* UNIV_BTR_DEBUG */ btr_page_set_next(prev_page, next_page_no, mtr); } @@ -1813,6 +1829,10 @@ btr_level_list_remove( next_page = btr_page_get(space, next_page_no, RW_X_LATCH, mtr); ut_a(page_is_comp(next_page) == page_is_comp(page)); +#ifdef UNIV_BTR_DEBUG + ut_a(btr_page_get_prev(next_page, mtr) + == buf_frame_get_page_no(page)); +#endif /* UNIV_BTR_DEBUG */ btr_page_set_prev(next_page, prev_page_no, mtr); } @@ -2032,16 +2052,24 @@ btr_compress( /* Decide the page to which we try to merge and which will inherit the locks */ - if (left_page_no != FIL_NULL) { + is_left = left_page_no != FIL_NULL; + + if (is_left) { - is_left = TRUE; merge_page = btr_page_get(space, left_page_no, RW_X_LATCH, mtr); +#ifdef UNIV_BTR_DEBUG + ut_a(btr_page_get_next(merge_page, mtr) + == buf_frame_get_page_no(page)); +#endif /* UNIV_BTR_DEBUG */ } else if (right_page_no != FIL_NULL) { - is_left = FALSE; merge_page = btr_page_get(space, right_page_no, RW_X_LATCH, mtr); +#ifdef UNIV_BTR_DEBUG + ut_a(btr_page_get_prev(merge_page, mtr) + == buf_frame_get_page_no(page)); +#endif /* UNIV_BTR_DEBUG */ } else { /* The page is the only one on the level, lift the records to the father */ @@ -2203,7 +2231,6 @@ btr_discard_page( ulint left_page_no; ulint right_page_no; page_t* merge_page; - ibool is_left; page_t* page; rec_t* node_ptr; @@ -2223,13 +2250,19 @@ btr_discard_page( right_page_no = btr_page_get_next(page, mtr); if (left_page_no != FIL_NULL) { - is_left = TRUE; merge_page = btr_page_get(space, left_page_no, RW_X_LATCH, mtr); +#ifdef UNIV_BTR_DEBUG + ut_a(btr_page_get_next(merge_page, mtr) + == buf_frame_get_page_no(page)); +#endif /* UNIV_BTR_DEBUG */ } else if (right_page_no != FIL_NULL) { - is_left = FALSE; merge_page = btr_page_get(space, right_page_no, RW_X_LATCH, mtr); +#ifdef UNIV_BTR_DEBUG + ut_a(btr_page_get_prev(merge_page, mtr) + == buf_frame_get_page_no(page)); +#endif /* UNIV_BTR_DEBUG */ } else { btr_discard_only_page_on_level(tree, page, mtr); @@ -2256,11 +2289,11 @@ btr_discard_page( /* Remove the page from the level list */ btr_level_list_remove(tree, page, mtr); - if (is_left) { + if (left_page_no != FIL_NULL) { lock_update_discard(page_get_supremum_rec(merge_page), page); } else { lock_update_discard(page_rec_get_next( - page_get_infimum_rec(merge_page)), page); + page_get_infimum_rec(merge_page)), page); } /* Free the file page */ @@ -2745,7 +2778,29 @@ loop: rec_t* right_rec; right_page = btr_page_get(space, right_page_no, RW_X_LATCH, &mtr); - ut_a(page_is_comp(right_page) == page_is_comp(page)); + if (UNIV_UNLIKELY(btr_page_get_prev(right_page, &mtr) + != buf_frame_get_page_no(page))) { + btr_validate_report2(index, level, page, right_page); + fputs("InnoDB: broken FIL_PAGE_NEXT" + " or FIL_PAGE_PREV links\n", stderr); + buf_page_print(page); + buf_page_print(right_page); + + ret = FALSE; + } + + if (UNIV_UNLIKELY(page_is_comp(right_page) + != page_is_comp(page))) { + btr_validate_report2(index, level, page, right_page); + fputs("InnoDB: 'compact' flag mismatch\n", stderr); + buf_page_print(page); + buf_page_print(right_page); + + ret = FALSE; + + goto node_ptr_fails; + } + rec = page_rec_get_prev(page_get_supremum_rec(page)); right_rec = page_rec_get_next( page_get_infimum_rec(right_page)); @@ -2753,8 +2808,8 @@ loop: offsets, ULINT_UNDEFINED, &heap); offsets2 = rec_get_offsets(right_rec, index, offsets2, ULINT_UNDEFINED, &heap); - if (cmp_rec_rec(rec, right_rec, offsets, offsets2, index) - >= 0) { + if (UNIV_UNLIKELY(cmp_rec_rec(rec, right_rec, + offsets, offsets2, index) >= 0)) { btr_validate_report2(index, level, page, right_page); @@ -2869,10 +2924,7 @@ loop: ut_a(node_ptr == page_rec_get_prev( page_get_supremum_rec(father_page))); ut_a(btr_page_get_next(father_page, &mtr) == FIL_NULL); - } - - if (right_page_no != FIL_NULL) { - + } else { right_node_ptr = btr_page_get_father_node_ptr(tree, right_page, &mtr); if (page_rec_get_next(node_ptr) != @@ -2934,14 +2986,15 @@ loop: } node_ptr_fails: + /* Commit the mini-transaction to release the latch on 'page'. + Re-acquire the latch on right_page, which will become 'page' + on the next loop. The page has already been checked. */ mtr_commit(&mtr); if (right_page_no != FIL_NULL) { - ulint comp = page_is_comp(page); mtr_start(&mtr); page = btr_page_get(space, right_page_no, RW_X_LATCH, &mtr); - ut_a(page_is_comp(page) == comp); goto loop; } diff --git a/storage/innobase/btr/btr0cur.c b/storage/innobase/btr/btr0cur.c index deba3e23487..74def379058 100644 --- a/storage/innobase/btr/btr0cur.c +++ b/storage/innobase/btr/btr0cur.c @@ -157,6 +157,10 @@ btr_cur_latch_leaves( if (left_page_no != FIL_NULL) { get_page = btr_page_get(space, left_page_no, RW_X_LATCH, mtr); +#ifdef UNIV_BTR_DEBUG + ut_a(btr_page_get_next(get_page, mtr) + == buf_frame_get_page_no(page)); +#endif /* UNIV_BTR_DEBUG */ ut_a(page_is_comp(get_page) == page_is_comp(page)); buf_block_align(get_page)->check_index_page_at_flush = TRUE; @@ -171,6 +175,10 @@ btr_cur_latch_leaves( if (right_page_no != FIL_NULL) { get_page = btr_page_get(space, right_page_no, RW_X_LATCH, mtr); +#ifdef UNIV_BTR_DEBUG + ut_a(btr_page_get_prev(get_page, mtr) + == buf_frame_get_page_no(page)); +#endif /* UNIV_BTR_DEBUG */ buf_block_align(get_page)->check_index_page_at_flush = TRUE; } @@ -183,6 +191,10 @@ btr_cur_latch_leaves( if (left_page_no != FIL_NULL) { cursor->left_page = btr_page_get(space, left_page_no, RW_S_LATCH, mtr); +#ifdef UNIV_BTR_DEBUG + ut_a(btr_page_get_next(cursor->left_page, mtr) + == buf_frame_get_page_no(page)); +#endif /* UNIV_BTR_DEBUG */ ut_a(page_is_comp(cursor->left_page) == page_is_comp(page)); buf_block_align( @@ -201,6 +213,10 @@ btr_cur_latch_leaves( if (left_page_no != FIL_NULL) { cursor->left_page = btr_page_get(space, left_page_no, RW_X_LATCH, mtr); +#ifdef UNIV_BTR_DEBUG + ut_a(btr_page_get_next(cursor->left_page, mtr) + == buf_frame_get_page_no(page)); +#endif /* UNIV_BTR_DEBUG */ ut_a(page_is_comp(cursor->left_page) == page_is_comp(page)); buf_block_align( @@ -1731,6 +1747,10 @@ btr_cur_pess_upd_restore_supremum( ut_ad(prev_page_no != FIL_NULL); prev_page = buf_page_get_with_no_latch(space, prev_page_no, mtr); +#ifdef UNIV_BTR_DEBUG + ut_a(btr_page_get_next(prev_page, mtr) + == buf_frame_get_page_no(page)); +#endif /* UNIV_BTR_DEBUG */ /* We must already have an x-latch to prev_page! */ ut_ad(mtr_memo_contains(mtr, buf_block_align(prev_page), @@ -3771,11 +3791,6 @@ btr_copy_externally_stored_field( page_no = btr_blob_get_next_page_no(blob_header); - /* On other BLOB pages except the first the BLOB header - always is at the page data start: */ - - offset = FIL_PAGE_DATA; - mtr_commit(&mtr); if (page_no == FIL_NULL) { @@ -3786,6 +3801,11 @@ btr_copy_externally_stored_field( return(buf); } + /* On other BLOB pages except the first the BLOB header + always is at the page data start: */ + + offset = FIL_PAGE_DATA; + ut_a(copied_len < local_len + extern_len); } } diff --git a/storage/innobase/btr/btr0pcur.c b/storage/innobase/btr/btr0pcur.c index 85a6577bafb..c739930ce04 100644 --- a/storage/innobase/btr/btr0pcur.c +++ b/storage/innobase/btr/btr0pcur.c @@ -397,6 +397,9 @@ btr_pcur_move_to_next_page( ut_ad(next_page_no != FIL_NULL); next_page = btr_page_get(space, next_page_no, cursor->latch_mode, mtr); +#ifdef UNIV_BTR_DEBUG + ut_a(btr_page_get_prev(next_page, mtr) == buf_frame_get_page_no(page)); +#endif /* UNIV_BTR_DEBUG */ ut_a(page_is_comp(next_page) == page_is_comp(page)); buf_block_align(next_page)->check_index_page_at_flush = TRUE; diff --git a/storage/innobase/btr/btr0sea.c b/storage/innobase/btr/btr0sea.c index be7bb7c421f..2f2102379ab 100644 --- a/storage/innobase/btr/btr0sea.c +++ b/storage/innobase/btr/btr0sea.c @@ -136,13 +136,12 @@ btr_search_sys_create( btr_search_latch_temp = mem_alloc(sizeof(rw_lock_t)); - rw_lock_create(&btr_search_latch); + rw_lock_create(&btr_search_latch, SYNC_SEARCH_SYS); btr_search_sys = mem_alloc(sizeof(btr_search_sys_t)); btr_search_sys->hash_index = ha_create(TRUE, hash_size, 0, 0); - rw_lock_set_level(&btr_search_latch, SYNC_SEARCH_SYS); } /********************************************************************* diff --git a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c index 197b38149fe..5f3e4a9ea50 100644 --- a/storage/innobase/buf/buf0buf.c +++ b/storage/innobase/buf/buf0buf.c @@ -524,12 +524,11 @@ buf_block_init( block->n_pointers = 0; - rw_lock_create(&(block->lock)); + rw_lock_create(&block->lock, SYNC_LEVEL_VARYING); ut_ad(rw_lock_validate(&(block->lock))); #ifdef UNIV_SYNC_DEBUG - rw_lock_create(&(block->debug_latch)); - rw_lock_set_level(&(block->debug_latch), SYNC_NO_ORDER_CHECK); + rw_lock_create(&block->debug_latch, SYNC_NO_ORDER_CHECK); #endif /* UNIV_SYNC_DEBUG */ } @@ -572,8 +571,7 @@ buf_pool_init( /* 1. Initialize general fields ---------------------------- */ - mutex_create(&(buf_pool->mutex)); - mutex_set_level(&(buf_pool->mutex), SYNC_BUF_POOL); + mutex_create(&buf_pool->mutex, SYNC_BUF_POOL); mutex_enter(&(buf_pool->mutex)); @@ -1856,7 +1854,6 @@ buf_page_io_complete( buf_block_t* block) /* in: pointer to the block in question */ { ulint io_type; - ulint read_page_no; ut_ad(block); @@ -1866,18 +1863,36 @@ buf_page_io_complete( if (io_type == BUF_IO_READ) { /* If this page is not uninitialized and not in the - doublewrite buffer, then the page number should be the - same as in block */ - - read_page_no = mach_read_from_4((block->frame) + doublewrite buffer, then the page number and space id + should be the same as in block. */ + ulint read_page_no = mach_read_from_4((block->frame) + FIL_PAGE_OFFSET); - if (read_page_no != 0 - && !trx_doublewrite_page_inside(read_page_no) - && read_page_no != block->offset) { + ulint read_space_id = mach_read_from_4((block->frame) + + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID); + + if (!block->space && trx_doublewrite_page_inside( + block->offset)) { + ut_print_timestamp(stderr); fprintf(stderr, -"InnoDB: Error: page n:o stored in the page read in is %lu, should be %lu!\n", - (ulong) read_page_no, (ulong) block->offset); +" InnoDB: Error: reading page %lu\n" +"InnoDB: which is in the doublewrite buffer!\n", + (ulong) block->offset); + } else if (!read_space_id && !read_page_no) { + /* This is likely an uninitialized page. */ + } else if ((block->space && block->space != read_space_id) + || block->offset != read_page_no) { + /* We did not compare space_id to read_space_id + if block->space == 0, because the field on the + page may contain garbage in MySQL < 4.1.1, + which only supported block->space == 0. */ + + ut_print_timestamp(stderr); + fprintf(stderr, +" InnoDB: Error: space id and page n:o stored in the page\n" +"InnoDB: read in are %lu:%lu, should be %lu:%lu!\n", + (ulong) read_space_id, (ulong) read_page_no, + (ulong) block->space, (ulong) block->offset); } /* From version 3.23.38 up we store the page checksum to the 4 first bytes of the page end lsn field */ @@ -2233,7 +2248,8 @@ buf_get_latched_pages_number(void) } mutex_exit(&(buf_pool->mutex)); - return fixed_pages_number; + + return(fixed_pages_number); } /************************************************************************* diff --git a/storage/innobase/buf/buf0flu.c b/storage/innobase/buf/buf0flu.c index 7b02e353b76..9bfbeb1b456 100644 --- a/storage/innobase/buf/buf0flu.c +++ b/storage/innobase/buf/buf0flu.c @@ -26,7 +26,7 @@ Created 11/11/1995 Heikki Tuuri #include "trx0sys.h" #include "srv0srv.h" -/* When flushed, dirty blocks are searched in neigborhoods of this size, and +/* When flushed, dirty blocks are searched in neighborhoods of this size, and flushed along with the original page. */ #define BUF_FLUSH_AREA ut_min(BUF_READ_AHEAD_AREA,\ diff --git a/storage/innobase/data/data0type.c b/storage/innobase/data/data0type.c index 2f36e7250fc..feac6739101 100644 --- a/storage/innobase/data/data0type.c +++ b/storage/innobase/data/data0type.c @@ -293,3 +293,36 @@ dtype_print( fprintf(stderr, " len %lu prec %lu", (ulong) len, (ulong) type->prec); } + +/*************************************************************************** +Returns the maximum size of a data type. Note: types in system tables may be +incomplete and return incorrect information. */ +UNIV_INLINE +ulint +dtype_get_max_size( +/*===============*/ + /* out: maximum size (ULINT_MAX for + unbounded types) */ + const dtype_t* type) /* in: type */ +{ + switch (type->mtype) { + case DATA_SYS: + case DATA_CHAR: + case DATA_FIXBINARY: + case DATA_INT: + case DATA_FLOAT: + case DATA_DOUBLE: + case DATA_MYSQL: + case DATA_VARCHAR: + case DATA_BINARY: + case DATA_DECIMAL: + case DATA_VARMYSQL: + return(type->len); + case DATA_BLOB: + return(ULINT_MAX); + default: + ut_error; + } + + return(ULINT_MAX); +} diff --git a/storage/innobase/dict/dict0crea.c b/storage/innobase/dict/dict0crea.c index 4233cb05773..a41c90261d8 100644 --- a/storage/innobase/dict/dict0crea.c +++ b/storage/innobase/dict/dict0crea.c @@ -1250,9 +1250,9 @@ dict_foreign_eval_sql( ut_print_timestamp(ef); fputs(" Error in foreign key constraint creation for table ", ef); - ut_print_name(ef, trx, table->name); + ut_print_name(ef, trx, TRUE, table->name); fputs(".\nA foreign key constraint of name ", ef); - ut_print_name(ef, trx, foreign->id); + ut_print_name(ef, trx, FALSE, foreign->id); fputs("\nalready exists." " (Note that internally InnoDB adds 'databasename/'\n" "in front of the user-defined constraint name).\n", @@ -1280,7 +1280,7 @@ dict_foreign_eval_sql( ut_print_timestamp(ef); fputs(" Internal error in foreign key constraint creation" " for table ", ef); - ut_print_name(ef, trx, table->name); + ut_print_name(ef, trx, TRUE, table->name); fputs(".\n" "See the MySQL .err log in the datadir for more information.\n", ef); mutex_exit(&dict_foreign_err_mutex); diff --git a/storage/innobase/dict/dict0dict.c b/storage/innobase/dict/dict0dict.c index 74dffd4c906..8fe3dac4c56 100644 --- a/storage/innobase/dict/dict0dict.c +++ b/storage/innobase/dict/dict0dict.c @@ -26,6 +26,9 @@ Created 1/8/1996 Heikki Tuuri #include "pars0sym.h" #include "que0que.h" #include "rem0cmp.h" +#ifndef UNIV_HOTBACKUP +# include "m_ctype.h" /* my_isspace() */ +#endif /* !UNIV_HOTBACKUP */ dict_sys_t* dict_sys = NULL; /* the dictionary system */ @@ -55,6 +58,42 @@ static char dict_ibfk[] = "_ibfk_"; #ifndef UNIV_HOTBACKUP /********************************************************************** +Converts an identifier to a table name. + +NOTE: the prototype of this function is copied from ha_innodb.cc! If you change +this function, you MUST change also the prototype here! */ +extern +void +innobase_convert_from_table_id( +/*===========================*/ + char* to, /* out: converted identifier */ + const char* from, /* in: identifier to convert */ + ulint len); /* in: length of 'to', in bytes; + should be at least 5 * strlen(to) + 1 */ +/********************************************************************** +Converts an identifier to UTF-8. + +NOTE: the prototype of this function is copied from ha_innodb.cc! If you change +this function, you MUST change also the prototype here! */ +extern +void +innobase_convert_from_id( +/*=====================*/ + char* to, /* out: converted identifier */ + const char* from, /* in: identifier to convert */ + ulint len); /* in: length of 'to', in bytes; + should be at least 3 * strlen(to) + 1 */ +/********************************************************************** +Removes the filename encoding of a table or database name. + +NOTE: the prototype of this function is copied from ha_innodb.cc! If you change +this function, you MUST change also the prototype here! */ +extern +void +innobase_convert_from_filename( +/*===========================*/ + char* s); /* in: identifier; out: decoded identifier */ +/********************************************************************** Compares NUL-terminated UTF-8 strings case insensitively. NOTE: the prototype of this function is copied from ha_innodb.cc! If you change @@ -77,6 +116,17 @@ void innobase_casedn_str( /*================*/ char* a); /* in/out: string to put in lower case */ + +/************************************************************************** +Determines the connection character set. + +NOTE: the prototype of this function is copied from ha_innodb.cc! If you change +this function, you MUST change also the prototype here! */ +struct charset_info_st* +innobase_get_charset( +/*=================*/ + /* out: connection character set */ + void* mysql_thd); /* in: MySQL thread handle */ #endif /* !UNIV_HOTBACKUP */ /************************************************************************** @@ -607,7 +657,7 @@ dict_index_get_nth_field_pos( } /************************************************************************** -Returns a table object, based on table id, and memoryfixes it. */ +Returns a table object based on table id. */ dict_table_t* dict_table_get_on_id( @@ -629,12 +679,12 @@ dict_table_get_on_id( ut_ad(mutex_own(&(dict_sys->mutex))); #endif /* UNIV_SYNC_DEBUG */ - return(dict_table_get_on_id_low(table_id, trx)); + return(dict_table_get_on_id_low(table_id)); } mutex_enter(&(dict_sys->mutex)); - table = dict_table_get_on_id_low(table_id, trx); + table = dict_table_get_on_id_low(table_id); mutex_exit(&(dict_sys->mutex)); @@ -716,8 +766,7 @@ dict_init(void) { dict_sys = mem_alloc(sizeof(dict_sys_t)); - mutex_create(&(dict_sys->mutex)); - mutex_set_level(&(dict_sys->mutex), SYNC_DICT); + mutex_create(&dict_sys->mutex, SYNC_DICT); dict_sys->table_hash = hash_create(buf_pool_get_max_size() / (DICT_POOL_PER_TABLE_HASH * @@ -732,32 +781,28 @@ dict_init(void) UT_LIST_INIT(dict_sys->table_LRU); - rw_lock_create(&dict_operation_lock); - rw_lock_set_level(&dict_operation_lock, SYNC_DICT_OPERATION); + rw_lock_create(&dict_operation_lock, SYNC_DICT_OPERATION); dict_foreign_err_file = os_file_create_tmpfile(); ut_a(dict_foreign_err_file); - mutex_create(&dict_foreign_err_mutex); - mutex_set_level(&dict_foreign_err_mutex, SYNC_ANY_LATCH); + + mutex_create(&dict_foreign_err_mutex, SYNC_ANY_LATCH); } /************************************************************************** -Returns a table object and memoryfixes it. NOTE! This is a high-level -function to be used mainly from outside the 'dict' directory. Inside this -directory dict_table_get_low is usually the appropriate function. */ +Returns a table object. NOTE! This is a high-level function to be used +mainly from outside the 'dict' directory. Inside this directory +dict_table_get_low is usually the appropriate function. */ dict_table_t* dict_table_get( /*===========*/ /* out: table, NULL if does not exist */ - const char* table_name, /* in: table name */ - trx_t* trx) /* in: transaction handle or NULL */ + const char* table_name) /* in: table name */ { dict_table_t* table; - UT_NOT_USED(trx); - mutex_enter(&(dict_sys->mutex)); table = dict_table_get_low(table_name); @@ -781,13 +826,10 @@ dict_table_get_and_increment_handle_count( /*======================================*/ /* out: table, NULL if does not exist */ - const char* table_name, /* in: table name */ - trx_t* trx) /* in: transaction handle or NULL */ + const char* table_name) /* in: table name */ { dict_table_t* table; - UT_NOT_USED(trx); - mutex_enter(&(dict_sys->mutex)); table = dict_table_get_low(table_name); @@ -819,6 +861,7 @@ dict_table_add_to_cache( ulint fold; ulint id_fold; ulint i; + ulint row_len; ut_ad(table); #ifdef UNIV_SYNC_DEBUG @@ -866,6 +909,24 @@ dict_table_add_to_cache( #error "DATA_N_SYS_COLS != 4" #endif + row_len = 0; + for (i = 0; i < table->n_def; i++) { + ulint col_len = dtype_get_max_size( + dict_col_get_type(dict_table_get_nth_col(table, i))); + + /* If we have a single unbounded field, or several gigantic + fields, mark the maximum row size as ULINT_MAX. */ + if (ut_max(col_len, row_len) >= (ULINT_MAX / 2)) { + row_len = ULINT_MAX; + + break; + } + + row_len += col_len; + } + + table->max_row_size = row_len; + /* Look for a table with the same name: error if such exists */ { dict_table_t* table2; @@ -897,10 +958,7 @@ dict_table_add_to_cache( /* Add table to LRU list of tables */ UT_LIST_ADD_FIRST(table_LRU, dict_sys->table_LRU, table); - /* If the dictionary cache grows too big, trim the table LRU list */ - dict_sys->size += mem_heap_get_size(table->heap); - /* dict_table_LRU_trim(); */ } /************************************************************************** @@ -1265,38 +1323,6 @@ dict_table_remove_from_cache( dict_mem_table_free(table); } -/************************************************************************** -Frees tables from the end of table_LRU if the dictionary cache occupies -too much space. Currently not used! */ - -void -dict_table_LRU_trim(void) -/*=====================*/ -{ - dict_table_t* table; - dict_table_t* prev_table; - - ut_error; - -#ifdef UNIV_SYNC_DEBUG - ut_ad(mutex_own(&(dict_sys->mutex))); -#endif /* UNIV_SYNC_DEBUG */ - - table = UT_LIST_GET_LAST(dict_sys->table_LRU); - - while (table && (dict_sys->size > - buf_pool_get_max_size() / DICT_POOL_PER_VARYING)) { - - prev_table = UT_LIST_GET_PREV(table_LRU, table); - - if (table->mem_fix == 0) { - dict_table_remove_from_cache(table); - } - - table = prev_table; - } -} - /************************************************************************** Adds a column to the data dictionary hash table. */ static @@ -1443,6 +1469,7 @@ dict_index_add_to_cache( ut_ad(mem_heap_validate(index->heap)); +#ifdef UNIV_DEBUG { dict_index_t* index2; index2 = UT_LIST_GET_FIRST(table->indexes); @@ -1452,10 +1479,11 @@ dict_index_add_to_cache( index2 = UT_LIST_GET_NEXT(indexes, index2); } - - ut_a(UT_LIST_GET_LEN(table->indexes) == 0 - || (index->type & DICT_CLUSTERED) == 0); } +#endif /* UNIV_DEBUG */ + + ut_a(!(index->type & DICT_CLUSTERED) + || UT_LIST_GET_LEN(table->indexes) == 0); success = dict_index_find_cols(table, index); @@ -1526,10 +1554,7 @@ dict_index_add_to_cache( /* Add the index to the list of indexes stored in the tree */ tree->tree_index = new_index; - /* If the dictionary cache grows too big, trim the table LRU list */ - dict_sys->size += mem_heap_get_size(new_index->heap); - /* dict_table_LRU_trim(); */ dict_mem_index_free(index); @@ -2091,6 +2116,7 @@ dict_foreign_find( return(NULL); } +#ifndef UNIV_HOTBACKUP /************************************************************************* Tries to find an index whose first fields are the columns in the array, in the same order. */ @@ -2108,7 +2134,6 @@ dict_foreign_find_index( only has an effect if types_idx != NULL. */ { -#ifndef UNIV_HOTBACKUP dict_index_t* index; const char* col_name; ulint i; @@ -2154,13 +2179,6 @@ dict_foreign_find_index( } return(NULL); -#else /* UNIV_HOTBACKUP */ - /* This function depends on MySQL code that is not included in - InnoDB Hot Backup builds. Besides, this function should never - be called in InnoDB Hot Backup. */ - ut_error; - return(NULL); -#endif /* UNIV_HOTBACKUP */ } /************************************************************************** @@ -2196,7 +2214,7 @@ dict_foreign_error_report( putc('\n', file); if (fk->foreign_index) { fputs("The index in the foreign key in table is ", file); - ut_print_name(file, NULL, fk->foreign_index->name); + ut_print_name(file, NULL, FALSE, fk->foreign_index->name); fputs( "\nSee http://dev.mysql.com/doc/mysql/en/InnoDB_foreign_key_constraints.html\n" "for correct foreign key definition.\n", @@ -2359,12 +2377,13 @@ dict_scan_to( /************************************************************************* Accepts a specified string. Comparisons are case-insensitive. */ - +static const char* dict_accept( /*========*/ /* out: if string was accepted, the pointer is moved after that, else ptr is returned */ + struct charset_info_st* cs,/* in: the character set of ptr */ const char* ptr, /* in: scan from this */ const char* string, /* in: accept only this string as the next non-whitespace string */ @@ -2375,7 +2394,7 @@ dict_accept( *success = FALSE; - while (isspace(*ptr)) { + while (my_isspace(cs, *ptr)) { ptr++; } @@ -2400,12 +2419,15 @@ const char* dict_scan_id( /*=========*/ /* out: scanned to */ + struct charset_info_st* cs,/* in: the character set of ptr */ const char* ptr, /* in: scanned to */ mem_heap_t* heap, /* in: heap where to allocate the id (NULL=id will not be allocated, but it will point to string near ptr) */ const char** id, /* out,own: the id; NULL if no id was scannable */ + ibool table_id,/* in: TRUE=convert the allocated id + as a table name; FALSE=convert to UTF-8 */ ibool accept_also_dot) /* in: TRUE if also a dot can appear in a non-quoted id; in a quoted id it can appear @@ -2414,13 +2436,12 @@ dict_scan_id( char quote = '\0'; ulint len = 0; const char* s; - char* d; - ulint id_len; - byte* b; + char* str; + char* dst; *id = NULL; - while (isspace(*ptr)) { + while (my_isspace(cs, *ptr)) { ptr++; } @@ -2451,7 +2472,7 @@ dict_scan_id( len++; } } else { - while (!isspace(*ptr) && *ptr != '(' && *ptr != ')' + while (!my_isspace(cs, *ptr) && *ptr != '(' && *ptr != ')' && (accept_also_dot || *ptr != '.') && *ptr != ',' && *ptr != '\0') { @@ -2461,43 +2482,50 @@ dict_scan_id( len = ptr - s; } - if (quote && heap) { - *id = d = mem_heap_alloc(heap, len + 1); + if (UNIV_UNLIKELY(!heap)) { + /* no heap given: id will point to source string */ + *id = s; + return(ptr); + } + + if (quote) { + char* d; + str = d = mem_heap_alloc(heap, len + 1); while (len--) { if ((*d++ = *s++) == quote) { s++; } } *d++ = 0; - ut_a(*s == quote); - ut_a(s + 1 == ptr); - } else if (heap) { - *id = mem_heap_strdupl(heap, s, len); + len = d - str; + ut_ad(*s == quote); + ut_ad(s + 1 == ptr); } else { - /* no heap given: id will point to source string */ - *id = s; - } - - if (heap && !quote) { - /* EMS MySQL Manager sometimes adds characters 0xA0 (in - latin1, a 'non-breakable space') to the end of a table name. - But isspace(0xA0) is not true, which confuses our foreign key - parser. After the UTF-8 conversion in ha_innodb.cc, bytes 0xC2 - and 0xA0 are at the end of the string. - - TODO: we should lex the string using thd->charset_info, and - my_isspace(). Only after that, convert id names to UTF-8. */ - - b = (byte*)(*id); - id_len = strlen((char*) b); - - if (id_len >= 3 && b[id_len - 1] == 0xA0 - && b[id_len - 2] == 0xC2) { - - /* Strip the 2 last bytes */ + str = mem_heap_strdupl(heap, s, len); + } + + if (!table_id) { +convert_id: + /* Convert the identifier from connection character set + to UTF-8. */ + len = 3 * len + 1; + *id = dst = mem_heap_alloc(heap, len); + + innobase_convert_from_id(dst, str, len); + } else if (!strncmp(str, srv_mysql50_table_name_prefix, + sizeof srv_mysql50_table_name_prefix)) { + /* This is a pre-5.1 table name + containing chars other than [A-Za-z0-9]. + Discard the prefix and use raw UTF-8 encoding. */ + str += sizeof srv_mysql50_table_name_prefix; + len -= sizeof srv_mysql50_table_name_prefix; + goto convert_id; + } else { + /* Encode using filename-safe characters. */ + len = 5 * len + 1; + *id = dst = mem_heap_alloc(heap, len); - b[id_len - 2] = '\0'; - } + innobase_convert_from_table_id(dst, str, len); } return(ptr); @@ -2510,6 +2538,7 @@ const char* dict_scan_col( /*==========*/ /* out: scanned to */ + struct charset_info_st* cs,/* in: the character set of ptr */ const char* ptr, /* in: scanned to */ ibool* success,/* out: TRUE if success */ dict_table_t* table, /* in: table in which the column is */ @@ -2518,13 +2547,12 @@ dict_scan_col( const char** name) /* out,own: the column name; NULL if no name was scannable */ { -#ifndef UNIV_HOTBACKUP dict_col_t* col; ulint i; *success = FALSE; - ptr = dict_scan_id(ptr, heap, name, TRUE); + ptr = dict_scan_id(cs, ptr, heap, name, FALSE, TRUE); if (*name == NULL) { @@ -2552,13 +2580,6 @@ dict_scan_col( } return(ptr); -#else /* UNIV_HOTBACKUP */ - /* This function depends on MySQL code that is not included in - InnoDB Hot Backup builds. Besides, this function should never - be called in InnoDB Hot Backup. */ - ut_error; - return(NULL); -#endif /* UNIV_HOTBACKUP */ } /************************************************************************* @@ -2568,6 +2589,7 @@ const char* dict_scan_table_name( /*=================*/ /* out: scanned to */ + struct charset_info_st* cs,/* in: the character set of ptr */ const char* ptr, /* in: scanned to */ dict_table_t** table, /* out: table object or NULL */ const char* name, /* in: foreign key table name */ @@ -2576,7 +2598,6 @@ dict_scan_table_name( const char** ref_name)/* out,own: the table name; NULL if no name was scannable */ { -#ifndef UNIV_HOTBACKUP const char* database_name = NULL; ulint database_name_len = 0; const char* table_name = NULL; @@ -2587,7 +2608,7 @@ dict_scan_table_name( *success = FALSE; *table = NULL; - ptr = dict_scan_id(ptr, heap, &scan_name, FALSE); + ptr = dict_scan_id(cs, ptr, heap, &scan_name, TRUE, FALSE); if (scan_name == NULL) { @@ -2602,7 +2623,7 @@ dict_scan_table_name( database_name = scan_name; database_name_len = strlen(database_name); - ptr = dict_scan_id(ptr, heap, &table_name, FALSE); + ptr = dict_scan_id(cs, ptr, heap, &table_name, TRUE, FALSE); if (table_name == NULL) { @@ -2658,13 +2679,6 @@ dict_scan_table_name( *table = dict_table_get_low(ref); return(ptr); -#else /* UNIV_HOTBACKUP */ - /* This function depends on MySQL code that is not included in - InnoDB Hot Backup builds. Besides, this function should never - be called in InnoDB Hot Backup. */ - ut_error; - return(NULL); -#endif /* UNIV_HOTBACKUP */ } /************************************************************************* @@ -2674,6 +2688,7 @@ const char* dict_skip_word( /*===========*/ /* out: scanned to */ + struct charset_info_st* cs,/* in: the character set of ptr */ const char* ptr, /* in: scanned to */ ibool* success)/* out: TRUE if success, FALSE if just spaces left in string or a syntax error */ @@ -2682,7 +2697,7 @@ dict_skip_word( *success = FALSE; - ptr = dict_scan_id(ptr, NULL, &start, TRUE); + ptr = dict_scan_id(cs, ptr, NULL, &start, FALSE, TRUE); if (start) { *success = TRUE; @@ -2860,6 +2875,7 @@ dict_create_foreign_constraints_low( /* out: error code or DB_SUCCESS */ trx_t* trx, /* in: transaction */ mem_heap_t* heap, /* in: memory heap */ + struct charset_info_st* cs,/* in: the character set of sql_string */ const char* sql_string, /* in: CREATE TABLE or ALTER TABLE statement where foreign keys are declared like: @@ -2917,14 +2933,14 @@ dict_create_foreign_constraints_low( /* First check if we are actually doing an ALTER TABLE, and in that case look for the table being altered */ - ptr = dict_accept(ptr, "ALTER", &success); + ptr = dict_accept(cs, ptr, "ALTER", &success); if (!success) { goto loop; } - ptr = dict_accept(ptr, "TABLE", &success); + ptr = dict_accept(cs, ptr, "TABLE", &success); if (!success) { @@ -2933,7 +2949,7 @@ dict_create_foreign_constraints_low( /* We are doing an ALTER TABLE: scan the table name we are altering */ - ptr = dict_scan_table_name(ptr, &table_to_alter, name, + ptr = dict_scan_table_name(cs, ptr, &table_to_alter, name, &success, heap, &referenced_table_name); if (!success) { fprintf(stderr, @@ -2973,21 +2989,22 @@ loop: of the constraint to system tables. */ ptr = ptr1; - ptr = dict_accept(ptr, "CONSTRAINT", &success); + ptr = dict_accept(cs, ptr, "CONSTRAINT", &success); ut_a(success); - if (!isspace(*ptr) && *ptr != '"' && *ptr != '`') { + if (!my_isspace(cs, *ptr) && *ptr != '"' && *ptr != '`') { goto loop; } - while (isspace(*ptr)) { + while (my_isspace(cs, *ptr)) { ptr++; } /* read constraint name unless got "CONSTRAINT FOREIGN" */ if (ptr != ptr2) { - ptr = dict_scan_id(ptr, heap, &constraint_name, FALSE); + ptr = dict_scan_id(cs, ptr, heap, + &constraint_name, FALSE, FALSE); } } else { ptr = ptr2; @@ -3002,7 +3019,8 @@ loop: if so, immediately reject the command if the table is a temporary one. For now, this kludge will work. */ if (reject_fks && (UT_LIST_GET_LEN(table->foreign_list) > 0)) { - return DB_CANNOT_ADD_CONSTRAINT; + + return(DB_CANNOT_ADD_CONSTRAINT); } /**********************************************************/ @@ -3016,28 +3034,28 @@ loop: start_of_latest_foreign = ptr; - ptr = dict_accept(ptr, "FOREIGN", &success); + ptr = dict_accept(cs, ptr, "FOREIGN", &success); if (!success) { goto loop; } - if (!isspace(*ptr)) { + if (!my_isspace(cs, *ptr)) { goto loop; } - ptr = dict_accept(ptr, "KEY", &success); + ptr = dict_accept(cs, ptr, "KEY", &success); if (!success) { goto loop; } - ptr = dict_accept(ptr, "(", &success); + ptr = dict_accept(cs, ptr, "(", &success); if (!success) { /* MySQL allows also an index id before the '('; we skip it */ - ptr = dict_skip_word(ptr, &success); + ptr = dict_skip_word(cs, ptr, &success); if (!success) { dict_foreign_report_syntax_err(name, @@ -3046,7 +3064,7 @@ loop: return(DB_CANNOT_ADD_CONSTRAINT); } - ptr = dict_accept(ptr, "(", &success); + ptr = dict_accept(cs, ptr, "(", &success); if (!success) { /* We do not flag a syntax error here because in an @@ -3061,7 +3079,7 @@ loop: /* Scan the columns in the first list */ col_loop1: ut_a(i < (sizeof column_names) / sizeof *column_names); - ptr = dict_scan_col(ptr, &success, table, columns + i, + ptr = dict_scan_col(cs, ptr, &success, table, columns + i, heap, column_names + i); if (!success) { mutex_enter(&dict_foreign_err_mutex); @@ -3075,13 +3093,13 @@ col_loop1: i++; - ptr = dict_accept(ptr, ",", &success); + ptr = dict_accept(cs, ptr, ",", &success); if (success) { goto col_loop1; } - ptr = dict_accept(ptr, ")", &success); + ptr = dict_accept(cs, ptr, ")", &success); if (!success) { dict_foreign_report_syntax_err(name, start_of_latest_foreign, @@ -3098,7 +3116,7 @@ col_loop1: mutex_enter(&dict_foreign_err_mutex); dict_foreign_error_report_low(ef, name); fputs("There is no index in table ", ef); - ut_print_name(ef, NULL, name); + ut_print_name(ef, NULL, TRUE, name); fprintf(ef, " where the columns appear\n" "as the first columns. Constraint:\n%s\n" "See http://dev.mysql.com/doc/mysql/en/InnoDB_foreign_key_constraints.html\n" @@ -3108,9 +3126,9 @@ col_loop1: return(DB_CANNOT_ADD_CONSTRAINT); } - ptr = dict_accept(ptr, "REFERENCES", &success); + ptr = dict_accept(cs, ptr, "REFERENCES", &success); - if (!success || !isspace(*ptr)) { + if (!success || !my_isspace(cs, *ptr)) { dict_foreign_report_syntax_err(name, start_of_latest_foreign, ptr); return(DB_CANNOT_ADD_CONSTRAINT); @@ -3150,7 +3168,7 @@ col_loop1: mem_heap_strdup(foreign->heap, columns[i]->name); } - ptr = dict_scan_table_name(ptr, &referenced_table, name, + ptr = dict_scan_table_name(cs, ptr, &referenced_table, name, &success, heap, &referenced_table_name); /* Note that referenced_table can be NULL if the user has suppressed @@ -3169,7 +3187,7 @@ col_loop1: return(DB_CANNOT_ADD_CONSTRAINT); } - ptr = dict_accept(ptr, "(", &success); + ptr = dict_accept(cs, ptr, "(", &success); if (!success) { dict_foreign_free(foreign); @@ -3182,7 +3200,7 @@ col_loop1: i = 0; col_loop2: - ptr = dict_scan_col(ptr, &success, referenced_table, columns + i, + ptr = dict_scan_col(cs, ptr, &success, referenced_table, columns + i, heap, column_names + i); i++; @@ -3199,13 +3217,13 @@ col_loop2: return(DB_CANNOT_ADD_CONSTRAINT); } - ptr = dict_accept(ptr, ",", &success); + ptr = dict_accept(cs, ptr, ",", &success); if (success) { goto col_loop2; } - ptr = dict_accept(ptr, ")", &success); + ptr = dict_accept(cs, ptr, ")", &success); if (!success || foreign->n_fields != i) { dict_foreign_free(foreign); @@ -3221,17 +3239,17 @@ col_loop2: scan_on_conditions: /* Loop here as long as we can find ON ... conditions */ - ptr = dict_accept(ptr, "ON", &success); + ptr = dict_accept(cs, ptr, "ON", &success); if (!success) { goto try_find_index; } - ptr = dict_accept(ptr, "DELETE", &success); + ptr = dict_accept(cs, ptr, "DELETE", &success); if (!success) { - ptr = dict_accept(ptr, "UPDATE", &success); + ptr = dict_accept(cs, ptr, "UPDATE", &success); if (!success) { dict_foreign_free(foreign); @@ -3248,13 +3266,13 @@ scan_on_conditions: n_on_deletes++; } - ptr = dict_accept(ptr, "RESTRICT", &success); + ptr = dict_accept(cs, ptr, "RESTRICT", &success); if (success) { goto scan_on_conditions; } - ptr = dict_accept(ptr, "CASCADE", &success); + ptr = dict_accept(cs, ptr, "CASCADE", &success); if (success) { if (is_on_delete) { @@ -3266,10 +3284,10 @@ scan_on_conditions: goto scan_on_conditions; } - ptr = dict_accept(ptr, "NO", &success); + ptr = dict_accept(cs, ptr, "NO", &success); if (success) { - ptr = dict_accept(ptr, "ACTION", &success); + ptr = dict_accept(cs, ptr, "ACTION", &success); if (!success) { dict_foreign_free(foreign); @@ -3288,7 +3306,7 @@ scan_on_conditions: goto scan_on_conditions; } - ptr = dict_accept(ptr, "SET", &success); + ptr = dict_accept(cs, ptr, "SET", &success); if (!success) { dict_foreign_free(foreign); @@ -3297,7 +3315,7 @@ scan_on_conditions: return(DB_CANNOT_ADD_CONSTRAINT); } - ptr = dict_accept(ptr, "NULL", &success); + ptr = dict_accept(cs, ptr, "NULL", &success); if (!success) { dict_foreign_free(foreign); @@ -3407,6 +3425,25 @@ try_find_index: goto loop; } +/************************************************************************** +Determines whether a string starts with the specified keyword. */ + +ibool +dict_str_starts_with_keyword( +/*=========================*/ + /* out: TRUE if str starts + with keyword */ + void* mysql_thd, /* in: MySQL thread handle */ + const char* str, /* in: string to scan for keyword */ + const char* keyword) /* in: keyword to look for */ +{ + struct charset_info_st* cs = innobase_get_charset(mysql_thd); + ibool success; + + dict_accept(cs, str, keyword, &success); + return(success); +} + /************************************************************************* Scans a table create SQL string and adds to the data dictionary the foreign key constraints declared in the string. This function should be called after @@ -3434,15 +3471,18 @@ dict_create_foreign_constraints( code DB_CANNOT_ADD_CONSTRAINT if any foreign keys are found. */ { - char* str; - ulint err; - mem_heap_t* heap; + char* str; + ulint err; + mem_heap_t* heap; + + ut_a(trx && trx->mysql_thd); str = dict_strip_comments(sql_string); heap = mem_heap_create(10000); - err = dict_create_foreign_constraints_low(trx, heap, str, name, - reject_fks); + err = dict_create_foreign_constraints_low(trx, heap, + innobase_get_charset(trx->mysql_thd), + str, name, reject_fks); mem_heap_free(heap); mem_free(str); @@ -3469,12 +3509,17 @@ dict_foreign_parse_drop_constraints( const char*** constraints_to_drop) /* out: id's of the constraints to drop */ { - dict_foreign_t* foreign; - ibool success; - char* str; - const char* ptr; - const char* id; - FILE* ef = dict_foreign_err_file; + dict_foreign_t* foreign; + ibool success; + char* str; + const char* ptr; + const char* id; + FILE* ef = dict_foreign_err_file; + struct charset_info_st* cs; + + ut_a(trx && trx->mysql_thd); + + cs = innobase_get_charset(trx->mysql_thd); *n = 0; @@ -3495,28 +3540,28 @@ loop: return(DB_SUCCESS); } - ptr = dict_accept(ptr, "DROP", &success); + ptr = dict_accept(cs, ptr, "DROP", &success); - if (!isspace(*ptr)) { + if (!my_isspace(cs, *ptr)) { goto loop; } - ptr = dict_accept(ptr, "FOREIGN", &success); + ptr = dict_accept(cs, ptr, "FOREIGN", &success); if (!success) { goto loop; } - ptr = dict_accept(ptr, "KEY", &success); + ptr = dict_accept(cs, ptr, "KEY", &success); if (!success) { goto syntax_error; } - ptr = dict_scan_id(ptr, heap, &id, TRUE); + ptr = dict_scan_id(cs, ptr, heap, &id, FALSE, TRUE); if (id == NULL) { @@ -3549,12 +3594,12 @@ loop: ut_print_timestamp(ef); fputs( " Error in dropping of a foreign key constraint of table ", ef); - ut_print_name(ef, NULL, table->name); + ut_print_name(ef, NULL, TRUE, table->name); fputs(",\n" "in SQL command\n", ef); fputs(str, ef); fputs("\nCannot find a constraint with the given id ", ef); - ut_print_name(ef, NULL, id); + ut_print_name(ef, NULL, FALSE, id); fputs(".\n", ef); mutex_exit(&dict_foreign_err_mutex); @@ -3571,7 +3616,7 @@ syntax_error: ut_print_timestamp(ef); fputs( " Syntax error in dropping of a foreign key constraint of table ", ef); - ut_print_name(ef, NULL, table->name); + ut_print_name(ef, NULL, TRUE, table->name); fprintf(ef, ",\n" "close to:\n%s\n in SQL command\n%s\n", ptr, str); mutex_exit(&dict_foreign_err_mutex); @@ -3580,6 +3625,7 @@ syntax_error: return(DB_CANNOT_DROP_CONSTRAINT); } +#endif /* UNIV_HOTBACKUP */ /*==================== END OF FOREIGN KEY PROCESSING ====================*/ @@ -3653,9 +3699,7 @@ dict_tree_create( tree->magic_n = DICT_TREE_MAGIC_N; - rw_lock_create(&(tree->lock)); - - rw_lock_set_level(&(tree->lock), SYNC_INDEX_TREE); + rw_lock_create(&tree->lock, SYNC_INDEX_TREE); return(tree); } @@ -4232,11 +4276,11 @@ dict_print_info_on_foreign_key_in_create_format( } fputs(" CONSTRAINT ", file); - ut_print_name(file, trx, stripped_id); + ut_print_name(file, trx, FALSE, stripped_id); fputs(" FOREIGN KEY (", file); for (i = 0;;) { - ut_print_name(file, trx, foreign->foreign_col_names[i]); + ut_print_name(file, trx, FALSE, foreign->foreign_col_names[i]); if (++i < foreign->n_fields) { fputs(", ", file); } else { @@ -4249,7 +4293,7 @@ dict_print_info_on_foreign_key_in_create_format( if (dict_tables_have_same_db(foreign->foreign_table_name, foreign->referenced_table_name)) { /* Do not print the database name of the referenced table */ - ut_print_name(file, trx, dict_remove_db_name( + ut_print_name(file, trx, TRUE, dict_remove_db_name( foreign->referenced_table_name)); } else { /* Look for the '/' in the table name */ @@ -4259,9 +4303,10 @@ dict_print_info_on_foreign_key_in_create_format( i++; } - ut_print_namel(file, trx, foreign->referenced_table_name, i); + ut_print_namel(file, trx, TRUE, + foreign->referenced_table_name, i); putc('.', file); - ut_print_name(file, trx, + ut_print_name(file, trx, TRUE, foreign->referenced_table_name + i + 1); } @@ -4269,7 +4314,8 @@ dict_print_info_on_foreign_key_in_create_format( putc('(', file); for (i = 0;;) { - ut_print_name(file, trx, foreign->referenced_col_names[i]); + ut_print_name(file, trx, FALSE, + foreign->referenced_col_names[i]); if (++i < foreign->n_fields) { fputs(", ", file); } else { @@ -4343,12 +4389,12 @@ dict_print_info_on_foreign_keys( putc(' ', file); } - ut_print_name(file, trx, + ut_print_name(file, trx, FALSE, foreign->foreign_col_names[i]); } fputs(") REFER ", file); - ut_print_name(file, trx, + ut_print_name(file, trx, TRUE, foreign->referenced_table_name); putc('(', file); @@ -4356,7 +4402,7 @@ dict_print_info_on_foreign_keys( if (i) { putc(' ', file); } - ut_print_name(file, trx, + ut_print_name(file, trx, FALSE, foreign->referenced_col_names[i]); } @@ -4403,7 +4449,7 @@ dict_index_name_print( const dict_index_t* index) /* in: index to print */ { fputs("index ", file); - ut_print_name(file, trx, index->name); + ut_print_name(file, trx, FALSE, index->name); fputs(" of table ", file); - ut_print_name(file, trx, index->table_name); + ut_print_name(file, trx, TRUE, index->table_name); } diff --git a/storage/innobase/dict/dict0load.c b/storage/innobase/dict/dict0load.c index ccf4b47c284..58900d85f67 100644 --- a/storage/innobase/dict/dict0load.c +++ b/storage/innobase/dict/dict0load.c @@ -184,7 +184,7 @@ loop: if (table == NULL) { fputs("InnoDB: Failed to load table ", stderr); - ut_print_namel(stderr, NULL, (char*) field, len); + ut_print_namel(stderr, NULL, TRUE, (char*) field, len); putc('\n', stderr); } else { /* The table definition was corrupt if there diff --git a/storage/innobase/dict/dict0mem.c b/storage/innobase/dict/dict0mem.c index fe21890adc8..42bf39078d1 100644 --- a/storage/innobase/dict/dict0mem.c +++ b/storage/innobase/dict/dict0mem.c @@ -58,7 +58,6 @@ dict_mem_table_create( table->tablespace_discarded = FALSE; table->n_def = 0; table->n_cols = n_cols + DATA_N_SYS_COLS; - table->mem_fix = 0; table->n_mysql_handles_opened = 0; table->n_foreign_key_checks_running = 0; @@ -83,8 +82,9 @@ dict_mem_table_create( table->stat_modified_counter = 0; - mutex_create(&(table->autoinc_mutex)); - mutex_set_level(&(table->autoinc_mutex), SYNC_DICT_AUTOINC_MUTEX); + table->max_row_size = 0; + + mutex_create(&table->autoinc_mutex, SYNC_DICT_AUTOINC_MUTEX); table->autoinc_inited = FALSE; diff --git a/storage/innobase/fil/fil0fil.c b/storage/innobase/fil/fil0fil.c index 7418420628e..b2935a119a5 100644 --- a/storage/innobase/fil/fil0fil.c +++ b/storage/innobase/fil/fil0fil.c @@ -1050,8 +1050,7 @@ try_again: space->ibuf_data = NULL; - rw_lock_create(&(space->latch)); - rw_lock_set_level(&(space->latch), SYNC_FSP); + rw_lock_create(&space->latch, SYNC_FSP); HASH_INSERT(fil_space_t, hash, system->spaces, id, space); @@ -1295,9 +1294,7 @@ fil_system_create( system = mem_alloc(sizeof(fil_system_t)); - mutex_create(&(system->mutex)); - - mutex_set_level(&(system->mutex), SYNC_ANY_LATCH); + mutex_create(&system->mutex, SYNC_ANY_LATCH); system->spaces = hash_create(hash_size); system->name_hash = hash_create(hash_size); diff --git a/storage/innobase/ha/hash0hash.c b/storage/innobase/ha/hash0hash.c index 659aeb815d8..6084a19fa27 100644 --- a/storage/innobase/ha/hash0hash.c +++ b/storage/innobase/ha/hash0hash.c @@ -144,9 +144,7 @@ hash_create_mutexes( table->mutexes = mem_alloc(n_mutexes * sizeof(mutex_t)); for (i = 0; i < n_mutexes; i++) { - mutex_create(table->mutexes + i); - - mutex_set_level(table->mutexes + i, sync_level); + mutex_create(table->mutexes + i, sync_level); } table->n_mutexes = n_mutexes; diff --git a/storage/innobase/ibuf/ibuf0ibuf.c b/storage/innobase/ibuf/ibuf0ibuf.c index 3263a0efd5b..369fbd61c04 100644 --- a/storage/innobase/ibuf/ibuf0ibuf.c +++ b/storage/innobase/ibuf/ibuf0ibuf.c @@ -144,6 +144,7 @@ static ulint ibuf_rnd = 986058871; ulint ibuf_flush_count = 0; +#ifdef UNIV_IBUF_DEBUG /* Dimensions for the ibuf_count array */ #define IBUF_COUNT_N_SPACES 500 #define IBUF_COUNT_N_PAGES 2000 @@ -152,6 +153,7 @@ ulint ibuf_flush_count = 0; static ulint* ibuf_counts[IBUF_COUNT_N_SPACES]; static ibool ibuf_counts_inited = FALSE; +#endif /* The start address for an insert buffer bitmap page bitmap */ #define IBUF_BITMAP PAGE_DATA @@ -314,6 +316,7 @@ ibuf_tree_root_get( return(page); } +#ifdef UNIV_IBUF_DEBUG /********************************************************************** Gets the ibuf count for a given page. */ @@ -338,7 +341,6 @@ ibuf_count_get( /********************************************************************** Sets the ibuf count for a given page. */ -#ifdef UNIV_IBUF_DEBUG static void ibuf_count_set( @@ -389,23 +391,18 @@ ibuf_init_at_db_start(void) ibuf_count_set(i, j, 0); } } + + ibuf_counts_inited = TRUE; } #endif - mutex_create(&ibuf_pessimistic_insert_mutex); - - mutex_set_level(&ibuf_pessimistic_insert_mutex, - SYNC_IBUF_PESS_INSERT_MUTEX); - mutex_create(&ibuf_mutex); + mutex_create(&ibuf_pessimistic_insert_mutex, + SYNC_IBUF_PESS_INSERT_MUTEX); - mutex_set_level(&ibuf_mutex, SYNC_IBUF_MUTEX); + mutex_create(&ibuf_mutex, SYNC_IBUF_MUTEX); - mutex_create(&ibuf_bitmap_mutex); - - mutex_set_level(&ibuf_bitmap_mutex, SYNC_IBUF_BITMAP_MUTEX); + mutex_create(&ibuf_bitmap_mutex, SYNC_IBUF_BITMAP_MUTEX); fil_ibuf_init_at_db_start(); - - ibuf_counts_inited = TRUE; } /********************************************************************** @@ -2348,6 +2345,10 @@ ibuf_get_volume_buffered( } prev_page = buf_page_get(0, prev_page_no, RW_X_LATCH, mtr); +#ifdef UNIV_BTR_DEBUG + ut_a(btr_page_get_next(prev_page, mtr) + == buf_frame_get_page_no(page)); +#endif /* UNIV_BTR_DEBUG */ #ifdef UNIV_SYNC_DEBUG buf_page_dbg_add_level(prev_page, SYNC_TREE_NODE); @@ -2411,6 +2412,10 @@ count_later: } next_page = buf_page_get(0, next_page_no, RW_X_LATCH, mtr); +#ifdef UNIV_BTR_DEBUG + ut_a(btr_page_get_prev(next_page, mtr) + == buf_frame_get_page_no(page)); +#endif /* UNIV_BTR_DEBUG */ #ifdef UNIV_SYNC_DEBUG buf_page_dbg_add_level(next_page, SYNC_TREE_NODE); diff --git a/storage/innobase/include/data0type.h b/storage/innobase/include/data0type.h index d7c9dcb45a2..1c998c8dc56 100644 --- a/storage/innobase/include/data0type.h +++ b/storage/innobase/include/data0type.h @@ -330,6 +330,16 @@ dtype_get_min_size( /* out: minimum size */ const dtype_t* type); /* in: type */ /*************************************************************************** +Returns the maximum size of a data type. Note: types in system tables may be +incomplete and return incorrect information. */ +UNIV_INLINE +ulint +dtype_get_max_size( +/*===============*/ + /* out: maximum size (ULINT_MAX for + unbounded types) */ + const dtype_t* type); /* in: type */ +/*************************************************************************** Returns a stored SQL NULL size for a type. For fixed length types it is the fixed length of the type, otherwise 0. */ UNIV_INLINE diff --git a/storage/innobase/include/dict0dict.h b/storage/innobase/include/dict0dict.h index 39cde5bfb55..c27ff715986 100644 --- a/storage/innobase/include/dict0dict.h +++ b/storage/innobase/include/dict0dict.h @@ -44,18 +44,6 @@ dict_get_db_name_len( /* out: database name length */ const char* name); /* in: table name in the form dbname '/' tablename */ -/************************************************************************* -Accepts a specified string. Comparisons are case-insensitive. */ - -const char* -dict_accept( -/*========*/ - /* out: if string was accepted, the pointer - is moved after that, else ptr is returned */ - const char* ptr, /* in: scan from this */ - const char* string, /* in: accept only this string as the next - non-whitespace string */ - ibool* success);/* out: TRUE if accepted */ /************************************************************************ Decrements the count of open MySQL handles to a table. */ @@ -219,6 +207,17 @@ dict_table_referenced_by_foreign_key( /* out: TRUE if table is referenced by a foreign key */ dict_table_t* table); /* in: InnoDB table */ +/************************************************************************** +Determines whether a string starts with the specified keyword. */ + +ibool +dict_str_starts_with_keyword( +/*=========================*/ + /* out: TRUE if str starts + with keyword */ + void* mysql_thd, /* in: MySQL thread handle */ + const char* str, /* in: string to scan for keyword */ + const char* keyword); /* in: keyword to look for */ /************************************************************************* Scans a table create SQL string and adds to the data dictionary the foreign key constraints declared in the string. This function @@ -265,17 +264,16 @@ dict_foreign_parse_drop_constraints( const char*** constraints_to_drop); /* out: id's of the constraints to drop */ /************************************************************************** -Returns a table object and memoryfixes it. NOTE! This is a high-level -function to be used mainly from outside the 'dict' directory. Inside this -directory dict_table_get_low is usually the appropriate function. */ +Returns a table object. NOTE! This is a high-level function to be used +mainly from outside the 'dict' directory. Inside this directory +dict_table_get_low is usually the appropriate function. */ dict_table_t* dict_table_get( /*===========*/ /* out: table, NULL if does not exist */ - const char* table_name, /* in: table name */ - trx_t* trx); /* in: transaction handle */ + const char* table_name); /* in: table name */ /************************************************************************** Returns a table object and increments MySQL open handle count on the table. */ @@ -285,10 +283,9 @@ dict_table_get_and_increment_handle_count( /*======================================*/ /* out: table, NULL if does not exist */ - const char* table_name, /* in: table name */ - trx_t* trx); /* in: transaction handle or NULL */ + const char* table_name); /* in: table name */ /************************************************************************** -Returns a table object, based on table id, and memoryfixes it. */ +Returns a table object based on table id. */ dict_table_t* dict_table_get_on_id( @@ -297,21 +294,13 @@ dict_table_get_on_id( dulint table_id, /* in: table id */ trx_t* trx); /* in: transaction handle */ /************************************************************************** -Returns a table object, based on table id, and memoryfixes it. */ +Returns a table object based on table id. */ UNIV_INLINE dict_table_t* dict_table_get_on_id_low( /*=====================*/ /* out: table, NULL if does not exist */ - dulint table_id, /* in: table id */ - trx_t* trx); /* in: transaction handle */ -/************************************************************************** -Releases a table from being memoryfixed. Currently this has no relevance. */ -UNIV_INLINE -void -dict_table_release( -/*===============*/ - dict_table_t* table); /* in: table to be released */ + dulint table_id); /* in: table id */ /************************************************************************** Checks if a table is in the dictionary cache. */ UNIV_INLINE diff --git a/storage/innobase/include/dict0dict.ic b/storage/innobase/include/dict0dict.ic index 0b5a23e9380..c65fdde81e9 100644 --- a/storage/innobase/include/dict0dict.ic +++ b/storage/innobase/include/dict0dict.ic @@ -545,14 +545,13 @@ dict_table_get_low( } /************************************************************************** -Returns a table object, based on table id, and memoryfixes it. */ +Returns a table object based on table id. */ UNIV_INLINE dict_table_t* dict_table_get_on_id_low( /*=====================*/ /* out: table, NULL if does not exist */ - dulint table_id, /* in: table id */ - trx_t* trx) /* in: transaction handle */ + dulint table_id) /* in: table id */ { dict_table_t* table; ulint fold; @@ -560,7 +559,6 @@ dict_table_get_on_id_low( #ifdef UNIV_SYNC_DEBUG ut_ad(mutex_own(&(dict_sys->mutex))); #endif /* UNIV_SYNC_DEBUG */ - UT_NOT_USED(trx); /* Look for the table name in the hash table */ fold = ut_fold_dulint(table_id); @@ -571,32 +569,11 @@ dict_table_get_on_id_low( table = dict_load_table_on_id(table_id); } - if (table != NULL) { - table->mem_fix++; - - /* lock_push(trx, table, LOCK_DICT_MEM_FIX) */ - } - /* TODO: should get the type information from MySQL */ return(table); } -/************************************************************************** -Releases a table from being memoryfixed. Currently this has no relevance. */ -UNIV_INLINE -void -dict_table_release( -/*===============*/ - dict_table_t* table) /* in: table to be released */ -{ - mutex_enter(&(dict_sys->mutex)); - - table->mem_fix--; - - mutex_exit(&(dict_sys->mutex)); -} - /************************************************************************** Returns an index object. */ UNIV_INLINE diff --git a/storage/innobase/include/dict0mem.h b/storage/innobase/include/dict0mem.h index 0135ba3874d..427991180f6 100644 --- a/storage/innobase/include/dict0mem.h +++ b/storage/innobase/include/dict0mem.h @@ -169,10 +169,6 @@ struct dict_tree_struct{ the same memory cache line */ rw_lock_t lock; /* read-write lock protecting the upper levels of the index tree */ - ulint mem_fix;/* count of how many times this tree - struct has been memoryfixed (by mini- - transactions wanting to access the index - tree) */ dict_index_t* tree_index; /* the index stored in the index tree */ ulint magic_n;/* magic number */ @@ -315,9 +311,6 @@ struct dict_table_struct{ which refer to this table */ UT_LIST_NODE_T(dict_table_t) table_LRU; /* node of the LRU list of tables */ - ulint mem_fix;/* count of how many times the table - and its indexes has been fixed in memory; - currently NOT used */ ulint n_mysql_handles_opened; /* count of how many handles MySQL has opened to this table; dropping of the table is @@ -348,6 +341,12 @@ struct dict_table_struct{ had an IX lock on */ UT_LIST_BASE_NODE_T(lock_t) locks; /* list of locks on the table */ + ulint max_row_size; + /* maximum size of a single row in the + table, not guaranteed to be especially + accurate. it's ULINT_MAX if there are + unbounded variable-width fields. initialized + in dict_table_add_to_cache. */ /*----------------------*/ ibool does_not_fit_in_memory; /* this field is used to specify in simulations diff --git a/storage/innobase/include/fil0fil.h b/storage/innobase/include/fil0fil.h index 53bb496c190..6b8fd4b03d5 100644 --- a/storage/innobase/include/fil0fil.h +++ b/storage/innobase/include/fil0fil.h @@ -57,9 +57,21 @@ extern fil_addr_t fil_addr_null; page */ #define FIL_PAGE_OFFSET 4 /* page offset inside space */ #define FIL_PAGE_PREV 8 /* if there is a 'natural' predecessor - of the page, its offset */ + of the page, its offset. + Otherwise FIL_NULL. + This field is not set on BLOB pages, + which are stored as a singly-linked + list. See also FIL_PAGE_NEXT. */ #define FIL_PAGE_NEXT 12 /* if there is a 'natural' successor - of the page, its offset */ + of the page, its offset. + Otherwise FIL_NULL. + B-tree index pages + (FIL_PAGE_TYPE contains FIL_PAGE_INDEX) + on the same PAGE_LEVEL are maintained + as a doubly linked list via + FIL_PAGE_PREV and FIL_PAGE_NEXT + in the collation order of the + smallest user record on each page. */ #define FIL_PAGE_LSN 16 /* lsn of the end of the newest modification log record to the page */ #define FIL_PAGE_TYPE 24 /* file page type: FIL_PAGE_INDEX,..., diff --git a/storage/innobase/include/fsp0fsp.h b/storage/innobase/include/fsp0fsp.h index 11b664b6826..d04269fc157 100644 --- a/storage/innobase/include/fsp0fsp.h +++ b/storage/innobase/include/fsp0fsp.h @@ -360,24 +360,28 @@ description takes less than 1 byte; a descriptor page is repeated every this many file pages */ #define XDES_DESCRIBED_PER_PAGE UNIV_PAGE_SIZE -/* The space low address page map, and also offsets for extent descriptor and -bitmap pages which are repeated always after XDES_DESCRIBED_PER_PAGE more -pages: */ +/* The space low address page map */ /*--------------------------------------*/ -#define FSP_XDES_OFFSET 0 -#define FSP_IBUF_BITMAP_OFFSET 1 + /* The following two pages are repeated + every XDES_DESCRIBED_PER_PAGE pages in + every tablespace. */ +#define FSP_XDES_OFFSET 0 /* extent descriptor */ +#define FSP_IBUF_BITMAP_OFFSET 1 /* insert buffer bitmap */ /* The ibuf bitmap pages are the ones whose page number is the number above plus a multiple of XDES_DESCRIBED_PER_PAGE */ -#define FSP_FIRST_INODE_PAGE_NO 2 -#define FSP_IBUF_HEADER_PAGE_NO 3 -#define FSP_IBUF_TREE_ROOT_PAGE_NO 4 + +#define FSP_FIRST_INODE_PAGE_NO 2 /* in every tablespace */ + /* The following pages exist + in the system tablespace (space 0). */ +#define FSP_IBUF_HEADER_PAGE_NO 3 /* in tablespace 0 */ +#define FSP_IBUF_TREE_ROOT_PAGE_NO 4 /* in tablespace 0 */ /* The ibuf tree root page number in tablespace 0; its fseg inode is on the page number FSP_FIRST_INODE_PAGE_NO */ -#define FSP_TRX_SYS_PAGE_NO 5 -#define FSP_FIRST_RSEG_PAGE_NO 6 -#define FSP_DICT_HDR_PAGE_NO 7 +#define FSP_TRX_SYS_PAGE_NO 5 /* in tablespace 0 */ +#define FSP_FIRST_RSEG_PAGE_NO 6 /* in tablespace 0 */ +#define FSP_DICT_HDR_PAGE_NO 7 /* in tablespace 0 */ /*--------------------------------------*/ #ifndef UNIV_NONINL diff --git a/storage/innobase/include/ha_prototypes.h b/storage/innobase/include/ha_prototypes.h new file mode 100644 index 00000000000..2d27034fdfe --- /dev/null +++ b/storage/innobase/include/ha_prototypes.h @@ -0,0 +1,22 @@ +#ifndef HA_INNODB_PROTOTYPES_H +#define HA_INNODB_PROTOTYPES_H + +/* Prototypes for global functions in ha_innodb.cc that are called by +InnoDB's C-code. */ + +/************************************************************************* +Wrapper around MySQL's copy_and_convert function, see it for +documentation. */ + +ulint +innobase_convert_string( +/*====================*/ + void* to, + ulint to_length, + CHARSET_INFO* to_cs, + const void* from, + ulint from_length, + CHARSET_INFO* from_cs, + uint* errors); + +#endif diff --git a/storage/innobase/include/ibuf0ibuf.h b/storage/innobase/include/ibuf0ibuf.h index 34f29ae5dec..77fefe2020b 100644 --- a/storage/innobase/include/ibuf0ibuf.h +++ b/storage/innobase/include/ibuf0ibuf.h @@ -267,6 +267,7 @@ ibuf_parse_bitmap_init( byte* end_ptr,/* in: buffer end */ page_t* page, /* in: page or NULL */ mtr_t* mtr); /* in: mtr or NULL */ +#ifdef UNIV_IBUF_DEBUG /********************************************************************** Gets the ibuf count for a given page. */ @@ -277,6 +278,7 @@ ibuf_count_get( currently buffered for this page */ ulint space, /* in: space id */ ulint page_no);/* in: page number */ +#endif /********************************************************************** Looks if the insert buffer is empty. */ diff --git a/storage/innobase/include/mem0mem.h b/storage/innobase/include/mem0mem.h index f9342e962f2..f68d45d83df 100644 --- a/storage/innobase/include/mem0mem.h +++ b/storage/innobase/include/mem0mem.h @@ -297,8 +297,8 @@ char* mem_heap_strdup( /*============*/ /* out, own: a copy of the string */ - mem_heap_t* heap, /* in: memory heap where string is allocated */ - const char* str); /* in: string to be copied */ + mem_heap_t* heap, /* in: memory heap where string is allocated */ + const char* str); /* in: string to be copied */ /************************************************************************** Makes a NUL-terminated copy of a nonterminated string, allocated from a memory heap. */ @@ -322,6 +322,44 @@ mem_heap_strcat( const char* s1, /* in: string 1 */ const char* s2); /* in: string 2 */ +/************************************************************************** +Duplicate a block of data, allocated from a memory heap. */ + +void* +mem_heap_dup( +/*=========*/ + /* out, own: a copy of the data */ + mem_heap_t* heap, /* in: memory heap where copy is allocated */ + const void* data, /* in: data to be copied */ + ulint len); /* in: length of data, in bytes */ + +/************************************************************************** +Concatenate two memory blocks and return the result, using a memory heap. */ + +void* +mem_heap_cat( +/*=========*/ + /* out, own: the result */ + mem_heap_t* heap, /* in: memory heap where result is allocated */ + const void* b1, /* in: block 1 */ + ulint len1, /* in: length of b1, in bytes */ + const void* b2, /* in: block 2 */ + ulint len2); /* in: length of b2, in bytes */ + +/******************************************************************** +A simple (s)printf replacement that dynamically allocates the space for the +formatted string from the given heap. This supports a very limited set of +the printf syntax: types 's' and 'u' and length modifier 'l' (which is +required for the 'u' type). */ + +char* +mem_heap_printf( +/*============*/ + /* out: heap-allocated formatted string */ + mem_heap_t* heap, /* in: memory heap */ + const char* format, /* in: format string */ + ...) __attribute__ ((format (printf, 2, 3))); + #ifdef MEM_PERIODIC_CHECK /********************************************************************** Goes through the list of all allocated mem blocks, checks their magic diff --git a/storage/innobase/include/pars0pars.h b/storage/innobase/include/pars0pars.h index 68b8ae41cc0..b3140008a3c 100644 --- a/storage/innobase/include/pars0pars.h +++ b/storage/innobase/include/pars0pars.h @@ -531,6 +531,16 @@ pars_info_add_function( pars_user_func_cb_t func, /* in: function address */ void* arg); /* in: user-supplied argument */ +/******************************************************************** +Add bound id. */ + +void +pars_info_add_id( +/*=============*/ + pars_info_t* info, /* in: info struct */ + const char* name, /* in: name */ + const char* id); /* in: id */ + /******************************************************************** Get user function with the given name.*/ @@ -553,6 +563,17 @@ pars_info_get_bound_lit( pars_info_t* info, /* in: info struct */ const char* name); /* in: bound literal name to find */ +/******************************************************************** +Get bound id with the given name.*/ + +pars_bound_id_t* +pars_info_get_bound_id( +/*===================*/ + /* out: bound id, or NULL if not + found */ + pars_info_t* info, /* in: info struct */ + const char* name); /* in: bound id name to find */ + /* Extra information supplied for pars_sql(). */ struct pars_info_struct { @@ -562,6 +583,8 @@ struct pars_info_struct { (pars_user_func_t*) */ ib_vector_t* bound_lits; /* bound literals, or NULL (pars_bound_lit_t*) */ + ib_vector_t* bound_ids; /* bound ids, or NULL + (pars_bound_id_t*) */ ibool graph_owns_us; /* if TRUE (which is the default), que_graph_free() will free us */ @@ -583,6 +606,12 @@ struct pars_bound_lit_struct { ulint prtype; /* precise type, e.g. DATA_UNSIGNED */ }; +/* Bound id. */ +struct pars_bound_id_struct { + const char* name; /* name */ + const char* id; /* id */ +}; + /* Struct used to denote a reserved word in a parsing tree */ struct pars_res_word_struct{ int code; /* the token code for the reserved word from diff --git a/storage/innobase/include/pars0sym.h b/storage/innobase/include/pars0sym.h index 14f762d5b7a..fc7df92ff60 100644 --- a/storage/innobase/include/pars0sym.h +++ b/storage/innobase/include/pars0sym.h @@ -82,6 +82,16 @@ sym_tab_add_id( byte* name, /* in: identifier name */ ulint len); /* in: identifier length */ +/********************************************************************** +Add a bound identifier to a symbol table. */ + +sym_node_t* +sym_tab_add_bound_id( +/*===========*/ + /* out: symbol table node */ + sym_tab_t* sym_tab, /* in: symbol table */ + const char* name); /* in: name of bound id */ + #define SYM_CLUST_FIELD_NO 0 #define SYM_SEC_FIELD_NO 1 diff --git a/storage/innobase/include/pars0types.h b/storage/innobase/include/pars0types.h index 6fcfaf23024..bf7df89a883 100644 --- a/storage/innobase/include/pars0types.h +++ b/storage/innobase/include/pars0types.h @@ -12,6 +12,7 @@ Created 1/11/1998 Heikki Tuuri typedef struct pars_info_struct pars_info_t; typedef struct pars_user_func_struct pars_user_func_t; typedef struct pars_bound_lit_struct pars_bound_lit_t; +typedef struct pars_bound_id_struct pars_bound_id_t; typedef struct sym_node_struct sym_node_t; typedef struct sym_tab_struct sym_tab_t; typedef struct pars_res_word_struct pars_res_word_t; diff --git a/storage/innobase/include/rem0rec.h b/storage/innobase/include/rem0rec.h index b2f3b9d141b..af11198d001 100644 --- a/storage/innobase/include/rem0rec.h +++ b/storage/innobase/include/rem0rec.h @@ -19,8 +19,10 @@ Created 5/30/1994 Heikki Tuuri #define REC_MAX_HEAP_NO (2 * 8192 - 1) #define REC_MAX_N_OWNED (16 - 1) -/* Flag denoting the predefined minimum record: this bit is ORed in the 4 -info bits of a record */ +/* Info bit denoting the predefined minimum record: this bit is set +if and only if the record is the first user record on a non-leaf +B-tree page that is the leftmost page on its level +(PAGE_LEVEL is nonzero and FIL_PAGE_PREV is FIL_NULL). */ #define REC_INFO_MIN_REC_FLAG 0x10UL /* Number of extra bytes in an old-style record, diff --git a/storage/innobase/include/row0purge.h b/storage/innobase/include/row0purge.h index 52dd2fce551..2653f8a354d 100644 --- a/storage/innobase/include/row0purge.h +++ b/storage/innobase/include/row0purge.h @@ -56,9 +56,7 @@ struct purge_node_struct{ determined by ref was found in the clustered index, and we were able to position pcur on it */ - dict_table_t* table; /* table where purge is done; NOTE that the - table has to be released explicitly with - dict_table_release */ + dict_table_t* table; /* table where purge is done */ ulint cmpl_info;/* compiler analysis info of an update */ upd_t* update; /* update vector for a clustered index record */ dtuple_t* ref; /* NULL, or row reference to the next row to diff --git a/storage/innobase/include/row0undo.h b/storage/innobase/include/row0undo.h index 5e3f514ad8d..29cfbc9ac20 100644 --- a/storage/innobase/include/row0undo.h +++ b/storage/innobase/include/row0undo.h @@ -84,9 +84,7 @@ struct undo_node_struct{ record */ btr_pcur_t pcur; /* persistent cursor used in searching the clustered index record */ - dict_table_t* table; /* table where undo is done; NOTE that the - table has to be released explicitly with - dict_table_release */ + dict_table_t* table; /* table where undo is done */ ulint cmpl_info;/* compiler analysis of an update */ upd_t* update; /* update vector for a clustered index record */ dtuple_t* ref; /* row reference to the next row to handle */ diff --git a/storage/innobase/include/srv0srv.h b/storage/innobase/include/srv0srv.h index ff82cb2999a..dc1f2d96d9d 100644 --- a/storage/innobase/include/srv0srv.h +++ b/storage/innobase/include/srv0srv.h @@ -18,6 +18,9 @@ Created 10/10/1995 Heikki Tuuri extern const char* srv_main_thread_op_info; +/* Prefix used by MySQL to indicate pre-5.1 table name encoding */ +extern const char srv_mysql50_table_name_prefix[9]; + /* When this event is set the lock timeout and InnoDB monitor thread starts running */ extern os_event_t srv_lock_timeout_thread_event; diff --git a/storage/innobase/include/sync0rw.h b/storage/innobase/include/sync0rw.h index e6ca3258099..616d3eeb978 100644 --- a/storage/innobase/include/sync0rw.h +++ b/storage/innobase/include/sync0rw.h @@ -61,7 +61,7 @@ Creates, or rather, initializes an rw-lock object in a specified memory location (which must be appropriately aligned). The rw-lock is initialized to the non-locked state. Explicit freeing of the rw-lock with rw_lock_free is necessary only if the memory block containing it is freed. */ -#define rw_lock_create(L) rw_lock_create_func((L), __FILE__, __LINE__, #L) +#define rw_lock_create(L, level) rw_lock_create_func((L), (level), __FILE__, __LINE__, #L) /*=====================*/ /********************************************************************** @@ -74,9 +74,10 @@ void rw_lock_create_func( /*================*/ rw_lock_t* lock, /* in: pointer to memory */ + ulint level, /* in: level */ const char* cfile_name, /* in: file name where created */ - ulint cline, /* in: file line where created */ - const char* cmutex_name); /* in: mutex name */ + ulint cline, /* in: file line where created */ + const char* cmutex_name); /* in: mutex name */ /********************************************************************** Calling this function is obligatory only if the memory buffer containing the rw-lock is freed. Removes an rw-lock object from the global list. The @@ -299,14 +300,6 @@ rw_lock_x_unlock_direct( /*====================*/ rw_lock_t* lock); /* in: rw-lock */ /********************************************************************** -Sets the rw-lock latching level field. */ - -void -rw_lock_set_level( -/*==============*/ - rw_lock_t* lock, /* in: rw-lock */ - ulint level); /* in: level */ -/********************************************************************** Returns the value of writer_count for the lock. Does not reserve the lock mutex, so the caller must be sure it is not changed during the call. */ UNIV_INLINE @@ -448,8 +441,8 @@ struct rw_lock_struct { /* In the debug version: pointer to the debug info list of the lock */ #endif /* UNIV_SYNC_DEBUG */ - ulint level; /* Level in the global latching - order; default SYNC_LEVEL_NONE */ + + ulint level; /* Level in the global latching order. */ const char* cfile_name;/* File name where lock created */ ulint cline; /* Line where created */ const char* last_s_file_name;/* File name where last s-locked */ diff --git a/storage/innobase/include/sync0sync.h b/storage/innobase/include/sync0sync.h index 0a233843b50..64b245246f8 100644 --- a/storage/innobase/include/sync0sync.h +++ b/storage/innobase/include/sync0sync.h @@ -39,7 +39,7 @@ location (which must be appropriately aligned). The mutex is initialized in the reset state. Explicit freeing of the mutex with mutex_free is necessary only if the memory block containing it is freed. */ -#define mutex_create(M) mutex_create_func((M), __FILE__, __LINE__, #M) +#define mutex_create(M, level) mutex_create_func((M), (level), __FILE__, __LINE__, #M) /*===================*/ /********************************************************************** Creates, or rather, initializes a mutex object in a specified memory @@ -51,6 +51,7 @@ void mutex_create_func( /*==============*/ mutex_t* mutex, /* in: pointer to memory */ + ulint level, /* in: level */ const char* cfile_name, /* in: file name where created */ ulint cline, /* in: file line where created */ const char* cmutex_name); /* in: mutex name */ @@ -155,14 +156,6 @@ mutex_validate( /*===========*/ mutex_t* mutex); /********************************************************************** -Sets the mutex latching level field. */ - -void -mutex_set_level( -/*============*/ - mutex_t* mutex, /* in: mutex */ - ulint level); /* in: level */ -/********************************************************************** Adds a latch and its level in the thread level array. Allocates the memory for the array if called first time for this OS thread. Makes the checks against other latch levels stored in the array for this thread. */ @@ -171,8 +164,8 @@ void sync_thread_add_level( /*==================*/ void* latch, /* in: pointer to a mutex or an rw-lock */ - ulint level); /* in: level in the latching order; if SYNC_LEVEL_NONE, - nothing is done */ + ulint level); /* in: level in the latching order; if + SYNC_LEVEL_VARYING, nothing is done */ /********************************************************************** Removes a latch from the thread level array if it is found there. */ @@ -383,7 +376,12 @@ or row lock! */ #define SYNC_USER_TRX_LOCK 9999 #define SYNC_NO_ORDER_CHECK 3000 /* this can be used to suppress latching order checking */ -#define SYNC_LEVEL_NONE 2000 /* default: level not defined */ +#define SYNC_LEVEL_VARYING 2000 /* Level is varying. Only used with + buffer pool page locks, which do not + have a fixed level, but instead have + their level set after the page is + locked; see e.g. + ibuf_bitmap_get_map_page(). */ #define SYNC_DICT_OPERATION 1001 /* table create, drop, etc. reserve this in X-mode, implicit or backround operations purge, rollback, foreign @@ -426,6 +424,7 @@ or row lock! */ #define SYNC_TRX_SYS_HEADER 290 #define SYNC_LOG 170 #define SYNC_RECV 168 +#define SYNC_WORK_QUEUE 161 #define SYNC_SEARCH_SYS 160 /* NOTE that if we have a memory heap that can be extended to the buffer pool, its logical level is @@ -472,8 +471,7 @@ struct mutex_struct { os_thread_id_t thread_id; /* Debug version: The thread id of the thread which locked the mutex. */ #endif /* UNIV_SYNC_DEBUG */ - ulint level; /* Level in the global latching - order; default SYNC_LEVEL_NONE */ + ulint level; /* Level in the global latching order */ const char* cfile_name;/* File name where mutex created */ ulint cline; /* Line where created */ ulint magic_n; diff --git a/storage/innobase/include/univ.i b/storage/innobase/include/univ.i index c5e87e468c6..f2dafbc3a70 100644 --- a/storage/innobase/include/univ.i +++ b/storage/innobase/include/univ.i @@ -82,7 +82,7 @@ memory is read outside the allocated blocks. */ /* Make a non-inline debug version */ -/* +#if 0 #define UNIV_DEBUG #define UNIV_MEM_DEBUG #define UNIV_IBUF_DEBUG @@ -90,8 +90,10 @@ memory is read outside the allocated blocks. */ #define UNIV_SEARCH_DEBUG #define UNIV_SYNC_PERF_STAT #define UNIV_SEARCH_PERF_STAT -#define UNIV_SRV_PRINT_LATCH_WAITS; -*/ +#define UNIV_SRV_PRINT_LATCH_WAITS +#endif + +#define UNIV_BTR_DEBUG #define UNIV_LIGHT_MEM_DEBUG #define YYDEBUG 1 diff --git a/storage/innobase/include/ut0dbg.h b/storage/innobase/include/ut0dbg.h index 55e8c8ef88c..a317f35f4be 100644 --- a/storage/innobase/include/ut0dbg.h +++ b/storage/innobase/include/ut0dbg.h @@ -41,12 +41,21 @@ void ut_dbg_panic(void); /* Stop threads in ut_a(). */ # define UT_DBG_STOP while (0) /* We do not do this on NetWare */ #else /* __NETWARE__ */ -/* Flag for indicating that all threads should stop. This will be set -by ut_dbg_assertion_failed(). */ -extern ibool ut_dbg_stop_threads; +# if defined(__WIN__) || defined(__INTEL_COMPILER) +# undef UT_DBG_USE_ABORT +# elif defined(__GNUC__) && (__GNUC__ > 2) +# define UT_DBG_USE_ABORT +# endif +# ifndef UT_DBG_USE_ABORT /* A null pointer that will be dereferenced to trigger a memory trap */ extern ulint* ut_dbg_null_ptr; +# endif + +# if defined(UNIV_SYNC_DEBUG) || !defined(UT_DBG_USE_ABORT) +/* Flag for indicating that all threads should stop. This will be set +by ut_dbg_assertion_failed(). */ +extern ibool ut_dbg_stop_threads; /***************************************************************** Stop a thread after assertion failure. */ @@ -56,15 +65,23 @@ ut_dbg_stop_thread( /*===============*/ const char* file, ulint line); +# endif +# ifdef UT_DBG_USE_ABORT +/* Abort the execution. */ +# define UT_DBG_PANIC abort() +/* Stop threads (null operation) */ +# define UT_DBG_STOP while (0) +# else /* UT_DBG_USE_ABORT */ /* Abort the execution. */ -# define UT_DBG_PANIC \ +# define UT_DBG_PANIC \ if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = NULL /* Stop threads in ut_a(). */ -# define UT_DBG_STOP do \ +# define UT_DBG_STOP do \ if (UNIV_UNLIKELY(ut_dbg_stop_threads)) { \ ut_dbg_stop_thread(__FILE__, (ulint) __LINE__); \ } while (0) +# endif /* UT_DBG_USE_ABORT */ #endif /* __NETWARE__ */ /* Abort execution if EXPR does not evaluate to nonzero. */ diff --git a/storage/innobase/include/ut0list.h b/storage/innobase/include/ut0list.h new file mode 100644 index 00000000000..c35cf202600 --- /dev/null +++ b/storage/innobase/include/ut0list.h @@ -0,0 +1,148 @@ +/*********************************************************************** +A double-linked list. This differs from the one in ut0lst.h in that in this +one, each list node contains a pointer to the data, whereas the one in +ut0lst.h uses a strategy where the list pointers are embedded in the data +items themselves. + +Use this one when you need to store arbitrary data in the list where you +can't embed the list pointers in the data, if a data item needs to be +stored in multiple lists, etc. + +Note about the memory management: ib_list_t is a fixed-size struct whose +allocation/deallocation is done through ib_list_create/ib_list_free, but the +memory for the list nodes is allocated through a user-given memory heap, +which can either be the same for all nodes or vary per node. Most users will +probably want to create a memory heap to store the item-specific data, and +pass in this same heap to the list node creation functions, thus +automatically freeing the list node when the item's heap is freed. + +************************************************************************/ + + +#ifndef IB_LIST_H +#define IB_LIST_H + +#include "mem0mem.h" + +typedef struct ib_list_struct ib_list_t; +typedef struct ib_list_node_struct ib_list_node_t; +typedef struct ib_list_helper_struct ib_list_helper_t; + +/******************************************************************** +Create a new list using mem_alloc. Lists created with this function must be +freed with ib_list_free. */ + +ib_list_t* +ib_list_create(void); +/*=================*/ + /* out: list */ + + +/******************************************************************** +Create a new list using the given heap. ib_list_free MUST NOT BE CALLED for +lists created with this function. */ + +ib_list_t* +ib_list_create_heap( +/*================*/ + /* out: list */ + mem_heap_t* heap); /* in: memory heap to use */ + +/******************************************************************** +Free a list. */ + +void +ib_list_free( +/*=========*/ + ib_list_t* list); /* in: list */ + +/******************************************************************** +Add the data to the start of the list. */ + +ib_list_node_t* +ib_list_add_first( +/*==============*/ + /* out: new list node*/ + ib_list_t* list, /* in: list */ + void* data, /* in: data */ + mem_heap_t* heap); /* in: memory heap to use */ + +/******************************************************************** +Add the data to the end of the list. */ + +ib_list_node_t* +ib_list_add_last( +/*=============*/ + /* out: new list node*/ + ib_list_t* list, /* in: list */ + void* data, /* in: data */ + mem_heap_t* heap); /* in: memory heap to use */ + +/******************************************************************** +Add the data after the indicated node. */ + +ib_list_node_t* +ib_list_add_after( +/*==============*/ + /* out: new list node*/ + ib_list_t* list, /* in: list */ + ib_list_node_t* prev_node, /* in: node preceding new node (can + be NULL) */ + void* data, /* in: data */ + mem_heap_t* heap); /* in: memory heap to use */ + +/******************************************************************** +Remove the node from the list. */ + +void +ib_list_remove( +/*===========*/ + ib_list_t* list, /* in: list */ + ib_list_node_t* node); /* in: node to remove */ + +/******************************************************************** +Get the first node in the list. */ +UNIV_INLINE +ib_list_node_t* +ib_list_get_first( +/*==============*/ + /* out: first node, or NULL */ + ib_list_t* list); /* in: list */ + +/******************************************************************** +Get the last node in the list. */ +UNIV_INLINE +ib_list_node_t* +ib_list_get_last( +/*=============*/ + /* out: last node, or NULL */ + ib_list_t* list); /* in: list */ + +/* List. */ +struct ib_list_struct { + ib_list_node_t* first; /* first node */ + ib_list_node_t* last; /* last node */ + ibool is_heap_list; /* TRUE if this list was + allocated through a heap */ +}; + +/* A list node. */ +struct ib_list_node_struct { + ib_list_node_t* prev; /* previous node */ + ib_list_node_t* next; /* next node */ + void* data; /* user data */ +}; + +/* Quite often, the only additional piece of data you need is the per-item +memory heap, so we have this generic struct available to use in those +cases. */ +struct ib_list_helper_struct { + mem_heap_t* heap; /* memory heap */ + void* data; /* user data */ +}; + +#ifndef UNIV_NONINL +#include "ut0list.ic" +#endif + +#endif diff --git a/storage/innobase/include/ut0list.ic b/storage/innobase/include/ut0list.ic new file mode 100644 index 00000000000..c2d3e4557f0 --- /dev/null +++ b/storage/innobase/include/ut0list.ic @@ -0,0 +1,23 @@ +/******************************************************************** +Get the first node in the list. */ +UNIV_INLINE +ib_list_node_t* +ib_list_get_first( +/*==============*/ + /* out: first node, or NULL */ + ib_list_t* list) /* in: list */ +{ + return(list->first); +} + +/******************************************************************** +Get the last node in the list. */ +UNIV_INLINE +ib_list_node_t* +ib_list_get_last( +/*=============*/ + /* out: last node, or NULL */ + ib_list_t* list) /* in: list */ +{ + return(list->last); +} diff --git a/storage/innobase/include/ut0ut.h b/storage/innobase/include/ut0ut.h index 8f1be212fbf..1bb90ae041b 100644 --- a/storage/innobase/include/ut0ut.h +++ b/storage/innobase/include/ut0ut.h @@ -224,6 +224,7 @@ ut_print_name( /*==========*/ FILE* f, /* in: output stream */ struct trx_struct*trx, /* in: transaction */ + ibool table_id,/* in: TRUE=decode table name */ const char* name); /* in: name to print */ /************************************************************************** @@ -234,6 +235,7 @@ ut_print_namel( /*===========*/ FILE* f, /* in: output stream */ struct trx_struct*trx, /* in: transaction (NULL=no quotes) */ + ibool table_id,/* in: TRUE=decode table name */ const char* name, /* in: name to print */ ulint namelen);/* in: length of name */ diff --git a/storage/innobase/include/ut0wqueue.h b/storage/innobase/include/ut0wqueue.h new file mode 100644 index 00000000000..57f2297beee --- /dev/null +++ b/storage/innobase/include/ut0wqueue.h @@ -0,0 +1,60 @@ +/*********************************************************************** +A Work queue. Threads can add work items to the queue and other threads can +wait for work items to be available and take them off the queue for +processing. + +************************************************************************/ + +#ifndef IB_WORK_QUEUE_H +#define IB_WORK_QUEUE_H + +#include "ut0list.h" +#include "mem0mem.h" +#include "os0sync.h" +#include "sync0types.h" + +typedef struct ib_wqueue_struct ib_wqueue_t; + +/******************************************************************** +Create a new work queue. */ + +ib_wqueue_t* +ib_wqueue_create(void); +/*===================*/ + /* out: work queue */ + +/******************************************************************** +Free a work queue. */ + +void +ib_wqueue_free( +/*===========*/ + ib_wqueue_t* wq); /* in: work queue */ + +/******************************************************************** +Add a work item to the queue. */ + +void +ib_wqueue_add( +/*==========*/ + ib_wqueue_t* wq, /* in: work queue */ + void* item, /* in: work item */ + mem_heap_t* heap); /* in: memory heap to use for allocating the + list node */ + +/******************************************************************** +Wait for a work item to appear in the queue. */ + +void* +ib_wqueue_wait( + /* out: work item */ + ib_wqueue_t* wq); /* in: work queue */ + +/* Work queue. */ +struct ib_wqueue_struct { + mutex_t mutex; /* mutex protecting everything */ + ib_list_t* items; /* work item list */ + os_event_t event; /* event we use to signal additions to list */ +}; + +#endif diff --git a/storage/innobase/lock/lock0lock.c b/storage/innobase/lock/lock0lock.c index 34e3296c9bc..a73a78620f1 100644 --- a/storage/innobase/lock/lock0lock.c +++ b/storage/innobase/lock/lock0lock.c @@ -1860,7 +1860,7 @@ lock_rec_enqueue_waiting( fputs( " InnoDB: Error: a record lock wait happens in a dictionary operation!\n" "InnoDB: Table name ", stderr); - ut_print_name(stderr, trx, index->table_name); + ut_print_name(stderr, trx, TRUE, index->table_name); fputs(".\n" "InnoDB: Submit a detailed bug report to http://bugs.mysql.com\n", stderr); @@ -1899,7 +1899,7 @@ lock_rec_enqueue_waiting( if (lock_print_waits) { fprintf(stderr, "Lock wait for trx %lu in index ", (ulong) ut_dulint_get_low(trx->id)); - ut_print_name(stderr, trx, index->name); + ut_print_name(stderr, trx, FALSE, index->name); } #endif /* UNIV_DEBUG */ @@ -3555,7 +3555,7 @@ lock_table_enqueue_waiting( fputs( " InnoDB: Error: a table lock wait happens in a dictionary operation!\n" "InnoDB: Table name ", stderr); - ut_print_name(stderr, trx, table->name); + ut_print_name(stderr, trx, TRUE, table->name); fputs(".\n" "InnoDB: Submit a detailed bug report to http://bugs.mysql.com\n", stderr); @@ -4074,7 +4074,8 @@ lock_table_print( ut_a(lock_get_type(lock) == LOCK_TABLE); fputs("TABLE LOCK table ", file); - ut_print_name(file, lock->trx, lock->un_member.tab_lock.table->name); + ut_print_name(file, lock->trx, TRUE, + lock->un_member.tab_lock.table->name); fprintf(file, " trx id %lu %lu", (ulong) (lock->trx)->id.high, (ulong) (lock->trx)->id.low); diff --git a/storage/innobase/log/log0log.c b/storage/innobase/log/log0log.c index ea3b74c00f9..db6b8fabf6f 100644 --- a/storage/innobase/log/log0log.c +++ b/storage/innobase/log/log0log.c @@ -741,8 +741,7 @@ log_init(void) log_sys = mem_alloc(sizeof(log_t)); - mutex_create(&(log_sys->mutex)); - mutex_set_level(&(log_sys->mutex), SYNC_LOG); + mutex_create(&log_sys->mutex, SYNC_LOG); mutex_enter(&(log_sys->mutex)); @@ -798,8 +797,7 @@ log_init(void) log_sys->last_checkpoint_lsn = log_sys->lsn; log_sys->n_pending_checkpoint_writes = 0; - rw_lock_create(&(log_sys->checkpoint_lock)); - rw_lock_set_level(&(log_sys->checkpoint_lock), SYNC_NO_ORDER_CHECK); + rw_lock_create(&log_sys->checkpoint_lock, SYNC_NO_ORDER_CHECK); log_sys->checkpoint_buf = ut_align( mem_alloc(2 * OS_FILE_LOG_BLOCK_SIZE), @@ -815,8 +813,7 @@ log_init(void) log_sys->n_pending_archive_ios = 0; - rw_lock_create(&(log_sys->archive_lock)); - rw_lock_set_level(&(log_sys->archive_lock), SYNC_NO_ORDER_CHECK); + rw_lock_create(&log_sys->archive_lock, SYNC_NO_ORDER_CHECK); log_sys->archive_buf = NULL; diff --git a/storage/innobase/log/log0recv.c b/storage/innobase/log/log0recv.c index 4a91192782e..63a90f05212 100644 --- a/storage/innobase/log/log0recv.c +++ b/storage/innobase/log/log0recv.c @@ -112,8 +112,7 @@ recv_sys_create(void) recv_sys = mem_alloc(sizeof(recv_sys_t)); - mutex_create(&(recv_sys->mutex)); - mutex_set_level(&(recv_sys->mutex), SYNC_RECV); + mutex_create(&recv_sys->mutex, SYNC_RECV); recv_sys->heap = NULL; recv_sys->addr_hash = NULL; @@ -894,7 +893,6 @@ recv_parse_or_apply_log_rec_body( recv_sys->found_corrupt_log = TRUE; } - ut_ad(!page || ptr); if (index) { dict_table_t* table = index->table; diff --git a/storage/innobase/mem/mem0dbg.c b/storage/innobase/mem/mem0dbg.c index 86c33a22531..1220c2c8e82 100644 --- a/storage/innobase/mem/mem0dbg.c +++ b/storage/innobase/mem/mem0dbg.c @@ -122,8 +122,7 @@ mem_init( /* Initialize the hash table */ ut_a(FALSE == mem_hash_initialized); - mutex_create(&mem_hash_mutex); - mutex_set_level(&mem_hash_mutex, SYNC_MEM_HASH); + mutex_create(&mem_hash_mutex, SYNC_MEM_HASH); for (i = 0; i < MEM_HASH_SIZE; i++) { UT_LIST_INIT(*mem_hash_get_nth_cell(i)); diff --git a/storage/innobase/mem/mem0mem.c b/storage/innobase/mem/mem0mem.c index 5e7c48d3d3d..3c42c1d0fff 100644 --- a/storage/innobase/mem/mem0mem.c +++ b/storage/innobase/mem/mem0mem.c @@ -17,6 +17,7 @@ Created 6/9/1994 Heikki Tuuri #include "btr0sea.h" #include "srv0srv.h" #include "mem0dbg.c" +#include /* THE MEMORY MANAGEMENT @@ -107,11 +108,45 @@ char* mem_heap_strdup( /*============*/ /* out, own: a copy of the string */ - mem_heap_t* heap, /* in: memory heap where string is allocated */ - const char* str) /* in: string to be copied */ + mem_heap_t* heap, /* in: memory heap where string is allocated */ + const char* str) /* in: string to be copied */ { - ulint len = strlen(str) + 1; - return(memcpy(mem_heap_alloc(heap, len), str, len)); + return(mem_heap_dup(heap, str, strlen(str) + 1)); +} + +/************************************************************************** +Duplicate a block of data, allocated from a memory heap. */ + +void* +mem_heap_dup( +/*=========*/ + /* out, own: a copy of the data */ + mem_heap_t* heap, /* in: memory heap where copy is allocated */ + const void* data, /* in: data to be copied */ + ulint len) /* in: length of data, in bytes */ +{ + return(memcpy(mem_heap_alloc(heap, len), data, len)); +} + +/************************************************************************** +Concatenate two memory blocks and return the result, using a memory heap. */ + +void* +mem_heap_cat( +/*=========*/ + /* out, own: the result */ + mem_heap_t* heap, /* in: memory heap where result is allocated */ + const void* b1, /* in: block 1 */ + ulint len1, /* in: length of b1, in bytes */ + const void* b2, /* in: block 2 */ + ulint len2) /* in: length of b2, in bytes */ +{ + void* res = mem_heap_alloc(heap, len1 + len2); + + memcpy(res, b1, len1); + memcpy(res + len1, b2, len2); + + return(res); } /************************************************************************** @@ -139,6 +174,150 @@ mem_heap_strcat( return(s); } + +/******************************************************************** +Helper function for mem_heap_printf. */ +static +ulint +mem_heap_printf_low( +/*================*/ + /* out: length of formatted string, + including terminating NUL */ + char* buf, /* in/out: buffer to store formatted string + in, or NULL to just calculate length */ + const char* format, /* in: format string */ + va_list ap) /* in: arguments */ +{ + ulint len = 0; + + while (*format) { + + /* Does this format specifier have the 'l' length modifier. */ + ibool is_long = FALSE; + + /* Length of one parameter. */ + size_t plen; + + if (*format++ != '%') { + /* Non-format character. */ + + len++; + + if (buf) { + *buf++ = *(format - 1); + } + + continue; + } + + if (*format == 'l') { + is_long = TRUE; + format++; + } + + switch (*format++) { + case 's': + /* string */ + { + char* s = va_arg(ap, char*); + + /* "%ls" is a non-sensical format specifier. */ + ut_a(!is_long); + + plen = strlen(s); + len += plen; + + if (buf) { + memcpy(buf, s, plen); + buf += plen; + } + } + + break; + + case 'u': + /* unsigned int */ + { + char tmp[32]; + unsigned long val; + + /* We only support 'long' values for now. */ + ut_a(is_long); + + val = va_arg(ap, unsigned long); + + plen = sprintf(tmp, "%lu", val); + len += plen; + + if (buf) { + memcpy(buf, tmp, plen); + buf += plen; + } + } + + break; + + case '%': + + /* "%l%" is a non-sensical format specifier. */ + ut_a(!is_long); + + len++; + + if (buf) { + *buf++ = '%'; + } + + break; + + default: + ut_error; + } + } + + /* For the NUL character. */ + len++; + + if (buf) { + *buf = '\0'; + } + + return(len); +} + +/******************************************************************** +A simple (s)printf replacement that dynamically allocates the space for the +formatted string from the given heap. This supports a very limited set of +the printf syntax: types 's' and 'u' and length modifier 'l' (which is +required for the 'u' type). */ + +char* +mem_heap_printf( +/*============*/ + /* out: heap-allocated formatted string */ + mem_heap_t* heap, /* in: memory heap */ + const char* format, /* in: format string */ + ...) +{ + va_list ap; + char* str; + ulint len; + + /* Calculate length of string */ + len = 0; + va_start(ap, format); + len = mem_heap_printf_low(NULL, format, ap); + va_end(ap); + + /* Now create it for real. */ + str = mem_heap_alloc(heap, len); + va_start(ap, format); + mem_heap_printf_low(str, format, ap); + va_end(ap); + + return(str); +} + /******************************************************************* Creates a memory heap block where data can be allocated. */ diff --git a/storage/innobase/mem/mem0pool.c b/storage/innobase/mem/mem0pool.c index a61ab1ce170..5606921758c 100644 --- a/storage/innobase/mem/mem0pool.c +++ b/storage/innobase/mem/mem0pool.c @@ -204,8 +204,7 @@ mem_pool_create( pool->buf = ut_malloc_low(size, FALSE, TRUE); pool->size = size; - mutex_create(&(pool->mutex)); - mutex_set_level(&(pool->mutex), SYNC_MEM_POOL); + mutex_create(&pool->mutex, SYNC_MEM_POOL); /* Initialize the free lists */ diff --git a/storage/innobase/os/os0file.c b/storage/innobase/os/os0file.c index d10bdccbd2b..74905ce06dd 100644 --- a/storage/innobase/os/os0file.c +++ b/storage/innobase/os/os0file.c @@ -3679,6 +3679,37 @@ os_aio_posix_handle( } #endif +/************************************************************************** +Do a 'last millisecond' check that the page end is sensible; +reported page checksum errors from Linux seem to wipe over the page end. */ +static +void +os_file_check_page_trailers( +/*========================*/ + byte* combined_buf, /* in: combined write buffer */ + ulint total_len) /* in: size of combined_buf, in bytes + (a multiple of UNIV_PAGE_SIZE) */ +{ + ulint len; + + for (len = 0; len + UNIV_PAGE_SIZE <= total_len; + len += UNIV_PAGE_SIZE) { + byte* buf = combined_buf + len; + + if (memcmp(buf + (FIL_PAGE_LSN + 4), buf + (UNIV_PAGE_SIZE + - FIL_PAGE_END_LSN_OLD_CHKSUM + 4), 4)) { + ut_print_timestamp(stderr); + fprintf(stderr, +" InnoDB: ERROR: The page to be written seems corrupt!\n" +"InnoDB: Writing a block of %lu bytes, currently at offset %lu\n", + (ulong)total_len, (ulong)len); + buf_page_print(buf); + fprintf(stderr, +"InnoDB: ERROR: The page to be written seems corrupt!\n"); + } + } +} + /************************************************************************** Does simulated aio. This function should be called by an i/o-handler thread. */ @@ -3716,7 +3747,6 @@ os_aio_simulated_handle( ibool ret; ulint n; ulint i; - ulint len2; segment = os_aio_get_array_and_local_segment(&array, global_segment); @@ -3924,32 +3954,15 @@ consecutive_loop: ut_error; } - /* Do a 'last millisecond' check that the page end - is sensible; reported page checksum errors from - Linux seem to wipe over the page end */ - - for (len2 = 0; len2 + UNIV_PAGE_SIZE <= total_len; - len2 += UNIV_PAGE_SIZE) { - if (mach_read_from_4(combined_buf + len2 - + FIL_PAGE_LSN + 4) - != mach_read_from_4(combined_buf + len2 - + UNIV_PAGE_SIZE - - FIL_PAGE_END_LSN_OLD_CHKSUM + 4)) { - ut_print_timestamp(stderr); - fprintf(stderr, -" InnoDB: ERROR: The page to be written seems corrupt!\n"); - fprintf(stderr, -"InnoDB: Writing a block of %lu bytes, currently writing at offset %lu\n", - (ulong)total_len, (ulong)len2); - buf_page_print(combined_buf + len2); - fprintf(stderr, -"InnoDB: ERROR: The page to be written seems corrupt!\n"); - } - } + os_file_check_page_trailers(combined_buf, total_len); } ret = os_file_write(slot->name, slot->file, combined_buf, slot->offset, slot->offset_high, total_len); + + if (array == os_aio_write_array) { + os_file_check_page_trailers(combined_buf, total_len); + } } else { ret = os_file_read(slot->file, combined_buf, slot->offset, slot->offset_high, total_len); diff --git a/storage/innobase/os/os0thread.c b/storage/innobase/os/os0thread.c index 0b739c07557..138db6426ea 100644 --- a/storage/innobase/os/os0thread.c +++ b/storage/innobase/os/os0thread.c @@ -220,7 +220,7 @@ os_thread_join( /*===========*/ os_thread_id_t thread_id) /* in: id of the thread to join */ { - return pthread_join(thread_id, NULL); + return(pthread_join(thread_id, NULL)); } #endif /********************************************************************* diff --git a/storage/innobase/pars/lexyy.c b/storage/innobase/pars/lexyy.c index bbe78db1613..6d4e692e86b 100644 --- a/storage/innobase/pars/lexyy.c +++ b/storage/innobase/pars/lexyy.c @@ -356,8 +356,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 116 -#define YY_END_OF_BUFFER 117 +#define YY_NUM_RULES 117 +#define YY_END_OF_BUFFER 118 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -365,51 +365,51 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[394] = +static yyconst flex_int16_t yy_accept[396] = { 0, - 0, 0, 111, 111, 0, 0, 0, 0, 117, 115, - 114, 114, 7, 106, 4, 95, 101, 104, 102, 99, - 103, 115, 105, 1, 115, 100, 98, 96, 97, 109, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 107, 108, - 111, 112, 5, 6, 8, 9, 114, 90, 110, 2, - 1, 3, 91, 92, 94, 93, 89, 89, 89, 89, - 89, 89, 44, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 27, - 16, 24, 89, 89, 89, 89, 54, 61, 89, 13, - - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 111, 112, 112, - 113, 5, 6, 8, 9, 2, 12, 45, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 26, 89, 89, 89, - 40, 89, 89, 89, 89, 20, 89, 89, 14, 89, - 89, 89, 17, 89, 89, 89, 89, 89, 80, 89, - 89, 89, 51, 11, 89, 35, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 19, 23, 89, 89, 89, 89, 89, 89, 89, 89, - - 89, 89, 89, 46, 89, 89, 29, 89, 87, 89, - 89, 38, 89, 89, 89, 89, 89, 48, 89, 31, - 89, 10, 64, 89, 89, 89, 42, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 28, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 85, 89, 25, 89, - 66, 89, 89, 89, 89, 36, 89, 89, 89, 89, - 89, 89, 89, 30, 65, 22, 89, 57, 89, 75, - 89, 89, 89, 43, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 56, 89, 89, 89, 89, 89, - 89, 89, 39, 32, 79, 18, 89, 83, 74, 89, - - 55, 89, 63, 89, 52, 89, 89, 89, 47, 89, - 76, 89, 78, 89, 89, 33, 89, 89, 89, 34, - 72, 89, 89, 89, 89, 58, 89, 50, 49, 89, - 89, 89, 53, 62, 89, 89, 89, 21, 89, 89, - 73, 81, 89, 89, 77, 89, 68, 89, 89, 89, - 89, 89, 37, 89, 88, 67, 89, 84, 89, 89, - 89, 86, 89, 59, 89, 89, 15, 89, 70, 69, - 89, 41, 89, 82, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 71, 89, 89, 89, 89, 89, - 89, 60, 0 + 0, 0, 112, 112, 0, 0, 0, 0, 118, 116, + 115, 115, 8, 116, 107, 5, 96, 102, 105, 103, + 100, 104, 116, 106, 1, 116, 101, 99, 97, 98, + 110, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 108, + 109, 112, 113, 6, 7, 9, 10, 115, 4, 91, + 111, 2, 1, 3, 92, 93, 95, 94, 90, 90, + 90, 90, 90, 90, 45, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 28, 17, 25, 90, 90, 90, 90, 55, 62, + + 90, 14, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 112, + 113, 113, 114, 6, 7, 9, 10, 2, 13, 46, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 27, 90, + 90, 90, 41, 90, 90, 90, 90, 21, 90, 90, + 15, 90, 90, 90, 18, 90, 90, 90, 90, 90, + 81, 90, 90, 90, 52, 12, 90, 36, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 20, 24, 90, 90, 90, 90, 90, 90, + + 90, 90, 90, 90, 90, 47, 90, 90, 30, 90, + 88, 90, 90, 39, 90, 90, 90, 90, 90, 49, + 90, 32, 90, 11, 65, 90, 90, 90, 43, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 29, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 86, 90, + 26, 90, 67, 90, 90, 90, 90, 37, 90, 90, + 90, 90, 90, 90, 90, 31, 66, 23, 90, 58, + 90, 76, 90, 90, 90, 44, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 57, 90, 90, 90, + 90, 90, 90, 90, 40, 33, 80, 19, 90, 84, + + 75, 90, 56, 90, 64, 90, 53, 90, 90, 90, + 48, 90, 77, 90, 79, 90, 90, 34, 90, 90, + 90, 35, 73, 90, 90, 90, 90, 59, 90, 51, + 50, 90, 90, 90, 54, 63, 90, 90, 90, 22, + 90, 90, 74, 82, 90, 90, 78, 90, 69, 90, + 90, 90, 90, 90, 38, 90, 89, 68, 90, 85, + 90, 90, 90, 87, 90, 60, 90, 90, 16, 90, + 71, 70, 90, 42, 90, 83, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 72, 90, 90, 90, + 90, 90, 90, 61, 0 } ; @@ -418,17 +418,17 @@ static yyconst flex_int32_t yy_ec[256] = 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 4, 1, 1, 5, 1, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 16, 17, 18, - 19, 20, 21, 1, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 31, - 1, 1, 1, 1, 47, 1, 31, 31, 31, 31, - - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 48, 1, 49, 1, 1, 1, 1, 1, + 1, 2, 1, 4, 1, 5, 6, 1, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 17, 18, 19, + 20, 21, 22, 1, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 32, + 1, 1, 1, 1, 48, 1, 32, 32, 32, 32, + + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 49, 1, 50, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -445,228 +445,228 @@ static yyconst flex_int32_t yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst flex_int32_t yy_meta[50] = +static yyconst flex_int32_t yy_meta[51] = { 0, - 1, 1, 1, 2, 1, 3, 1, 1, 4, 1, - 1, 1, 1, 1, 5, 1, 1, 1, 6, 1, - 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 1, 1, 1, 2, 1, 1, 3, 1, 1, 4, + 1, 1, 1, 1, 1, 5, 1, 1, 1, 6, + 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 1, 1 + 5, 5, 5, 5, 5, 5, 5, 5, 1, 1 } ; -static yyconst flex_int16_t yy_base[403] = +static yyconst flex_int16_t yy_base[406] = { 0, - 0, 0, 434, 433, 435, 434, 435, 434, 437, 444, - 48, 50, 444, 444, 444, 444, 444, 444, 444, 444, - 444, 423, 426, 41, 415, 444, 38, 444, 414, 444, - 20, 33, 32, 46, 40, 44, 0, 54, 52, 48, - 60, 393, 65, 66, 74, 27, 409, 69, 444, 444, - 0, 97, 0, 424, 0, 425, 111, 444, 444, 413, - 54, 408, 444, 444, 444, 444, 0, 401, 69, 397, - 389, 387, 0, 400, 79, 82, 395, 381, 94, 379, - 392, 377, 391, 385, 373, 377, 373, 375, 375, 0, - 82, 0, 374, 372, 366, 373, 0, 0, 379, 379, - - 362, 89, 98, 377, 93, 95, 368, 106, 360, 376, - 372, 350, 101, 371, 362, 112, 355, 0, 134, 135, - 444, 0, 387, 0, 388, 376, 0, 0, 364, 359, - 366, 364, 347, 345, 344, 349, 106, 347, 359, 93, - 347, 353, 354, 336, 336, 121, 0, 334, 350, 351, - 0, 338, 347, 344, 119, 126, 341, 331, 340, 333, - 330, 338, 0, 328, 338, 336, 327, 317, 311, 324, - 309, 329, 0, 0, 314, 0, 328, 319, 316, 130, - 312, 319, 326, 305, 307, 312, 312, 304, 307, 302, - 0, 0, 314, 298, 308, 315, 306, 294, 293, 307, - - 296, 309, 289, 0, 299, 281, 0, 300, 0, 297, - 284, 0, 283, 278, 283, 282, 292, 0, 278, 0, - 282, 0, 0, 278, 275, 289, 0, 274, 274, 272, - 288, 273, 285, 267, 285, 280, 0, 275, 275, 261, - 260, 273, 259, 273, 272, 271, 0, 255, 0, 249, - 0, 268, 252, 251, 251, 0, 264, 254, 249, 248, - 260, 250, 249, 0, 0, 0, 253, 0, 241, 0, - 255, 251, 237, 0, 251, 252, 235, 240, 233, 251, - 233, 230, 231, 228, 0, 233, 245, 232, 239, 229, - 237, 222, 0, 0, 0, 214, 221, 0, 0, 218, - - 0, 217, 0, 231, 0, 232, 219, 218, 0, 214, - 0, 217, 0, 209, 211, 0, 210, 224, 217, 0, - 0, 220, 223, 205, 220, 0, 216, 0, 0, 200, - 214, 213, 0, 0, 197, 196, 201, 0, 210, 195, - 0, 0, 201, 197, 0, 192, 0, 204, 204, 192, - 202, 191, 0, 178, 0, 0, 198, 0, 182, 176, - 182, 0, 173, 0, 178, 191, 0, 190, 0, 0, - 181, 0, 185, 0, 172, 172, 178, 164, 187, 175, - 174, 154, 125, 116, 0, 127, 133, 124, 121, 117, - 109, 0, 444, 165, 171, 177, 179, 145, 185, 191, - - 197, 203 + 0, 0, 435, 434, 436, 435, 437, 436, 439, 446, + 49, 51, 446, 0, 446, 446, 446, 446, 446, 446, + 446, 446, 424, 427, 41, 416, 446, 38, 446, 415, + 446, 20, 33, 32, 46, 40, 44, 0, 54, 52, + 48, 60, 394, 65, 66, 74, 27, 410, 69, 446, + 446, 0, 97, 0, 425, 0, 427, 112, 0, 446, + 446, 414, 54, 409, 446, 446, 446, 446, 0, 402, + 69, 398, 390, 388, 0, 401, 79, 82, 396, 382, + 94, 380, 393, 378, 392, 386, 374, 378, 374, 376, + 376, 0, 82, 0, 375, 373, 367, 374, 0, 0, + + 380, 380, 363, 89, 98, 378, 93, 95, 369, 106, + 361, 377, 373, 351, 101, 372, 363, 112, 356, 0, + 134, 135, 446, 0, 388, 0, 390, 377, 0, 0, + 365, 360, 367, 365, 348, 346, 345, 350, 106, 348, + 360, 93, 348, 354, 355, 337, 337, 121, 0, 335, + 351, 352, 0, 339, 348, 345, 119, 126, 342, 332, + 341, 334, 331, 339, 0, 329, 339, 337, 328, 318, + 312, 325, 310, 330, 0, 0, 315, 0, 329, 320, + 317, 130, 313, 320, 327, 306, 308, 313, 313, 305, + 308, 303, 0, 0, 315, 299, 309, 316, 307, 295, + + 294, 308, 297, 310, 290, 0, 300, 282, 0, 301, + 0, 298, 285, 0, 284, 279, 284, 283, 293, 0, + 279, 0, 283, 0, 0, 279, 276, 290, 0, 275, + 275, 273, 289, 274, 286, 268, 286, 281, 0, 276, + 276, 262, 261, 274, 260, 274, 273, 272, 0, 256, + 0, 250, 0, 269, 253, 252, 252, 0, 265, 255, + 250, 249, 261, 251, 250, 0, 0, 0, 254, 0, + 242, 0, 256, 252, 238, 0, 252, 253, 236, 241, + 234, 252, 234, 231, 232, 229, 0, 234, 246, 233, + 240, 230, 238, 223, 0, 0, 0, 215, 222, 0, + + 0, 219, 0, 218, 0, 232, 0, 233, 220, 219, + 0, 215, 0, 218, 0, 210, 212, 0, 211, 225, + 218, 0, 0, 221, 224, 206, 221, 0, 217, 0, + 0, 201, 215, 214, 0, 0, 198, 197, 202, 0, + 211, 196, 0, 0, 202, 198, 0, 193, 0, 205, + 205, 193, 203, 192, 0, 179, 0, 0, 199, 0, + 183, 177, 183, 0, 174, 0, 179, 192, 0, 191, + 0, 0, 182, 0, 186, 0, 173, 173, 179, 165, + 188, 180, 179, 165, 150, 117, 0, 129, 135, 125, + 122, 118, 110, 0, 446, 166, 172, 178, 151, 180, + + 146, 186, 192, 198, 204 } ; -static yyconst flex_int16_t yy_def[403] = +static yyconst flex_int16_t yy_def[406] = { 0, - 393, 1, 394, 394, 395, 395, 396, 396, 393, 393, - 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, - 393, 393, 393, 393, 397, 393, 393, 393, 393, 393, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 393, 393, - 399, 400, 401, 393, 402, 393, 393, 393, 393, 393, - 393, 397, 393, 393, 393, 393, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 399, 400, 400, - 393, 401, 393, 402, 393, 393, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 0, 393, 393, 393, 393, 393, 393, 393, - - 393, 393 + 395, 1, 396, 396, 397, 397, 398, 398, 395, 395, + 395, 395, 395, 399, 395, 395, 395, 395, 395, 395, + 395, 395, 395, 395, 395, 400, 395, 395, 395, 395, + 395, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 395, + 395, 402, 403, 404, 395, 405, 395, 395, 399, 395, + 395, 395, 395, 400, 395, 395, 395, 395, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 402, + 403, 403, 395, 404, 395, 405, 395, 395, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 0, 395, 395, 395, 395, 395, + + 395, 395, 395, 395, 395 } ; -static yyconst flex_int16_t yy_nxt[494] = +static yyconst flex_int16_t yy_nxt[497] = { 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 37, 38, - 37, 37, 39, 37, 40, 41, 42, 37, 43, 44, - 45, 46, 47, 48, 37, 37, 37, 49, 50, 57, - 57, 57, 57, 60, 68, 61, 64, 65, 70, 69, - 74, 113, 71, 114, 75, 72, 60, 76, 61, 85, - 77, 79, 82, 78, 83, 80, 86, 93, 73, 87, - 90, 81, 88, 95, 84, 89, 97, 94, 91, 96, - 103, 106, 128, 92, 98, 110, 99, 116, 100, 104, - - 105, 101, 111, 107, 117, 120, 154, 108, 129, 112, - 121, 109, 57, 57, 134, 136, 137, 141, 164, 166, - 135, 155, 156, 138, 165, 170, 142, 172, 175, 196, - 181, 200, 201, 143, 167, 173, 171, 185, 168, 176, - 182, 186, 393, 120, 215, 197, 207, 393, 121, 67, - 208, 217, 238, 239, 392, 391, 390, 389, 388, 216, - 387, 218, 386, 385, 240, 51, 51, 51, 51, 51, - 51, 53, 53, 53, 53, 53, 53, 55, 55, 55, - 55, 55, 55, 62, 62, 118, 118, 118, 384, 118, - 118, 119, 119, 119, 119, 119, 119, 122, 122, 383, - - 122, 122, 122, 124, 382, 124, 124, 124, 124, 381, - 380, 379, 378, 377, 376, 375, 374, 373, 372, 371, - 370, 369, 368, 367, 366, 365, 364, 363, 362, 361, - 360, 359, 358, 357, 356, 355, 354, 353, 352, 351, - 350, 349, 348, 347, 346, 345, 344, 343, 342, 341, - 340, 339, 338, 337, 336, 335, 334, 333, 332, 331, - 330, 329, 328, 327, 326, 325, 324, 323, 322, 321, - 320, 319, 318, 317, 316, 315, 314, 313, 312, 311, - 310, 309, 308, 307, 306, 305, 304, 303, 302, 301, - 300, 299, 298, 297, 296, 295, 294, 293, 292, 291, - - 290, 289, 288, 287, 286, 285, 284, 283, 282, 281, - 280, 279, 278, 277, 276, 275, 274, 273, 272, 271, - 270, 269, 268, 267, 266, 265, 264, 263, 262, 261, - 260, 259, 258, 257, 256, 255, 254, 253, 252, 251, - 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, - 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, - 227, 226, 225, 224, 223, 222, 221, 220, 219, 214, - 213, 212, 211, 210, 209, 206, 205, 204, 203, 202, - 199, 198, 195, 194, 193, 192, 191, 190, 189, 188, - 126, 125, 123, 187, 184, 183, 180, 179, 178, 177, - - 174, 169, 163, 162, 161, 160, 159, 158, 157, 153, - 152, 151, 150, 149, 148, 147, 146, 145, 144, 140, - 139, 133, 132, 131, 130, 127, 393, 126, 125, 123, - 115, 102, 66, 63, 59, 58, 393, 56, 56, 54, - 54, 52, 52, 9, 393, 393, 393, 393, 393, 393, - 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, - 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, - 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, - 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, - 393, 393, 393 + 30, 31, 32, 33, 34, 35, 36, 37, 38, 38, + 39, 38, 38, 40, 38, 41, 42, 43, 38, 44, + 45, 46, 47, 48, 49, 38, 38, 38, 50, 51, + 58, 58, 58, 58, 62, 70, 63, 66, 67, 72, + 71, 76, 115, 73, 116, 77, 74, 62, 78, 63, + 87, 79, 81, 84, 80, 85, 82, 88, 95, 75, + 89, 92, 83, 90, 97, 86, 91, 99, 96, 93, + 98, 105, 108, 130, 94, 100, 112, 101, 118, 102, + + 106, 107, 103, 113, 109, 119, 122, 156, 110, 131, + 114, 123, 111, 58, 58, 136, 138, 139, 143, 166, + 168, 137, 157, 158, 140, 167, 172, 144, 174, 177, + 198, 183, 202, 203, 145, 169, 175, 173, 187, 170, + 178, 184, 188, 395, 122, 217, 199, 209, 395, 123, + 69, 210, 219, 240, 241, 59, 394, 393, 392, 391, + 218, 390, 220, 389, 388, 242, 52, 52, 52, 52, + 52, 52, 54, 54, 54, 54, 54, 54, 56, 56, + 56, 56, 56, 56, 64, 64, 120, 120, 120, 387, + 120, 120, 121, 121, 121, 121, 121, 121, 124, 124, + + 386, 124, 124, 124, 126, 385, 126, 126, 126, 126, + 384, 383, 382, 381, 380, 379, 378, 377, 376, 375, + 374, 373, 372, 371, 370, 369, 368, 367, 366, 365, + 364, 363, 362, 361, 360, 359, 358, 357, 356, 355, + 354, 353, 352, 351, 350, 349, 348, 347, 346, 345, + 344, 343, 342, 341, 340, 339, 338, 337, 336, 335, + 334, 333, 332, 331, 330, 329, 328, 327, 326, 325, + 324, 323, 322, 321, 320, 319, 318, 317, 316, 315, + 314, 313, 312, 311, 310, 309, 308, 307, 306, 305, + 304, 303, 302, 301, 300, 299, 298, 297, 296, 295, + + 294, 293, 292, 291, 290, 289, 288, 287, 286, 285, + 284, 283, 282, 281, 280, 279, 278, 277, 276, 275, + 274, 273, 272, 271, 270, 269, 268, 267, 266, 265, + 264, 263, 262, 261, 260, 259, 258, 257, 256, 255, + 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, + 244, 243, 239, 238, 237, 236, 235, 234, 233, 232, + 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, + 221, 216, 215, 214, 213, 212, 211, 208, 207, 206, + 205, 204, 201, 200, 197, 196, 195, 194, 193, 192, + 191, 190, 128, 127, 125, 189, 186, 185, 182, 181, + + 180, 179, 176, 171, 165, 164, 163, 162, 161, 160, + 159, 155, 154, 153, 152, 151, 150, 149, 148, 147, + 146, 142, 141, 135, 134, 133, 132, 129, 395, 128, + 127, 125, 117, 104, 68, 65, 61, 60, 395, 57, + 57, 55, 55, 53, 53, 9, 395, 395, 395, 395, + 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, + 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, + 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, + 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, + 395, 395, 395, 395, 395, 395 } ; -static yyconst flex_int16_t yy_chk[494] = +static yyconst flex_int16_t yy_chk[497] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, - 11, 12, 12, 24, 31, 24, 27, 27, 32, 31, - 33, 46, 32, 46, 33, 32, 61, 33, 61, 36, - 33, 34, 35, 33, 35, 34, 36, 39, 32, 36, - 38, 34, 36, 40, 35, 36, 41, 39, 38, 40, - 43, 44, 69, 38, 41, 45, 41, 48, 41, 43, - - 43, 41, 45, 44, 48, 52, 91, 44, 69, 45, - 52, 44, 57, 57, 75, 76, 76, 79, 102, 103, - 75, 91, 91, 76, 102, 105, 79, 106, 108, 137, - 113, 140, 140, 79, 103, 106, 105, 116, 103, 108, - 113, 116, 119, 120, 155, 137, 146, 119, 120, 398, - 146, 156, 180, 180, 391, 390, 389, 388, 387, 155, - 386, 156, 384, 383, 180, 394, 394, 394, 394, 394, - 394, 395, 395, 395, 395, 395, 395, 396, 396, 396, - 396, 396, 396, 397, 397, 399, 399, 399, 382, 399, - 399, 400, 400, 400, 400, 400, 400, 401, 401, 381, - - 401, 401, 401, 402, 380, 402, 402, 402, 402, 379, - 378, 377, 376, 375, 373, 371, 368, 366, 365, 363, - 361, 360, 359, 357, 354, 352, 351, 350, 349, 348, - 346, 344, 343, 340, 339, 337, 336, 335, 332, 331, - 330, 327, 325, 324, 323, 322, 319, 318, 317, 315, - 314, 312, 310, 308, 307, 306, 304, 302, 300, 297, - 296, 292, 291, 290, 289, 288, 287, 286, 284, 283, - 282, 281, 280, 279, 278, 277, 276, 275, 273, 272, - 271, 269, 267, 263, 262, 261, 260, 259, 258, 257, - 255, 254, 253, 252, 250, 248, 246, 245, 244, 243, - - 242, 241, 240, 239, 238, 236, 235, 234, 233, 232, - 231, 230, 229, 228, 226, 225, 224, 221, 219, 217, - 216, 215, 214, 213, 211, 210, 208, 206, 205, 203, - 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, - 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, - 179, 178, 177, 175, 172, 171, 170, 169, 168, 167, - 166, 165, 164, 162, 161, 160, 159, 158, 157, 154, - 153, 152, 150, 149, 148, 145, 144, 143, 142, 141, - 139, 138, 136, 135, 134, 133, 132, 131, 130, 129, - 126, 125, 123, 117, 115, 114, 112, 111, 110, 109, - - 107, 104, 101, 100, 99, 96, 95, 94, 93, 89, - 88, 87, 86, 85, 84, 83, 82, 81, 80, 78, - 77, 74, 72, 71, 70, 68, 62, 60, 56, 54, - 47, 42, 29, 25, 23, 22, 9, 8, 7, 6, - 5, 4, 3, 393, 393, 393, 393, 393, 393, 393, - 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, - 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, - 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, - 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, - 393, 393, 393 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 11, 11, 12, 12, 25, 32, 25, 28, 28, 33, + 32, 34, 47, 33, 47, 34, 33, 63, 34, 63, + 37, 34, 35, 36, 34, 36, 35, 37, 40, 33, + 37, 39, 35, 37, 41, 36, 37, 42, 40, 39, + 41, 44, 45, 71, 39, 42, 46, 42, 49, 42, + + 44, 44, 42, 46, 45, 49, 53, 93, 45, 71, + 46, 53, 45, 58, 58, 77, 78, 78, 81, 104, + 105, 77, 93, 93, 78, 104, 107, 81, 108, 110, + 139, 115, 142, 142, 81, 105, 108, 107, 118, 105, + 110, 115, 118, 121, 122, 157, 139, 148, 121, 122, + 401, 148, 158, 182, 182, 399, 393, 392, 391, 390, + 157, 389, 158, 388, 386, 182, 396, 396, 396, 396, + 396, 396, 397, 397, 397, 397, 397, 397, 398, 398, + 398, 398, 398, 398, 400, 400, 402, 402, 402, 385, + 402, 402, 403, 403, 403, 403, 403, 403, 404, 404, + + 384, 404, 404, 404, 405, 383, 405, 405, 405, 405, + 382, 381, 380, 379, 378, 377, 375, 373, 370, 368, + 367, 365, 363, 362, 361, 359, 356, 354, 353, 352, + 351, 350, 348, 346, 345, 342, 341, 339, 338, 337, + 334, 333, 332, 329, 327, 326, 325, 324, 321, 320, + 319, 317, 316, 314, 312, 310, 309, 308, 306, 304, + 302, 299, 298, 294, 293, 292, 291, 290, 289, 288, + 286, 285, 284, 283, 282, 281, 280, 279, 278, 277, + 275, 274, 273, 271, 269, 265, 264, 263, 262, 261, + 260, 259, 257, 256, 255, 254, 252, 250, 248, 247, + + 246, 245, 244, 243, 242, 241, 240, 238, 237, 236, + 235, 234, 233, 232, 231, 230, 228, 227, 226, 223, + 221, 219, 218, 217, 216, 215, 213, 212, 210, 208, + 207, 205, 204, 203, 202, 201, 200, 199, 198, 197, + 196, 195, 192, 191, 190, 189, 188, 187, 186, 185, + 184, 183, 181, 180, 179, 177, 174, 173, 172, 171, + 170, 169, 168, 167, 166, 164, 163, 162, 161, 160, + 159, 156, 155, 154, 152, 151, 150, 147, 146, 145, + 144, 143, 141, 140, 138, 137, 136, 135, 134, 133, + 132, 131, 128, 127, 125, 119, 117, 116, 114, 113, + + 112, 111, 109, 106, 103, 102, 101, 98, 97, 96, + 95, 91, 90, 89, 88, 87, 86, 85, 84, 83, + 82, 80, 79, 76, 74, 73, 72, 70, 64, 62, + 57, 55, 48, 43, 30, 26, 24, 23, 9, 8, + 7, 6, 5, 4, 3, 395, 395, 395, 395, 395, + 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, + 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, + 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, + 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, + 395, 395, 395, 395, 395, 395 } ; @@ -908,7 +908,7 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 91 "pars0lex.l" +#line 92 "pars0lex.l" #line 914 "_flex_tmp.c" @@ -964,13 +964,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 394 ) + if ( yy_current_state >= 396 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_current_state != 393 ); + while ( yy_current_state != 395 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -992,7 +992,7 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 93 "pars0lex.l" +#line 94 "pars0lex.l" { yylval = sym_tab_add_int_lit(pars_sym_tab_global, atoi(yytext)); @@ -1001,7 +1001,7 @@ YY_RULE_SETUP YY_BREAK case 2: YY_RULE_SETUP -#line 99 "pars0lex.l" +#line 100 "pars0lex.l" { ut_error; /* not implemented */ @@ -1010,7 +1010,7 @@ YY_RULE_SETUP YY_BREAK case 3: YY_RULE_SETUP -#line 105 "pars0lex.l" +#line 106 "pars0lex.l" { ulint type; @@ -1022,7 +1022,17 @@ YY_RULE_SETUP YY_BREAK case 4: YY_RULE_SETUP -#line 114 "pars0lex.l" +#line 115 "pars0lex.l" +{ + yylval = sym_tab_add_bound_id(pars_sym_tab_global, + yytext + 1); + + return(PARS_ID_TOKEN); +} + YY_BREAK +case 5: +YY_RULE_SETUP +#line 122 "pars0lex.l" { /* Quoted character string literals are handled in an explicit start state 'quoted'. This state is entered and the buffer for @@ -1033,19 +1043,19 @@ In the state 'quoted', only two actions are possible (defined below). */ stringbuf_len = 0; } YY_BREAK -case 5: -/* rule 5 can match eol */ +case 6: +/* rule 6 can match eol */ YY_RULE_SETUP -#line 123 "pars0lex.l" +#line 131 "pars0lex.l" { /* Got a sequence of characters other than "'": append to string buffer */ string_append(yytext, yyleng); } YY_BREAK -case 6: +case 7: YY_RULE_SETUP -#line 128 "pars0lex.l" +#line 136 "pars0lex.l" { /* Got a sequence of "'" characters: append half of them to string buffer, @@ -1070,9 +1080,9 @@ YY_RULE_SETUP } } YY_BREAK -case 7: +case 8: YY_RULE_SETUP -#line 152 "pars0lex.l" +#line 160 "pars0lex.l" { /* Quoted identifiers are handled in an explicit start state 'id'. This state is entered and the buffer for the scanned string is emptied @@ -1083,19 +1093,19 @@ In the state 'id', only two actions are possible (defined below). */ stringbuf_len = 0; } YY_BREAK -case 8: -/* rule 8 can match eol */ +case 9: +/* rule 9 can match eol */ YY_RULE_SETUP -#line 161 "pars0lex.l" +#line 169 "pars0lex.l" { /* Got a sequence of characters other than '"': append to string buffer */ string_append(yytext, yyleng); } YY_BREAK -case 9: +case 10: YY_RULE_SETUP -#line 166 "pars0lex.l" +#line 174 "pars0lex.l" { /* Got a sequence of '"' characters: append half of them to string buffer, @@ -1121,18 +1131,18 @@ YY_RULE_SETUP } } YY_BREAK -case 10: +case 11: YY_RULE_SETUP -#line 191 "pars0lex.l" +#line 199 "pars0lex.l" { yylval = sym_tab_add_null_lit(pars_sym_tab_global); return(PARS_NULL_LIT); } YY_BREAK -case 11: +case 12: YY_RULE_SETUP -#line 197 "pars0lex.l" +#line 205 "pars0lex.l" { /* Implicit cursor name */ yylval = sym_tab_add_str_lit(pars_sym_tab_global, @@ -1140,548 +1150,548 @@ YY_RULE_SETUP return(PARS_SQL_TOKEN); } YY_BREAK -case 12: +case 13: YY_RULE_SETUP -#line 204 "pars0lex.l" +#line 212 "pars0lex.l" { return(PARS_AND_TOKEN); } YY_BREAK -case 13: +case 14: YY_RULE_SETUP -#line 208 "pars0lex.l" +#line 216 "pars0lex.l" { return(PARS_OR_TOKEN); } YY_BREAK -case 14: +case 15: YY_RULE_SETUP -#line 212 "pars0lex.l" +#line 220 "pars0lex.l" { return(PARS_NOT_TOKEN); } YY_BREAK -case 15: +case 16: YY_RULE_SETUP -#line 216 "pars0lex.l" +#line 224 "pars0lex.l" { return(PARS_PROCEDURE_TOKEN); } YY_BREAK -case 16: +case 17: YY_RULE_SETUP -#line 220 "pars0lex.l" +#line 228 "pars0lex.l" { return(PARS_IN_TOKEN); } YY_BREAK -case 17: +case 18: YY_RULE_SETUP -#line 224 "pars0lex.l" +#line 232 "pars0lex.l" { return(PARS_OUT_TOKEN); } YY_BREAK -case 18: +case 19: YY_RULE_SETUP -#line 228 "pars0lex.l" +#line 236 "pars0lex.l" { return(PARS_BINARY_TOKEN); } YY_BREAK -case 19: +case 20: YY_RULE_SETUP -#line 232 "pars0lex.l" +#line 240 "pars0lex.l" { return(PARS_BLOB_TOKEN); } YY_BREAK -case 20: +case 21: YY_RULE_SETUP -#line 236 "pars0lex.l" +#line 244 "pars0lex.l" { return(PARS_INT_TOKEN); } YY_BREAK -case 21: +case 22: YY_RULE_SETUP -#line 240 "pars0lex.l" +#line 248 "pars0lex.l" { return(PARS_INT_TOKEN); } YY_BREAK -case 22: +case 23: YY_RULE_SETUP -#line 244 "pars0lex.l" +#line 252 "pars0lex.l" { return(PARS_FLOAT_TOKEN); } YY_BREAK -case 23: +case 24: YY_RULE_SETUP -#line 248 "pars0lex.l" +#line 256 "pars0lex.l" { return(PARS_CHAR_TOKEN); } YY_BREAK -case 24: +case 25: YY_RULE_SETUP -#line 252 "pars0lex.l" +#line 260 "pars0lex.l" { return(PARS_IS_TOKEN); } YY_BREAK -case 25: +case 26: YY_RULE_SETUP -#line 256 "pars0lex.l" +#line 264 "pars0lex.l" { return(PARS_BEGIN_TOKEN); } YY_BREAK -case 26: +case 27: YY_RULE_SETUP -#line 260 "pars0lex.l" +#line 268 "pars0lex.l" { return(PARS_END_TOKEN); } YY_BREAK -case 27: +case 28: YY_RULE_SETUP -#line 264 "pars0lex.l" +#line 272 "pars0lex.l" { return(PARS_IF_TOKEN); } YY_BREAK -case 28: +case 29: YY_RULE_SETUP -#line 268 "pars0lex.l" +#line 276 "pars0lex.l" { return(PARS_THEN_TOKEN); } YY_BREAK -case 29: +case 30: YY_RULE_SETUP -#line 272 "pars0lex.l" +#line 280 "pars0lex.l" { return(PARS_ELSE_TOKEN); } YY_BREAK -case 30: +case 31: YY_RULE_SETUP -#line 276 "pars0lex.l" +#line 284 "pars0lex.l" { return(PARS_ELSIF_TOKEN); } YY_BREAK -case 31: +case 32: YY_RULE_SETUP -#line 280 "pars0lex.l" +#line 288 "pars0lex.l" { return(PARS_LOOP_TOKEN); } YY_BREAK -case 32: +case 33: YY_RULE_SETUP -#line 284 "pars0lex.l" +#line 292 "pars0lex.l" { return(PARS_WHILE_TOKEN); } YY_BREAK -case 33: +case 34: YY_RULE_SETUP -#line 288 "pars0lex.l" +#line 296 "pars0lex.l" { return(PARS_RETURN_TOKEN); } YY_BREAK -case 34: +case 35: YY_RULE_SETUP -#line 292 "pars0lex.l" +#line 300 "pars0lex.l" { return(PARS_SELECT_TOKEN); } YY_BREAK -case 35: +case 36: YY_RULE_SETUP -#line 296 "pars0lex.l" +#line 304 "pars0lex.l" { return(PARS_SUM_TOKEN); } YY_BREAK -case 36: +case 37: YY_RULE_SETUP -#line 300 "pars0lex.l" +#line 308 "pars0lex.l" { return(PARS_COUNT_TOKEN); } YY_BREAK -case 37: +case 38: YY_RULE_SETUP -#line 304 "pars0lex.l" +#line 312 "pars0lex.l" { return(PARS_DISTINCT_TOKEN); } YY_BREAK -case 38: +case 39: YY_RULE_SETUP -#line 308 "pars0lex.l" +#line 316 "pars0lex.l" { return(PARS_FROM_TOKEN); } YY_BREAK -case 39: +case 40: YY_RULE_SETUP -#line 312 "pars0lex.l" +#line 320 "pars0lex.l" { return(PARS_WHERE_TOKEN); } YY_BREAK -case 40: +case 41: YY_RULE_SETUP -#line 316 "pars0lex.l" +#line 324 "pars0lex.l" { return(PARS_FOR_TOKEN); } YY_BREAK -case 41: +case 42: YY_RULE_SETUP -#line 320 "pars0lex.l" +#line 328 "pars0lex.l" { return(PARS_CONSISTENT_TOKEN); } YY_BREAK -case 42: +case 43: YY_RULE_SETUP -#line 324 "pars0lex.l" +#line 332 "pars0lex.l" { return(PARS_READ_TOKEN); } YY_BREAK -case 43: +case 44: YY_RULE_SETUP -#line 328 "pars0lex.l" +#line 336 "pars0lex.l" { return(PARS_ORDER_TOKEN); } YY_BREAK -case 44: +case 45: YY_RULE_SETUP -#line 332 "pars0lex.l" +#line 340 "pars0lex.l" { return(PARS_BY_TOKEN); } YY_BREAK -case 45: +case 46: YY_RULE_SETUP -#line 336 "pars0lex.l" +#line 344 "pars0lex.l" { return(PARS_ASC_TOKEN); } YY_BREAK -case 46: +case 47: YY_RULE_SETUP -#line 340 "pars0lex.l" +#line 348 "pars0lex.l" { return(PARS_DESC_TOKEN); } YY_BREAK -case 47: +case 48: YY_RULE_SETUP -#line 344 "pars0lex.l" +#line 352 "pars0lex.l" { return(PARS_INSERT_TOKEN); } YY_BREAK -case 48: +case 49: YY_RULE_SETUP -#line 348 "pars0lex.l" +#line 356 "pars0lex.l" { return(PARS_INTO_TOKEN); } YY_BREAK -case 49: +case 50: YY_RULE_SETUP -#line 352 "pars0lex.l" +#line 360 "pars0lex.l" { return(PARS_VALUES_TOKEN); } YY_BREAK -case 50: +case 51: YY_RULE_SETUP -#line 356 "pars0lex.l" +#line 364 "pars0lex.l" { return(PARS_UPDATE_TOKEN); } YY_BREAK -case 51: +case 52: YY_RULE_SETUP -#line 360 "pars0lex.l" +#line 368 "pars0lex.l" { return(PARS_SET_TOKEN); } YY_BREAK -case 52: +case 53: YY_RULE_SETUP -#line 364 "pars0lex.l" +#line 372 "pars0lex.l" { return(PARS_DELETE_TOKEN); } YY_BREAK -case 53: +case 54: YY_RULE_SETUP -#line 368 "pars0lex.l" +#line 376 "pars0lex.l" { return(PARS_CURRENT_TOKEN); } YY_BREAK -case 54: +case 55: YY_RULE_SETUP -#line 372 "pars0lex.l" +#line 380 "pars0lex.l" { return(PARS_OF_TOKEN); } YY_BREAK -case 55: +case 56: YY_RULE_SETUP -#line 376 "pars0lex.l" +#line 384 "pars0lex.l" { return(PARS_CREATE_TOKEN); } YY_BREAK -case 56: +case 57: YY_RULE_SETUP -#line 380 "pars0lex.l" +#line 388 "pars0lex.l" { return(PARS_TABLE_TOKEN); } YY_BREAK -case 57: +case 58: YY_RULE_SETUP -#line 384 "pars0lex.l" +#line 392 "pars0lex.l" { return(PARS_INDEX_TOKEN); } YY_BREAK -case 58: +case 59: YY_RULE_SETUP -#line 388 "pars0lex.l" +#line 396 "pars0lex.l" { return(PARS_UNIQUE_TOKEN); } YY_BREAK -case 59: +case 60: YY_RULE_SETUP -#line 392 "pars0lex.l" +#line 400 "pars0lex.l" { return(PARS_CLUSTERED_TOKEN); } YY_BREAK -case 60: +case 61: YY_RULE_SETUP -#line 396 "pars0lex.l" +#line 404 "pars0lex.l" { return(PARS_DOES_NOT_FIT_IN_MEM_TOKEN); } YY_BREAK -case 61: +case 62: YY_RULE_SETUP -#line 400 "pars0lex.l" +#line 408 "pars0lex.l" { return(PARS_ON_TOKEN); } YY_BREAK -case 62: +case 63: YY_RULE_SETUP -#line 404 "pars0lex.l" +#line 412 "pars0lex.l" { return(PARS_DECLARE_TOKEN); } YY_BREAK -case 63: +case 64: YY_RULE_SETUP -#line 408 "pars0lex.l" +#line 416 "pars0lex.l" { return(PARS_CURSOR_TOKEN); } YY_BREAK -case 64: +case 65: YY_RULE_SETUP -#line 412 "pars0lex.l" +#line 420 "pars0lex.l" { return(PARS_OPEN_TOKEN); } YY_BREAK -case 65: +case 66: YY_RULE_SETUP -#line 416 "pars0lex.l" +#line 424 "pars0lex.l" { return(PARS_FETCH_TOKEN); } YY_BREAK -case 66: +case 67: YY_RULE_SETUP -#line 420 "pars0lex.l" +#line 428 "pars0lex.l" { return(PARS_CLOSE_TOKEN); } YY_BREAK -case 67: +case 68: YY_RULE_SETUP -#line 424 "pars0lex.l" +#line 432 "pars0lex.l" { return(PARS_NOTFOUND_TOKEN); } YY_BREAK -case 68: +case 69: YY_RULE_SETUP -#line 428 "pars0lex.l" +#line 436 "pars0lex.l" { return(PARS_TO_CHAR_TOKEN); } YY_BREAK -case 69: +case 70: YY_RULE_SETUP -#line 432 "pars0lex.l" +#line 440 "pars0lex.l" { return(PARS_TO_NUMBER_TOKEN); } YY_BREAK -case 70: +case 71: YY_RULE_SETUP -#line 436 "pars0lex.l" +#line 444 "pars0lex.l" { return(PARS_TO_BINARY_TOKEN); } YY_BREAK -case 71: +case 72: YY_RULE_SETUP -#line 440 "pars0lex.l" +#line 448 "pars0lex.l" { return(PARS_BINARY_TO_NUMBER_TOKEN); } YY_BREAK -case 72: +case 73: YY_RULE_SETUP -#line 444 "pars0lex.l" +#line 452 "pars0lex.l" { return(PARS_SUBSTR_TOKEN); } YY_BREAK -case 73: +case 74: YY_RULE_SETUP -#line 448 "pars0lex.l" +#line 456 "pars0lex.l" { return(PARS_REPLSTR_TOKEN); } YY_BREAK -case 74: +case 75: YY_RULE_SETUP -#line 452 "pars0lex.l" +#line 460 "pars0lex.l" { return(PARS_CONCAT_TOKEN); } YY_BREAK -case 75: +case 76: YY_RULE_SETUP -#line 456 "pars0lex.l" +#line 464 "pars0lex.l" { return(PARS_INSTR_TOKEN); } YY_BREAK -case 76: +case 77: YY_RULE_SETUP -#line 460 "pars0lex.l" +#line 468 "pars0lex.l" { return(PARS_LENGTH_TOKEN); } YY_BREAK -case 77: +case 78: YY_RULE_SETUP -#line 464 "pars0lex.l" +#line 472 "pars0lex.l" { return(PARS_SYSDATE_TOKEN); } YY_BREAK -case 78: +case 79: YY_RULE_SETUP -#line 468 "pars0lex.l" +#line 476 "pars0lex.l" { return(PARS_PRINTF_TOKEN); } YY_BREAK -case 79: +case 80: YY_RULE_SETUP -#line 472 "pars0lex.l" +#line 480 "pars0lex.l" { return(PARS_ASSERT_TOKEN); } YY_BREAK -case 80: +case 81: YY_RULE_SETUP -#line 476 "pars0lex.l" +#line 484 "pars0lex.l" { return(PARS_RND_TOKEN); } YY_BREAK -case 81: +case 82: YY_RULE_SETUP -#line 480 "pars0lex.l" +#line 488 "pars0lex.l" { return(PARS_RND_STR_TOKEN); } YY_BREAK -case 82: +case 83: YY_RULE_SETUP -#line 484 "pars0lex.l" +#line 492 "pars0lex.l" { return(PARS_ROW_PRINTF_TOKEN); } YY_BREAK -case 83: +case 84: YY_RULE_SETUP -#line 488 "pars0lex.l" +#line 496 "pars0lex.l" { return(PARS_COMMIT_TOKEN); } YY_BREAK -case 84: +case 85: YY_RULE_SETUP -#line 492 "pars0lex.l" +#line 500 "pars0lex.l" { return(PARS_ROLLBACK_TOKEN); } YY_BREAK -case 85: +case 86: YY_RULE_SETUP -#line 496 "pars0lex.l" +#line 504 "pars0lex.l" { return(PARS_WORK_TOKEN); } YY_BREAK -case 86: +case 87: YY_RULE_SETUP -#line 500 "pars0lex.l" +#line 508 "pars0lex.l" { return(PARS_UNSIGNED_TOKEN); } YY_BREAK -case 87: +case 88: YY_RULE_SETUP -#line 504 "pars0lex.l" +#line 512 "pars0lex.l" { return(PARS_EXIT_TOKEN); } YY_BREAK -case 88: +case 89: YY_RULE_SETUP -#line 508 "pars0lex.l" +#line 516 "pars0lex.l" { return(PARS_FUNCTION_TOKEN); } YY_BREAK -case 89: +case 90: YY_RULE_SETUP -#line 512 "pars0lex.l" +#line 520 "pars0lex.l" { yylval = sym_tab_add_id(pars_sym_tab_global, (byte*)yytext, @@ -1689,52 +1699,44 @@ YY_RULE_SETUP return(PARS_ID_TOKEN); } YY_BREAK -case 90: -YY_RULE_SETUP -#line 519 "pars0lex.l" -{ - return(PARS_DDOT_TOKEN); -} - YY_BREAK case 91: YY_RULE_SETUP -#line 523 "pars0lex.l" +#line 527 "pars0lex.l" { - return(PARS_ASSIGN_TOKEN); + return(PARS_DDOT_TOKEN); } YY_BREAK case 92: YY_RULE_SETUP -#line 527 "pars0lex.l" +#line 531 "pars0lex.l" { - return(PARS_LE_TOKEN); + return(PARS_ASSIGN_TOKEN); } YY_BREAK case 93: YY_RULE_SETUP -#line 531 "pars0lex.l" +#line 535 "pars0lex.l" { - return(PARS_GE_TOKEN); + return(PARS_LE_TOKEN); } YY_BREAK case 94: YY_RULE_SETUP -#line 535 "pars0lex.l" +#line 539 "pars0lex.l" { - return(PARS_NE_TOKEN); + return(PARS_GE_TOKEN); } YY_BREAK case 95: YY_RULE_SETUP -#line 539 "pars0lex.l" +#line 543 "pars0lex.l" { - - return((int)(*yytext)); + return(PARS_NE_TOKEN); } YY_BREAK case 96: YY_RULE_SETUP -#line 544 "pars0lex.l" +#line 547 "pars0lex.l" { return((int)(*yytext)); @@ -1742,7 +1744,7 @@ YY_RULE_SETUP YY_BREAK case 97: YY_RULE_SETUP -#line 549 "pars0lex.l" +#line 552 "pars0lex.l" { return((int)(*yytext)); @@ -1750,7 +1752,7 @@ YY_RULE_SETUP YY_BREAK case 98: YY_RULE_SETUP -#line 554 "pars0lex.l" +#line 557 "pars0lex.l" { return((int)(*yytext)); @@ -1758,7 +1760,7 @@ YY_RULE_SETUP YY_BREAK case 99: YY_RULE_SETUP -#line 559 "pars0lex.l" +#line 562 "pars0lex.l" { return((int)(*yytext)); @@ -1766,7 +1768,7 @@ YY_RULE_SETUP YY_BREAK case 100: YY_RULE_SETUP -#line 564 "pars0lex.l" +#line 567 "pars0lex.l" { return((int)(*yytext)); @@ -1774,7 +1776,7 @@ YY_RULE_SETUP YY_BREAK case 101: YY_RULE_SETUP -#line 569 "pars0lex.l" +#line 572 "pars0lex.l" { return((int)(*yytext)); @@ -1782,7 +1784,7 @@ YY_RULE_SETUP YY_BREAK case 102: YY_RULE_SETUP -#line 574 "pars0lex.l" +#line 577 "pars0lex.l" { return((int)(*yytext)); @@ -1790,7 +1792,7 @@ YY_RULE_SETUP YY_BREAK case 103: YY_RULE_SETUP -#line 579 "pars0lex.l" +#line 582 "pars0lex.l" { return((int)(*yytext)); @@ -1798,7 +1800,7 @@ YY_RULE_SETUP YY_BREAK case 104: YY_RULE_SETUP -#line 584 "pars0lex.l" +#line 587 "pars0lex.l" { return((int)(*yytext)); @@ -1806,7 +1808,7 @@ YY_RULE_SETUP YY_BREAK case 105: YY_RULE_SETUP -#line 589 "pars0lex.l" +#line 592 "pars0lex.l" { return((int)(*yytext)); @@ -1814,7 +1816,7 @@ YY_RULE_SETUP YY_BREAK case 106: YY_RULE_SETUP -#line 594 "pars0lex.l" +#line 597 "pars0lex.l" { return((int)(*yytext)); @@ -1822,7 +1824,7 @@ YY_RULE_SETUP YY_BREAK case 107: YY_RULE_SETUP -#line 599 "pars0lex.l" +#line 602 "pars0lex.l" { return((int)(*yytext)); @@ -1830,7 +1832,7 @@ YY_RULE_SETUP YY_BREAK case 108: YY_RULE_SETUP -#line 604 "pars0lex.l" +#line 607 "pars0lex.l" { return((int)(*yytext)); @@ -1838,7 +1840,7 @@ YY_RULE_SETUP YY_BREAK case 109: YY_RULE_SETUP -#line 609 "pars0lex.l" +#line 612 "pars0lex.l" { return((int)(*yytext)); @@ -1846,35 +1848,43 @@ YY_RULE_SETUP YY_BREAK case 110: YY_RULE_SETUP -#line 614 "pars0lex.l" -BEGIN(comment); /* eat up comment */ +#line 617 "pars0lex.l" +{ + + return((int)(*yytext)); +} YY_BREAK case 111: -/* rule 111 can match eol */ YY_RULE_SETUP -#line 616 "pars0lex.l" - +#line 622 "pars0lex.l" +BEGIN(comment); /* eat up comment */ YY_BREAK case 112: /* rule 112 can match eol */ YY_RULE_SETUP -#line 617 "pars0lex.l" +#line 624 "pars0lex.l" YY_BREAK case 113: +/* rule 113 can match eol */ YY_RULE_SETUP -#line 618 "pars0lex.l" -BEGIN(INITIAL); +#line 625 "pars0lex.l" + YY_BREAK case 114: -/* rule 114 can match eol */ YY_RULE_SETUP -#line 620 "pars0lex.l" -/* eat up whitespace */ +#line 626 "pars0lex.l" +BEGIN(INITIAL); YY_BREAK case 115: +/* rule 115 can match eol */ YY_RULE_SETUP -#line 623 "pars0lex.l" +#line 628 "pars0lex.l" +/* eat up whitespace */ + YY_BREAK +case 116: +YY_RULE_SETUP +#line 631 "pars0lex.l" { fprintf(stderr,"Unrecognized character: %02x\n", *yytext); @@ -1884,12 +1894,12 @@ YY_RULE_SETUP return(0); } YY_BREAK -case 116: +case 117: YY_RULE_SETUP -#line 632 "pars0lex.l" +#line 640 "pars0lex.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 1892 "_flex_tmp.c" +#line 1902 "_flex_tmp.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(comment): case YY_STATE_EOF(quoted): @@ -2177,7 +2187,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 394 ) + if ( yy_current_state >= 396 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2205,11 +2215,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 394 ) + if ( yy_current_state >= 396 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 393); + yy_is_jam = (yy_current_state == 395); return yy_is_jam ? 0 : yy_current_state; } @@ -2732,7 +2742,7 @@ void yyfree (void * ptr ) #undef YY_DECL_IS_OURS #undef YY_DECL #endif -#line 632 "pars0lex.l" +#line 640 "pars0lex.l" diff --git a/storage/innobase/pars/pars0lex.l b/storage/innobase/pars/pars0lex.l index ab1fe446924..8f6a8d39a36 100644 --- a/storage/innobase/pars/pars0lex.l +++ b/storage/innobase/pars/pars0lex.l @@ -84,6 +84,7 @@ string_append( DIGIT [0-9] ID [a-z_A-Z][a-z_A-Z0-9]* BOUND_LIT \:[a-z_A-Z0-9]+ +BOUND_ID \$[a-z_A-Z0-9]+ %x comment %x quoted @@ -111,6 +112,13 @@ BOUND_LIT \:[a-z_A-Z0-9]+ return(type); } +{BOUND_ID} { + yylval = sym_tab_add_bound_id(pars_sym_tab_global, + yytext + 1); + + return(PARS_ID_TOKEN); +} + "'" { /* Quoted character string literals are handled in an explicit start state 'quoted'. This state is entered and the buffer for diff --git a/storage/innobase/pars/pars0pars.c b/storage/innobase/pars/pars0pars.c index 7ef2f65c724..def26e62d29 100644 --- a/storage/innobase/pars/pars0pars.c +++ b/storage/innobase/pars/pars0pars.c @@ -1931,6 +1931,7 @@ pars_info_create(void) info->heap = heap; info->funcs = NULL; info->bound_lits = NULL; + info->bound_ids = NULL; info->graph_owns_us = TRUE; return(info); @@ -2070,6 +2071,32 @@ pars_info_add_function( ib_vector_push(info->funcs, puf); } +/******************************************************************** +Add bound id. */ + +void +pars_info_add_id( +/*=============*/ + pars_info_t* info, /* in: info struct */ + const char* name, /* in: name */ + const char* id) /* in: id */ +{ + pars_bound_id_t* bid; + + ut_ad(!pars_info_get_bound_id(info, name)); + + bid = mem_heap_alloc(info->heap, sizeof(*bid)); + + bid->name = name; + bid->id = id; + + if (!info->bound_ids) { + info->bound_ids = ib_vector_create(info->heap, 8); + } + + ib_vector_push(info->bound_ids, bid); +} + /******************************************************************** Get user function with the given name.*/ @@ -2131,3 +2158,34 @@ pars_info_get_bound_lit( return(NULL); } + +/******************************************************************** +Get bound id with the given name.*/ + +pars_bound_id_t* +pars_info_get_bound_id( +/*===================*/ + /* out: bound id, or NULL if not + found */ + pars_info_t* info, /* in: info struct */ + const char* name) /* in: bound id name to find */ +{ + ulint i; + ib_vector_t* vec; + + if (!info || !info->bound_ids) { + return(NULL); + } + + vec = info->bound_ids; + + for (i = 0; i < ib_vector_size(vec); i++) { + pars_bound_id_t* bid = ib_vector_get(vec, i); + + if (strcmp(bid->name, name) == 0) { + return(bid); + } + } + + return(NULL); +} diff --git a/storage/innobase/pars/pars0sym.c b/storage/innobase/pars/pars0sym.c index 79a1e555b06..8d691febb14 100644 --- a/storage/innobase/pars/pars0sym.c +++ b/storage/innobase/pars/pars0sym.c @@ -207,6 +207,13 @@ sym_tab_add_bound_lit( *lit_type = PARS_STR_LIT; break; + case DATA_CHAR: + ut_a(blit->length > 0); + + len = blit->length; + *lit_type = PARS_STR_LIT; + break; + case DATA_INT: ut_a(blit->length > 0); ut_a(blit->length <= 8); @@ -304,3 +311,42 @@ sym_tab_add_id( return(node); } + +/********************************************************************** +Add a bound identifier to a symbol table. */ + +sym_node_t* +sym_tab_add_bound_id( +/*===========*/ + /* out: symbol table node */ + sym_tab_t* sym_tab, /* in: symbol table */ + const char* name) /* in: name of bound id */ +{ + sym_node_t* node; + pars_bound_id_t* bid; + + bid = pars_info_get_bound_id(sym_tab->info, name); + ut_a(bid); + + node = mem_heap_alloc(sym_tab->heap, sizeof(sym_node_t)); + + node->common.type = QUE_NODE_SYMBOL; + + node->resolved = FALSE; + node->indirection = NULL; + + node->name = mem_heap_strdup(sym_tab->heap, bid->id); + node->name_len = strlen(node->name); + + UT_LIST_ADD_LAST(sym_list, sym_tab->sym_list, node); + + dfield_set_data(&(node->common.val), NULL, UNIV_SQL_NULL); + + node->common.val_buf_size = 0; + node->prefetch_buf = NULL; + node->cursor_def = NULL; + + node->sym_table = sym_tab; + + return(node); +} diff --git a/storage/innobase/row/row0ins.c b/storage/innobase/row/row0ins.c index e47d6a621a7..414f4091403 100644 --- a/storage/innobase/row/row0ins.c +++ b/storage/innobase/row/row0ins.c @@ -601,7 +601,7 @@ row_ins_set_detailed( rewind(srv_misc_tmpfile); if (os_file_set_eof(srv_misc_tmpfile)) { - ut_print_name(srv_misc_tmpfile, trx, + ut_print_name(srv_misc_tmpfile, trx, TRUE, foreign->foreign_table_name); dict_print_info_on_foreign_key_in_create_format( srv_misc_tmpfile, @@ -643,22 +643,22 @@ row_ins_foreign_report_err( trx_print(ef, trx, 600); fputs("Foreign key constraint fails for table ", ef); - ut_print_name(ef, trx, foreign->foreign_table_name); + ut_print_name(ef, trx, TRUE, foreign->foreign_table_name); fputs(":\n", ef); dict_print_info_on_foreign_key_in_create_format(ef, trx, foreign, TRUE); putc('\n', ef); fputs(errstr, ef); fputs(" in parent table, in index ", ef); - ut_print_name(ef, trx, foreign->referenced_index->name); + ut_print_name(ef, trx, FALSE, foreign->referenced_index->name); if (entry) { fputs(" tuple:\n", ef); dtuple_print(ef, entry); } fputs("\nBut in child table ", ef); - ut_print_name(ef, trx, foreign->foreign_table_name); + ut_print_name(ef, trx, TRUE, foreign->foreign_table_name); fputs(", in index ", ef); - ut_print_name(ef, trx, foreign->foreign_index->name); + ut_print_name(ef, trx, FALSE, foreign->foreign_index->name); if (rec) { fputs(", there is a record:\n", ef); rec_print(ef, rec, foreign->foreign_index); @@ -696,20 +696,20 @@ row_ins_foreign_report_add_err( fputs(" Transaction:\n", ef); trx_print(ef, trx, 600); fputs("Foreign key constraint fails for table ", ef); - ut_print_name(ef, trx, foreign->foreign_table_name); + ut_print_name(ef, trx, TRUE, foreign->foreign_table_name); fputs(":\n", ef); dict_print_info_on_foreign_key_in_create_format(ef, trx, foreign, TRUE); fputs("\nTrying to add in child table, in index ", ef); - ut_print_name(ef, trx, foreign->foreign_index->name); + ut_print_name(ef, trx, FALSE, foreign->foreign_index->name); if (entry) { fputs(" tuple:\n", ef); dtuple_print(ef, entry); } fputs("\nBut in parent table ", ef); - ut_print_name(ef, trx, foreign->referenced_table_name); + ut_print_name(ef, trx, TRUE, foreign->referenced_table_name); fputs(", in index ", ef); - ut_print_name(ef, trx, foreign->referenced_index->name); + ut_print_name(ef, trx, FALSE, foreign->referenced_index->name); fputs(",\nthe closest match we can find is record:\n", ef); if (rec && page_rec_is_supremum(rec)) { /* If the cursor ended on a supremum record, it is better @@ -1277,16 +1277,19 @@ run_again: fputs(" Transaction:\n", ef); trx_print(ef, trx, 600); fputs("Foreign key constraint fails for table ", ef); - ut_print_name(ef, trx, foreign->foreign_table_name); + ut_print_name(ef, trx, TRUE, + foreign->foreign_table_name); fputs(":\n", ef); dict_print_info_on_foreign_key_in_create_format(ef, trx, foreign, TRUE); fputs("\nTrying to add to index ", ef); - ut_print_name(ef, trx, foreign->foreign_index->name); + ut_print_name(ef, trx, FALSE, + foreign->foreign_index->name); fputs(" tuple:\n", ef); dtuple_print(ef, entry); fputs("\nBut the parent table ", ef); - ut_print_name(ef, trx, foreign->referenced_table_name); + ut_print_name(ef, trx, TRUE, + foreign->referenced_table_name); fputs("\nor its .ibd file does not currently exist!\n", ef); mutex_exit(&dict_foreign_err_mutex); @@ -1513,8 +1516,7 @@ row_ins_check_foreign_constraints( if (foreign->foreign_index == index) { if (foreign->referenced_table == NULL) { - dict_table_get(foreign->referenced_table_name, - trx); + dict_table_get(foreign->referenced_table_name); } if (0 == trx->dict_operation_lock_mode) { diff --git a/storage/innobase/row/row0mysql.c b/storage/innobase/row/row0mysql.c index 56574618f9a..58d86790c0a 100644 --- a/storage/innobase/row/row0mysql.c +++ b/storage/innobase/row/row0mysql.c @@ -680,7 +680,7 @@ row_prebuilt_free( "InnoDB: table handle. Magic n %lu, magic n2 %lu, table name", (ulong) prebuilt->magic_n, (ulong) prebuilt->magic_n2); - ut_print_name(stderr, NULL, prebuilt->table->name); + ut_print_name(stderr, NULL, TRUE, prebuilt->table->name); putc('\n', stderr); mem_analyze_corruption(prebuilt); @@ -773,7 +773,7 @@ row_update_prebuilt_trx( "InnoDB: Error: trying to use a corrupt\n" "InnoDB: table handle. Magic n %lu, table name", (ulong) prebuilt->magic_n); - ut_print_name(stderr, NULL, prebuilt->table->name); + ut_print_name(stderr, NULL, TRUE, prebuilt->table->name); putc('\n', stderr); mem_analyze_corruption(prebuilt); @@ -1094,7 +1094,8 @@ row_insert_for_mysql( "InnoDB: Error: trying to free a corrupt\n" "InnoDB: table handle. Magic n %lu, table name", (ulong) prebuilt->magic_n); - ut_print_name(stderr, prebuilt->trx, prebuilt->table->name); + ut_print_name(stderr, prebuilt->trx, TRUE, + prebuilt->table->name); putc('\n', stderr); mem_analyze_corruption(prebuilt); @@ -1329,7 +1330,8 @@ row_update_for_mysql( "InnoDB: Error: trying to free a corrupt\n" "InnoDB: table handle. Magic n %lu, table name", (ulong) prebuilt->magic_n); - ut_print_name(stderr, prebuilt->trx, prebuilt->table->name); + ut_print_name(stderr, prebuilt->trx, TRUE, + prebuilt->table->name); putc('\n', stderr); mem_analyze_corruption(prebuilt); @@ -1941,7 +1943,7 @@ row_create_table_for_mysql( fputs(" InnoDB: Warning: cannot create table ", stderr); - ut_print_name(stderr, trx, table->name); + ut_print_name(stderr, trx, TRUE, table->name); fputs(" because tablespace full\n", stderr); if (dict_table_get_low(table->name)) { @@ -1954,7 +1956,7 @@ row_create_table_for_mysql( ut_print_timestamp(stderr); fputs(" InnoDB: Error: table ", stderr); - ut_print_name(stderr, trx, table->name); + ut_print_name(stderr, trx, TRUE, table->name); fputs(" already exists in InnoDB internal\n" "InnoDB: data dictionary. Have you deleted the .frm file\n" "InnoDB: and not used DROP TABLE? Have you used DROP DATABASE\n" @@ -2031,7 +2033,7 @@ row_create_index_for_mysql( ut_print_timestamp(stderr); fputs(" InnoDB: Error: column ", stderr); - ut_print_name(stderr, trx, + ut_print_name(stderr, trx, FALSE, dict_index_get_nth_field(index, i)->name); fputs(" appears twice in ", stderr); dict_index_name_print(stderr, trx, index); @@ -2196,7 +2198,7 @@ row_drop_table_for_mysql_in_background( trx->check_foreigns = FALSE; /* fputs("InnoDB: Error: Dropping table ", stderr); - ut_print_name(stderr, name); + ut_print_name(stderr, trx, TRUE, name); fputs(" in background drop list\n", stderr); */ /* Try to drop the table in InnoDB */ @@ -2360,7 +2362,7 @@ row_add_table_to_background_drop_list( UT_LIST_ADD_LAST(row_mysql_drop_list, row_mysql_drop_list, drop); /* fputs("InnoDB: Adding table ", stderr); - ut_print_name(stderr, drop->table_name); + ut_print_name(stderr, trx, TRUE, drop->table_name); fputs(" to background drop list\n", stderr); */ mutex_exit(&kernel_mutex); @@ -2429,7 +2431,7 @@ do not allow the discard. We also reserve the data dictionary latch. */ if (table->space == 0) { ut_print_timestamp(stderr); fputs(" InnoDB: Error: table ", stderr); - ut_print_name(stderr, trx, name); + ut_print_name(stderr, trx, TRUE, name); fputs("\n" "InnoDB: is in the system tablespace 0 which cannot be discarded\n", stderr); err = DB_ERROR; @@ -2441,7 +2443,7 @@ do not allow the discard. We also reserve the data dictionary latch. */ ut_print_timestamp(stderr); fputs(" InnoDB: You are trying to DISCARD table ", stderr); - ut_print_name(stderr, trx, table->name); + ut_print_name(stderr, trx, TRUE, table->name); fputs("\n" "InnoDB: though there is a foreign key check running on it.\n" "InnoDB: Cannot discard the table.\n", @@ -2475,10 +2477,10 @@ do not allow the discard. We also reserve the data dictionary latch. */ ut_print_timestamp(ef); fputs(" Cannot DISCARD table ", ef); - ut_print_name(ef, trx, name); + ut_print_name(ef, trx, TRUE, name); fputs("\n" "because it is referenced by ", ef); - ut_print_name(ef, trx, foreign->foreign_table_name); + ut_print_name(ef, trx, TRUE, foreign->foreign_table_name); putc('\n', ef); mutex_exit(&dict_foreign_err_mutex); @@ -2540,10 +2542,10 @@ do not allow the discard. We also reserve the data dictionary latch. */ } funct_exit: - row_mysql_unlock_data_dictionary(trx); - trx_commit_for_mysql(trx); + row_mysql_unlock_data_dictionary(trx); + trx->op_info = ""; return((int) err); @@ -2590,7 +2592,7 @@ row_import_tablespace_for_mysql( if (!success) { ut_print_timestamp(stderr); fputs(" InnoDB: Error: cannot reset lsn's in table ", stderr); - ut_print_name(stderr, trx, name); + ut_print_name(stderr, trx, TRUE, name); fputs("\n" "InnoDB: in ALTER TABLE ... IMPORT TABLESPACE\n", stderr); @@ -2611,7 +2613,7 @@ row_import_tablespace_for_mysql( if (!table) { ut_print_timestamp(stderr); fputs(" InnoDB: table ", stderr); - ut_print_name(stderr, trx, name); + ut_print_name(stderr, trx, TRUE, name); fputs("\n" "InnoDB: does not exist in the InnoDB data dictionary\n" "InnoDB: in ALTER TABLE ... IMPORT TABLESPACE\n", @@ -2625,7 +2627,7 @@ row_import_tablespace_for_mysql( if (table->space == 0) { ut_print_timestamp(stderr); fputs(" InnoDB: Error: table ", stderr); - ut_print_name(stderr, trx, name); + ut_print_name(stderr, trx, TRUE, name); fputs("\n" "InnoDB: is in the system tablespace 0 which cannot be imported\n", stderr); err = DB_ERROR; @@ -2638,7 +2640,7 @@ row_import_tablespace_for_mysql( fputs( " InnoDB: Error: you are trying to IMPORT a tablespace\n" "InnoDB: ", stderr); - ut_print_name(stderr, trx, name); + ut_print_name(stderr, trx, TRUE, name); fputs(", though you have not called DISCARD on it yet\n" "InnoDB: during the lifetime of the mysqld process!\n", stderr); @@ -2663,7 +2665,7 @@ row_import_tablespace_for_mysql( fputs( " InnoDB: cannot find or open in the database directory the .ibd file of\n" "InnoDB: table ", stderr); - ut_print_name(stderr, trx, name); + ut_print_name(stderr, trx, TRUE, name); fputs("\n" "InnoDB: in ALTER TABLE ... IMPORT TABLESPACE\n", stderr); @@ -2673,10 +2675,10 @@ row_import_tablespace_for_mysql( } funct_exit: - row_mysql_unlock_data_dictionary(trx); - trx_commit_for_mysql(trx); + row_mysql_unlock_data_dictionary(trx); + trx->op_info = ""; return((int) err); @@ -2783,10 +2785,10 @@ do not allow the TRUNCATE. We also reserve the data dictionary latch. */ ut_print_timestamp(ef); fputs(" Cannot truncate table ", ef); - ut_print_name(ef, trx, table->name); + ut_print_name(ef, trx, TRUE, table->name); fputs(" by DROP+CREATE\n" "InnoDB: because it is referenced by ", ef); - ut_print_name(ef, trx, foreign->foreign_table_name); + ut_print_name(ef, trx, TRUE, foreign->foreign_table_name); putc('\n', ef); mutex_exit(&dict_foreign_err_mutex); @@ -2803,7 +2805,7 @@ do not allow the TRUNCATE. We also reserve the data dictionary latch. */ if (table->n_foreign_key_checks_running > 0) { ut_print_timestamp(stderr); fputs(" InnoDB: Cannot truncate table ", stderr); - ut_print_name(stderr, trx, table->name); + ut_print_name(stderr, trx, TRUE, table->name); fputs(" by DROP+CREATE\n" "InnoDB: because there is a foreign key check running on it.\n", stderr); @@ -2918,7 +2920,7 @@ do not allow the TRUNCATE. We also reserve the data dictionary latch. */ trx->error_state = DB_SUCCESS; ut_print_timestamp(stderr); fputs(" InnoDB: Unable to assign a new identifier to table ", stderr); - ut_print_name(stderr, trx, table->name); + ut_print_name(stderr, trx, TRUE, table->name); fputs("\n" "InnoDB: after truncating it. Background processes may corrupt the table!\n", stderr); @@ -3045,7 +3047,7 @@ row_drop_table_for_mysql( ut_print_timestamp(stderr); fputs(" InnoDB: Error: table ", stderr); - ut_print_name(stderr, trx, name); + ut_print_name(stderr, trx, TRUE, name); fputs(" does not exist in the InnoDB internal\n" "InnoDB: data dictionary though MySQL is trying to drop it.\n" "InnoDB: Have you copied the .frm file of the table to the\n" @@ -3081,10 +3083,10 @@ row_drop_table_for_mysql( ut_print_timestamp(ef); fputs(" Cannot drop table ", ef); - ut_print_name(ef, trx, name); + ut_print_name(ef, trx, TRUE, name); fputs("\n" "because it is referenced by ", ef); - ut_print_name(ef, trx, foreign->foreign_table_name); + ut_print_name(ef, trx, TRUE, foreign->foreign_table_name); putc('\n', ef); mutex_exit(&dict_foreign_err_mutex); @@ -3103,7 +3105,7 @@ row_drop_table_for_mysql( if (added) { ut_print_timestamp(stderr); fputs(" InnoDB: Warning: MySQL is trying to drop table ", stderr); - ut_print_name(stderr, trx, table->name); + ut_print_name(stderr, trx, TRUE, table->name); fputs("\n" "InnoDB: though there are still open handles to it.\n" "InnoDB: Adding the table to the background drop queue.\n", @@ -3136,7 +3138,7 @@ fputs(" InnoDB: Warning: MySQL is trying to drop table ", stderr); if (added) { ut_print_timestamp(stderr); fputs(" InnoDB: You are trying to drop table ", stderr); - ut_print_name(stderr, trx, table->name); + ut_print_name(stderr, trx, TRUE, table->name); fputs("\n" "InnoDB: though there is a foreign key check running on it.\n" "InnoDB: Adding the table to the background drop queue.\n", @@ -3259,7 +3261,7 @@ fputs(" InnoDB: You are trying to drop table ", stderr); ut_print_timestamp(stderr); fputs(" InnoDB: Error: not able to remove table ", stderr); - ut_print_name(stderr, trx, name); + ut_print_name(stderr, trx, TRUE, name); fputs(" from the dictionary cache!\n", stderr); err = DB_ERROR; } @@ -3277,7 +3279,7 @@ fputs(" InnoDB: You are trying to drop table ", stderr); fprintf(stderr, "InnoDB: We removed now the InnoDB internal data dictionary entry\n" "InnoDB: of table "); - ut_print_name(stderr, trx, name); + ut_print_name(stderr, trx, TRUE, name); fprintf(stderr, ".\n"); goto funct_exit; @@ -3289,14 +3291,14 @@ fputs(" InnoDB: You are trying to drop table ", stderr); fprintf(stderr, "InnoDB: We removed now the InnoDB internal data dictionary entry\n" "InnoDB: of table "); - ut_print_name(stderr, trx, name); + ut_print_name(stderr, trx, TRUE, name); fprintf(stderr, ".\n"); ut_print_timestamp(stderr); fprintf(stderr, " InnoDB: Error: not able to delete tablespace %lu of table ", (ulong) space_id); - ut_print_name(stderr, trx, name); + ut_print_name(stderr, trx, TRUE, name); fputs("!\n", stderr); err = DB_ERROR; } @@ -3304,6 +3306,8 @@ fputs(" InnoDB: You are trying to drop table ", stderr); } funct_exit: + trx_commit_for_mysql(trx); + if (locked_dictionary) { row_mysql_unlock_data_dictionary(trx); } @@ -3312,8 +3316,6 @@ funct_exit: mem_free(dir_path_of_temp_table); } - trx_commit_for_mysql(trx); - trx->op_info = ""; #ifndef UNIV_HOTBACKUP @@ -3364,10 +3366,10 @@ loop: ut_print_timestamp(stderr); fputs( " InnoDB: Warning: MySQL is trying to drop database ", stderr); - ut_print_name(stderr, trx, name); + ut_print_name(stderr, trx, TRUE, name); fputs("\n" "InnoDB: though there are still open handles to table ", stderr); - ut_print_name(stderr, trx, table_name); + ut_print_name(stderr, trx, TRUE, table_name); fputs(".\n", stderr); os_thread_sleep(1000000); @@ -3383,19 +3385,19 @@ loop: if (err != DB_SUCCESS) { fputs("InnoDB: DROP DATABASE ", stderr); - ut_print_name(stderr, trx, name); + ut_print_name(stderr, trx, TRUE, name); fprintf(stderr, " failed with error %lu for table ", (ulint) err); - ut_print_name(stderr, trx, table_name); + ut_print_name(stderr, trx, TRUE, table_name); putc('\n', stderr); break; } } - row_mysql_unlock_data_dictionary(trx); - trx_commit_for_mysql(trx); + row_mysql_unlock_data_dictionary(trx); + trx->op_info = ""; return(err); @@ -3543,7 +3545,7 @@ row_rename_table_for_mysql( ut_print_timestamp(stderr); fputs(" InnoDB: Error: table ", stderr); - ut_print_name(stderr, trx, old_name); + ut_print_name(stderr, trx, TRUE, old_name); fputs(" does not exist in the InnoDB internal\n" "InnoDB: data dictionary though MySQL is trying to rename the table.\n" "InnoDB: Have you copied the .frm file of the table to the\n" @@ -3559,7 +3561,7 @@ row_rename_table_for_mysql( ut_print_timestamp(stderr); fputs(" InnoDB: Error: table ", stderr); - ut_print_name(stderr, trx, old_name); + ut_print_name(stderr, trx, TRUE, old_name); fputs( " does not have an .ibd file in the database directory.\n" "InnoDB: You can look for further help from\n" @@ -3704,17 +3706,17 @@ end: "InnoDB: 1) Table rename would cause two FOREIGN KEY constraints\n" "InnoDB: to have the same internal name in case-insensitive comparison.\n" "InnoDB: 2) table ", stderr); - ut_print_name(stderr, trx, new_name); + ut_print_name(stderr, trx, TRUE, new_name); fputs(" exists in the InnoDB internal data\n" "InnoDB: dictionary though MySQL is trying rename table ", stderr); - ut_print_name(stderr, trx, old_name); + ut_print_name(stderr, trx, TRUE, old_name); fputs(" to it.\n" "InnoDB: Have you deleted the .frm file and not used DROP TABLE?\n" "InnoDB: You can look for further help from\n" "InnoDB: http://dev.mysql.com/doc/mysql/en/" "InnoDB_troubleshooting_datadict.html\n" "InnoDB: If table ", stderr); - ut_print_name(stderr, trx, new_name); + ut_print_name(stderr, trx, TRUE, new_name); fputs( " is a temporary table #sql..., then it can be that\n" "InnoDB: there are still queries running on the table, and it will be\n" @@ -3742,9 +3744,9 @@ end: ut_print_timestamp(stderr); fputs(" InnoDB: Error in table rename, cannot rename ", stderr); - ut_print_name(stderr, trx, old_name); + ut_print_name(stderr, trx, TRUE, old_name); fputs(" to ", stderr); - ut_print_name(stderr, trx, new_name); + ut_print_name(stderr, trx, TRUE, new_name); putc('\n', stderr); err = DB_ERROR; @@ -3763,7 +3765,7 @@ end: if (old_is_tmp) { fputs(" InnoDB: Error: in ALTER TABLE ", stderr); - ut_print_name(stderr, trx, new_name); + ut_print_name(stderr, trx, TRUE, new_name); fputs("\n" "InnoDB: has or is referenced in foreign key constraints\n" "InnoDB: which are not compatible with the new table definition.\n", @@ -3772,7 +3774,7 @@ end: fputs( " InnoDB: Error: in RENAME TABLE table ", stderr); - ut_print_name(stderr, trx, new_name); + ut_print_name(stderr, trx, TRUE, new_name); fputs("\n" "InnoDB: is referenced in foreign key constraints\n" "InnoDB: which are not compatible with the new table definition.\n", @@ -3788,6 +3790,8 @@ end: } funct_exit: + trx_commit_for_mysql(trx); + if (!recovering_temp_table) { row_mysql_unlock_data_dictionary(trx); } @@ -3796,8 +3800,6 @@ funct_exit: mem_heap_free(heap); } - trx_commit_for_mysql(trx); - trx->op_info = ""; return((int) err); @@ -3986,7 +3988,7 @@ row_check_table_for_mysql( while (index != NULL) { /* fputs("Validating index ", stderr); - ut_print_name(stderr, index->name); + ut_print_name(stderr, trx, FALSE, index->name); putc('\n', stderr); */ if (!btr_validate_tree(index->tree, prebuilt->trx)) { diff --git a/storage/innobase/row/row0purge.c b/storage/innobase/row/row0purge.c index b7581fa3644..1ef24f8e957 100644 --- a/storage/innobase/row/row0purge.c +++ b/storage/innobase/row/row0purge.c @@ -520,7 +520,7 @@ row_purge_parse_undo_rec( mutex_enter(&(dict_sys->mutex)); - node->table = dict_table_get_on_id_low(table_id, trx); + node->table = dict_table_get_on_id_low(table_id); mutex_exit(&(dict_sys->mutex)); diff --git a/storage/innobase/row/row0row.c b/storage/innobase/row/row0row.c index 24464ab5b99..50ad462f4aa 100644 --- a/storage/innobase/row/row0row.c +++ b/storage/innobase/row/row0row.c @@ -480,12 +480,12 @@ row_build_row_ref_in_tuple( ut_a(ref && index && rec); - if (!index->table) { + if (UNIV_UNLIKELY(!index->table)) { fputs("InnoDB: table ", stderr); notfound: - ut_print_name(stderr, trx, index->table_name); + ut_print_name(stderr, trx, TRUE, index->table_name); fputs(" for index ", stderr); - ut_print_name(stderr, trx, index->name); + ut_print_name(stderr, trx, FALSE, index->name); fputs(" not found\n", stderr); ut_error; } diff --git a/storage/innobase/row/row0sel.c b/storage/innobase/row/row0sel.c index c0f906f4ed7..a3360bff952 100644 --- a/storage/innobase/row/row0sel.c +++ b/storage/innobase/row/row0sel.c @@ -302,19 +302,45 @@ row_sel_fetch_columns( } while (column) { + mem_heap_t* heap = NULL; + ibool needs_copy; + field_no = column->field_nos[index_type]; if (field_no != ULINT_UNDEFINED) { - data = rec_get_nth_field(rec, offsets, field_no, &len); + if (UNIV_UNLIKELY(rec_offs_nth_extern(offsets, + field_no))) { + + /* Copy an externally stored field to the + temporary heap */ + + heap = mem_heap_create(1); + + data = btr_rec_copy_externally_stored_field( + rec, offsets, field_no, &len, heap); + + ut_a(len != UNIV_SQL_NULL); - if (column->copy_val) { + needs_copy = TRUE; + } else { + data = rec_get_nth_field(rec, offsets, + field_no, &len); + + needs_copy = column->copy_val; + } + + if (needs_copy) { eval_node_copy_and_alloc_val(column, data, len); } else { val = que_node_get_val(column); dfield_set_data(val, data, len); } + + if (UNIV_LIKELY_NULL(heap)) { + mem_heap_free(heap); + } } column = UT_LIST_GET_NEXT(col_var_list, column); @@ -2036,8 +2062,13 @@ row_fetch_print( dtype_print(type); fprintf(stderr, "\n"); - ut_print_buf(stderr, dfield_get_data(dfield), - dfield_get_len(dfield)); + if (dfield_get_len(dfield) != UNIV_SQL_NULL) { + ut_print_buf(stderr, dfield_get_data(dfield), + dfield_get_len(dfield)); + } else { + fprintf(stderr, " ;"); + } + fprintf(stderr, "\n"); exp = que_node_get_next(exp); @@ -2542,6 +2573,7 @@ row_sel_store_mysql_rec( { mysql_row_templ_t* templ; mem_heap_t* extern_field_heap = NULL; + mem_heap_t* heap; byte* data; ulint len; ulint i; @@ -2558,9 +2590,6 @@ row_sel_store_mysql_rec( templ = prebuilt->mysql_template + i; - data = rec_get_nth_field(rec, offsets, - templ->rec_field_no, &len); - if (UNIV_UNLIKELY(rec_offs_nth_extern(offsets, templ->rec_field_no))) { @@ -2569,7 +2598,19 @@ row_sel_store_mysql_rec( ut_a(!prebuilt->trx->has_search_latch); - extern_field_heap = mem_heap_create(UNIV_PAGE_SIZE); + if (UNIV_UNLIKELY(templ->type == DATA_BLOB)) { + if (prebuilt->blob_heap == NULL) { + prebuilt->blob_heap = + mem_heap_create(UNIV_PAGE_SIZE); + } + + heap = prebuilt->blob_heap; + } else { + extern_field_heap = + mem_heap_create(UNIV_PAGE_SIZE); + + heap = extern_field_heap; + } /* NOTE: if we are retrieving a big BLOB, we may already run out of memory in the next call, which @@ -2577,54 +2618,17 @@ row_sel_store_mysql_rec( data = btr_rec_copy_externally_stored_field(rec, offsets, templ->rec_field_no, &len, - extern_field_heap); + heap); ut_a(len != UNIV_SQL_NULL); + } else { + /* Field is stored in the row. */ + + data = rec_get_nth_field(rec, offsets, + templ->rec_field_no, &len); } if (len != UNIV_SQL_NULL) { - if (UNIV_UNLIKELY(templ->type == DATA_BLOB)) { - - ut_a(prebuilt->templ_contains_blob); - - /* A heuristic test that we can allocate the - memory for a big BLOB. We have a safety margin - of 1000000 bytes. Since the test takes some - CPU time, we do not use it for small BLOBs. */ - - if (UNIV_UNLIKELY(len > 2000000) - && UNIV_UNLIKELY(!ut_test_malloc( - len + 1000000))) { - - ut_print_timestamp(stderr); - fprintf(stderr, -" InnoDB: Warning: could not allocate %lu + 1000000 bytes to retrieve\n" -"InnoDB: a big column. Table name ", (ulong) len); - ut_print_name(stderr, - prebuilt->trx, - prebuilt->table->name); - putc('\n', stderr); - - if (extern_field_heap) { - mem_heap_free( - extern_field_heap); - } - return(FALSE); - } - - /* Copy the BLOB data to the BLOB heap of - prebuilt */ - - if (prebuilt->blob_heap == NULL) { - prebuilt->blob_heap = - mem_heap_create(len); - } - - data = memcpy(mem_heap_alloc( - prebuilt->blob_heap, len), - data, len); - } - row_sel_field_store_in_mysql_format( mysql_rec + templ->mysql_col_offset, templ, data, len); @@ -3244,7 +3248,7 @@ row_search_for_mysql( "InnoDB: Error: trying to free a corrupt\n" "InnoDB: table handle. Magic n %lu, table name ", (ulong) prebuilt->magic_n); - ut_print_name(stderr, trx, prebuilt->table->name); + ut_print_name(stderr, trx, TRUE, prebuilt->table->name); putc('\n', stderr); mem_analyze_corruption(prebuilt); @@ -3530,15 +3534,13 @@ shortcut_fails_too_big_rec: if (trx->isolation_level <= TRX_ISO_READ_COMMITTED && prebuilt->select_lock_type != LOCK_NONE - && trx->mysql_query_str) { + && trx->mysql_query_str && trx->mysql_thd) { /* Scan the MySQL query string; check if SELECT is the first word there */ - ibool success; - dict_accept(*trx->mysql_query_str, "SELECT", &success); - - if (success) { + if (dict_str_starts_with_keyword(trx->mysql_thd, + *trx->mysql_query_str, "SELECT")) { /* It is a plain locking SELECT and the isolation level is low: do not lock gaps */ @@ -4402,7 +4404,7 @@ row_search_check_if_query_cache_permitted( dict_table_t* table; ibool ret = FALSE; - table = dict_table_get(norm_name, trx); + table = dict_table_get(norm_name); if (table == NULL) { diff --git a/storage/innobase/row/row0upd.c b/storage/innobase/row/row0upd.c index 4023283a60c..7be2fb17a07 100644 --- a/storage/innobase/row/row0upd.c +++ b/storage/innobase/row/row0upd.c @@ -202,8 +202,7 @@ row_upd_check_references_constraints( foreign->n_fields))) { if (foreign->foreign_table == NULL) { - dict_table_get(foreign->foreign_table_name, - trx); + dict_table_get(foreign->foreign_table_name); } if (foreign->foreign_table) { diff --git a/storage/innobase/srv/srv0srv.c b/storage/innobase/srv/srv0srv.c index 83cdcaa271b..c7bff806674 100644 --- a/storage/innobase/srv/srv0srv.c +++ b/storage/innobase/srv/srv0srv.c @@ -68,6 +68,9 @@ ibool srv_error_monitor_active = FALSE; const char* srv_main_thread_op_info = ""; +/* Prefix used by MySQL to indicate pre-5.1 table name encoding */ +const char srv_mysql50_table_name_prefix[9] = "#mysql50#"; + /* Server parameters which are read from the initfile */ /* The following three are dir paths which are catenated before file @@ -849,11 +852,9 @@ srv_init(void) srv_sys = mem_alloc(sizeof(srv_sys_t)); kernel_mutex_temp = mem_alloc(sizeof(mutex_t)); - mutex_create(&kernel_mutex); - mutex_set_level(&kernel_mutex, SYNC_KERNEL); + mutex_create(&kernel_mutex, SYNC_KERNEL); - mutex_create(&srv_innodb_monitor_mutex); - mutex_set_level(&srv_innodb_monitor_mutex, SYNC_NO_ORDER_CHECK); + mutex_create(&srv_innodb_monitor_mutex, SYNC_NO_ORDER_CHECK); srv_sys->threads = mem_alloc(OS_THREAD_MAX_N * sizeof(srv_slot_t)); @@ -2559,18 +2560,9 @@ suspend_thread: os_thread_exit(NULL); } - /* When there is user activity, InnoDB will set the event and the main - thread goes back to loop: */ + /* When there is user activity, InnoDB will set the event and the + main thread goes back to loop. */ goto loop; - - /* We count the number of threads in os_thread_exit(). A created - thread should always use that to exit and not use return() to exit. - The thread actually never comes here because it is exited in an - os_event_wait(). */ - - os_thread_exit(NULL); - - OS_THREAD_DUMMY_RETURN; } #endif /* !UNIV_HOTBACKUP */ diff --git a/storage/innobase/srv/srv0start.c b/storage/innobase/srv/srv0start.c index da2deac123d..205b54004ce 100644 --- a/storage/innobase/srv/srv0start.c +++ b/storage/innobase/srv/srv0start.c @@ -108,12 +108,45 @@ static char* srv_monitor_file_name; static int inno_bcmp(register const char *s1, register const char *s2, register uint len) { - while (len-- != 0 && *s1++ == *s2++) ; - return len+1; + while ((len-- != 0) && (*s1++ == *s2++)) + ; + + return(len + 1); } #define memcmp(A,B,C) inno_bcmp((A),(B),(C)) #endif +static +char* +srv_parse_megabytes( +/*================*/ + /* out: next character in string */ + char* str, /* in: string containing a quantity in bytes */ + ulint* megs) /* out: the number in megabytes */ +{ + char* endp; + ulint size; + + size = strtoul(str, &endp, 10); + + str = endp; + + switch (*str) { + case 'G': case 'g': + size *= 1024; + /* fall through */ + case 'M': case 'm': + str++; + break; + default: + size /= 1024 * 1024; + break; + } + + *megs = size; + return(str); +} + /************************************************************************* Reads the data files and their sizes from a character string given in the .cnf file. */ @@ -138,7 +171,6 @@ srv_parse_data_file_paths_and_sizes( last file if specified, 0 if not */ { char* input_str; - char* endp; char* path; ulint size; ulint i = 0; @@ -168,18 +200,7 @@ srv_parse_data_file_paths_and_sizes( str++; - size = strtoul(str, &endp, 10); - - str = endp; - - if (*str != 'M' && *str != 'G') { - size = size / (1024 * 1024); - } else if (*str == 'G') { - size = size * 1024; - str++; - } else { - str++; - } + str = srv_parse_megabytes(str, &size); if (0 == memcmp(str, ":autoextend", (sizeof ":autoextend") - 1)) { @@ -189,18 +210,7 @@ srv_parse_data_file_paths_and_sizes( str += (sizeof ":max:") - 1; - size = strtoul(str, &endp, 10); - - str = endp; - - if (*str != 'M' && *str != 'G') { - size = size / (1024 * 1024); - } else if (*str == 'G') { - size = size * 1024; - str++; - } else { - str++; - } + str = srv_parse_megabytes(str, &size); } if (*str != '\0') { @@ -273,18 +283,7 @@ srv_parse_data_file_paths_and_sizes( str++; } - size = strtoul(str, &endp, 10); - - str = endp; - - if ((*str != 'M') && (*str != 'G')) { - size = size / (1024 * 1024); - } else if (*str == 'G') { - size = size * 1024; - str++; - } else { - str++; - } + str = srv_parse_megabytes(str, &size); (*data_file_names)[i] = path; (*data_file_sizes)[i] = size; @@ -299,20 +298,8 @@ srv_parse_data_file_paths_and_sizes( str += (sizeof ":max:") - 1; - size = strtoul(str, &endp, 10); - - str = endp; - - if (*str != 'M' && *str != 'G') { - size = size / (1024 * 1024); - } else if (*str == 'G') { - size = size * 1024; - str++; - } else { - str++; - } - - *max_auto_extend_size = size; + str = srv_parse_megabytes(str, + max_auto_extend_size); } if (*str != '\0') { @@ -934,8 +921,7 @@ skip_size_check: ios = 0; - mutex_create(&ios_mutex); - mutex_set_level(&ios_mutex, SYNC_NO_ORDER_CHECK); + mutex_create(&ios_mutex, SYNC_NO_ORDER_CHECK); return(DB_SUCCESS); } @@ -1167,8 +1153,8 @@ NetWare. */ return((int) err); } - mutex_create(&srv_monitor_file_mutex); - mutex_set_level(&srv_monitor_file_mutex, SYNC_NO_ORDER_CHECK); + mutex_create(&srv_monitor_file_mutex, SYNC_NO_ORDER_CHECK); + if (srv_innodb_status) { srv_monitor_file_name = mem_alloc( strlen(fil_path_to_mysql_datadir) + @@ -1189,15 +1175,15 @@ NetWare. */ } } - mutex_create(&srv_dict_tmpfile_mutex); - mutex_set_level(&srv_dict_tmpfile_mutex, SYNC_DICT_OPERATION); + mutex_create(&srv_dict_tmpfile_mutex, SYNC_DICT_OPERATION); + srv_dict_tmpfile = os_file_create_tmpfile(); if (!srv_dict_tmpfile) { return(DB_ERROR); } - mutex_create(&srv_misc_tmpfile_mutex); - mutex_set_level(&srv_misc_tmpfile_mutex, SYNC_ANY_LATCH); + mutex_create(&srv_misc_tmpfile_mutex, SYNC_ANY_LATCH); + srv_misc_tmpfile = os_file_create_tmpfile(); if (!srv_misc_tmpfile) { return(DB_ERROR); diff --git a/storage/innobase/sync/sync0arr.c b/storage/innobase/sync/sync0arr.c index fb7ec4cc78b..81986cdfd33 100644 --- a/storage/innobase/sync/sync0arr.c +++ b/storage/innobase/sync/sync0arr.c @@ -213,8 +213,7 @@ sync_array_create( if (protection == SYNC_ARRAY_OS_MUTEX) { arr->os_mutex = os_mutex_create(NULL); } else if (protection == SYNC_ARRAY_MUTEX) { - mutex_create(&(arr->mutex)); - mutex_set_level(&(arr->mutex), SYNC_NO_ORDER_CHECK); + mutex_create(&arr->mutex, SYNC_NO_ORDER_CHECK); } else { ut_error; } diff --git a/storage/innobase/sync/sync0rw.c b/storage/innobase/sync/sync0rw.c index 673e1080d89..ffc2633b467 100644 --- a/storage/innobase/sync/sync0rw.c +++ b/storage/innobase/sync/sync0rw.c @@ -89,19 +89,19 @@ void rw_lock_create_func( /*================*/ rw_lock_t* lock, /* in: pointer to memory */ + ulint level, /* in: level */ const char* cfile_name, /* in: file name where created */ - ulint cline, /* in: file line where created */ - const char* cmutex_name) /* in: mutex name */ + ulint cline, /* in: file line where created */ + const char* cmutex_name) /* in: mutex name */ { - /* If this is the very first time a synchronization - object is created, then the following call initializes - the sync system. */ + /* If this is the very first time a synchronization object is + created, then the following call initializes the sync system. */ - mutex_create(rw_lock_get_mutex(lock)); - mutex_set_level(rw_lock_get_mutex(lock), SYNC_NO_ORDER_CHECK); + mutex_create(rw_lock_get_mutex(lock), SYNC_NO_ORDER_CHECK); lock->mutex.cfile_name = cfile_name; lock->mutex.cline = cline; + #ifndef UNIV_HOTBACKUP lock->mutex.cmutex_name = cmutex_name; lock->mutex.mutex_type = 1; @@ -116,9 +116,10 @@ rw_lock_create_func( #ifdef UNIV_SYNC_DEBUG UT_LIST_INIT(lock->debug_list); - - lock->level = SYNC_LEVEL_NONE; #endif /* UNIV_SYNC_DEBUG */ + + lock->level = level; + lock->magic_n = RW_LOCK_MAGIC_N; lock->cfile_name = cfile_name; @@ -669,18 +670,6 @@ rw_lock_remove_debug_info( } #endif /* UNIV_SYNC_DEBUG */ -/********************************************************************** -Sets the rw-lock latching level field. */ - -void -rw_lock_set_level( -/*==============*/ - rw_lock_t* lock, /* in: rw-lock */ - ulint level) /* in: level */ -{ - lock->level = level; -} - #ifdef UNIV_SYNC_DEBUG /********************************************************************** Checks if the thread has locked the rw-lock in the specified mode, with diff --git a/storage/innobase/sync/sync0sync.c b/storage/innobase/sync/sync0sync.c index 6354830df70..04f03e89ec5 100644 --- a/storage/innobase/sync/sync0sync.c +++ b/storage/innobase/sync/sync0sync.c @@ -202,6 +202,7 @@ void mutex_create_func( /*==============*/ mutex_t* mutex, /* in: pointer to memory */ + ulint level, /* in: level */ const char* cfile_name, /* in: file name where created */ ulint cline, /* in: file line where created */ const char* cmutex_name) /* in: mutex name */ @@ -218,7 +219,7 @@ mutex_create_func( mutex->line = 0; mutex->file_name = "not yet reserved"; #endif /* UNIV_SYNC_DEBUG */ - mutex->level = SYNC_LEVEL_NONE; + mutex->level = level; mutex->cfile_name = cfile_name; mutex->cline = cline; #ifndef UNIV_HOTBACKUP @@ -598,19 +599,6 @@ mutex_get_debug_info( } #endif /* UNIV_SYNC_DEBUG */ -/********************************************************************** -Sets the mutex latching level field. */ - -void -mutex_set_level( -/*============*/ - mutex_t* mutex, /* in: mutex */ - ulint level) /* in: level */ -{ - mutex->level = level; -} - - #ifdef UNIV_SYNC_DEBUG /********************************************************************** Checks that the current thread owns the mutex. Works only in the debug @@ -979,8 +967,8 @@ void sync_thread_add_level( /*==================*/ void* latch, /* in: pointer to a mutex or an rw-lock */ - ulint level) /* in: level in the latching order; if SYNC_LEVEL_NONE, - nothing is done */ + ulint level) /* in: level in the latching order; if + SYNC_LEVEL_VARYING, nothing is done */ { sync_level_t* array; sync_level_t* slot; @@ -1002,7 +990,7 @@ sync_thread_add_level( return; } - if (level == SYNC_LEVEL_NONE) { + if (level == SYNC_LEVEL_VARYING) { return; } @@ -1050,6 +1038,9 @@ sync_thread_add_level( case SYNC_RECV: ut_a(sync_thread_levels_g(array, SYNC_RECV)); break; + case SYNC_WORK_QUEUE: + ut_a(sync_thread_levels_g(array, SYNC_WORK_QUEUE)); + break; case SYNC_LOG: ut_a(sync_thread_levels_g(array, SYNC_LOG)); break; @@ -1290,21 +1281,17 @@ sync_init(void) /* Init the mutex list and create the mutex to protect it. */ UT_LIST_INIT(mutex_list); - mutex_create(&mutex_list_mutex); - mutex_set_level(&mutex_list_mutex, SYNC_NO_ORDER_CHECK); + mutex_create(&mutex_list_mutex, SYNC_NO_ORDER_CHECK); - mutex_create(&sync_thread_mutex); - mutex_set_level(&sync_thread_mutex, SYNC_NO_ORDER_CHECK); + mutex_create(&sync_thread_mutex, SYNC_NO_ORDER_CHECK); /* Init the rw-lock list and create the mutex to protect it. */ UT_LIST_INIT(rw_lock_list); - mutex_create(&rw_lock_list_mutex); - mutex_set_level(&rw_lock_list_mutex, SYNC_NO_ORDER_CHECK); + mutex_create(&rw_lock_list_mutex, SYNC_NO_ORDER_CHECK); #ifdef UNIV_SYNC_DEBUG - mutex_create(&rw_lock_debug_mutex); - mutex_set_level(&rw_lock_debug_mutex, SYNC_NO_ORDER_CHECK); + mutex_create(&rw_lock_debug_mutex, SYNC_NO_ORDER_CHECK); rw_lock_debug_event = os_event_create(NULL); rw_lock_debug_waiters = FALSE; diff --git a/storage/innobase/thr/thr0loc.c b/storage/innobase/thr/thr0loc.c index 2a7a6c1c21f..c63520e8a07 100644 --- a/storage/innobase/thr/thr0loc.c +++ b/storage/innobase/thr/thr0loc.c @@ -226,6 +226,5 @@ thr_local_init(void) thr_local_hash = hash_create(OS_THREAD_MAX_N + 100); - mutex_create(&thr_local_mutex); - mutex_set_level(&thr_local_mutex, SYNC_THR_LOCAL); + mutex_create(&thr_local_mutex, SYNC_THR_LOCAL); } diff --git a/storage/innobase/trx/trx0purge.c b/storage/innobase/trx/trx0purge.c index be949079f80..79f38b1ee52 100644 --- a/storage/innobase/trx/trx0purge.c +++ b/storage/innobase/trx/trx0purge.c @@ -211,11 +211,9 @@ trx_purge_sys_create(void) purge_sys->purge_undo_no = ut_dulint_zero; purge_sys->next_stored = FALSE; - rw_lock_create(&(purge_sys->latch)); - rw_lock_set_level(&(purge_sys->latch), SYNC_PURGE_LATCH); + rw_lock_create(&purge_sys->latch, SYNC_PURGE_LATCH); - mutex_create(&(purge_sys->mutex)); - mutex_set_level(&(purge_sys->mutex), SYNC_PURGE_SYS); + mutex_create(&purge_sys->mutex, SYNC_PURGE_SYS); purge_sys->heap = mem_heap_create(256); diff --git a/storage/innobase/trx/trx0rec.c b/storage/innobase/trx/trx0rec.c index d8a5cce22e9..55723df48c5 100644 --- a/storage/innobase/trx/trx0rec.c +++ b/storage/innobase/trx/trx0rec.c @@ -843,7 +843,7 @@ trx_undo_update_rec_get_update( "InnoDB: Submit a detailed bug report to http://bugs.mysql.com\n" "InnoDB: Run also CHECK TABLE ", (ulong) dict_index_get_n_fields(index)); - ut_print_name(stderr, trx, index->table_name); + ut_print_name(stderr, trx, TRUE, index->table_name); fprintf(stderr, "\n" "InnoDB: n_fields = %lu, i = %lu, ptr %p\n", (ulong) n_fields, (ulong) i, ptr); diff --git a/storage/innobase/trx/trx0roll.c b/storage/innobase/trx/trx0roll.c index af74cfe9032..2e7a5aa7b68 100644 --- a/storage/innobase/trx/trx0roll.c +++ b/storage/innobase/trx/trx0roll.c @@ -241,7 +241,7 @@ trx_rollback_to_savepoint_for_mysql( if (trx->conc_state == TRX_NOT_STARTED) { ut_print_timestamp(stderr); fputs(" InnoDB: Error: transaction has a savepoint ", stderr); - ut_print_name(stderr, trx, savep->name); + ut_print_name(stderr, trx, FALSE, savep->name); fputs(" though it is not started\n", stderr); return(DB_ERROR); } @@ -540,11 +540,11 @@ loop: (ulong) ut_dulint_get_high(trx->table_id), (ulong) ut_dulint_get_low(trx->table_id)); - table = dict_table_get_on_id_low(trx->table_id, trx); + table = dict_table_get_on_id_low(trx->table_id); if (table) { fputs("InnoDB: Table found: dropping table ", stderr); - ut_print_name(stderr, trx, table->name); + ut_print_name(stderr, trx, TRUE, table->name); fputs(" in recovery\n", stderr); err = row_drop_table_for_mysql(table->name, trx, TRUE); diff --git a/storage/innobase/trx/trx0rseg.c b/storage/innobase/trx/trx0rseg.c index f396666e7c9..5136174d110 100644 --- a/storage/innobase/trx/trx0rseg.c +++ b/storage/innobase/trx/trx0rseg.c @@ -147,8 +147,7 @@ trx_rseg_mem_create( rseg->space = space; rseg->page_no = page_no; - mutex_create(&(rseg->mutex)); - mutex_set_level(&(rseg->mutex), SYNC_RSEG); + mutex_create(&rseg->mutex, SYNC_RSEG); UT_LIST_ADD_LAST(rseg_list, trx_sys->rseg_list, rseg); diff --git a/storage/innobase/trx/trx0sys.c b/storage/innobase/trx/trx0sys.c index bd1bceef7da..8f24a54208a 100644 --- a/storage/innobase/trx/trx0sys.c +++ b/storage/innobase/trx/trx0sys.c @@ -101,8 +101,7 @@ trx_doublewrite_init( os_do_not_call_flush_at_each_write = TRUE; #endif /* UNIV_DO_FLUSH */ - mutex_create(&(trx_doublewrite->mutex)); - mutex_set_level(&(trx_doublewrite->mutex), SYNC_DOUBLEWRITE); + mutex_create(&trx_doublewrite->mutex, SYNC_DOUBLEWRITE); trx_doublewrite->first_free = 0; diff --git a/storage/innobase/trx/trx0trx.c b/storage/innobase/trx/trx0trx.c index a3115e332cd..5f191f4599b 100644 --- a/storage/innobase/trx/trx0trx.c +++ b/storage/innobase/trx/trx0trx.c @@ -144,8 +144,7 @@ trx_create( trx->repl_wait_binlog_name = NULL; trx->repl_wait_binlog_pos = 0; - mutex_create(&(trx->undo_mutex)); - mutex_set_level(&(trx->undo_mutex), SYNC_TRX_UNDO); + mutex_create(&trx->undo_mutex, SYNC_TRX_UNDO); trx->rseg = NULL; diff --git a/storage/innobase/ut/Makefile.am b/storage/innobase/ut/Makefile.am index c833a6d5a4c..fa4eeb2e9c9 100644 --- a/storage/innobase/ut/Makefile.am +++ b/storage/innobase/ut/Makefile.am @@ -19,6 +19,6 @@ include ../include/Makefile.i noinst_LIBRARIES = libut.a -libut_a_SOURCES = ut0byte.c ut0dbg.c ut0mem.c ut0rnd.c ut0ut.c ut0vec.c +libut_a_SOURCES = ut0byte.c ut0dbg.c ut0mem.c ut0rnd.c ut0ut.c ut0vec.c ut0list.c ut0wqueue.c EXTRA_PROGRAMS = diff --git a/storage/innobase/ut/ut0dbg.c b/storage/innobase/ut/ut0dbg.c index 2157a71116a..a9391cd3adc 100644 --- a/storage/innobase/ut/ut0dbg.c +++ b/storage/innobase/ut/ut0dbg.c @@ -14,19 +14,21 @@ Created 1/30/1994 Heikki Tuuri ulint ut_dbg_zero = 0; #endif +#if defined(UNIV_SYNC_DEBUG) || !defined(UT_DBG_USE_ABORT) /* If this is set to TRUE all threads will stop into the next assertion and assert */ ibool ut_dbg_stop_threads = FALSE; +#endif #ifdef __NETWARE__ ibool panic_shutdown = FALSE; /* This is set to TRUE when on NetWare there happens an InnoDB assertion failure or other fatal error condition that requires an immediate shutdown. */ -#else /* __NETWARE__ */ +#elif !defined(UT_DBG_USE_ABORT) /* Null pointer used to generate memory trap */ ulint* ut_dbg_null_ptr = NULL; -#endif /* __NETWARE__ */ +#endif /***************************************************************** Report a failed assertion. */ @@ -56,7 +58,9 @@ ut_dbg_assertion_failed( "InnoDB: corruption in the InnoDB tablespace. Please refer to\n" "InnoDB: http://dev.mysql.com/doc/mysql/en/Forcing_recovery.html\n" "InnoDB: about forcing recovery.\n", stderr); +#if defined(UNIV_SYNC_DEBUG) || !defined(UT_DBG_USE_ABORT) ut_dbg_stop_threads = TRUE; +#endif } #ifdef __NETWARE__ @@ -74,6 +78,7 @@ ut_dbg_panic(void) exit(1); } #else /* __NETWARE__ */ +# if defined(UNIV_SYNC_DEBUG) || !defined(UT_DBG_USE_ABORT) /***************************************************************** Stop a thread after assertion failure. */ @@ -87,4 +92,5 @@ ut_dbg_stop_thread( os_thread_pf(os_thread_get_curr_id()), file, line); os_thread_sleep(1000000000); } +# endif #endif /* __NETWARE__ */ diff --git a/storage/innobase/ut/ut0list.c b/storage/innobase/ut/ut0list.c new file mode 100644 index 00000000000..a0db7ff7b55 --- /dev/null +++ b/storage/innobase/ut/ut0list.c @@ -0,0 +1,169 @@ +#include "ut0list.h" +#ifdef UNIV_NONINL +#include "ut0list.ic" +#endif + +/******************************************************************** +Create a new list. */ + +ib_list_t* +ib_list_create(void) +/*=================*/ + /* out: list */ +{ + ib_list_t* list = mem_alloc(sizeof(ib_list_t)); + + list->first = NULL; + list->last = NULL; + list->is_heap_list = FALSE; + + return(list); +} + +/******************************************************************** +Create a new list using the given heap. ib_list_free MUST NOT BE CALLED for +lists created with this function. */ + +ib_list_t* +ib_list_create_heap( +/*================*/ + /* out: list */ + mem_heap_t* heap) /* in: memory heap to use */ +{ + ib_list_t* list = mem_heap_alloc(heap, sizeof(ib_list_t)); + + list->first = NULL; + list->last = NULL; + list->is_heap_list = TRUE; + + return(list); +} + +/******************************************************************** +Free a list. */ + +void +ib_list_free( +/*=========*/ + ib_list_t* list) /* in: list */ +{ + ut_a(!list->is_heap_list); + + /* We don't check that the list is empty because it's entirely valid + to e.g. have all the nodes allocated from a single heap that is then + freed after the list itself is freed. */ + + mem_free(list); +} + +/******************************************************************** +Add the data to the start of the list. */ + +ib_list_node_t* +ib_list_add_first( +/*==============*/ + /* out: new list node*/ + ib_list_t* list, /* in: list */ + void* data, /* in: data */ + mem_heap_t* heap) /* in: memory heap to use */ +{ + return(ib_list_add_after(list, ib_list_get_first(list), data, heap)); +} + +/******************************************************************** +Add the data to the end of the list. */ + +ib_list_node_t* +ib_list_add_last( +/*=============*/ + /* out: new list node*/ + ib_list_t* list, /* in: list */ + void* data, /* in: data */ + mem_heap_t* heap) /* in: memory heap to use */ +{ + return(ib_list_add_after(list, ib_list_get_last(list), data, heap)); +} + +/******************************************************************** +Add the data after the indicated node. */ + +ib_list_node_t* +ib_list_add_after( +/*==============*/ + /* out: new list node*/ + ib_list_t* list, /* in: list */ + ib_list_node_t* prev_node, /* in: node preceding new node (can + be NULL) */ + void* data, /* in: data */ + mem_heap_t* heap) /* in: memory heap to use */ +{ + ib_list_node_t* node = mem_heap_alloc(heap, sizeof(ib_list_node_t)); + + node->data = data; + + if (!list->first) { + /* Empty list. */ + + ut_a(!prev_node); + + node->prev = NULL; + node->next = NULL; + + list->first = node; + list->last = node; + } else if (!prev_node) { + /* Start of list. */ + + node->prev = NULL; + node->next = list->first; + + list->first->prev = node; + + list->first = node; + } else { + /* Middle or end of list. */ + + node->prev = prev_node; + node->next = prev_node->next; + + prev_node->next = node; + + if (node->next) { + node->next->prev = node; + } else { + list->last = node; + } + } + + return(node); +} + +/******************************************************************** +Remove the node from the list. */ + +void +ib_list_remove( +/*===========*/ + ib_list_t* list, /* in: list */ + ib_list_node_t* node) /* in: node to remove */ +{ + if (node->prev) { + node->prev->next = node->next; + } else { + /* First item in list. */ + + ut_ad(list->first == node); + + list->first = node->next; + } + + if (node->next) { + node->next->prev = node->prev; + } else { + /* Last item in list. */ + + ut_ad(list->last == node); + + list->last = node->prev; + } +} diff --git a/storage/innobase/ut/ut0ut.c b/storage/innobase/ut/ut0ut.c index 48435fe6155..6d81c113e42 100644 --- a/storage/innobase/ut/ut0ut.c +++ b/storage/innobase/ut/ut0ut.c @@ -20,18 +20,20 @@ Created 5/11/1994 Heikki Tuuri ibool ut_always_false = FALSE; +#ifndef UNIV_HOTBACKUP /********************************************************************* -Get the quote character to be used in SQL identifiers. +Display an SQL identifier. This definition must match the one in sql/ha_innodb.cc! */ extern -int -mysql_get_identifier_quote_char( -/*============================*/ - /* out: quote character to be - used in SQL identifiers; EOF if none */ +void +innobase_print_identifier( +/*======================*/ + FILE* f, /* in: output stream */ trx_t* trx, /* in: transaction */ + ibool table_id,/* in: TRUE=decode table name */ const char* name, /* in: name to print */ ulint namelen);/* in: length of name */ +#endif /* !UNIV_HOTBACKUP */ /************************************************************ Gets the high 32 bits in a ulint. That is makes a shift >> 32, @@ -398,9 +400,10 @@ ut_print_name( /*==========*/ FILE* f, /* in: output stream */ trx_t* trx, /* in: transaction */ + ibool table_id,/* in: TRUE=decode table name */ const char* name) /* in: name to print */ { - ut_print_namel(f, trx, name, strlen(name)); + ut_print_namel(f, trx, table_id, name, strlen(name)); } /************************************************************************** @@ -411,29 +414,27 @@ ut_print_namel( /*===========*/ FILE* f, /* in: output stream */ trx_t* trx, /* in: transaction (NULL=no quotes) */ + ibool table_id,/* in: TRUE=decode table name */ const char* name, /* in: name to print */ ulint namelen)/* in: length of name */ { - const char* s = name; - const char* e = s + namelen; #ifdef UNIV_HOTBACKUP - int q = '"'; + fwrite(name, 1, namelen, f); #else - int q = mysql_get_identifier_quote_char(trx, name, namelen); -#endif - if (q == EOF) { - fwrite(name, 1, namelen, f); - return; + char* slash = strchr(name, '/'); + + if (UNIV_LIKELY_NULL(slash)) { + /* Print the database name and table name separately. */ + ut_ad(table_id); + + innobase_print_identifier(f, trx, TRUE, name, slash - name); + putc('.', f); + innobase_print_identifier(f, trx, TRUE, slash + 1, + namelen - (slash - name) - 1); + } else { + innobase_print_identifier(f, trx, table_id, name, namelen); } - putc(q, f); - while (s < e) { - int c = *s++; - if (c == q) { - putc(c, f); - } - putc(c, f); - } - putc(q, f); +#endif } /************************************************************************** diff --git a/storage/innobase/ut/ut0wqueue.c b/storage/innobase/ut/ut0wqueue.c new file mode 100644 index 00000000000..2a6d8c19ef0 --- /dev/null +++ b/storage/innobase/ut/ut0wqueue.c @@ -0,0 +1,92 @@ +#include "ut0wqueue.h" + +/******************************************************************** +Create a new work queue. */ + +ib_wqueue_t* +ib_wqueue_create(void) +/*===================*/ + /* out: work queue */ +{ + ib_wqueue_t* wq = mem_alloc(sizeof(ib_wqueue_t)); + + mutex_create(&wq->mutex, SYNC_WORK_QUEUE); + + wq->items = ib_list_create(); + wq->event = os_event_create(NULL); + + return(wq); +} + +/******************************************************************** +Free a work queue. */ + +void +ib_wqueue_free( +/*===========*/ + ib_wqueue_t* wq) /* in: work queue */ +{ + ut_a(!ib_list_get_first(wq->items)); + + mutex_free(&wq->mutex); + ib_list_free(wq->items); + os_event_free(wq->event); + + mem_free(wq); +} + +/******************************************************************** +Add a work item to the queue. */ + +void +ib_wqueue_add( +/*==========*/ + ib_wqueue_t* wq, /* in: work queue */ + void* item, /* in: work item */ + mem_heap_t* heap) /* in: memory heap to use for allocating the + list node */ +{ + mutex_enter(&wq->mutex); + + ib_list_add_last(wq->items, item, heap); + os_event_set(wq->event); + + mutex_exit(&wq->mutex); +} + +/******************************************************************** +Wait for a work item to appear in the queue. */ + +void* +ib_wqueue_wait( + /* out: work item */ + ib_wqueue_t* wq) /* in: work queue */ +{ + ib_list_node_t* node; + + for (;;) { + os_event_wait(wq->event); + + mutex_enter(&wq->mutex); + + node = ib_list_get_first(wq->items); + + if (node) { + ib_list_remove(wq->items, node); + + if (!ib_list_get_first(wq->items)) { + /* We must reset the event when the list + gets emptied. */ + os_event_reset(wq->event); + } + + break; + } + + mutex_exit(&wq->mutex); + } + + mutex_exit(&wq->mutex); + + return(node->data); +} -- cgit v1.2.1 From 540b158f150dd19ec21c2f36d0794c70b35ea62d Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 1 Jun 2006 11:20:49 +0200 Subject: Bug#16837 (Missing #ifdef cause compile problem --without-row-based-replication): Post-merge fixes. sql/log.cc: Need to set up binlog_trx_data regardless of whether row-based is enabled or not. --- sql/log.cc | 2 -- 1 file changed, 2 deletions(-) diff --git a/sql/log.cc b/sql/log.cc index aabed8fa246..41327b85d7e 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -2889,10 +2889,8 @@ bool MYSQL_LOG::write(Log_event *event_info) */ if (opt_using_transactions && thd) { -#ifdef HAVE_ROW_BASED_REPLICATION if (thd->binlog_setup_trx_data()) goto err; -#endif /*HAVE_ROW_BASED_REPLICATION*/ binlog_trx_data *const trx_data= (binlog_trx_data*) thd->ha_data[binlog_hton.slot]; -- cgit v1.2.1 From ddc25698262f3a1b9ebedd0e07a92b78fb736c90 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 1 Jun 2006 11:53:27 +0200 Subject: Bug#19066 (DELETE FROM inconsistency for NDB): Under row-based replication, DELETE FROM will now always be replicated as individual row deletions, while TRUNCATE TABLE will always be replicated as a statement. mysql-test/extra/rpl_tests/rpl_ddl.test: Using --echo instead of SELECT to print message. mysql-test/r/binlog_row_mix_innodb_myisam.result: Result change. mysql-test/r/federated.result: Result change. mysql-test/r/range.result: Result change. mysql-test/r/rpl_sp_effects.result: Result change. mysql-test/r/show_check.result: Result change. mysql-test/r/sp-error.result: Result change. mysql-test/r/sp.result: Result change. mysql-test/r/timezone2.result: Result change. mysql-test/r/trigger-grant.result: Result change. mysql-test/r/type_datetime.result: Result change. mysql-test/r/type_ranges.result: Result change. mysql-test/r/type_timestamp.result: Result change. mysql-test/r/view.result: Result change. mysql-test/t/archive.test: Test contain statements that only works for statement-based logging. mysql-test/t/disabled.def: Disabling test due to reported bug. mysql-test/t/federated.test: Adding ORDER BY clause to SELECT statements mysql-test/t/range.test: Adding ORDER BY clause to SELECT (sub-)statement mysql-test/t/rpl_sp_effects.test: Adding ORDER BY clause to SELECT statement. mysql-test/t/show_check.test: Replacing DELETE FROM without WHERE with TRUNCATE TABLE. mysql-test/t/sp-error.test: Replacing DELETE FROM without WHERE with TRUNCATE TABLE. mysql-test/t/sp.test: Adding ORDER BY clause to SELECT statement. mysql-test/t/timezone2.test: Replacing DELETE FROM without WHERE with TRUNCATE TABLE. mysql-test/t/trigger-grant.test: Replacing DELETE FROM without WHERE with TRUNCATE TABLE. mysql-test/t/type_datetime.test: Adding ORDER BY clause to SELECT statement. mysql-test/t/type_ranges.test: Replacing DELETE FROM without WHERE with TRUNCATE TABLE. mysql-test/t/type_timestamp.test: Replacing DELETE FROM without WHERE with TRUNCATE TABLE. mysql-test/t/view.test: Adding ORDER BY clause to SELECT statement. sql/sql_class.h: Adding member function to set replication to statement-based. sql/sql_delete.cc: When row-based replication is used, DELETE FROM will always delete the contents of the table row-by-row and not use delete_all_rows(). mysql-test/extra/rpl_tests/rpl_truncate.test: New BitKeeper file ``mysql-test/extra/rpl_tests/rpl_truncate.test'' mysql-test/extra/rpl_tests/rpl_truncate_helper.inc: New BitKeeper file ``mysql-test/extra/rpl_tests/rpl_truncate_helper.inc'' mysql-test/r/rpl_truncate_2myisam.result: New BitKeeper file ``mysql-test/r/rpl_truncate_2myisam.result'' mysql-test/r/rpl_truncate_3innodb.result: New BitKeeper file ``mysql-test/r/rpl_truncate_3innodb.result'' mysql-test/r/rpl_truncate_7ndb.result: New BitKeeper file ``mysql-test/r/rpl_truncate_7ndb.result'' mysql-test/t/rpl_truncate_2myisam.test: New BitKeeper file ``mysql-test/t/rpl_truncate_2myisam.test'' mysql-test/t/rpl_truncate_3innodb.test: New BitKeeper file ``mysql-test/t/rpl_truncate_3innodb.test'' mysql-test/t/rpl_truncate_7ndb.test: New BitKeeper file ``mysql-test/t/rpl_truncate_7ndb.test'' --- mysql-test/extra/rpl_tests/rpl_ddl.test | 10 +- mysql-test/extra/rpl_tests/rpl_truncate.test | 36 ++++ mysql-test/extra/rpl_tests/rpl_truncate_helper.inc | 40 ++++ mysql-test/r/binlog_row_mix_innodb_myisam.result | 40 ++-- mysql-test/r/federated.result | 6 +- mysql-test/r/range.result | 2 +- mysql-test/r/rpl_sp_effects.result | 6 +- mysql-test/r/rpl_truncate_2myisam.result | 202 +++++++++++++++++++ mysql-test/r/rpl_truncate_3innodb.result | 214 +++++++++++++++++++++ mysql-test/r/rpl_truncate_7ndb.result | 105 ++++++++++ mysql-test/r/show_check.result | 6 +- mysql-test/r/sp-error.result | 6 +- mysql-test/r/sp.result | 108 +++++------ mysql-test/r/timezone2.result | 10 +- mysql-test/r/trigger-grant.result | 4 +- mysql-test/r/type_datetime.result | 2 +- mysql-test/r/type_ranges.result | 2 +- mysql-test/r/type_timestamp.result | 8 +- mysql-test/r/view.result | 10 +- mysql-test/t/archive.test | 1 + mysql-test/t/disabled.def | 1 + mysql-test/t/federated.test | 6 +- mysql-test/t/range.test | 2 +- mysql-test/t/rpl_sp_effects.test | 4 +- mysql-test/t/rpl_truncate_2myisam.test | 4 + mysql-test/t/rpl_truncate_3innodb.test | 5 + mysql-test/t/rpl_truncate_7ndb.test | 64 ++++++ mysql-test/t/show_check.test | 6 +- mysql-test/t/sp-error.test | 6 +- mysql-test/t/sp.test | 87 +++++---- mysql-test/t/timezone2.test | 10 +- mysql-test/t/trigger-grant.test | 4 +- mysql-test/t/type_datetime.test | 2 +- mysql-test/t/type_ranges.test | 2 +- mysql-test/t/type_timestamp.test | 8 +- mysql-test/t/view.test | 10 +- sql/sql_class.h | 4 + sql/sql_delete.cc | 36 +--- 38 files changed, 865 insertions(+), 214 deletions(-) create mode 100644 mysql-test/extra/rpl_tests/rpl_truncate.test create mode 100644 mysql-test/extra/rpl_tests/rpl_truncate_helper.inc create mode 100644 mysql-test/r/rpl_truncate_2myisam.result create mode 100644 mysql-test/r/rpl_truncate_3innodb.result create mode 100644 mysql-test/r/rpl_truncate_7ndb.result create mode 100644 mysql-test/t/rpl_truncate_2myisam.test create mode 100644 mysql-test/t/rpl_truncate_3innodb.test create mode 100644 mysql-test/t/rpl_truncate_7ndb.test diff --git a/mysql-test/extra/rpl_tests/rpl_ddl.test b/mysql-test/extra/rpl_tests/rpl_ddl.test index 4aab45db18b..15794e5e035 100644 --- a/mysql-test/extra/rpl_tests/rpl_ddl.test +++ b/mysql-test/extra/rpl_tests/rpl_ddl.test @@ -228,15 +228,11 @@ let $my_master_commit= true; let $my_slave_commit= true; --source include/rpl_stmt_seq.inc SELECT * FROM mysqltest1.t7; -connection slave; ---disable_query_log -SELECT '-------- switch to slave --------' as ""; ---enable_query_log +--echo -------- switch to slave -------- +sync_slave_with_master; SELECT * FROM mysqltest1.t7; +--echo -------- switch to master ------- connection master; ---disable_query_log -SELECT '-------- switch to master -------' as ""; ---enable_query_log ############################################################### # Cases with LOCK/UNLOCK diff --git a/mysql-test/extra/rpl_tests/rpl_truncate.test b/mysql-test/extra/rpl_tests/rpl_truncate.test new file mode 100644 index 00000000000..982623dfff7 --- /dev/null +++ b/mysql-test/extra/rpl_tests/rpl_truncate.test @@ -0,0 +1,36 @@ +# +# Copyright 2006 MySQL. All rights reserved. +# +# Test to check for the different version of truncating a table. +# The statements are "TRUNCATE tbl" and "DELETE FROM tbl". We check +# the behaviour of each possible value for BINLOG_FORMAT. +# +# Author(s): Mats Kindahl + +--source include/have_row_based.inc +--source include/master-slave.inc + +let $format = STATEMENT; +let $stmt = TRUNCATE TABLE; +--source extra/rpl_tests/rpl_truncate_helper.inc + +let $format = MIXED; +let $stmt = TRUNCATE TABLE; +--source extra/rpl_tests/rpl_truncate_helper.inc + +let $format = ROW; +let $stmt = TRUNCATE TABLE; +--source extra/rpl_tests/rpl_truncate_helper.inc + +let $format = STATEMENT; +let $stmt = DELETE FROM; +--source extra/rpl_tests/rpl_truncate_helper.inc + +let $format = MIXED; +let $stmt = DELETE FROM; +--source extra/rpl_tests/rpl_truncate_helper.inc + +let $format = ROW; +let $stmt = DELETE FROM; +--source extra/rpl_tests/rpl_truncate_helper.inc + diff --git a/mysql-test/extra/rpl_tests/rpl_truncate_helper.inc b/mysql-test/extra/rpl_tests/rpl_truncate_helper.inc new file mode 100644 index 00000000000..c6defefa986 --- /dev/null +++ b/mysql-test/extra/rpl_tests/rpl_truncate_helper.inc @@ -0,0 +1,40 @@ + +--disable_query_log +--disable_warnings +connection slave; +STOP SLAVE; +connection master; +DROP TABLE IF EXISTS t1; +RESET MASTER; +connection slave; +DROP TABLE IF EXISTS t1; +RESET SLAVE; +START SLAVE; +--enable_warnings +--enable_query_log + +--echo **** On Master **** +connection master; +eval SET SESSION BINLOG_FORMAT=$format; +eval SET GLOBAL BINLOG_FORMAT=$format; + +eval CREATE TABLE t1 (a INT, b LONG) ENGINE=$engine; +INSERT INTO t1 VALUES (1,1), (2,2); +SELECT * FROM t1; +--echo **** On Slave **** +sync_slave_with_master; +INSERT INTO t1 VALUE (3,3); +SELECT * FROM t1; +--echo **** On Master **** +connection master; +eval $stmt t1; +SELECT * FROM t1; +--echo **** On Slave **** +sync_slave_with_master; +# Should be empty +SELECT * FROM t1; +--echo **** On Master **** +connection master; +DROP TABLE t1; +--replace_regex /table_id: [0-9]+/table_id: #/ +SHOW BINLOG EVENTS; diff --git a/mysql-test/r/binlog_row_mix_innodb_myisam.result b/mysql-test/r/binlog_row_mix_innodb_myisam.result index 078a95d5abd..d136c710642 100644 --- a/mysql-test/r/binlog_row_mix_innodb_myisam.result +++ b/mysql-test/r/binlog_row_mix_innodb_myisam.result @@ -263,26 +263,26 @@ master-bin.000001 243 Table_map 1 # table_id: # (test.t1) master-bin.000001 282 Write_rows 1 # table_id: # flags: STMT_END_F master-bin.000001 316 Xid 1 # COMMIT /* xid= */ master-bin.000001 343 Table_map 1 # table_id: # (test.t1) -master-bin.000001 382 Query 1 # use `test`; delete from t1 -master-bin.000001 459 Xid 1 # COMMIT /* xid= */ -master-bin.000001 486 Table_map 1 # table_id: # (test.t2) -master-bin.000001 525 Query 1 # use `test`; delete from t2 -master-bin.000001 602 Xid 1 # COMMIT /* xid= */ -master-bin.000001 629 Query 1 # use `test`; alter table t2 engine=MyISAM -master-bin.000001 720 Table_map 1 # table_id: # (test.t1) -master-bin.000001 759 Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 793 Xid 1 # COMMIT /* xid= */ -master-bin.000001 820 Query 1 # use `test`; BEGIN -master-bin.000001 888 Table_map 1 # table_id: # (test.t1) -master-bin.000001 927 Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 956 Xid 1 # COMMIT /* xid= */ -master-bin.000001 983 Query 1 # use `test`; drop table t1,t2 -master-bin.000001 1062 Query 1 # use `test`; create table t0 (n int) -master-bin.000001 1148 Table_map 1 # table_id: # (test.t0) -master-bin.000001 1187 Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 1221 Table_map 1 # table_id: # (test.t0) -master-bin.000001 1260 Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 1294 Query 1 # use `test`; create table t2 (n int) engine=innodb +master-bin.000001 382 Delete_rows 1 # table_id: # flags: STMT_END_F +master-bin.000001 421 Xid 1 # COMMIT /* xid= */ +master-bin.000001 448 Table_map 1 # table_id: # (test.t2) +master-bin.000001 487 Write_rows 1 # table_id: # flags: STMT_END_F +master-bin.000001 516 Xid 1 # COMMIT /* xid= */ +master-bin.000001 543 Query 1 # use `test`; alter table t2 engine=MyISAM +master-bin.000001 634 Table_map 1 # table_id: # (test.t1) +master-bin.000001 673 Write_rows 1 # table_id: # flags: STMT_END_F +master-bin.000001 707 Xid 1 # COMMIT /* xid= */ +master-bin.000001 734 Query 1 # use `test`; BEGIN +master-bin.000001 802 Table_map 1 # table_id: # (test.t1) +master-bin.000001 841 Write_rows 1 # table_id: # flags: STMT_END_F +master-bin.000001 870 Xid 1 # COMMIT /* xid= */ +master-bin.000001 897 Query 1 # use `test`; drop table t1,t2 +master-bin.000001 976 Query 1 # use `test`; create table t0 (n int) +master-bin.000001 1062 Table_map 1 # table_id: # (test.t0) +master-bin.000001 1101 Write_rows 1 # table_id: # flags: STMT_END_F +master-bin.000001 1135 Table_map 1 # table_id: # (test.t0) +master-bin.000001 1174 Write_rows 1 # table_id: # flags: STMT_END_F +master-bin.000001 1208 Query 1 # use `test`; create table t2 (n int) engine=innodb do release_lock("lock1"); drop table t0,t2; reset master; diff --git a/mysql-test/r/federated.result b/mysql-test/r/federated.result index 5f735ebe926..7828994bceb 100644 --- a/mysql-test/r/federated.result +++ b/mysql-test/r/federated.result @@ -82,7 +82,7 @@ t2 CREATE TABLE `t2` ( ) ENGINE=FEDERATED DEFAULT CHARSET=latin1 CONNECTION='mysql://root@127.0.0.1:SLAVE_PORT/federated/t1' INSERT INTO federated.t2 (id, name) VALUES (1, 'foo'); INSERT INTO federated.t2 (id, name) VALUES (2, 'fee'); -SELECT * FROM federated.t2; +SELECT * FROM federated.t2 ORDER BY id, name; id name 1 foo 2 fee @@ -107,7 +107,7 @@ ENGINE="FEDERATED" DEFAULT CHARSET=latin1 CONNECTION='mysql://root@127.0.0.1:SLAVE_PORT/federated/t1%'; INSERT INTO federated.t1 (id, name) VALUES (1, 'foo'); INSERT INTO federated.t1 (id, name) VALUES (2, 'fee'); -SELECT * FROM federated.t1; +SELECT * FROM federated.t1 ORDER BY id,name; id name 1 foo 2 fee @@ -121,7 +121,7 @@ ENGINE="FEDERATED" DEFAULT CHARSET=latin1 CONNECTION='mysql://root@127.0.0.1:SLAVE_PORT/federated/t1%'; INSERT INTO federated.`t1%` (id, name) VALUES (1, 'foo'); INSERT INTO federated.`t1%` (id, name) VALUES (2, 'fee'); -SELECT * FROM federated.`t1%`; +SELECT * FROM federated.`t1%` ORDER BY id, name; id name 1 foo 2 fee diff --git a/mysql-test/r/range.result b/mysql-test/r/range.result index f6b7409ea6a..f687ab7e2c6 100644 --- a/mysql-test/r/range.result +++ b/mysql-test/r/range.result @@ -406,7 +406,7 @@ insert into t2(uid, name) values (24, CHAR(64+24)), (25, CHAR(64+25)), (26, CHAR(64+26)); -insert into t1(uid, name) select uid, name from t2; +insert into t1(uid, name) select uid, name from t2 order by uid; delete from t2; insert into t2(id, uid, name) select id, uid, name from t1; select count(*) from t1; diff --git a/mysql-test/r/rpl_sp_effects.result b/mysql-test/r/rpl_sp_effects.result index 26455b65beb..b42fe64e603 100644 --- a/mysql-test/r/rpl_sp_effects.result +++ b/mysql-test/r/rpl_sp_effects.result @@ -124,9 +124,9 @@ delete from t1; delete from t2; delete from t1; insert into t2 values(1),(2); -create view v1 as select f1(a) from t2; -select * from v1; -f1(a) +create view v1 as select f1(a) as f from t2; +select * from v1 order by f; +f 2 3 SELECT 'master:',a FROM t1 ORDER BY a; diff --git a/mysql-test/r/rpl_truncate_2myisam.result b/mysql-test/r/rpl_truncate_2myisam.result new file mode 100644 index 00000000000..6cd8b267578 --- /dev/null +++ b/mysql-test/r/rpl_truncate_2myisam.result @@ -0,0 +1,202 @@ +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +**** On Master **** +SET SESSION BINLOG_FORMAT=STATEMENT; +SET GLOBAL BINLOG_FORMAT=STATEMENT; +CREATE TABLE t1 (a INT, b LONG) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1,1), (2,2); +SELECT * FROM t1; +a b +1 1 +2 2 +**** On Slave **** +INSERT INTO t1 VALUE (3,3); +SELECT * FROM t1; +a b +1 1 +2 2 +3 3 +**** On Master **** +TRUNCATE TABLE t1; +SELECT * FROM t1; +a b +**** On Slave **** +SELECT * FROM t1; +a b +**** On Master **** +DROP TABLE t1; +SHOW BINLOG EVENTS; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=MyISAM +master-bin.000001 210 Query 1 307 use `test`; INSERT INTO t1 VALUES (1,1), (2,2) +master-bin.000001 307 Query 1 387 use `test`; TRUNCATE TABLE t1 +master-bin.000001 387 Query 1 463 use `test`; DROP TABLE t1 +**** On Master **** +SET SESSION BINLOG_FORMAT=MIXED; +SET GLOBAL BINLOG_FORMAT=MIXED; +CREATE TABLE t1 (a INT, b LONG) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1,1), (2,2); +SELECT * FROM t1; +a b +1 1 +2 2 +**** On Slave **** +INSERT INTO t1 VALUE (3,3); +SELECT * FROM t1; +a b +1 1 +2 2 +3 3 +**** On Master **** +TRUNCATE TABLE t1; +SELECT * FROM t1; +a b +**** On Slave **** +SELECT * FROM t1; +a b +**** On Master **** +DROP TABLE t1; +SHOW BINLOG EVENTS; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=MyISAM +master-bin.000001 210 Query 1 307 use `test`; INSERT INTO t1 VALUES (1,1), (2,2) +master-bin.000001 307 Query 1 387 use `test`; TRUNCATE TABLE t1 +master-bin.000001 387 Query 1 463 use `test`; DROP TABLE t1 +**** On Master **** +SET SESSION BINLOG_FORMAT=ROW; +SET GLOBAL BINLOG_FORMAT=ROW; +CREATE TABLE t1 (a INT, b LONG) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1,1), (2,2); +SELECT * FROM t1; +a b +1 1 +2 2 +**** On Slave **** +INSERT INTO t1 VALUE (3,3); +SELECT * FROM t1; +a b +1 1 +2 2 +3 3 +**** On Master **** +TRUNCATE TABLE t1; +SELECT * FROM t1; +a b +**** On Slave **** +SELECT * FROM t1; +a b +**** On Master **** +DROP TABLE t1; +SHOW BINLOG EVENTS; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=MyISAM +master-bin.000001 210 Table_map 1 250 table_id: # (test.t1) +master-bin.000001 250 Write_rows 1 297 table_id: # flags: STMT_END_F +master-bin.000001 297 Query 1 377 use `test`; TRUNCATE TABLE t1 +master-bin.000001 377 Query 1 453 use `test`; DROP TABLE t1 +**** On Master **** +SET SESSION BINLOG_FORMAT=STATEMENT; +SET GLOBAL BINLOG_FORMAT=STATEMENT; +CREATE TABLE t1 (a INT, b LONG) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1,1), (2,2); +SELECT * FROM t1; +a b +1 1 +2 2 +**** On Slave **** +INSERT INTO t1 VALUE (3,3); +SELECT * FROM t1; +a b +1 1 +2 2 +3 3 +**** On Master **** +DELETE FROM t1; +SELECT * FROM t1; +a b +**** On Slave **** +SELECT * FROM t1; +a b +**** On Master **** +DROP TABLE t1; +SHOW BINLOG EVENTS; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=MyISAM +master-bin.000001 210 Query 1 307 use `test`; INSERT INTO t1 VALUES (1,1), (2,2) +master-bin.000001 307 Query 1 384 use `test`; DELETE FROM t1 +master-bin.000001 384 Query 1 460 use `test`; DROP TABLE t1 +**** On Master **** +SET SESSION BINLOG_FORMAT=MIXED; +SET GLOBAL BINLOG_FORMAT=MIXED; +CREATE TABLE t1 (a INT, b LONG) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1,1), (2,2); +SELECT * FROM t1; +a b +1 1 +2 2 +**** On Slave **** +INSERT INTO t1 VALUE (3,3); +SELECT * FROM t1; +a b +1 1 +2 2 +3 3 +**** On Master **** +DELETE FROM t1; +SELECT * FROM t1; +a b +**** On Slave **** +SELECT * FROM t1; +a b +**** On Master **** +DROP TABLE t1; +SHOW BINLOG EVENTS; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=MyISAM +master-bin.000001 210 Query 1 307 use `test`; INSERT INTO t1 VALUES (1,1), (2,2) +master-bin.000001 307 Query 1 384 use `test`; DELETE FROM t1 +master-bin.000001 384 Query 1 460 use `test`; DROP TABLE t1 +**** On Master **** +SET SESSION BINLOG_FORMAT=ROW; +SET GLOBAL BINLOG_FORMAT=ROW; +CREATE TABLE t1 (a INT, b LONG) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1,1), (2,2); +SELECT * FROM t1; +a b +1 1 +2 2 +**** On Slave **** +INSERT INTO t1 VALUE (3,3); +SELECT * FROM t1; +a b +1 1 +2 2 +3 3 +**** On Master **** +DELETE FROM t1; +SELECT * FROM t1; +a b +**** On Slave **** +SELECT * FROM t1; +a b +3 3 +**** On Master **** +DROP TABLE t1; +SHOW BINLOG EVENTS; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=MyISAM +master-bin.000001 210 Table_map 1 250 table_id: # (test.t1) +master-bin.000001 250 Write_rows 1 297 table_id: # flags: STMT_END_F +master-bin.000001 297 Table_map 1 337 table_id: # (test.t1) +master-bin.000001 337 Delete_rows 1 384 table_id: # flags: STMT_END_F +master-bin.000001 384 Query 1 460 use `test`; DROP TABLE t1 diff --git a/mysql-test/r/rpl_truncate_3innodb.result b/mysql-test/r/rpl_truncate_3innodb.result new file mode 100644 index 00000000000..8d5fbed0795 --- /dev/null +++ b/mysql-test/r/rpl_truncate_3innodb.result @@ -0,0 +1,214 @@ +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +**** On Master **** +SET SESSION BINLOG_FORMAT=STATEMENT; +SET GLOBAL BINLOG_FORMAT=STATEMENT; +CREATE TABLE t1 (a INT, b LONG) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1,1), (2,2); +SELECT * FROM t1; +a b +1 1 +2 2 +**** On Slave **** +INSERT INTO t1 VALUE (3,3); +SELECT * FROM t1; +a b +1 1 +2 2 +3 3 +**** On Master **** +TRUNCATE TABLE t1; +SELECT * FROM t1; +a b +**** On Slave **** +SELECT * FROM t1; +a b +**** On Master **** +DROP TABLE t1; +SHOW BINLOG EVENTS; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=InnoDB +master-bin.000001 210 Query 1 97 use `test`; INSERT INTO t1 VALUES (1,1), (2,2) +master-bin.000001 307 Xid 1 334 COMMIT /* xid= */ +master-bin.000001 334 Query 1 80 use `test`; TRUNCATE TABLE t1 +master-bin.000001 414 Xid 1 441 COMMIT /* xid= */ +master-bin.000001 441 Query 1 517 use `test`; DROP TABLE t1 +**** On Master **** +SET SESSION BINLOG_FORMAT=MIXED; +SET GLOBAL BINLOG_FORMAT=MIXED; +CREATE TABLE t1 (a INT, b LONG) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1,1), (2,2); +SELECT * FROM t1; +a b +1 1 +2 2 +**** On Slave **** +INSERT INTO t1 VALUE (3,3); +SELECT * FROM t1; +a b +1 1 +2 2 +3 3 +**** On Master **** +TRUNCATE TABLE t1; +SELECT * FROM t1; +a b +**** On Slave **** +SELECT * FROM t1; +a b +**** On Master **** +DROP TABLE t1; +SHOW BINLOG EVENTS; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=InnoDB +master-bin.000001 210 Query 1 97 use `test`; INSERT INTO t1 VALUES (1,1), (2,2) +master-bin.000001 307 Xid 1 334 COMMIT /* xid= */ +master-bin.000001 334 Query 1 80 use `test`; TRUNCATE TABLE t1 +master-bin.000001 414 Xid 1 441 COMMIT /* xid= */ +master-bin.000001 441 Query 1 517 use `test`; DROP TABLE t1 +**** On Master **** +SET SESSION BINLOG_FORMAT=ROW; +SET GLOBAL BINLOG_FORMAT=ROW; +CREATE TABLE t1 (a INT, b LONG) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1,1), (2,2); +SELECT * FROM t1; +a b +1 1 +2 2 +**** On Slave **** +INSERT INTO t1 VALUE (3,3); +SELECT * FROM t1; +a b +1 1 +2 2 +3 3 +**** On Master **** +TRUNCATE TABLE t1; +SELECT * FROM t1; +a b +**** On Slave **** +SELECT * FROM t1; +a b +**** On Master **** +DROP TABLE t1; +SHOW BINLOG EVENTS; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=InnoDB +master-bin.000001 210 Table_map 1 40 table_id: # (test.t1) +master-bin.000001 250 Write_rows 1 87 table_id: # flags: STMT_END_F +master-bin.000001 297 Xid 1 324 COMMIT /* xid= */ +master-bin.000001 324 Query 1 80 use `test`; TRUNCATE TABLE t1 +master-bin.000001 404 Xid 1 431 COMMIT /* xid= */ +master-bin.000001 431 Query 1 507 use `test`; DROP TABLE t1 +**** On Master **** +SET SESSION BINLOG_FORMAT=STATEMENT; +SET GLOBAL BINLOG_FORMAT=STATEMENT; +CREATE TABLE t1 (a INT, b LONG) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1,1), (2,2); +SELECT * FROM t1; +a b +1 1 +2 2 +**** On Slave **** +INSERT INTO t1 VALUE (3,3); +SELECT * FROM t1; +a b +1 1 +2 2 +3 3 +**** On Master **** +DELETE FROM t1; +SELECT * FROM t1; +a b +**** On Slave **** +SELECT * FROM t1; +a b +**** On Master **** +DROP TABLE t1; +SHOW BINLOG EVENTS; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=InnoDB +master-bin.000001 210 Query 1 97 use `test`; INSERT INTO t1 VALUES (1,1), (2,2) +master-bin.000001 307 Xid 1 334 COMMIT /* xid= */ +master-bin.000001 334 Query 1 77 use `test`; DELETE FROM t1 +master-bin.000001 411 Xid 1 438 COMMIT /* xid= */ +master-bin.000001 438 Query 1 514 use `test`; DROP TABLE t1 +**** On Master **** +SET SESSION BINLOG_FORMAT=MIXED; +SET GLOBAL BINLOG_FORMAT=MIXED; +CREATE TABLE t1 (a INT, b LONG) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1,1), (2,2); +SELECT * FROM t1; +a b +1 1 +2 2 +**** On Slave **** +INSERT INTO t1 VALUE (3,3); +SELECT * FROM t1; +a b +1 1 +2 2 +3 3 +**** On Master **** +DELETE FROM t1; +SELECT * FROM t1; +a b +**** On Slave **** +SELECT * FROM t1; +a b +**** On Master **** +DROP TABLE t1; +SHOW BINLOG EVENTS; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=InnoDB +master-bin.000001 210 Query 1 97 use `test`; INSERT INTO t1 VALUES (1,1), (2,2) +master-bin.000001 307 Xid 1 334 COMMIT /* xid= */ +master-bin.000001 334 Query 1 77 use `test`; DELETE FROM t1 +master-bin.000001 411 Xid 1 438 COMMIT /* xid= */ +master-bin.000001 438 Query 1 514 use `test`; DROP TABLE t1 +**** On Master **** +SET SESSION BINLOG_FORMAT=ROW; +SET GLOBAL BINLOG_FORMAT=ROW; +CREATE TABLE t1 (a INT, b LONG) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1,1), (2,2); +SELECT * FROM t1; +a b +1 1 +2 2 +**** On Slave **** +INSERT INTO t1 VALUE (3,3); +SELECT * FROM t1; +a b +1 1 +2 2 +3 3 +**** On Master **** +DELETE FROM t1; +SELECT * FROM t1; +a b +**** On Slave **** +SELECT * FROM t1; +a b +3 3 +**** On Master **** +DROP TABLE t1; +SHOW BINLOG EVENTS; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=InnoDB +master-bin.000001 210 Table_map 1 40 table_id: # (test.t1) +master-bin.000001 250 Write_rows 1 87 table_id: # flags: STMT_END_F +master-bin.000001 297 Xid 1 324 COMMIT /* xid= */ +master-bin.000001 324 Table_map 1 40 table_id: # (test.t1) +master-bin.000001 364 Delete_rows 1 87 table_id: # flags: STMT_END_F +master-bin.000001 411 Xid 1 438 COMMIT /* xid= */ +master-bin.000001 438 Query 1 514 use `test`; DROP TABLE t1 diff --git a/mysql-test/r/rpl_truncate_7ndb.result b/mysql-test/r/rpl_truncate_7ndb.result new file mode 100644 index 00000000000..40ca6409759 --- /dev/null +++ b/mysql-test/r/rpl_truncate_7ndb.result @@ -0,0 +1,105 @@ +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +**** On Master **** +CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB; +INSERT INTO t1 VALUES (1,1), (2,2); +SELECT * FROM t1 ORDER BY a,b; +a b +1 1 +2 2 +**** On Slave **** +INSERT INTO t1 VALUE (3,3); +SELECT * FROM t1 ORDER BY a,b; +a b +1 1 +2 2 +3 3 +**** On Master **** +TRUNCATE TABLE t1; +SELECT * FROM t1 ORDER BY a,b; +a b +**** On Slave **** +SELECT * FROM t1 ORDER BY a,b; +a b +**** On Master **** +DROP TABLE t1; +SHOW BINLOG EVENTS; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 102 Query 1 219 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB +master-bin.000001 219 Query 1 283 BEGIN +master-bin.000001 283 Table_map 1 40 table_id: # (test.t1) +master-bin.000001 323 Table_map 1 93 table_id: # (cluster.apply_status) +master-bin.000001 376 Write_rows 1 135 table_id: # +master-bin.000001 418 Write_rows 1 182 table_id: # flags: STMT_END_F +master-bin.000001 465 Query 1 530 COMMIT +master-bin.000001 530 Query 1 80 use `test`; TRUNCATE TABLE t1 +master-bin.000001 610 Query 1 679 use `test`; COMMIT +master-bin.000001 679 Query 1 743 BEGIN +master-bin.000001 743 Table_map 1 40 table_id: # (test.t1) +master-bin.000001 783 Table_map 1 93 table_id: # (cluster.apply_status) +master-bin.000001 836 Write_rows 1 135 table_id: # +master-bin.000001 878 Delete_rows 1 174 table_id: # flags: STMT_END_F +master-bin.000001 917 Query 1 982 COMMIT +master-bin.000001 982 Query 1 1058 use `test`; DROP TABLE t1 +**** On Master **** +CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB; +INSERT INTO t1 VALUES (1,1), (2,2); +SELECT * FROM t1 ORDER BY a,b; +a b +1 1 +2 2 +**** On Slave **** +INSERT INTO t1 VALUE (3,3); +SELECT * FROM t1 ORDER BY a,b; +a b +1 1 +2 2 +3 3 +**** On Master **** +DELETE FROM t1; +SELECT * FROM t1 ORDER BY a,b; +a b +**** On Slave **** +SELECT * FROM t1 ORDER BY a,b; +a b +3 3 +**** On Master **** +DROP TABLE t1; +SHOW BINLOG EVENTS; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 102 Query 1 219 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB +master-bin.000001 219 Query 1 283 BEGIN +master-bin.000001 283 Table_map 1 40 table_id: # (test.t1) +master-bin.000001 323 Table_map 1 93 table_id: # (cluster.apply_status) +master-bin.000001 376 Write_rows 1 135 table_id: # +master-bin.000001 418 Write_rows 1 182 table_id: # flags: STMT_END_F +master-bin.000001 465 Query 1 530 COMMIT +master-bin.000001 530 Query 1 80 use `test`; TRUNCATE TABLE t1 +master-bin.000001 610 Query 1 679 use `test`; COMMIT +master-bin.000001 679 Query 1 743 BEGIN +master-bin.000001 743 Table_map 1 40 table_id: # (test.t1) +master-bin.000001 783 Table_map 1 93 table_id: # (cluster.apply_status) +master-bin.000001 836 Write_rows 1 135 table_id: # +master-bin.000001 878 Delete_rows 1 174 table_id: # flags: STMT_END_F +master-bin.000001 917 Query 1 982 COMMIT +master-bin.000001 982 Query 1 1058 use `test`; DROP TABLE t1 +master-bin.000001 1058 Query 1 1175 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB +master-bin.000001 1175 Query 1 1239 BEGIN +master-bin.000001 1239 Table_map 1 40 table_id: # (test.t1) +master-bin.000001 1279 Table_map 1 93 table_id: # (cluster.apply_status) +master-bin.000001 1332 Write_rows 1 135 table_id: # +master-bin.000001 1374 Write_rows 1 182 table_id: # flags: STMT_END_F +master-bin.000001 1421 Query 1 1486 COMMIT +master-bin.000001 1486 Query 1 1550 BEGIN +master-bin.000001 1550 Table_map 1 40 table_id: # (test.t1) +master-bin.000001 1590 Table_map 1 93 table_id: # (cluster.apply_status) +master-bin.000001 1643 Write_rows 1 135 table_id: # +master-bin.000001 1685 Delete_rows 1 174 table_id: # flags: STMT_END_F +master-bin.000001 1724 Query 1 1789 COMMIT +master-bin.000001 1789 Query 1 1865 use `test`; DROP TABLE t1 diff --git a/mysql-test/r/show_check.result b/mysql-test/r/show_check.result index a8af5c59b81..a3f6199706b 100644 --- a/mysql-test/r/show_check.result +++ b/mysql-test/r/show_check.result @@ -382,9 +382,9 @@ Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length I t1 MEMORY 10 Fixed 4 # # # # # NULL NULL NULL NULL latin1_swedish_ci NULL t2 MEMORY 10 Fixed 4 # # # # # NULL NULL NULL NULL latin1_swedish_ci NULL t3 MEMORY 10 Fixed 4 # # # # # NULL NULL NULL NULL latin1_swedish_ci NULL -delete from t1; -delete from t2; -delete from t3; +truncate table t1; +truncate table t2; +truncate table t3; show table status; Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment t1 MEMORY 10 Fixed 0 # # # # 0 NULL NULL NULL NULL latin1_swedish_ci NULL diff --git a/mysql-test/r/sp-error.result b/mysql-test/r/sp-error.result index 931fa2ee402..4ffd5086b0f 100644 --- a/mysql-test/r/sp-error.result +++ b/mysql-test/r/sp-error.result @@ -368,7 +368,7 @@ end| insert into t1 values (666, 51.3)| call bug2272()| ERROR 42S22: Unknown column 'v' in 'field list' -delete from t1| +truncate table t1| drop procedure bug2272| create procedure bug2329_1() begin @@ -520,7 +520,7 @@ declare exit handler for sqlexception select 'Error!'; open c; fetch c into v; end| -delete from t1| +truncate table t1| call bug7299()| ERROR 02000: No data - zero rows fetched, selected, or processed drop procedure bug7299| @@ -621,7 +621,7 @@ val x bug8408() 3 3.14 3 7 7 3 drop function bug8408| -delete from t1| +truncate table t1| drop procedure if exists bug10537| create procedure bug10537() load data local infile '/tmp/somefile' into table t1| diff --git a/mysql-test/r/sp.result b/mysql-test/r/sp.result index 5aa984bfa4e..c5051637707 100644 --- a/mysql-test/r/sp.result +++ b/mysql-test/r/sp.result @@ -78,7 +78,7 @@ replace t1 set data = data, id = "bar"; update t1 set id = "kaka", data = 3 where t1.data = data; end| call setcontext()| -select * from t1| +select * from t1 order by data| id data foo 1 kaka 3 @@ -191,7 +191,7 @@ drop procedure if exists inc| create procedure inc(inout io int) set io = io + 1| call iotest("io1", "io2", 1)| -select * from t1| +select * from t1 order by data desc| id data io2 2 io1 1 @@ -224,7 +224,7 @@ set y2 = 4711; insert into test.t1 values ("cbv2", y1); end| call cbv1()| -select * from t1| +select * from t1 order by data| id data cbv2 4 cbv1 4711 @@ -251,7 +251,7 @@ call sub1("sub1c", (select i,d from t2 limit 1))| ERROR 21000: Operand should contain 1 column(s) call sub1("sub1d", (select 1 from (select 1) a))| call sub2("sub2")| -select * from t1| +select * from t1 order by id| id data sub1a 7 sub1b 3 @@ -272,7 +272,7 @@ set x = x-1; insert into test.t1 values ("a0", x); end while| call a0(3)| -select * from t1| +select * from t1 order by data desc| id data a0 2 a0 1 @@ -286,7 +286,7 @@ set x = x-1; insert into test.t1 values ("a", x); end while| call a(3)| -select * from t1| +select * from t1 order by data desc| id data a 2 a 1 @@ -300,7 +300,7 @@ insert into test.t1 values (repeat("b",3), x); set x = x-1; until x = 0 end repeat| call b(3)| -select * from t1| +select * from t1 order by data desc| id data bbb 3 bbb 2 @@ -323,7 +323,7 @@ iterate hmm; insert into test.t1 values ("x", x); end while hmm| call c(3)| -select * from t1| +select * from t1 order by data desc| id data c 3 c 2 @@ -354,7 +354,7 @@ insert into test.t1 values ("e", x); set x = x-1; end loop foo| call e(3)| -select * from t1| +select * from t1 order by data desc| id data e 3 e 2 @@ -373,7 +373,7 @@ end if| call f(-2)| call f(0)| call f(4)| -select * from t1| +select * from t1 order by data| id data f 0 f 1 @@ -393,7 +393,7 @@ end case| call g(-42)| call g(0)| call g(1)| -select * from t1| +select * from t1 order by data| id data g 0 g 1 @@ -413,7 +413,7 @@ end case| call h(0)| call h(1)| call h(17)| -select * from t1| +select * from t1 order by data| id data h0 0 h1 1 @@ -441,7 +441,7 @@ insert into t2 values ("x", 9, 4.1), ("y", -1, 19.2), ("z", 3, 2.2)| drop procedure if exists sel1| create procedure sel1() begin -select * from t1; +select * from t1 order by data; end| call sel1()| id data @@ -451,8 +451,8 @@ drop procedure sel1| drop procedure if exists sel2| create procedure sel2() begin -select * from t1; -select * from t2; +select * from t1 order by data; +select * from t2 order by s; end| call sel2()| id data @@ -473,7 +473,7 @@ select id,data into x,y from test.t1 limit 1; insert into test.t1 values (concat(x, "2"), y+2); end| call into_test("into", 100)| -select * from t1| +select * from t1 order by data| id data into 100 into2 102 @@ -487,7 +487,7 @@ select id,data into x,@z from test.t1 limit 1; insert into test.t1 values (concat(x, "2"), y+2); end| call into_test2("into", 100)| -select id,data,@z from t1| +select id,data,@z from t1 order by data| id data @z into 100 100 into2 102 100 @@ -619,14 +619,14 @@ insert into t2 values (append("a", "b"), mul(2,mul(3,4)), fun(1.7, 4, 6))| select * from t2 where s = append("a", "b")| s i d ab 24 1324.36598821719 -select * from t2 where i = mul(4,3) or i = mul(mul(3,4),2)| +select * from t2 where i = mul(4,3) or i = mul(mul(3,4),2) order by i| s i d xxxyyy 12 2.71828182845905 ab 24 1324.36598821719 select * from t2 where d = e()| s i d xxxyyy 12 2.71828182845905 -select * from t2| +select * from t2 order by i| s i d xxxyyy 12 2.71828182845905 ab 24 1324.36598821719 @@ -745,8 +745,8 @@ drop procedure if exists cur2| create procedure cur2() begin declare done int default 0; -declare c1 cursor for select id,data from test.t1; -declare c2 cursor for select i from test.t2; +declare c1 cursor for select id,data from test.t1 order by id,data; +declare c2 cursor for select i from test.t2 order by i; declare continue handler for sqlstate '02000' set done = 1; open c1; open c2; @@ -769,10 +769,10 @@ close c1; close c2; end| call cur2()| -select * from t3| +select * from t3 order by i,s| s i -foo 40 bar 3 +foo 40 zap 663 delete from t1| delete from t2| @@ -935,16 +935,16 @@ return (select sum(data) from t1)| select f1()| f1() 3 -select id, f1() from t1| +select id, f1() from t1 order by id| id f1() a 3 b 3 create function f2() returns int -return (select data from t1 where data <= (select sum(data) from t1) limit 1)| +return (select data from t1 where data <= (select sum(data) from t1) order by data limit 1)| select f2()| f2() 1 -select id, f2() from t1| +select id, f2() from t1 order by id| id f2() a 1 b 1 @@ -959,14 +959,14 @@ end| select f3()| f3() 1 -select id, f3() from t1| +select id, f3() from t1 order by id| id f3() a 1 b 1 select f1(), f3()| f1() f3() 3 1 -select id, f1(), f3() from t1| +select id, f1(), f3() from t1 order by id| id f1() f3() a 3 1 b 3 1 @@ -975,7 +975,7 @@ return (select d from t1, t2 where t1.data = t2.i and t1.id= "b")| select f4()| f4() 2 -select s, f4() from t2| +select s, f4() from t2 order by s| s f4() a 2 b 2 @@ -1008,7 +1008,7 @@ return (select sum(data) from t1 where data <= f1())| select f6()| f6() 2 -select id, f6() from t1| +select id, f6() from t1 order by id| id f6() a 2 b 2 @@ -1016,7 +1016,7 @@ create view v1 (a) as select f1()| select * from v1| a 3 -select id, a from t1, v1| +select id, a from t1, v1 order by id| id a a 3 b 3 @@ -1027,7 +1027,7 @@ create view v2 (a) as select a*10 from v1| select * from v2| a 30 -select id, a from t1, v2| +select id, a from t1, v2 order by id| id a a 30 b 30 @@ -1072,7 +1072,7 @@ lock tables t1 read, t1 as t11 read| select f3()| f3() 1 -select id, f3() from t1 as t11| +select id, f3() from t1 as t11 order by id| id f3() a 1 b 1 @@ -1175,8 +1175,8 @@ drop function f12_2| drop view v0| drop view v1| drop view v2| -delete from t1 | -delete from t2 | +truncate table t1 | +truncate table t2 | drop table t4| drop table if exists t3| create table t3 (n int unsigned not null primary key, f bigint unsigned)| @@ -1355,7 +1355,7 @@ f 1 1 2 -delete from t3| +truncate table t3| insert into t3 values (0), (1)| call fib(10)| select * from t3 order by f asc| @@ -1814,7 +1814,7 @@ delete from t1| call bug822('foo', 42)| call bug822('foo', 42)| call bug822('bar', 666)| -select * from t1| +select * from t1 order by data| id data foo 42 bar 666 @@ -1837,7 +1837,7 @@ delete from t1 where id='foo'| insert into t1 values ('bar', 7)| call bug1495()| delete from t1 where id='bar'| -select * from t1| +select * from t1 order by data| id data less 2 more 17 @@ -1857,10 +1857,10 @@ end| insert into t1 values ("foo", 12), ("bar", 7)| call bug1547("foo")| call bug1547("bar")| -select * from t1| +select * from t1 order by id| id data -foo 12 bar 7 +foo 12 less 2 more 17 delete from t1| @@ -1908,12 +1908,12 @@ insert into t2 values ("avg", 0, y); end| insert into t1 (data) values (3), (1), (5), (9), (4)| call bug1874()| -select * from t2| +select * from t2 order by i| s i d -max 9 0 +avg 0 4.4 min 1 0 +max 9 0 sum 22 0 -avg 0 4.4 delete from t1| delete from t2| drop procedure bug1874| @@ -4466,7 +4466,7 @@ Error 1347 'test.v1' is not BASE TABLE Error 1347 'test.v1' is not BASE TABLE drop procedure bug13012| drop view v1; -select * from t1| +select * from t1 order by data| id data aa 0 aa 1 @@ -4819,7 +4819,7 @@ insert into t1 values ('c', 2), ('b', 3), ('a', 1)| create procedure bug16474_1() begin declare x int; -select id from t1 order by x; +select id from t1 order by x, id; end| drop procedure if exists bug14945| create table t3 (id int not null auto_increment primary key)| @@ -4833,30 +4833,30 @@ id drop table t3| drop procedure bug14945| create procedure bug16474_2(x int) -select id from t1 order by x| +select id from t1 order by x, id| call bug16474_1()| id -c -b a +b +c call bug16474_2(1)| id -c -b a +b +c call bug16474_2(2)| id -c -b a +b +c drop procedure bug16474_1| drop procedure bug16474_2| set @x = 2| -select * from t1 order by @x| +select * from t1 order by @x, data| id data +a 1 c 2 b 3 -a 1 delete from t1| drop function if exists bug15728| drop table if exists t3| diff --git a/mysql-test/r/timezone2.result b/mysql-test/r/timezone2.result index fe9e971af2f..af8d52a017d 100644 --- a/mysql-test/r/timezone2.result +++ b/mysql-test/r/timezone2.result @@ -70,7 +70,7 @@ i ts 1067129999 2003-10-26 00:59:59 1067137200 2003-10-26 03:00:00 1067129999 2003-10-26 00:59:59 -delete from t1; +truncate table t1; set time_zone='Europe/Moscow'; insert into t1 (i, ts) values (unix_timestamp('2004-01-01 00:00:00'),'2004-01-01 00:00:00'), @@ -85,7 +85,7 @@ i ts 1080428400 2004-03-28 03:00:00 1091304000 2003-08-01 00:00:00 1099175400 2004-10-31 02:30:00 -delete from t1; +truncate table t1; set time_zone='leap/Europe/Moscow'; insert into t1 (i, ts) values (unix_timestamp('2004-01-01 00:00:00'),'2004-01-01 00:00:00'), @@ -100,7 +100,7 @@ i ts 1080428422 2004-03-28 03:00:00 1091304022 2003-08-01 00:00:00 1099175422 2004-10-31 02:30:00 -delete from t1; +truncate table t1; insert into t1 (i, ts) values (unix_timestamp('1981-07-01 03:59:59'),'1981-07-01 03:59:59'), (unix_timestamp('1981-07-01 04:00:00'),'1981-07-01 04:00:00'); @@ -129,7 +129,7 @@ ts 1970-01-01 00:00:01 2037-12-31 23:59:59 0000-00-00 00:00:00 -delete from t1; +truncate table t1; set time_zone='MET'; insert into t1 values ('0000-00-00 00:00:00'),('1970-01-01 00:30:00'), ('1970-01-01 01:00:00'),('1970-01-01 01:00:01'), @@ -146,7 +146,7 @@ ts 1970-01-01 01:00:01 2038-01-01 00:59:59 0000-00-00 00:00:00 -delete from t1; +truncate table t1; set time_zone='+01:30'; insert into t1 values ('0000-00-00 00:00:00'),('1970-01-01 01:00:00'), ('1970-01-01 01:30:00'),('1970-01-01 01:30:01'), diff --git a/mysql-test/r/trigger-grant.result b/mysql-test/r/trigger-grant.result index 10f1e08eded..97ba38d8ba9 100644 --- a/mysql-test/r/trigger-grant.result +++ b/mysql-test/r/trigger-grant.result @@ -51,8 +51,8 @@ GRANT TRIGGER ON mysqltest_db1.t1 TO mysqltest_dfn@localhost; ---> connection: wl2818_definer_con INSERT INTO t1 VALUES(0); DROP TRIGGER trg1; -DELETE FROM t1; -DELETE FROM t2; +TRUNCATE TABLE t1; +TRUNCATE TABLE t2; ---> connection: default REVOKE SUPER ON *.* FROM mysqltest_dfn@localhost; diff --git a/mysql-test/r/type_datetime.result b/mysql-test/r/type_datetime.result index 5eba97a9eda..6f1a45f27c5 100644 --- a/mysql-test/r/type_datetime.result +++ b/mysql-test/r/type_datetime.result @@ -151,7 +151,7 @@ insert into t1 values ("0000-00-00 00:00:00 some trailer"),("2003-01-01 00:00:00 Warnings: Warning 1264 Out of range value for column 't' at row 1 Warning 1264 Out of range value for column 't' at row 2 -select * from t1; +select * from t1 order by t; t 0000-00-00 00:00:00 2003-01-01 00:00:00 diff --git a/mysql-test/r/type_ranges.result b/mysql-test/r/type_ranges.result index 0ba8916f5b1..2543d54b8e1 100644 --- a/mysql-test/r/type_ranges.result +++ b/mysql-test/r/type_ranges.result @@ -323,7 +323,7 @@ select * from t3; id_A id_B 1 1 2 NULL -delete from t3; +truncate table t3; insert into t3 select t1.id as id_A, t2.id as id_B from t1 left join t2 on (t1.id = t2.id); select * from t3; id_A id_B diff --git a/mysql-test/r/type_timestamp.result b/mysql-test/r/type_timestamp.result index 95ec7526473..6bec1e2b46b 100644 --- a/mysql-test/r/type_timestamp.result +++ b/mysql-test/r/type_timestamp.result @@ -59,7 +59,7 @@ ix+0 19990501000000 19991101000000 19990501000000 -delete from t1; +truncate table t1; insert into t1 values ("19991101000000"),("19990102030405"),("19990630232922"),("19990601000000"); select ix+0 from t1; ix+0 @@ -140,7 +140,7 @@ ix+0 0 0 0 -delete from t1; +truncate table t1; insert into t1 values ("00000000000000"),("20030101010160"),("20030101016001"),("20030101240101"),("20030132010101"),("20031301010101"),("20031200000000"),("20030000000000"); Warnings: Warning 1265 Data truncated for column 'ix' at row 2 @@ -160,7 +160,7 @@ ix+0 0 0 0 -delete from t1; +truncate table t1; insert into t1 values ("0000-00-00 00:00:00 some trailer"),("2003-01-01 00:00:00 some trailer"); Warnings: Warning 1265 Data truncated for column 'ix' at row 1 @@ -329,7 +329,7 @@ show columns from t1; Field Type Null Key Default Extra t1 timestamp YES CURRENT_TIMESTAMP t2 datetime YES NULL -delete from t1; +truncate table t1; insert into t1 values ('2004-04-01 00:00:00', '2004-04-01 00:00:00'); SET TIMESTAMP=1000000012; update t1 set t1= '2004-04-02 00:00:00'; diff --git a/mysql-test/r/view.result b/mysql-test/r/view.result index c5446ac314e..be16493ca1c 100644 --- a/mysql-test/r/view.result +++ b/mysql-test/r/view.result @@ -1106,21 +1106,21 @@ insert ignore into v1 SELECT a from t2; Warnings: Error 1369 CHECK OPTION failed 'test.v1' Error 1369 CHECK OPTION failed 'test.v1' -select * from t1; +select * from t1 order by a desc; a 1 0 update v1 set a=-1 where a=0; update v1 set a=2 where a=1; ERROR HY000: CHECK OPTION failed 'test.v1' -select * from t1; +select * from t1 order by a desc; a 1 -1 update v1 set a=0 where a=0; insert into t2 values (1); update v1,t2 set v1.a=v1.a-1 where v1.a=t2.a; -select * from t1; +select * from t1 order by a desc; a 0 -1 @@ -1310,12 +1310,12 @@ Warning 1264 Out of range value for column 'a' at row 3 Error 1369 CHECK OPTION failed 'test.v1' Warning 1264 Out of range value for column 'a' at row 4 Error 1369 CHECK OPTION failed 'test.v1' -select * from t1; +select * from t1 order by a,b; a b 1 row 1 2 row 2 3 row 3 -select * from v1; +select * from v1 order by a,b; a b 1 row 1 2 row 2 diff --git a/mysql-test/t/archive.test b/mysql-test/t/archive.test index 7e091991475..f49c8f280f4 100644 --- a/mysql-test/t/archive.test +++ b/mysql-test/t/archive.test @@ -3,6 +3,7 @@ # Taken FROM the select test # -- source include/have_archive.inc +-- source include/have_binlog_format_statement.inc --disable_warnings drop table if exists t1,t2; diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index 7cbe4419904..f355660d38e 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -35,6 +35,7 @@ rpl_row_blob_innodb : BUG#18980 2006-04-10 kent Test fails randomly rpl_row_func003 : BUG#19074 2006-13-04 andrei test failed rpl_row_inexist_tbl : BUG#18948 2006-03-09 mats Disabled since patch makes this test wait forever rpl_sp : BUG#16456 2006-02-16 jmiller +rpl_sp_effects : BUG#19862 SELECT from view with ORDER BY... udf : BUG#18564 2006-03-27 ian (Permission by Brian) # the below testcase have been reworked to avoid the bug, test contains comment, keep bug open diff --git a/mysql-test/t/federated.test b/mysql-test/t/federated.test index 3c43fb1d1f9..3b26a556dc2 100644 --- a/mysql-test/t/federated.test +++ b/mysql-test/t/federated.test @@ -83,7 +83,7 @@ eval SHOW CREATE TABLE federated.t2; INSERT INTO federated.t2 (id, name) VALUES (1, 'foo'); INSERT INTO federated.t2 (id, name) VALUES (2, 'fee'); -SELECT * FROM federated.t2; +SELECT * FROM federated.t2 ORDER BY id, name; DROP TABLE federated.t2; connection slave; @@ -110,7 +110,7 @@ eval CREATE TABLE federated.t1 ( INSERT INTO federated.t1 (id, name) VALUES (1, 'foo'); INSERT INTO federated.t1 (id, name) VALUES (2, 'fee'); -SELECT * FROM federated.t1; +SELECT * FROM federated.t1 ORDER BY id,name; DELETE FROM federated.t1; DROP TABLE IF EXISTS federated.t1; @@ -125,7 +125,7 @@ eval CREATE TABLE federated.`t1%` ( INSERT INTO federated.`t1%` (id, name) VALUES (1, 'foo'); INSERT INTO federated.`t1%` (id, name) VALUES (2, 'fee'); -SELECT * FROM federated.`t1%`; +SELECT * FROM federated.`t1%` ORDER BY id, name; DELETE FROM federated.`t1%`; DROP TABLE IF EXISTS federated.`t1%`; diff --git a/mysql-test/t/range.test b/mysql-test/t/range.test index f6493bac244..d1ce1104322 100644 --- a/mysql-test/t/range.test +++ b/mysql-test/t/range.test @@ -370,7 +370,7 @@ insert into t2(uid, name) values (25, CHAR(64+25)), (26, CHAR(64+26)); -insert into t1(uid, name) select uid, name from t2; +insert into t1(uid, name) select uid, name from t2 order by uid; delete from t2; insert into t2(id, uid, name) select id, uid, name from t1; diff --git a/mysql-test/t/rpl_sp_effects.test b/mysql-test/t/rpl_sp_effects.test index 40c9a5d0b74..e1746682b76 100644 --- a/mysql-test/t/rpl_sp_effects.test +++ b/mysql-test/t/rpl_sp_effects.test @@ -106,8 +106,8 @@ delete from t2; # 4. VIEWs delete from t1; insert into t2 values(1),(2); -create view v1 as select f1(a) from t2; -select * from v1; +create view v1 as select f1(a) as f from t2; +select * from v1 order by f; SELECT 'master:',a FROM t1 ORDER BY a; sync_slave_with_master; diff --git a/mysql-test/t/rpl_truncate_2myisam.test b/mysql-test/t/rpl_truncate_2myisam.test new file mode 100644 index 00000000000..1a2cb1d0fb3 --- /dev/null +++ b/mysql-test/t/rpl_truncate_2myisam.test @@ -0,0 +1,4 @@ + +let $engine=MyISAM; +--source extra/rpl_tests/rpl_truncate.test + diff --git a/mysql-test/t/rpl_truncate_3innodb.test b/mysql-test/t/rpl_truncate_3innodb.test new file mode 100644 index 00000000000..7f3145feb1b --- /dev/null +++ b/mysql-test/t/rpl_truncate_3innodb.test @@ -0,0 +1,5 @@ + +--source include/have_innodb.inc + +let $engine=InnoDB; +--source extra/rpl_tests/rpl_truncate.test diff --git a/mysql-test/t/rpl_truncate_7ndb.test b/mysql-test/t/rpl_truncate_7ndb.test new file mode 100644 index 00000000000..7a8101cbf55 --- /dev/null +++ b/mysql-test/t/rpl_truncate_7ndb.test @@ -0,0 +1,64 @@ + +--source include/have_ndb.inc +--source include/master-slave.inc + +--disable_query_log +--disable_warnings +connection slave; +STOP SLAVE; +connection master; +DROP TABLE IF EXISTS t1; +RESET MASTER; +connection slave; +DROP TABLE IF EXISTS t1; +RESET SLAVE; +START SLAVE; +--enable_warnings +--enable_query_log + +--echo **** On Master **** +connection master; +CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB; +INSERT INTO t1 VALUES (1,1), (2,2); +SELECT * FROM t1 ORDER BY a,b; +--echo **** On Slave **** +sync_slave_with_master; +INSERT INTO t1 VALUE (3,3); +SELECT * FROM t1 ORDER BY a,b; +--echo **** On Master **** +connection master; +TRUNCATE TABLE t1; +SELECT * FROM t1 ORDER BY a,b; +--echo **** On Slave **** +sync_slave_with_master; +# Should be empty +SELECT * FROM t1 ORDER BY a,b; +--echo **** On Master **** +connection master; +DROP TABLE t1; +--replace_regex /table_id: [0-9]+/table_id: #/ +SHOW BINLOG EVENTS; + +--echo **** On Master **** +connection master; +CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB; +INSERT INTO t1 VALUES (1,1), (2,2); +SELECT * FROM t1 ORDER BY a,b; +--echo **** On Slave **** +sync_slave_with_master; +INSERT INTO t1 VALUE (3,3); +SELECT * FROM t1 ORDER BY a,b; +--echo **** On Master **** +connection master; +DELETE FROM t1; +SELECT * FROM t1 ORDER BY a,b; +--echo **** On Slave **** +sync_slave_with_master; +# Should be empty +SELECT * FROM t1 ORDER BY a,b; +--echo **** On Master **** +connection master; +DROP TABLE t1; +--replace_regex /table_id: [0-9]+/table_id: #/ +SHOW BINLOG EVENTS; + diff --git a/mysql-test/t/show_check.test b/mysql-test/t/show_check.test index a7b24a5e06c..2f44f4e97c5 100644 --- a/mysql-test/t/show_check.test +++ b/mysql-test/t/show_check.test @@ -255,9 +255,9 @@ delete from t2 where b=3; delete from t3 where a=3; --replace_column 6 # 7 # 8 # 9 # 10 # show table status; -delete from t1; -delete from t2; -delete from t3; +truncate table t1; +truncate table t2; +truncate table t3; --replace_column 6 # 7 # 8 # 9 # show table status; insert into t1 values (5); diff --git a/mysql-test/t/sp-error.test b/mysql-test/t/sp-error.test index c9ce26b6dda..24b0d4674c5 100644 --- a/mysql-test/t/sp-error.test +++ b/mysql-test/t/sp-error.test @@ -508,7 +508,7 @@ end| insert into t1 values (666, 51.3)| --error 1054 call bug2272()| -delete from t1| +truncate table t1| drop procedure bug2272| # @@ -742,7 +742,7 @@ begin fetch c into v; end| -delete from t1| +truncate table t1| --error ER_SP_FETCH_NO_DATA call bug7299()| drop procedure bug7299| @@ -871,7 +871,7 @@ insert into t1 value (2, 2.7), (3, 3.14), (7, 7.0)| select *,bug8408() from t1| drop function bug8408| -delete from t1| +truncate table t1| # diff --git a/mysql-test/t/sp.test b/mysql-test/t/sp.test index 8ccd954eeea..6e4e403ccfb 100644 --- a/mysql-test/t/sp.test +++ b/mysql-test/t/sp.test @@ -143,7 +143,7 @@ begin end| call setcontext()| -select * from t1| +select * from t1 order by data| delete from t1| drop procedure setcontext| @@ -287,7 +287,7 @@ create procedure inc(inout io int) set io = io + 1| call iotest("io1", "io2", 1)| -select * from t1| +select * from t1 order by data desc| delete from t1| drop procedure iotest| drop procedure inc2| @@ -333,7 +333,7 @@ begin end| call cbv1()| -select * from t1| +select * from t1 order by data| delete from t1| drop procedure cbv1| drop procedure cbv2| @@ -371,7 +371,7 @@ call sub1("sub1b", (select max(i) from t2))| call sub1("sub1c", (select i,d from t2 limit 1))| call sub1("sub1d", (select 1 from (select 1) a))| call sub2("sub2")| -select * from t1| +select * from t1 order by id| select sub3((select max(i) from t2))| drop procedure sub1| drop procedure sub2| @@ -392,7 +392,7 @@ while x do end while| call a0(3)| -select * from t1| +select * from t1 order by data desc| delete from t1| drop procedure a0| @@ -408,7 +408,7 @@ while x > 0 do end while| call a(3)| -select * from t1| +select * from t1 order by data desc| delete from t1| drop procedure a| @@ -424,7 +424,7 @@ repeat until x = 0 end repeat| call b(3)| -select * from t1| +select * from t1 order by data desc| delete from t1| drop procedure b| @@ -456,7 +456,7 @@ hmm: while x > 0 do end while hmm| call c(3)| -select * from t1| +select * from t1 order by data desc| delete from t1| drop procedure c| @@ -493,7 +493,7 @@ foo: loop end loop foo| call e(3)| -select * from t1| +select * from t1 order by data desc| delete from t1| drop procedure e| @@ -514,7 +514,7 @@ end if| call f(-2)| call f(0)| call f(4)| -select * from t1| +select * from t1 order by data| delete from t1| drop procedure f| @@ -536,7 +536,7 @@ end case| call g(-42)| call g(0)| call g(1)| -select * from t1| +select * from t1 order by data| delete from t1| drop procedure g| @@ -558,7 +558,7 @@ end case| call h(0)| call h(1)| call h(17)| -select * from t1| +select * from t1 order by data| delete from t1| drop procedure h| @@ -592,7 +592,7 @@ drop procedure if exists sel1| --enable_warnings create procedure sel1() begin - select * from t1; + select * from t1 order by data; end| call sel1()| @@ -603,8 +603,8 @@ drop procedure if exists sel2| --enable_warnings create procedure sel2() begin - select * from t1; - select * from t2; + select * from t1 order by data; + select * from t2 order by s; end| call sel2()| @@ -624,7 +624,7 @@ begin end| call into_test("into", 100)| -select * from t1| +select * from t1 order by data| delete from t1| drop procedure into_test| @@ -641,7 +641,7 @@ begin end| call into_test2("into", 100)| -select id,data,@z from t1| +select id,data,@z from t1 order by data| delete from t1| drop procedure into_test2| @@ -819,9 +819,9 @@ insert into t2 values (append("a", "b"), mul(2,mul(3,4)), fun(1.7, 4, 6))| # Disable PS because double's give a bit different values --disable_ps_protocol select * from t2 where s = append("a", "b")| -select * from t2 where i = mul(4,3) or i = mul(mul(3,4),2)| +select * from t2 where i = mul(4,3) or i = mul(mul(3,4),2) order by i| select * from t2 where d = e()| -select * from t2| +select * from t2 order by i| --enable_ps_protocol delete from t2| @@ -976,8 +976,8 @@ drop procedure if exists cur2| create procedure cur2() begin declare done int default 0; - declare c1 cursor for select id,data from test.t1; - declare c2 cursor for select i from test.t2; + declare c1 cursor for select id,data from test.t1 order by id,data; + declare c2 cursor for select i from test.t2 order by i; declare continue handler for sqlstate '02000' set done = 1; open c1; @@ -1003,7 +1003,7 @@ begin end| call cur2()| -select * from t3| +select * from t3 order by i,s| delete from t1| delete from t2| drop table t3| @@ -1178,13 +1178,13 @@ create function f1() returns int return (select sum(data) from t1)| select f1()| # This should work too (and give 2 rows as result) -select id, f1() from t1| +select id, f1() from t1 order by id| # Function which uses two instances of table simultaneously create function f2() returns int - return (select data from t1 where data <= (select sum(data) from t1) limit 1)| + return (select data from t1 where data <= (select sum(data) from t1) order by data limit 1)| select f2()| -select id, f2() from t1| +select id, f2() from t1 order by id| # Function which uses the same table twice in different queries create function f3() returns int @@ -1196,17 +1196,17 @@ begin return n < m; end| select f3()| -select id, f3() from t1| +select id, f3() from t1 order by id| # Calling two functions using same table select f1(), f3()| -select id, f1(), f3() from t1| +select id, f1(), f3() from t1 order by id| # Function which uses two different tables create function f4() returns double return (select d from t1, t2 where t1.data = t2.i and t1.id= "b")| select f4()| -select s, f4() from t2| +select s, f4() from t2 order by s| # Recursive functions which due to this recursion require simultaneous # access to several instance of the same table won't work @@ -1239,7 +1239,7 @@ end| create function f7() returns int return (select sum(data) from t1 where data <= f1())| select f6()| -select id, f6() from t1| +select id, f6() from t1 order by id| # # Let us test how new locking work with views @@ -1247,12 +1247,12 @@ select id, f6() from t1| # The most trivial view create view v1 (a) as select f1()| select * from v1| -select id, a from t1, v1| +select id, a from t1, v1 order by id| select * from v1, v1 as v| # A bit more complex construction create view v2 (a) as select a*10 from v1| select * from v2| -select id, a from t1, v2| +select id, a from t1, v2 order by id| select * from v1, v2| # Nice example where the same view is used on @@ -1297,7 +1297,7 @@ select *, f0() from v0| lock tables t1 read, t1 as t11 read| # These should work well select f3()| -select id, f3() from t1 as t11| +select id, f3() from t1 as t11 order by id| # Degenerate cases work too :) select f0()| select * from v0| @@ -1407,8 +1407,8 @@ drop function f12_2| drop view v0| drop view v1| drop view v2| -delete from t1 | -delete from t2 | +truncate table t1 | +truncate table t2 | drop table t4| # End of non-bug tests @@ -1596,7 +1596,7 @@ call fib(3)| select * from t3 order by f asc| -delete from t3| +truncate table t3| # The original test, 20 levels, ran into memory limits on some machines # and builds. Try 10 instead... @@ -1693,7 +1693,6 @@ begin end if; return x; end| - select * from t1 where data = getcount("bar")| select * from t3| select getcount("zip")| @@ -2120,7 +2119,7 @@ delete from t1| call bug822('foo', 42)| call bug822('foo', 42)| call bug822('bar', 666)| -select * from t1| +select * from t1 order by data| delete from t1| drop procedure bug822| @@ -2148,7 +2147,7 @@ delete from t1 where id='foo'| insert into t1 values ('bar', 7)| call bug1495()| delete from t1 where id='bar'| -select * from t1| +select * from t1 order by data| delete from t1| drop procedure bug1495| @@ -2173,7 +2172,7 @@ end| insert into t1 values ("foo", 12), ("bar", 7)| call bug1547("foo")| call bug1547("bar")| -select * from t1| +select * from t1 order by id| delete from t1| drop procedure bug1547| @@ -2240,7 +2239,7 @@ end| insert into t1 (data) values (3), (1), (5), (9), (4)| call bug1874()| -select * from t2| +select * from t2 order by i| delete from t1| delete from t2| drop procedure bug1874| @@ -5260,7 +5259,7 @@ call bug13012()| call bug13012()| drop procedure bug13012| drop view v1; -select * from t1| +select * from t1 order by data| # # A test case for Bug#15392 "Server crashes during prepared statement @@ -5669,7 +5668,7 @@ create procedure bug16474_1() begin declare x int; - select id from t1 order by x; + select id from t1 order by x, id; end| # @@ -5689,7 +5688,7 @@ drop procedure bug14945| # This does NOT order by column index; variable is an expression. create procedure bug16474_2(x int) - select id from t1 order by x| + select id from t1 order by x, id| call bug16474_1()| call bug16474_2(1)| @@ -5699,7 +5698,7 @@ drop procedure bug16474_2| # For reference: user variables are expressions too and do not affect ordering. set @x = 2| -select * from t1 order by @x| +select * from t1 order by @x, data| delete from t1| diff --git a/mysql-test/t/timezone2.test b/mysql-test/t/timezone2.test index bfc909d6995..bad1df554d9 100644 --- a/mysql-test/t/timezone2.test +++ b/mysql-test/t/timezone2.test @@ -69,7 +69,7 @@ set time_zone='UTC'; select * from t1; -delete from t1; +truncate table t1; # Simple check for 'Europe/Moscow' time zone just for showing that it works set time_zone='Europe/Moscow'; @@ -79,7 +79,7 @@ insert into t1 (i, ts) values (unix_timestamp('2004-08-01 00:00:00'),'2003-08-01 00:00:00'), (unix_timestamp('2004-10-31 02:30:00'),'2004-10-31 02:30:00'); select * from t1; -delete from t1; +truncate table t1; # @@ -94,7 +94,7 @@ insert into t1 (i, ts) values (unix_timestamp('2004-08-01 00:00:00'),'2003-08-01 00:00:00'), (unix_timestamp('2004-10-31 02:30:00'),'2004-10-31 02:30:00'); select * from t1; -delete from t1; +truncate table t1; # Let us test leap jump insert into t1 (i, ts) values (unix_timestamp('1981-07-01 03:59:59'),'1981-07-01 03:59:59'), @@ -115,14 +115,14 @@ insert into t1 values ('0000-00-00 00:00:00'),('1969-12-31 23:59:59'), ('1970-01-01 00:00:00'),('1970-01-01 00:00:01'), ('2037-12-31 23:59:59'),('2038-01-01 00:00:00'); select * from t1; -delete from t1; +truncate table t1; # MET time zone has range shifted by one hour set time_zone='MET'; insert into t1 values ('0000-00-00 00:00:00'),('1970-01-01 00:30:00'), ('1970-01-01 01:00:00'),('1970-01-01 01:00:01'), ('2038-01-01 00:59:59'),('2038-01-01 01:00:00'); select * from t1; -delete from t1; +truncate table t1; # same for +01:30 time zone set time_zone='+01:30'; insert into t1 values ('0000-00-00 00:00:00'),('1970-01-01 01:00:00'), diff --git a/mysql-test/t/trigger-grant.test b/mysql-test/t/trigger-grant.test index 67aec1496dd..55dc3be7835 100644 --- a/mysql-test/t/trigger-grant.test +++ b/mysql-test/t/trigger-grant.test @@ -151,8 +151,8 @@ INSERT INTO t1 VALUES(0); # Cleanup for further tests. DROP TRIGGER trg1; -DELETE FROM t1; -DELETE FROM t2; +TRUNCATE TABLE t1; +TRUNCATE TABLE t2; --disconnect wl2818_definer_con diff --git a/mysql-test/t/type_datetime.test b/mysql-test/t/type_datetime.test index 4b6741b4242..f8953686c89 100644 --- a/mysql-test/t/type_datetime.test +++ b/mysql-test/t/type_datetime.test @@ -98,7 +98,7 @@ insert into t1 values select * from t1; delete from t1; insert into t1 values ("0000-00-00 00:00:00 some trailer"),("2003-01-01 00:00:00 some trailer"); -select * from t1; +select * from t1 order by t; drop table t1; # diff --git a/mysql-test/t/type_ranges.test b/mysql-test/t/type_ranges.test index 03ee91f14d8..4a897c1e440 100644 --- a/mysql-test/t/type_ranges.test +++ b/mysql-test/t/type_ranges.test @@ -162,7 +162,7 @@ select t1.id as id_A, t2.id as id_B from t1 left join t2 on (t1.id = t2.id); create table t3 (id_A integer unsigned not null, id_B integer unsigned null ); insert into t3 select t1.id as id_A, t2.id as id_B from t1 left join t2 using ( id ); select * from t3; -delete from t3; +truncate table t3; insert into t3 select t1.id as id_A, t2.id as id_B from t1 left join t2 on (t1.id = t2.id); select * from t3; drop table t3; diff --git a/mysql-test/t/type_timestamp.test b/mysql-test/t/type_timestamp.test index f96beedbebc..9b09421dd1f 100644 --- a/mysql-test/t/type_timestamp.test +++ b/mysql-test/t/type_timestamp.test @@ -41,7 +41,7 @@ drop table t1; create table t1 (ix timestamp); insert into t1 values (19991101000000),(19990102030405),(19990630232922),(19990601000000),(19990930232922),(19990531232922),(19990501000000),(19991101000000),(19990501000000); select ix+0 from t1; -delete from t1; +truncate table t1; insert into t1 values ("19991101000000"),("19990102030405"),("19990630232922"),("19990601000000"); select ix+0 from t1; drop table t1; @@ -82,10 +82,10 @@ drop table t1; create table t1 (ix timestamp); insert into t1 values (0),(20030101010160),(20030101016001),(20030101240101),(20030132010101),(20031301010101),(20031200000000),(20030000000000); select ix+0 from t1; -delete from t1; +truncate table t1; insert into t1 values ("00000000000000"),("20030101010160"),("20030101016001"),("20030101240101"),("20030132010101"),("20031301010101"),("20031200000000"),("20030000000000"); select ix+0 from t1; -delete from t1; +truncate table t1; insert into t1 values ("0000-00-00 00:00:00 some trailer"),("2003-01-01 00:00:00 some trailer"); select ix+0 from t1; drop table t1; @@ -186,7 +186,7 @@ insert into t1 (t1) values (default); select * from t1; show create table t1; show columns from t1; -delete from t1; +truncate table t1; # # Let us test some cases when auto-set should be disabled or influence diff --git a/mysql-test/t/view.test b/mysql-test/t/view.test index 6094382c094..0b07057a749 100644 --- a/mysql-test/t/view.test +++ b/mysql-test/t/view.test @@ -1035,18 +1035,18 @@ create table t2 (a int); insert into t2 values (2),(3),(0); # INSERT SELECT with ignore test insert ignore into v1 SELECT a from t2; -select * from t1; +select * from t1 order by a desc; #simple UPDATE test update v1 set a=-1 where a=0; -- error 1369 update v1 set a=2 where a=1; -select * from t1; +select * from t1 order by a desc; # prepare data for next check update v1 set a=0 where a=0; insert into t2 values (1); # multiupdate test update v1,t2 set v1.a=v1.a-1 where v1.a=t2.a; -select * from t1; +select * from t1 order by a desc; # prepare data for next check update v1 set a=a+1; # multiupdate with ignore test @@ -1226,8 +1226,8 @@ select * from t1; select * from v1; delete from t1; load data infile '../std_data_ln/loaddata3.dat' ignore into table v1 fields terminated by '' enclosed by '' ignore 1 lines; -select * from t1; -select * from v1; +select * from t1 order by a,b; +select * from v1 order by a,b; drop view v1; drop table t1; # variable length fields diff --git a/sql/sql_class.h b/sql/sql_class.h index 54f256997d0..93854c42500 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -1389,6 +1389,10 @@ public: { current_stmt_binlog_row_based= 1; } + inline void clear_current_stmt_binlog_row_based() + { + current_stmt_binlog_row_based= 0; + } inline void reset_current_stmt_binlog_row_based() { current_stmt_binlog_row_based= test(variables.binlog_format == BINLOG_FORMAT_ROW); diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index 44b0fe1a2f1..92ddff58dd5 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -42,8 +42,6 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, ha_rows deleted= 0; uint usable_index= MAX_KEY; SELECT_LEX *select_lex= &thd->lex->select_lex; - bool ha_delete_all_rows= 0; - ulonglong const saved_options= thd->options; DBUG_ENTER("mysql_delete"); if (open_and_lock_tables(thd, table_list)) @@ -75,20 +73,19 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, Test if the user wants to delete all rows and deletion doesn't have any side-effects (because of triggers), so we can use optimized handler::delete_all_rows() method. + + If row-based replication is used, we also delete the table row by + row. */ if (!using_limit && const_cond && (!conds || conds->val_int()) && !(specialflag & (SPECIAL_NO_NEW_FUNC | SPECIAL_SAFE_MODE)) && - !(table->triggers && table->triggers->has_delete_triggers())) + !(table->triggers && table->triggers->has_delete_triggers()) && + !thd->current_stmt_binlog_row_based) { /* Update the table->file->records number */ table->file->info(HA_STATUS_VARIABLE | HA_STATUS_NO_LOCK); ha_rows const maybe_deleted= table->file->records; - /* - If all rows shall be deleted, we (almost) always log this - statement-based (see [binlog], below), so we set this flag and - test it below. - */ - ha_delete_all_rows= 1; + DBUG_PRINT("debug", ("Trying to use delete_all_rows()")); if (!(error=table->file->delete_all_rows())) { error= -1; // ok @@ -218,14 +215,6 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, thd->proc_info="updating"; will_batch= !table->file->start_bulk_delete(); - /* - We saved the thread options above before clearing the - OPTION_BIN_LOG, and will restore below, effectively disabling the - binary log (unless it was already disabled, of course). - */ - if (ha_delete_all_rows) - thd->options&= ~static_cast(OPTION_BIN_LOG); - while (!(error=info.read_record(&info)) && !thd->killed && !thd->net.report_error) { @@ -317,12 +306,6 @@ cleanup: delete select; transactional_table= table->file->has_transactions(); - /* - Restore the saved value of the OPTION_BIN_LOG bit in the thread - options before executing binlog_query() below. - */ - thd->options|= (saved_options & OPTION_BIN_LOG); - /* See similar binlogging code in sql_update.cc, for comments */ if ((error < 0) || (deleted && !transactional_table)) { @@ -337,11 +320,7 @@ cleanup: statement-based; otherwise, 'ha_delete_row()' was used to delete specific rows which we might log row-based. */ - THD::enum_binlog_query_type const - query_type(ha_delete_all_rows && !table->file->is_injective() ? - THD::STMT_QUERY_TYPE : - THD::ROW_QUERY_TYPE); - int log_result= thd->binlog_query(query_type, + int log_result= thd->binlog_query(THD::ROW_QUERY_TYPE, thd->query, thd->query_length, transactional_table, FALSE); @@ -998,6 +977,7 @@ trunc_by_del: thd->options&= ~(ulong) (OPTION_BEGIN | OPTION_NOT_AUTOCOMMIT); ha_enable_transaction(thd, FALSE); mysql_init_select(thd->lex); + thd->clear_current_stmt_binlog_row_based(); error= mysql_delete(thd, table_list, (COND*) 0, (SQL_LIST*) 0, HA_POS_ERROR, LL(0), TRUE); ha_enable_transaction(thd, TRUE); -- cgit v1.2.1 From eeb8d4c8b4e43e672286d4a148c808816f4aa83f Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 1 Jun 2006 18:08:57 +0500 Subject: BUG#19192 - CHECK TABLE EXTENDED / REPAIR TABLE show no errors. ALTER TABLE crashes Executing fast alter table (one that doesn't need to copy data) on tables created by mysql versions prior to 4.0.25 could result in posterior server crash when accessing these tables. There was a bug prior to mysql-4.0.25. Number of null fields was calculated incorrectly. As a result frm and data files gets out of sync after fast alter table. There is no way to determine by which mysql version (in 4.0 and 4.1 branches) table was created, thus we disable fast alter table for all tables created by mysql versions prior to 5.0 branch. See BUG#6236. sql/sql_table.cc: There was a bug prior to mysql-4.0.25. Number of null fields was calculated incorrectly. As a result frm and data files gets out of sync after fast alter table. There is no way to determine by which mysql version (in 4.0 and 4.1 branches) table was created, thus we disable fast alter table for all tables created by mysql versions prior to 5.0 branch. See BUG#6236. --- sql/sql_table.cc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 9ec8e8db1fb..275cfbaa088 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -3614,12 +3614,21 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, their layout. See Field_string::type() for details. Thus, if the table is too old we may have to rebuild the data to update the layout. + + There was a bug prior to mysql-4.0.25. Number of null fields was + calculated incorrectly. As a result frm and data files gets out of + sync after fast alter table. There is no way to determine by which + mysql version (in 4.0 and 4.1 branches) table was created, thus we + disable fast alter table for all tables created by mysql versions + prior to 5.0 branch. + See BUG#6236. */ need_copy_table= (alter_info->flags & ~(ALTER_CHANGE_COLUMN_DEFAULT|ALTER_OPTIONS) || (create_info->used_fields & ~(HA_CREATE_USED_COMMENT|HA_CREATE_USED_PASSWORD)) || table->s->tmp_table || + !table->s->mysql_version || (table->s->frm_version < FRM_VER_TRUE_VARCHAR && varchar)); create_info->frm_only= !need_copy_table; -- cgit v1.2.1 From 3390eaa08582d9c0d0e12db7259ae00ede9741e7 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 2 Jun 2006 12:04:03 +0300 Subject: Bug #4981: 4.x and 5.x produce non-optimal execution path, 3.23 regression test failure The member SEL_ARG::min_flag was not initialized, due to which the condition for no GEOM_FLAG in function key_or did not choose "Range checked for each record" as the correct access method. mysql-test/r/select.result: testcase for 'Range checked' access method mysql-test/t/select.test: testcase for 'Range checked' access method sql/opt_range.cc: All of the class members initialized --- mysql-test/r/select.result | 14 ++++++++++++++ mysql-test/t/select.test | 14 ++++++++++++++ sql/opt_range.cc | 2 +- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result index b80ca2b195e..5511a4bb66b 100644 --- a/mysql-test/r/select.result +++ b/mysql-test/r/select.result @@ -2714,3 +2714,17 @@ select * from t1 where f1 in (select f3 from t2 where (f3,f4)= (select f3,f4 fro f1 f2 1 1 drop table t1,t2; +CREATE TABLE t1(a int, b int, c int, KEY b(b), KEY c(c)); +insert into t1 values (1,0,0),(2,0,0); +CREATE TABLE t2 (a int, b varchar(2), c varchar(2), PRIMARY KEY(a)); +insert into t2 values (1,'',''), (2,'',''); +CREATE TABLE t3 (a int, b int, PRIMARY KEY (a,b), KEY a (a), KEY b (b)); +insert into t3 values (1,1),(1,2); +explain select straight_join DISTINCT t2.a,t2.b, t1.c from t1, t3, t2 +where (t1.c=t2.a or (t1.c=t3.a and t2.a=t3.b)) and t1.b=556476786 and +t2.b like '%%' order by t2.b limit 0,1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ref b,c b 5 const 1 Using where; Using temporary; Using filesort +1 SIMPLE t3 index PRIMARY,a,b PRIMARY 8 NULL 2 Using index +1 SIMPLE t2 ALL PRIMARY NULL NULL NULL 2 Range checked for each record (index map: 0x1) +DROP TABLE t1,t2,t3; diff --git a/mysql-test/t/select.test b/mysql-test/t/select.test index 996d5854854..3dcc16f1625 100644 --- a/mysql-test/t/select.test +++ b/mysql-test/t/select.test @@ -2248,4 +2248,18 @@ insert into t2 values(1,1); select * from t1 where f1 in (select f3 from t2 where (f3,f4)= (select f3,f4 from t2)); drop table t1,t2; +# +# Bug #4981: 4.x and 5.x produce non-optimal execution path, 3.23 regression test failure +# +CREATE TABLE t1(a int, b int, c int, KEY b(b), KEY c(c)); +insert into t1 values (1,0,0),(2,0,0); +CREATE TABLE t2 (a int, b varchar(2), c varchar(2), PRIMARY KEY(a)); +insert into t2 values (1,'',''), (2,'',''); +CREATE TABLE t3 (a int, b int, PRIMARY KEY (a,b), KEY a (a), KEY b (b)); +insert into t3 values (1,1),(1,2); +# must have "range checked" for t2 +explain select straight_join DISTINCT t2.a,t2.b, t1.c from t1, t3, t2 + where (t1.c=t2.a or (t1.c=t3.a and t2.a=t3.b)) and t1.b=556476786 and + t2.b like '%%' order by t2.b limit 0,1; +DROP TABLE t1,t2,t3; # End of 4.1 tests diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 71f937f90c6..67141aab6ce 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -64,7 +64,7 @@ public: uint8 min_flag, uint8 max_flag, uint8 maybe_flag); SEL_ARG(enum Type type_arg) :elements(1),use_count(1),left(0),next_key_part(0),color(BLACK), - type(type_arg) + type(type_arg),min_flag(0) {} inline bool is_same(SEL_ARG *arg) { -- cgit v1.2.1 From 08440d2876e42802ee7ef86be6085029f862893d Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 2 Jun 2006 15:47:06 +0200 Subject: Bug#19995 (Extreneous table maps generated for statements that does not generate rows): Comment change. sql/handler.cc: Comment change --- sql/handler.cc | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/sql/handler.cc b/sql/handler.cc index dfa3789f6a0..e6f2f564d39 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -3199,16 +3199,27 @@ namespace { } } -/** +/* Write table maps for all (manually or automatically) locked tables to the binary log. - This function will generate and write table maps for all tables - that are locked by the thread 'thd'. Either manually locked - (stored in THD::locked_tables) and automatically locked (stored in - THD::lock) are considered. + SYNOPSIS + write_locked_table_maps() + thd Pointer to THD structure + + DESCRIPTION + This function will generate and write table maps for all tables + that are locked by the thread 'thd'. Either manually locked + (stored in THD::locked_tables) and automatically locked (stored + in THD::lock) are considered. - See THD::lock and THD::locked_tables for more information. + RETURN VALUE + 0 All OK + 1 Failed to write all table maps + + SEE ALSO + THD::lock + THD::locked_tables */ static int write_locked_table_maps(THD *thd) -- cgit v1.2.1 From ea3f845325ba6db648f20c21564d9f2b54b2db9e Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 2 Jun 2006 17:22:21 +0300 Subject: bad merge fixed for b4981. --- mysql-test/r/select.result | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result index ea8ae804ac3..bcf4c9c27fe 100644 --- a/mysql-test/r/select.result +++ b/mysql-test/r/select.result @@ -2716,6 +2716,20 @@ select * from t1 where f1 in (select f3 from t2 where (f3,f4)= (select f3,f4 fro f1 f2 1 1 drop table t1,t2; +CREATE TABLE t1(a int, b int, c int, KEY b(b), KEY c(c)); +insert into t1 values (1,0,0),(2,0,0); +CREATE TABLE t2 (a int, b varchar(2), c varchar(2), PRIMARY KEY(a)); +insert into t2 values (1,'',''), (2,'',''); +CREATE TABLE t3 (a int, b int, PRIMARY KEY (a,b), KEY a (a), KEY b (b)); +insert into t3 values (1,1),(1,2); +explain select straight_join DISTINCT t2.a,t2.b, t1.c from t1, t3, t2 +where (t1.c=t2.a or (t1.c=t3.a and t2.a=t3.b)) and t1.b=556476786 and +t2.b like '%%' order by t2.b limit 0,1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ref b,c b 5 const 1 Using where; Using temporary; Using filesort +1 SIMPLE t3 index PRIMARY,a,b PRIMARY 8 NULL 2 Using index +1 SIMPLE t2 ALL PRIMARY NULL NULL NULL 2 Range checked for each record (index map: 0x1) +DROP TABLE t1,t2,t3; CREATE TABLE t1 ( city char(30) ); INSERT INTO t1 VALUES ('London'); INSERT INTO t1 VALUES ('Paris'); @@ -3446,17 +3460,3 @@ id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range PRIMARY,b b 5 NULL 3 Using where 1 SIMPLE t2 ref c c 5 test.t1.a 2 Using where DROP TABLE t1, t2; -CREATE TABLE t1(a int, b int, c int, KEY b(b), KEY c(c)); -insert into t1 values (1,0,0),(2,0,0); -CREATE TABLE t2 (a int, b varchar(2), c varchar(2), PRIMARY KEY(a)); -insert into t2 values (1,'',''), (2,'',''); -CREATE TABLE t3 (a int, b int, PRIMARY KEY (a,b), KEY a (a), KEY b (b)); -insert into t3 values (1,1),(1,2); -explain select straight_join DISTINCT t2.a,t2.b, t1.c from t1, t3, t2 -where (t1.c=t2.a or (t1.c=t3.a and t2.a=t3.b)) and t1.b=556476786 and -t2.b like '%%' order by t2.b limit 0,1; -id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t1 ref b,c b 5 const 1 Using where; Using temporary; Using filesort -1 SIMPLE t3 index PRIMARY,a,b PRIMARY 8 NULL 2 Using index -1 SIMPLE t2 ALL PRIMARY NULL NULL NULL 2 Range checked for each record (index map: 0x1) -DROP TABLE t1,t2,t3; -- cgit v1.2.1 From cbbd0fdb2c14984e8abf5f9dc8ee8280eda367a9 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 2 Jun 2006 18:02:22 +0300 Subject: Removed duplicate tests from select.test --- mysql-test/r/select.result | 101 --------------------------------------------- mysql-test/t/select.test | 94 ----------------------------------------- 2 files changed, 195 deletions(-) diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result index bcf4c9c27fe..4c1e64cc1cb 100644 --- a/mysql-test/r/select.result +++ b/mysql-test/r/select.result @@ -2656,16 +2656,6 @@ t11 MyISAM 10 Dynamic 0 0 X X X X X X X X latin1_swedish_ci NULL select 123 as a from t1 where f1 is null; a drop table t1,t11; -CREATE TABLE t1 (a INT, b INT); -(SELECT a, b AS c FROM t1) ORDER BY c+1; -a c -(SELECT a, b AS c FROM t1) ORDER BY b+1; -a c -SELECT a, b AS c FROM t1 ORDER BY c+1; -a c -SELECT a, b AS c FROM t1 ORDER BY b+1; -a c -drop table t1; CREATE TABLE t1 ( a INT NOT NULL, b INT NOT NULL, UNIQUE idx (a,b) ); INSERT INTO t1 VALUES (1,1),(1,2),(1,3),(1,4); CREATE TABLE t2 ( a INT NOT NULL, b INT NOT NULL, e INT ); @@ -2730,61 +2720,6 @@ id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t3 index PRIMARY,a,b PRIMARY 8 NULL 2 Using index 1 SIMPLE t2 ALL PRIMARY NULL NULL NULL 2 Range checked for each record (index map: 0x1) DROP TABLE t1,t2,t3; -CREATE TABLE t1 ( city char(30) ); -INSERT INTO t1 VALUES ('London'); -INSERT INTO t1 VALUES ('Paris'); -SELECT * FROM t1 WHERE city='London'; -city -London -SELECT * FROM t1 WHERE city='london'; -city -London -EXPLAIN SELECT * FROM t1 WHERE city='London' AND city='london'; -id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using where -SELECT * FROM t1 WHERE city='London' AND city='london'; -city -London -EXPLAIN SELECT * FROM t1 WHERE city LIKE '%london%' AND city='London'; -id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using where -SELECT * FROM t1 WHERE city LIKE '%london%' AND city='London'; -city -London -DROP TABLE t1; -create table t1 (a int(11) unsigned, b int(11) unsigned); -insert into t1 values (1,0), (1,1), (1,2); -select a-b from t1 order by 1; -a-b -0 -1 -18446744073709551615 -select a-b , (a-b < 0) from t1 order by 1; -a-b (a-b < 0) -0 0 -1 0 -18446744073709551615 0 -select a-b as d, (a-b >= 0), b from t1 group by b having d >= 0; -d (a-b >= 0) b -1 1 0 -0 1 1 -18446744073709551615 1 2 -select cast((a - b) as unsigned) from t1 order by 1; -cast((a - b) as unsigned) -0 -1 -18446744073709551615 -drop table t1; -create table t1 (a int(11)); -select all all * from t1; -a -select distinct distinct * from t1; -a -select all distinct * from t1; -ERROR HY000: Incorrect usage of ALL and DISTINCT -select distinct all * from t1; -ERROR HY000: Incorrect usage of ALL and DISTINCT -drop table t1; CREATE TABLE t1 ( K2C4 varchar(4) character set latin1 collate latin1_bin NOT NULL default '', K4N4 varchar(4) character set latin1 collate latin1_bin NOT NULL default '0000', @@ -2818,19 +2753,6 @@ WART 0100 1 WART 0200 1 WART 0300 3 DROP TABLE t1; -CREATE TABLE t1 ( a BLOB, INDEX (a(20)) ); -CREATE TABLE t2 ( a BLOB, INDEX (a(20)) ); -INSERT INTO t1 VALUES ('one'),('two'),('three'),('four'),('five'); -INSERT INTO t2 VALUES ('one'),('two'),('three'),('four'),('five'); -EXPLAIN SELECT * FROM t1 LEFT JOIN t2 USE INDEX (a) ON t1.a=t2.a; -id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t1 ALL NULL NULL NULL NULL 5 -1 SIMPLE t2 ref a a 23 test.t1.a 2 -EXPLAIN SELECT * FROM t1 LEFT JOIN t2 FORCE INDEX (a) ON t1.a=t2.a; -id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t1 ALL NULL NULL NULL NULL 5 -1 SIMPLE t2 ref a a 23 test.t1.a 2 -DROP TABLE t1, t2; create table t1 (a int, b int); create table t2 like t1; select t1.a from (t1 inner join t2 on t1.a=t2.a) where t2.a=1; @@ -2861,29 +2783,6 @@ x NULL 1.0000 drop table t1; -create table t1 (a int(11)); -select all all * from t1; -a -select distinct distinct * from t1; -a -select all distinct * from t1; -ERROR HY000: Incorrect usage of ALL and DISTINCT -select distinct all * from t1; -ERROR HY000: Incorrect usage of ALL and DISTINCT -drop table t1; -CREATE TABLE t1 ( a BLOB, INDEX (a(20)) ); -CREATE TABLE t2 ( a BLOB, INDEX (a(20)) ); -INSERT INTO t1 VALUES ('one'),('two'),('three'),('four'),('five'); -INSERT INTO t2 VALUES ('one'),('two'),('three'),('four'),('five'); -EXPLAIN SELECT * FROM t1 LEFT JOIN t2 USE INDEX (a) ON t1.a=t2.a; -id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t1 ALL NULL NULL NULL NULL 5 -1 SIMPLE t2 ref a a 23 test.t1.a 2 -EXPLAIN SELECT * FROM t1 LEFT JOIN t2 FORCE INDEX (a) ON t1.a=t2.a; -id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t1 ALL NULL NULL NULL NULL 5 -1 SIMPLE t2 ref a a 23 test.t1.a 2 -DROP TABLE t1, t2; CREATE TABLE t1 (a int); CREATE TABLE t2 (a int); INSERT INTO t1 VALUES (1), (2), (3), (4), (5); diff --git a/mysql-test/t/select.test b/mysql-test/t/select.test index 6e7882b1047..4ed7c3d1de9 100644 --- a/mysql-test/t/select.test +++ b/mysql-test/t/select.test @@ -2217,15 +2217,6 @@ show table status like 't1%'; select 123 as a from t1 where f1 is null; drop table t1,t11; -# Bug 7672 Unknown column error in order clause -# -CREATE TABLE t1 (a INT, b INT); -(SELECT a, b AS c FROM t1) ORDER BY c+1; -(SELECT a, b AS c FROM t1) ORDER BY b+1; -SELECT a, b AS c FROM t1 ORDER BY c+1; -SELECT a, b AS c FROM t1 ORDER BY b+1; -drop table t1; - # # Bug #3874 (function in GROUP and LEFT JOIN) # @@ -2280,48 +2271,6 @@ explain select straight_join DISTINCT t2.a,t2.b, t1.c from t1, t3, t2 DROP TABLE t1,t2,t3; # End of 4.1 tests -# -# Test case for bug 7098: substitution of a constant for a string field -# - -CREATE TABLE t1 ( city char(30) ); -INSERT INTO t1 VALUES ('London'); -INSERT INTO t1 VALUES ('Paris'); - -SELECT * FROM t1 WHERE city='London'; -SELECT * FROM t1 WHERE city='london'; -EXPLAIN SELECT * FROM t1 WHERE city='London' AND city='london'; -SELECT * FROM t1 WHERE city='London' AND city='london'; -EXPLAIN SELECT * FROM t1 WHERE city LIKE '%london%' AND city='London'; -SELECT * FROM t1 WHERE city LIKE '%london%' AND city='London'; - -DROP TABLE t1; - -# -# Bug#7425 inconsistent sort order on unsigned columns result of substraction -# - -create table t1 (a int(11) unsigned, b int(11) unsigned); -insert into t1 values (1,0), (1,1), (1,2); -select a-b from t1 order by 1; -select a-b , (a-b < 0) from t1 order by 1; -select a-b as d, (a-b >= 0), b from t1 group by b having d >= 0; -select cast((a - b) as unsigned) from t1 order by 1; -drop table t1; - - -# -# Bug#8733 server accepts malformed query (multiply mentioned distinct) -# -create table t1 (a int(11)); -select all all * from t1; -select distinct distinct * from t1; ---error 1221 -select all distinct * from t1; ---error 1221 -select distinct all * from t1; -drop table t1; - # # Test for bug #6474 # @@ -2356,21 +2305,6 @@ SELECT K2C4, K4N4, F2I4 FROM t1 WHERE K2C4 = 'WART' AND (K2C4 = 'WART' OR K4N4 = '0200'); DROP TABLE t1; -# -# Test case for bug 7520: a wrong cost of the index for a BLOB field -# - -CREATE TABLE t1 ( a BLOB, INDEX (a(20)) ); -CREATE TABLE t2 ( a BLOB, INDEX (a(20)) ); - -INSERT INTO t1 VALUES ('one'),('two'),('three'),('four'),('five'); -INSERT INTO t2 VALUES ('one'),('two'),('three'),('four'),('five'); - -EXPLAIN SELECT * FROM t1 LEFT JOIN t2 USE INDEX (a) ON t1.a=t2.a; -EXPLAIN SELECT * FROM t1 LEFT JOIN t2 FORCE INDEX (a) ON t1.a=t2.a; - -DROP TABLE t1, t2; - # # Bug#8670 # @@ -2409,34 +2343,6 @@ select distinct avg(s1) as x from t1 group by s1 with rollup; drop table t1; -# -# Bug#8733 server accepts malformed query (multiply mentioned distinct) -# -create table t1 (a int(11)); -select all all * from t1; -select distinct distinct * from t1; ---error 1221 -select all distinct * from t1; ---error 1221 -select distinct all * from t1; -drop table t1; - - -# -# Test case for bug 7520: a wrong cost of the index for a BLOB field -# - -CREATE TABLE t1 ( a BLOB, INDEX (a(20)) ); -CREATE TABLE t2 ( a BLOB, INDEX (a(20)) ); - -INSERT INTO t1 VALUES ('one'),('two'),('three'),('four'),('five'); -INSERT INTO t2 VALUES ('one'),('two'),('three'),('four'),('five'); - -EXPLAIN SELECT * FROM t1 LEFT JOIN t2 USE INDEX (a) ON t1.a=t2.a; -EXPLAIN SELECT * FROM t1 LEFT JOIN t2 FORCE INDEX (a) ON t1.a=t2.a; - -DROP TABLE t1, t2; - # # Test for bug #10084: STRAIGHT_JOIN with ON expression # -- cgit v1.2.1 From e3e0658779bffacd5323efb54ecb7f42ded19231 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 2 Jun 2006 14:14:57 -0700 Subject: Fixed bug #18206. The bug report revealed two problems related to min/max optimization: 1. If the length of a constant key used in a SARGable condition for for the MIN/MAX fields is greater than the length of the field an unwanted warning on key truncation is issued; 2. If MIN/MAX optimization is applied to a partial index, like INDEX(b(4)) than can lead to returning a wrong result set. mysql-test/r/func_group.result: Added test cases for bug #18206. mysql-test/t/func_group.test: Added test cases for bug #18206. sql/opt_sum.cc: Fixed bug #18206. Suppressed the warning about data truncation when store_val_in_field was used to store keys for the field used in MIN/MAX optimization. Blocked MIN/MAX optimization for partial keys, such as in INDEX(b(4)). sql/sql_select.cc: Fixed bug #18206. Added a parameter for the function store_val_in_field allowing to control setting warnings about data truncation in the function. sql/sql_select.h: Fixed bug #18206. Added a parameter for the function store_val_in_field allowing to control setting warnings about data truncation in the function. --- mysql-test/r/func_group.result | 24 ++++++++++++++++++++++++ mysql-test/t/func_group.test | 19 +++++++++++++++++++ sql/opt_sum.cc | 17 ++++++++++++++--- sql/sql_select.cc | 6 +++--- sql/sql_select.h | 2 +- 5 files changed, 61 insertions(+), 7 deletions(-) diff --git a/mysql-test/r/func_group.result b/mysql-test/r/func_group.result index 67966b999d4..ffa68f279f3 100644 --- a/mysql-test/r/func_group.result +++ b/mysql-test/r/func_group.result @@ -916,3 +916,27 @@ select count(*), min(7), max(7) from t2m, t1i; count(*) min(7) max(7) 0 NULL NULL drop table t1m, t1i, t2m, t2i; +CREATE TABLE t1 (id int PRIMARY KEY, b char(3), INDEX(b)); +INSERT INTO t1 VALUES (1,'xx'), (2,'aa'); +SELECT * FROM t1; +id b +1 xx +2 aa +SELECT MAX(b) FROM t1 WHERE b < 'ppppp'; +MAX(b) +aa +SHOW WARNINGS; +Level Code Message +SELECT MAX(b) FROM t1 WHERE b < 'pp'; +MAX(b) +aa +DROP TABLE t1; +CREATE TABLE t1 (id int PRIMARY KEY, b char(16), INDEX(b(4))); +INSERT INTO t1 VALUES (1, 'xxxxbbbb'), (2, 'xxxxaaaa'); +SELECT MAX(b) FROM t1; +MAX(b) +xxxxbbbb +EXPLAIN SELECT MAX(b) FROM t1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 2 +DROP TABLE t1; diff --git a/mysql-test/t/func_group.test b/mysql-test/t/func_group.test index dc647dbcfeb..f8a3ed0f25e 100644 --- a/mysql-test/t/func_group.test +++ b/mysql-test/t/func_group.test @@ -598,4 +598,23 @@ select count(*), min(7), max(7) from t2m, t1i; drop table t1m, t1i, t2m, t2i; +# +# Bug #18206: min/max optimization cannot be applied to partial index +# + +CREATE TABLE t1 (id int PRIMARY KEY, b char(3), INDEX(b)); +INSERT INTO t1 VALUES (1,'xx'), (2,'aa'); +SELECT * FROM t1; + +SELECT MAX(b) FROM t1 WHERE b < 'ppppp'; +SHOW WARNINGS; +SELECT MAX(b) FROM t1 WHERE b < 'pp'; +DROP TABLE t1; + +CREATE TABLE t1 (id int PRIMARY KEY, b char(16), INDEX(b(4))); +INSERT INTO t1 VALUES (1, 'xxxxbbbb'), (2, 'xxxxaaaa'); +SELECT MAX(b) FROM t1; +EXPLAIN SELECT MAX(b) FROM t1; +DROP TABLE t1; + # End of 4.1 tests diff --git a/sql/opt_sum.cc b/sql/opt_sum.cc index cfb5b3695a3..82211120c57 100644 --- a/sql/opt_sum.cc +++ b/sql/opt_sum.cc @@ -543,6 +543,10 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo, break; // Found a part od the key for the field } +#if 0 + if (part->length != (((Item_field*) args[0])->field)->field_length) + return 0; +#endif bool is_field_part= part == field_part; if (!(is_field_part || eq_type)) return 0; @@ -582,7 +586,8 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo, } else { - store_val_in_field(part->field, args[between && max_fl ? 2 : 1]); + store_val_in_field(part->field, args[between && max_fl ? 2 : 1], + CHECK_FIELD_IGNORE); if (part->null_bit) *key_ptr++= (byte) test(part->field->is_null()); part->field->get_key_image((char*) key_ptr, part->length, @@ -638,6 +643,8 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo, field BETWEEN const1 AND const2 3. all references to the columns from the same table as column field occur only in conjucts mentioned above. + 4. each of k first components the index is not partial, i.e. is not + defined on a fixed length proper prefix of the field. If such an index exists the function through the ref parameter returns the key value to find max/min for the field using the index, @@ -647,8 +654,8 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo, of the whole search key) NOTE - This function may set table->key_read to 1, which must be reset after - index is used! (This can only happen when function returns 1) + This function may set table->key_read to 1, which must be reset after + index is used! (This can only happen when function returns 1) RETURN 0 Index can not be used to optimize MIN(field)/MAX(field) @@ -682,6 +689,10 @@ static bool find_key_for_maxmin(bool max_fl, TABLE_REF *ref, if (!(table->file->index_flags(idx, jdx, 0) & HA_READ_ORDER)) return 0; + /* Check whether the index component is partial */ + if (part->length < table->field[part->fieldnr-1]->pack_length()) + break; + if (field->eq(part->field)) { ref->key= idx; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 57fb9738612..5a7e9e52aed 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -3434,7 +3434,7 @@ get_store_key(THD *thd, KEYUSE *keyuse, table_map used_tables, */ bool -store_val_in_field(Field *field,Item *item) +store_val_in_field(Field *field, Item *item, enum_check_fields check_flag) { bool error; THD *thd=current_thd; @@ -3445,7 +3445,7 @@ store_val_in_field(Field *field,Item *item) with select_insert, which make count_cuted_fields= 1 */ enum_check_fields old_count_cuted_fields= thd->count_cuted_fields; - thd->count_cuted_fields= CHECK_FIELD_WARN; + thd->count_cuted_fields= check_flag; error= item->save_in_field(field, 1); thd->count_cuted_fields= old_count_cuted_fields; return error || cuted_fields != thd->cuted_fields; @@ -7097,7 +7097,7 @@ static bool test_if_ref(Item_field *left_item,Item *right_item) field->real_type() != FIELD_TYPE_VAR_STRING && (field->type() != FIELD_TYPE_FLOAT || field->decimals() == 0)) { - return !store_val_in_field(field,right_item); + return !store_val_in_field(field, right_item, CHECK_FIELD_WARN); } } } diff --git a/sql/sql_select.h b/sql/sql_select.h index 94cc8839466..75cd0b4d797 100644 --- a/sql/sql_select.h +++ b/sql/sql_select.h @@ -335,7 +335,7 @@ extern const char *join_type_str[]; void TEST_join(JOIN *join); /* Extern functions in sql_select.cc */ -bool store_val_in_field(Field *field,Item *val); +bool store_val_in_field(Field *field, Item *val, enum_check_fields check_flag); TABLE *create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List &fields, ORDER *group, bool distinct, bool save_sum_fields, ulong select_options, ha_rows rows_limit, -- cgit v1.2.1 From e815f93bbfffd0ddc2c54df1b32c307b1f19c4b7 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 2 Jun 2006 19:15:32 -0700 Subject: Cleanup for the fix of bug 18206. sql/opt_sum.cc: Cleanup --- sql/opt_sum.cc | 4 ---- 1 file changed, 4 deletions(-) diff --git a/sql/opt_sum.cc b/sql/opt_sum.cc index 82211120c57..97e271121d3 100644 --- a/sql/opt_sum.cc +++ b/sql/opt_sum.cc @@ -543,10 +543,6 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo, break; // Found a part od the key for the field } -#if 0 - if (part->length != (((Item_field*) args[0])->field)->field_length) - return 0; -#endif bool is_field_part= part == field_part; if (!(is_field_part || eq_type)) return 0; -- cgit v1.2.1 From b23b410584be6d4766ac76b274c310798c571e66 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 5 Jun 2006 03:50:32 +0400 Subject: fix test failure in the team tree storage/csv/ha_tina.cc: fix windows csv test failure --- storage/csv/ha_tina.cc | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/storage/csv/ha_tina.cc b/storage/csv/ha_tina.cc index 35d7fc8d4a3..934df0c054e 100644 --- a/storage/csv/ha_tina.cc +++ b/storage/csv/ha_tina.cc @@ -503,28 +503,25 @@ int tina_end(ha_panic_function type) off_t find_eoln_buff(Transparent_file *data_buff, off_t begin, off_t end, int *eoln_len) { + *eoln_len= 0; + for (off_t x= begin; x < end; x++) { /* Unix (includes Mac OS X) */ if (data_buff->get_value(x) == '\n') - { *eoln_len= 1; - return x; - } - if (data_buff->get_value(x) == '\r') // Mac or Dos - { - /* old Mac line ending */ - if (x + 1 == end || (data_buff->get_value(x + 1) != '\n')) - { - *eoln_len= 1; - return x; - } - else // DOS style ending + else + if (data_buff->get_value(x) == '\r') // Mac or Dos { - *eoln_len= 2; - return x + 1; + /* old Mac line ending */ + if (x + 1 == end || (data_buff->get_value(x + 1) != '\n')) + *eoln_len= 1; + else // DOS style ending + *eoln_len= 2; } - } + + if (*eoln_len) // end of line was found + return x; } return 0; -- cgit v1.2.1 From b092d16c882aceb3c6f931ccdb00f29296cfbf98 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 5 Jun 2006 05:34:34 +0400 Subject: WL #3153 "Split logs" post-review fixes (after andrei's review) sql/log.cc: post-review fixes: * split log_type to log_state and log_type * rename log_type to log_table_type where appropriate (to avoid confusion) * merge MYSQL_SLOW_LOG and MYSQL_GENERAL_LOG to MYSQL_QUERY_LOG sql/log.h: post-review fixes: * move last_time and reopen_file() to MYSQL_QUERY_LOG from the base class --- sql/log.cc | 140 ++++++++++++++++++++++++++++--------------------------------- sql/log.h | 42 +++++++++---------- 2 files changed, 83 insertions(+), 99 deletions(-) diff --git a/sql/log.cc b/sql/log.cc index d1c33afcda7..0c7b5278f41 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -120,8 +120,8 @@ handlerton binlog_hton = { SYNOPSIS open_log_table() - log_type type of the log table to open: QUERY_LOG_GENERAL - or QUERY_LOG_SLOW + log_table_type type of the log table to open: QUERY_LOG_GENERAL + or QUERY_LOG_SLOW DESCRIPTION @@ -136,14 +136,14 @@ handlerton binlog_hton = { TRUE - error occured */ -bool Log_to_csv_event_handler::open_log_table(uint log_type) +bool Log_to_csv_event_handler::open_log_table(uint log_table_type) { THD *log_thd, *curr= current_thd; TABLE_LIST *table; bool error= FALSE; DBUG_ENTER("open_log_table"); - switch (log_type) { + switch (log_table_type) { case QUERY_LOG_GENERAL: log_thd= general_log_thd; table= &general_log; @@ -254,8 +254,8 @@ Log_to_csv_event_handler::~Log_to_csv_event_handler() SYNOPSIS reopen_log_table() - log_type type of the log table to open: QUERY_LOG_GENERAL - or QUERY_LOG_SLOW + log_table_type type of the log table to open: QUERY_LOG_GENERAL + or QUERY_LOG_SLOW DESCRIPTION @@ -272,12 +272,12 @@ Log_to_csv_event_handler::~Log_to_csv_event_handler() TRUE - open_log_table() returned an error */ -bool Log_to_csv_event_handler::reopen_log_table(uint log_type) +bool Log_to_csv_event_handler::reopen_log_table(uint log_table_type) { /* don't open the log table, if it wasn't enabled during startup */ if (!logger.is_log_tables_initialized) return FALSE; - return open_log_table(log_type); + return open_log_table(log_table_type); } void Log_to_csv_event_handler::cleanup() @@ -613,9 +613,9 @@ void LOGGER::cleanup_end() } -void LOGGER::close_log_table(uint log_type, bool lock_in_use) +void LOGGER::close_log_table(uint log_table_type, bool lock_in_use) { - table_log_handler->close_log_table(log_type, lock_in_use); + table_log_handler->close_log_table(log_table_type, lock_in_use); } @@ -655,9 +655,9 @@ void LOGGER::init_log_tables() } -bool LOGGER::reopen_log_table(uint log_type) +bool LOGGER::reopen_log_table(uint log_table_type) { - return table_log_handler->reopen_log_table(log_type); + return table_log_handler->reopen_log_table(log_table_type); } @@ -992,9 +992,9 @@ int LOGGER::set_handlers(uint error_log_printer, SYNOPSIS close_log_table() - log_type type of the log table to close: QUERY_LOG_GENERAL - or QUERY_LOG_SLOW - lock_in_use Set to TRUE if the caller owns LOCK_open. FALSE otherwise. + log_table_type type of the log table to close: QUERY_LOG_GENERAL + or QUERY_LOG_SLOW + lock_in_use Set to TRUE if the caller owns LOCK_open. FALSE otherwise. DESCRIPTION @@ -1004,7 +1004,7 @@ int LOGGER::set_handlers(uint error_log_printer, */ void Log_to_csv_event_handler:: - close_log_table(uint log_type, bool lock_in_use) + close_log_table(uint log_table_type, bool lock_in_use) { THD *log_thd, *curr= current_thd; TABLE_LIST *table; @@ -1012,7 +1012,7 @@ void Log_to_csv_event_handler:: if (!logger.is_log_tables_initialized) return; /* do nothing */ - switch (log_type) { + switch (log_table_type) { case QUERY_LOG_GENERAL: log_thd= general_log_thd; table= &general_log; @@ -1382,7 +1382,7 @@ static int find_uniq_filename(char *name) void MYSQL_LOG::init(enum_log_type log_type_arg, - enum cache_type io_cache_type_arg) + enum cache_type io_cache_type_arg) { DBUG_ENTER("MYSQL_LOG::init"); log_type= log_type_arg; @@ -1452,8 +1452,7 @@ bool MYSQL_LOG::open(const char *log_name, enum_log_type log_type_arg, ((log_type == LOG_BIN) ? MY_WAIT_IF_FULL : 0)))) goto err; - switch (log_type) { - case LOG_NORMAL: + if (log_type == LOG_NORMAL) { char *end; int len=my_snprintf(buff, sizeof(buff), "%s, Version: %s. " @@ -1474,14 +1473,9 @@ bool MYSQL_LOG::open(const char *log_name, enum_log_type log_type_arg, if (my_b_write(&log_file, (byte*) buff, (uint) (end-buff)) || flush_io_cache(&log_file)) goto err; - break; - } - case LOG_CLOSED: // Impossible - case LOG_TO_BE_OPENED: - DBUG_ASSERT(1); - break; } + log_state= LOG_OPENED; DBUG_RETURN(0); err: @@ -1493,13 +1487,13 @@ shutdown the MySQL server and restart it.", name, errno); my_close(file, MYF(0)); end_io_cache(&log_file); safeFree(name); - log_type= LOG_CLOSED; + log_state= LOG_CLOSED; DBUG_RETURN(1); } MYSQL_LOG::MYSQL_LOG() - : name(0), log_type(LOG_CLOSED), write_error(FALSE), - inited(FALSE), last_time(0) + : name(0), log_type(LOG_UNKNOWN), log_state(LOG_CLOSED), write_error(FALSE), + inited(FALSE) { /* We don't want to initialize LOCK_Log here as such initialization depends on @@ -1535,7 +1529,7 @@ void MYSQL_LOG::close(uint exiting) { // One can't set log_type here! DBUG_ENTER("MYSQL_LOG::close"); DBUG_PRINT("enter",("exiting: %d", (int) exiting)); - if (log_type != LOG_CLOSED && log_type != LOG_TO_BE_OPENED) + if (log_state == LOG_OPENED) { end_io_cache(&log_file); @@ -1552,7 +1546,7 @@ void MYSQL_LOG::close(uint exiting) } } - log_type= (exiting & LOG_CLOSE_TO_BE_OPENED) ? LOG_TO_BE_OPENED : LOG_CLOSED; + log_state= (exiting & LOG_CLOSE_TO_BE_OPENED) ? LOG_TO_BE_OPENED : LOG_CLOSED; safeFree(name); DBUG_VOID_RETURN; } @@ -1572,6 +1566,24 @@ void MYSQL_LOG::cleanup() } +int MYSQL_LOG::generate_new_name(char *new_name, const char *log_name) +{ + fn_format(new_name, log_name, mysql_data_home, "", 4); + if (log_type == LOG_BIN) + { + if (!fn_ext(log_name)[0]) + { + if (find_uniq_filename(new_name)) + { + sql_print_error(ER(ER_NO_UNIQUE_LOGFILE), log_name); + return 1; + } + } + } + return 0; +} + + /* Reopen the log file @@ -1584,9 +1596,8 @@ void MYSQL_LOG::cleanup() */ -void MYSQL_LOG::reopen_file() +void MYSQL_QUERY_LOG::reopen_file() { - enum_log_type save_log_type; char *save_name; DBUG_ENTER("MYSQL_LOG::reopen_file"); @@ -1599,15 +1610,14 @@ void MYSQL_LOG::reopen_file() pthread_mutex_lock(&LOCK_log); save_name= name; - save_log_type= log_type; name= 0; // Don't free name close(LOG_CLOSE_TO_BE_OPENED); /* - Note that at this point, log_type != LOG_CLOSED (important for is_open()). + Note that at this point, log_state != LOG_CLOSED (important for is_open()). */ - open(save_name, save_log_type, 0, io_cache_type); + open(save_name, log_type, 0, io_cache_type); my_free(save_name, MYF(0)); pthread_mutex_unlock(&LOCK_log); @@ -1616,24 +1626,6 @@ void MYSQL_LOG::reopen_file() } -int MYSQL_LOG::generate_new_name(char *new_name, const char *log_name) -{ - fn_format(new_name,log_name,mysql_data_home,"",4); - if (log_type != LOG_NORMAL) - { - if (!fn_ext(log_name)[0]) - { - if (find_uniq_filename(new_name)) - { - sql_print_error(ER(ER_NO_UNIQUE_LOGFILE), log_name); - return 1; - } - } - } - return 0; -} - - /* Write a command to traditional general log file @@ -1659,10 +1651,10 @@ int MYSQL_LOG::generate_new_name(char *new_name, const char *log_name) TRUE - error occured */ -bool MYSQL_GENERAL_LOG::write(time_t event_time, const char *user_host, - uint user_host_len, int thread_id, - const char *command_type, uint command_type_len, - const char *sql_text, uint sql_text_len) +bool MYSQL_QUERY_LOG::write(time_t event_time, const char *user_host, + uint user_host_len, int thread_id, + const char *command_type, uint command_type_len, + const char *sql_text, uint sql_text_len) { char buff[32]; uint length= 0; @@ -1755,14 +1747,14 @@ err: TRUE - error occured */ -bool MYSQL_SLOW_LOG::write(THD *thd, time_t current_time, - time_t query_start_arg, const char *user_host, - uint user_host_len, longlong query_time, - longlong lock_time, bool is_command, - const char *sql_text, uint sql_text_len) +bool MYSQL_QUERY_LOG::write(THD *thd, time_t current_time, + time_t query_start_arg, const char *user_host, + uint user_host_len, longlong query_time, + longlong lock_time, bool is_command, + const char *sql_text, uint sql_text_len) { bool error= 0; - DBUG_ENTER("MYSQL_SLOW_LOG::write"); + DBUG_ENTER("MYSQL_QUERY_LOG::write"); if (!is_open()) DBUG_RETURN(0); @@ -2015,7 +2007,6 @@ bool MYSQL_BIN_LOG::open(const char *log_name, DBUG_ENTER("MYSQL_BIN_LOG::open"); DBUG_PRINT("enter",("log_type: %d",(int) log_type_arg)); - last_time= 0; write_error=0; /* open the main log file */ @@ -2119,6 +2110,8 @@ bool MYSQL_BIN_LOG::open(const char *log_name, goto err; } } + log_state= LOG_OPENED; + DBUG_RETURN(0); err: @@ -2131,7 +2124,7 @@ shutdown the MySQL server and restart it.", name, errno); end_io_cache(&log_file); end_io_cache(&index_file); safeFree(name); - log_type= LOG_CLOSED; + log_state= LOG_CLOSED; DBUG_RETURN(1); } @@ -2350,7 +2343,6 @@ bool MYSQL_BIN_LOG::reset_logs(THD* thd) LOG_INFO linfo; bool error=0; const char* save_name; - enum_log_type save_log_type; DBUG_ENTER("reset_logs"); ha_reset_logs(thd); @@ -2372,7 +2364,6 @@ bool MYSQL_BIN_LOG::reset_logs(THD* thd) /* Save variables so that we can reopen the log */ save_name=name; name=0; // Protect against free - save_log_type=log_type; close(LOG_CLOSE_TO_BE_OPENED); /* First delete all old log files */ @@ -2396,8 +2387,7 @@ bool MYSQL_BIN_LOG::reset_logs(THD* thd) if (!thd->slave_thread) need_start_event=1; if (!open_index_file(index_file_name, 0)) - open(save_name, save_log_type, 0, - io_cache_type, no_auto_events, max_size, 0); + open(save_name, log_type, 0, io_cache_type, no_auto_events, max_size, 0); my_free((gptr) save_name, MYF(0)); err: @@ -2753,7 +2743,6 @@ void MYSQL_BIN_LOG::new_file_without_locking() void MYSQL_BIN_LOG::new_file_impl(bool need_lock) { char new_name[FN_REFLEN], *new_name_ptr, *old_name; - enum_log_type save_log_type; DBUG_ENTER("MYSQL_BIN_LOG::new_file_impl"); if (!is_open()) @@ -2821,12 +2810,11 @@ void MYSQL_BIN_LOG::new_file_impl(bool need_lock) signal_update(); } old_name=name; - save_log_type=log_type; name=0; // Don't free name close(LOG_CLOSE_TO_BE_OPENED); /* - Note that at this point, log_type != LOG_CLOSED (important for is_open()). + Note that at this point, log_state != LOG_CLOSED (important for is_open()). */ /* @@ -2838,7 +2826,7 @@ void MYSQL_BIN_LOG::new_file_impl(bool need_lock) trigger temp tables deletion on slaves. */ - open(old_name, save_log_type, new_name_ptr, + open(old_name, log_type, new_name_ptr, io_cache_type, no_auto_events, max_size, 1); my_free(old_name,MYF(0)); @@ -3543,7 +3531,7 @@ void MYSQL_BIN_LOG::close(uint exiting) { // One can't set log_type here! DBUG_ENTER("MYSQL_BIN_LOG::close"); DBUG_PRINT("enter",("exiting: %d", (int) exiting)); - if (log_type != LOG_CLOSED && log_type != LOG_TO_BE_OPENED) + if (log_state == LOG_OPENED) { #ifdef HAVE_REPLICATION if (log_type == LOG_BIN && !no_auto_events && @@ -3582,7 +3570,7 @@ void MYSQL_BIN_LOG::close(uint exiting) sql_print_error(ER(ER_ERROR_ON_WRITE), index_file_name, errno); } } - log_type= (exiting & LOG_CLOSE_TO_BE_OPENED) ? LOG_TO_BE_OPENED : LOG_CLOSED; + log_state= (exiting & LOG_CLOSE_TO_BE_OPENED) ? LOG_TO_BE_OPENED : LOG_CLOSED; safeFree(name); DBUG_VOID_RETURN; } diff --git a/sql/log.h b/sql/log.h index 589932dcac0..8a41cd9053d 100644 --- a/sql/log.h +++ b/sql/log.h @@ -147,7 +147,8 @@ typedef struct st_log_info class Log_event; class Rows_log_event; -enum enum_log_type { LOG_CLOSED, LOG_TO_BE_OPENED, LOG_NORMAL, LOG_BIN}; +enum enum_log_type { LOG_UNKNOWN, LOG_NORMAL, LOG_BIN }; +enum enum_log_state { LOG_OPENED, LOG_CLOSED, LOG_TO_BE_OPENED }; /* TODO use mmap instead of IO_CACHE for binlog @@ -160,7 +161,6 @@ public: MYSQL_LOG(); void init_pthread_objects(); void cleanup(); - void reopen_file(); bool open(const char *log_name, enum_log_type log_type, const char *new_name, @@ -168,7 +168,7 @@ public: void init(enum_log_type log_type_arg, enum cache_type io_cache_type_arg); void close(uint exiting); - inline bool is_open() { return log_type != LOG_CLOSED; } + inline bool is_open() { return log_state != LOG_CLOSED; } const char *generate_name(const char *log_name, const char *suffix, bool strip_ext, char *buff); int generate_new_name(char *new_name, const char *log_name); @@ -180,33 +180,21 @@ public: char time_buff[20], db[NAME_LEN + 1]; bool write_error, inited; IO_CACHE log_file; - volatile enum_log_type log_type; + enum_log_type log_type; + volatile enum_log_state log_state; enum cache_type io_cache_type; - time_t last_time; - friend class Log_event; }; -class MYSQL_GENERAL_LOG: public MYSQL_LOG +class MYSQL_QUERY_LOG: public MYSQL_LOG { public: - MYSQL_GENERAL_LOG() {} /* get rid of gcc warning */ + MYSQL_QUERY_LOG() : last_time(0) {} + void reopen_file(); bool write(time_t event_time, const char *user_host, uint user_host_len, int thread_id, const char *command_type, uint command_type_len, const char *sql_text, uint sql_text_len); - bool open_query_log(const char *log_name) - { - char buf[FN_REFLEN]; - return open(generate_name(log_name, ".log", 0, buf), LOG_NORMAL, 0, - WRITE_CACHE); - } -}; - -class MYSQL_SLOW_LOG: public MYSQL_LOG -{ -public: - MYSQL_SLOW_LOG() {} /* get rid of gcc warning */ bool write(THD *thd, time_t current_time, time_t query_start_arg, const char *user_host, uint user_host_len, longlong query_time, longlong lock_time, bool is_command, @@ -217,6 +205,14 @@ public: return open(generate_name(log_name, "-slow.log", 0, buf), LOG_NORMAL, 0, WRITE_CACHE); } + bool open_query_log(const char *log_name) + { + char buf[FN_REFLEN]; + return open(generate_name(log_name, ".log", 0, buf), LOG_NORMAL, 0, + WRITE_CACHE); + } +private: + time_t last_time; }; class MYSQL_BIN_LOG: public TC_LOG, private MYSQL_LOG @@ -269,6 +265,7 @@ class MYSQL_BIN_LOG: public TC_LOG, private MYSQL_LOG public: MYSQL_LOG::generate_name; + MYSQL_LOG::is_open; /* These describe the log's format. This is used only for relay logs. _for_exec is used by the SQL thread, _for_queue by the I/O thread. It's @@ -371,7 +368,6 @@ public: int find_next_log(LOG_INFO* linfo, bool need_mutex); int get_current_log(LOG_INFO* linfo); uint next_file_id(); - inline bool is_open() { return log_type != LOG_CLOSED; } inline char* get_index_fname() { return index_file_name;} inline char* get_log_fname() { return log_file_name; } inline char* get_name() { return name; } @@ -448,8 +444,8 @@ public: class Log_to_file_event_handler: public Log_event_handler { - MYSQL_GENERAL_LOG mysql_log; - MYSQL_SLOW_LOG mysql_slow_log; + MYSQL_QUERY_LOG mysql_log; + MYSQL_QUERY_LOG mysql_slow_log; bool is_initialized; public: Log_to_file_event_handler(): is_initialized(FALSE) -- cgit v1.2.1 From 88b109d97b4d85518e805ad8b22ce92455fef69c Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 5 Jun 2006 05:49:06 +0400 Subject: Fixed BUG#18948 "Disabled test case rpl_row_inexist_tbl". The bug was caused by ignoring failure when opening a a table in Table_map_log_event::exec_event(). mysql-test/r/rpl_row_inexist_tbl.result: Fixed test case result. mysql-test/t/disabled.def: Enabled rpl_row_inexist_table test. mysql-test/t/rpl_row_inexist_tbl.test: Extended test case with "replicate-ignore-table" t2. sql/log_event.cc: Table_map_log_event::exec_event(): Remove code which ignores opening table failure. Previously, this code was needed because of extraneous table maps in the binary log. Currently, for any table that should be replicated to slave, a filter is needed (bug#18948). --- mysql-test/r/rpl_row_inexist_tbl.result | 17 ++++++++++++---- mysql-test/t/disabled.def | 1 - mysql-test/t/rpl_row_inexist_tbl.test | 14 ++++++++++--- sql/log_event.cc | 36 +++++++-------------------------- 4 files changed, 31 insertions(+), 37 deletions(-) diff --git a/mysql-test/r/rpl_row_inexist_tbl.result b/mysql-test/r/rpl_row_inexist_tbl.result index 1d18819fdd6..5f5a4556d76 100644 --- a/mysql-test/r/rpl_row_inexist_tbl.result +++ b/mysql-test/r/rpl_row_inexist_tbl.result @@ -5,9 +5,18 @@ reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; create table t1 (a int not null primary key); +insert into t1 values (1); +create table t2 (a int); +insert into t2 values (1); +update t1, t2 set t1.a = 0 where t1.a = t2.a; +show tables; +Tables_in_test +t1 +select * from t1; +a +0 drop table t1; insert into t1 values (1); -insert into t1 values (2); show slave status; Slave_IO_State # Master_Host 127.0.0.1 @@ -24,13 +33,13 @@ Slave_SQL_Running No Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table -Replicate_Ignore_Table +Replicate_Ignore_Table test.t2 Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno 1146 Last_Error Error 'Table 'test.t1' doesn't exist' on opening table `test`.`t1` Skip_Counter 0 -Exec_Master_Log_Pos 209 +Exec_Master_Log_Pos 519 Relay_Log_Space # Until_Condition None Until_Log_File @@ -42,4 +51,4 @@ Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master # -drop table t1; +drop table t1, t2; diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index 746a117ccd6..de46b594f10 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -34,7 +34,6 @@ rpl_ndb_myisam2ndb : Bug #19710 Cluster replication to partition table f rpl_switch_stm_row_mixed : BUG#18590 2006-03-28 brian rpl_row_blob_innodb : BUG#18980 2006-04-10 kent Test fails randomly rpl_row_func003 : BUG#19074 2006-13-04 andrei test failed -rpl_row_inexist_tbl : BUG#18948 2006-03-09 mats Disabled since patch makes this test wait forever rpl_sp : BUG#16456 2006-02-16 jmiller # the below testcase have been reworked to avoid the bug, test contains comment, keep bug open diff --git a/mysql-test/t/rpl_row_inexist_tbl.test b/mysql-test/t/rpl_row_inexist_tbl.test index e77ea216571..741cc8b7ba3 100644 --- a/mysql-test/t/rpl_row_inexist_tbl.test +++ b/mysql-test/t/rpl_row_inexist_tbl.test @@ -6,15 +6,23 @@ source include/master-slave.inc; connection master; create table t1 (a int not null primary key); +insert into t1 values (1); +create table t2 (a int); +insert into t2 values (1); +update t1, t2 set t1.a = 0 where t1.a = t2.a; + sync_slave_with_master; +# t2 should not have been replicated +# t1 should have been properly updated +show tables; +select * from t1; drop table t1; connection master; insert into t1 values (1); -insert into t1 values (2); connection slave; -# slave should have stopped because can't find table +# slave should have stopped because can't find table t1 wait_for_slave_to_stop; # see if we have a good error message: --replace_result $MASTER_MYPORT MASTER_MYPORT @@ -24,4 +32,4 @@ show slave status; # cleanup connection master; -drop table t1; +drop table t1, t2; diff --git a/sql/log_event.cc b/sql/log_event.cc index e78a6fc5865..3e81bfcfb73 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -5853,9 +5853,7 @@ int Table_map_log_event::exec_event(st_relay_log_info *rli) /* Open the table if it is not already open and add the table to table map. - If the table should not be replicated, we don't bother to do anything. - The table map will return NULL and the row-level event will effectively - be a no-op. + Note that for any table that should not be replicated, a filter is needed. */ uint count; /* @@ -5871,34 +5869,14 @@ int Table_map_log_event::exec_event(st_relay_log_info *rli) /* Error reporting borrowed from Query_log_event with many excessive simplifications (we don't honour --slave-skip-errors) - - BUG: There can be extreneous table maps in the binary log, - so in case we fail to open the table, we just generate a - warning and do not add the table to the list of tables to - open and lock. */ uint actual_error= thd->net.last_errno; - switch (actual_error) - { - case ER_NO_SUCH_TABLE: - slave_print_msg(WARNING_LEVEL, rli, actual_error, - thd->net.last_error ? - thd->net.last_error : - ""); - clear_all_errors(thd, rli); - rli->inc_event_relay_log_pos(); // Continue with next event - error= 0; - break; - - default: - slave_print_msg(ERROR_LEVEL, rli, actual_error, - "Error '%s' on opening table `%s`.`%s`", - (actual_error ? thd->net.last_error : - "unexpected success or fatal error"), - table_list->db, table_list->table_name); - thd->query_error= 1; - break; - } + slave_print_msg(ERROR_LEVEL, rli, actual_error, + "Error '%s' on opening table `%s`.`%s`", + (actual_error ? thd->net.last_error : + "unexpected success or fatal error"), + table_list->db, table_list->table_name); + thd->query_error= 1; } DBUG_RETURN(error); } -- cgit v1.2.1 From 48ee4dfdda3b8a0293f189128087ff113945eb70 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 5 Jun 2006 05:58:59 +0400 Subject: Fix BUG#18948. Adding a file missed in the previous commit. mysql-test/t/rpl_row_inexist_tbl-slave.opt: New BitKeeper file ``mysql-test/t/rpl_row_inexist_tbl-slave.opt'' --- mysql-test/t/rpl_row_inexist_tbl-slave.opt | 1 + 1 file changed, 1 insertion(+) create mode 100644 mysql-test/t/rpl_row_inexist_tbl-slave.opt diff --git a/mysql-test/t/rpl_row_inexist_tbl-slave.opt b/mysql-test/t/rpl_row_inexist_tbl-slave.opt new file mode 100644 index 00000000000..abd717f8222 --- /dev/null +++ b/mysql-test/t/rpl_row_inexist_tbl-slave.opt @@ -0,0 +1 @@ +--replicate-ignore-table=test.t2 -- cgit v1.2.1 From 69146b9d0a88455ce3d029bafd161a43064367b1 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 5 Jun 2006 13:37:06 -0500 Subject: Bug #18275 invalid file descriptor causes crash on windows mysys/my_init.c: Added invalid parameter handler so that routines such as lseek would return -1 instead of ASSERT. --- mysys/my_init.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/mysys/my_init.c b/mysys/my_init.c index 9b8d4db172f..8346fab95da 100644 --- a/mysys/my_init.c +++ b/mysys/my_init.c @@ -245,6 +245,22 @@ void setEnvString(char *ret, const char *name, const char *value) DBUG_VOID_RETURN ; } +/* + my_paramter_handler + Invalid paramter handler we will use instead of the one "baked" into the CRT + for MSC v8. This one just prints out what invalid parameter was encountered. + By providing this routine, routines like lseek will return -1 when we expect them + to instead of crash. +*/ +void my_parameter_handler(const wchar_t * expression, const wchar_t * function, + const wchar_t * file, unsigned int line, + uintptr_t pReserved) +{ + DBUG_PRINT("my",("Expression: %s function: %s file: %s, line: %d", + expression, function, file, line)); +} + + static void my_win_init(void) { HKEY hSoftMysql ; @@ -262,12 +278,18 @@ static void my_win_init(void) setlocale(LC_CTYPE, ""); /* To get right sortorder */ -#if defined(_MSC_VER) && (_MSC_VER < 1300) +#if defined(_MSC_VER) +#if _MSC_VER < 1300 /* Clear the OS system variable TZ and avoid the 100% CPU usage Only for old versions of Visual C++ */ _putenv( "TZ=" ); +#endif +#if _MSC_VER >= 1400 + /* this is required to make crt functions return -1 appropriately */ + _set_invalid_parameter_handler(my_parameter_handler); +#endif #endif _tzset(); -- cgit v1.2.1 From e05d2d06cb4adfe27dc4c0c4cb8f445332e9ab80 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 5 Jun 2006 14:55:22 -0400 Subject: BUG#16002: Handle unsigned integer partition functions mysql-test/r/partition.result: Added new test cases mysql-test/r/partition_error.result: Fixed test case mysql-test/t/partition.test: Added new test cases mysql-test/t/partition_error.test: Fixed test case sql/ha_partition.cc: Review fixes sql/partition_element.h: Review fixes sql/partition_info.cc: Review fixes sql/share/errmsg.txt: Review fixes sql/sql_partition.cc: Review fixes sql/sql_yacc.yy: Enabled possibility to use (MAXVALUE) as well as MAXVALUE. --- mysql-test/r/partition.result | 23 +++++++++++++++++++++-- mysql-test/r/partition_error.result | 2 +- mysql-test/t/partition.test | 28 ++++++++++++++++++++++++++-- mysql-test/t/partition_error.test | 2 +- sql/ha_partition.cc | 11 ++++------- sql/partition_element.h | 11 +++++++++-- sql/partition_info.cc | 14 ++++++-------- sql/share/errmsg.txt | 6 +++--- sql/sql_partition.cc | 33 +++++++++++---------------------- sql/sql_yacc.yy | 7 ++++++- 10 files changed, 88 insertions(+), 49 deletions(-) diff --git a/mysql-test/r/partition.result b/mysql-test/r/partition.result index b76896f720f..50570894a51 100644 --- a/mysql-test/r/partition.result +++ b/mysql-test/r/partition.result @@ -1,5 +1,24 @@ drop table if exists t1; -create table t1 (a bigint unsigned); +create table t1 (a bigint) +partition by range (a) +(partition p0 values less than (0xFFFFFFFFFFFFFFFF), +partition p1 values less than (10)); +ERROR 42000: VALUES value must be of same type as partition function near '), +partition p1 values less than (10))' at line 3 +create table t1 (a bigint) +partition by list (a) +(partition p0 values in (0xFFFFFFFFFFFFFFFF), +partition p1 values in (10)); +ERROR 42000: VALUES value must be of same type as partition function near '), +partition p1 values in (10))' at line 3 +create table t1 (a bigint unsigned) +partition by range (a) +(partition p0 values less than (100), +partition p1 values less than MAXVALUE); +insert into t1 values (1); +drop table t1; +create table t1 (a bigint unsigned) +partition by hash (a); insert into t1 values (0xFFFFFFFFFFFFFFFD); insert into t1 values (0xFFFFFFFFFFFFFFFE); select * from t1 where (a + 1) < 10; @@ -852,7 +871,7 @@ DROP TABLE t1; create table t1 (a bigint unsigned) partition by list (a) (partition p0 values in (0-1)); -ERROR HY000: Partition function is unsigned, cannot have negative constants +ERROR HY000: Partition constant is out of partition function domain create table t1 (a bigint unsigned) partition by range (a) (partition p0 values less than (10)); diff --git a/mysql-test/r/partition_error.result b/mysql-test/r/partition_error.result index cc51b909c51..1295eba16ae 100644 --- a/mysql-test/r/partition_error.result +++ b/mysql-test/r/partition_error.result @@ -557,4 +557,4 @@ drop table t1; create table t1 (a bigint unsigned) partition by range (a) (partition p0 values less than (-1)); -ERROR HY000: Partition function is unsigned, cannot have negative constants +ERROR HY000: Partition constant is out of partition function domain diff --git a/mysql-test/t/partition.test b/mysql-test/t/partition.test index 3714a4a3346..b57fc6420f0 100644 --- a/mysql-test/t/partition.test +++ b/mysql-test/t/partition.test @@ -9,7 +9,29 @@ drop table if exists t1; --enable_warnings -create table t1 (a bigint unsigned); +# +# BUG 16002: Handle unsigned integer functions properly +# +--error 1064 +create table t1 (a bigint) +partition by range (a) +(partition p0 values less than (0xFFFFFFFFFFFFFFFF), + partition p1 values less than (10)); +--error 1064 +create table t1 (a bigint) +partition by list (a) +(partition p0 values in (0xFFFFFFFFFFFFFFFF), + partition p1 values in (10)); + +create table t1 (a bigint unsigned) +partition by range (a) +(partition p0 values less than (100), + partition p1 values less than MAXVALUE); +insert into t1 values (1); +drop table t1; + +create table t1 (a bigint unsigned) +partition by hash (a); insert into t1 values (0xFFFFFFFFFFFFFFFD); insert into t1 values (0xFFFFFFFFFFFFFFFE); select * from t1 where (a + 1) < 10; @@ -966,7 +988,7 @@ DROP TABLE t1; # #BUG 16002 Erroneus handling of unsigned partition functions # ---error ER_SIGNED_PARTITION_CONSTANT_ERROR +--error ER_PARTITION_CONST_DOMAIN_ERROR create table t1 (a bigint unsigned) partition by list (a) (partition p0 values in (0-1)); @@ -978,6 +1000,8 @@ partition by range (a) --error ER_NO_PARTITION_FOR_GIVEN_VALUE insert into t1 values (0xFFFFFFFFFFFFFFFF); +drop table t1; + # #BUG 18750 Problems with partition names # diff --git a/mysql-test/t/partition_error.test b/mysql-test/t/partition_error.test index dad2d2beda6..35aef969ad6 100644 --- a/mysql-test/t/partition_error.test +++ b/mysql-test/t/partition_error.test @@ -748,7 +748,7 @@ CREATE TABLE t1(a int) insert into t1 values (10); drop table t1; ---error ER_SIGNED_PARTITION_CONSTANT_ERROR +--error ER_PARTITION_CONST_DOMAIN_ERROR create table t1 (a bigint unsigned) partition by range (a) (partition p0 values less than (-1)); diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index 3014c0317be..bedda6b4fe7 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -5162,17 +5162,14 @@ void ha_partition::print_error(int error, myf errflag) { char buf[100]; longlong value= m_part_info->part_expr->val_int(); - if (!m_part_info->part_expr->unsigned_flag || - m_part_info->part_expr->null_value) + if (m_part_info->part_expr->null_value) { - my_error(ER_NO_PARTITION_FOR_GIVEN_VALUE, MYF(0), - m_part_info->part_expr->null_value ? "NULL" : - llstr(m_part_info->part_expr->val_int(), buf)); + my_error(ER_NO_PARTITION_FOR_GIVEN_VALUE, MYF(0),"NULL"); } else { - ulonglong value= m_part_info->part_expr->val_int(); - longlong2str(value, buf, 10); + longlong2str(value, buf, + m_part_info->part_expr->unsigned_flag ? 10 : -10); my_error(ER_NO_PARTITION_FOR_GIVEN_VALUE, MYF(0), buf); } } diff --git a/sql/partition_element.h b/sql/partition_element.h index 7063e514901..7818c25c2f6 100644 --- a/sql/partition_element.h +++ b/sql/partition_element.h @@ -36,6 +36,13 @@ enum partition_state { PART_IS_ADDED= 8 }; +/* + This struct is used to contain the value of an element + in the VALUES IN struct. It needs to keep knowledge of + whether it is a signed/unsigned value and whether it is + NULL or not. +*/ + typedef struct p_elem_val { longlong value; @@ -59,8 +66,8 @@ public: enum partition_state part_state; uint16 nodegroup_id; bool has_null_value; - bool signed_flag; - bool max_value; + bool signed_flag;/* Indicate whether this partition uses signed constants */ + bool max_value; /* Indicate whether this partition uses MAXVALUE */ partition_element() : part_max_rows(0), part_min_rows(0), range_value(0), diff --git a/sql/partition_info.cc b/sql/partition_info.cc index 97cac37c00e..a6ca1e0107e 100644 --- a/sql/partition_info.cc +++ b/sql/partition_info.cc @@ -485,10 +485,9 @@ bool partition_info::check_range_constants() else { ulonglong upart_range_value_int; - if ((i != (no_parts - 1)) || !defined_max_value) - upart_range_value_int= part_def->range_value; - else - upart_range_value_int= ULONGLONG_MAX; + if ((i == (no_parts - 1)) && defined_max_value) + part_def->range_value= ULONGLONG_MAX; + upart_range_value_int= part_def->range_value; if (likely(current_largest_uint < upart_range_value_int)) { current_largest_uint= upart_range_value_int; @@ -572,7 +571,6 @@ bool partition_info::check_list_constants() uint i; uint list_index= 0; part_elem_value *list_value; - bool not_first; bool result= TRUE; longlong curr_value, prev_value; partition_element* part_def; @@ -638,6 +636,7 @@ bool partition_info::check_list_constants() if (fixed) { + bool first= TRUE; if (!part_expr->unsigned_flag) qsort((void*)list_array, no_list_values, sizeof(LIST_PART_ENTRY), &list_part_cmp); @@ -645,15 +644,14 @@ bool partition_info::check_list_constants() qsort((void*)list_array, no_list_values, sizeof(LIST_PART_ENTRY), &list_part_cmp_unsigned); - not_first= FALSE; i= prev_value= 0; //prev_value initialised to quiet compiler do { curr_value= list_array[i].list_value; - if (likely(!not_first || prev_value != curr_value)) + if (likely(first || prev_value != curr_value)) { prev_value= curr_value; - not_first= TRUE; + first= FALSE; } else { diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt index 203f58ba108..148a4402ccd 100644 --- a/sql/share/errmsg.txt +++ b/sql/share/errmsg.txt @@ -5826,9 +5826,9 @@ ER_NDB_CANT_SWITCH_BINLOG_FORMAT eng "The NDB cluster engine does not support changing the binlog format on the fly yet" ER_PARTITION_NO_TEMPORARY eng "Cannot create temporary table with partitions" -ER_SIGNED_PARTITION_CONSTANT_ERROR - eng "Partition function is unsigned, cannot have negative constants" - swe "Partitionsfunktionen är positiv, kan inte ha negativa konstanter" +ER_PARTITION_CONST_DOMAIN_ERROR + eng "Partition constant is out of partition function domain" + swe "Partitionskonstanten är utanför partitioneringsfunktionens domän" ER_NULL_IN_VALUES_LESS_THAN eng "Not allowed to use NULL value in VALUES LESS THAN" swe "Det är inte tillåtet att använda NULL-värden i VALUES LESS THAN" diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index 05f99110f61..45cd13ce854 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -819,8 +819,8 @@ int check_signed_flag(partition_info *part_info) if (part_elem->signed_flag) { - my_error(ER_SIGNED_PARTITION_CONSTANT_ERROR, MYF(0)); - error= ER_SIGNED_PARTITION_CONSTANT_ERROR; + my_error(ER_PARTITION_CONST_DOMAIN_ERROR, MYF(0)); + error= ER_PARTITION_CONST_DOMAIN_ERROR; break; } } while (++i < part_info->no_parts); @@ -841,8 +841,8 @@ int check_signed_flag(partition_info *part_info) func_expr The item tree reference of the partition function table The table object part_info Reference to partitioning data structure - sub_part Is the table subpartitioned as well - set_up_fields Flag if we are to set-up field arrays + is_sub_part Is the table subpartitioned as well + is_field_to_be_setup Flag if we are to set-up field arrays RETURN VALUE TRUE An error occurred, something was wrong with the @@ -1376,7 +1376,7 @@ static uint32 get_part_id_from_linear_hash(longlong hash_value, uint mask, fix_partition_func() thd The thread object table TABLE object for which partition fields are set-up - create_table_ind Indicator of whether openfrm was called as part of + is_create_table_ind Indicator of whether openfrm was called as part of CREATE or ALTER TABLE RETURN VALUE @@ -1760,28 +1760,17 @@ static int add_partition_values(File fptr, partition_info *part_info, if (part_info->part_type == RANGE_PARTITION) { err+= add_string(fptr, "VALUES LESS THAN "); - if (p_elem->signed_flag) + if (!p_elem->max_value) { - if (!p_elem->max_value) - { - err+= add_begin_parenthesis(fptr); + err+= add_begin_parenthesis(fptr); + if (p_elem->signed_flag) err+= add_int(fptr, p_elem->range_value); - err+= add_end_parenthesis(fptr); - } else - err+= add_string(fptr, partition_keywords[PKW_MAXVALUE].str); - } - else - { - if (!p_elem->max_value) - { - err+= add_begin_parenthesis(fptr); err+= add_uint(fptr, (ulonglong)p_elem->range_value); - err+= add_end_parenthesis(fptr); - } - else - err+= add_string(fptr, partition_keywords[PKW_MAXVALUE].str); + err+= add_end_parenthesis(fptr); } + else + err+= add_string(fptr, partition_keywords[PKW_MAXVALUE].str); } else if (part_info->part_type == LIST_PARTITION) { diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 9e2fa96fec7..0fcb80c0d79 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -3697,7 +3697,7 @@ opt_part_values: ; part_func_max: - MAX_VALUE_SYM + max_value_sym { LEX *lex= Lex; if (lex->part_info->defined_max_value) @@ -3724,6 +3724,11 @@ part_func_max: } ; +max_value_sym: + MAX_VALUE_SYM + | '(' MAX_VALUE_SYM ')' + ; + part_range_func: '(' part_bit_expr ')' { -- cgit v1.2.1 From 6c431a5ecdd3f1f94de650217877b9c9b2d9a7ac Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 6 Jun 2006 11:25:31 +0500 Subject: Bug#17661 information_schema.SCHEMATA returns uppercase with lower_case_table_names = 1 fix: return db name for I_S.TABLES(and others) in original letter case. if mysql starts with lower_case_table_names=1 | 2 then original db name is converted to lower case(for I_S tables). It happens when we perform add_table_to_list. to avoid this we make a copy of original db name and use the copy hereafter. mysql-test/r/lowercase_table2.result: Bug#17661 information_schema.SCHEMATA returns uppercase with lower_case_table_names = 1 test case mysql-test/t/lowercase_table2.test: Bug#17661 information_schema.SCHEMATA returns uppercase with lower_case_table_names = 1 test case --- mysql-test/r/lowercase_table2.result | 9 +++++++++ mysql-test/t/lowercase_table2.test | 11 +++++++++++ sql/sql_show.cc | 8 +++++--- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/lowercase_table2.result b/mysql-test/r/lowercase_table2.result index 44235cbf900..e369fb7e482 100644 --- a/mysql-test/r/lowercase_table2.result +++ b/mysql-test/r/lowercase_table2.result @@ -165,3 +165,12 @@ create table t1Aa (col1 int); select t1Aa.col1 from t1aA,t2Aa where t1Aa.col1 = t2aA.col1; col1 drop table t2aA, t1Aa; +create database mysqltest_LC2; +use mysqltest_LC2; +create table myUC (i int); +select TABLE_SCHEMA,TABLE_NAME FROM information_schema.TABLES +where TABLE_SCHEMA ='mysqltest_LC2'; +TABLE_SCHEMA TABLE_NAME +mysqltest_LC2 myUC +use test; +drop database mysqltest_LC2; diff --git a/mysql-test/t/lowercase_table2.test b/mysql-test/t/lowercase_table2.test index c02ae8f5073..521df01cc9b 100644 --- a/mysql-test/t/lowercase_table2.test +++ b/mysql-test/t/lowercase_table2.test @@ -139,3 +139,14 @@ select t1Aa.col1 from t1aA,t2Aa where t1Aa.col1 = t2aA.col1; drop table t2aA, t1Aa; # End of 4.1 tests + +# +# Bug#17661 information_schema.SCHEMATA returns uppercase with lower_case_table_names = 1 +# +create database mysqltest_LC2; +use mysqltest_LC2; +create table myUC (i int); +select TABLE_SCHEMA,TABLE_NAME FROM information_schema.TABLES +where TABLE_SCHEMA ='mysqltest_LC2'; +use test; +drop database mysqltest_LC2; diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 246da4dfeec..ca6a8ddfb6b 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -2070,7 +2070,7 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond) ST_SCHEMA_TABLE *schema_table= tables->schema_table; SELECT_LEX sel; INDEX_FIELD_VALUES idx_field_vals; - char path[FN_REFLEN], *end, *base_name, *file_name; + char path[FN_REFLEN], *end, *base_name, *orig_base_name, *file_name; uint len; bool with_i_schema; enum enum_schema_tables schema_table_idx; @@ -2150,7 +2150,7 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond) partial_cond= make_cond_for_info_schema(cond, tables); it.rewind(); /* To get access to new elements in basis list */ - while ((base_name= it++) || + while ((orig_base_name= base_name= it++) || /* generate error for non existing database. (to save old behaviour for SHOW TABLES FROM db) @@ -2181,6 +2181,8 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond) if (mysql_find_files(thd, &files, base_name, path, idx_field_vals.table_value, 0)) goto err; + if (lower_case_table_names) + orig_base_name= thd->strdup(base_name); } List_iterator_fast it_files(files); @@ -2249,7 +2251,7 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond) in this case. */ res= schema_table->process_table(thd, show_table_list, table, - res, base_name, + res, orig_base_name, show_table_list->alias); close_tables_for_reopen(thd, &show_table_list); DBUG_ASSERT(!lex->query_tables_own_last); -- cgit v1.2.1 From 581d4d23a15f10ec3457493074741f3753a26841 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 6 Jun 2006 12:51:04 +0500 Subject: Bug#19599 duplication of information_schema column value in a CONCAT expr with user var mark result string using String::mark_as_const() which prevents CONCAT from reusing it as a buffer for concatenation result. mysql-test/r/information_schema.result: Bug#19599 duplication of information_schema column value in a CONCAT expr with user var test case mysql-test/t/information_schema.test: Bug#19599 duplication of information_schema column value in a CONCAT expr with user var test case --- mysql-test/r/information_schema.result | 9 +++++++++ mysql-test/t/information_schema.test | 10 ++++++++++ sql/item_strfunc.h | 1 + 3 files changed, 20 insertions(+) diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result index e2d265d7ab9..b80abc7d2d3 100644 --- a/mysql-test/r/information_schema.result +++ b/mysql-test/r/information_schema.result @@ -1121,3 +1121,12 @@ NULL test v2 select 1 AS `1` NONE NO mysqltest_1@localhost DEFINER drop view v1, v2; drop table t1; drop user mysqltest_1@localhost; +set @a:= '.'; +create table t1(f1 char(5)); +create table t2(f1 char(5)); +select concat(@a, table_name), @a, table_name +from information_schema.tables where table_schema = 'test'; +concat(@a, table_name) @a table_name +.t1 . t1 +.t2 . t2 +drop table t1,t2; diff --git a/mysql-test/t/information_schema.test b/mysql-test/t/information_schema.test index 48dd28bf6da..bc74bfbf20f 100644 --- a/mysql-test/t/information_schema.test +++ b/mysql-test/t/information_schema.test @@ -838,3 +838,13 @@ connection default; drop view v1, v2; drop table t1; drop user mysqltest_1@localhost; + +# +# Bug#19599 duplication of information_schema column value in a CONCAT expr with user var +# +set @a:= '.'; +create table t1(f1 char(5)); +create table t2(f1 char(5)); +select concat(@a, table_name), @a, table_name +from information_schema.tables where table_schema = 'test'; +drop table t1,t2; diff --git a/sql/item_strfunc.h b/sql/item_strfunc.h index 90d421a2c68..af59b8d740b 100644 --- a/sql/item_strfunc.h +++ b/sql/item_strfunc.h @@ -674,6 +674,7 @@ public: str->charset(), conv_charset, &errors)) null_value= 1; use_cached_value= 1; + str_value.mark_as_const(); safe= (errors == 0); } else -- cgit v1.2.1 From 57e7bc551300b224404b3ce1a5498917f9ead689 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 6 Jun 2006 12:57:50 +0500 Subject: Bug#18035 Information Schema: Output is not Sorted added 'order by' to avoid result order difference --- mysql-test/r/information_schema.result | 36 +++++++++++++++++++--------------- mysql-test/t/information_schema.test | 36 +++++++++++++++++++--------------- 2 files changed, 40 insertions(+), 32 deletions(-) diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result index b80abc7d2d3..6da07922251 100644 --- a/mysql-test/r/information_schema.result +++ b/mysql-test/r/information_schema.result @@ -866,58 +866,62 @@ grant select (f1) on mysqltest.t1 to user1@localhost; grant select on mysqltest.t2 to user2@localhost; grant select on mysqltest.* to user3@localhost; grant select on *.* to user4@localhost; -select * from information_schema.column_privileges; +select * from information_schema.column_privileges order by grantee; GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE 'user1'@'localhost' NULL mysqltest t1 f1 SELECT NO -select * from information_schema.table_privileges; +select * from information_schema.table_privileges order by grantee; GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE -select * from information_schema.schema_privileges; +select * from information_schema.schema_privileges order by grantee; GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE -select * from information_schema.user_privileges; +select * from information_schema.user_privileges order by grantee; GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE 'user1'@'localhost' NULL USAGE NO show grants; Grants for user1@localhost GRANT USAGE ON *.* TO 'user1'@'localhost' GRANT SELECT (f1) ON `mysqltest`.`t1` TO 'user1'@'localhost' -select * from information_schema.column_privileges; +select * from information_schema.column_privileges order by grantee; GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE -select * from information_schema.table_privileges; +select * from information_schema.table_privileges order by grantee; GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE 'user2'@'localhost' NULL mysqltest t2 SELECT NO -select * from information_schema.schema_privileges; +select * from information_schema.schema_privileges order by grantee; GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE -select * from information_schema.user_privileges; +select * from information_schema.user_privileges order by grantee; GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE 'user2'@'localhost' NULL USAGE NO show grants; Grants for user2@localhost GRANT USAGE ON *.* TO 'user2'@'localhost' GRANT SELECT ON `mysqltest`.`t2` TO 'user2'@'localhost' -select * from information_schema.column_privileges; +select * from information_schema.column_privileges order by grantee; GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE -select * from information_schema.table_privileges; +select * from information_schema.table_privileges order by grantee; GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE -select * from information_schema.schema_privileges; +select * from information_schema.schema_privileges order by grantee; GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE 'user3'@'localhost' NULL mysqltest SELECT NO -select * from information_schema.user_privileges; +select * from information_schema.user_privileges order by grantee; GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE 'user3'@'localhost' NULL USAGE NO show grants; Grants for user3@localhost GRANT USAGE ON *.* TO 'user3'@'localhost' GRANT SELECT ON `mysqltest`.* TO 'user3'@'localhost' -select * from information_schema.column_privileges where grantee like '%user%'; +select * from information_schema.column_privileges where grantee like '%user%' +order by grantee; GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE 'user1'@'localhost' NULL mysqltest t1 f1 SELECT NO -select * from information_schema.table_privileges where grantee like '%user%'; +select * from information_schema.table_privileges where grantee like '%user%' +order by grantee; GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE 'user2'@'localhost' NULL mysqltest t2 SELECT NO -select * from information_schema.schema_privileges where grantee like '%user%'; +select * from information_schema.schema_privileges where grantee like '%user%' +order by grantee; GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE 'user3'@'localhost' NULL mysqltest SELECT NO -select * from information_schema.user_privileges where grantee like '%user%'; +select * from information_schema.user_privileges where grantee like '%user%' +order by grantee; GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE 'user1'@'localhost' NULL USAGE NO 'user2'@'localhost' NULL USAGE NO diff --git a/mysql-test/t/information_schema.test b/mysql-test/t/information_schema.test index bc74bfbf20f..0bcd9ef8c0b 100644 --- a/mysql-test/t/information_schema.test +++ b/mysql-test/t/information_schema.test @@ -576,28 +576,32 @@ connect (con2,localhost,user2,,mysqltest); connect (con3,localhost,user3,,mysqltest); connect (con4,localhost,user4,,); connection con1; -select * from information_schema.column_privileges; -select * from information_schema.table_privileges; -select * from information_schema.schema_privileges; -select * from information_schema.user_privileges; +select * from information_schema.column_privileges order by grantee; +select * from information_schema.table_privileges order by grantee; +select * from information_schema.schema_privileges order by grantee; +select * from information_schema.user_privileges order by grantee; show grants; connection con2; -select * from information_schema.column_privileges; -select * from information_schema.table_privileges; -select * from information_schema.schema_privileges; -select * from information_schema.user_privileges; +select * from information_schema.column_privileges order by grantee; +select * from information_schema.table_privileges order by grantee; +select * from information_schema.schema_privileges order by grantee; +select * from information_schema.user_privileges order by grantee; show grants; connection con3; -select * from information_schema.column_privileges; -select * from information_schema.table_privileges; -select * from information_schema.schema_privileges; -select * from information_schema.user_privileges; +select * from information_schema.column_privileges order by grantee; +select * from information_schema.table_privileges order by grantee; +select * from information_schema.schema_privileges order by grantee; +select * from information_schema.user_privileges order by grantee; show grants; connection con4; -select * from information_schema.column_privileges where grantee like '%user%'; -select * from information_schema.table_privileges where grantee like '%user%'; -select * from information_schema.schema_privileges where grantee like '%user%'; -select * from information_schema.user_privileges where grantee like '%user%'; +select * from information_schema.column_privileges where grantee like '%user%' +order by grantee; +select * from information_schema.table_privileges where grantee like '%user%' +order by grantee; +select * from information_schema.schema_privileges where grantee like '%user%' +order by grantee; +select * from information_schema.user_privileges where grantee like '%user%' +order by grantee; show grants; connection default; drop user user1@localhost, user2@localhost, user3@localhost, user4@localhost; -- cgit v1.2.1 From 5239cba4b58071ea1aa16ff823305f0498078e0a Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 6 Jun 2006 11:54:21 -0400 Subject: BUG#16002: More review fixes mysql-test/r/partition_range.result: Changed test cases mysql-test/t/partition_range.test: Changed test cases sql/partition_info.cc: Changes to resue signed integer code for unsigned integer partition functions Basic idea is to store value - 0x8000000000000000 in list_array and range_int_array and also perform this subtraction before applying get_partition_id_range and so forth. sql/sql_partition.cc: Changes to resue signed integer code for unsigned integer partition functions Basic idea is to store value - 0x8000000000000000 in list_array and range_int_array and also perform this subtraction before applying get_partition_id_range and so forth. --- mysql-test/r/partition_range.result | 17 ++- mysql-test/t/partition_range.test | 10 +- sql/partition_info.cc | 76 +++++------ sql/sql_partition.cc | 265 ++++++++++-------------------------- 4 files changed, 131 insertions(+), 237 deletions(-) diff --git a/mysql-test/r/partition_range.result b/mysql-test/r/partition_range.result index 4d071c0edc1..4a3ed6b6164 100644 --- a/mysql-test/r/partition_range.result +++ b/mysql-test/r/partition_range.result @@ -365,13 +365,28 @@ COUNT(*) DROP TABLE t1; create table t1 (a bigint unsigned) partition by range (a) +(partition p0 values less than (10), +partition p1 values less than (0)); +ERROR HY000: VALUES LESS THAN value must be strictly increasing for each partition +create table t1 (a bigint unsigned) +partition by range (a) (partition p0 values less than (0), partition p1 values less than (10)); -ERROR HY000: VALUES LESS THAN value must be strictly increasing for each partition +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` bigint(20) unsigned DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (a) (PARTITION p0 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (10) ENGINE = MyISAM) +drop table t1; create table t1 (a bigint unsigned) partition by range (a) (partition p0 values less than (2), partition p1 values less than (10)); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` bigint(20) unsigned DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (a) (PARTITION p0 VALUES LESS THAN (2) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (10) ENGINE = MyISAM) insert into t1 values (0xFFFFFFFFFFFFFFFF); ERROR HY000: Table has no partition for value 18446744073709551615 drop table t1; diff --git a/mysql-test/t/partition_range.test b/mysql-test/t/partition_range.test index 239c6cc8144..ebe249eb072 100644 --- a/mysql-test/t/partition_range.test +++ b/mysql-test/t/partition_range.test @@ -392,16 +392,24 @@ DROP TABLE t1; # BUG 16002: Unsigned partition functions not handled correctly # --error ER_RANGE_NOT_INCREASING_ERROR +create table t1 (a bigint unsigned) +partition by range (a) +(partition p0 values less than (10), + partition p1 values less than (0)); + create table t1 (a bigint unsigned) partition by range (a) (partition p0 values less than (0), partition p1 values less than (10)); +show create table t1; +drop table t1; create table t1 (a bigint unsigned) partition by range (a) (partition p0 values less than (2), partition p1 values less than (10)); +show create table t1; --error ER_NO_PARTITION_FOR_GIVEN_VALUE insert into t1 values (0xFFFFFFFFFFFFFFFF); - drop table t1; + diff --git a/sql/partition_info.cc b/sql/partition_info.cc index a6ca1e0107e..a7ab59adb81 100644 --- a/sql/partition_info.cc +++ b/sql/partition_info.cc @@ -444,9 +444,9 @@ bool partition_info::check_engine_mix(handlerton **engine_array, uint no_parts) bool partition_info::check_range_constants() { partition_element* part_def; - longlong current_largest_int= LONGLONG_MIN; - ulonglong current_largest_uint= 0; - longlong part_range_value_int; + longlong current_largest; + longlong part_range_value; + bool first= TRUE; uint i; List_iterator it(partitions); bool result= TRUE; @@ -465,33 +465,26 @@ bool partition_info::check_range_constants() do { part_def= it++; - if (signed_flag) + if ((i != (no_parts - 1)) || !defined_max_value) { - if ((i != (no_parts - 1)) || !defined_max_value) - part_range_value_int= part_def->range_value; - else - part_range_value_int= LONGLONG_MAX; - if (likely(current_largest_int < part_range_value_int)) - { - current_largest_int= part_range_value_int; - range_int_array[i]= part_range_value_int; - } - else - { - my_error(ER_RANGE_NOT_INCREASING_ERROR, MYF(0)); - goto end; - } + part_range_value= part_def->range_value; + if (!signed_flag) + part_range_value-= 0x8000000000000000ULL; + } + else + part_range_value= LONGLONG_MAX; + if (first) + { + current_largest= part_range_value; + range_int_array[0]= part_range_value; + first= FALSE; } else { - ulonglong upart_range_value_int; - if ((i == (no_parts - 1)) && defined_max_value) - part_def->range_value= ULONGLONG_MAX; - upart_range_value_int= part_def->range_value; - if (likely(current_largest_uint < upart_range_value_int)) + if (likely(current_largest < part_range_value)) { - current_largest_uint= upart_range_value_int; - range_int_array[i]= part_range_value_int; + current_largest= part_range_value; + range_int_array[i]= part_range_value; } else { @@ -533,18 +526,6 @@ int partition_info::list_part_cmp(const void* a, const void* b) return 0; } -int partition_info::list_part_cmp_unsigned(const void* a, const void* b) -{ - ulonglong a1= ((LIST_PART_ENTRY*)a)->list_value; - ulonglong b1= ((LIST_PART_ENTRY*)b)->list_value; - if (a1 < b1) - return -1; - else if (a1 > b1) - return +1; - else - return 0; -} - /* This routine allocates an array for all list constants to achieve a fast @@ -572,7 +553,7 @@ bool partition_info::check_list_constants() uint list_index= 0; part_elem_value *list_value; bool result= TRUE; - longlong curr_value, prev_value; + longlong curr_value, prev_value, type_add, calc_value; partition_element* part_def; bool found_null= FALSE; List_iterator list_func_it(partitions); @@ -623,13 +604,22 @@ bool partition_info::check_list_constants() } i= 0; + /* + Fix to be able to reuse signed sort functions also for unsigned + partition functions. + */ + type_add= (longlong)(part_expr->unsigned_flag ? + 0x8000000000000000ULL : + 0ULL); + do { part_def= list_func_it++; List_iterator list_val_it2(part_def->list_val_list); while ((list_value= list_val_it2++)) { - list_array[list_index].list_value= list_value->value; + calc_value= list_value->value - type_add; + list_array[list_index].list_value= calc_value; list_array[list_index++].partition_id= i; } } while (++i < no_parts); @@ -637,12 +627,8 @@ bool partition_info::check_list_constants() if (fixed) { bool first= TRUE; - if (!part_expr->unsigned_flag) - qsort((void*)list_array, no_list_values, sizeof(LIST_PART_ENTRY), - &list_part_cmp); - else - qsort((void*)list_array, no_list_values, sizeof(LIST_PART_ENTRY), - &list_part_cmp_unsigned); + qsort((void*)list_array, no_list_values, sizeof(LIST_PART_ENTRY), + &list_part_cmp); i= prev_value= 0; //prev_value initialised to quiet compiler do diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index 45cd13ce854..086b7f28b1e 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -1752,8 +1752,7 @@ static int add_partition_options(File fptr, partition_element *p_elem) return err + add_engine(fptr,p_elem->engine_type); } -static int add_partition_values(File fptr, partition_info *part_info, - partition_element *p_elem) +static int add_partition_values(File fptr, partition_info *part_info, partition_element *p_elem) { int err= 0; @@ -1766,7 +1765,7 @@ static int add_partition_values(File fptr, partition_info *part_info, if (p_elem->signed_flag) err+= add_int(fptr, p_elem->range_value); else - err+= add_uint(fptr, (ulonglong)p_elem->range_value); + err+= add_uint(fptr, p_elem->range_value); err+= add_end_parenthesis(fptr); } else @@ -2382,6 +2381,7 @@ int get_partition_id_list(partition_info *part_info, int min_list_index= 0; int max_list_index= part_info->no_list_values - 1; longlong part_func_value= part_val_int(part_info->part_expr); + longlong list_value; bool unsigned_flag= part_info->part_expr->unsigned_flag; DBUG_ENTER("get_partition_id_list"); @@ -2394,50 +2394,25 @@ int get_partition_id_list(partition_info *part_info, } goto notfound; } + if (unsigned_flag) + part_func_value-= 0x8000000000000000ULL; *func_value= part_func_value; - if (!unsigned_flag) + while (max_list_index >= min_list_index) { - longlong list_value; - while (max_list_index >= min_list_index) + list_index= (max_list_index + min_list_index) >> 1; + list_value= list_array[list_index].list_value; + if (list_value < part_func_value) + min_list_index= list_index + 1; + else if (list_value > part_func_value) { - list_index= (max_list_index + min_list_index) >> 1; - list_value= list_array[list_index].list_value; - if (list_value < part_func_value) - min_list_index= list_index + 1; - else if (list_value > part_func_value) - { - if (!list_index) - goto notfound; - max_list_index= list_index - 1; - } - else - { - *part_id= (uint32)list_array[list_index].partition_id; - DBUG_RETURN(0); - } + if (!list_index) + goto notfound; + max_list_index= list_index - 1; } - } - else - { - ulonglong ulist_value; - ulonglong upart_func_value= part_func_value; - while (max_list_index >= min_list_index) + else { - list_index= (max_list_index + min_list_index) >> 1; - ulist_value= list_array[list_index].list_value; - if (ulist_value < upart_func_value) - min_list_index= list_index + 1; - else if (ulist_value > upart_func_value) - { - if (!list_index) - goto notfound; - max_list_index= list_index - 1; - } - else - { - *part_id= (uint32)list_array[list_index].partition_id; - DBUG_RETURN(0); - } + *part_id= (uint32)list_array[list_index].partition_id; + DBUG_RETURN(0); } } notfound: @@ -2496,57 +2471,30 @@ uint32 get_list_array_idx_for_endpoint(partition_info *part_info, bool unsigned_flag= part_info->part_expr->unsigned_flag; DBUG_ENTER("get_list_array_idx_for_endpoint"); - if (!unsigned_flag) + if (unsigned_flag) + part_func_value-= 0x8000000000000000ULL; + longlong list_value; + while (max_list_index >= min_list_index) { - longlong list_value; - while (max_list_index >= min_list_index) + list_index= (max_list_index + min_list_index) >> 1; + list_value= list_array[list_index].list_value; + if (list_value < part_func_value) + min_list_index= list_index + 1; + else if (list_value > part_func_value) { - list_index= (max_list_index + min_list_index) >> 1; - list_value= list_array[list_index].list_value; - if (list_value < part_func_value) - min_list_index= list_index + 1; - else if (list_value > part_func_value) - { - if (!list_index) - goto notfound_signed; - max_list_index= list_index - 1; - } - else - { - DBUG_RETURN(list_index + test(left_endpoint ^ include_endpoint)); - } + if (!list_index) + goto notfound; + max_list_index= list_index - 1; } - notfound_signed: - if (list_value < part_func_value) - list_index++; - DBUG_RETURN(list_index); - } - else - { - ulonglong upart_func_value= part_func_value; - ulonglong ulist_value; - while (max_list_index >= min_list_index) + else { - list_index= (max_list_index + min_list_index) >> 1; - ulist_value= list_array[list_index].list_value; - if (ulist_value < upart_func_value) - min_list_index= list_index + 1; - else if (ulist_value > upart_func_value) - { - if (!list_index) - goto notfound_unsigned; - max_list_index= list_index - 1; - } - else - { - DBUG_RETURN(list_index + test(left_endpoint ^ include_endpoint)); - } + DBUG_RETURN(list_index + test(left_endpoint ^ include_endpoint)); } - notfound_unsigned: - if (ulist_value < upart_func_value) - list_index++; - DBUG_RETURN(list_index); } +notfound: + if (list_value < part_func_value) + list_index++; + DBUG_RETURN(list_index); } @@ -2568,52 +2516,26 @@ int get_partition_id_range(partition_info *part_info, *part_id= 0; DBUG_RETURN(0); } + if (unsigned_flag) + part_func_value-= 0x8000000000000000ULL; *func_value= part_func_value; - if (!unsigned_flag) - { - while (max_part_id > min_part_id) - { - loc_part_id= (max_part_id + min_part_id + 1) >> 1; - if (range_array[loc_part_id] <= part_func_value) - min_part_id= loc_part_id + 1; - else - max_part_id= loc_part_id - 1; - } - loc_part_id= max_part_id; - if (part_func_value >= range_array[loc_part_id]) - if (loc_part_id != max_partition) - loc_part_id++; - *part_id= (uint32)loc_part_id; - if (loc_part_id == max_partition) - if (range_array[loc_part_id] != LONGLONG_MAX) - if (part_func_value >= range_array[loc_part_id]) - DBUG_RETURN(HA_ERR_NO_PARTITION_FOUND); - } - else + while (max_part_id > min_part_id) { - ulonglong upart_func_value= part_func_value; - ulonglong urange_value; - while (max_part_id > min_part_id) - { - loc_part_id= (max_part_id + min_part_id + 1) >> 1; - urange_value= range_array[loc_part_id]; - if (urange_value <= upart_func_value) - min_part_id= loc_part_id + 1; - else - max_part_id= loc_part_id - 1; - } - loc_part_id= max_part_id; - urange_value= range_array[loc_part_id]; - if (upart_func_value >= urange_value) - if (loc_part_id != max_partition) - loc_part_id++; - *part_id= (uint32)loc_part_id; - urange_value= range_array[loc_part_id]; - if (loc_part_id == max_partition) - if (urange_value != ULONGLONG_MAX) - if (upart_func_value >= urange_value) - DBUG_RETURN(HA_ERR_NO_PARTITION_FOUND); + loc_part_id= (max_part_id + min_part_id + 1) >> 1; + if (range_array[loc_part_id] <= part_func_value) + min_part_id= loc_part_id + 1; + else + max_part_id= loc_part_id - 1; } + loc_part_id= max_part_id; + if (part_func_value >= range_array[loc_part_id]) + if (loc_part_id != max_partition) + loc_part_id++; + *part_id= (uint32)loc_part_id; + if (loc_part_id == max_partition) + if (range_array[loc_part_id] != LONGLONG_MAX) + if (part_func_value >= range_array[loc_part_id]) + DBUG_RETURN(HA_ERR_NO_PARTITION_FOUND); DBUG_RETURN(0); } @@ -2671,71 +2593,34 @@ uint32 get_partition_id_range_for_endpoint(partition_info *part_info, bool unsigned_flag= part_info->part_expr->unsigned_flag; DBUG_ENTER("get_partition_id_range_for_endpoint"); - if (!unsigned_flag) + if (unsigned_flag) + part_func_value-= 0x8000000000000000ULL; + while (max_part_id > min_part_id) { - while (max_part_id > min_part_id) - { - loc_part_id= (max_part_id + min_part_id + 1) >> 1; - if (range_array[loc_part_id] <= part_func_value) - min_part_id= loc_part_id + 1; - else - max_part_id= loc_part_id - 1; - } - loc_part_id= max_part_id; - if (loc_part_id < max_partition && - part_func_value >= range_array[loc_part_id+1]) - { - loc_part_id++; - } - if (left_endpoint) - { - if (part_func_value >= range_array[loc_part_id]) - loc_part_id++; - } - else - { - if (part_func_value == range_array[loc_part_id]) - loc_part_id += test(include_endpoint); - else if (part_func_value > range_array[loc_part_id]) - loc_part_id++; + loc_part_id= (max_part_id + min_part_id + 1) >> 1; + if (range_array[loc_part_id] <= part_func_value) + min_part_id= loc_part_id + 1; + else + max_part_id= loc_part_id - 1; + } + loc_part_id= max_part_id; + if (loc_part_id < max_partition && + part_func_value >= range_array[loc_part_id+1]) + { + loc_part_id++; + } + if (left_endpoint) + { + if (part_func_value >= range_array[loc_part_id]) loc_part_id++; - } } - else + else { - ulonglong upart_func_value= part_func_value; - ulonglong urange_value; - while (max_part_id > min_part_id) - { - loc_part_id= (max_part_id + min_part_id + 1) >> 1; - urange_value= range_array[loc_part_id]; - if (urange_value <= upart_func_value) - min_part_id= loc_part_id + 1; - else - max_part_id= loc_part_id - 1; - } - loc_part_id= max_part_id; - urange_value= range_array[loc_part_id+1]; - if (loc_part_id < max_partition && - upart_func_value >= urange_value) - { - loc_part_id++; - } - if (left_endpoint) - { - urange_value= range_array[loc_part_id]; - if (upart_func_value >= urange_value) - loc_part_id++; - } - else - { - urange_value= range_array[loc_part_id]; - if (upart_func_value == urange_value) - loc_part_id += test(include_endpoint); - else if (upart_func_value > urange_value) - loc_part_id++; + if (part_func_value == range_array[loc_part_id]) + loc_part_id += test(include_endpoint); + else if (part_func_value > range_array[loc_part_id]) loc_part_id++; - } + loc_part_id++; } DBUG_RETURN(loc_part_id); } -- cgit v1.2.1 From 5efb70d7771c905b61e5e01e2f0643a5953adb83 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 6 Jun 2006 09:59:45 -0700 Subject: Fixed some problems for Windows build VC++Files/client/mysql.dsp: Fixed omission of mysys\my_conio.c. VC++Files/client/mysql_ia64.dsp: Fixed omission of mysys\my_conio.c. client/mysqldump.c: VS compiler does not accept variable declarations within blocks. Such a behaviour complies with the Standard C. --- VC++Files/client/mysql.dsp | 4 ++++ VC++Files/client/mysql_ia64.dsp | 4 ++++ client/mysqldump.c | 3 ++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/VC++Files/client/mysql.dsp b/VC++Files/client/mysql.dsp index 8298e62d8ad..c19e7b7d7fe 100644 --- a/VC++Files/client/mysql.dsp +++ b/VC++Files/client/mysql.dsp @@ -144,6 +144,10 @@ SOURCE=.\readline.cpp # End Source File # Begin Source File +SOURCE=..\mysys\my_conio.c +# End Source File +# Begin Source File + SOURCE=.\sql_string.cpp # End Source File # End Target diff --git a/VC++Files/client/mysql_ia64.dsp b/VC++Files/client/mysql_ia64.dsp index 3fe2e2a2328..8de283d1e0b 100644 --- a/VC++Files/client/mysql_ia64.dsp +++ b/VC++Files/client/mysql_ia64.dsp @@ -130,6 +130,10 @@ SOURCE=.\readline.cpp # End Source File # Begin Source File +SOURCE=..\mysys\my_conio.c +# End Source File +# Begin Source File + SOURCE=.\sql_string.cpp # End Source File # End Target diff --git a/client/mysqldump.c b/client/mysqldump.c index e8f96016153..3445a23eb5e 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -2222,6 +2222,7 @@ static int dump_all_tables_in_db(char *database) static char *get_actual_table_name(const char *old_table_name, MEM_ROOT *root) { char *name= 0; + ulong *lengths; MYSQL_RES *tableRes; MYSQL_ROW row; char query[50 + 2*NAME_LEN]; @@ -2246,7 +2247,7 @@ static char *get_actual_table_name(const char *old_table_name, MEM_ROOT *root) if (numRows > 0) { row= mysql_fetch_row( tableRes ); - ulong *lengths= mysql_fetch_lengths(tableRes); + lengths= mysql_fetch_lengths(tableRes); name= strmake_root(root, row[0], lengths[0]); } mysql_free_result(tableRes); -- cgit v1.2.1 From 6a6bedfa058ad0961ccddbb38156d240d26f9028 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 6 Jun 2006 22:13:30 +0500 Subject: Bug#18396 Identifiers: Byte with value 255 not allowed Old FRM files didn't allow byte 255 as a column name part. Since now we store column names in UTF8, this restriction is not required anymore: 255 is not a valid byte in UTF8. Fix: removing checking against 255. mysql-test/r/ctype_latin1.result: Adding test case mysql-test/t/ctype_latin1.test: Adding test case sql/sql_lex.cc: Removing old code, unnecessary anymore. --- mysql-test/r/ctype_latin1.result | 14 ++++++++++++++ mysql-test/t/ctype_latin1.test | 11 +++++++++++ sql/sql_lex.cc | 2 -- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/ctype_latin1.result b/mysql-test/r/ctype_latin1.result index f8e07e1eb6f..32871563b64 100644 --- a/mysql-test/r/ctype_latin1.result +++ b/mysql-test/r/ctype_latin1.result @@ -391,3 +391,17 @@ ABC SELECT convert(@str collate latin1_swedish_ci using utf8); convert(@str collate latin1_swedish_ci using utf8) ABC €°§ß²³µ~ äöüÄÖÜ áéíóú ÀÈÌÒÙ @ abc +SET NAMES latin1; +DROP TABLE IF EXISTS `abcÿdef`; +CREATE TABLE `abcÿdef` (i int); +INSERT INTO `abcÿdef` VALUES (1); +INSERT INTO abcÿdef VALUES (2); +SELECT * FROM `abcÿdef`; +i +1 +2 +SELECT * FROM abcÿdef; +i +1 +2 +DROP TABLE `abcÿdef`; diff --git a/mysql-test/t/ctype_latin1.test b/mysql-test/t/ctype_latin1.test index dead9a7a0bc..0a112233ffb 100644 --- a/mysql-test/t/ctype_latin1.test +++ b/mysql-test/t/ctype_latin1.test @@ -110,3 +110,14 @@ SELECT convert(@str collate latin1_german2_ci using utf8); SELECT convert(@str collate latin1_swedish_ci using utf8); # End of 4.1 tests + +SET NAMES latin1; +--disable_warnings +DROP TABLE IF EXISTS `abcÿdef`; +--enable_warnings +CREATE TABLE `abcÿdef` (i int); +INSERT INTO `abcÿdef` VALUES (1); +INSERT INTO abcÿdef VALUES (2); +SELECT * FROM `abcÿdef`; +SELECT * FROM abcÿdef; +DROP TABLE `abcÿdef`; diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index 562224201e7..c39bc3b0cb9 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -804,8 +804,6 @@ int MYSQLlex(void *arg, void *yythd) int length; if ((length= my_mbcharlen(cs, c)) == 1) { - if (c == (uchar) NAMES_SEP_CHAR) - break; /* Old .frm format can't handle this char */ if (c == quote_char) { if (yyPeek() != quote_char) -- cgit v1.2.1 From 7fafb1eaff524266125eb5c54f35f51eda46a677 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 6 Jun 2006 13:19:46 -0400 Subject: BUG#16002: After review fixes Fixes for NDB sql/ha_ndbcluster.cc: Fixes for NDB sql/sql_partition.cc: Fixes for NDB --- sql/ha_ndbcluster.cc | 6 ++++++ sql/sql_partition.cc | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 587eabb82d2..32f41bbb689 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -9499,6 +9499,7 @@ int ha_ndbcluster::set_range_data(void *tab_ref, partition_info *part_info) MYF(0)); uint i; int error= 0; + bool unsigned_flag= part_info->part_expr->unsigned_flag; DBUG_ENTER("set_range_data"); if (!range_data) @@ -9509,6 +9510,8 @@ int ha_ndbcluster::set_range_data(void *tab_ref, partition_info *part_info) for (i= 0; i < part_info->no_parts; i++) { longlong range_val= part_info->range_int_array[i]; + if (unsigned_flag) + range_val-= 0x8000000000000000ULL; if (range_val < INT_MIN32 || range_val >= INT_MAX32) { if ((i != part_info->no_parts - 1) || @@ -9535,6 +9538,7 @@ int ha_ndbcluster::set_list_data(void *tab_ref, partition_info *part_info) * sizeof(int32), MYF(0)); uint32 *part_id, i; int error= 0; + bool unsigned_flag= part_info->part_expr->unsigned_flag; DBUG_ENTER("set_list_data"); if (!list_data) @@ -9546,6 +9550,8 @@ int ha_ndbcluster::set_list_data(void *tab_ref, partition_info *part_info) { LIST_PART_ENTRY *list_entry= &part_info->list_array[i]; longlong list_val= list_entry->list_value; + if (unsigned_flag) + list_val-= 0x8000000000000000ULL; if (list_val < INT_MIN32 || list_val > INT_MAX32) { my_error(ER_LIMITED_PART_RANGE, MYF(0), "NDB"); diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index 086b7f28b1e..a9f9e59c0cc 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -2394,9 +2394,9 @@ int get_partition_id_list(partition_info *part_info, } goto notfound; } + *func_value= part_func_value; if (unsigned_flag) part_func_value-= 0x8000000000000000ULL; - *func_value= part_func_value; while (max_list_index >= min_list_index) { list_index= (max_list_index + min_list_index) >> 1; @@ -2509,16 +2509,16 @@ int get_partition_id_range(partition_info *part_info, uint loc_part_id; longlong part_func_value= part_val_int(part_info->part_expr); bool unsigned_flag= part_info->part_expr->unsigned_flag; - DBUG_ENTER("get_partition_id_int_range"); + DBUG_ENTER("get_partition_id_range"); if (part_info->part_expr->null_value) { *part_id= 0; DBUG_RETURN(0); } + *func_value= part_func_value; if (unsigned_flag) part_func_value-= 0x8000000000000000ULL; - *func_value= part_func_value; while (max_part_id > min_part_id) { loc_part_id= (max_part_id + min_part_id + 1) >> 1; -- cgit v1.2.1 From 3eb8a12c08dd18cf24e652f5e886574f77845434 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 6 Jun 2006 23:05:10 +0400 Subject: Applied innodb-4.1-ss31 snapshot. Fixed BUG#19727 "InnoDB crashed server and crashed tables are not recoverable". innobase/row/row0mysql.c: Applied innodb-4.1-ss31 snapshot. Move trx_commit_for_mysql(trx) calls before calls to row_mysql_unlock_data_dictionary(trx). --- innobase/row/row0mysql.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/innobase/row/row0mysql.c b/innobase/row/row0mysql.c index 23d019b6f78..1ee920ffb14 100644 --- a/innobase/row/row0mysql.c +++ b/innobase/row/row0mysql.c @@ -2237,14 +2237,14 @@ do not allow the discard. We also reserve the data dictionary latch. */ } } funct_exit: + trx_commit_for_mysql(trx); + row_mysql_unlock_data_dictionary(trx); if (graph) { que_graph_free(graph); } - trx_commit_for_mysql(trx); - trx->op_info = ""; return((int) err); @@ -2374,10 +2374,10 @@ row_import_tablespace_for_mysql( } funct_exit: - row_mysql_unlock_data_dictionary(trx); - trx_commit_for_mysql(trx); + row_mysql_unlock_data_dictionary(trx); + trx->op_info = ""; return((int) err); @@ -2769,6 +2769,8 @@ fputs(" InnoDB: You are trying to drop table ", stderr); } funct_exit: + trx_commit_for_mysql(trx); + if (locked_dictionary) { row_mysql_unlock_data_dictionary(trx); } @@ -2779,8 +2781,6 @@ funct_exit: que_graph_free(graph); - trx_commit_for_mysql(trx); - trx->op_info = ""; srv_wake_master_thread(); @@ -2857,10 +2857,10 @@ loop: } } - row_mysql_unlock_data_dictionary(trx); - trx_commit_for_mysql(trx); + row_mysql_unlock_data_dictionary(trx); + trx->op_info = ""; return(err); @@ -3272,6 +3272,8 @@ row_rename_table_for_mysql( } } funct_exit: + trx_commit_for_mysql(trx); + if (!recovering_temp_table) { row_mysql_unlock_data_dictionary(trx); } @@ -3284,8 +3286,6 @@ funct_exit: mem_heap_free(heap); } - trx_commit_for_mysql(trx); - trx->op_info = ""; return((int) err); -- cgit v1.2.1 From 9e3f90e54156b10deac06cbb8880fb00749fa8ba Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 6 Jun 2006 23:37:42 +0400 Subject: Applied innodb-5.0-ss609 snapshot. Fixed BUG#19727 "InnoDB crashed server and crashed tables are not recoverable". innobase/row/row0mysql.c: Applied innodb-5.0-ss609 snapshot. Move trx_commit_for_mysql(trx) calls before calls to row_mysql_unlock_data_dictionary(trx). innobase/row/row0sel.c: Applied innodb-5.0-ss609 snapshot. row_sel_try_search_shortcut(): Do not return SEL_FOUND when the record was not found. This bug was introduced in InnoDB 5.0.3, but luckily it should nerver manifest itself, given that existing InnoDB SQL code never makes use of consistent reads. mysql-test/t/innodb.test: Applied innodb-5.0-ss609 snapshot. Add the big fat warning notice also to the bottom of innodb.test so that it will require more talent to ignore the change of policy. --- innobase/row/row0mysql.c | 20 ++++++++++---------- innobase/row/row0sel.c | 3 ++- mysql-test/t/innodb.test | 13 +++++++++++++ 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/innobase/row/row0mysql.c b/innobase/row/row0mysql.c index 89b82882d93..9e922a3e04a 100644 --- a/innobase/row/row0mysql.c +++ b/innobase/row/row0mysql.c @@ -2570,14 +2570,14 @@ do not allow the discard. We also reserve the data dictionary latch. */ } } funct_exit: + trx_commit_for_mysql(trx); + row_mysql_unlock_data_dictionary(trx); if (graph) { que_graph_free(graph); } - trx_commit_for_mysql(trx); - trx->op_info = ""; return((int) err); @@ -2707,10 +2707,10 @@ row_import_tablespace_for_mysql( } funct_exit: - row_mysql_unlock_data_dictionary(trx); - trx_commit_for_mysql(trx); + row_mysql_unlock_data_dictionary(trx); + trx->op_info = ""; return((int) err); @@ -3398,6 +3398,8 @@ fputs(" InnoDB: You are trying to drop table ", stderr); } funct_exit: + trx_commit_for_mysql(trx); + if (locked_dictionary) { row_mysql_unlock_data_dictionary(trx); } @@ -3408,8 +3410,6 @@ funct_exit: que_graph_free(graph); - trx_commit_for_mysql(trx); - trx->op_info = ""; #ifndef UNIV_HOTBACKUP @@ -3488,10 +3488,10 @@ loop: } } - row_mysql_unlock_data_dictionary(trx); - trx_commit_for_mysql(trx); + row_mysql_unlock_data_dictionary(trx); + trx->op_info = ""; return(err); @@ -3905,6 +3905,8 @@ row_rename_table_for_mysql( } } funct_exit: + trx_commit_for_mysql(trx); + if (!recovering_temp_table) { row_mysql_unlock_data_dictionary(trx); } @@ -3917,8 +3919,6 @@ funct_exit: mem_heap_free(heap); } - trx_commit_for_mysql(trx); - trx->op_info = ""; return((int) err); diff --git a/innobase/row/row0sel.c b/innobase/row/row0sel.c index 1402d3aaba6..23971767e7e 100644 --- a/innobase/row/row0sel.c +++ b/innobase/row/row0sel.c @@ -1064,11 +1064,12 @@ row_sel_try_search_shortcut( ut_ad(plan->pcur.latch_mode == node->latch_mode); plan->n_rows_fetched++; + ret = SEL_FOUND; func_exit: if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } - return(SEL_FOUND); + return(ret); } /************************************************************************* diff --git a/mysql-test/t/innodb.test b/mysql-test/t/innodb.test index e4c8bf89cca..71b178d0e57 100644 --- a/mysql-test/t/innodb.test +++ b/mysql-test/t/innodb.test @@ -2196,3 +2196,16 @@ drop table t2, t1; # --error ER_TABLE_CANT_HANDLE_SPKEYS create table t1 (g geometry not null, spatial gk(g)) engine=innodb; + +####################################################################### +# # +# Please, DO NOT TOUCH this file as well as the innodb.result file. # +# These files are to be modified ONLY BY INNOBASE guys. # +# # +# Use innodb_mysql.[test|result] files instead. # +# # +# If nevertheless you need to make some changes here, please, forward # +# your commit message To: dev@innodb.com Cc: dev-innodb@mysql.com # +# (otherwise your changes may be erased). # +# # +####################################################################### -- cgit v1.2.1 From 6e80e9a4f93180f680b5d908e47221af67d7a3d6 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 7 Jun 2006 01:10:23 +0400 Subject: Fixed bug#15962: CONCAT() in UNION may lead to a data trucation. To calculate its max_length the CONCAT() function is simply sums max_lengths of its arguments but when the collation of an argument differs from the collation of the CONCAT() max_length will be wrong. This may lead to a data truncation when a tmp table is used, in UNIONS for example. The Item_func_concat::fix_length_and_dec() function now recalculates the max_length of an argument when the mbmaxlen of the argument differs from the mbmaxlen of the CONCAT(). mysql-test/t/func_concat.test: Added test case for bug#15962:CONCAT() in UNION may lead to a data trucation. mysql-test/r/func_concat.result: Added test case for bug#15962:CONCAT() in UNION may lead to a data trucation. sql/item_strfunc.cc: Fixed bug#15962: CONCAT() in UNION may lead to a data trucation. The Item_func_concat::fix_length_and_dec() function now recalculates the max_length of an argument when the mbmaxlen of the argument differs from the mbmaxlen of the CONCAT(). --- mysql-test/r/func_concat.result | 7 +++++++ mysql-test/t/func_concat.test | 8 ++++++++ sql/item_strfunc.cc | 9 ++++++++- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/func_concat.result b/mysql-test/r/func_concat.result index 0bd53b32dd7..712f0c0495e 100644 --- a/mysql-test/r/func_concat.result +++ b/mysql-test/r/func_concat.result @@ -68,3 +68,10 @@ select 'a' union select concat('a', -0.0000); a a a0.0000 +create table t1(f1 varchar(6)) charset=utf8; +insert into t1 values ("123456"); +select concat(f1, 2) a from t1 union select 'x' a from t1; +a +1234562 +x +drop table t1; diff --git a/mysql-test/t/func_concat.test b/mysql-test/t/func_concat.test index 37fc0e105b8..42201961222 100644 --- a/mysql-test/t/func_concat.test +++ b/mysql-test/t/func_concat.test @@ -53,3 +53,11 @@ select 'a' union select concat('a', -0.0); select 'a' union select concat('a', -0.0000); # End of 4.1 tests + +# +# Bug#15962: CONCAT() in UNION may lead to a data trucation. +# +create table t1(f1 varchar(6)) charset=utf8; +insert into t1 values ("123456"); +select concat(f1, 2) a from t1 union select 'x' a from t1; +drop table t1; diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index ce9897afeed..d8082440f1a 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -389,7 +389,14 @@ void Item_func_concat::fix_length_and_dec() return; for (uint i=0 ; i < arg_count ; i++) - max_result_length+= args[i]->max_length; + { + if (args[i]->collation.collation->mbmaxlen != collation.collation->mbmaxlen) + max_result_length+= (args[i]->max_length / + args[i]->collation.collation->mbmaxlen) * + collation.collation->mbmaxlen; + else + max_result_length+= args[i]->max_length; + } if (max_result_length >= MAX_BLOB_WIDTH) { -- cgit v1.2.1 From d1b37c77ef202f4d9b276b36000cd4ac4c19626a Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 7 Jun 2006 16:20:57 +1000 Subject: BUG#18966 CHange in stop/shutdown behaviour Fixes based on review by Tomas ndb/src/mgmapi/mgmapi.cpp: Return immediately if ndb_mgm_get_version fails. correctly use new protocol for versions > 5.1 ndb/src/mgmsrv/Services.cpp: Only have 1 version of 'stop all' with reply being dependent on if the optional stop parameter is supplied. ndb/src/mgmsrv/Services.hpp: Only 1 version of stopAll --- ndb/src/mgmapi/mgmapi.cpp | 30 +++++++++++++++++++++--------- ndb/src/mgmsrv/Services.cpp | 36 ++++++++++++++---------------------- ndb/src/mgmsrv/Services.hpp | 4 +--- 3 files changed, 36 insertions(+), 34 deletions(-) diff --git a/ndb/src/mgmapi/mgmapi.cpp b/ndb/src/mgmapi/mgmapi.cpp index 3109cea7782..d514397f8de 100644 --- a/ndb/src/mgmapi/mgmapi.cpp +++ b/ndb/src/mgmapi/mgmapi.cpp @@ -870,18 +870,24 @@ ndb_mgm_stop3(NdbMgmHandle handle, int no_of_nodes, const int * node_list, if(handle->mgmd_version_build==-1) { char verstr[50]; - ndb_mgm_get_version(handle, + if(!ndb_mgm_get_version(handle, &(handle->mgmd_version_major), &(handle->mgmd_version_minor), &(handle->mgmd_version_build), sizeof(verstr), - verstr); + verstr)) + { + return -1; + } } - int use_v2= (handle->mgmd_version_major==5) + int use_v2= ((handle->mgmd_version_major==5) && ( (handle->mgmd_version_minor==0 && handle->mgmd_version_build>=21) ||(handle->mgmd_version_minor==1 && handle->mgmd_version_build>=12) - ); + ||(handle->mgmd_version_minor>1) + ) + ) + || (handle->mgmd_version_major>5); if(no_of_nodes < -1){ SET_ERROR(handle, NDB_MGM_ILLEGAL_NUMBER_OF_NODES, @@ -900,7 +906,7 @@ ndb_mgm_stop3(NdbMgmHandle handle, int no_of_nodes, const int * node_list, args.put("stop", (no_of_nodes==-1)?"mgm,db":"db"); const Properties *reply; if(use_v2) - reply = ndb_mgm_call(handle, stop_reply_v2, "stop all v2", &args); + reply = ndb_mgm_call(handle, stop_reply_v2, "stop all", &args); else reply = ndb_mgm_call(handle, stop_reply_v1, "stop all", &args); CHECK_REPLY(reply, -1); @@ -1013,18 +1019,24 @@ ndb_mgm_restart3(NdbMgmHandle handle, int no_of_nodes, const int * node_list, if(handle->mgmd_version_build==-1) { char verstr[50]; - ndb_mgm_get_version(handle, + if(!ndb_mgm_get_version(handle, &(handle->mgmd_version_major), &(handle->mgmd_version_minor), &(handle->mgmd_version_build), sizeof(verstr), - verstr); + verstr)) + { + return -1; + } } - int use_v2= (handle->mgmd_version_major==5) + int use_v2= ((handle->mgmd_version_major==5) && ( (handle->mgmd_version_minor==0 && handle->mgmd_version_build>=21) ||(handle->mgmd_version_minor==1 && handle->mgmd_version_build>=12) - ); + ||(handle->mgmd_version_minor>1) + ) + ) + || (handle->mgmd_version_major>5); if(no_of_nodes < 0){ SET_ERROR(handle, NDB_MGM_RESTART_FAILED, diff --git a/ndb/src/mgmsrv/Services.cpp b/ndb/src/mgmsrv/Services.cpp index 01f11d600df..cdadec5cea1 100644 --- a/ndb/src/mgmsrv/Services.cpp +++ b/ndb/src/mgmsrv/Services.cpp @@ -200,12 +200,9 @@ ParserRow commands[] = { MGM_ARG("node", String, Mandatory, "Node"), MGM_ARG("abort", Int, Mandatory, "Node"), - MGM_CMD("stop all", &MgmApiSession::stopAll_v1, ""), + MGM_CMD("stop all", &MgmApiSession::stopAll, ""), MGM_ARG("abort", Int, Mandatory, "Node"), - - MGM_CMD("stop all v2", &MgmApiSession::stopAll_v2, ""), - MGM_ARG("abort", Int, Mandatory, "Node"), - MGM_ARG("stop", String, Mandatory, "MGM/DB or both"), + MGM_ARG("stop", String, Optional, "MGM/DB or both"), MGM_CMD("enter single user", &MgmApiSession::enterSingleUser, ""), MGM_ARG("nodeId", Int, Mandatory, "Node"), @@ -1071,31 +1068,26 @@ MgmApiSession::stop(Properties const &args, int version) { m_output->println(""); } - -void -MgmApiSession::stopAll_v1(Parser::Context &, - Properties const &args) { - stopAll(args,"db",1); -} - void -MgmApiSession::stopAll_v2(Parser::Context &, - Properties const &args) { - BaseString tostop; - args.get("stop", tostop); - stopAll(args, tostop.c_str(), 2); -} - -void -MgmApiSession::stopAll(Properties const &args, const char* tostop, int ver) { +MgmApiSession::stopAll(Parser::Context &, + Properties const &args) { int stopped[2] = {0,0}; Uint32 abort; args.get("abort", &abort); + BaseString stop; + const char* tostop= "db"; + int ver=1; + if (args.get("stop", stop)) + { + tostop= stop.c_str(); + ver= 2; + } + int result= 0; if(strstr(tostop,"db")) result= m_mgmsrv.shutdownDB(&stopped[0], abort != 0); - if(strstr(tostop,"mgm")) + if(!result && strstr(tostop,"mgm")) result= m_mgmsrv.shutdownMGM(&stopped[1], abort!=0, &m_stopSelf); m_output->println("stop reply"); diff --git a/ndb/src/mgmsrv/Services.hpp b/ndb/src/mgmsrv/Services.hpp index 0d4331b128b..6d293ced8c8 100644 --- a/ndb/src/mgmsrv/Services.hpp +++ b/ndb/src/mgmsrv/Services.hpp @@ -80,9 +80,7 @@ public: void stop_v1(Parser_t::Context &ctx, const class Properties &args); void stop_v2(Parser_t::Context &ctx, const class Properties &args); void stop(const class Properties &args, int version); - void stopAll_v1(Parser_t::Context &ctx, const class Properties &args); - void stopAll_v2(Parser_t::Context &ctx, const class Properties &args); - void stopAll(Properties const &args, const char* tostop, int ver); + void stopAll(Parser_t::Context &ctx, const class Properties &args); void start(Parser_t::Context &ctx, const class Properties &args); void startAll(Parser_t::Context &ctx, const class Properties &args); void bye(Parser_t::Context &ctx, const class Properties &args); -- cgit v1.2.1 From febe7eb64a7472823294ae7295194af2be1b3497 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 7 Jun 2006 14:01:10 +0500 Subject: Fix for bug #6880: LAST_INSERT_ID() within a statement mysql-test/r/auto_increment.result: Fix for bug #6880: LAST_INSERT_ID() within a statement - test result mysql-test/r/rpl_log.result: Fix for bug #6880: LAST_INSERT_ID() within a statement - test result mysql-test/t/auto_increment.test: Fix for bug #6880: LAST_INSERT_ID() within a statement - test case mysql-test/t/rpl_log.test: Fix for bug #6880: LAST_INSERT_ID() within a statement - test case sql/item_func.cc: Fix for bug #6880: LAST_INSERT_ID() within a statement - return the first thd->last_insert_id set (within a query) --- mysql-test/r/auto_increment.result | 22 ++++++++++++++++++++++ mysql-test/r/rpl_log.result | 17 +++++++++++++++++ mysql-test/t/auto_increment.test | 17 +++++++++++++++++ mysql-test/t/rpl_log.test | 14 ++++++++++++++ sql/item_func.cc | 7 ++++--- 5 files changed, 74 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/auto_increment.result b/mysql-test/r/auto_increment.result index 426f20212c3..c1b7b753bd4 100644 --- a/mysql-test/r/auto_increment.result +++ b/mysql-test/r/auto_increment.result @@ -378,4 +378,26 @@ t1 CREATE TABLE `t1` ( KEY `t1_name` (`t1_name`) ) ENGINE=MyISAM AUTO_INCREMENT=1003 DEFAULT CHARSET=latin1 DROP TABLE `t1`; +create table t1(a int not null auto_increment primary key); +create table t2(a int not null auto_increment primary key, t1a int); +insert into t1 values(NULL); +insert into t2 values (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()); +insert into t1 values (NULL); +insert into t2 values (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()), +(NULL, LAST_INSERT_ID()); +insert into t1 values (NULL); +insert into t2 values (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()), +(NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()); +select * from t2; +a t1a +1 1 +2 1 +3 2 +4 2 +5 2 +6 3 +7 3 +8 3 +9 3 +drop table t1, t2; End of 4.1 tests diff --git a/mysql-test/r/rpl_log.result b/mysql-test/r/rpl_log.result index 9fcab2a7cbe..3833800bfeb 100644 --- a/mysql-test/r/rpl_log.result +++ b/mysql-test/r/rpl_log.result @@ -99,3 +99,20 @@ Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File # 127.0.0.1 root MASTER_PORT 1 master-bin.000002 276 slave-relay-bin.000003 214 master-bin.000002 Yes Yes 0 0 276 214 None 0 No # show binlog events in 'slave-bin.000005' from 4; ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log +create table t1(a int auto_increment primary key, b int); +insert into t1 values (NULL, 1); +reset master; +set insert_id=5; +insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); +show binlog events; +Log_name Pos Event_type Server_id Orig_log_pos Info +slave-bin.000001 4 Start 2 4 Server ver: VERSION, Binlog ver: 3 +slave-bin.000001 79 Intvar 2 79 LAST_INSERT_ID=1 +slave-bin.000001 107 Intvar 2 107 INSERT_ID=5 +slave-bin.000001 135 Query 2 135 use `test`; insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()) +select * from t1; +a b +1 1 +5 1 +6 1 +drop table t1; diff --git a/mysql-test/t/auto_increment.test b/mysql-test/t/auto_increment.test index eed2ea44d05..37b92b32bfb 100644 --- a/mysql-test/t/auto_increment.test +++ b/mysql-test/t/auto_increment.test @@ -238,4 +238,21 @@ SHOW CREATE TABLE `t1`; DROP TABLE `t1`; +# +# Bug #6880: LAST_INSERT_ID() within a statement +# + +create table t1(a int not null auto_increment primary key); +create table t2(a int not null auto_increment primary key, t1a int); +insert into t1 values(NULL); +insert into t2 values (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()); +insert into t1 values (NULL); +insert into t2 values (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()), +(NULL, LAST_INSERT_ID()); +insert into t1 values (NULL); +insert into t2 values (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()), +(NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()); +select * from t2; +drop table t1, t2; + --echo End of 4.1 tests diff --git a/mysql-test/t/rpl_log.test b/mysql-test/t/rpl_log.test index 7a67ab2311a..08aa3b28850 100644 --- a/mysql-test/t/rpl_log.test +++ b/mysql-test/t/rpl_log.test @@ -108,4 +108,18 @@ show slave status; --error 1220 show binlog events in 'slave-bin.000005' from 4; +# +# Bug #6880: LAST_INSERT_ID() within a statement +# + +create table t1(a int auto_increment primary key, b int); +insert into t1 values (NULL, 1); +reset master; +set insert_id=5; +insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); +--replace_result $VERSION VERSION +show binlog events; +select * from t1; +drop table t1; + # End of 4.1 tests diff --git a/sql/item_func.cc b/sql/item_func.cc index 66300d129d4..91ccef6511f 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -2233,15 +2233,16 @@ longlong Item_func_release_lock::val_int() longlong Item_func_last_insert_id::val_int() { DBUG_ASSERT(fixed == 1); + THD* thd= current_thd; if (arg_count) { longlong value=args[0]->val_int(); - current_thd->insert_id(value); + thd->insert_id(value); null_value=args[0]->null_value; } else - current_thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT); - return current_thd->insert_id(); + thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT); + return thd->last_insert_id_used ? thd->current_insert_id : thd->insert_id(); } /* This function is just used to test speed of different functions */ -- cgit v1.2.1 From 683ebcd101f4f33d4fd04bd44b0344353fe282a1 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 7 Jun 2006 16:17:56 +0400 Subject: Fixed bug#19789: REPLACE was allowed for a VIEW with CHECK OPTION enabled. The st_lex::which_check_option_applicable() function controls for which statements WITH CHECK OPTION clause should be taken into account. REPLACE and REPLACE_SELECT wasn't in the list which results in allowing REPLACE to insert wrong rows in a such view. The st_lex::which_check_option_applicable() now includes REPLACE and REPLACE_SELECT in the list of statements for which WITH CHECK OPTION clause is applicable. mysql-test/t/replace.test: Added test case for bug#19789: REPLACE was allowed for a VIEW with CHECK OPTION enabled. mysql-test/r/replace.result: Added test case for bug#19789: REPLACE was allowed for a VIEW with CHECK OPTION enabled. sql/sql_lex.h: Fixed bug#19789: REPLACE was allowed for a VIEW with CHECK OPTION enabled. The st_lex::which_check_option_applicable() now includes REPLACE and REPLACE_SELECT in the list of statements for which WITH CHECK OPTION clause is applicable. --- mysql-test/r/replace.result | 6 ++++++ mysql-test/t/replace.test | 10 ++++++++++ sql/sql_lex.h | 2 ++ 3 files changed, 18 insertions(+) diff --git a/mysql-test/r/replace.result b/mysql-test/r/replace.result index a7d59fcfa62..5a5e4571ba9 100644 --- a/mysql-test/r/replace.result +++ b/mysql-test/r/replace.result @@ -24,3 +24,9 @@ a b 63 default_value 127 last drop table t1; +CREATE TABLE t1 (f1 INT); +CREATE VIEW v1 AS SELECT f1 FROM t1 WHERE f1 = 0 WITH CHECK OPTION; +REPLACE INTO v1 (f1) VALUES (1); +ERROR HY000: CHECK OPTION failed 'test.v1' +DROP TABLE t1; +DROP VIEW v1; diff --git a/mysql-test/t/replace.test b/mysql-test/t/replace.test index 10703eaafb8..269854fb180 100644 --- a/mysql-test/t/replace.test +++ b/mysql-test/t/replace.test @@ -35,3 +35,13 @@ select * from t1; drop table t1; # End of 4.1 tests + +# +# Bug#19789: REPLACE was allowed for a VIEW with CHECK OPTION enabled. +# +CREATE TABLE t1 (f1 INT); +CREATE VIEW v1 AS SELECT f1 FROM t1 WHERE f1 = 0 WITH CHECK OPTION; +--error 1369 +REPLACE INTO v1 (f1) VALUES (1); +DROP TABLE t1; +DROP VIEW v1; diff --git a/sql/sql_lex.h b/sql/sql_lex.h index 34e7ee969b6..306a726cab9 100644 --- a/sql/sql_lex.h +++ b/sql/sql_lex.h @@ -1000,6 +1000,8 @@ typedef struct st_lex case SQLCOM_UPDATE_MULTI: case SQLCOM_INSERT: case SQLCOM_INSERT_SELECT: + case SQLCOM_REPLACE: + case SQLCOM_REPLACE_SELECT: case SQLCOM_LOAD: return TRUE; default: -- cgit v1.2.1 From 8da354ea7db426fc3a5bde9fc946547b956b19f7 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 7 Jun 2006 14:46:10 +0200 Subject: Import from yaSSL to fix bild problems on AIX(already fixed but was lost during last import) extra/yassl/taocrypt/include/runtime.hpp: Import patch yassl.diff --- extra/yassl/taocrypt/include/runtime.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/extra/yassl/taocrypt/include/runtime.hpp b/extra/yassl/taocrypt/include/runtime.hpp index 3a5cf62865a..88559cb0ca0 100644 --- a/extra/yassl/taocrypt/include/runtime.hpp +++ b/extra/yassl/taocrypt/include/runtime.hpp @@ -28,6 +28,9 @@ #ifndef yaSSL_NEW_HPP #define yaSSL_NEW_HPP +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #ifdef __sun -- cgit v1.2.1 From cd323e29d4f52dfc3f52aa541b7cfab01bf84188 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 7 Jun 2006 19:44:43 +0500 Subject: BUG#12982 - LOAD DATA fails without any error for big files with big read buffer Setting read buffer to values greater than SSIZE_MAX results in unexpected behavior. According to read(2) manual: If count is greater than SSIZE_MAX, the result is unspecified. Set upper limit for read_buffer_size and read_rnd_buffer_size to SSIZE_MAX. include/my_global.h: Define SSIZE_MAX if not defined. sql/mysqld.cc: Set upper limit for read_buffer_size and read_rnd_buffer_size to SSIZE_MAX. --- include/my_global.h | 3 +++ sql/mysqld.cc | 7 ++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/include/my_global.h b/include/my_global.h index 7adf4845984..0458d9dcf2c 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -736,6 +736,9 @@ typedef SOCKET_SIZE_TYPE size_socket; #define DBL_MAX 1.79769313486231470e+308 #define FLT_MAX ((float)3.40282346638528860e+38) #endif +#ifndef SSIZE_MAX +#define SSIZE_MAX (ssize_t)((~((size_t) 0)) / 2) +#endif #if !defined(HAVE_ISINF) && !defined(isinf) #define isinf(X) 0 diff --git a/sql/mysqld.cc b/sql/mysqld.cc index ef2f52a33df..b862b381d2f 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -5847,7 +5847,8 @@ The minimum value for this variable is 4096.", "Each thread that does a sequential scan allocates a buffer of this size for each table it scans. If you do many sequential scans, you may want to increase this value.", (gptr*) &global_system_variables.read_buff_size, (gptr*) &max_system_variables.read_buff_size,0, GET_ULONG, REQUIRED_ARG, - 128*1024L, IO_SIZE*2+MALLOC_OVERHEAD, ~0L, MALLOC_OVERHEAD, IO_SIZE, 0}, + 128*1024L, IO_SIZE*2+MALLOC_OVERHEAD, SSIZE_MAX, MALLOC_OVERHEAD, IO_SIZE, + 0}, {"read_only", OPT_READONLY, "Make all non-temporary tables read-only, with the exception for replication (slave) threads and users with the SUPER privilege", (gptr*) &opt_readonly, @@ -5858,12 +5859,12 @@ The minimum value for this variable is 4096.", (gptr*) &global_system_variables.read_rnd_buff_size, (gptr*) &max_system_variables.read_rnd_buff_size, 0, GET_ULONG, REQUIRED_ARG, 256*1024L, IO_SIZE*2+MALLOC_OVERHEAD, - ~0L, MALLOC_OVERHEAD, IO_SIZE, 0}, + SSIZE_MAX, MALLOC_OVERHEAD, IO_SIZE, 0}, {"record_buffer", OPT_RECORD_BUFFER, "Alias for read_buffer_size", (gptr*) &global_system_variables.read_buff_size, (gptr*) &max_system_variables.read_buff_size,0, GET_ULONG, REQUIRED_ARG, - 128*1024L, IO_SIZE*2+MALLOC_OVERHEAD, ~0L, MALLOC_OVERHEAD, IO_SIZE, 0}, + 128*1024L, IO_SIZE*2+MALLOC_OVERHEAD, SSIZE_MAX, MALLOC_OVERHEAD, IO_SIZE, 0}, #ifdef HAVE_REPLICATION {"relay_log_purge", OPT_RELAY_LOG_PURGE, "0 = do not purge relay logs. 1 = purge them as soon as they are no more needed.", -- cgit v1.2.1 From 49ccf53e8eb8fbce7edb0172b11f4e4c1334ccc8 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 8 Jun 2006 02:31:58 +1000 Subject: BUG#19318 valgrind: memory leak in ndb_mgmd fix based on review ndb/src/mgmsrv/ConfigInfo.cpp: move delete to more appropriate places inside loop. --- ndb/src/mgmsrv/ConfigInfo.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ndb/src/mgmsrv/ConfigInfo.cpp b/ndb/src/mgmsrv/ConfigInfo.cpp index 1466ae2e0f5..2673aecf31b 100644 --- a/ndb/src/mgmsrv/ConfigInfo.cpp +++ b/ndb/src/mgmsrv/ConfigInfo.cpp @@ -2287,6 +2287,7 @@ ConfigInfo::ConfigInfo() // Replace section with modified section m_info.put(param._section, section, true); + delete section; if(param._type != ConfigInfo::CI_SECTION){ Properties * p; @@ -2344,7 +2345,6 @@ ConfigInfo::ConfigInfo() ndbout << "Edit file " << __FILE__ << "." << endl; require(false); } - delete section; } } -- cgit v1.2.1 From a7566db788a2ce71751bce8fecf98507b8e37b8b Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 8 Jun 2006 13:34:03 +0300 Subject: Bug #15355: Common natural join column not resolved in prepared statement nested query Problem: There was a wrong context assigned to the columns that were added in insert_fields() when expanding a '*'. When this is done in a prepared statement it causes fix_fields() to fail to find the table that these columns reference. Actually the right context is set in setup_natural_join_row_types() called at the end of setup_tables(). However when executed in a context of a prepared statement setup_tables() resets the context, but setup_natural_join_row_types() was not setting it to the correct value assuming it has already done so. Solution: The top-most, left-most NATURAL/USING join must be set as a first_name_resolution_table in context even when operating on prepared statements. mysql-test/r/join.result: testsuite for the bug mysql-test/t/join.test: testsuite for the bug sql/sql_base.cc: The context must be set even when executed as prepared statement. --- mysql-test/r/join.result | 20 ++++++++++++++++++++ mysql-test/t/join.test | 25 +++++++++++++++++++++++++ sql/sql_base.cc | 22 +++++++++++----------- 3 files changed, 56 insertions(+), 11 deletions(-) diff --git a/mysql-test/r/join.result b/mysql-test/r/join.result index 86288caf398..48b7730481f 100644 --- a/mysql-test/r/join.result +++ b/mysql-test/r/join.result @@ -744,3 +744,23 @@ select a2 from ((t1 natural join t2) join t3 on b=c1) natural join t4; a2 1 drop table t1,t2,t3,t4; +create table t1 (c int, b int); +create table t2 (a int, b int); +create table t3 (b int, c int); +create table t4 (y int, c int); +create table t5 (y int, z int); +insert into t1 values (3,2); +insert into t2 values (1,2); +insert into t3 values (2,3); +insert into t4 values (1,3); +insert into t5 values (1,4); +prepare stmt1 from "select * from ((t3 natural join (t1 natural join t2)) +natural join t4) natural join t5"; +execute stmt1; +y c b a z +1 3 2 1 4 +select * from ((t3 natural join (t1 natural join t2)) natural join t4) +natural join t5; +y c b a z +1 3 2 1 4 +drop table t1, t2, t3, t4, t5; diff --git a/mysql-test/t/join.test b/mysql-test/t/join.test index f6a57d5e230..27558a31d68 100644 --- a/mysql-test/t/join.test +++ b/mysql-test/t/join.test @@ -563,4 +563,29 @@ select a2 from ((t1 natural join t2) join t3 on b=c1) natural join t4; drop table t1,t2,t3,t4; +# +# BUG#15355: Common natural join column not resolved in prepared statement nested query +# +create table t1 (c int, b int); +create table t2 (a int, b int); +create table t3 (b int, c int); +create table t4 (y int, c int); +create table t5 (y int, z int); + +insert into t1 values (3,2); +insert into t2 values (1,2); +insert into t3 values (2,3); +insert into t4 values (1,3); +insert into t5 values (1,4); + +-- this fails +prepare stmt1 from "select * from ((t3 natural join (t1 natural join t2)) +natural join t4) natural join t5"; +execute stmt1; + +-- this works +select * from ((t3 natural join (t1 natural join t2)) natural join t4) + natural join t5; +drop table t1, t2, t3, t4, t5; + # End of tests for WL#2486 - natural/using join diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 75b69c91846..7fe626c8f2d 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -4184,10 +4184,6 @@ static bool setup_natural_join_row_types(THD *thd, if (from_clause->elements == 0) return FALSE; /* We come here in the case of UNIONs. */ - /* For stored procedures do not redo work if already done. */ - if (!context->select_lex->first_execution) - return FALSE; - List_iterator_fast table_ref_it(*from_clause); TABLE_LIST *table_ref; /* Current table reference. */ /* Table reference to the left of the current. */ @@ -4200,14 +4196,18 @@ static bool setup_natural_join_row_types(THD *thd, { table_ref= left_neighbor; left_neighbor= table_ref_it++; - if (store_top_level_join_columns(thd, table_ref, - left_neighbor, right_neighbor)) - return TRUE; - if (left_neighbor) + /* For stored procedures do not redo work if already done. */ + if (context->select_lex->first_execution) { - TABLE_LIST *first_leaf_on_the_right; - first_leaf_on_the_right= table_ref->first_leaf_for_name_resolution(); - left_neighbor->next_name_resolution_table= first_leaf_on_the_right; + if (store_top_level_join_columns(thd, table_ref, + left_neighbor, right_neighbor)) + return TRUE; + if (left_neighbor) + { + TABLE_LIST *first_leaf_on_the_right; + first_leaf_on_the_right= table_ref->first_leaf_for_name_resolution(); + left_neighbor->next_name_resolution_table= first_leaf_on_the_right; + } } right_neighbor= table_ref; } -- cgit v1.2.1 From 40f44b48b0f44f9eb7f13dc7c2e28e56ad805634 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 8 Jun 2006 16:16:07 +0200 Subject: ndb - bug#18781 lock DICT during node restart ndb/src/kernel/main.cpp: signal log from start (#if 0-ed) ndb/test/ndbapi/testDict.cpp: test NF/NR + dict ops ndb/src/kernel/vm/DLFifoList.hpp: add hasPrev ndb/src/kernel/vm/pc.hpp: ERROR_INSERTED_CLEAR(x) test and clear if set ndb/src/common/debugger/SignalLoggerManager.cpp: block no fix ndb/src/kernel/blocks/qmgr/QmgrMain.cpp: spelling ndb/include/kernel/GlobalSignalNumbers.h: locking of master DICT against schema ops, used by slave DIH under NR ndb/include/kernel/signaldata/AlterTable.hpp: locking of master DICT against schema ops, used by slave DIH under NR ndb/include/kernel/signaldata/CreateTable.hpp: locking of master DICT against schema ops, used by slave DIH under NR ndb/include/kernel/signaldata/DictLock.hpp: locking of master DICT against schema ops, used by slave DIH under NR ndb/include/kernel/signaldata/DropTable.hpp: locking of master DICT against schema ops, used by slave DIH under NR ndb/src/common/debugger/signaldata/SignalNames.cpp: locking of master DICT against schema ops, used by slave DIH under NR ndb/src/kernel/blocks/ERROR_codes.txt: locking of master DICT against schema ops, used by slave DIH under NR ndb/src/kernel/blocks/dbdict/Dbdict.cpp: locking of master DICT against schema ops, used by slave DIH under NR ndb/src/kernel/blocks/dbdict/Dbdict.hpp: locking of master DICT against schema ops, used by slave DIH under NR ndb/src/kernel/blocks/dbdih/Dbdih.hpp: locking of master DICT against schema ops, used by slave DIH under NR ndb/src/kernel/blocks/dbdih/DbdihInit.cpp: locking of master DICT against schema ops, used by slave DIH under NR ndb/src/kernel/blocks/dbdih/DbdihMain.cpp: locking of master DICT against schema ops, used by slave DIH under NR ndb/src/ndbapi/ndberror.c: locking of master DICT against schema ops, used by slave DIH under NR --- ndb/include/kernel/GlobalSignalNumbers.h | 10 +- ndb/include/kernel/signaldata/AlterTable.hpp | 1 + ndb/include/kernel/signaldata/CreateTable.hpp | 1 + ndb/include/kernel/signaldata/DictLock.hpp | 76 ++++++ ndb/include/kernel/signaldata/DropTable.hpp | 1 + ndb/src/common/debugger/SignalLoggerManager.cpp | 2 +- ndb/src/common/debugger/signaldata/SignalNames.cpp | 6 + ndb/src/kernel/blocks/ERROR_codes.txt | 4 +- ndb/src/kernel/blocks/dbdict/Dbdict.cpp | 245 ++++++++++++++++- ndb/src/kernel/blocks/dbdict/Dbdict.hpp | 97 ++++++- ndb/src/kernel/blocks/dbdih/Dbdih.hpp | 28 ++ ndb/src/kernel/blocks/dbdih/DbdihInit.cpp | 6 + ndb/src/kernel/blocks/dbdih/DbdihMain.cpp | 133 ++++++++- ndb/src/kernel/blocks/qmgr/QmgrMain.cpp | 4 +- ndb/src/kernel/main.cpp | 4 + ndb/src/kernel/vm/DLFifoList.hpp | 14 + ndb/src/kernel/vm/pc.hpp | 2 + ndb/src/ndbapi/ndberror.c | 1 + ndb/test/ndbapi/testDict.cpp | 304 +++++++++++++++++++++ 19 files changed, 924 insertions(+), 15 deletions(-) create mode 100644 ndb/include/kernel/signaldata/DictLock.hpp diff --git a/ndb/include/kernel/GlobalSignalNumbers.h b/ndb/include/kernel/GlobalSignalNumbers.h index 98b6ce7d949..d60f7a2c582 100644 --- a/ndb/include/kernel/GlobalSignalNumbers.h +++ b/ndb/include/kernel/GlobalSignalNumbers.h @@ -507,16 +507,12 @@ extern const GlobalSignalNumber NO_OF_SIGNAL_NAMES; #define GSN_TEST_ORD 407 #define GSN_TESTSIG 408 #define GSN_TIME_SIGNAL 409 -/* 410 unused */ -/* 411 unused */ -/* 412 unused */ #define GSN_TUP_ABORTREQ 414 #define GSN_TUP_ADD_ATTCONF 415 #define GSN_TUP_ADD_ATTRREF 416 #define GSN_TUP_ADD_ATTRREQ 417 #define GSN_TUP_ATTRINFO 418 #define GSN_TUP_COMMITREQ 419 -/* 420 unused */ #define GSN_TUP_LCPCONF 421 #define GSN_TUP_LCPREF 422 #define GSN_TUP_LCPREQ 423 @@ -938,4 +934,10 @@ extern const GlobalSignalNumber NO_OF_SIGNAL_NAMES; #define GSN_ACC_LOCKREQ 711 #define GSN_READ_PSUEDO_REQ 712 +/* DICT LOCK signals */ +#define GSN_DICT_LOCK_REQ 410 +#define GSN_DICT_LOCK_CONF 411 +#define GSN_DICT_LOCK_REF 412 +#define GSN_DICT_UNLOCK_ORD 420 + #endif diff --git a/ndb/include/kernel/signaldata/AlterTable.hpp b/ndb/include/kernel/signaldata/AlterTable.hpp index 16c9eb204c9..f5006c27fdb 100644 --- a/ndb/include/kernel/signaldata/AlterTable.hpp +++ b/ndb/include/kernel/signaldata/AlterTable.hpp @@ -114,6 +114,7 @@ public: InvalidTableVersion = 241, DropInProgress = 283, Busy = 701, + BusyWithNR = 711, NotMaster = 702, InvalidFormat = 703, AttributeNameTooLong = 704, diff --git a/ndb/include/kernel/signaldata/CreateTable.hpp b/ndb/include/kernel/signaldata/CreateTable.hpp index 481b323fdb0..7d3189cc126 100644 --- a/ndb/include/kernel/signaldata/CreateTable.hpp +++ b/ndb/include/kernel/signaldata/CreateTable.hpp @@ -77,6 +77,7 @@ public: enum ErrorCode { NoError = 0, Busy = 701, + BusyWithNR = 711, NotMaster = 702, InvalidFormat = 703, AttributeNameTooLong = 704, diff --git a/ndb/include/kernel/signaldata/DictLock.hpp b/ndb/include/kernel/signaldata/DictLock.hpp new file mode 100644 index 00000000000..c8f919f65a8 --- /dev/null +++ b/ndb/include/kernel/signaldata/DictLock.hpp @@ -0,0 +1,76 @@ +/* Copyright (C) 2003 MySQL AB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#ifndef DICT_LOCK_HPP +#define DICT_LOCK_HPP + +#include "SignalData.hpp" + +// see comments in Dbdict.hpp + +class DictLockReq { + friend class Dbdict; + friend class Dbdih; +public: + STATIC_CONST( SignalLength = 3 ); + enum LockType { + NoLock = 0, + NodeRestartLock = 1 + }; +private: + Uint32 userPtr; + Uint32 lockType; + Uint32 userRef; +}; + +class DictLockConf { + friend class Dbdict; + friend class Dbdih; +public: + STATIC_CONST( SignalLength = 3 ); +private: + Uint32 userPtr; + Uint32 lockType; + Uint32 lockPtr; +}; + +class DictLockRef { + friend class Dbdict; + friend class Dbdih; +public: + STATIC_CONST( SignalLength = 3 ); + enum ErrorCode { + NotMaster = 1, + InvalidLockType = 2, + TooManyRequests = 3 + }; +private: + Uint32 userPtr; + Uint32 lockType; + Uint32 errorCode; +}; + +class DictUnlockOrd { + friend class Dbdict; + friend class Dbdih; +public: + STATIC_CONST( SignalLength = 2 ); +private: + Uint32 lockPtr; + Uint32 lockType; +}; + +#endif diff --git a/ndb/include/kernel/signaldata/DropTable.hpp b/ndb/include/kernel/signaldata/DropTable.hpp index cae6aff8754..e762446d2b8 100644 --- a/ndb/include/kernel/signaldata/DropTable.hpp +++ b/ndb/include/kernel/signaldata/DropTable.hpp @@ -53,6 +53,7 @@ public: enum ErrorCode { Busy = 701, + BusyWithNR = 711, NotMaster = 702, NoSuchTable = 709, InvalidTableVersion = 241, diff --git a/ndb/src/common/debugger/SignalLoggerManager.cpp b/ndb/src/common/debugger/SignalLoggerManager.cpp index d8710d2058f..67e13dc805a 100644 --- a/ndb/src/common/debugger/SignalLoggerManager.cpp +++ b/ndb/src/common/debugger/SignalLoggerManager.cpp @@ -139,7 +139,7 @@ SignalLoggerManager::log(LogMode logMode, const char * params) } else { for (int i = 0; i < count; ++i){ BlockNumber number = getBlockNo(blocks[i]); - cnt += log(SLM_ON, number-MIN_BLOCK_NO, logMode); + cnt += log(SLM_ON, number, logMode); } } for(int i = 0; ireq.userRef), lockPtr.p->lt->text); +} + +void +Dbdict::execDICT_LOCK_REQ(Signal* signal) +{ + jamEntry(); + const DictLockReq* req = (const DictLockReq*)&signal->theData[0]; + + if (getOwnNodeId() != c_masterNodeId) { + jam(); + sendDictLockRef(signal, *req, DictLockRef::NotMaster); + return; + } + + const DictLockType* lt = getDictLockType(req->lockType); + if (lt == NULL) { + jam(); + sendDictLockRef(signal, *req, DictLockRef::InvalidLockType); + return; + } + + DictLockPtr lockPtr; + if (! c_dictLockQueue.seize(lockPtr)) { + jam(); + sendDictLockRef(signal, *req, DictLockRef::TooManyRequests); + return; + } + + lockPtr.p->req = *req; + lockPtr.p->locked = false; + lockPtr.p->lt = lt; + + checkDictLockQueue(signal); + + if (! lockPtr.p->locked) + sendDictLockInfoEvent(lockPtr, "lock request by node"); +} + +void +Dbdict::checkDictLockQueue(Signal* signal) +{ + DictLockPtr lockPtr; + + do { + if (! c_dictLockQueue.first(lockPtr)) { + jam(); + setDictLockPoll(signal, false); + return; + } + + if (lockPtr.p->locked) { + jam(); + ndbrequire(c_blockState == lockPtr.p->lt->blockState); + break; + } + + if (c_opRecordPool.getNoOfFree() != c_opRecordPool.getSize()) { + jam(); + break; + } + + ndbrequire(c_blockState == BS_IDLE); + lockPtr.p->locked = true; + c_blockState = lockPtr.p->lt->blockState; + sendDictLockConf(signal, lockPtr); + + sendDictLockInfoEvent(lockPtr, "locked by node"); + } while (0); + + // poll while first request is open + // this routine is called again when it is removed for any reason + + bool on = ! lockPtr.p->locked; + setDictLockPoll(signal, on); +} + +void +Dbdict::execDICT_UNLOCK_ORD(Signal* signal) +{ + jamEntry(); + const DictUnlockOrd* ord = (const DictUnlockOrd*)&signal->theData[0]; + + DictLockPtr lockPtr; + c_dictLockQueue.getPtr(lockPtr, ord->lockPtr); + ndbrequire(lockPtr.p->lt->lockType == ord->lockType); + + if (lockPtr.p->locked) { + jam(); + ndbrequire(c_blockState == lockPtr.p->lt->blockState); + ndbrequire(c_opRecordPool.getNoOfFree() == c_opRecordPool.getSize()); + ndbrequire(! c_dictLockQueue.hasPrev(lockPtr)); + + c_blockState = BS_IDLE; + sendDictLockInfoEvent(lockPtr, "unlocked by node"); + } else { + sendDictLockInfoEvent(lockPtr, "lock request removed by node"); + } + + c_dictLockQueue.release(lockPtr); + + checkDictLockQueue(signal); +} + +void +Dbdict::sendDictLockConf(Signal* signal, DictLockPtr lockPtr) +{ + DictLockConf* conf = (DictLockConf*)&signal->theData[0]; + const DictLockReq& req = lockPtr.p->req; + + conf->userPtr = req.userPtr; + conf->lockType = req.lockType; + conf->lockPtr = lockPtr.i; + + sendSignal(req.userRef, GSN_DICT_LOCK_CONF, signal, + DictLockConf::SignalLength, JBB); +} + +void +Dbdict::sendDictLockRef(Signal* signal, DictLockReq req, Uint32 errorCode) +{ + DictLockRef* ref = (DictLockRef*)&signal->theData[0]; + + ref->userPtr = req.userPtr; + ref->lockType = req.lockType; + ref->errorCode = errorCode; + + sendSignal(req.userRef, GSN_DICT_LOCK_REF, signal, + DictLockRef::SignalLength, JBB); +} + +// control polling + +void +Dbdict::setDictLockPoll(Signal* signal, bool on) +{ + if (on) { + jam(); + signal->theData[0] = ZDICT_LOCK_POLL; + sendSignalWithDelay(reference(), GSN_CONTINUEB, signal, 100, 1); + } + + if (c_dictLockPoll != on) { + jam(); +#ifdef VM_TRACE + infoEvent("DICT: lock polling %s", on ? "On" : "Off"); +#endif + c_dictLockPoll = on; + } +} + +// NF handling + +void +Dbdict::removeStaleDictLocks(Signal* signal, const Uint32* theFailedNodes) +{ + DictLockPtr loopPtr; + c_dictLockQueue.first(loopPtr); + + while (loopPtr.i != RNIL) { + jam(); + DictLockPtr lockPtr = loopPtr; + c_dictLockQueue.next(loopPtr); + + Uint32 nodeId = refToNode(lockPtr.p->req.userRef); + + if (NodeBitmask::get(theFailedNodes, nodeId)) { + if (lockPtr.p->locked) { + jam(); + ndbrequire(c_blockState == lockPtr.p->lt->blockState); + ndbrequire(c_opRecordPool.getNoOfFree() == c_opRecordPool.getSize()); + ndbrequire(! c_dictLockQueue.hasPrev(lockPtr)); + + c_blockState = BS_IDLE; + + sendDictLockInfoEvent(lockPtr, "remove lock by failed node"); + } else { + sendDictLockInfoEvent(lockPtr, "remove lock request by failed node"); + } + + c_dictLockQueue.release(lockPtr); + } + } + + checkDictLockQueue(signal); +} + + /* **************************************************************** */ /* ---------------------------------------------------------------- */ /* MODULE: STORE/RESTORE SCHEMA FILE---------------------- */ diff --git a/ndb/src/kernel/blocks/dbdict/Dbdict.hpp b/ndb/src/kernel/blocks/dbdict/Dbdict.hpp index 6b78fb86534..fbad67d8822 100644 --- a/ndb/src/kernel/blocks/dbdict/Dbdict.hpp +++ b/ndb/src/kernel/blocks/dbdict/Dbdict.hpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -50,6 +51,7 @@ #include #include #include +#include #include "SchemaFile.hpp" #include #include @@ -63,6 +65,7 @@ /*--------------------------------------------------------------*/ #define ZPACK_TABLE_INTO_PAGES 0 #define ZSEND_GET_TAB_RESPONSE 3 +#define ZDICT_LOCK_POLL 4 /*--------------------------------------------------------------*/ @@ -587,6 +590,9 @@ private: void execALTER_TAB_CONF(Signal* signal); bool check_ndb_versions() const; + void execDICT_LOCK_REQ(Signal* signal); + void execDICT_UNLOCK_ORD(Signal* signal); + /* * 2.4 COMMON STORED VARIABLES */ @@ -817,12 +823,43 @@ private: // State variables /* ----------------------------------------------------------------------- */ +#ifndef ndb_dbdict_log_block_state enum BlockState { BS_IDLE = 0, BS_CREATE_TAB = 1, BS_BUSY = 2, - BS_NODE_FAILURE = 3 + BS_NODE_FAILURE = 3, + BS_NODE_RESTART = 4 + }; +#else // quick hack to log changes + enum { + BS_IDLE = 0, + BS_CREATE_TAB = 1, + BS_BUSY = 2, + BS_NODE_FAILURE = 3, + BS_NODE_RESTART = 4 + }; + struct BlockState; + friend struct BlockState; + struct BlockState { + BlockState() : + m_value(BS_IDLE) { + } + BlockState(int value) : + m_value(value) { + } + operator int() const { + return m_value; + } + BlockState& operator=(const BlockState& bs) { + Dbdict* dict = (Dbdict*)globalData.getBlock(DBDICT); + dict->infoEvent("DICT: bs %d->%d", m_value, bs.m_value); + m_value = bs.m_value; + return *this; + } + int m_value; }; +#endif BlockState c_blockState; struct PackTable { @@ -1722,6 +1759,64 @@ private: // Unique key for operation XXX move to some system table Uint32 c_opRecordSequence; + /* + * Master DICT can be locked in 2 mutually exclusive ways: + * + * 1) for schema ops, via operation records + * 2) against schema ops, via a lock queue + * + * Current use of 2) is by a starting node, to prevent schema ops + * until started. The ops are refused (BlockState != BS_IDLE), + * not queued. + * + * Master failure is not handled, in node start case the starting + * node will crash too anyway. Use lock table in future.. + * + * The lock queue is "serial" but other behaviour is possible + * by checking lock types e.g. to allow parallel node starts. + * + * Checking release of last op record is not convenient with + * current structure (5.0). Instead we poll via continueB. + * + * XXX only table ops check BlockState + */ + + struct DictLockType { + DictLockReq::LockType lockType; + BlockState blockState; + const char* text; + }; + + struct DictLockRecord { + DictLockReq req; + const DictLockType* lt; + bool locked; + union { + Uint32 nextPool; + Uint32 nextList; + }; + Uint32 prevList; + }; + + typedef Ptr DictLockPtr; + ArrayPool c_dictLockPool; + DLFifoList c_dictLockQueue; + bool c_dictLockPoll; + + static const DictLockType* getDictLockType(Uint32 lockType); + void sendDictLockInfoEvent(DictLockPtr lockPtr, const char* text); + + void checkDictLockQueue(Signal* signal); + void sendDictLockConf(Signal* signal, DictLockPtr lockPtr); + void sendDictLockRef(Signal* signal, DictLockReq req, Uint32 errorCode); + + // control polling i.e. continueB loop + void setDictLockPoll(Signal* signal, bool on); + + // NF handling + void removeStaleDictLocks(Signal* signal, const Uint32* theFailedNodes); + + // Statement blocks /* ------------------------------------------------------------ */ diff --git a/ndb/src/kernel/blocks/dbdih/Dbdih.hpp b/ndb/src/kernel/blocks/dbdih/Dbdih.hpp index 78acf1ffd19..f4a33df9805 100644 --- a/ndb/src/kernel/blocks/dbdih/Dbdih.hpp +++ b/ndb/src/kernel/blocks/dbdih/Dbdih.hpp @@ -718,6 +718,9 @@ private: void checkPrepDropTabComplete(Signal *, TabRecordPtr tabPtr); void checkWaitDropTabFailedLqh(Signal *, Uint32 nodeId, Uint32 tableId); + void execDICT_LOCK_CONF(Signal* signal); + void execDICT_LOCK_REF(Signal* signal); + // Statement blocks //------------------------------------ // Methods that send signals @@ -935,6 +938,7 @@ private: void initialStartCompletedLab(Signal *); void allNodesLcpCompletedLab(Signal *); void nodeRestartPh2Lab(Signal *); + void nodeRestartPh2Lab2(Signal *); void initGciFilesLab(Signal *); void dictStartConfLab(Signal *); void nodeDictStartConfLab(Signal *); @@ -1594,6 +1598,30 @@ private: * Reply from nodeId */ void startInfoReply(Signal *, Uint32 nodeId); + + /* + * Lock master DICT. Only current use is by starting node + * during NR. A pool of slave records is convenient anyway. + */ + struct DictLockSlaveRecord { + Uint32 lockPtr; + Uint32 lockType; + bool locked; + Callback callback; + Uint32 nextPool; + }; + + typedef Ptr DictLockSlavePtr; + ArrayPool c_dictLockSlavePool; + + // slave + void sendDictLockReq(Signal* signal, Uint32 lockType, Callback c); + void recvDictLockConf(Signal* signal); + void sendDictUnlockOrd(Signal* signal, Uint32 lockSlavePtrI); + + // NR + Uint32 c_dictLockSlavePtrI_nodeRestart; // userPtr for NR + void recvDictLockConf_nodeRestart(Signal* signal, Uint32 data, Uint32 ret); }; #if (DIH_CDATA_SIZE < _SYSFILE_SIZE32) diff --git a/ndb/src/kernel/blocks/dbdih/DbdihInit.cpp b/ndb/src/kernel/blocks/dbdih/DbdihInit.cpp index cd987048577..2b878034258 100644 --- a/ndb/src/kernel/blocks/dbdih/DbdihInit.cpp +++ b/ndb/src/kernel/blocks/dbdih/DbdihInit.cpp @@ -66,6 +66,9 @@ void Dbdih::initData() waitGCPProxyPool.setSize(ZPROXY_FILE_SIZE); waitGCPMasterPool.setSize(ZPROXY_MASTER_FILE_SIZE); + c_dictLockSlavePool.setSize(1); // assert single usage + c_dictLockSlavePtrI_nodeRestart = RNIL; + cgcpOrderBlocked = 0; c_lcpState.ctcCounter = 0; cwaitLcpSr = false; @@ -264,6 +267,9 @@ Dbdih::Dbdih(const class Configuration & config): addRecSignal(GSN_CREATE_FRAGMENTATION_REQ, &Dbdih::execCREATE_FRAGMENTATION_REQ); + addRecSignal(GSN_DICT_LOCK_CONF, &Dbdih::execDICT_LOCK_CONF); + addRecSignal(GSN_DICT_LOCK_REF, &Dbdih::execDICT_LOCK_REF); + apiConnectRecord = 0; connectRecord = 0; fileRecord = 0; diff --git a/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp b/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp index 3ebad7f0cd2..c37461a1f65 100644 --- a/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp +++ b/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp @@ -67,6 +67,7 @@ #include #include #include +#include #include #include @@ -544,7 +545,7 @@ void Dbdih::execCONTINUEB(Signal* signal) break; case DihContinueB::ZSTART_PERMREQ_AGAIN: jam(); - nodeRestartPh2Lab(signal); + nodeRestartPh2Lab2(signal); return; break; case DihContinueB::SwitchReplica: @@ -1284,6 +1285,7 @@ void Dbdih::execNDB_STTOR(Signal* signal) case NodeState::ST_INITIAL_NODE_RESTART: case NodeState::ST_NODE_RESTART: jam(); + /*********************************************************************** * When starting nodes while system is operational we must be controlled * by the master since only one node restart is allowed at a time. @@ -1294,7 +1296,7 @@ void Dbdih::execNDB_STTOR(Signal* signal) req->startingRef = reference(); req->startingVersion = 0; // Obsolete sendSignal(cmasterdihref, GSN_START_MEREQ, signal, - StartMeReq::SignalLength, JBB); + StartMeReq::SignalLength, JBB); return; } ndbrequire(false); @@ -1354,6 +1356,24 @@ void Dbdih::execNDB_STTOR(Signal* signal) } ndbrequire(false); break; + case ZNDB_SPH7: + jam(); + switch (typestart) { + case NodeState::ST_INITIAL_START: + case NodeState::ST_SYSTEM_RESTART: + jam(); + ndbsttorry10Lab(signal, __LINE__); + return; + case NodeState::ST_NODE_RESTART: + case NodeState::ST_INITIAL_NODE_RESTART: + jam(); + sendDictUnlockOrd(signal, c_dictLockSlavePtrI_nodeRestart); + c_dictLockSlavePtrI_nodeRestart = RNIL; + ndbsttorry10Lab(signal, __LINE__); + return; + } + ndbrequire(false); + break; default: jam(); ndbsttorry10Lab(signal, __LINE__); @@ -1563,6 +1583,31 @@ void Dbdih::execREAD_NODESCONF(Signal* signal) /* START NODE LOGIC FOR NODE RESTART */ /*---------------------------------------------------------------------------*/ void Dbdih::nodeRestartPh2Lab(Signal* signal) +{ + /* + * Lock master DICT to avoid metadata operations during INR/NR. + * Done just before START_PERMREQ. + * + * It would be more elegant to do this just before START_MEREQ. + * The problem is, on INR we end up in massive invalidateNodeLCP + * which is not fully protected against metadata ops. + */ + ndbrequire(c_dictLockSlavePtrI_nodeRestart == RNIL); + + Uint32 lockType = DictLockReq::NodeRestartLock; + Callback c = { safe_cast(&Dbdih::recvDictLockConf_nodeRestart), 0 }; + sendDictLockReq(signal, lockType, c); +} + +void Dbdih::recvDictLockConf_nodeRestart(Signal* signal, Uint32 data, Uint32 ret) +{ + ndbrequire(c_dictLockSlavePtrI_nodeRestart == RNIL); + c_dictLockSlavePtrI_nodeRestart = data; + + nodeRestartPh2Lab2(signal); +} + +void Dbdih::nodeRestartPh2Lab2(Signal* signal) { /*------------------------------------------------------------------------*/ // REQUEST FOR PERMISSION FROM MASTER TO START A NODE IN AN ALREADY @@ -1574,7 +1619,7 @@ void Dbdih::nodeRestartPh2Lab(Signal* signal) req->nodeId = cownNodeId; req->startType = cstarttype; sendSignal(cmasterdihref, GSN_START_PERMREQ, signal, 3, JBB); -}//Dbdih::nodeRestartPh2Lab() +} void Dbdih::execSTART_PERMCONF(Signal* signal) { @@ -1696,12 +1741,12 @@ void Dbdih::execSTART_PERMREQ(Signal* signal) const BlockReference retRef = req->blockRef; const Uint32 nodeId = req->nodeId; const Uint32 typeStart = req->startType; - CRASH_INSERTION(7122); ndbrequire(isMaster()); ndbrequire(refToNode(retRef) == nodeId); if ((c_nodeStartMaster.activeState) || - (c_nodeStartMaster.wait != ZFALSE)) { + (c_nodeStartMaster.wait != ZFALSE) || + ERROR_INSERTED_CLEAR(7174)) { jam(); signal->theData[0] = nodeId; signal->theData[1] = StartPermRef::ZNODE_ALREADY_STARTING_ERROR; @@ -10448,6 +10493,10 @@ void Dbdih::crashSystemAtGcpStop(Signal* signal) c_copyGCIMaster.m_copyReason, c_copyGCIMaster.m_waiting); break; + case GCP_READY: // shut up lint + case GCP_PREPARE_SENT: + case GCP_COMMIT_SENT: + break; } ndbout_c("c_copyGCISlave: sender{Data, Ref} %d %x reason: %d nextWord: %d", @@ -14639,3 +14688,77 @@ Dbdih::NodeRecord::NodeRecord(){ copyCompleted = false; allowNodeStart = true; } + +// DICT lock slave + +void +Dbdih::sendDictLockReq(Signal* signal, Uint32 lockType, Callback c) +{ + DictLockReq* req = (DictLockReq*)&signal->theData[0]; + DictLockSlavePtr lockPtr; + + c_dictLockSlavePool.seize(lockPtr); + ndbrequire(lockPtr.i != RNIL); + + req->userPtr = lockPtr.i; + req->lockType = lockType; + req->userRef = reference(); + + lockPtr.p->lockPtr = RNIL; + lockPtr.p->lockType = lockType; + lockPtr.p->locked = false; + lockPtr.p->callback = c; + + BlockReference dictMasterRef = calcDictBlockRef(cmasterNodeId); + sendSignal(dictMasterRef, GSN_DICT_LOCK_REQ, signal, + DictLockReq::SignalLength, JBB); +} + +void +Dbdih::execDICT_LOCK_CONF(Signal* signal) +{ + jamEntry(); + recvDictLockConf(signal); +} + +void +Dbdih::execDICT_LOCK_REF(Signal* signal) +{ + jamEntry(); + ndbrequire(false); +} + +void +Dbdih::recvDictLockConf(Signal* signal) +{ + const DictLockConf* conf = (const DictLockConf*)&signal->theData[0]; + + DictLockSlavePtr lockPtr; + c_dictLockSlavePool.getPtr(lockPtr, conf->userPtr); + + lockPtr.p->lockPtr = conf->lockPtr; + ndbrequire(lockPtr.p->lockType == conf->lockType); + ndbrequire(lockPtr.p->locked == false); + lockPtr.p->locked = true; + + lockPtr.p->callback.m_callbackData = lockPtr.i; + execute(signal, lockPtr.p->callback, 0); +} + +void +Dbdih::sendDictUnlockOrd(Signal* signal, Uint32 lockSlavePtrI) +{ + DictUnlockOrd* ord = (DictUnlockOrd*)&signal->theData[0]; + + DictLockSlavePtr lockPtr; + c_dictLockSlavePool.getPtr(lockPtr, lockSlavePtrI); + + ord->lockPtr = lockPtr.p->lockPtr; + ord->lockType = lockPtr.p->lockType; + + c_dictLockSlavePool.release(lockPtr); + + BlockReference dictMasterRef = calcDictBlockRef(cmasterNodeId); + sendSignal(dictMasterRef, GSN_DICT_UNLOCK_ORD, signal, + DictUnlockOrd::SignalLength, JBB); +} diff --git a/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp b/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp index 9a7256b4a55..b9bf522f7c8 100644 --- a/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp +++ b/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp @@ -2477,7 +2477,7 @@ void Qmgr::execDISCONNECT_REP(Signal* signal) { jam(); CRASH_INSERTION(932); - BaseString::snprintf(buf, 100, "Node %u disconected", nodeId); + BaseString::snprintf(buf, 100, "Node %u disconnected", nodeId); progError(__LINE__, NDBD_EXIT_SR_OTHERNODEFAILED, buf); ndbrequire(false); } @@ -2500,7 +2500,7 @@ void Qmgr::execDISCONNECT_REP(Signal* signal) ndbrequire(false); case ZAPI_INACTIVE: { - BaseString::snprintf(buf, 100, "Node %u disconected", nodeId); + BaseString::snprintf(buf, 100, "Node %u disconnected", nodeId); progError(__LINE__, NDBD_EXIT_SR_OTHERNODEFAILED, buf); ndbrequire(false); } diff --git a/ndb/src/kernel/main.cpp b/ndb/src/kernel/main.cpp index 7c1763485ce..649ae7cae3f 100644 --- a/ndb/src/kernel/main.cpp +++ b/ndb/src/kernel/main.cpp @@ -420,6 +420,10 @@ int main(int argc, char** argv) FILE * signalLog = fopen(buf, "a"); globalSignalLoggers.setOwnNodeId(globalData.ownId); globalSignalLoggers.setOutputStream(signalLog); +#if 0 // to log startup + globalSignalLoggers.log(SignalLoggerManager::LogInOut, "BLOCK=DBDICT,DBDIH"); + globalData.testOn = 1; +#endif #endif catchsigs(false); diff --git a/ndb/src/kernel/vm/DLFifoList.hpp b/ndb/src/kernel/vm/DLFifoList.hpp index b139ade831d..963ab007b65 100644 --- a/ndb/src/kernel/vm/DLFifoList.hpp +++ b/ndb/src/kernel/vm/DLFifoList.hpp @@ -115,6 +115,13 @@ public: */ bool hasNext(const Ptr &) const; + /** + * Check if prev exists i.e. this is not first + * + * NOTE ptr must be both p & i + */ + bool hasPrev(const Ptr &) const; + Uint32 noOfElements() const { Uint32 c = 0; Uint32 i = head.firstItem; @@ -357,4 +364,11 @@ DLFifoList::hasNext(const Ptr & p) const { return p.p->nextList != RNIL; } +template +inline +bool +DLFifoList::hasPrev(const Ptr & p) const { + return p.p->prevList != RNIL; +} + #endif diff --git a/ndb/src/kernel/vm/pc.hpp b/ndb/src/kernel/vm/pc.hpp index 6aeda59224f..95839c48e4e 100644 --- a/ndb/src/kernel/vm/pc.hpp +++ b/ndb/src/kernel/vm/pc.hpp @@ -125,11 +125,13 @@ #ifdef ERROR_INSERT #define ERROR_INSERT_VARIABLE UintR cerrorInsert #define ERROR_INSERTED(x) (cerrorInsert == (x)) +#define ERROR_INSERTED_CLEAR(x) (cerrorInsert == (x) ? (cerrorInsert = 0, true) : false) #define SET_ERROR_INSERT_VALUE(x) cerrorInsert = x #define CLEAR_ERROR_INSERT_VALUE cerrorInsert = 0 #else #define ERROR_INSERT_VARIABLE typedef void * cerrorInsert // Will generate compiler error if used #define ERROR_INSERTED(x) false +#define ERROR_INSERTED_CLEAR(x) false #define SET_ERROR_INSERT_VALUE(x) #define CLEAR_ERROR_INSERT_VALUE #endif diff --git a/ndb/src/ndbapi/ndberror.c b/ndb/src/ndbapi/ndberror.c index 5ca8ad7be60..657c57021bb 100644 --- a/ndb/src/ndbapi/ndberror.c +++ b/ndb/src/ndbapi/ndberror.c @@ -325,6 +325,7 @@ ErrorBundle ErrorCodes[] = { * SchemaError */ { 701, SE, "System busy with other schema operation" }, + { 711, SE, "System busy with node restart, schema operations not allowed" }, { 703, SE, "Invalid table format" }, { 704, SE, "Attribute name too long" }, { 705, SE, "Table name too long" }, diff --git a/ndb/test/ndbapi/testDict.cpp b/ndb/test/ndbapi/testDict.cpp index 710a47bf3dc..2cfb78f143e 100644 --- a/ndb/test/ndbapi/testDict.cpp +++ b/ndb/test/ndbapi/testDict.cpp @@ -1551,6 +1551,282 @@ end: return result; } +// NFNR + +// Restarter controls dict ops : 1-run 2-pause 3-stop +// synced by polling... + +static bool +send_dict_ops_cmd(NDBT_Context* ctx, Uint32 cmd) +{ + ctx->setProperty("DictOps_CMD", cmd); + while (1) { + if (ctx->isTestStopped()) + return false; + if (ctx->getProperty("DictOps_ACK") == cmd) + break; + NdbSleep_MilliSleep(100); + } + return true; +} + +static bool +recv_dict_ops_run(NDBT_Context* ctx) +{ + while (1) { + if (ctx->isTestStopped()) + return false; + Uint32 cmd = ctx->getProperty("DictOps_CMD"); + ctx->setProperty("DictOps_ACK", cmd); + if (cmd == 1) + break; + if (cmd == 3) + return false; + NdbSleep_MilliSleep(100); + } + return true; +} + +int +runRestarts(NDBT_Context* ctx, NDBT_Step* step) +{ + static int err_master[] = { // non-crashing + 0, + 7174 // send one fake START_PERMREF + }; + static int err_node[] = { + 0, + 7121, // crash on START_PERMCONF + 7130 // crash on START_MECONF + }; + const uint err_master_cnt = sizeof(err_master)/sizeof(err_master[0]); + const uint err_node_cnt = sizeof(err_node)/sizeof(err_node[0]); + + myRandom48Init(NdbTick_CurrentMillisecond()); + NdbRestarter restarter; + int result = NDBT_OK; + const int loops = ctx->getNumLoops(); + + for (int l = 0; l < loops && result == NDBT_OK; l++) { + g_info << "1: === loop " << l << " ===" << endl; + + // assuming 2-way replicated + + int numnodes = restarter.getNumDbNodes(); + CHECK(numnodes >= 1); + if (numnodes == 1) + break; + + int masterNodeId = restarter.getMasterNodeId(); + CHECK(masterNodeId != -1); + + // for more complex cases need more restarter support methods + + int nodeIdList[2] = { 0, 0 }; + int nodeIdCnt = 0; + + if (numnodes >= 2) { + int rand = myRandom48(numnodes); + int nodeId = restarter.getRandomNotMasterNodeId(rand); + CHECK(nodeId != -1); + nodeIdList[nodeIdCnt++] = nodeId; + } + + if (numnodes >= 4) { + int rand = myRandom48(numnodes); + int nodeId = restarter.getRandomNodeOtherNodeGroup(nodeIdList[0], rand); + CHECK(nodeId != -1); + if (nodeId != masterNodeId) + nodeIdList[nodeIdCnt++] = nodeId; + } + + g_info << "1: master=" << masterNodeId << " nodes=" << nodeIdList[0] << "," << nodeIdList[1] << endl; + + const unsigned maxsleep = 2000; //ms + + bool NF_ops = ctx->getProperty("Restart_NF_ops"); + uint NF_type = ctx->getProperty("Restart_NF_type"); + bool NR_ops = ctx->getProperty("Restart_NR_ops"); + bool NR_error = ctx->getProperty("Restart_NR_error"); + + g_info << "1: " << (NF_ops ? "run" : "pause") << " dict ops" << endl; + if (! send_dict_ops_cmd(ctx, NF_ops ? 1 : 2)) + break; + NdbSleep_MilliSleep(myRandom48(maxsleep)); + + { + int i = 0; + while (i < nodeIdCnt) { + int nodeId = nodeIdList[i++]; + + bool nostart = true; + bool abort = NF_type == 0 ? myRandom48(2) : (NF_type == 2); + bool initial = myRandom48(2); + + char flags[40]; + strcpy(flags, "flags: nostart"); + if (abort) + strcat(flags, ",abort"); + if (initial) + strcat(flags, ",initial"); + + g_info << "1: restart " << nodeId << " " << flags << endl; + CHECK(restarter.restartOneDbNode(nodeId, initial, nostart, abort) == 0); + } + } + + g_info << "1: wait for nostart" << endl; + CHECK(restarter.waitNodesNoStart(nodeIdList, nodeIdCnt) == 0); + NdbSleep_MilliSleep(myRandom48(maxsleep)); + + g_info << "1: " << (NR_ops ? "run" : "pause") << " dict ops" << endl; + if (! send_dict_ops_cmd(ctx, NR_ops ? 1 : 2)) + break; + NdbSleep_MilliSleep(myRandom48(maxsleep)); + + g_info << "1: start nodes" << endl; + CHECK(restarter.startNodes(nodeIdList, nodeIdCnt) == 0); + + if (NR_error) { + { + int rand = myRandom48(err_master_cnt); + int err = err_master[rand]; + if (err != 0) { + g_info << "1: insert master error " << err << endl; + CHECK(restarter.insertErrorInNode(masterNodeId, err) == 0); + } + } + + // limitation: cannot have 2 node restarts and crash_insert + // one node may die for real (NF during startup) + + int i = 0; + while (i < nodeIdCnt && nodeIdCnt == 1) { + int nodeId = nodeIdList[i++]; + + int rand = myRandom48(err_node_cnt); + int err = err_node[rand]; + if (err != 0) { + g_info << "1: insert node " << nodeId << " error " << err << endl; + CHECK(restarter.insertErrorInNode(nodeId, err) == 0); + } + } + } + NdbSleep_MilliSleep(myRandom48(maxsleep)); + + g_info << "1: wait cluster started" << endl; + CHECK(restarter.waitClusterStarted() == 0); + NdbSleep_MilliSleep(myRandom48(maxsleep)); + + g_info << "1: restart done" << endl; + } + + g_info << "1: stop dict ops" << endl; + send_dict_ops_cmd(ctx, 3); + + return result; +} + +int +runDictOps(NDBT_Context* ctx, NDBT_Step* step) +{ + myRandom48Init(NdbTick_CurrentMillisecond()); + int result = NDBT_OK; + + for (int l = 0; result == NDBT_OK; l++) { + if (! recv_dict_ops_run(ctx)) + break; + + g_info << "2: === loop " << l << " ===" << endl; + + Ndb* pNdb = GETNDB(step); + NdbDictionary::Dictionary* pDic = pNdb->getDictionary(); + const NdbDictionary::Table* pTab = ctx->getTab(); + const char* tabName = pTab->getName(); + + const unsigned long maxsleep = 100; //ms + + g_info << "2: create table" << endl; + { + uint count = 0; + try_create: + count++; + if (pDic->createTable(*pTab) != 0) { + const NdbError err = pDic->getNdbError(); + if (count == 1) + g_err << "2: " << tabName << ": create failed: " << err << endl; + if (err.code != 711) { + result = NDBT_FAILED; + break; + } + NdbSleep_MilliSleep(myRandom48(maxsleep)); + goto try_create; + } + } + NdbSleep_MilliSleep(myRandom48(maxsleep)); + + g_info << "2: verify create" << endl; + const NdbDictionary::Table* pTab2 = pDic->getTable(tabName); + if (pTab2 == NULL) { + const NdbError err = pDic->getNdbError(); + g_err << "2: " << tabName << ": verify create: " << err << endl; + result = NDBT_FAILED; + break; + } + NdbSleep_MilliSleep(myRandom48(maxsleep)); + + // replace by the Retrieved table + pTab = pTab2; + + int records = myRandom48(ctx->getNumRecords()); + g_info << "2: load " << records << " records" << endl; + HugoTransactions hugoTrans(*pTab); + if (hugoTrans.loadTable(pNdb, records) != 0) { + // XXX get error code from hugo + g_err << "2: " << tabName << ": load failed" << endl; + result = NDBT_FAILED; + break; + } + NdbSleep_MilliSleep(myRandom48(maxsleep)); + + g_info << "2: drop" << endl; + { + uint count = 0; + try_drop: + count++; + if (pDic->dropTable(tabName) != 0) { + const NdbError err = pDic->getNdbError(); + if (count == 1) + g_err << "2: " << tabName << ": drop failed: " << err << endl; + if (err.code != 711) { + result = NDBT_FAILED; + break; + } + NdbSleep_MilliSleep(myRandom48(maxsleep)); + goto try_drop; + } + } + NdbSleep_MilliSleep(myRandom48(maxsleep)); + + g_info << "2: verify drop" << endl; + const NdbDictionary::Table* pTab3 = pDic->getTable(tabName); + if (pTab3 != NULL) { + g_err << "2: " << tabName << ": verify drop: table exists" << endl; + result = NDBT_FAILED; + break; + } + if (pDic->getNdbError().code != 709) { + const NdbError err = pDic->getNdbError(); + g_err << "2: " << tabName << ": verify drop: " << err << endl; + result = NDBT_FAILED; + break; + } + NdbSleep_MilliSleep(myRandom48(maxsleep)); + } + + return result; +} + NDBT_TESTSUITE(testDict); TESTCASE("CreateAndDrop", "Try to create and drop the table loop number of times\n"){ @@ -1655,6 +1931,34 @@ TESTCASE("FailAddFragment", "Fail add fragment or attribute in ACC or TUP or TUX\n"){ INITIALIZER(runFailAddFragment); } +TESTCASE("Restart_NF1", + "DICT ops during node graceful shutdown (not master)"){ + TC_PROPERTY("Restart_NF_ops", 1); + TC_PROPERTY("Restart_NF_type", 1); + STEP(runRestarts); + STEP(runDictOps); +} +TESTCASE("Restart_NF2", + "DICT ops during node shutdown abort (not master)"){ + TC_PROPERTY("Restart_NF_ops", 1); + TC_PROPERTY("Restart_NF_type", 2); + STEP(runRestarts); + STEP(runDictOps); +} +TESTCASE("Restart_NR1", + "DICT ops during node startup (not master)"){ + TC_PROPERTY("Restart_NR_ops", 1); + STEP(runRestarts); + STEP(runDictOps); +} +TESTCASE("Restart_NR2", + "DICT ops during node startup with crash inserts (not master)"){ + TC_PROPERTY("Restart_NR_ops", 1); + TC_PROPERTY("Restart_NR_error", 1); + STEP(runRestarts); + STEP(runDictOps); +} + NDBT_TESTSUITE_END(testDict); int main(int argc, const char** argv){ -- cgit v1.2.1 From e2495206b276d6aaeb506ed135016112532d71e3 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 8 Jun 2006 13:25:28 -0400 Subject: Bug#19904: UDF: not initialized *is_null per row The is_null value was initialized once and thereafter only set to indicate NULL, and never unset to indicate not-NULL. Now set is_null to false, in addition to only setting it to true when the value in question is null. mysql-test/r/udf.result: Add result. mysql-test/t/udf.test: Add test. sql/sql_udf.h: Initialize is_null to false before trying to use it, so that historical NULLs don't affect our operation. --- mysql-test/r/udf.result | 18 ++++++++++++++++++ mysql-test/t/udf.test | 12 ++++++++++++ sql/sql_udf.h | 2 ++ 3 files changed, 32 insertions(+) diff --git a/mysql-test/r/udf.result b/mysql-test/r/udf.result index be52fd7f87c..484c42c41bf 100644 --- a/mysql-test/r/udf.result +++ b/mysql-test/r/udf.result @@ -76,6 +76,24 @@ call XXX2(); metaphon(testval) HL drop procedure xxx2; +CREATE TABLE bug19904(n INT, v varchar(10)); +INSERT INTO bug19904 VALUES (1,'one'),(2,'two'),(NULL,NULL),(3,'three'),(4,'four'); +SELECT myfunc_double(n) AS f FROM bug19904; +f +49.00 +50.00 +NULL +51.00 +52.00 +SELECT metaphon(v) AS f FROM bug19904; +f +ON +TW +NULL +0R +FR +DROP TABLE bug19904; +End of 5.0 tests. DROP FUNCTION metaphon; DROP FUNCTION myfunc_double; DROP FUNCTION myfunc_nonexist; diff --git a/mysql-test/t/udf.test b/mysql-test/t/udf.test index e2556692612..f3be08c8537 100644 --- a/mysql-test/t/udf.test +++ b/mysql-test/t/udf.test @@ -99,6 +99,17 @@ delimiter ;// call XXX2(); drop procedure xxx2; +# +# Bug#19904: UDF: not initialized *is_null per row +# + +CREATE TABLE bug19904(n INT, v varchar(10)); +INSERT INTO bug19904 VALUES (1,'one'),(2,'two'),(NULL,NULL),(3,'three'),(4,'four'); +SELECT myfunc_double(n) AS f FROM bug19904; +SELECT metaphon(v) AS f FROM bug19904; +DROP TABLE bug19904; + +--echo End of 5.0 tests. # # Drop the example functions from udf_example @@ -114,3 +125,4 @@ DROP FUNCTION lookup; DROP FUNCTION reverse_lookup; DROP FUNCTION avgcost; + diff --git a/sql/sql_udf.h b/sql/sql_udf.h index d588572a762..d0729deecaa 100644 --- a/sql/sql_udf.h +++ b/sql/sql_udf.h @@ -70,6 +70,7 @@ class udf_handler :public Sql_alloc void cleanup(); double val(my_bool *null_value) { + is_null= 0; if (get_arguments()) { *null_value=1; @@ -88,6 +89,7 @@ class udf_handler :public Sql_alloc } longlong val_int(my_bool *null_value) { + is_null= 0; if (get_arguments()) { *null_value=1; -- cgit v1.2.1 From 99438424ac4654e6ecd357e04263aaabc6391022 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 8 Jun 2006 23:07:11 +0200 Subject: Reorganize, physically the events code Unify method naming -> create/update/drop_event Move class Event_timed to event_timed.h class Events is in events.h (renamed from event.h) The implementation is in events.cc (renamed from event.h) BitKeeper/deleted/.del-event_executor.cc~f4a4645b973838ab: Delete: sql/event_executor.cc include/my_time.h: add a boundary libmysqld/CMakeLists.txt: event.cc -> events.cc libmysqld/Makefile.am: event.cc -> event.cc sql/CMakeLists.txt: event.cc -> events.cc sql/Makefile.am: event.cc -> events.cc event_priv.h -> events_priv.h sql/event_scheduler.cc: event.h -> events.h add_event -> create_event replace_event -> update_event() event_timed_compare_q is only used in event_scheduler.cc , so moving it from event.cc and making it static sql/event_scheduler.h: add_event -> create_event replace_event -> update_event sql/event_timed.cc: moved extern interval_type_to_name to mysql_priv.h sql/mysql_priv.h: moved my_time_compare to time.cc sql/mysqld.cc: event.h -> events.h sql/sql_db.cc: event.h -> events.h sql/sql_parse.cc: event.h -> events.h class Event_timed moved to event_timed.h sql/sql_show.cc: event.h -> events.h class Event_timed moved to event_timed.h sql/sql_yacc.yy: event.h -> events.h class Event_timed moved to event_timed.h sql/events.cc: add_event -> create_event replace_event -> update_event event_timed_compare_q moved to event_scheduler.cc sql/events.h: class Event_timed moved to event_timed.h sql/events_priv.h: my_time_compare moved to mysql_priv.h event_timed_compare_q is static in event_scheduler.cc sql/time.cc: moved interval_type_to_name from event.cc to here. BitKeeper/etc/ignore: Added libmysqld/events.cc to the ignore list --- .bzrignore | 1 + include/my_time.h | 2 +- libmysqld/CMakeLists.txt | 2 +- libmysqld/Makefile.am | 2 +- sql/CMakeLists.txt | 2 +- sql/Makefile.am | 4 +- sql/event.cc | 1420 ---------------------------------------------- sql/event.h | 296 ---------- sql/event_executor.cc | 15 - sql/event_priv.h | 86 --- sql/event_scheduler.cc | 53 +- sql/event_scheduler.h | 11 +- sql/event_timed.cc | 11 +- sql/events.cc | 1337 +++++++++++++++++++++++++++++++++++++++++++ sql/events.h | 97 ++++ sql/events_priv.h | 79 +++ sql/mysql_priv.h | 4 + sql/mysqld.cc | 2 +- sql/sql_db.cc | 2 +- sql/sql_parse.cc | 3 +- sql/sql_show.cc | 3 +- sql/sql_yacc.yy | 2 +- sql/time.cc | 56 ++ 23 files changed, 1643 insertions(+), 1847 deletions(-) delete mode 100644 sql/event.cc delete mode 100644 sql/event.h delete mode 100644 sql/event_executor.cc delete mode 100644 sql/event_priv.h create mode 100644 sql/events.cc create mode 100644 sql/events.h create mode 100644 sql/events_priv.h diff --git a/.bzrignore b/.bzrignore index 57fcbdd8f73..fd3f52b9a57 100644 --- a/.bzrignore +++ b/.bzrignore @@ -1771,3 +1771,4 @@ vio/viotest.cpp zlib/*.ds? zlib/*.vcproj libmysqld/event_scheduler.cc +libmysqld/events.cc diff --git a/include/my_time.h b/include/my_time.h index df500dc501b..3025b98a9c4 100644 --- a/include/my_time.h +++ b/include/my_time.h @@ -104,7 +104,7 @@ enum interval_type INTERVAL_YEAR_MONTH, INTERVAL_DAY_HOUR, INTERVAL_DAY_MINUTE, INTERVAL_DAY_SECOND, INTERVAL_HOUR_MINUTE, INTERVAL_HOUR_SECOND, INTERVAL_MINUTE_SECOND, INTERVAL_DAY_MICROSECOND, INTERVAL_HOUR_MICROSECOND, - INTERVAL_MINUTE_MICROSECOND, INTERVAL_SECOND_MICROSECOND + INTERVAL_MINUTE_MICROSECOND, INTERVAL_SECOND_MICROSECOND, INTERVAL_LAST }; C_MODE_END diff --git a/libmysqld/CMakeLists.txt b/libmysqld/CMakeLists.txt index ff8ceda5c5b..69d8b6e0f67 100644 --- a/libmysqld/CMakeLists.txt +++ b/libmysqld/CMakeLists.txt @@ -29,7 +29,7 @@ ADD_LIBRARY(mysqldemb emb_qcache.cc libmysqld.c lib_sql.cc ../libmysql/libmysql.c ../sql/password.c ../sql-common/client.c ../sql-common/my_time.c ../sql-common/my_user.c ../sql-common/pack.c ../sql/derror.cc ../sql/event_executor.cc - ../sql/event_timed.cc ../sql/event.cc ../sql/discover.cc + ../sql/event_timed.cc ../sql/events.cc ../sql/discover.cc ../sql/field_conv.cc ../sql/field.cc ../sql/filesort.cc ../sql/gstream.cc ../sql/ha_heap.cc ../sql/ha_myisam.cc ../sql/ha_myisammrg.cc ${mysql_se_ha_src} diff --git a/libmysqld/Makefile.am b/libmysqld/Makefile.am index a3af2d43bd5..1e8b84a17d0 100644 --- a/libmysqld/Makefile.am +++ b/libmysqld/Makefile.am @@ -68,7 +68,7 @@ sqlsources = derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \ spatial.cc gstream.cc sql_help.cc tztime.cc sql_cursor.cc \ sp_head.cc sp_pcontext.cc sp.cc sp_cache.cc sp_rcontext.cc \ parse_file.cc sql_view.cc sql_trigger.cc my_decimal.cc \ - event_scheduler.cc event.cc event_timed.cc \ + event_scheduler.cc events.cc event_timed.cc \ rpl_filter.cc sql_partition.cc sql_builtin.cc sql_plugin.cc \ sql_tablespace.cc \ rpl_injector.cc my_user.c partition_info.cc diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt index 2b44fbdcc79..d80a51bb829 100644 --- a/sql/CMakeLists.txt +++ b/sql/CMakeLists.txt @@ -52,7 +52,7 @@ ADD_EXECUTABLE(mysqld ../sql-common/client.c derror.cc des_key_file.cc sql_update.cc sql_view.cc strfunc.cc table.cc thr_malloc.cc time.cc tztime.cc uniques.cc unireg.cc item_xmlfunc.cc rpl_tblmap.cc sql_binlog.cc event_scheduler.cc event_timed.cc - sql_tablespace.cc event.cc ../sql-common/my_user.c + sql_tablespace.cc events.cc ../sql-common/my_user.c partition_info.cc ${PROJECT_SOURCE_DIR}/sql/sql_yacc.cc ${PROJECT_SOURCE_DIR}/sql/sql_yacc.h diff --git a/sql/Makefile.am b/sql/Makefile.am index 7f711a1e212..689c916fbba 100644 --- a/sql/Makefile.am +++ b/sql/Makefile.am @@ -64,7 +64,7 @@ noinst_HEADERS = item.h item_func.h item_sum.h item_cmpfunc.h \ tztime.h my_decimal.h\ sp_head.h sp_pcontext.h sp_rcontext.h sp.h sp_cache.h \ parse_file.h sql_view.h sql_trigger.h \ - sql_array.h sql_cursor.h event.h event_priv.h \ + sql_array.h sql_cursor.h events.h events_priv.h \ sql_plugin.h authors.h sql_partition.h \ partition_info.h partition_element.h event_scheduler.h \ contributors.h @@ -104,7 +104,7 @@ mysqld_SOURCES = sql_lex.cc sql_handler.cc sql_partition.cc \ tztime.cc my_time.c my_user.c my_decimal.cc\ sp_head.cc sp_pcontext.cc sp_rcontext.cc sp.cc \ sp_cache.cc parse_file.cc sql_trigger.cc \ - event_scheduler.cc event.cc event_timed.cc \ + event_scheduler.cc events.cc event_timed.cc \ sql_plugin.cc sql_binlog.cc \ sql_builtin.cc sql_tablespace.cc partition_info.cc diff --git a/sql/event.cc b/sql/event.cc deleted file mode 100644 index 5273394640c..00000000000 --- a/sql/event.cc +++ /dev/null @@ -1,1420 +0,0 @@ -/* Copyright (C) 2004-2006 MySQL AB - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - -#include "event_priv.h" -#include "event.h" -#include "event_scheduler.h" -#include "sp.h" -#include "sp_head.h" - -/* - TODO list : - - CREATE EVENT should not go into binary log! Does it now? The SQL statements - issued by the EVENT are replicated. - I have an idea how to solve the problem at failover. So the status field - will be ENUM('DISABLED', 'ENABLED', 'SLAVESIDE_DISABLED'). - In this case when CREATE EVENT is replicated it should go into the binary - as SLAVESIDE_DISABLED if it is ENABLED, when it's created as DISABLEd it - should be replicated as disabled. If an event is ALTERed as DISABLED the - query should go untouched into the binary log, when ALTERed as enable then - it should go as SLAVESIDE_DISABLED. This is regarding the SQL interface. - TT routines however modify mysql.event internally and this does not go the log - so in this case queries has to be injected into the log...somehow... or - maybe a solution is RBR for this case, because the event may go only from - ENABLED to DISABLED status change and this is safe for replicating. As well - an event may be deleted which is also safe for RBR. - - - Add logging to file - -Warning: - - For now parallel execution is not possible because the same sp_head cannot be - executed few times!!! There is still no lock attached to particular event. - -*/ - - -MEM_ROOT evex_mem_root; -time_t mysql_event_last_create_time= 0L; - - -const char *event_scheduler_state_names[]= - { "OFF", "0", "ON", "1", "SUSPEND", "2", NullS }; - -TYPELIB Events::opt_typelib= -{ - array_elements(event_scheduler_state_names)-1, - "", - event_scheduler_state_names, - NULL -}; - - -ulong Events::opt_event_scheduler= 2; - -static -TABLE_FIELD_W_TYPE event_table_fields[Events::FIELD_COUNT] = { - { - {(char *) STRING_WITH_LEN("db")}, - {(char *) STRING_WITH_LEN("char(64)")}, - {(char *) STRING_WITH_LEN("utf8")} - }, - { - {(char *) STRING_WITH_LEN("name")}, - {(char *) STRING_WITH_LEN("char(64)")}, - {(char *) STRING_WITH_LEN("utf8")} - }, - { - {(char *) STRING_WITH_LEN("body")}, - {(char *) STRING_WITH_LEN("longblob")}, - {NULL, 0} - }, - { - {(char *) STRING_WITH_LEN("definer")}, - {(char *) STRING_WITH_LEN("char(77)")}, - {(char *) STRING_WITH_LEN("utf8")} - }, - { - {(char *) STRING_WITH_LEN("execute_at")}, - {(char *) STRING_WITH_LEN("datetime")}, - {NULL, 0} - }, - { - {(char *) STRING_WITH_LEN("interval_value")}, - {(char *) STRING_WITH_LEN("int(11)")}, - {NULL, 0} - }, - { - {(char *) STRING_WITH_LEN("interval_field")}, - {(char *) STRING_WITH_LEN("enum('YEAR','QUARTER','MONTH','DAY'," - "'HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR'," - "'DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND'," - "'DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND'," - "'SECOND_MICROSECOND')")}, - {NULL, 0} - }, - { - {(char *) STRING_WITH_LEN("created")}, - {(char *) STRING_WITH_LEN("timestamp")}, - {NULL, 0} - }, - { - {(char *) STRING_WITH_LEN("modified")}, - {(char *) STRING_WITH_LEN("timestamp")}, - {NULL, 0} - }, - { - {(char *) STRING_WITH_LEN("last_executed")}, - {(char *) STRING_WITH_LEN("datetime")}, - {NULL, 0} - }, - { - {(char *) STRING_WITH_LEN("starts")}, - {(char *) STRING_WITH_LEN("datetime")}, - {NULL, 0} - }, - { - {(char *) STRING_WITH_LEN("ends")}, - {(char *) STRING_WITH_LEN("datetime")}, - {NULL, 0} - }, - { - {(char *) STRING_WITH_LEN("status")}, - {(char *) STRING_WITH_LEN("enum('ENABLED','DISABLED')")}, - {NULL, 0} - }, - { - {(char *) STRING_WITH_LEN("on_completion")}, - {(char *) STRING_WITH_LEN("enum('DROP','PRESERVE')")}, - {NULL, 0} - }, - { - {(char *) STRING_WITH_LEN("sql_mode")}, - {(char *) STRING_WITH_LEN("set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES'," - "'IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION'," - "'NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB'," - "'NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40'," - "'ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES'," - "'STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES'," - "'ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER'," - "'HIGH_NOT_PRECEDENCE')")}, - {NULL, 0} - }, - { - {(char *) STRING_WITH_LEN("comment")}, - {(char *) STRING_WITH_LEN("char(64)")}, - {(char *) STRING_WITH_LEN("utf8")} - } -}; - - -LEX_STRING interval_type_to_name[] = { - {(char *) STRING_WITH_LEN("YEAR")}, - {(char *) STRING_WITH_LEN("QUARTER")}, - {(char *) STRING_WITH_LEN("MONTH")}, - {(char *) STRING_WITH_LEN("DAY")}, - {(char *) STRING_WITH_LEN("HOUR")}, - {(char *) STRING_WITH_LEN("MINUTE")}, - {(char *) STRING_WITH_LEN("WEEK")}, - {(char *) STRING_WITH_LEN("SECOND")}, - {(char *) STRING_WITH_LEN("MICROSECOND")}, - {(char *) STRING_WITH_LEN("YEAR_MONTH")}, - {(char *) STRING_WITH_LEN("DAY_HOUR")}, - {(char *) STRING_WITH_LEN("DAY_MINUTE")}, - {(char *) STRING_WITH_LEN("DAY_SECOND")}, - {(char *) STRING_WITH_LEN("HOUR_MINUTE")}, - {(char *) STRING_WITH_LEN("HOUR_SECOND")}, - {(char *) STRING_WITH_LEN("MINUTE_SECOND")}, - {(char *) STRING_WITH_LEN("DAY_MICROSECOND")}, - {(char *) STRING_WITH_LEN("HOUR_MICROSECOND")}, - {(char *) STRING_WITH_LEN("MINUTE_MICROSECOND")}, - {(char *) STRING_WITH_LEN("SECOND_MICROSECOND")} -}; - - -/* - Compares 2 LEX strings regarding case. - - SYNOPSIS - my_time_compare() - - s - first LEX_STRING - t - second LEX_STRING - cs - charset - - RETURN VALUE - -1 - s < t - 0 - s == t - 1 - s > t - - Notes - TIME.second_part is not considered during comparison -*/ - -int sortcmp_lex_string(LEX_STRING s, LEX_STRING t, CHARSET_INFO *cs) -{ - return cs->coll->strnncollsp(cs, (unsigned char *) s.str,s.length, - (unsigned char *) t.str,t.length, 0); -} - - -/* - Compares 2 TIME structures - - SYNOPSIS - my_time_compare() - - a - first TIME - b - second time - - RETURN VALUE - -1 - a < b - 0 - a == b - 1 - a > b - - NOTES - TIME.second_part is not considered during comparison -*/ - -int -my_time_compare(TIME *a, TIME *b) -{ - my_ulonglong a_t= TIME_to_ulonglong_datetime(a); - my_ulonglong b_t= TIME_to_ulonglong_datetime(b); - - if (a_t > b_t) - return 1; - else if (a_t < b_t) - return -1; - - return 0; -} - - -/* - Compares the execute_at members of 2 Event_timed instances. - Used as callback for the prioritized queue when shifting - elements inside. - - SYNOPSIS - event_timed_compare() - - vptr - not used (set it to NULL) - a - first Event_timed object - b - second Event_timed object - - RETURNS: - -1 - a->execute_at < b->execute_at - 0 - a->execute_at == b->execute_at - 1 - a->execute_at > b->execute_at - - Notes - execute_at.second_part is not considered during comparison -*/ - -int -event_timed_compare_q(void *vptr, byte* a, byte *b) -{ - return my_time_compare(&((Event_timed *)a)->execute_at, - &((Event_timed *)b)->execute_at); -} - - -/* - Reconstructs interval expression from interval type and expression - value that is in form of a value of the smalles entity: - For - YEAR_MONTH - expression is in months - DAY_MINUTE - expression is in minutes - - SYNOPSIS - Events::reconstruct_interval_expression() - buf - preallocated String buffer to add the value to - interval - the interval type (for instance YEAR_MONTH) - expression - the value in the lowest entity - - RETURNS - 0 - OK - 1 - Error -*/ - -int -Events::reconstruct_interval_expression(String *buf, - interval_type interval, - longlong expression) -{ - ulonglong expr= expression; - char tmp_buff[128], *end; - bool close_quote= TRUE; - int multipl= 0; - char separator=':'; - - switch (interval) { - case INTERVAL_YEAR_MONTH: - multipl= 12; - separator= '-'; - goto common_1_lev_code; - case INTERVAL_DAY_HOUR: - multipl= 24; - separator= ' '; - goto common_1_lev_code; - case INTERVAL_HOUR_MINUTE: - case INTERVAL_MINUTE_SECOND: - multipl= 60; -common_1_lev_code: - buf->append('\''); - end= longlong10_to_str(expression/multipl, tmp_buff, 10); - buf->append(tmp_buff, (uint) (end- tmp_buff)); - expr= expr - (expr/multipl)*multipl; - break; - case INTERVAL_DAY_MINUTE: - { - ulonglong tmp_expr= expr; - - tmp_expr/=(24*60); - buf->append('\''); - end= longlong10_to_str(tmp_expr, tmp_buff, 10); - buf->append(tmp_buff, (uint) (end- tmp_buff));// days - buf->append(' '); - - tmp_expr= expr - tmp_expr*(24*60);//minutes left - end= longlong10_to_str(tmp_expr/60, tmp_buff, 10); - buf->append(tmp_buff, (uint) (end- tmp_buff));// hours - - expr= tmp_expr - (tmp_expr/60)*60; - /* the code after the switch will finish */ - } - break; - case INTERVAL_HOUR_SECOND: - { - ulonglong tmp_expr= expr; - - buf->append('\''); - end= longlong10_to_str(tmp_expr/3600, tmp_buff, 10); - buf->append(tmp_buff, (uint) (end- tmp_buff));// hours - buf->append(':'); - - tmp_expr= tmp_expr - (tmp_expr/3600)*3600; - end= longlong10_to_str(tmp_expr/60, tmp_buff, 10); - buf->append(tmp_buff, (uint) (end- tmp_buff));// minutes - - expr= tmp_expr - (tmp_expr/60)*60; - /* the code after the switch will finish */ - } - break; - case INTERVAL_DAY_SECOND: - { - ulonglong tmp_expr= expr; - - tmp_expr/=(24*3600); - buf->append('\''); - end= longlong10_to_str(tmp_expr, tmp_buff, 10); - buf->append(tmp_buff, (uint) (end- tmp_buff));// days - buf->append(' '); - - tmp_expr= expr - tmp_expr*(24*3600);//seconds left - end= longlong10_to_str(tmp_expr/3600, tmp_buff, 10); - buf->append(tmp_buff, (uint) (end- tmp_buff));// hours - buf->append(':'); - - tmp_expr= tmp_expr - (tmp_expr/3600)*3600; - end= longlong10_to_str(tmp_expr/60, tmp_buff, 10); - buf->append(tmp_buff, (uint) (end- tmp_buff));// minutes - - expr= tmp_expr - (tmp_expr/60)*60; - /* the code after the switch will finish */ - } - break; - case INTERVAL_DAY_MICROSECOND: - case INTERVAL_HOUR_MICROSECOND: - case INTERVAL_MINUTE_MICROSECOND: - case INTERVAL_SECOND_MICROSECOND: - case INTERVAL_MICROSECOND: - my_error(ER_NOT_SUPPORTED_YET, MYF(0), "MICROSECOND"); - return 1; - break; - case INTERVAL_QUARTER: - expr/= 3; - close_quote= FALSE; - break; - case INTERVAL_WEEK: - expr/= 7; - default: - close_quote= FALSE; - break; - } - if (close_quote) - buf->append(separator); - end= longlong10_to_str(expr, tmp_buff, 10); - buf->append(tmp_buff, (uint) (end- tmp_buff)); - if (close_quote) - buf->append('\''); - - return 0; -} - - -/* - Open mysql.event table for read - - SYNOPSIS - Events::open_event_table() - thd Thread context - lock_type How to lock the table - table The table pointer - - RETURN VALUE - 1 Cannot lock table - 2 The table is corrupted - different number of fields - 0 OK -*/ - -int -Events::open_event_table(THD *thd, enum thr_lock_type lock_type, - TABLE **table) -{ - TABLE_LIST tables; - DBUG_ENTER("open_proc_table"); - - bzero((char*) &tables, sizeof(tables)); - tables.db= (char*) "mysql"; - tables.table_name= tables.alias= (char*) "event"; - tables.lock_type= lock_type; - - if (simple_open_n_lock_tables(thd, &tables)) - DBUG_RETURN(1); - - if (table_check_intact(tables.table, Events::FIELD_COUNT, - event_table_fields, - &mysql_event_last_create_time, - ER_CANNOT_LOAD_FROM_TABLE)) - { - close_thread_tables(thd); - DBUG_RETURN(2); - } - *table= tables.table; - - DBUG_RETURN(0); -} - - -/* - Find row in open mysql.event table representing event - - SYNOPSIS - evex_db_find_event_aux() - thd Thread context - et event_timed object containing dbname & name - table TABLE object for open mysql.event table. - - RETURN VALUE - 0 - Routine found - EVEX_KEY_NOT_FOUND - No routine with given name -*/ - -inline int -evex_db_find_event_aux(THD *thd, Event_timed *et, TABLE *table) -{ - return evex_db_find_event_by_name(thd, et->dbname, et->name, table); -} - - -/* - Find row in open mysql.event table representing event - - SYNOPSIS - evex_db_find_event_by_name() - thd Thread context - dbname Name of event's database - rname Name of the event inside the db - table TABLE object for open mysql.event table. - - RETURN VALUE - 0 - Routine found - EVEX_KEY_NOT_FOUND - No routine with given name -*/ - -int -evex_db_find_event_by_name(THD *thd, const LEX_STRING dbname, - const LEX_STRING ev_name, - TABLE *table) -{ - byte key[MAX_KEY_LENGTH]; - DBUG_ENTER("evex_db_find_event_by_name"); - DBUG_PRINT("enter", ("name: %.*s", ev_name.length, ev_name.str)); - - /* - Create key to find row. We have to use field->store() to be able to - handle VARCHAR and CHAR fields. - Assumption here is that the two first fields in the table are - 'db' and 'name' and the first key is the primary key over the - same fields. - */ - if (dbname.length > table->field[Events::FIELD_DB]->field_length || - ev_name.length > table->field[Events::FIELD_NAME]->field_length) - - DBUG_RETURN(EVEX_KEY_NOT_FOUND); - - table->field[Events::FIELD_DB]->store(dbname.str, dbname.length, - &my_charset_bin); - table->field[Events::FIELD_NAME]->store(ev_name.str, ev_name.length, - &my_charset_bin); - - key_copy(key, table->record[0], table->key_info, table->key_info->key_length); - - if (table->file->index_read_idx(table->record[0], 0, key, - table->key_info->key_length,HA_READ_KEY_EXACT)) - { - DBUG_PRINT("info", ("Row not fonud")); - DBUG_RETURN(EVEX_KEY_NOT_FOUND); - } - - DBUG_PRINT("info", ("Row found!")); - DBUG_RETURN(0); -} - - -/* - Puts some data common to CREATE and ALTER EVENT into a row. - - SYNOPSIS - evex_fill_row() - thd THD - table the row to fill out - et Event's data - - RETURN VALUE - 0 - OK - EVEX_GENERAL_ERROR - bad data - EVEX_GET_FIELD_FAILED - field count does not match. table corrupted? - - DESCRIPTION - Used both when an event is created and when it is altered. -*/ - -static int -evex_fill_row(THD *thd, TABLE *table, Event_timed *et, my_bool is_update) -{ - CHARSET_INFO *scs= system_charset_info; - enum Events::enum_table_field field_num; - - DBUG_ENTER("evex_fill_row"); - - DBUG_PRINT("info", ("dbname=[%s]", et->dbname.str)); - DBUG_PRINT("info", ("name =[%s]", et->name.str)); - DBUG_PRINT("info", ("body =[%s]", et->body.str)); - - if (table->field[field_num= Events::FIELD_DEFINER]-> - store(et->definer.str, et->definer.length, scs)) - goto err_truncate; - - if (table->field[field_num= Events::FIELD_DB]-> - store(et->dbname.str, et->dbname.length, scs)) - goto err_truncate; - - if (table->field[field_num= Events::FIELD_NAME]-> - store(et->name.str, et->name.length, scs)) - goto err_truncate; - - /* both ON_COMPLETION and STATUS are NOT NULL thus not calling set_notnull()*/ - table->field[Events::FIELD_ON_COMPLETION]-> - store((longlong)et->on_completion, true); - - table->field[Events::FIELD_STATUS]->store((longlong)et->status, true); - - /* - Change the SQL_MODE only if body was present in an ALTER EVENT and of course - always during CREATE EVENT. - */ - if (et->body.str) - { - table->field[Events::FIELD_SQL_MODE]-> - store((longlong)thd->variables.sql_mode, true); - - if (table->field[field_num= Events::FIELD_BODY]-> - store(et->body.str, et->body.length, scs)) - goto err_truncate; - } - - if (et->expression) - { - table->field[Events::FIELD_INTERVAL_EXPR]->set_notnull(); - table->field[Events::FIELD_INTERVAL_EXPR]-> - store((longlong)et->expression, true); - - table->field[Events::FIELD_TRANSIENT_INTERVAL]->set_notnull(); - /* - In the enum (C) intervals start from 0 but in mysql enum valid values start - from 1. Thus +1 offset is needed! - */ - table->field[Events::FIELD_TRANSIENT_INTERVAL]-> - store((longlong)et->interval+1, true); - - table->field[Events::FIELD_EXECUTE_AT]->set_null(); - - if (!et->starts_null) - { - table->field[Events::FIELD_STARTS]->set_notnull(); - table->field[Events::FIELD_STARTS]-> - store_time(&et->starts, MYSQL_TIMESTAMP_DATETIME); - } - - if (!et->ends_null) - { - table->field[Events::FIELD_ENDS]->set_notnull(); - table->field[Events::FIELD_ENDS]-> - store_time(&et->ends, MYSQL_TIMESTAMP_DATETIME); - } - } - else if (et->execute_at.year) - { - table->field[Events::FIELD_INTERVAL_EXPR]->set_null(); - table->field[Events::FIELD_TRANSIENT_INTERVAL]->set_null(); - table->field[Events::FIELD_STARTS]->set_null(); - table->field[Events::FIELD_ENDS]->set_null(); - - table->field[Events::FIELD_EXECUTE_AT]->set_notnull(); - table->field[Events::FIELD_EXECUTE_AT]-> - store_time(&et->execute_at, MYSQL_TIMESTAMP_DATETIME); - } - else - { - DBUG_ASSERT(is_update); - /* - it is normal to be here when the action is update - this is an error if the action is create. something is borked - */ - } - - ((Field_timestamp *)table->field[Events::FIELD_MODIFIED])->set_time(); - - if (et->comment.str) - { - if (table->field[field_num= Events::FIELD_COMMENT]-> - store(et->comment.str, et->comment.length, scs)) - goto err_truncate; - } - - DBUG_RETURN(0); -err_truncate: - my_error(ER_EVENT_DATA_TOO_LONG, MYF(0), table->field[field_num]->field_name); - DBUG_RETURN(EVEX_GENERAL_ERROR); -} - - -/* - Creates an event in mysql.event - - SYNOPSIS - db_create_event() - thd THD - et Event_timed object containing information for the event - create_if_not If an warning should be generated in case event exists - rows_affected How many rows were affected - - RETURN VALUE - 0 - OK - EVEX_GENERAL_ERROR - Failure - - DESCRIPTION - Creates an event. Relies on evex_fill_row which is shared with - db_update_event. The name of the event is inside "et". -*/ - -int -db_create_event(THD *thd, Event_timed *et, my_bool create_if_not, - uint *rows_affected) -{ - int ret= 0; - CHARSET_INFO *scs= system_charset_info; - TABLE *table; - char olddb[128]; - bool dbchanged= false; - DBUG_ENTER("db_create_event"); - DBUG_PRINT("enter", ("name: %.*s", et->name.length, et->name.str)); - - *rows_affected= 0; - DBUG_PRINT("info", ("open mysql.event for update")); - if (Events::open_event_table(thd, TL_WRITE, &table)) - { - my_error(ER_EVENT_OPEN_TABLE_FAILED, MYF(0)); - goto err; - } - - DBUG_PRINT("info", ("check existance of an event with the same name")); - if (!evex_db_find_event_aux(thd, et, table)) - { - if (create_if_not) - { - push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_NOTE, - ER_EVENT_ALREADY_EXISTS, ER(ER_EVENT_ALREADY_EXISTS), - et->name.str); - goto ok; - } - my_error(ER_EVENT_ALREADY_EXISTS, MYF(0), et->name.str); - goto err; - } - - DBUG_PRINT("info", ("non-existant, go forward")); - if ((ret= sp_use_new_db(thd, et->dbname.str,olddb, sizeof(olddb),0, &dbchanged))) - { - my_error(ER_BAD_DB_ERROR, MYF(0)); - goto err; - } - - restore_record(table, s->default_values); // Get default values for fields - - if (system_charset_info->cset->numchars(system_charset_info, et->dbname.str, - et->dbname.str + et->dbname.length) - > EVEX_DB_FIELD_LEN) - { - my_error(ER_TOO_LONG_IDENT, MYF(0), et->dbname.str); - goto err; - } - if (system_charset_info->cset->numchars(system_charset_info, et->name.str, - et->name.str + et->name.length) - > EVEX_DB_FIELD_LEN) - { - my_error(ER_TOO_LONG_IDENT, MYF(0), et->name.str); - goto err; - } - - if (et->body.length > table->field[Events::FIELD_BODY]->field_length) - { - my_error(ER_TOO_LONG_BODY, MYF(0), et->name.str); - goto err; - } - - if (!(et->expression) && !(et->execute_at.year)) - { - DBUG_PRINT("error", ("neither expression nor execute_at are set!")); - my_error(ER_EVENT_NEITHER_M_EXPR_NOR_M_AT, MYF(0)); - goto err; - } - - ((Field_timestamp *)table->field[Events::FIELD_CREATED])->set_time(); - - /* - evex_fill_row() calls my_error() in case of error so no need to - handle it here - */ - if ((ret= evex_fill_row(thd, table, et, false))) - goto err; - - if (table->file->ha_write_row(table->record[0])) - { - my_error(ER_EVENT_STORE_FAILED, MYF(0), et->name.str, ret); - goto err; - } - -#ifdef USE_THIS_CODE_AS_TEMPLATE_WHEN_EVENT_REPLICATION_IS_AGREED - if (mysql_bin_log.is_open()) - { - thd->clear_error(); - /* Such a statement can always go directly to binlog, no trans cache */ - thd->binlog_query(THD::MYSQL_QUERY_TYPE, thd->query, thd->query_length, - FALSE, FALSE); - } -#endif - - *rows_affected= 1; -ok: - if (dbchanged) - (void) mysql_change_db(thd, olddb, 1); - if (table) - close_thread_tables(thd); - DBUG_RETURN(EVEX_OK); - -err: - if (dbchanged) - (void) mysql_change_db(thd, olddb, 1); - if (table) - close_thread_tables(thd); - DBUG_RETURN(EVEX_GENERAL_ERROR); -} - - -/* - Used to execute ALTER EVENT. Pendant to Events::update_event(). - - SYNOPSIS - db_update_event() - thd THD - sp_name the name of the event to alter - et event's data - - RETURN VALUE - 0 OK - EVEX_GENERAL_ERROR Error occured (my_error() called) - - NOTES - sp_name is passed since this is the name of the event to - alter in case of RENAME TO. -*/ - -static int -db_update_event(THD *thd, Event_timed *et, sp_name *new_name) -{ - CHARSET_INFO *scs= system_charset_info; - TABLE *table; - int ret= EVEX_OPEN_TABLE_FAILED; - DBUG_ENTER("db_update_event"); - DBUG_PRINT("enter", ("dbname: %.*s", et->dbname.length, et->dbname.str)); - DBUG_PRINT("enter", ("name: %.*s", et->name.length, et->name.str)); - DBUG_PRINT("enter", ("user: %.*s", et->definer.length, et->definer.str)); - if (new_name) - DBUG_PRINT("enter", ("rename to: %.*s", new_name->m_name.length, - new_name->m_name.str)); - - if (Events::open_event_table(thd, TL_WRITE, &table)) - { - my_error(ER_EVENT_OPEN_TABLE_FAILED, MYF(0)); - goto err; - } - - /* first look whether we overwrite */ - if (new_name) - { - if (!sortcmp_lex_string(et->name, new_name->m_name, scs) && - !sortcmp_lex_string(et->dbname, new_name->m_db, scs)) - { - my_error(ER_EVENT_SAME_NAME, MYF(0), et->name.str); - goto err; - } - - if (!evex_db_find_event_by_name(thd,new_name->m_db,new_name->m_name,table)) - { - my_error(ER_EVENT_ALREADY_EXISTS, MYF(0), new_name->m_name.str); - goto err; - } - } - /* - ...and then if there is such an event. Don't exchange the blocks - because you will get error 120 from table handler because new_name will - overwrite the key and SE will tell us that it cannot find the already found - row (copied into record[1] later - */ - if (EVEX_KEY_NOT_FOUND == evex_db_find_event_aux(thd, et, table)) - { - my_error(ER_EVENT_DOES_NOT_EXIST, MYF(0), et->name.str); - goto err; - } - - store_record(table,record[1]); - - /* Don't update create on row update. */ - table->timestamp_field_type= TIMESTAMP_NO_AUTO_SET; - - /* - evex_fill_row() calls my_error() in case of error so no need to - handle it here - */ - if ((ret= evex_fill_row(thd, table, et, true))) - goto err; - - if (new_name) - { - table->field[Events::FIELD_DB]-> - store(new_name->m_db.str, new_name->m_db.length, scs); - table->field[Events::FIELD_NAME]-> - store(new_name->m_name.str, new_name->m_name.length, scs); - } - - if ((ret= table->file->ha_update_row(table->record[1], table->record[0]))) - { - my_error(ER_EVENT_STORE_FAILED, MYF(0), et->name.str, ret); - goto err; - } - - /* close mysql.event or we crash later when loading the event from disk */ - close_thread_tables(thd); - DBUG_RETURN(0); - -err: - if (table) - close_thread_tables(thd); - DBUG_RETURN(EVEX_GENERAL_ERROR); -} - - -/* - Looks for a named event in mysql.event and in case of success returns - an object will data loaded from the table. - - SYNOPSIS - db_find_event() - thd THD - name the name of the event to find - ett event's data if event is found - tbl TABLE object to use when not NULL - - NOTES - 1) Use sp_name for look up, return in **ett if found - 2) tbl is not closed at exit - - RETURN VALUE - 0 ok In this case *ett is set to the event - # error *ett == 0 -*/ - -int -db_find_event(THD *thd, sp_name *name, Event_timed **ett, TABLE *tbl, - MEM_ROOT *root) -{ - TABLE *table; - int ret; - Event_timed *et= NULL; - DBUG_ENTER("db_find_event"); - DBUG_PRINT("enter", ("name: %*s", name->m_name.length, name->m_name.str)); - - if (!root) - root= &evex_mem_root; - - if (tbl) - table= tbl; - else if (Events::open_event_table(thd, TL_READ, &table)) - { - my_error(ER_EVENT_OPEN_TABLE_FAILED, MYF(0)); - ret= EVEX_GENERAL_ERROR; - goto done; - } - - if ((ret= evex_db_find_event_by_name(thd, name->m_db, name->m_name, table))) - { - my_error(ER_EVENT_DOES_NOT_EXIST, MYF(0), name->m_name.str); - goto done; - } - et= new Event_timed; - - /* - 1)The table should not be closed beforehand. ::load_from_row() only loads - and does not compile - - 2)::load_from_row() is silent on error therefore we emit error msg here - */ - if ((ret= et->load_from_row(root, table))) - { - my_error(ER_CANNOT_LOAD_FROM_TABLE, MYF(0)); - goto done; - } - -done: - if (ret) - { - delete et; - et= 0; - } - /* don't close the table if we haven't opened it ourselves */ - if (!tbl && table) - close_thread_tables(thd); - *ett= et; - DBUG_RETURN(ret); -} - - -/* - The function exported to the world for creating of events. - - SYNOPSIS - Events::create_event() - thd THD - et event's data - create_options Options specified when in the query. We are - interested whether there is IF NOT EXISTS - rows_affected How many rows were affected - - RETURN VALUE - 0 OK - !0 Error - - NOTES - - in case there is an event with the same name (db) and - IF NOT EXISTS is specified, an warning is put into the W stack. -*/ - -int -Events::create_event(THD *thd, Event_timed *et, uint create_options, - uint *rows_affected) -{ - int ret; - - DBUG_ENTER("Events::create_event"); - DBUG_PRINT("enter", ("name: %*s options:%d", et->name.length, - et->name.str, create_options)); - - if (!(ret = db_create_event(thd, et, - create_options & HA_LEX_CREATE_IF_NOT_EXISTS, - rows_affected))) - { - Event_scheduler *scheduler= Event_scheduler::get_instance(); - if (scheduler->initialized() && (ret= scheduler->add_event(thd, et, true))) - my_error(ER_EVENT_MODIFY_QUEUE_ERROR, MYF(0), ret); - } - /* No need to close the table, it will be closed in sql_parse::do_command */ - - DBUG_RETURN(ret); -} - - -/* - The function exported to the world for alteration of events. - - SYNOPSIS - Events::update_event() - thd THD - et event's data - new_name set in case of RENAME TO. - - RETURN VALUE - 0 OK - !0 Error - - NOTES - et contains data about dbname and event name. - new_name is the new name of the event, if not null (this means - that RENAME TO was specified in the query) -*/ - -int -Events::update_event(THD *thd, Event_timed *et, sp_name *new_name, - uint *rows_affected) -{ - int ret; - - DBUG_ENTER("Events::update_event"); - DBUG_PRINT("enter", ("name: %*s", et->name.length, et->name.str)); - /* - db_update_event() opens & closes the table to prevent - crash later in the code when loading and compiling the new definition. - Also on error conditions my_error() is called so no need to handle here - */ - if (!(ret= db_update_event(thd, et, new_name))) - { - Event_scheduler *scheduler= Event_scheduler::get_instance(); - if (scheduler->initialized() && - (ret= scheduler->replace_event(thd, et, - new_name? &new_name->m_db: NULL, - new_name? &new_name->m_name: NULL))) - my_error(ER_EVENT_MODIFY_QUEUE_ERROR, MYF(0), ret); - } - DBUG_RETURN(ret); -} - - -/* - Drops an event - - SYNOPSIS - db_drop_event() - thd THD - et event's name - drop_if_exists if set and the event not existing => warning onto the stack - rows_affected affected number of rows is returned heres - - RETURN VALUE - 0 OK - !0 Error (my_error() called) -*/ - -int db_drop_event(THD *thd, Event_timed *et, bool drop_if_exists, - uint *rows_affected) -{ - TABLE *table; - Open_tables_state backup; - int ret; - - DBUG_ENTER("db_drop_event"); - ret= EVEX_OPEN_TABLE_FAILED; - - thd->reset_n_backup_open_tables_state(&backup); - if (Events::open_event_table(thd, TL_WRITE, &table)) - { - my_error(ER_EVENT_OPEN_TABLE_FAILED, MYF(0)); - goto done; - } - - if (!(ret= evex_db_find_event_aux(thd, et, table))) - { - if ((ret= table->file->ha_delete_row(table->record[0]))) - { - my_error(ER_EVENT_CANNOT_DELETE, MYF(0)); - goto done; - } - } - else if (ret == EVEX_KEY_NOT_FOUND) - { - if (drop_if_exists) - { - push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_NOTE, - ER_SP_DOES_NOT_EXIST, ER(ER_SP_DOES_NOT_EXIST), - "Event", et->name.str); - ret= 0; - } else - my_error(ER_EVENT_DOES_NOT_EXIST, MYF(0), et->name.str); - goto done; - } - - -done: - /* - evex_drop_event() is used by Event_timed::drop therefore - we have to close our thread tables. - */ - close_thread_tables(thd); - thd->restore_backup_open_tables_state(&backup); - DBUG_RETURN(ret); -} - - -/* - Drops an event - - SYNOPSIS - Events::drop_event() - thd THD - et event's name - drop_if_exists if set and the event not existing => warning onto the stack - rows_affected affected number of rows is returned heres - - RETURN VALUE - 0 OK - !0 Error (reported) -*/ - -int -Events::drop_event(THD *thd, Event_timed *et, bool drop_if_exists, - uint *rows_affected) -{ - int ret; - - DBUG_ENTER("Events::drop_event"); - if (!(ret= db_drop_event(thd, et, drop_if_exists, rows_affected))) - { - Event_scheduler *scheduler= Event_scheduler::get_instance(); - if (scheduler->initialized() && (ret= scheduler->drop_event(thd, et))) - my_error(ER_EVENT_MODIFY_QUEUE_ERROR, MYF(0), ret); - } - - DBUG_RETURN(ret); -} - - -/* - SHOW CREATE EVENT - - SYNOPSIS - Events::show_create_event() - thd THD - spn the name of the event (db, name) - - RETURN VALUE - 0 OK - 1 Error during writing to the wire -*/ - -int -Events::show_create_event(THD *thd, sp_name *spn) -{ - int ret; - Event_timed *et= NULL; - Open_tables_state backup; - - DBUG_ENTER("evex_update_event"); - DBUG_PRINT("enter", ("name: %*s", spn->m_name.length, spn->m_name.str)); - - thd->reset_n_backup_open_tables_state(&backup); - ret= db_find_event(thd, spn, &et, NULL, thd->mem_root); - thd->restore_backup_open_tables_state(&backup); - - if (!ret) - { - Protocol *protocol= thd->protocol; - char show_str_buf[768]; - String show_str(show_str_buf, sizeof(show_str_buf), system_charset_info); - List field_list; - byte *sql_mode_str; - ulong sql_mode_len=0; - - show_str.length(0); - show_str.set_charset(system_charset_info); - - if (et->get_create_event(thd, &show_str)) - goto err; - - field_list.push_back(new Item_empty_string("Event", NAME_LEN)); - - sql_mode_str= - sys_var_thd_sql_mode::symbolic_mode_representation(thd, et->sql_mode, - &sql_mode_len); - - field_list.push_back(new Item_empty_string("sql_mode", sql_mode_len)); - - field_list.push_back(new Item_empty_string("Create Event", - show_str.length())); - if (protocol->send_fields(&field_list, Protocol::SEND_NUM_ROWS | - Protocol::SEND_EOF)) - goto err; - - protocol->prepare_for_resend(); - protocol->store(et->name.str, et->name.length, system_charset_info); - - protocol->store((char*) sql_mode_str, sql_mode_len, system_charset_info); - - protocol->store(show_str.c_ptr(), show_str.length(), system_charset_info); - ret= protocol->write(); - send_eof(thd); - } - delete et; - DBUG_RETURN(ret); -err: - delete et; - DBUG_RETURN(1); -} - - -/* - Drops all events from a schema - - SYNOPSIS - Events::drop_schema_events() - thd Thread - db ASCIIZ schema name - - RETURN VALUE - 0 OK - !0 Error -*/ - -int -Events::drop_schema_events(THD *thd, char *db) -{ - int ret= 0; - LEX_STRING db_lex= {db, strlen(db)}; - - DBUG_ENTER("evex_drop_db_events"); - DBUG_PRINT("enter", ("dropping events from %s", db)); - - Event_scheduler *scheduler= Event_scheduler::get_instance(); - if (scheduler->initialized()) - ret= scheduler->drop_schema_events(thd, &db_lex); - else - ret= db_drop_events_from_table(thd, &db_lex); - - DBUG_RETURN(ret); -} - - -/* - Drops all events in the selected database, from mysql.event. - - SYNOPSIS - evex_drop_db_events_from_table() - thd Thread - db Schema name - - RETURN VALUE - 0 OK - !0 Error from ha_delete_row -*/ - -int -db_drop_events_from_table(THD *thd, LEX_STRING *db) -{ - int ret; - TABLE *table; - READ_RECORD read_record_info; - DBUG_ENTER("db_drop_events_from_table"); - DBUG_PRINT("info", ("dropping events from %s", db->str)); - - if ((ret= Events::open_event_table(thd, TL_WRITE, &table))) - { - sql_print_error("Table mysql.event is damaged."); - DBUG_RETURN(ret); - } - /* only enabled events are in memory, so we go now and delete the rest */ - init_read_record(&read_record_info, thd, table, NULL, 1, 0); - while (!(read_record_info.read_record(&read_record_info)) && !ret) - { - char *et_db= get_field(thd->mem_root, - table->field[Events::FIELD_DB]); - - LEX_STRING et_db_lex= {et_db, strlen(et_db)}; - DBUG_PRINT("info", ("Current event %s.%s", et_db, - get_field(thd->mem_root, - table->field[Events::FIELD_NAME]))); - - if (!sortcmp_lex_string(et_db_lex, *db, system_charset_info)) - { - DBUG_PRINT("info", ("Dropping")); - if ((ret= table->file->ha_delete_row(table->record[0]))) - my_error(ER_EVENT_DROP_FAILED, MYF(0), - get_field(thd->mem_root, - table->field[Events::FIELD_NAME])); - } - } - end_read_record(&read_record_info); - thd->version--; /* Force close to free memory */ - - close_thread_tables(thd); - - DBUG_RETURN(ret); -} - - - -/* - Inits the scheduler's structures. - - SYNOPSIS - Events::init() - - NOTES - This function is not synchronized. - - RETURN VALUE - 0 OK - 1 Error -*/ - -int -Events::init() -{ - int ret= 0; - DBUG_ENTER("Events::init"); - - /* it should be an assignment! */ - if (opt_event_scheduler) - { - Event_scheduler *scheduler= Event_scheduler::get_instance(); - DBUG_ASSERT(opt_event_scheduler == 1 || opt_event_scheduler == 2); - DBUG_RETURN(scheduler->init() || - (opt_event_scheduler == 1? scheduler->start(): - scheduler->start_suspended())); - } - DBUG_RETURN(0); -} - - -/* - Cleans up scheduler's resources. Called at server shutdown. - - SYNOPSIS - Events::shutdown() - - NOTES - This function is not synchronized. -*/ - -void -Events::shutdown() -{ - DBUG_ENTER("Events::shutdown"); - Event_scheduler *scheduler= Event_scheduler::get_instance(); - if (scheduler->initialized()) - { - scheduler->stop(); - scheduler->destroy(); - } - - DBUG_VOID_RETURN; -} - - -/* - Proxy for Event_scheduler::dump_internal_status - - SYNOPSIS - Events::dump_internal_status() - thd Thread - - RETURN VALUE - 0 OK - !0 Error -*/ - -int -Events::dump_internal_status(THD *thd) -{ - return Event_scheduler::dump_internal_status(thd); -} - - -/* - Inits Events mutexes - - SYNOPSIS - Events::init_mutexes() - thd Thread -*/ - -void -Events::init_mutexes() -{ - Event_scheduler::init_mutexes(); -} - - -/* - Destroys Events mutexes - - SYNOPSIS - Events::destroy_mutexes() -*/ - -void -Events::destroy_mutexes() -{ - Event_scheduler::destroy_mutexes(); -} diff --git a/sql/event.h b/sql/event.h deleted file mode 100644 index 02c5fa78150..00000000000 --- a/sql/event.h +++ /dev/null @@ -1,296 +0,0 @@ -#ifndef _EVENT_H_ -#define _EVENT_H_ -/* Copyright (C) 2004-2006 MySQL AB - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - - - -#define EVEX_OK 0 -#define EVEX_KEY_NOT_FOUND -1 -#define EVEX_OPEN_TABLE_FAILED -2 -#define EVEX_WRITE_ROW_FAILED -3 -#define EVEX_DELETE_ROW_FAILED -4 -#define EVEX_GET_FIELD_FAILED -5 -#define EVEX_PARSE_ERROR -6 -#define EVEX_INTERNAL_ERROR -7 -#define EVEX_NO_DB_ERROR -8 -#define EVEX_COMPILE_ERROR -19 -#define EVEX_GENERAL_ERROR -20 -#define EVEX_BAD_IDENTIFIER -21 -#define EVEX_BODY_TOO_LONG -22 -#define EVEX_BAD_PARAMS -23 -#define EVEX_NOT_RUNNING -24 -#define EVEX_MICROSECOND_UNSUP -25 -#define EVEX_CANT_KILL -26 - -#define EVENT_EXEC_NO_MORE (1L << 0) -#define EVENT_NOT_USED (1L << 1) -#define EVENT_FREE_WHEN_FINISHED (1L << 2) - -class Event_timed; - -class Events -{ -public: - static ulong opt_event_scheduler; - static TYPELIB opt_typelib; - - enum enum_table_field - { - FIELD_DB = 0, - FIELD_NAME, - FIELD_BODY, - FIELD_DEFINER, - FIELD_EXECUTE_AT, - FIELD_INTERVAL_EXPR, - FIELD_TRANSIENT_INTERVAL, - FIELD_CREATED, - FIELD_MODIFIED, - FIELD_LAST_EXECUTED, - FIELD_STARTS, - FIELD_ENDS, - FIELD_STATUS, - FIELD_ON_COMPLETION, - FIELD_SQL_MODE, - FIELD_COMMENT, - FIELD_COUNT /* a cool trick to count the number of fields :) */ - }; - - static int - create_event(THD *thd, Event_timed *et, uint create_options, - uint *rows_affected); - - static int - update_event(THD *thd, Event_timed *et, sp_name *new_name, - uint *rows_affected); - - static int - drop_event(THD *thd, Event_timed *et, bool drop_if_exists, - uint *rows_affected); - - static int - open_event_table(THD *thd, enum thr_lock_type lock_type, TABLE **table); - - static int - show_create_event(THD *thd, sp_name *spn); - - static int - reconstruct_interval_expression(String *buf, interval_type interval, - longlong expression); - - static int - drop_schema_events(THD *thd, char *db); - - static int - dump_internal_status(THD *thd); - - static int - init(); - - static void - shutdown(); - - static void - init_mutexes(); - - static void - destroy_mutexes(); - - -private: - /* Prevent use of these */ - Events(const Events &); - void operator=(Events &); -}; - - - -class sp_head; - -class Event_timed -{ - Event_timed(const Event_timed &); /* Prevent use of these */ - void operator=(Event_timed &); - my_bool in_spawned_thread; - ulong locked_by_thread_id; - my_bool running; - ulong thread_id; - pthread_mutex_t LOCK_running; - pthread_cond_t COND_finished; - - bool status_changed; - bool last_executed_changed; - -public: - enum enum_status - { - ENABLED = 1, - DISABLED - }; - - enum enum_on_completion - { - ON_COMPLETION_DROP = 1, - ON_COMPLETION_PRESERVE - }; - - TIME last_executed; - - LEX_STRING dbname; - LEX_STRING name; - LEX_STRING body; - - LEX_STRING definer_user; - LEX_STRING definer_host; - LEX_STRING definer;// combination of user and host - - LEX_STRING comment; - TIME starts; - TIME ends; - TIME execute_at; - my_bool starts_null; - my_bool ends_null; - my_bool execute_at_null; - - longlong expression; - interval_type interval; - - ulonglong created; - ulonglong modified; - enum enum_on_completion on_completion; - enum enum_status status; - sp_head *sphead; - ulong sql_mode; - const uchar *body_begin; - - bool dropped; - bool free_sphead_on_delete; - uint flags;//all kind of purposes - - static void *operator new(size_t size) - { - void *p; - DBUG_ENTER("Event_timed::new(size)"); - p= my_malloc(size, MYF(0)); - DBUG_PRINT("info", ("alloc_ptr=0x%lx", p)); - DBUG_RETURN(p); - } - - static void *operator new(size_t size, MEM_ROOT *mem_root) - { return (void*) alloc_root(mem_root, (uint) size); } - - static void operator delete(void *ptr, size_t size) - { - DBUG_ENTER("Event_timed::delete(ptr,size)"); - DBUG_PRINT("enter", ("free_ptr=0x%lx", ptr)); - TRASH(ptr, size); - my_free((gptr) ptr, MYF(0)); - DBUG_VOID_RETURN; - } - - static void operator delete(void *ptr, MEM_ROOT *mem_root) - { - /* - Don't free the memory it will be done by the mem_root but - we need to call the destructor because we free other resources - which are not allocated on the root but on the heap, or we - deinit mutexes. - */ - DBUG_ASSERT(0); - } - - Event_timed(); - - ~Event_timed(); - - void - init(); - - void - deinit_mutexes(); - - int - init_definer(THD *thd); - - int - init_execute_at(THD *thd, Item *expr); - - int - init_interval(THD *thd, Item *expr, interval_type new_interval); - - void - init_name(THD *thd, sp_name *spn); - - int - init_starts(THD *thd, Item *starts); - - int - init_ends(THD *thd, Item *ends); - - void - init_body(THD *thd); - - void - init_comment(THD *thd, LEX_STRING *set_comment); - - int - load_from_row(MEM_ROOT *mem_root, TABLE *table); - - bool - compute_next_execution_time(); - - int - drop(THD *thd); - - void - mark_last_executed(THD *thd); - - bool - update_fields(THD *thd); - - int - get_create_event(THD *thd, String *buf); - - int - execute(THD *thd, MEM_ROOT *mem_root); - - int - compile(THD *thd, MEM_ROOT *mem_root); - - bool - is_running(); - - int - spawn_now(void * (*thread_func)(void*), void *arg); - - bool - spawn_thread_finish(THD *thd); - - void - free_sp(); - - bool - has_equal_db(Event_timed *etn); - - int - kill_thread(THD *thd); - - void - set_thread_id(ulong tid) { thread_id= tid; } -}; - - -#endif /* _EVENT_H_ */ diff --git a/sql/event_executor.cc b/sql/event_executor.cc deleted file mode 100644 index f236fb47771..00000000000 --- a/sql/event_executor.cc +++ /dev/null @@ -1,15 +0,0 @@ -/* Copyright (C) 2004-2005 MySQL AB - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ diff --git a/sql/event_priv.h b/sql/event_priv.h deleted file mode 100644 index 43ef30a659f..00000000000 --- a/sql/event_priv.h +++ /dev/null @@ -1,86 +0,0 @@ -#ifndef _EVENT_PRIV_H_ -#define _EVENT_PRIV_H_ -/* Copyright (C) 2004-2006 MySQL AB - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - -#include "mysql_priv.h" - - -#define EVENT_EXEC_STARTED 0 -#define EVENT_EXEC_ALREADY_EXEC 1 -#define EVENT_EXEC_CANT_FORK 2 - -#define EVEX_DB_FIELD_LEN 64 -#define EVEX_NAME_FIELD_LEN 64 -#define EVEX_MAX_INTERVAL_VALUE 2147483647L - -int -my_time_compare(TIME *a, TIME *b); - -int -evex_db_find_event_by_name(THD *thd, const LEX_STRING dbname, - const LEX_STRING ev_name, - TABLE *table); - -int -event_timed_compare_q(void *vptr, byte* a, byte *b); - -int -db_drop_event(THD *thd, Event_timed *et, bool drop_if_exists, - uint *rows_affected); -int -db_find_event(THD *thd, sp_name *name, Event_timed **ett, TABLE *tbl, - MEM_ROOT *root); - -int -db_create_event(THD *thd, Event_timed *et, my_bool create_if_not, - uint *rows_affected); - -int -db_drop_events_from_table(THD *thd, LEX_STRING *db); - -int -sortcmp_lex_string(LEX_STRING s, LEX_STRING t, CHARSET_INFO *cs); - -/* Compares only the name part of the identifier */ -bool -event_timed_name_equal(Event_timed *et, LEX_STRING *name); - -/* Compares only the schema part of the identifier */ -bool -event_timed_db_equal(Event_timed *et, LEX_STRING *db); - -/* - Compares only the definer part of the identifier. Use during DROP USER - to drop user's events. (Still not implemented) -*/ -bool -event_timed_definer_equal(Event_timed *et, LEX_STRING *definer); - -/* Compares the whole identifier*/ -bool -event_timed_identifier_equal(Event_timed *a, Event_timed *b); - - -bool -change_security_context(THD *thd, LEX_STRING user, LEX_STRING host, - LEX_STRING db, Security_context *s_ctx, - Security_context **backup); - -void -restore_security_context(THD *thd, Security_context *backup); - -#endif /* _EVENT_PRIV_H_ */ diff --git a/sql/event_scheduler.cc b/sql/event_scheduler.cc index e360254fdd2..10e641dceed 100644 --- a/sql/event_scheduler.cc +++ b/sql/event_scheduler.cc @@ -14,8 +14,10 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "event_priv.h" -#include "event.h" +#include "mysql_priv.h" +#include "events_priv.h" +#include "events.h" +#include "event_timed.h" #include "event_scheduler.h" #include "sp_head.h" @@ -46,8 +48,8 @@ The scheduler only manages execution of the events. Their creation, alteration and deletion is delegated to other routines found in event.cc . These routines interact with the scheduler : - - CREATE EVENT -> Event_scheduler::add_event() - - ALTER EVENT -> Event_scheduler::replace_event() + - CREATE EVENT -> Event_scheduler::create_event() + - ALTER EVENT -> Event_scheduler::update_event() - DROP EVENT -> Event_scheduler::drop_event() There is one mutex in the single Event_scheduler object which controls @@ -298,6 +300,35 @@ public: }; +/* + Compares the execute_at members of 2 Event_timed instances. + Used as callback for the prioritized queue when shifting + elements inside. + + SYNOPSIS + event_timed_compare_q() + + vptr - not used (set it to NULL) + a - first Event_timed object + b - second Event_timed object + + RETURN VALUE + -1 - a->execute_at < b->execute_at + 0 - a->execute_at == b->execute_at + 1 - a->execute_at > b->execute_at + + NOTES + execute_at.second_part is not considered during comparison +*/ + +static int +event_timed_compare_q(void *vptr, byte* a, byte *b) +{ + return my_time_compare(&((Event_timed *)a)->execute_at, + &((Event_timed *)b)->execute_at); +} + + /* Prints the stack of infos, warnings, errors from thd to the console so it can be fetched by the logs-into-tables and @@ -740,10 +771,10 @@ Event_scheduler::destroy() /* - Adds an event to the scheduler queue + Creates an event in the scheduler queue SYNOPSIS - Event_scheduler::add_event() + Event_scheduler::create_event() et The event to add check_existence Whether to check if already loaded. @@ -753,11 +784,11 @@ Event_scheduler::destroy() */ enum Event_scheduler::enum_error_code -Event_scheduler::add_event(THD *thd, Event_timed *et, bool check_existence) +Event_scheduler::create_event(THD *thd, Event_timed *et, bool check_existence) { enum enum_error_code res; Event_timed *et_new; - DBUG_ENTER("Event_scheduler::add_event"); + DBUG_ENTER("Event_scheduler::create_event"); DBUG_PRINT("enter", ("thd=%p et=%p lock=%p",thd,et,&LOCK_scheduler_data)); LOCK_SCHEDULER_DATA(); @@ -859,7 +890,7 @@ Event_scheduler::drop_event(THD *thd, Event_timed *et) /* - Replaces an event in the scheduler queue + Updates an event from the scheduler queue SYNOPSIS Event_scheduler::replace_event() @@ -873,14 +904,14 @@ Event_scheduler::drop_event(THD *thd, Event_timed *et) */ enum Event_scheduler::enum_error_code -Event_scheduler::replace_event(THD *thd, Event_timed *et, LEX_STRING *new_schema, +Event_scheduler::update_event(THD *thd, Event_timed *et, LEX_STRING *new_schema, LEX_STRING *new_name) { enum enum_error_code res; Event_timed *et_old, *et_new= NULL; LEX_STRING old_schema, old_name; - DBUG_ENTER("Event_scheduler::replace_event"); + DBUG_ENTER("Event_scheduler::update_event"); DBUG_PRINT("enter", ("thd=%p et=%p et=[%s.%s] lock=%p", thd, et, et->dbname.str, et->name.str, &LOCK_scheduler_data)); diff --git a/sql/event_scheduler.h b/sql/event_scheduler.h index dffd47539fa..5ae310bab2a 100644 --- a/sql/event_scheduler.h +++ b/sql/event_scheduler.h @@ -16,6 +16,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +class Event_timed; class THD; typedef bool * (*event_timed_identifier_comparator)(Event_timed*, Event_timed*); @@ -26,7 +27,6 @@ events_init(); void events_shutdown(); - class Event_scheduler { public: @@ -66,14 +66,15 @@ public: /* Methods for queue management follow */ enum enum_error_code - add_event(THD *thd, Event_timed *et, bool check_existence); + create_event(THD *thd, Event_timed *et, bool check_existence); + + enum enum_error_code + update_event(THD *thd, Event_timed *et, LEX_STRING *new_schema, + LEX_STRING *new_name); bool drop_event(THD *thd, Event_timed *et); - enum enum_error_code - replace_event(THD *thd, Event_timed *et, LEX_STRING *new_schema, - LEX_STRING *new_name); int drop_schema_events(THD *thd, LEX_STRING *schema); diff --git a/sql/event_timed.cc b/sql/event_timed.cc index d6d6dddf971..4ec875f32a3 100644 --- a/sql/event_timed.cc +++ b/sql/event_timed.cc @@ -15,8 +15,10 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #define MYSQL_LEX 1 -#include "event_priv.h" -#include "event.h" +#include "mysql_priv.h" +#include "events_priv.h" +#include "events.h" +#include "event_timed.h" #include "sp_head.h" @@ -395,6 +397,8 @@ Event_timed::init_interval(THD *thd, Item *expr, interval_type new_interval) break; case INTERVAL_MICROSECOND: DBUG_RETURN(EVEX_MICROSECOND_UNSUP); + case INTERVAL_LAST: + DBUG_ASSERT(0); } if (interval_tmp.neg || expression > EVEX_MAX_INTERVAL_VALUE) DBUG_RETURN(EVEX_BAD_PARAMS); @@ -834,6 +838,8 @@ bool get_next_time(TIME *next, TIME *start, TIME *time_now, TIME *last_exec, */ DBUG_RETURN(1); break; + case INTERVAL_LAST: + DBUG_ASSERT(0); } DBUG_PRINT("info", ("seconds=%ld months=%ld", seconds, months)); if (seconds) @@ -1279,7 +1285,6 @@ done: DBUG_RETURN(ret); } -extern LEX_STRING interval_type_to_name[]; /* Get SHOW CREATE EVENT as string diff --git a/sql/events.cc b/sql/events.cc new file mode 100644 index 00000000000..8398bb422f4 --- /dev/null +++ b/sql/events.cc @@ -0,0 +1,1337 @@ +/* Copyright (C) 2004-2006 MySQL AB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#include "mysql_priv.h" +#include "events_priv.h" +#include "events.h" +#include "event_timed.h" +#include "event_scheduler.h" +#include "sp.h" +#include "sp_head.h" + +/* + TODO list : + - CREATE EVENT should not go into binary log! Does it now? The SQL statements + issued by the EVENT are replicated. + I have an idea how to solve the problem at failover. So the status field + will be ENUM('DISABLED', 'ENABLED', 'SLAVESIDE_DISABLED'). + In this case when CREATE EVENT is replicated it should go into the binary + as SLAVESIDE_DISABLED if it is ENABLED, when it's created as DISABLEd it + should be replicated as disabled. If an event is ALTERed as DISABLED the + query should go untouched into the binary log, when ALTERed as enable then + it should go as SLAVESIDE_DISABLED. This is regarding the SQL interface. + TT routines however modify mysql.event internally and this does not go the log + so in this case queries has to be injected into the log...somehow... or + maybe a solution is RBR for this case, because the event may go only from + ENABLED to DISABLED status change and this is safe for replicating. As well + an event may be deleted which is also safe for RBR. + + - Add logging to file + +Warning: + - For now parallel execution is not possible because the same sp_head cannot be + executed few times!!! There is still no lock attached to particular event. + +*/ + + +MEM_ROOT evex_mem_root; +time_t mysql_event_last_create_time= 0L; + + +const char *event_scheduler_state_names[]= + { "OFF", "0", "ON", "1", "SUSPEND", "2", NullS }; + +TYPELIB Events::opt_typelib= +{ + array_elements(event_scheduler_state_names)-1, + "", + event_scheduler_state_names, + NULL +}; + + +ulong Events::opt_event_scheduler= 2; + +static +TABLE_FIELD_W_TYPE event_table_fields[Events::FIELD_COUNT] = { + { + {(char *) STRING_WITH_LEN("db")}, + {(char *) STRING_WITH_LEN("char(64)")}, + {(char *) STRING_WITH_LEN("utf8")} + }, + { + {(char *) STRING_WITH_LEN("name")}, + {(char *) STRING_WITH_LEN("char(64)")}, + {(char *) STRING_WITH_LEN("utf8")} + }, + { + {(char *) STRING_WITH_LEN("body")}, + {(char *) STRING_WITH_LEN("longblob")}, + {NULL, 0} + }, + { + {(char *) STRING_WITH_LEN("definer")}, + {(char *) STRING_WITH_LEN("char(77)")}, + {(char *) STRING_WITH_LEN("utf8")} + }, + { + {(char *) STRING_WITH_LEN("execute_at")}, + {(char *) STRING_WITH_LEN("datetime")}, + {NULL, 0} + }, + { + {(char *) STRING_WITH_LEN("interval_value")}, + {(char *) STRING_WITH_LEN("int(11)")}, + {NULL, 0} + }, + { + {(char *) STRING_WITH_LEN("interval_field")}, + {(char *) STRING_WITH_LEN("enum('YEAR','QUARTER','MONTH','DAY'," + "'HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR'," + "'DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND'," + "'DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND'," + "'SECOND_MICROSECOND')")}, + {NULL, 0} + }, + { + {(char *) STRING_WITH_LEN("created")}, + {(char *) STRING_WITH_LEN("timestamp")}, + {NULL, 0} + }, + { + {(char *) STRING_WITH_LEN("modified")}, + {(char *) STRING_WITH_LEN("timestamp")}, + {NULL, 0} + }, + { + {(char *) STRING_WITH_LEN("last_executed")}, + {(char *) STRING_WITH_LEN("datetime")}, + {NULL, 0} + }, + { + {(char *) STRING_WITH_LEN("starts")}, + {(char *) STRING_WITH_LEN("datetime")}, + {NULL, 0} + }, + { + {(char *) STRING_WITH_LEN("ends")}, + {(char *) STRING_WITH_LEN("datetime")}, + {NULL, 0} + }, + { + {(char *) STRING_WITH_LEN("status")}, + {(char *) STRING_WITH_LEN("enum('ENABLED','DISABLED')")}, + {NULL, 0} + }, + { + {(char *) STRING_WITH_LEN("on_completion")}, + {(char *) STRING_WITH_LEN("enum('DROP','PRESERVE')")}, + {NULL, 0} + }, + { + {(char *) STRING_WITH_LEN("sql_mode")}, + {(char *) STRING_WITH_LEN("set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES'," + "'IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION'," + "'NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB'," + "'NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40'," + "'ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES'," + "'STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES'," + "'ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER'," + "'HIGH_NOT_PRECEDENCE')")}, + {NULL, 0} + }, + { + {(char *) STRING_WITH_LEN("comment")}, + {(char *) STRING_WITH_LEN("char(64)")}, + {(char *) STRING_WITH_LEN("utf8")} + } +}; + + +/* + Compares 2 LEX strings regarding case. + + SYNOPSIS + sortcmp_lex_string() + + s - first LEX_STRING + t - second LEX_STRING + cs - charset + + RETURN VALUE + -1 - s < t + 0 - s == t + 1 - s > t + + Notes + TIME.second_part is not considered during comparison +*/ + +int sortcmp_lex_string(LEX_STRING s, LEX_STRING t, CHARSET_INFO *cs) +{ + return cs->coll->strnncollsp(cs, (unsigned char *) s.str,s.length, + (unsigned char *) t.str,t.length, 0); +} + + +/* + Reconstructs interval expression from interval type and expression + value that is in form of a value of the smalles entity: + For + YEAR_MONTH - expression is in months + DAY_MINUTE - expression is in minutes + + SYNOPSIS + Events::reconstruct_interval_expression() + buf - preallocated String buffer to add the value to + interval - the interval type (for instance YEAR_MONTH) + expression - the value in the lowest entity + + RETURNS + 0 - OK + 1 - Error +*/ + +int +Events::reconstruct_interval_expression(String *buf, + interval_type interval, + longlong expression) +{ + ulonglong expr= expression; + char tmp_buff[128], *end; + bool close_quote= TRUE; + int multipl= 0; + char separator=':'; + + switch (interval) { + case INTERVAL_YEAR_MONTH: + multipl= 12; + separator= '-'; + goto common_1_lev_code; + case INTERVAL_DAY_HOUR: + multipl= 24; + separator= ' '; + goto common_1_lev_code; + case INTERVAL_HOUR_MINUTE: + case INTERVAL_MINUTE_SECOND: + multipl= 60; +common_1_lev_code: + buf->append('\''); + end= longlong10_to_str(expression/multipl, tmp_buff, 10); + buf->append(tmp_buff, (uint) (end- tmp_buff)); + expr= expr - (expr/multipl)*multipl; + break; + case INTERVAL_DAY_MINUTE: + { + ulonglong tmp_expr= expr; + + tmp_expr/=(24*60); + buf->append('\''); + end= longlong10_to_str(tmp_expr, tmp_buff, 10); + buf->append(tmp_buff, (uint) (end- tmp_buff));// days + buf->append(' '); + + tmp_expr= expr - tmp_expr*(24*60);//minutes left + end= longlong10_to_str(tmp_expr/60, tmp_buff, 10); + buf->append(tmp_buff, (uint) (end- tmp_buff));// hours + + expr= tmp_expr - (tmp_expr/60)*60; + /* the code after the switch will finish */ + } + break; + case INTERVAL_HOUR_SECOND: + { + ulonglong tmp_expr= expr; + + buf->append('\''); + end= longlong10_to_str(tmp_expr/3600, tmp_buff, 10); + buf->append(tmp_buff, (uint) (end- tmp_buff));// hours + buf->append(':'); + + tmp_expr= tmp_expr - (tmp_expr/3600)*3600; + end= longlong10_to_str(tmp_expr/60, tmp_buff, 10); + buf->append(tmp_buff, (uint) (end- tmp_buff));// minutes + + expr= tmp_expr - (tmp_expr/60)*60; + /* the code after the switch will finish */ + } + break; + case INTERVAL_DAY_SECOND: + { + ulonglong tmp_expr= expr; + + tmp_expr/=(24*3600); + buf->append('\''); + end= longlong10_to_str(tmp_expr, tmp_buff, 10); + buf->append(tmp_buff, (uint) (end- tmp_buff));// days + buf->append(' '); + + tmp_expr= expr - tmp_expr*(24*3600);//seconds left + end= longlong10_to_str(tmp_expr/3600, tmp_buff, 10); + buf->append(tmp_buff, (uint) (end- tmp_buff));// hours + buf->append(':'); + + tmp_expr= tmp_expr - (tmp_expr/3600)*3600; + end= longlong10_to_str(tmp_expr/60, tmp_buff, 10); + buf->append(tmp_buff, (uint) (end- tmp_buff));// minutes + + expr= tmp_expr - (tmp_expr/60)*60; + /* the code after the switch will finish */ + } + break; + case INTERVAL_DAY_MICROSECOND: + case INTERVAL_HOUR_MICROSECOND: + case INTERVAL_MINUTE_MICROSECOND: + case INTERVAL_SECOND_MICROSECOND: + case INTERVAL_MICROSECOND: + my_error(ER_NOT_SUPPORTED_YET, MYF(0), "MICROSECOND"); + return 1; + break; + case INTERVAL_QUARTER: + expr/= 3; + close_quote= FALSE; + break; + case INTERVAL_WEEK: + expr/= 7; + default: + close_quote= FALSE; + break; + } + if (close_quote) + buf->append(separator); + end= longlong10_to_str(expr, tmp_buff, 10); + buf->append(tmp_buff, (uint) (end- tmp_buff)); + if (close_quote) + buf->append('\''); + + return 0; +} + + +/* + Open mysql.event table for read + + SYNOPSIS + Events::open_event_table() + thd Thread context + lock_type How to lock the table + table The table pointer + + RETURN VALUE + 1 Cannot lock table + 2 The table is corrupted - different number of fields + 0 OK +*/ + +int +Events::open_event_table(THD *thd, enum thr_lock_type lock_type, + TABLE **table) +{ + TABLE_LIST tables; + DBUG_ENTER("open_proc_table"); + + bzero((char*) &tables, sizeof(tables)); + tables.db= (char*) "mysql"; + tables.table_name= tables.alias= (char*) "event"; + tables.lock_type= lock_type; + + if (simple_open_n_lock_tables(thd, &tables)) + DBUG_RETURN(1); + + if (table_check_intact(tables.table, Events::FIELD_COUNT, + event_table_fields, + &mysql_event_last_create_time, + ER_CANNOT_LOAD_FROM_TABLE)) + { + close_thread_tables(thd); + DBUG_RETURN(2); + } + *table= tables.table; + + DBUG_RETURN(0); +} + + +/* + Find row in open mysql.event table representing event + + SYNOPSIS + evex_db_find_event_aux() + thd Thread context + et event_timed object containing dbname & name + table TABLE object for open mysql.event table. + + RETURN VALUE + 0 - Routine found + EVEX_KEY_NOT_FOUND - No routine with given name +*/ + +inline int +evex_db_find_event_aux(THD *thd, Event_timed *et, TABLE *table) +{ + return evex_db_find_event_by_name(thd, et->dbname, et->name, table); +} + + +/* + Find row in open mysql.event table representing event + + SYNOPSIS + evex_db_find_event_by_name() + thd Thread context + dbname Name of event's database + rname Name of the event inside the db + table TABLE object for open mysql.event table. + + RETURN VALUE + 0 - Routine found + EVEX_KEY_NOT_FOUND - No routine with given name +*/ + +int +evex_db_find_event_by_name(THD *thd, const LEX_STRING dbname, + const LEX_STRING ev_name, + TABLE *table) +{ + byte key[MAX_KEY_LENGTH]; + DBUG_ENTER("evex_db_find_event_by_name"); + DBUG_PRINT("enter", ("name: %.*s", ev_name.length, ev_name.str)); + + /* + Create key to find row. We have to use field->store() to be able to + handle VARCHAR and CHAR fields. + Assumption here is that the two first fields in the table are + 'db' and 'name' and the first key is the primary key over the + same fields. + */ + if (dbname.length > table->field[Events::FIELD_DB]->field_length || + ev_name.length > table->field[Events::FIELD_NAME]->field_length) + + DBUG_RETURN(EVEX_KEY_NOT_FOUND); + + table->field[Events::FIELD_DB]->store(dbname.str, dbname.length, + &my_charset_bin); + table->field[Events::FIELD_NAME]->store(ev_name.str, ev_name.length, + &my_charset_bin); + + key_copy(key, table->record[0], table->key_info, table->key_info->key_length); + + if (table->file->index_read_idx(table->record[0], 0, key, + table->key_info->key_length,HA_READ_KEY_EXACT)) + { + DBUG_PRINT("info", ("Row not fonud")); + DBUG_RETURN(EVEX_KEY_NOT_FOUND); + } + + DBUG_PRINT("info", ("Row found!")); + DBUG_RETURN(0); +} + + +/* + Puts some data common to CREATE and ALTER EVENT into a row. + + SYNOPSIS + evex_fill_row() + thd THD + table the row to fill out + et Event's data + + RETURN VALUE + 0 - OK + EVEX_GENERAL_ERROR - bad data + EVEX_GET_FIELD_FAILED - field count does not match. table corrupted? + + DESCRIPTION + Used both when an event is created and when it is altered. +*/ + +static int +evex_fill_row(THD *thd, TABLE *table, Event_timed *et, my_bool is_update) +{ + CHARSET_INFO *scs= system_charset_info; + enum Events::enum_table_field field_num; + + DBUG_ENTER("evex_fill_row"); + + DBUG_PRINT("info", ("dbname=[%s]", et->dbname.str)); + DBUG_PRINT("info", ("name =[%s]", et->name.str)); + DBUG_PRINT("info", ("body =[%s]", et->body.str)); + + if (table->field[field_num= Events::FIELD_DEFINER]-> + store(et->definer.str, et->definer.length, scs)) + goto err_truncate; + + if (table->field[field_num= Events::FIELD_DB]-> + store(et->dbname.str, et->dbname.length, scs)) + goto err_truncate; + + if (table->field[field_num= Events::FIELD_NAME]-> + store(et->name.str, et->name.length, scs)) + goto err_truncate; + + /* both ON_COMPLETION and STATUS are NOT NULL thus not calling set_notnull()*/ + table->field[Events::FIELD_ON_COMPLETION]-> + store((longlong)et->on_completion, true); + + table->field[Events::FIELD_STATUS]->store((longlong)et->status, true); + + /* + Change the SQL_MODE only if body was present in an ALTER EVENT and of course + always during CREATE EVENT. + */ + if (et->body.str) + { + table->field[Events::FIELD_SQL_MODE]-> + store((longlong)thd->variables.sql_mode, true); + + if (table->field[field_num= Events::FIELD_BODY]-> + store(et->body.str, et->body.length, scs)) + goto err_truncate; + } + + if (et->expression) + { + table->field[Events::FIELD_INTERVAL_EXPR]->set_notnull(); + table->field[Events::FIELD_INTERVAL_EXPR]-> + store((longlong)et->expression, true); + + table->field[Events::FIELD_TRANSIENT_INTERVAL]->set_notnull(); + /* + In the enum (C) intervals start from 0 but in mysql enum valid values start + from 1. Thus +1 offset is needed! + */ + table->field[Events::FIELD_TRANSIENT_INTERVAL]-> + store((longlong)et->interval+1, true); + + table->field[Events::FIELD_EXECUTE_AT]->set_null(); + + if (!et->starts_null) + { + table->field[Events::FIELD_STARTS]->set_notnull(); + table->field[Events::FIELD_STARTS]-> + store_time(&et->starts, MYSQL_TIMESTAMP_DATETIME); + } + + if (!et->ends_null) + { + table->field[Events::FIELD_ENDS]->set_notnull(); + table->field[Events::FIELD_ENDS]-> + store_time(&et->ends, MYSQL_TIMESTAMP_DATETIME); + } + } + else if (et->execute_at.year) + { + table->field[Events::FIELD_INTERVAL_EXPR]->set_null(); + table->field[Events::FIELD_TRANSIENT_INTERVAL]->set_null(); + table->field[Events::FIELD_STARTS]->set_null(); + table->field[Events::FIELD_ENDS]->set_null(); + + table->field[Events::FIELD_EXECUTE_AT]->set_notnull(); + table->field[Events::FIELD_EXECUTE_AT]-> + store_time(&et->execute_at, MYSQL_TIMESTAMP_DATETIME); + } + else + { + DBUG_ASSERT(is_update); + /* + it is normal to be here when the action is update + this is an error if the action is create. something is borked + */ + } + + ((Field_timestamp *)table->field[Events::FIELD_MODIFIED])->set_time(); + + if (et->comment.str) + { + if (table->field[field_num= Events::FIELD_COMMENT]-> + store(et->comment.str, et->comment.length, scs)) + goto err_truncate; + } + + DBUG_RETURN(0); +err_truncate: + my_error(ER_EVENT_DATA_TOO_LONG, MYF(0), table->field[field_num]->field_name); + DBUG_RETURN(EVEX_GENERAL_ERROR); +} + + +/* + Creates an event in mysql.event + + SYNOPSIS + db_create_event() + thd THD + et Event_timed object containing information for the event + create_if_not If an warning should be generated in case event exists + rows_affected How many rows were affected + + RETURN VALUE + 0 - OK + EVEX_GENERAL_ERROR - Failure + + DESCRIPTION + Creates an event. Relies on evex_fill_row which is shared with + db_update_event. The name of the event is inside "et". +*/ + +int +db_create_event(THD *thd, Event_timed *et, my_bool create_if_not, + uint *rows_affected) +{ + int ret= 0; + CHARSET_INFO *scs= system_charset_info; + TABLE *table; + char olddb[128]; + bool dbchanged= false; + DBUG_ENTER("db_create_event"); + DBUG_PRINT("enter", ("name: %.*s", et->name.length, et->name.str)); + + *rows_affected= 0; + DBUG_PRINT("info", ("open mysql.event for update")); + if (Events::open_event_table(thd, TL_WRITE, &table)) + { + my_error(ER_EVENT_OPEN_TABLE_FAILED, MYF(0)); + goto err; + } + + DBUG_PRINT("info", ("check existance of an event with the same name")); + if (!evex_db_find_event_aux(thd, et, table)) + { + if (create_if_not) + { + push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_NOTE, + ER_EVENT_ALREADY_EXISTS, ER(ER_EVENT_ALREADY_EXISTS), + et->name.str); + goto ok; + } + my_error(ER_EVENT_ALREADY_EXISTS, MYF(0), et->name.str); + goto err; + } + + DBUG_PRINT("info", ("non-existant, go forward")); + if ((ret= sp_use_new_db(thd, et->dbname.str,olddb, sizeof(olddb),0, &dbchanged))) + { + my_error(ER_BAD_DB_ERROR, MYF(0)); + goto err; + } + + restore_record(table, s->default_values); // Get default values for fields + + if (system_charset_info->cset->numchars(system_charset_info, et->dbname.str, + et->dbname.str + et->dbname.length) + > EVEX_DB_FIELD_LEN) + { + my_error(ER_TOO_LONG_IDENT, MYF(0), et->dbname.str); + goto err; + } + if (system_charset_info->cset->numchars(system_charset_info, et->name.str, + et->name.str + et->name.length) + > EVEX_DB_FIELD_LEN) + { + my_error(ER_TOO_LONG_IDENT, MYF(0), et->name.str); + goto err; + } + + if (et->body.length > table->field[Events::FIELD_BODY]->field_length) + { + my_error(ER_TOO_LONG_BODY, MYF(0), et->name.str); + goto err; + } + + if (!(et->expression) && !(et->execute_at.year)) + { + DBUG_PRINT("error", ("neither expression nor execute_at are set!")); + my_error(ER_EVENT_NEITHER_M_EXPR_NOR_M_AT, MYF(0)); + goto err; + } + + ((Field_timestamp *)table->field[Events::FIELD_CREATED])->set_time(); + + /* + evex_fill_row() calls my_error() in case of error so no need to + handle it here + */ + if ((ret= evex_fill_row(thd, table, et, false))) + goto err; + + if (table->file->ha_write_row(table->record[0])) + { + my_error(ER_EVENT_STORE_FAILED, MYF(0), et->name.str, ret); + goto err; + } + +#ifdef USE_THIS_CODE_AS_TEMPLATE_WHEN_EVENT_REPLICATION_IS_AGREED + if (mysql_bin_log.is_open()) + { + thd->clear_error(); + /* Such a statement can always go directly to binlog, no trans cache */ + thd->binlog_query(THD::MYSQL_QUERY_TYPE, thd->query, thd->query_length, + FALSE, FALSE); + } +#endif + + *rows_affected= 1; +ok: + if (dbchanged) + (void) mysql_change_db(thd, olddb, 1); + if (table) + close_thread_tables(thd); + DBUG_RETURN(EVEX_OK); + +err: + if (dbchanged) + (void) mysql_change_db(thd, olddb, 1); + if (table) + close_thread_tables(thd); + DBUG_RETURN(EVEX_GENERAL_ERROR); +} + + +/* + Used to execute ALTER EVENT. Pendant to Events::update_event(). + + SYNOPSIS + db_update_event() + thd THD + sp_name the name of the event to alter + et event's data + + RETURN VALUE + 0 OK + EVEX_GENERAL_ERROR Error occured (my_error() called) + + NOTES + sp_name is passed since this is the name of the event to + alter in case of RENAME TO. +*/ + +static int +db_update_event(THD *thd, Event_timed *et, sp_name *new_name) +{ + CHARSET_INFO *scs= system_charset_info; + TABLE *table; + int ret= EVEX_OPEN_TABLE_FAILED; + DBUG_ENTER("db_update_event"); + DBUG_PRINT("enter", ("dbname: %.*s", et->dbname.length, et->dbname.str)); + DBUG_PRINT("enter", ("name: %.*s", et->name.length, et->name.str)); + DBUG_PRINT("enter", ("user: %.*s", et->definer.length, et->definer.str)); + if (new_name) + DBUG_PRINT("enter", ("rename to: %.*s", new_name->m_name.length, + new_name->m_name.str)); + + if (Events::open_event_table(thd, TL_WRITE, &table)) + { + my_error(ER_EVENT_OPEN_TABLE_FAILED, MYF(0)); + goto err; + } + + /* first look whether we overwrite */ + if (new_name) + { + if (!sortcmp_lex_string(et->name, new_name->m_name, scs) && + !sortcmp_lex_string(et->dbname, new_name->m_db, scs)) + { + my_error(ER_EVENT_SAME_NAME, MYF(0), et->name.str); + goto err; + } + + if (!evex_db_find_event_by_name(thd,new_name->m_db,new_name->m_name,table)) + { + my_error(ER_EVENT_ALREADY_EXISTS, MYF(0), new_name->m_name.str); + goto err; + } + } + /* + ...and then if there is such an event. Don't exchange the blocks + because you will get error 120 from table handler because new_name will + overwrite the key and SE will tell us that it cannot find the already found + row (copied into record[1] later + */ + if (EVEX_KEY_NOT_FOUND == evex_db_find_event_aux(thd, et, table)) + { + my_error(ER_EVENT_DOES_NOT_EXIST, MYF(0), et->name.str); + goto err; + } + + store_record(table,record[1]); + + /* Don't update create on row update. */ + table->timestamp_field_type= TIMESTAMP_NO_AUTO_SET; + + /* + evex_fill_row() calls my_error() in case of error so no need to + handle it here + */ + if ((ret= evex_fill_row(thd, table, et, true))) + goto err; + + if (new_name) + { + table->field[Events::FIELD_DB]-> + store(new_name->m_db.str, new_name->m_db.length, scs); + table->field[Events::FIELD_NAME]-> + store(new_name->m_name.str, new_name->m_name.length, scs); + } + + if ((ret= table->file->ha_update_row(table->record[1], table->record[0]))) + { + my_error(ER_EVENT_STORE_FAILED, MYF(0), et->name.str, ret); + goto err; + } + + /* close mysql.event or we crash later when loading the event from disk */ + close_thread_tables(thd); + DBUG_RETURN(0); + +err: + if (table) + close_thread_tables(thd); + DBUG_RETURN(EVEX_GENERAL_ERROR); +} + + +/* + Looks for a named event in mysql.event and in case of success returns + an object will data loaded from the table. + + SYNOPSIS + db_find_event() + thd THD + name the name of the event to find + ett event's data if event is found + tbl TABLE object to use when not NULL + + NOTES + 1) Use sp_name for look up, return in **ett if found + 2) tbl is not closed at exit + + RETURN VALUE + 0 ok In this case *ett is set to the event + # error *ett == 0 +*/ + +int +db_find_event(THD *thd, sp_name *name, Event_timed **ett, TABLE *tbl, + MEM_ROOT *root) +{ + TABLE *table; + int ret; + Event_timed *et= NULL; + DBUG_ENTER("db_find_event"); + DBUG_PRINT("enter", ("name: %*s", name->m_name.length, name->m_name.str)); + + if (!root) + root= &evex_mem_root; + + if (tbl) + table= tbl; + else if (Events::open_event_table(thd, TL_READ, &table)) + { + my_error(ER_EVENT_OPEN_TABLE_FAILED, MYF(0)); + ret= EVEX_GENERAL_ERROR; + goto done; + } + + if ((ret= evex_db_find_event_by_name(thd, name->m_db, name->m_name, table))) + { + my_error(ER_EVENT_DOES_NOT_EXIST, MYF(0), name->m_name.str); + goto done; + } + et= new Event_timed; + + /* + 1)The table should not be closed beforehand. ::load_from_row() only loads + and does not compile + + 2)::load_from_row() is silent on error therefore we emit error msg here + */ + if ((ret= et->load_from_row(root, table))) + { + my_error(ER_CANNOT_LOAD_FROM_TABLE, MYF(0)); + goto done; + } + +done: + if (ret) + { + delete et; + et= 0; + } + /* don't close the table if we haven't opened it ourselves */ + if (!tbl && table) + close_thread_tables(thd); + *ett= et; + DBUG_RETURN(ret); +} + + +/* + The function exported to the world for creating of events. + + SYNOPSIS + Events::create_event() + thd THD + et event's data + create_options Options specified when in the query. We are + interested whether there is IF NOT EXISTS + rows_affected How many rows were affected + + RETURN VALUE + 0 OK + !0 Error + + NOTES + - in case there is an event with the same name (db) and + IF NOT EXISTS is specified, an warning is put into the W stack. +*/ + +int +Events::create_event(THD *thd, Event_timed *et, uint create_options, + uint *rows_affected) +{ + int ret; + + DBUG_ENTER("Events::create_event"); + DBUG_PRINT("enter", ("name: %*s options:%d", et->name.length, + et->name.str, create_options)); + + if (!(ret = db_create_event(thd, et, + create_options & HA_LEX_CREATE_IF_NOT_EXISTS, + rows_affected))) + { + Event_scheduler *scheduler= Event_scheduler::get_instance(); + if (scheduler->initialized() && + (ret= scheduler->create_event(thd, et, true))) + my_error(ER_EVENT_MODIFY_QUEUE_ERROR, MYF(0), ret); + } + /* No need to close the table, it will be closed in sql_parse::do_command */ + + DBUG_RETURN(ret); +} + + +/* + The function exported to the world for alteration of events. + + SYNOPSIS + Events::update_event() + thd THD + et event's data + new_name set in case of RENAME TO. + + RETURN VALUE + 0 OK + !0 Error + + NOTES + et contains data about dbname and event name. + new_name is the new name of the event, if not null (this means + that RENAME TO was specified in the query) +*/ + +int +Events::update_event(THD *thd, Event_timed *et, sp_name *new_name, + uint *rows_affected) +{ + int ret; + + DBUG_ENTER("Events::update_event"); + DBUG_PRINT("enter", ("name: %*s", et->name.length, et->name.str)); + /* + db_update_event() opens & closes the table to prevent + crash later in the code when loading and compiling the new definition. + Also on error conditions my_error() is called so no need to handle here + */ + if (!(ret= db_update_event(thd, et, new_name))) + { + Event_scheduler *scheduler= Event_scheduler::get_instance(); + if (scheduler->initialized() && + (ret= scheduler->update_event(thd, et, + new_name? &new_name->m_db: NULL, + new_name? &new_name->m_name: NULL))) + my_error(ER_EVENT_MODIFY_QUEUE_ERROR, MYF(0), ret); + } + DBUG_RETURN(ret); +} + + +/* + Drops an event + + SYNOPSIS + db_drop_event() + thd THD + et event's name + drop_if_exists if set and the event not existing => warning onto the stack + rows_affected affected number of rows is returned heres + + RETURN VALUE + 0 OK + !0 Error (my_error() called) +*/ + +int db_drop_event(THD *thd, Event_timed *et, bool drop_if_exists, + uint *rows_affected) +{ + TABLE *table; + Open_tables_state backup; + int ret; + + DBUG_ENTER("db_drop_event"); + ret= EVEX_OPEN_TABLE_FAILED; + + thd->reset_n_backup_open_tables_state(&backup); + if (Events::open_event_table(thd, TL_WRITE, &table)) + { + my_error(ER_EVENT_OPEN_TABLE_FAILED, MYF(0)); + goto done; + } + + if (!(ret= evex_db_find_event_aux(thd, et, table))) + { + if ((ret= table->file->ha_delete_row(table->record[0]))) + { + my_error(ER_EVENT_CANNOT_DELETE, MYF(0)); + goto done; + } + } + else if (ret == EVEX_KEY_NOT_FOUND) + { + if (drop_if_exists) + { + push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_NOTE, + ER_SP_DOES_NOT_EXIST, ER(ER_SP_DOES_NOT_EXIST), + "Event", et->name.str); + ret= 0; + } else + my_error(ER_EVENT_DOES_NOT_EXIST, MYF(0), et->name.str); + goto done; + } + + +done: + /* + evex_drop_event() is used by Event_timed::drop therefore + we have to close our thread tables. + */ + close_thread_tables(thd); + thd->restore_backup_open_tables_state(&backup); + DBUG_RETURN(ret); +} + + +/* + Drops an event + + SYNOPSIS + Events::drop_event() + thd THD + et event's name + drop_if_exists if set and the event not existing => warning onto the stack + rows_affected affected number of rows is returned heres + + RETURN VALUE + 0 OK + !0 Error (reported) +*/ + +int +Events::drop_event(THD *thd, Event_timed *et, bool drop_if_exists, + uint *rows_affected) +{ + int ret; + + DBUG_ENTER("Events::drop_event"); + if (!(ret= db_drop_event(thd, et, drop_if_exists, rows_affected))) + { + Event_scheduler *scheduler= Event_scheduler::get_instance(); + if (scheduler->initialized() && (ret= scheduler->drop_event(thd, et))) + my_error(ER_EVENT_MODIFY_QUEUE_ERROR, MYF(0), ret); + } + + DBUG_RETURN(ret); +} + + +/* + SHOW CREATE EVENT + + SYNOPSIS + Events::show_create_event() + thd THD + spn the name of the event (db, name) + + RETURN VALUE + 0 OK + 1 Error during writing to the wire +*/ + +int +Events::show_create_event(THD *thd, sp_name *spn) +{ + int ret; + Event_timed *et= NULL; + Open_tables_state backup; + + DBUG_ENTER("evex_update_event"); + DBUG_PRINT("enter", ("name: %*s", spn->m_name.length, spn->m_name.str)); + + thd->reset_n_backup_open_tables_state(&backup); + ret= db_find_event(thd, spn, &et, NULL, thd->mem_root); + thd->restore_backup_open_tables_state(&backup); + + if (!ret) + { + Protocol *protocol= thd->protocol; + char show_str_buf[768]; + String show_str(show_str_buf, sizeof(show_str_buf), system_charset_info); + List field_list; + byte *sql_mode_str; + ulong sql_mode_len=0; + + show_str.length(0); + show_str.set_charset(system_charset_info); + + if (et->get_create_event(thd, &show_str)) + goto err; + + field_list.push_back(new Item_empty_string("Event", NAME_LEN)); + + sql_mode_str= + sys_var_thd_sql_mode::symbolic_mode_representation(thd, et->sql_mode, + &sql_mode_len); + + field_list.push_back(new Item_empty_string("sql_mode", sql_mode_len)); + + field_list.push_back(new Item_empty_string("Create Event", + show_str.length())); + if (protocol->send_fields(&field_list, Protocol::SEND_NUM_ROWS | + Protocol::SEND_EOF)) + goto err; + + protocol->prepare_for_resend(); + protocol->store(et->name.str, et->name.length, system_charset_info); + + protocol->store((char*) sql_mode_str, sql_mode_len, system_charset_info); + + protocol->store(show_str.c_ptr(), show_str.length(), system_charset_info); + ret= protocol->write(); + send_eof(thd); + } + delete et; + DBUG_RETURN(ret); +err: + delete et; + DBUG_RETURN(1); +} + + +/* + Drops all events from a schema + + SYNOPSIS + Events::drop_schema_events() + thd Thread + db ASCIIZ schema name + + RETURN VALUE + 0 OK + !0 Error +*/ + +int +Events::drop_schema_events(THD *thd, char *db) +{ + int ret= 0; + LEX_STRING db_lex= {db, strlen(db)}; + + DBUG_ENTER("evex_drop_db_events"); + DBUG_PRINT("enter", ("dropping events from %s", db)); + + Event_scheduler *scheduler= Event_scheduler::get_instance(); + if (scheduler->initialized()) + ret= scheduler->drop_schema_events(thd, &db_lex); + else + ret= db_drop_events_from_table(thd, &db_lex); + + DBUG_RETURN(ret); +} + + +/* + Drops all events in the selected database, from mysql.event. + + SYNOPSIS + evex_drop_db_events_from_table() + thd Thread + db Schema name + + RETURN VALUE + 0 OK + !0 Error from ha_delete_row +*/ + +int +db_drop_events_from_table(THD *thd, LEX_STRING *db) +{ + int ret; + TABLE *table; + READ_RECORD read_record_info; + DBUG_ENTER("db_drop_events_from_table"); + DBUG_PRINT("info", ("dropping events from %s", db->str)); + + if ((ret= Events::open_event_table(thd, TL_WRITE, &table))) + { + sql_print_error("Table mysql.event is damaged."); + DBUG_RETURN(ret); + } + /* only enabled events are in memory, so we go now and delete the rest */ + init_read_record(&read_record_info, thd, table, NULL, 1, 0); + while (!(read_record_info.read_record(&read_record_info)) && !ret) + { + char *et_db= get_field(thd->mem_root, + table->field[Events::FIELD_DB]); + + LEX_STRING et_db_lex= {et_db, strlen(et_db)}; + DBUG_PRINT("info", ("Current event %s.%s", et_db, + get_field(thd->mem_root, + table->field[Events::FIELD_NAME]))); + + if (!sortcmp_lex_string(et_db_lex, *db, system_charset_info)) + { + DBUG_PRINT("info", ("Dropping")); + if ((ret= table->file->ha_delete_row(table->record[0]))) + my_error(ER_EVENT_DROP_FAILED, MYF(0), + get_field(thd->mem_root, + table->field[Events::FIELD_NAME])); + } + } + end_read_record(&read_record_info); + thd->version--; /* Force close to free memory */ + + close_thread_tables(thd); + + DBUG_RETURN(ret); +} + + + +/* + Inits the scheduler's structures. + + SYNOPSIS + Events::init() + + NOTES + This function is not synchronized. + + RETURN VALUE + 0 OK + 1 Error +*/ + +int +Events::init() +{ + int ret= 0; + DBUG_ENTER("Events::init"); + + /* it should be an assignment! */ + if (opt_event_scheduler) + { + Event_scheduler *scheduler= Event_scheduler::get_instance(); + DBUG_ASSERT(opt_event_scheduler == 1 || opt_event_scheduler == 2); + DBUG_RETURN(scheduler->init() || + (opt_event_scheduler == 1? scheduler->start(): + scheduler->start_suspended())); + } + DBUG_RETURN(0); +} + + +/* + Cleans up scheduler's resources. Called at server shutdown. + + SYNOPSIS + Events::shutdown() + + NOTES + This function is not synchronized. +*/ + +void +Events::shutdown() +{ + DBUG_ENTER("Events::shutdown"); + Event_scheduler *scheduler= Event_scheduler::get_instance(); + if (scheduler->initialized()) + { + scheduler->stop(); + scheduler->destroy(); + } + + DBUG_VOID_RETURN; +} + + +/* + Proxy for Event_scheduler::dump_internal_status + + SYNOPSIS + Events::dump_internal_status() + thd Thread + + RETURN VALUE + 0 OK + !0 Error +*/ + +int +Events::dump_internal_status(THD *thd) +{ + return Event_scheduler::dump_internal_status(thd); +} + + +/* + Inits Events mutexes + + SYNOPSIS + Events::init_mutexes() + thd Thread +*/ + +void +Events::init_mutexes() +{ + Event_scheduler::init_mutexes(); +} + + +/* + Destroys Events mutexes + + SYNOPSIS + Events::destroy_mutexes() +*/ + +void +Events::destroy_mutexes() +{ + Event_scheduler::destroy_mutexes(); +} diff --git a/sql/events.h b/sql/events.h new file mode 100644 index 00000000000..66cce6e7777 --- /dev/null +++ b/sql/events.h @@ -0,0 +1,97 @@ +#ifndef _EVENT_H_ +#define _EVENT_H_ +/* Copyright (C) 2004-2006 MySQL AB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + + +class Event_timed; + +class Events +{ +public: + static ulong opt_event_scheduler; + static TYPELIB opt_typelib; + + enum enum_table_field + { + FIELD_DB = 0, + FIELD_NAME, + FIELD_BODY, + FIELD_DEFINER, + FIELD_EXECUTE_AT, + FIELD_INTERVAL_EXPR, + FIELD_TRANSIENT_INTERVAL, + FIELD_CREATED, + FIELD_MODIFIED, + FIELD_LAST_EXECUTED, + FIELD_STARTS, + FIELD_ENDS, + FIELD_STATUS, + FIELD_ON_COMPLETION, + FIELD_SQL_MODE, + FIELD_COMMENT, + FIELD_COUNT /* a cool trick to count the number of fields :) */ + }; + + static int + create_event(THD *thd, Event_timed *et, uint create_options, + uint *rows_affected); + + static int + update_event(THD *thd, Event_timed *et, sp_name *new_name, + uint *rows_affected); + + static int + drop_event(THD *thd, Event_timed *et, bool drop_if_exists, + uint *rows_affected); + + static int + open_event_table(THD *thd, enum thr_lock_type lock_type, TABLE **table); + + static int + show_create_event(THD *thd, sp_name *spn); + + static int + reconstruct_interval_expression(String *buf, interval_type interval, + longlong expression); + + static int + drop_schema_events(THD *thd, char *db); + + static int + dump_internal_status(THD *thd); + + static int + init(); + + static void + shutdown(); + + static void + init_mutexes(); + + static void + destroy_mutexes(); + + +private: + /* Prevent use of these */ + Events(const Events &); + void operator=(Events &); +}; + + +#endif /* _EVENT_H_ */ diff --git a/sql/events_priv.h b/sql/events_priv.h new file mode 100644 index 00000000000..ed02cb7055b --- /dev/null +++ b/sql/events_priv.h @@ -0,0 +1,79 @@ +#ifndef _EVENT_PRIV_H_ +#define _EVENT_PRIV_H_ +/* Copyright (C) 2004-2006 MySQL AB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#define EVENT_EXEC_STARTED 0 +#define EVENT_EXEC_ALREADY_EXEC 1 +#define EVENT_EXEC_CANT_FORK 2 + +#define EVEX_DB_FIELD_LEN 64 +#define EVEX_NAME_FIELD_LEN 64 +#define EVEX_MAX_INTERVAL_VALUE 2147483647L + +class Event_timed; + +int +evex_db_find_event_by_name(THD *thd, const LEX_STRING dbname, + const LEX_STRING ev_name, + TABLE *table); + +int +db_drop_event(THD *thd, Event_timed *et, bool drop_if_exists, + uint *rows_affected); +int +db_find_event(THD *thd, sp_name *name, Event_timed **ett, TABLE *tbl, + MEM_ROOT *root); + +int +db_create_event(THD *thd, Event_timed *et, my_bool create_if_not, + uint *rows_affected); + +int +db_drop_events_from_table(THD *thd, LEX_STRING *db); + +int +sortcmp_lex_string(LEX_STRING s, LEX_STRING t, CHARSET_INFO *cs); + +/* Compares only the name part of the identifier */ +bool +event_timed_name_equal(Event_timed *et, LEX_STRING *name); + +/* Compares only the schema part of the identifier */ +bool +event_timed_db_equal(Event_timed *et, LEX_STRING *db); + +/* + Compares only the definer part of the identifier. Use during DROP USER + to drop user's events. (Still not implemented) +*/ +bool +event_timed_definer_equal(Event_timed *et, LEX_STRING *definer); + +/* Compares the whole identifier*/ +bool +event_timed_identifier_equal(Event_timed *a, Event_timed *b); + + +bool +change_security_context(THD *thd, LEX_STRING user, LEX_STRING host, + LEX_STRING db, Security_context *s_ctx, + Security_context **backup); + +void +restore_security_context(THD *thd, Security_context *backup); + +#endif /* _EVENT_PRIV_H_ */ diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 0fd0c5597d1..7ed361d52b7 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -1739,6 +1739,8 @@ bool date_add_interval(TIME *ltime, interval_type int_type, INTERVAL interval); bool calc_time_diff(TIME *l_time1, TIME *l_time2, int l_sign, longlong *seconds_out, long *microseconds_out); +extern LEX_STRING interval_type_to_name[]; + extern DATE_TIME_FORMAT *date_time_format_make(timestamp_type format_type, const char *format_str, uint format_length); @@ -1754,6 +1756,7 @@ void make_date(const DATE_TIME_FORMAT *format, const TIME *l_time, String *str); void make_time(const DATE_TIME_FORMAT *format, const TIME *l_time, String *str); +int my_time_compare(TIME *a, TIME *b); int test_if_number(char *str,int *res,bool allow_wildcards); void change_byte(byte *,uint,char,char); @@ -1770,6 +1773,7 @@ void filesort_free_buffers(TABLE *table); void change_double_for_sort(double nr,byte *to); double my_double_round(double value, int dec, bool truncate); int get_quick_record(SQL_SELECT *select); + int calc_weekday(long daynr,bool sunday_first_day_of_week); uint calc_week(TIME *l_time, uint week_behaviour, uint *year); void find_date(char *pos,uint *vek,uint flag); diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 42787d67351..52aa8560e99 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -24,7 +24,7 @@ #include "stacktrace.h" #include "mysqld_suffix.h" #include "mysys_err.h" -#include "event.h" +#include "events.h" #include "ha_myisam.h" diff --git a/sql/sql_db.cc b/sql/sql_db.cc index 6d5362c2554..273ed3a5115 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -20,7 +20,7 @@ #include "mysql_priv.h" #include #include "sp.h" -#include "event.h" +#include "events.h" #include #include #ifdef __WIN__ diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 3206cfa2d52..491ccece03d 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -26,7 +26,8 @@ #include "sp_head.h" #include "sp.h" #include "sp_cache.h" -#include "event.h" +#include "events.h" +#include "event_timed.h" #ifdef HAVE_OPENSSL /* diff --git a/sql/sql_show.cc b/sql/sql_show.cc index bdf0724ee96..a22c36fffa3 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -26,7 +26,8 @@ #include "sql_trigger.h" #include "authors.h" #include "contributors.h" -#include "event.h" +#include "events.h" +#include "event_timed.h" #include #ifdef WITH_PARTITION_STORAGE_ENGINE diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 82dcc758ff0..b4fe53749cc 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -38,7 +38,7 @@ #include "sp_pcontext.h" #include "sp_rcontext.h" #include "sp.h" -#include "event.h" +#include "event_timed.h" #include #include diff --git a/sql/time.cc b/sql/time.cc index 3c654de23bb..5b12aacf84a 100644 --- a/sql/time.cc +++ b/sql/time.cc @@ -24,6 +24,30 @@ /* Some functions to calculate dates */ #ifndef TESTTIME + +LEX_STRING interval_type_to_name[INTERVAL_LAST] = { + {(char *) STRING_WITH_LEN("YEAR")}, + {(char *) STRING_WITH_LEN("QUARTER")}, + {(char *) STRING_WITH_LEN("MONTH")}, + {(char *) STRING_WITH_LEN("DAY")}, + {(char *) STRING_WITH_LEN("HOUR")}, + {(char *) STRING_WITH_LEN("MINUTE")}, + {(char *) STRING_WITH_LEN("WEEK")}, + {(char *) STRING_WITH_LEN("SECOND")}, + {(char *) STRING_WITH_LEN("MICROSECOND")}, + {(char *) STRING_WITH_LEN("YEAR_MONTH")}, + {(char *) STRING_WITH_LEN("DAY_HOUR")}, + {(char *) STRING_WITH_LEN("DAY_MINUTE")}, + {(char *) STRING_WITH_LEN("DAY_SECOND")}, + {(char *) STRING_WITH_LEN("HOUR_MINUTE")}, + {(char *) STRING_WITH_LEN("HOUR_SECOND")}, + {(char *) STRING_WITH_LEN("MINUTE_SECOND")}, + {(char *) STRING_WITH_LEN("DAY_MICROSECOND")}, + {(char *) STRING_WITH_LEN("HOUR_MICROSECOND")}, + {(char *) STRING_WITH_LEN("MINUTE_MICROSECOND")}, + {(char *) STRING_WITH_LEN("SECOND_MICROSECOND")} +}; + /* Calc weekday from daynr */ /* Returns 0 for monday, 1 for tuesday .... */ @@ -909,4 +933,36 @@ calc_time_diff(TIME *l_time1, TIME *l_time2, int l_sign, longlong *seconds_out, } +/* + Compares 2 TIME structures + + SYNOPSIS + my_time_compare() + + a - first TIME + b - second time + + RETURN VALUE + -1 - a < b + 0 - a == b + 1 - a > b + + NOTES + TIME.second_part is not considered during comparison +*/ + +int +my_time_compare(TIME *a, TIME *b) +{ + my_ulonglong a_t= TIME_to_ulonglong_datetime(a); + my_ulonglong b_t= TIME_to_ulonglong_datetime(b); + + if (a_t > b_t) + return 1; + else if (a_t < b_t) + return -1; + + return 0; +} + #endif -- cgit v1.2.1 From c0f42e720e5b0652df13b9de57ecc8d17dee9da3 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 9 Jun 2006 16:20:23 +0200 Subject: Many files: Merging changesets from crashed 5.1-kt mysql-test/r/information_schema_part.result: Merging changesets from crashed 5.1-kt mysql-test/r/partition.result: Merging changesets from crashed 5.1-kt mysql-test/r/partition_02myisam.result: Merging changesets from crashed 5.1-kt mysql-test/r/partition_mgm_err.result: Merging changesets from crashed 5.1-kt mysql-test/r/partition_range.result: Merging changesets from crashed 5.1-kt mysql-test/r/rpl_row_basic_8partition.result: Merging changesets from crashed 5.1-kt sql/sql_show.cc: Merging changesets from crashed 5.1-kt --- mysql-test/r/information_schema_part.result | 4 +- mysql-test/r/partition.result | 50 ++++++++++++------------ mysql-test/r/partition_02myisam.result | 58 ++++++++++++++-------------- mysql-test/r/partition_mgm_err.result | 2 +- mysql-test/r/partition_range.result | 8 ++-- mysql-test/r/rpl_row_basic_8partition.result | 36 ++++++++--------- sql/sql_show.cc | 2 + 7 files changed, 81 insertions(+), 79 deletions(-) diff --git a/mysql-test/r/information_schema_part.result b/mysql-test/r/information_schema_part.result index ef3ee19656b..2fd241ed4e4 100644 --- a/mysql-test/r/information_schema_part.result +++ b/mysql-test/r/information_schema_part.result @@ -119,7 +119,7 @@ SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (a) SUBPARTITION BY LINEAR HASH (a) (PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) SUBPARTITION BY LINEAR HASH (a) (PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM) */ select SUBPARTITION_METHOD FROM information_schema.partitions WHERE table_schema="test" AND table_name="t1"; SUBPARTITION_METHOD @@ -134,7 +134,7 @@ SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY LIST (a) (PARTITION p0 VALUES IN (10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53) ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION p0 VALUES IN (10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53) ENGINE = MyISAM) */ SELECT PARTITION_DESCRIPTION FROM information_schema.partitions WHERE table_schema = "test" AND table_name = "t1"; PARTITION_DESCRIPTION diff --git a/mysql-test/r/partition.result b/mysql-test/r/partition.result index 6e440c4312c..7551be81c1d 100644 --- a/mysql-test/r/partition.result +++ b/mysql-test/r/partition.result @@ -12,13 +12,13 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (a) SUBPARTITION BY KEY (a) (PARTITION p0 VALUES LESS THAN (1) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (2) ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) SUBPARTITION BY KEY (a) (PARTITION p0 VALUES LESS THAN (1) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (2) ENGINE = MyISAM) */ alter table t1 reorganize partition p1 into (partition p1 values less than (3)); show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (a) SUBPARTITION BY KEY (a) (PARTITION p0 VALUES LESS THAN (1) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (3) ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) SUBPARTITION BY KEY (a) (PARTITION p0 VALUES LESS THAN (1) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (3) ENGINE = MyISAM) */ drop table t1; CREATE TABLE t1 ( a int not null, @@ -36,7 +36,7 @@ t1 CREATE TABLE `t1` ( `b` int(11) NOT NULL, `c` int(11) NOT NULL, PRIMARY KEY (`a`,`b`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY (a) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) */ drop table t1; CREATE TABLE t1 ( a int not null, @@ -206,7 +206,7 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MEMORY DEFAULT CHARSET=latin1 PARTITION BY LIST (a) (PARTITION x1 VALUES IN (1) ENGINE = MEMORY) +) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION x1 VALUES IN (1) ENGINE = MEMORY) */ drop table t1; CREATE TABLE t1 (a int, unique(a)) PARTITION BY LIST (a) @@ -230,7 +230,7 @@ SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (a) PARTITIONS 5 +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) PARTITIONS 5 */ drop table t1; CREATE TABLE t1 (a int) PARTITION BY RANGE (a) @@ -269,7 +269,7 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (a) (PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION p2 VALUES LESS THAN (30) ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION p2 VALUES LESS THAN (30) ENGINE = MyISAM) */ drop table t1; CREATE TABLE t1 (a int, b int) PARTITION BY RANGE (a) @@ -290,7 +290,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (a) (PARTITION x1 VALUES LESS THAN (6) ENGINE = MyISAM, PARTITION x3 VALUES LESS THAN (8) ENGINE = MyISAM, PARTITION x4 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION x5 VALUES LESS THAN (12) ENGINE = MyISAM, PARTITION x6 VALUES LESS THAN (14) ENGINE = MyISAM, PARTITION x7 VALUES LESS THAN (16) ENGINE = MyISAM, PARTITION x8 VALUES LESS THAN (18) ENGINE = MyISAM, PARTITION x9 VALUES LESS THAN (20) ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION x1 VALUES LESS THAN (6) ENGINE = MyISAM, PARTITION x3 VALUES LESS THAN (8) ENGINE = MyISAM, PARTITION x4 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION x5 VALUES LESS THAN (12) ENGINE = MyISAM, PARTITION x6 VALUES LESS THAN (14) ENGINE = MyISAM, PARTITION x7 VALUES LESS THAN (16) ENGINE = MyISAM, PARTITION x8 VALUES LESS THAN (18) ENGINE = MyISAM, PARTITION x9 VALUES LESS THAN (20) ENGINE = MyISAM) */ drop table t1; create table t1 (a int not null, b int not null) partition by LIST (a+b) ( partition p0 values in (12), @@ -344,25 +344,25 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) */ alter table t1; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) */ alter table t1 engine=myisam; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) */ alter table t1 engine=heap; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MEMORY DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) +) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) */ alter table t1 remove partitioning; show create table t1; Table Create Table @@ -379,7 +379,7 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) */ alter table t1 add column b int remove partitioning; show create table t1; Table Create Table @@ -396,7 +396,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) */ alter table t1 engine=heap partition by key(a) @@ -406,7 +406,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL -) ENGINE=MEMORY DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) +) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) */ alter table t1 engine=myisam, add column c int remove partitioning; show create table t1; Table Create Table @@ -425,7 +425,7 @@ t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, `c` int(11) DEFAULT NULL -) ENGINE=MEMORY DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) +) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) */ alter table t1 partition by key (a) (partition p0, partition p1); @@ -435,7 +435,7 @@ t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, `c` int(11) DEFAULT NULL -) ENGINE=MEMORY DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) +) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) */ alter table t1 engine=heap partition by key (a) @@ -446,7 +446,7 @@ t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, `c` int(11) DEFAULT NULL -) ENGINE=MEMORY DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) +) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) */ alter table t1 partition by key(a) (partition p0, partition p1 engine=heap); @@ -591,14 +591,14 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (a) SUBPARTITION BY HASH (a) (PARTITION p0 VALUES LESS THAN (100) ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) SUBPARTITION BY HASH (a) (PARTITION p0 VALUES LESS THAN (100) ENGINE = MyISAM) */ alter table t1 add partition (partition p1 values less than (200) (subpartition subpart21)); show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (a) SUBPARTITION BY HASH (a) (PARTITION p0 VALUES LESS THAN (100) (SUBPARTITION p0sp0 ENGINE = MyISAM), PARTITION p1 VALUES LESS THAN (200) (SUBPARTITION subpart21 ENGINE = MyISAM)) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) SUBPARTITION BY HASH (a) (PARTITION p0 VALUES LESS THAN (100) (SUBPARTITION p0sp0 ENGINE = MyISAM), PARTITION p1 VALUES LESS THAN (200) (SUBPARTITION subpart21 ENGINE = MyISAM)) */ drop table t1; create table t1 (a int) partition by key (a); @@ -606,13 +606,13 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY (a) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) */ alter table t1 add partition (partition p1); show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) */ drop table t1; create table t1 (a int, b int) partition by range (a) @@ -694,7 +694,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY LIST (a) (PARTITION p1 VALUES IN (1) ENGINE = MyISAM, PARTITION p2 VALUES IN (2) ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION p1 VALUES IN (1) ENGINE = MyISAM, PARTITION p2 VALUES IN (2) ENGINE = MyISAM) */ drop table t1; create table t1 (a int unsigned not null auto_increment primary key) partition by key(a); @@ -705,7 +705,7 @@ t2 CREATE TABLE `t2` ( `a` int(10) unsigned NOT NULL AUTO_INCREMENT, `c` char(10) DEFAULT NULL, PRIMARY KEY (`a`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='no comment' PARTITION BY KEY (a) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='no comment' /*!50100 PARTITION BY KEY (a) */ drop table t2; create table t1 (s1 char(2) character set utf8) partition by list (case when s1 > 'cz' then 1 else 2 end) @@ -884,7 +884,7 @@ SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY LIST (a) (PARTITION p0 VALUES IN (NULL) ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION p0 VALUES IN (NULL) ENGINE = MyISAM) */ DROP TABLE t1; CREATE TABLE t1 (a int) PARTITION BY RANGE(a) @@ -923,7 +923,7 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(1) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY (a) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) */ drop table t1; CREATE TABLE t1 (a int) ENGINE = MYISAM PARTITION BY KEY(a); INSERT into t1 values (1), (2); diff --git a/mysql-test/r/partition_02myisam.result b/mysql-test/r/partition_02myisam.result index 147e705f861..29b528f49dc 100644 --- a/mysql-test/r/partition_02myisam.result +++ b/mysql-test/r/partition_02myisam.result @@ -92,7 +92,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (f1) PARTITIONS 2 +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) PARTITIONS 2 */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -147,7 +147,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -205,7 +205,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -260,7 +260,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -313,7 +313,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -371,7 +371,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -429,7 +429,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -489,7 +489,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -547,7 +547,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -603,7 +603,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -661,7 +661,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -721,7 +721,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -782,7 +782,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (f1) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -833,7 +833,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -891,7 +891,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (200) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part3 VALUES LESS THAN (2147483647) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM)) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (200) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part3 VALUES LESS THAN (2147483647) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM)) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -944,7 +944,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (f1) PARTITIONS 2 +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) PARTITIONS 2 */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -996,7 +996,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) SUBPARTITIONS 2 (PARTITION part1 VALUES LESS THAN (100) ENGINE = MyISAM, PARTITION part2 VALUES LESS THAN (2147483647) ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) SUBPARTITIONS 2 (PARTITION part1 VALUES LESS THAN (100) ENGINE = MyISAM, PARTITION part2 VALUES LESS THAN (2147483647) ENGINE = MyISAM) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -1046,7 +1046,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (f1) PARTITIONS 1 +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) PARTITIONS 1 */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -1098,7 +1098,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) SUBPARTITIONS 1 (PARTITION part1 VALUES LESS THAN (100) ENGINE = MyISAM, PARTITION part2 VALUES LESS THAN (2147483647) ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) SUBPARTITIONS 1 (PARTITION part1 VALUES LESS THAN (100) ENGINE = MyISAM, PARTITION part2 VALUES LESS THAN (2147483647) ENGINE = MyISAM) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -1304,7 +1304,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ DROP TABLE t1; CREATE TABLE t1 ( f1 INTEGER, f2 char(20)) PARTITION BY RANGE(f1) PARTITIONS 2 @@ -1319,7 +1319,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (1000) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (1000) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ DROP TABLE t1; # 3.3.2 (positive) number of partition/subpartition , # 0 (= no) named partition/subpartition @@ -1446,7 +1446,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (f1) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) */ INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 100 - 1; ALTER TABLE t1 ADD PARTITION (PARTITION part1); SHOW CREATE TABLE t1; @@ -1454,7 +1454,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (f1) (PARTITION p0 ENGINE = MyISAM, PARTITION part1 ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION p0 ENGINE = MyISAM, PARTITION part1 ENGINE = MyISAM) */ INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 100 AND 200; SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200) AS my_value FROM t1; @@ -1502,7 +1502,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM) */ INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 100 - 1; ALTER TABLE t1 ADD PARTITION (PARTITION part0); SHOW CREATE TABLE t1; @@ -1510,7 +1510,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM, PARTITION part0 ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM, PARTITION part0 ENGINE = MyISAM) */ INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 100 AND 200; SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200) AS my_value FROM t1; @@ -1557,7 +1557,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM, PARTITION part0 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM, PARTITION part0 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 100 AND 200; SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200) AS my_value FROM t1; @@ -1603,7 +1603,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM, PARTITION part0 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM, PARTITION part0 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 100 AND 200; SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200) AS my_value FROM t1; @@ -1651,14 +1651,14 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM) */ INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 100 - 1; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM) */ INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 100 AND 200; SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200) AS my_value FROM t1; diff --git a/mysql-test/r/partition_mgm_err.result b/mysql-test/r/partition_mgm_err.result index f899801e7cd..764f6fb5632 100644 --- a/mysql-test/r/partition_mgm_err.result +++ b/mysql-test/r/partition_mgm_err.result @@ -136,7 +136,7 @@ SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY (a) PARTITIONS 2 +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) PARTITIONS 2 */ DROP TABLE t1; CREATE TABLE t1 (a INT) PARTITION BY HASH(a); ALTER TABLE t1 ADD PARTITION PARTITIONS 4; diff --git a/mysql-test/r/partition_range.result b/mysql-test/r/partition_range.result index c7257db4910..75702c48cc0 100644 --- a/mysql-test/r/partition_range.result +++ b/mysql-test/r/partition_range.result @@ -26,7 +26,7 @@ t1 CREATE TABLE `t1` ( `b` int(11) NOT NULL, `c` int(11) NOT NULL, PRIMARY KEY (`a`,`b`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (a) (PARTITION x1 VALUES LESS THAN (5) TABLESPACE = ts1 ENGINE = MyISAM, PARTITION x2 VALUES LESS THAN (10) TABLESPACE = ts2 ENGINE = MyISAM, PARTITION x3 VALUES LESS THAN MAXVALUE TABLESPACE = ts3 ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION x1 VALUES LESS THAN (5) TABLESPACE = ts1 ENGINE = MyISAM, PARTITION x2 VALUES LESS THAN (10) TABLESPACE = ts2 ENGINE = MyISAM, PARTITION x3 VALUES LESS THAN MAXVALUE TABLESPACE = ts3 ENGINE = MyISAM) */ ALTER TABLE t1 partition by range (a) partitions 3 @@ -46,7 +46,7 @@ t1 CREATE TABLE `t1` ( `b` int(11) NOT NULL, `c` int(11) NOT NULL, PRIMARY KEY (`a`,`b`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (a) (PARTITION x1 VALUES LESS THAN (5) TABLESPACE = ts1 ENGINE = MyISAM, PARTITION x2 VALUES LESS THAN (10) TABLESPACE = ts2 ENGINE = MyISAM, PARTITION x3 VALUES LESS THAN MAXVALUE TABLESPACE = ts3 ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION x1 VALUES LESS THAN (5) TABLESPACE = ts1 ENGINE = MyISAM, PARTITION x2 VALUES LESS THAN (10) TABLESPACE = ts2 ENGINE = MyISAM, PARTITION x3 VALUES LESS THAN MAXVALUE TABLESPACE = ts3 ENGINE = MyISAM) */ drop table if exists t1; CREATE TABLE t1 ( a int not null, @@ -143,7 +143,7 @@ t1 CREATE TABLE `t1` ( `b` int(11) NOT NULL, `c` int(11) NOT NULL, PRIMARY KEY (`a`,`b`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (a) SUBPARTITION BY HASH (a+b) (PARTITION x1 VALUES LESS THAN (1) (SUBPARTITION x11 ENGINE = MyISAM, SUBPARTITION x12 ENGINE = MyISAM), PARTITION x2 VALUES LESS THAN (5) (SUBPARTITION x21 ENGINE = MyISAM, SUBPARTITION x22 ENGINE = MyISAM)) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) SUBPARTITION BY HASH (a+b) (PARTITION x1 VALUES LESS THAN (1) (SUBPARTITION x11 ENGINE = MyISAM, SUBPARTITION x12 ENGINE = MyISAM), PARTITION x2 VALUES LESS THAN (5) (SUBPARTITION x21 ENGINE = MyISAM, SUBPARTITION x22 ENGINE = MyISAM)) */ ALTER TABLE t1 ADD COLUMN d int; show create table t1; Table Create Table @@ -153,7 +153,7 @@ t1 CREATE TABLE `t1` ( `c` int(11) NOT NULL, `d` int(11) DEFAULT NULL, PRIMARY KEY (`a`,`b`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (a) SUBPARTITION BY HASH (a+b) (PARTITION x1 VALUES LESS THAN (1) (SUBPARTITION x11 ENGINE = MyISAM, SUBPARTITION x12 ENGINE = MyISAM), PARTITION x2 VALUES LESS THAN (5) (SUBPARTITION x21 ENGINE = MyISAM, SUBPARTITION x22 ENGINE = MyISAM)) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) SUBPARTITION BY HASH (a+b) (PARTITION x1 VALUES LESS THAN (1) (SUBPARTITION x11 ENGINE = MyISAM, SUBPARTITION x12 ENGINE = MyISAM), PARTITION x2 VALUES LESS THAN (5) (SUBPARTITION x21 ENGINE = MyISAM, SUBPARTITION x22 ENGINE = MyISAM)) */ drop table t1; CREATE TABLE t1 ( a int not null, diff --git a/mysql-test/r/rpl_row_basic_8partition.result b/mysql-test/r/rpl_row_basic_8partition.result index 3316e42b869..a6728303a4c 100644 --- a/mysql-test/r/rpl_row_basic_8partition.result +++ b/mysql-test/r/rpl_row_basic_8partition.result @@ -31,7 +31,7 @@ t1 CREATE TABLE `t1` ( `total` bigint(20) unsigned DEFAULT NULL, `y` year(4) DEFAULT NULL, `t` date DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (YEAR(t)) (PARTITION p0 VALUES LESS THAN (1901) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (1946) ENGINE = MyISAM, PARTITION p2 VALUES LESS THAN (1966) ENGINE = MyISAM, PARTITION p3 VALUES LESS THAN (1986) ENGINE = MyISAM, PARTITION p4 VALUES LESS THAN (2005) ENGINE = MyISAM, PARTITION p5 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (YEAR(t)) (PARTITION p0 VALUES LESS THAN (1901) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (1946) ENGINE = MyISAM, PARTITION p2 VALUES LESS THAN (1966) ENGINE = MyISAM, PARTITION p3 VALUES LESS THAN (1986) ENGINE = MyISAM, PARTITION p4 VALUES LESS THAN (2005) ENGINE = MyISAM, PARTITION p5 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */ --- On slave -- SHOW CREATE TABLE t1; Table Create Table @@ -45,7 +45,7 @@ t1 CREATE TABLE `t1` ( `total` bigint(20) unsigned DEFAULT NULL, `y` year(4) DEFAULT NULL, `t` date DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (YEAR(t)) (PARTITION p0 VALUES LESS THAN (1901) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (1946) ENGINE = MyISAM, PARTITION p2 VALUES LESS THAN (1966) ENGINE = MyISAM, PARTITION p3 VALUES LESS THAN (1986) ENGINE = MyISAM, PARTITION p4 VALUES LESS THAN (2005) ENGINE = MyISAM, PARTITION p5 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (YEAR(t)) (PARTITION p0 VALUES LESS THAN (1901) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (1946) ENGINE = MyISAM, PARTITION p2 VALUES LESS THAN (1966) ENGINE = MyISAM, PARTITION p3 VALUES LESS THAN (1986) ENGINE = MyISAM, PARTITION p4 VALUES LESS THAN (2005) ENGINE = MyISAM, PARTITION p5 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */ "--- Insert into t1 --" as ""; --- Select from t1 on master --- select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; @@ -98,7 +98,7 @@ t1 CREATE TABLE `t1` ( `total` bigint(20) unsigned DEFAULT NULL, `y` year(4) DEFAULT NULL, `t` date DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (YEAR(t)) (PARTITION p0 VALUES LESS THAN (1901) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (1946) ENGINE = MyISAM, PARTITION p2 VALUES LESS THAN (1966) ENGINE = MyISAM, PARTITION p3 VALUES LESS THAN (1986) ENGINE = MyISAM, PARTITION p4 VALUES LESS THAN (2005) ENGINE = MyISAM, PARTITION p5 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (YEAR(t)) (PARTITION p0 VALUES LESS THAN (1901) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (1946) ENGINE = MyISAM, PARTITION p2 VALUES LESS THAN (1966) ENGINE = MyISAM, PARTITION p3 VALUES LESS THAN (1986) ENGINE = MyISAM, PARTITION p4 VALUES LESS THAN (2005) ENGINE = MyISAM, PARTITION p5 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */ --- On slave --- SHOW CREATE TABLE t1; Table Create Table @@ -112,7 +112,7 @@ t1 CREATE TABLE `t1` ( `total` bigint(20) unsigned DEFAULT NULL, `y` year(4) DEFAULT NULL, `t` date DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (YEAR(t)) (PARTITION p0 VALUES LESS THAN (1901) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (1946) ENGINE = MyISAM, PARTITION p2 VALUES LESS THAN (1966) ENGINE = MyISAM, PARTITION p3 VALUES LESS THAN (1986) ENGINE = MyISAM, PARTITION p4 VALUES LESS THAN (2005) ENGINE = MyISAM, PARTITION p5 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (YEAR(t)) (PARTITION p0 VALUES LESS THAN (1901) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (1946) ENGINE = MyISAM, PARTITION p2 VALUES LESS THAN (1966) ENGINE = MyISAM, PARTITION p3 VALUES LESS THAN (1986) ENGINE = MyISAM, PARTITION p4 VALUES LESS THAN (2005) ENGINE = MyISAM, PARTITION p5 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */ "--- Insert into t1 --" as ""; --- Select from t1 on master --- select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; @@ -174,7 +174,7 @@ t1 CREATE TABLE `t1` ( `total` bigint(20) unsigned DEFAULT NULL, `y` year(4) DEFAULT NULL, `t` date DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY LIST (id) (PARTITION p0 VALUES IN (2,4) ENGINE = MyISAM, PARTITION p1 VALUES IN (42,142) ENGINE = MyISAM, PARTITION p2 VALUES IN (412) ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (id) (PARTITION p0 VALUES IN (2,4) ENGINE = MyISAM, PARTITION p1 VALUES IN (42,142) ENGINE = MyISAM, PARTITION p2 VALUES IN (412) ENGINE = MyISAM) */ --- On slave --- SHOW CREATE TABLE t1; Table Create Table @@ -188,7 +188,7 @@ t1 CREATE TABLE `t1` ( `total` bigint(20) unsigned DEFAULT NULL, `y` year(4) DEFAULT NULL, `t` date DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY LIST (id) (PARTITION p0 VALUES IN (2,4) ENGINE = MyISAM, PARTITION p1 VALUES IN (42,142) ENGINE = MyISAM, PARTITION p2 VALUES IN (412) ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (id) (PARTITION p0 VALUES IN (2,4) ENGINE = MyISAM, PARTITION p1 VALUES IN (42,142) ENGINE = MyISAM, PARTITION p2 VALUES IN (412) ENGINE = MyISAM) */ "--- Insert into t1 --" as ""; --- Select from t1 on master --- select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; @@ -241,7 +241,7 @@ t1 CREATE TABLE `t1` ( `total` bigint(20) unsigned DEFAULT NULL, `y` year(4) DEFAULT NULL, `t` date DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY LIST (id) (PARTITION p0 VALUES IN (2,4) ENGINE = MyISAM, PARTITION p1 VALUES IN (42,142) ENGINE = MyISAM, PARTITION p2 VALUES IN (412) ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (id) (PARTITION p0 VALUES IN (2,4) ENGINE = MyISAM, PARTITION p1 VALUES IN (42,142) ENGINE = MyISAM, PARTITION p2 VALUES IN (412) ENGINE = MyISAM) */ --- On slave --- SHOW CREATE TABLE t1; Table Create Table @@ -255,7 +255,7 @@ t1 CREATE TABLE `t1` ( `total` bigint(20) unsigned DEFAULT NULL, `y` year(4) DEFAULT NULL, `t` date DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY LIST (id) (PARTITION p0 VALUES IN (2,4) ENGINE = MyISAM, PARTITION p1 VALUES IN (42,142) ENGINE = MyISAM, PARTITION p2 VALUES IN (412) ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (id) (PARTITION p0 VALUES IN (2,4) ENGINE = MyISAM, PARTITION p1 VALUES IN (42,142) ENGINE = MyISAM, PARTITION p2 VALUES IN (412) ENGINE = MyISAM) */ "--- Insert into t1 --" as ""; --- Select from t1 on master --- select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; @@ -315,7 +315,7 @@ t1 CREATE TABLE `t1` ( `total` bigint(20) unsigned DEFAULT NULL, `y` year(4) DEFAULT NULL, `t` date DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH ( YEAR(t)) PARTITIONS 4 +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH ( YEAR(t)) PARTITIONS 4 */ --- On slave --- SHOW CREATE TABLE t1; Table Create Table @@ -329,7 +329,7 @@ t1 CREATE TABLE `t1` ( `total` bigint(20) unsigned DEFAULT NULL, `y` year(4) DEFAULT NULL, `t` date DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH ( YEAR(t)) PARTITIONS 4 +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH ( YEAR(t)) PARTITIONS 4 */ "--- Insert into t1 --" as ""; --- Select from t1 on master --- select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; @@ -382,7 +382,7 @@ t1 CREATE TABLE `t1` ( `total` bigint(20) unsigned DEFAULT NULL, `y` year(4) DEFAULT NULL, `t` date DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH ( YEAR(t)) PARTITIONS 4 +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH ( YEAR(t)) PARTITIONS 4 */ --- On slave --- SHOW CREATE TABLE t1; Table Create Table @@ -396,7 +396,7 @@ t1 CREATE TABLE `t1` ( `total` bigint(20) unsigned DEFAULT NULL, `y` year(4) DEFAULT NULL, `t` date DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH ( YEAR(t)) PARTITIONS 4 +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH ( YEAR(t)) PARTITIONS 4 */ "--- Insert into t1 --" as ""; --- Select from t1 on master --- select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; @@ -457,7 +457,7 @@ t1 CREATE TABLE `t1` ( `y` year(4) DEFAULT NULL, `t` date DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY () PARTITIONS 4 +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY () PARTITIONS 4 */ --- On slave --- SHOW CREATE TABLE t1; Table Create Table @@ -472,7 +472,7 @@ t1 CREATE TABLE `t1` ( `y` year(4) DEFAULT NULL, `t` date DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY () PARTITIONS 4 +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY () PARTITIONS 4 */ "--- Insert into t1 --" as ""; --- Select from t1 on master --- select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; @@ -526,7 +526,7 @@ t1 CREATE TABLE `t1` ( `y` year(4) DEFAULT NULL, `t` date DEFAULT NULL, PRIMARY KEY (`id`,`total`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY () PARTITIONS 4 +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY () PARTITIONS 4 */ --- On slave --- SHOW CREATE TABLE t1; Table Create Table @@ -541,7 +541,7 @@ t1 CREATE TABLE `t1` ( `y` year(4) DEFAULT NULL, `t` date DEFAULT NULL, PRIMARY KEY (`id`,`total`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY () PARTITIONS 4 +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY () PARTITIONS 4 */ "--- Insert into t1 --" as ""; --- Select from t1 on master --- select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; @@ -595,7 +595,7 @@ t1 CREATE TABLE `t1` ( `y` year(4) DEFAULT NULL, `t` date DEFAULT NULL, PRIMARY KEY (`id`,`total`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY () PARTITIONS 4 +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY () PARTITIONS 4 */ --- On slave --- SHOW CREATE TABLE t1; Table Create Table @@ -610,7 +610,7 @@ t1 CREATE TABLE `t1` ( `y` year(4) DEFAULT NULL, `t` date DEFAULT NULL, PRIMARY KEY (`id`,`total`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY () PARTITIONS 4 +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY () PARTITIONS 4 */ "--- Insert into t1 --" as ""; --- Select from t1 on master --- select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 83f64e2c9c9..28282929b88 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -1337,7 +1337,9 @@ int store_create_info(THD *thd, TABLE_LIST *table_list, String *packet, &part_syntax_len, FALSE)))) { + packet->append(STRING_WITH_LEN(" /*!50100")); packet->append(part_syntax, part_syntax_len); + packet->append(STRING_WITH_LEN(" */")); my_free(part_syntax, MYF(0)); } } -- cgit v1.2.1 From a74154f4de0b4f3765eb06932fb9ec3e79f764e0 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 9 Jun 2006 19:29:39 -0700 Subject: Post-merge fixes --- mysql-test/r/sysdate_is_now.result | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql-test/r/sysdate_is_now.result b/mysql-test/r/sysdate_is_now.result index 82861436ff6..1ebbb8c1588 100644 --- a/mysql-test/r/sysdate_is_now.result +++ b/mysql-test/r/sysdate_is_now.result @@ -1,4 +1,4 @@ set timestamp=1; SELECT sleep(1),NOW()-SYSDATE() as zero; sleep(1) zero -0 0 +0 0.000000 -- cgit v1.2.1 From a182963cc04b7ff0ca27abe33a075ac06e4e0c2e Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 11 Jun 2006 20:46:47 +0200 Subject: ndb - bug#18781 (5.0) handle rolling upgrade, minor fixes, logging, docs ndb/src/kernel/blocks/dbdict/DictLock.txt: NR signals ndb/src/kernel/blocks/dbdict/Dbdict.cpp: call removeStaleDictLocks at right place, comment why it works more checks, better logging ndb/src/kernel/blocks/dbdict/Dbdict.hpp: call removeStaleDictLocks at right place, comment why it works more checks, better logging ndb/include/kernel/signaldata/DictLock.hpp: 2 more REFs ndb/include/ndb_version.h.in: DICT LOCK appeared in 5.0.23 ndb/src/kernel/blocks/dbdih/DbdihMain.cpp: DICT LOCK rolling upgrade from version < 5.0.23 ndb/src/kernel/blocks/ERROR_codes.txt: more DICT LOCK related testing ndb/test/ndbapi/testDict.cpp: more DICT LOCK related testing --- ndb/include/kernel/signaldata/DictLock.hpp | 4 +- ndb/include/ndb_version.h.in | 2 + ndb/src/kernel/blocks/ERROR_codes.txt | 6 +- ndb/src/kernel/blocks/dbdict/Dbdict.cpp | 101 ++++++++++++++++++++++++----- ndb/src/kernel/blocks/dbdict/Dbdict.hpp | 5 +- ndb/src/kernel/blocks/dbdict/DictLock.txt | 94 +++++++++++++++++++++++++++ ndb/src/kernel/blocks/dbdih/DbdihMain.cpp | 46 ++++++++++++- ndb/test/ndbapi/testDict.cpp | 67 ++++++++++++------- 8 files changed, 278 insertions(+), 47 deletions(-) create mode 100644 ndb/src/kernel/blocks/dbdict/DictLock.txt diff --git a/ndb/include/kernel/signaldata/DictLock.hpp b/ndb/include/kernel/signaldata/DictLock.hpp index c8f919f65a8..3e29d762962 100644 --- a/ndb/include/kernel/signaldata/DictLock.hpp +++ b/ndb/include/kernel/signaldata/DictLock.hpp @@ -55,7 +55,9 @@ public: enum ErrorCode { NotMaster = 1, InvalidLockType = 2, - TooManyRequests = 3 + BadUserRef = 3, + TooLate = 4, + TooManyRequests = 5 }; private: Uint32 userPtr; diff --git a/ndb/include/ndb_version.h.in b/ndb/include/ndb_version.h.in index 38b72306d03..7e878803f46 100644 --- a/ndb/include/ndb_version.h.in +++ b/ndb/include/ndb_version.h.in @@ -60,5 +60,7 @@ char ndb_version_string_buf[NDB_VERSION_STRING_BUF_SZ]; #define NDBD_INCL_NODECONF_VERSION_4 MAKE_VERSION(4,1,17) #define NDBD_INCL_NODECONF_VERSION_5 MAKE_VERSION(5,0,18) +#define NDBD_DICT_LOCK_VERSION_5 MAKE_VERSION(5,0,23) + #endif diff --git a/ndb/src/kernel/blocks/ERROR_codes.txt b/ndb/src/kernel/blocks/ERROR_codes.txt index a63c1bef915..ddb99cb6b56 100644 --- a/ndb/src/kernel/blocks/ERROR_codes.txt +++ b/ndb/src/kernel/blocks/ERROR_codes.txt @@ -5,7 +5,7 @@ Next DBACC 3002 Next DBTUP 4013 Next DBLQH 5043 Next DBDICT 6007 -Next DBDIH 7175 +Next DBDIH 7177 Next DBTC 8037 Next CMVMI 9000 Next BACKUP 10022 @@ -312,7 +312,9 @@ Test Crashes in handling node restarts 7170: Crash when receiving START_PERMREF (InitialStartRequired) -7174: Send one fake START_PERMREF (ZNODE_ALREADY_STARTING_ERROR) +7174: Crash starting node before sending DICT_LOCK_REQ +7175: Master sends one fake START_PERMREF (ZNODE_ALREADY_STARTING_ERROR) +7176: Slave NR pretends master does not support DICT lock (rolling upgrade) DICT: 6000 Crash during NR when receiving DICTSTARTREQ diff --git a/ndb/src/kernel/blocks/dbdict/Dbdict.cpp b/ndb/src/kernel/blocks/dbdict/Dbdict.cpp index 73007bd9aad..3cdba251492 100644 --- a/ndb/src/kernel/blocks/dbdict/Dbdict.cpp +++ b/ndb/src/kernel/blocks/dbdict/Dbdict.cpp @@ -205,7 +205,7 @@ void Dbdict::execCONTINUEB(Signal* signal) case ZDICT_LOCK_POLL: jam(); - checkDictLockQueue(signal); + checkDictLockQueue(signal, true); break; default : @@ -2836,7 +2836,6 @@ void Dbdict::execNODE_FAILREP(Signal* signal) case BS_NODE_RESTART: jam(); ok = true; - removeStaleDictLocks(signal, theFailedNodes); break; } ndbrequire(ok); @@ -2860,6 +2859,15 @@ void Dbdict::execNODE_FAILREP(Signal* signal) }//if }//for + /* + * NODE_FAILREP guarantees that no "in flight" signal from + * a dead node is accepted, and also that the job buffer contains + * no such (un-executed) signals. Therefore no DICT_UNLOCK_ORD + * from a dead node (leading to master crash) is possible after + * this clean-up removes the lock record. + */ + removeStaleDictLocks(signal, theFailedNodes); + }//execNODE_FAILREP() @@ -12210,7 +12218,7 @@ Dbdict::getIndexAttrMask(TableRecordPtr indexPtr, AttributeMask& mask) const Dbdict::DictLockType* Dbdict::getDictLockType(Uint32 lockType) { - static DictLockType lt[] = { + static const DictLockType lt[] = { { DictLockReq::NodeRestartLock, BS_NODE_RESTART, "NodeRestart" } }; for (int i = 0; i < sizeof(lt)/sizeof(lt[0]); i++) { @@ -12220,12 +12228,40 @@ Dbdict::getDictLockType(Uint32 lockType) return NULL; } +void +Dbdict::sendDictLockInfoEvent(Uint32 pollCount) +{ + DictLockPtr loopPtr; + c_dictLockQueue.first(loopPtr); + unsigned count = 0; + + char queue_buf[100]; + char *p = &queue_buf[0]; + const char *const q = &queue_buf[sizeof(queue_buf)]; + *p = 0; + + while (loopPtr.i != RNIL) { + jam(); + my_snprintf(p, q-p, "%s%u%s", + ++count == 1 ? "" : " ", + (unsigned)refToNode(loopPtr.p->req.userRef), + loopPtr.p->locked ? "L" : ""); + p += strlen(p); + c_dictLockQueue.next(loopPtr); + } + + infoEvent("DICT: lock bs: %d ops: %d poll: %d cnt: %d queue: %s", + (int)c_blockState, + c_opRecordPool.getSize() - c_opRecordPool.getNoOfFree(), + c_dictLockPoll, (int)pollCount, queue_buf); +} + void Dbdict::sendDictLockInfoEvent(DictLockPtr lockPtr, const char* text) { infoEvent("DICT: %s %u for %s", text, - (unsigned int)refToNode(lockPtr.p->req.userRef), lockPtr.p->lt->text); + (unsigned)refToNode(lockPtr.p->req.userRef), lockPtr.p->lt->text); } void @@ -12234,6 +12270,8 @@ Dbdict::execDICT_LOCK_REQ(Signal* signal) jamEntry(); const DictLockReq* req = (const DictLockReq*)&signal->theData[0]; + // make sure bad request crashes slave, not master (us) + if (getOwnNodeId() != c_masterNodeId) { jam(); sendDictLockRef(signal, *req, DictLockRef::NotMaster); @@ -12247,6 +12285,19 @@ Dbdict::execDICT_LOCK_REQ(Signal* signal) return; } + if (req->userRef != signal->getSendersBlockRef() || + getNodeInfo(refToNode(req->userRef)).m_type != NodeInfo::DB) { + jam(); + sendDictLockRef(signal, *req, DictLockRef::BadUserRef); + return; + } + + if (c_aliveNodes.get(refToNode(req->userRef))) { + jam(); + sendDictLockRef(signal, *req, DictLockRef::TooLate); + return; + } + DictLockPtr lockPtr; if (! c_dictLockQueue.seize(lockPtr)) { jam(); @@ -12258,21 +12309,23 @@ Dbdict::execDICT_LOCK_REQ(Signal* signal) lockPtr.p->locked = false; lockPtr.p->lt = lt; - checkDictLockQueue(signal); + checkDictLockQueue(signal, false); if (! lockPtr.p->locked) sendDictLockInfoEvent(lockPtr, "lock request by node"); } void -Dbdict::checkDictLockQueue(Signal* signal) +Dbdict::checkDictLockQueue(Signal* signal, bool poll) { + Uint32 pollCount = ! poll ? 0 : signal->theData[1]; + DictLockPtr lockPtr; do { if (! c_dictLockQueue.first(lockPtr)) { jam(); - setDictLockPoll(signal, false); + setDictLockPoll(signal, false, pollCount); return; } @@ -12299,7 +12352,7 @@ Dbdict::checkDictLockQueue(Signal* signal) // this routine is called again when it is removed for any reason bool on = ! lockPtr.p->locked; - setDictLockPoll(signal, on); + setDictLockPoll(signal, on, pollCount); } void @@ -12326,7 +12379,7 @@ Dbdict::execDICT_UNLOCK_ORD(Signal* signal) c_dictLockQueue.release(lockPtr); - checkDictLockQueue(signal); + checkDictLockQueue(signal, false); } void @@ -12359,21 +12412,32 @@ Dbdict::sendDictLockRef(Signal* signal, DictLockReq req, Uint32 errorCode) // control polling void -Dbdict::setDictLockPoll(Signal* signal, bool on) +Dbdict::setDictLockPoll(Signal* signal, bool on, Uint32 pollCount) { if (on) { jam(); signal->theData[0] = ZDICT_LOCK_POLL; - sendSignalWithDelay(reference(), GSN_CONTINUEB, signal, 100, 1); + signal->theData[1] = pollCount + 1; + sendSignalWithDelay(reference(), GSN_CONTINUEB, signal, 100, 2); } - if (c_dictLockPoll != on) { + bool change = (c_dictLockPoll != on); + + if (change) { jam(); -#ifdef VM_TRACE - infoEvent("DICT: lock polling %s", on ? "On" : "Off"); -#endif c_dictLockPoll = on; } + + // avoid too many messages if master is stuck busy (BS_NODE_FAILURE) + bool periodic = + pollCount < 8 || + pollCount < 64 && pollCount % 8 == 0 || + pollCount < 512 && pollCount % 64 == 0 || + pollCount < 4096 && pollCount % 512 == 0 || + pollCount % 4096 == 0; // about every 6 minutes + + if (change || periodic) + sendDictLockInfoEvent(pollCount); } // NF handling @@ -12384,6 +12448,11 @@ Dbdict::removeStaleDictLocks(Signal* signal, const Uint32* theFailedNodes) DictLockPtr loopPtr; c_dictLockQueue.first(loopPtr); + if (getOwnNodeId() != c_masterNodeId) { + ndbrequire(loopPtr.i == RNIL); + return; + } + while (loopPtr.i != RNIL) { jam(); DictLockPtr lockPtr = loopPtr; @@ -12409,7 +12478,7 @@ Dbdict::removeStaleDictLocks(Signal* signal, const Uint32* theFailedNodes) } } - checkDictLockQueue(signal); + checkDictLockQueue(signal, false); } diff --git a/ndb/src/kernel/blocks/dbdict/Dbdict.hpp b/ndb/src/kernel/blocks/dbdict/Dbdict.hpp index fbad67d8822..9c0bf65b69c 100644 --- a/ndb/src/kernel/blocks/dbdict/Dbdict.hpp +++ b/ndb/src/kernel/blocks/dbdict/Dbdict.hpp @@ -1804,14 +1804,15 @@ private: bool c_dictLockPoll; static const DictLockType* getDictLockType(Uint32 lockType); + void sendDictLockInfoEvent(Uint32 pollCount); void sendDictLockInfoEvent(DictLockPtr lockPtr, const char* text); - void checkDictLockQueue(Signal* signal); + void checkDictLockQueue(Signal* signal, bool poll); void sendDictLockConf(Signal* signal, DictLockPtr lockPtr); void sendDictLockRef(Signal* signal, DictLockReq req, Uint32 errorCode); // control polling i.e. continueB loop - void setDictLockPoll(Signal* signal, bool on); + void setDictLockPoll(Signal* signal, bool on, Uint32 pollCount); // NF handling void removeStaleDictLocks(Signal* signal, const Uint32* theFailedNodes); diff --git a/ndb/src/kernel/blocks/dbdict/DictLock.txt b/ndb/src/kernel/blocks/dbdict/DictLock.txt new file mode 100644 index 00000000000..17f24119e9d --- /dev/null +++ b/ndb/src/kernel/blocks/dbdict/DictLock.txt @@ -0,0 +1,94 @@ +Lock master DICT against schema operations + +Implementation +-------------- + +[ see comments in Dbdict.hpp ] + +Use case: Node startup INR / NR +------------------------------- + +Master DICT (like any block) keeps list of alive nodes (c_aliveNodes). +These are participants in schema ops. + +(1) c_aliveNodes is initialized when DICT starts + in sp3 in READ_NODESCONF from CNTR + +(2) when slave node fails (in any sp of the slave node) + it is removed from c_aliveNodes in NODE_FAILREP + +(3) when slave starts, it is added to c_aliveNodes + in sp4 of the starting node in INCL_NODEREQ + +Slave DIH locks master DICT in sp2 and releases the lock when started. +Based on the constraints: + +- the lock is taken when master DICT is known + DIH reads this in sp2 in READ_NODESCONF + +- the lock is taken before (3) + +- the lock is taken before copying starts and held until it is done + in sp4 DIH meta, DICT meta, tuple data + +- on INR in sp2 in START_PERMREQ the LCP info of the slave is erased + in all DIH in invalidateNodeLCP() - not safe under schema ops + +Signals: + +All but DICT_LOCK are standard v5.0 signals. +s=starting node, m=master, a=all participants, l=local block. + +* sp2 - DICT_LOCK and START_PERM + +DIH/s + DICT_LOCK_REQ + DICT/m + DICT_LOCK_CONF +DIH/s + START_PERMREQ + DIH/m + START_INFOREQ + DIH/a + invalidateNodeLCP() if INR + DIH/a + START_INFOCONF + DIH/m + START_PERMCONF +DIH/s + +* sp4 - START_ME (copy metadata, no changes) + +DIH/s + START_MEREQ + DIH/m + COPY_TABREQ + DIH/s + COPY_TABCONF + DIH/m + DICTSTARTREQ + DICT/s + GET_SCHEMA_INFOREQ + DICT/m + SCHEMA_INFO + DICT/s + DICTSTARTCONF + DIH/m + INCL_NODEREQ + DIH/a + INCL_NODEREQ + ANY/l + INCL_NODECONF + DIH/a + INCL_NODECONF + DIH/m + START_MECONF +DIH/s + +* sp7 - release DICT lock + +DIH/s + DICT_UNLOCK_ORD + DICT/m + +# vim: set et sw=4: diff --git a/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp b/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp index c37461a1f65..352053bef10 100644 --- a/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp +++ b/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp @@ -1594,6 +1594,9 @@ void Dbdih::nodeRestartPh2Lab(Signal* signal) */ ndbrequire(c_dictLockSlavePtrI_nodeRestart == RNIL); + // check that we are not yet taking part in schema ops + CRASH_INSERTION(7174); + Uint32 lockType = DictLockReq::NodeRestartLock; Callback c = { safe_cast(&Dbdih::recvDictLockConf_nodeRestart), 0 }; sendDictLockReq(signal, lockType, c); @@ -1746,7 +1749,7 @@ void Dbdih::execSTART_PERMREQ(Signal* signal) ndbrequire(refToNode(retRef) == nodeId); if ((c_nodeStartMaster.activeState) || (c_nodeStartMaster.wait != ZFALSE) || - ERROR_INSERTED_CLEAR(7174)) { + ERROR_INSERTED_CLEAR(7175)) { jam(); signal->theData[0] = nodeId; signal->theData[1] = StartPermRef::ZNODE_ALREADY_STARTING_ERROR; @@ -14709,6 +14712,34 @@ Dbdih::sendDictLockReq(Signal* signal, Uint32 lockType, Callback c) lockPtr.p->locked = false; lockPtr.p->callback = c; + // handle rolling upgrade + { + Uint32 masterVersion = getNodeInfo(cmasterNodeId).m_version; + + unsigned int get_major = getMajor(masterVersion); + unsigned int get_minor = getMinor(masterVersion); + unsigned int get_build = getBuild(masterVersion); + + ndbrequire(get_major == 4 || get_major == 5); + + if (masterVersion < NDBD_DICT_LOCK_VERSION_5 || + ERROR_INSERTED(7176)) { + jam(); + + infoEvent("DIH: detect upgrade: master node %u old version %u.%u.%u", + (unsigned int)cmasterNodeId, get_major, get_minor, get_build); + + DictLockConf* conf = (DictLockConf*)&signal->theData[0]; + conf->userPtr = lockPtr.i; + conf->lockType = lockType; + conf->lockPtr = ZNIL; + + sendSignal(reference(), GSN_DICT_LOCK_CONF, signal, + DictLockConf::SignalLength, JBB); + return; + } + } + BlockReference dictMasterRef = calcDictBlockRef(cmasterNodeId); sendSignal(dictMasterRef, GSN_DICT_LOCK_REQ, signal, DictLockReq::SignalLength, JBB); @@ -14758,6 +14789,19 @@ Dbdih::sendDictUnlockOrd(Signal* signal, Uint32 lockSlavePtrI) c_dictLockSlavePool.release(lockPtr); + // handle rolling upgrade + { + Uint32 masterVersion = getNodeInfo(cmasterNodeId).m_version; + + unsigned int get_major = getMajor(masterVersion); + ndbrequire(get_major == 4 || get_major == 5); + + if (masterVersion < NDBD_DICT_LOCK_VERSION_5 || + ERROR_INSERTED(7176)) { + return; + } + } + BlockReference dictMasterRef = calcDictBlockRef(cmasterNodeId); sendSignal(dictMasterRef, GSN_DICT_UNLOCK_ORD, signal, DictUnlockOrd::SignalLength, JBB); diff --git a/ndb/test/ndbapi/testDict.cpp b/ndb/test/ndbapi/testDict.cpp index 2cfb78f143e..397f41b3d4e 100644 --- a/ndb/test/ndbapi/testDict.cpp +++ b/ndb/test/ndbapi/testDict.cpp @@ -1590,17 +1590,18 @@ recv_dict_ops_run(NDBT_Context* ctx) int runRestarts(NDBT_Context* ctx, NDBT_Step* step) { - static int err_master[] = { // non-crashing - 0, - 7174 // send one fake START_PERMREF + static int errlst_master[] = { // non-crashing + 7175, // send one fake START_PERMREF + 0 }; - static int err_node[] = { - 0, - 7121, // crash on START_PERMCONF - 7130 // crash on START_MECONF + static int errlst_node[] = { + 7174, // crash before sending DICT_LOCK_REQ + 7176, // pretend master does not support DICT lock + 7121, // crash at receive START_PERMCONF + 0 }; - const uint err_master_cnt = sizeof(err_master)/sizeof(err_master[0]); - const uint err_node_cnt = sizeof(err_node)/sizeof(err_node[0]); + const uint errcnt_master = sizeof(errlst_master)/sizeof(errlst_master[0]); + const uint errcnt_node = sizeof(errlst_node)/sizeof(errlst_node[0]); myRandom48Init(NdbTick_CurrentMillisecond()); NdbRestarter restarter; @@ -1632,7 +1633,7 @@ runRestarts(NDBT_Context* ctx, NDBT_Step* step) nodeIdList[nodeIdCnt++] = nodeId; } - if (numnodes >= 4) { + if (numnodes >= 4 && myRandom48(2) == 0) { int rand = myRandom48(numnodes); int nodeId = restarter.getRandomNodeOtherNodeGroup(nodeIdList[0], rand); CHECK(nodeId != -1); @@ -1642,6 +1643,7 @@ runRestarts(NDBT_Context* ctx, NDBT_Step* step) g_info << "1: master=" << masterNodeId << " nodes=" << nodeIdList[0] << "," << nodeIdList[1] << endl; + const uint timeout = 60; //secs for node wait const unsigned maxsleep = 2000; //ms bool NF_ops = ctx->getProperty("Restart_NF_ops"); @@ -1655,9 +1657,8 @@ runRestarts(NDBT_Context* ctx, NDBT_Step* step) NdbSleep_MilliSleep(myRandom48(maxsleep)); { - int i = 0; - while (i < nodeIdCnt) { - int nodeId = nodeIdList[i++]; + for (int i = 0; i < nodeIdCnt; i++) { + int nodeId = nodeIdList[i]; bool nostart = true; bool abort = NF_type == 0 ? myRandom48(2) : (NF_type == 2); @@ -1676,9 +1677,31 @@ runRestarts(NDBT_Context* ctx, NDBT_Step* step) } g_info << "1: wait for nostart" << endl; - CHECK(restarter.waitNodesNoStart(nodeIdList, nodeIdCnt) == 0); + CHECK(restarter.waitNodesNoStart(nodeIdList, nodeIdCnt, timeout) == 0); NdbSleep_MilliSleep(myRandom48(maxsleep)); + int err_master = 0; + int err_node[2] = { 0, 0 }; + + if (NR_error) { + err_master = errlst_master[l % errcnt_master]; + + // limitation: cannot have 2 node restarts and crash_insert + // one node may die for real (NF during startup) + + for (int i = 0; i < nodeIdCnt && nodeIdCnt == 1; i++) { + err_node[i] = errlst_node[l % errcnt_node]; + + // 7176 - no DICT lock protection + + if (err_node[i] == 7176) { + g_info << "1: no dict ops due to error insert " + << err_node[i] << endl; + NR_ops = false; + } + } + } + g_info << "1: " << (NR_ops ? "run" : "pause") << " dict ops" << endl; if (! send_dict_ops_cmd(ctx, NR_ops ? 1 : 2)) break; @@ -1689,23 +1712,17 @@ runRestarts(NDBT_Context* ctx, NDBT_Step* step) if (NR_error) { { - int rand = myRandom48(err_master_cnt); - int err = err_master[rand]; + int err = err_master; if (err != 0) { g_info << "1: insert master error " << err << endl; CHECK(restarter.insertErrorInNode(masterNodeId, err) == 0); } } - // limitation: cannot have 2 node restarts and crash_insert - // one node may die for real (NF during startup) + for (int i = 0; i < nodeIdCnt; i++) { + int nodeId = nodeIdList[i]; - int i = 0; - while (i < nodeIdCnt && nodeIdCnt == 1) { - int nodeId = nodeIdList[i++]; - - int rand = myRandom48(err_node_cnt); - int err = err_node[rand]; + int err = err_node[i]; if (err != 0) { g_info << "1: insert node " << nodeId << " error " << err << endl; CHECK(restarter.insertErrorInNode(nodeId, err) == 0); @@ -1715,7 +1732,7 @@ runRestarts(NDBT_Context* ctx, NDBT_Step* step) NdbSleep_MilliSleep(myRandom48(maxsleep)); g_info << "1: wait cluster started" << endl; - CHECK(restarter.waitClusterStarted() == 0); + CHECK(restarter.waitClusterStarted(timeout) == 0); NdbSleep_MilliSleep(myRandom48(maxsleep)); g_info << "1: restart done" << endl; -- cgit v1.2.1 From d4c560343e2babc122a6aba417db9b52682df0e3 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 12 Jun 2006 13:52:29 +0400 Subject: Making dtype_get_max_size() non-inline to avoid build error in non-debug mode. --- storage/innobase/data/data0type.c | 1 - storage/innobase/include/data0type.h | 1 - 2 files changed, 2 deletions(-) diff --git a/storage/innobase/data/data0type.c b/storage/innobase/data/data0type.c index feac6739101..54dbb7b1a15 100644 --- a/storage/innobase/data/data0type.c +++ b/storage/innobase/data/data0type.c @@ -297,7 +297,6 @@ dtype_print( /*************************************************************************** Returns the maximum size of a data type. Note: types in system tables may be incomplete and return incorrect information. */ -UNIV_INLINE ulint dtype_get_max_size( /*===============*/ diff --git a/storage/innobase/include/data0type.h b/storage/innobase/include/data0type.h index 1c998c8dc56..789b76b1498 100644 --- a/storage/innobase/include/data0type.h +++ b/storage/innobase/include/data0type.h @@ -332,7 +332,6 @@ dtype_get_min_size( /*************************************************************************** Returns the maximum size of a data type. Note: types in system tables may be incomplete and return incorrect information. */ -UNIV_INLINE ulint dtype_get_max_size( /*===============*/ -- cgit v1.2.1 From 1c1570940feccf6ed3249c643f7968be1563f7b6 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 12 Jun 2006 08:54:45 -0400 Subject: Bug #16206: Superfluous COMMIT event in binlog when updating BDB in autocommit mode This is a modification of serg's and guilhem's suggestion in the bug report, in that it also causes the transaction log to be written to disc. mysql-test/r/bdb.result: Add result. mysql-test/t/bdb.test: Add test sql/log.cc: Create a log-committing event that itself won't be written to the log when we're in autocommit mode. sql/log_event.cc: Add a new subclass of Query_log_event that doesn't write itself to the log, for cases where we only want to flush out the transaction and not also write about this event. sql/log_event.h: Add a new subclass of Query_log_event that doesn't write itself to the log, for cases where we only want to flush out the transaction and not also write about this event. --- mysql-test/r/bdb.result | 34 ++++++++++++++++++++++++++++++++++ mysql-test/t/bdb.test | 35 +++++++++++++++++++++++++++++++++++ sql/log.cc | 22 +++++++++++++++++----- sql/log_event.cc | 27 +++++++++++++++++++++++++++ sql/log_event.h | 21 +++++++++++++++++++++ 5 files changed, 134 insertions(+), 5 deletions(-) diff --git a/mysql-test/r/bdb.result b/mysql-test/r/bdb.result index af6319afe99..588644a6c66 100644 --- a/mysql-test/r/bdb.result +++ b/mysql-test/r/bdb.result @@ -1928,4 +1928,38 @@ create table t1 (a int) engine=bdb; commit; alter table t1 add primary key(a); drop table t1; +set autocommit=1; +reset master; +create table bug16206 (a int) engine= blackhole; +insert into bug16206 values(1); +start transaction; +insert into bug16206 values(2); +commit; +show binlog events; +Log_name Pos Event_type Server_id End_log_pos Info +f n Format_desc 1 n Server ver: VERSION, Binlog ver: 4 +f n Query 1 n use `test`; create table bug16206 (a int) engine= blackhole +f n Query 1 n use `test`; insert into bug16206 values(1) +f n Query 1 n use `test`; insert into bug16206 values(2) +drop table bug16206; +reset master; +create table bug16206 (a int) engine= bdb; +insert into bug16206 values(0); +insert into bug16206 values(1); +start transaction; +insert into bug16206 values(2); +commit; +insert into bug16206 values(3); +show binlog events; +Log_name Pos Event_type Server_id End_log_pos Info +f n Format_desc 1 n Server ver: VERSION, Binlog ver: 4 +f n Query 1 n use `test`; create table bug16206 (a int) engine= bdb +f n Query 1 n use `test`; insert into bug16206 values(0) +f n Query 1 n use `test`; insert into bug16206 values(1) +f n Query 1 n use `test`; BEGIN +f n Query 1 n use `test`; insert into bug16206 values(2) +f n Query 1 n use `test`; COMMIT +f n Query 1 n use `test`; insert into bug16206 values(3) +drop table bug16206; +set autocommit=0; End of 5.0 tests diff --git a/mysql-test/t/bdb.test b/mysql-test/t/bdb.test index d017d91bfb1..d2e3ca5f36e 100644 --- a/mysql-test/t/bdb.test +++ b/mysql-test/t/bdb.test @@ -1019,4 +1019,39 @@ commit; alter table t1 add primary key(a); drop table t1; + +# +# Bug #16206: Superfluous COMMIT event in binlog when updating BDB in autocommit mode +# +set autocommit=1; + +let $VERSION=`select version()`; + +reset master; +create table bug16206 (a int) engine= blackhole; +insert into bug16206 values(1); +start transaction; +insert into bug16206 values(2); +commit; +--replace_result $VERSION VERSION +--replace_column 1 f 2 n 5 n +show binlog events; +drop table bug16206; + +reset master; +create table bug16206 (a int) engine= bdb; +insert into bug16206 values(0); +insert into bug16206 values(1); +start transaction; +insert into bug16206 values(2); +commit; +insert into bug16206 values(3); +--replace_result $VERSION VERSION +--replace_column 1 f 2 n 5 n +show binlog events; +drop table bug16206; + +set autocommit=0; + + --echo End of 5.0 tests diff --git a/sql/log.cc b/sql/log.cc index ba02c9ba082..cfb90d398e6 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -36,6 +36,8 @@ MYSQL_LOG mysql_log, mysql_slow_log, mysql_bin_log; ulong sync_binlog_counter= 0; +static Muted_query_log_event invisible_commit; + static bool test_if_number(const char *str, long *res, bool allow_wildcards); static bool binlog_init(); @@ -94,7 +96,9 @@ static int binlog_end_trans(THD *thd, IO_CACHE *trans_log, Log_event *end_ev) { int error=0; DBUG_ENTER("binlog_end_trans"); - if (end_ev) + + /* NULL denotes ROLLBACK with nothing to replicate */ + if (end_ev != NULL) error= mysql_bin_log.write(thd, trans_log, end_ev); statistic_increment(binlog_cache_use, &LOCK_status); @@ -126,14 +130,19 @@ static int binlog_commit(THD *thd, bool all) DBUG_ASSERT(mysql_bin_log.is_open() && (all || !(thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN)))); - if (!my_b_tell(trans_log)) + if (my_b_tell(trans_log) == 0) { // we're here because trans_log was flushed in MYSQL_LOG::log() DBUG_RETURN(0); } - Query_log_event qev(thd, STRING_WITH_LEN("COMMIT"), TRUE, FALSE); - qev.error_code= 0; // see comment in MYSQL_LOG::write(THD, IO_CACHE) - DBUG_RETURN(binlog_end_trans(thd, trans_log, &qev)); + if (all) + { + Query_log_event qev(thd, STRING_WITH_LEN("COMMIT"), TRUE, FALSE); + qev.error_code= 0; // see comment in MYSQL_LOG::write(THD, IO_CACHE) + DBUG_RETURN(binlog_end_trans(thd, trans_log, &qev)); + } + else + DBUG_RETURN(binlog_end_trans(thd, trans_log, &invisible_commit)); } static int binlog_rollback(THD *thd, bool all) @@ -1813,6 +1822,9 @@ bool MYSQL_LOG::write(THD *thd, IO_CACHE *cache, Log_event *commit_event) DBUG_ENTER("MYSQL_LOG::write(THD *, IO_CACHE *, Log_event *)"); VOID(pthread_mutex_lock(&LOCK_log)); + /* NULL would represent nothing to replicate after ROLLBACK */ + DBUG_ASSERT(commit_event != NULL); + if (likely(is_open())) // Should always be true { uint length; diff --git a/sql/log_event.cc b/sql/log_event.cc index 266d6b064bd..cabf4631284 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -1229,6 +1229,18 @@ bool Query_log_event::write(IO_CACHE* file) my_b_safe_write(file, (byte*) query, q_len)) ? 1 : 0; } +/* + Query_log_event::Query_log_event() + + The simplest constructor that could possibly work. This is used for + creating static objects that have a special meaning and are invisible + to the log. +*/ +Query_log_event::Query_log_event() + :Log_event(), data_buf(0) +{ +} + /* Query_log_event::Query_log_event() @@ -1875,6 +1887,21 @@ end: #endif +/************************************************************************** + Muted_query_log_event methods +**************************************************************************/ + +#ifndef MYSQL_CLIENT +/* + Muted_query_log_event::Muted_query_log_event() +*/ +Muted_query_log_event::Muted_query_log_event() + :Query_log_event() +{ +} +#endif + + /************************************************************************** Start_log_event_v3 methods **************************************************************************/ diff --git a/sql/log_event.h b/sql/log_event.h index 0e1eb7cd13c..f1b441dedb1 100644 --- a/sql/log_event.h +++ b/sql/log_event.h @@ -783,6 +783,7 @@ public: void print(FILE* file, PRINT_EVENT_INFO* print_event_info= 0); #endif + Query_log_event(); Query_log_event(const char* buf, uint event_len, const Format_description_log_event *description_event, Log_event_type event_type); @@ -806,6 +807,26 @@ public: /* Writes derived event-specific part of post header. */ }; + +/***************************************************************************** + + Muted Query Log Event class + + Pretends to Log SQL queries, but doesn't actually do so. + + ****************************************************************************/ +class Muted_query_log_event: public Query_log_event +{ +public: +#ifndef MYSQL_CLIENT + Muted_query_log_event(); + + bool write(IO_CACHE* file) { return(false); }; + virtual bool write_post_header_for_derived(IO_CACHE* file) { return FALSE; } +#endif +}; + + #ifdef HAVE_REPLICATION /***************************************************************************** -- cgit v1.2.1 From b10b25fbb59fb10527c207154bbb65270beddb84 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 12 Jun 2006 15:35:47 +0200 Subject: Added order by --- mysql-test/r/ndb_lock.result | 8 ++++---- mysql-test/t/ndb_lock.test | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mysql-test/r/ndb_lock.result b/mysql-test/r/ndb_lock.result index 281b02b8228..875dcd775e6 100644 --- a/mysql-test/r/ndb_lock.result +++ b/mysql-test/r/ndb_lock.result @@ -78,10 +78,10 @@ ERROR HY000: Lock wait timeout exceeded; try restarting transaction rollback; commit; begin; -select * from t1 where y = 'one' or y = 'three' for update; +select * from t1 where y = 'one' or y = 'three' order by x for update; x y z -3 three 3 1 one 1 +3 three 3 begin; select * from t1 where x = 2 for update; x y z @@ -118,10 +118,10 @@ ERROR HY000: Lock wait timeout exceeded; try restarting transaction rollback; commit; begin; -select * from t1 where y = 'one' or y = 'three' lock in share mode; +select * from t1 where y = 'one' or y = 'three' order by x lock in share mode; x y z -3 three 3 1 one 1 +3 three 3 begin; select * from t1 where y = 'one' lock in share mode; x y z diff --git a/mysql-test/t/ndb_lock.test b/mysql-test/t/ndb_lock.test index db42b7ec2dd..e8f7c57ac96 100644 --- a/mysql-test/t/ndb_lock.test +++ b/mysql-test/t/ndb_lock.test @@ -93,7 +93,7 @@ commit; # table scan connection con1; begin; -select * from t1 where y = 'one' or y = 'three' for update; +select * from t1 where y = 'one' or y = 'three' order by x for update; connection con2; begin; @@ -145,7 +145,7 @@ commit; # table scan connection con1; begin; -select * from t1 where y = 'one' or y = 'three' lock in share mode; +select * from t1 where y = 'one' or y = 'three' order by x lock in share mode; connection con2; begin; -- cgit v1.2.1 From 3f19b05bb00366df88d72f9b6507f897f2f9370b Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 12 Jun 2006 15:36:12 +0200 Subject: Added order by --- mysql-test/r/ndb_lock.result | 8 ++++---- mysql-test/t/ndb_lock.test | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mysql-test/r/ndb_lock.result b/mysql-test/r/ndb_lock.result index 92a73830662..3b433023843 100644 --- a/mysql-test/r/ndb_lock.result +++ b/mysql-test/r/ndb_lock.result @@ -78,10 +78,10 @@ ERROR HY000: Lock wait timeout exceeded; try restarting transaction rollback; commit; begin; -select * from t1 where y = 'one' or y = 'three' for update; +select * from t1 where y = 'one' or y = 'three' order by x for update; x y z -3 three 3 1 one 1 +3 three 3 begin; select * from t1 where x = 1 for update; ERROR HY000: Lock wait timeout exceeded; try restarting transaction @@ -115,10 +115,10 @@ ERROR HY000: Lock wait timeout exceeded; try restarting transaction rollback; commit; begin; -select * from t1 where y = 'one' or y = 'three' lock in share mode; +select * from t1 where y = 'one' or y = 'three' order by x lock in share mode; x y z -3 three 3 1 one 1 +3 three 3 begin; select * from t1 where y = 'one' lock in share mode; x y z diff --git a/mysql-test/t/ndb_lock.test b/mysql-test/t/ndb_lock.test index 6d3257aeb68..54214ee72ec 100644 --- a/mysql-test/t/ndb_lock.test +++ b/mysql-test/t/ndb_lock.test @@ -93,7 +93,7 @@ commit; # table scan connection con1; begin; -select * from t1 where y = 'one' or y = 'three' for update; +select * from t1 where y = 'one' or y = 'three' order by x for update; connection con2; begin; @@ -146,7 +146,7 @@ commit; # table scan connection con1; begin; -select * from t1 where y = 'one' or y = 'three' lock in share mode; +select * from t1 where y = 'one' or y = 'three' order by x lock in share mode; connection con2; begin; -- cgit v1.2.1 From 01e8913e7751a04fa7045974147e6fec5f7c150d Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 12 Jun 2006 06:50:11 -0700 Subject: Bug#20168 "Change in behavior --default-storage-engine=ndb or ndbcluster" Reduce use of legacy_db_type, some code cleanup (serg read my mind and implemented desired mysqld.cc changes) sql/handler.cc: Bug#20168 remove some use of legacy_db_type cleanup code, new func for default type sql/handler.h: Bug#20168 remove some use of legacy_db_type cleanup code, new func for default type sql/sql_plugin.cc: compiler hints, consts sql/sql_plugin.h: compiler hints, consts sql/sql_tablespace.cc: use ha_default_handlerton instead of resolving DB_TYPE_DEFAULT --- sql/handler.cc | 86 +++++++++++++++++++++++++++++++++++---------------- sql/handler.h | 7 ++--- sql/sql_plugin.cc | 22 ++++++------- sql/sql_plugin.h | 10 +++--- sql/sql_tablespace.cc | 2 +- 5 files changed, 79 insertions(+), 48 deletions(-) diff --git a/sql/handler.cc b/sql/handler.cc index 81c42f9da15..47bcf1caba1 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -68,14 +68,14 @@ ulong total_ha_2pc= 0; /* size of savepoint storage area (see ha_init) */ ulong savepoint_alloc_size= 0; -struct show_table_alias_st sys_table_aliases[]= -{ - {"INNOBASE", DB_TYPE_INNODB}, - {"NDB", DB_TYPE_NDBCLUSTER}, - {"BDB", DB_TYPE_BERKELEY_DB}, - {"HEAP", DB_TYPE_HEAP}, - {"MERGE", DB_TYPE_MRG_MYISAM}, - {NullS, DB_TYPE_UNKNOWN} +static const LEX_STRING sys_table_aliases[]= +{ + {(char*)STRING_WITH_LEN("INNOBASE")}, {(char*)STRING_WITH_LEN("INNODB")}, + {(char*)STRING_WITH_LEN("NDB")}, {(char*)STRING_WITH_LEN("NDBCLUSTER")}, + {(char*)STRING_WITH_LEN("BDB")}, {(char*)STRING_WITH_LEN("BERKELEYDB")}, + {(char*)STRING_WITH_LEN("HEAP")}, {(char*)STRING_WITH_LEN("MEMORY")}, + {(char*)STRING_WITH_LEN("MERGE")}, {(char*)STRING_WITH_LEN("MRG_MYISAM")}, + {NullS, 0} }; const char *ha_row_type[] = { @@ -91,15 +91,50 @@ TYPELIB tx_isolation_typelib= {array_elements(tx_isolation_names)-1,"", static TYPELIB known_extensions= {0,"known_exts", NULL, NULL}; uint known_extensions_id= 0; -handlerton *ha_resolve_by_name(THD *thd, LEX_STRING *name) + +/* + Return the default storage engine handlerton for thread + + SYNOPSIS + ha_default_handlerton(thd) + thd current thread + + RETURN + pointer to handlerton +*/ + +handlerton *ha_default_handlerton(THD *thd) +{ + return (thd->variables.table_type != NULL) ? + thd->variables.table_type : + (global_system_variables.table_type != NULL ? + global_system_variables.table_type : &myisam_hton); +} + + +/* + Return the storage engine handlerton for the supplied name + + SYNOPSIS + ha_resolve_by_name(thd, name) + thd current thread + name name of storage engine + + RETURN + pointer to handlerton +*/ + +handlerton *ha_resolve_by_name(THD *thd, const LEX_STRING *name) { - show_table_alias_st *table_alias; + const LEX_STRING *table_alias; st_plugin_int *plugin; - if (thd && !my_strnncoll(&my_charset_latin1, +redo: + /* my_strnncoll is a macro and gcc doesn't do early expansion of macro */ + if (thd && !my_charset_latin1.coll->strnncoll(&my_charset_latin1, (const uchar *)name->str, name->length, - (const uchar *)"DEFAULT", 7)) - return ha_resolve_by_legacy_type(thd, DB_TYPE_DEFAULT); + (const uchar *)STRING_WITH_LEN("DEFAULT"), 0)) + return ha_default_handlerton(thd); if ((plugin= plugin_lock(name, MYSQL_STORAGE_ENGINE_PLUGIN))) { @@ -112,13 +147,15 @@ handlerton *ha_resolve_by_name(THD *thd, LEX_STRING *name) /* We check for the historical aliases. */ - for (table_alias= sys_table_aliases; table_alias->type; table_alias++) + for (table_alias= sys_table_aliases; table_alias->str; table_alias+= 2) { if (!my_strnncoll(&my_charset_latin1, (const uchar *)name->str, name->length, - (const uchar *)table_alias->alias, - strlen(table_alias->alias))) - return ha_resolve_by_legacy_type(thd, table_alias->type); + (const uchar *)table_alias->str, table_alias->length)) + { + name= table_alias + 1; + goto redo; + } } return NULL; @@ -130,20 +167,20 @@ const char *ha_get_storage_engine(enum legacy_db_type db_type) switch (db_type) { case DB_TYPE_DEFAULT: return "DEFAULT"; - case DB_TYPE_UNKNOWN: - return "UNKNOWN"; default: if (db_type > DB_TYPE_UNKNOWN && db_type < DB_TYPE_DEFAULT && installed_htons[db_type]) return hton2plugin[installed_htons[db_type]->slot]->name.str; - return "*NONE*"; + /* fall through */ + case DB_TYPE_UNKNOWN: + return "UNKNOWN"; } } static handler *create_default(TABLE_SHARE *table, MEM_ROOT *mem_root) { - handlerton *hton=ha_resolve_by_legacy_type(current_thd, DB_TYPE_DEFAULT); + handlerton *hton= ha_default_handlerton(current_thd); return (hton && hton->create) ? hton->create(table, mem_root) : NULL; } @@ -152,10 +189,7 @@ handlerton *ha_resolve_by_legacy_type(THD *thd, enum legacy_db_type db_type) { switch (db_type) { case DB_TYPE_DEFAULT: - return (thd->variables.table_type != NULL) ? - thd->variables.table_type : - (global_system_variables.table_type != NULL ? - global_system_variables.table_type : &myisam_hton); + return ha_default_handlerton(thd); case DB_TYPE_UNKNOWN: return NULL; default: @@ -196,7 +230,7 @@ handlerton *ha_checktype(THD *thd, enum legacy_db_type database_type, break; } - return ha_resolve_by_legacy_type(thd, DB_TYPE_DEFAULT); + return ha_default_handlerton(thd); } /* ha_checktype */ diff --git a/sql/handler.h b/sql/handler.h index f459d52fdeb..52843b78266 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -667,10 +667,6 @@ struct handlerton struct handler_iterator *fill_this_in); }; -struct show_table_alias_st { - const char *alias; - enum legacy_db_type type; -}; /* Possible flags of a handlerton */ #define HTON_NO_FLAGS 0 @@ -1545,7 +1541,8 @@ extern ulong total_ha, total_ha_2pc; #define ha_rollback(thd) (ha_rollback_trans((thd), TRUE)) /* lookups */ -handlerton *ha_resolve_by_name(THD *thd, LEX_STRING *name); +handlerton *ha_default_handlerton(THD *thd); +handlerton *ha_resolve_by_name(THD *thd, const LEX_STRING *name); handlerton *ha_resolve_by_legacy_type(THD *thd, enum legacy_db_type db_type); const char *ha_get_storage_engine(enum legacy_db_type db_type); handler *get_new_handler(TABLE_SHARE *share, MEM_ROOT *alloc, diff --git a/sql/sql_plugin.cc b/sql/sql_plugin.cc index c15b484f448..f7205470abd 100644 --- a/sql/sql_plugin.cc +++ b/sql/sql_plugin.cc @@ -23,7 +23,7 @@ extern struct st_mysql_plugin *mysqld_builtins[]; char *opt_plugin_dir_ptr; char opt_plugin_dir[FN_REFLEN]; -LEX_STRING plugin_type_names[MYSQL_MAX_PLUGIN_TYPE_NUM]= +const LEX_STRING plugin_type_names[MYSQL_MAX_PLUGIN_TYPE_NUM]= { { (char *)STRING_WITH_LEN("UDF") }, { (char *)STRING_WITH_LEN("STORAGE ENGINE") }, @@ -63,7 +63,7 @@ static HASH plugin_hash[MYSQL_MAX_PLUGIN_TYPE_NUM]; static rw_lock_t THR_LOCK_plugin; static bool initialized= 0; -static struct st_plugin_dl *plugin_dl_find(LEX_STRING *dl) +static struct st_plugin_dl *plugin_dl_find(const LEX_STRING *dl) { uint i; DBUG_ENTER("plugin_dl_find"); @@ -112,7 +112,7 @@ static inline void free_plugin_mem(struct st_plugin_dl *p) my_free((gptr)p->plugins, MYF(MY_ALLOW_ZERO_PTR)); } -static st_plugin_dl *plugin_dl_add(LEX_STRING *dl, int report) +static st_plugin_dl *plugin_dl_add(const LEX_STRING *dl, int report) { #ifdef HAVE_DLOPEN char dlpath[FN_REFLEN]; @@ -294,7 +294,7 @@ static st_plugin_dl *plugin_dl_add(LEX_STRING *dl, int report) } -static void plugin_dl_del(LEX_STRING *dl) +static void plugin_dl_del(const LEX_STRING *dl) { #ifdef HAVE_DLOPEN uint i; @@ -322,7 +322,7 @@ static void plugin_dl_del(LEX_STRING *dl) } -static struct st_plugin_int *plugin_find_internal(LEX_STRING *name, int type) +static struct st_plugin_int *plugin_find_internal(const LEX_STRING *name, int type) { uint i; DBUG_ENTER("plugin_find_internal"); @@ -345,7 +345,7 @@ static struct st_plugin_int *plugin_find_internal(LEX_STRING *name, int type) } -my_bool plugin_is_ready(LEX_STRING *name, int type) +my_bool plugin_is_ready(const LEX_STRING *name, int type) { my_bool rc= FALSE; struct st_plugin_int *plugin; @@ -359,7 +359,7 @@ my_bool plugin_is_ready(LEX_STRING *name, int type) } -struct st_plugin_int *plugin_lock(LEX_STRING *name, int type) +struct st_plugin_int *plugin_lock(const LEX_STRING *name, int type) { struct st_plugin_int *rc; DBUG_ENTER("plugin_lock"); @@ -396,7 +396,7 @@ static st_plugin_int *plugin_insert_or_reuse(struct st_plugin_int *plugin) struct st_plugin_int *)); } -static my_bool plugin_add(LEX_STRING *name, LEX_STRING *dl, int report) +static my_bool plugin_add(const LEX_STRING *name, const LEX_STRING *dl, int report) { struct st_plugin_int tmp; struct st_mysql_plugin *plugin; @@ -479,7 +479,7 @@ err: } -static void plugin_del(LEX_STRING *name) +static void plugin_del(const LEX_STRING *name) { uint i; struct st_plugin_int *plugin; @@ -811,7 +811,7 @@ void plugin_free(void) } -my_bool mysql_install_plugin(THD *thd, LEX_STRING *name, LEX_STRING *dl) +my_bool mysql_install_plugin(THD *thd, const LEX_STRING *name, const LEX_STRING *dl) { TABLE_LIST tables; TABLE *table; @@ -866,7 +866,7 @@ err: } -my_bool mysql_uninstall_plugin(THD *thd, LEX_STRING *name) +my_bool mysql_uninstall_plugin(THD *thd, const LEX_STRING *name) { TABLE *table; TABLE_LIST tables; diff --git a/sql/sql_plugin.h b/sql/sql_plugin.h index b013beaba1f..df7c9a39495 100644 --- a/sql/sql_plugin.h +++ b/sql/sql_plugin.h @@ -66,15 +66,15 @@ typedef int (*plugin_type_init)(struct st_plugin_int *); extern char *opt_plugin_dir_ptr; extern char opt_plugin_dir[FN_REFLEN]; -extern LEX_STRING plugin_type_names[]; +extern const LEX_STRING plugin_type_names[]; extern int plugin_init(void); extern void plugin_load(void); extern void plugin_free(void); -extern my_bool plugin_is_ready(LEX_STRING *name, int type); -extern st_plugin_int *plugin_lock(LEX_STRING *name, int type); +extern my_bool plugin_is_ready(const LEX_STRING *name, int type); +extern st_plugin_int *plugin_lock(const LEX_STRING *name, int type); extern void plugin_unlock(struct st_plugin_int *plugin); -extern my_bool mysql_install_plugin(THD *thd, LEX_STRING *name, LEX_STRING *dl); -extern my_bool mysql_uninstall_plugin(THD *thd, LEX_STRING *name); +extern my_bool mysql_install_plugin(THD *thd, const LEX_STRING *name, const LEX_STRING *dl); +extern my_bool mysql_uninstall_plugin(THD *thd, const LEX_STRING *name); extern my_bool plugin_register_builtin(struct st_mysql_plugin *plugin); diff --git a/sql/sql_tablespace.cc b/sql/sql_tablespace.cc index 94318a67575..13dfb491af4 100644 --- a/sql/sql_tablespace.cc +++ b/sql/sql_tablespace.cc @@ -30,7 +30,7 @@ int mysql_alter_tablespace(THD *thd, st_alter_tablespace *ts_info) */ if (hton == NULL || hton->state != SHOW_OPTION_YES) { - hton= ha_resolve_by_legacy_type(thd, DB_TYPE_DEFAULT); + hton= ha_default_handlerton(thd); if (ts_info->storage_engine != 0) push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_ERROR, ER_WARN_USING_OTHER_HANDLER, -- cgit v1.2.1 From e7daa497613cdd1845ec6b05d7cf3f9efaa2662c Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 12 Jun 2006 18:15:08 +0300 Subject: Bug #20363: Create view on just created view is now denied There was a wrong determination of the DB name (witch is not always the one in TABLE_LIST because derived tables may be calculated using temp tables that have their db name set to ""). The fix determines the database name according to the type of table reference, and calls the function check_access() with the correct db name so the correct set of grants is found. mysql-test/r/view_grant.result: testsuite for the bug mysql-test/t/view_grant.test: testsuite for the bug sql/sql_parse.cc: correct determination of the db name. --- mysql-test/r/view_grant.result | 29 +++++++++++++++++++++++++++++ mysql-test/t/view_grant.test | 39 +++++++++++++++++++++++++++++++++++++++ sql/sql_parse.cc | 9 ++++++++- 3 files changed, 76 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/view_grant.result b/mysql-test/r/view_grant.result index f6559e6f838..a8619201810 100644 --- a/mysql-test/r/view_grant.result +++ b/mysql-test/r/view_grant.result @@ -618,3 +618,32 @@ ERROR HY000: There is no 'no-such-user'@'localhost' registered DROP VIEW v; DROP TABLE t1; USE test; +CREATE USER mysqltest_db1@localhost identified by 'PWD'; +GRANT ALL ON mysqltest_db1.* TO mysqltest_db1@localhost WITH GRANT OPTION; +CREATE SCHEMA mysqltest_db1 ; +USE mysqltest_db1 ; +CREATE TABLE t1 (f1 INTEGER); +CREATE VIEW view1 AS +SELECT * FROM t1; +SHOW CREATE VIEW view1; +View Create View +view1 CREATE ALGORITHM=UNDEFINED DEFINER=`mysqltest_db1`@`localhost` SQL SECURITY DEFINER VIEW `view1` AS select `t1`.`f1` AS `f1` from `t1` +CREATE VIEW view2 AS +SELECT * FROM view1; +# Here comes a suspicious warning +SHOW CREATE VIEW view2; +View Create View +view2 CREATE ALGORITHM=UNDEFINED DEFINER=`mysqltest_db1`@`localhost` SQL SECURITY DEFINER VIEW `view2` AS select `view1`.`f1` AS `f1` from `view1` +# But the view view2 is usable +SELECT * FROM view2; +f1 +CREATE VIEW view3 AS +SELECT * FROM view2; +SELECT * from view3; +f1 +DROP VIEW mysqltest_db1.view3; +DROP VIEW mysqltest_db1.view2; +DROP VIEW mysqltest_db1.view1; +DROP TABLE mysqltest_db1.t1; +DROP SCHEMA mysqltest_db1; +DROP USER mysqltest_db1@localhost; diff --git a/mysql-test/t/view_grant.test b/mysql-test/t/view_grant.test index 4663a667d25..f160de2d798 100644 --- a/mysql-test/t/view_grant.test +++ b/mysql-test/t/view_grant.test @@ -807,3 +807,42 @@ SELECT * FROM v; DROP VIEW v; DROP TABLE t1; USE test; + +# +# Bug#20363: Create view on just created view is now denied +# +eval CREATE USER mysqltest_db1@localhost identified by 'PWD'; +eval GRANT ALL ON mysqltest_db1.* TO mysqltest_db1@localhost WITH GRANT OPTION; + +# The session with the non root user is needed. +--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK +connect (session1,localhost,mysqltest_db1,PWD,test); + +CREATE SCHEMA mysqltest_db1 ; +USE mysqltest_db1 ; + +CREATE TABLE t1 (f1 INTEGER); + +CREATE VIEW view1 AS +SELECT * FROM t1; +SHOW CREATE VIEW view1; + +CREATE VIEW view2 AS +SELECT * FROM view1; +--echo # Here comes a suspicious warning +SHOW CREATE VIEW view2; +--echo # But the view view2 is usable +SELECT * FROM view2; + +CREATE VIEW view3 AS +SELECT * FROM view2; + +SELECT * from view3; + +connection default; +DROP VIEW mysqltest_db1.view3; +DROP VIEW mysqltest_db1.view2; +DROP VIEW mysqltest_db1.view1; +DROP TABLE mysqltest_db1.t1; +DROP SCHEMA mysqltest_db1; +DROP USER mysqltest_db1@localhost; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 213a7730824..ba5c2ebf484 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -5004,7 +5004,14 @@ bool check_one_table_access(THD *thd, ulong privilege, TABLE_LIST *all_tables) if (all_tables->security_ctx) thd->security_ctx= all_tables->security_ctx; - if (check_access(thd, privilege, all_tables->db, + const char *db_name; + if ((all_tables->view || all_tables->field_translation) && + !all_tables->schema_table) + db_name= all_tables->view_db.str; + else + db_name= all_tables->db; + + if (check_access(thd, privilege, db_name, &all_tables->grant.privilege, 0, 0, test(all_tables->schema_table))) goto deny; -- cgit v1.2.1 From 05750704a83bc3388e007145e16907c0b61abaa2 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 13 Jun 2006 16:01:54 +0500 Subject: Fix for bug #12728: Very strange behaviour of ELT mysql-test/r/func_str.result: Fix for bug #12728: Very strange behaviour of ELT - test case mysql-test/t/func_str.test: Fix for bug #12728: Very strange behaviour of ELT - test result sql/item_strfunc.cc: Fix for bug #12728: Very strange behaviour of ELT - Item_func_elt::eq() introduced: check 'item' member as well (to distinguish for instance elt(1, 'a', 'b') and elt(2, 'a', 'b') sql/item_strfunc.h: Fix for bug #12728: Very strange behaviour of ELT - Item_func_elt::eq() introduced: check 'item' member as well (to distinguish for instance elt(1, 'a', 'b') and elt(2, 'a', 'b') --- mysql-test/r/func_str.result | 7 +++++++ mysql-test/t/func_str.test | 8 ++++++++ sql/item_strfunc.cc | 11 +++++++++++ sql/item_strfunc.h | 1 + 4 files changed, 27 insertions(+) diff --git a/mysql-test/r/func_str.result b/mysql-test/r/func_str.result index 6fefbb16353..1feda854014 100644 --- a/mysql-test/r/func_str.result +++ b/mysql-test/r/func_str.result @@ -436,3 +436,10 @@ id aes_decrypt(str, 'bar') 1 foo 2 NULL DROP TABLE t1, t2; +create table t1(a varchar(8), primary key(a)); +insert into t1 values('bar'), ('foo'); +select a from t1 where a=elt(1, 'foo', 'bar') or a=elt(2, 'foo', 'bar'); +a +bar +foo +drop table t1; diff --git a/mysql-test/t/func_str.test b/mysql-test/t/func_str.test index 81d5daaf0ba..0e7ab70940a 100644 --- a/mysql-test/t/func_str.test +++ b/mysql-test/t/func_str.test @@ -254,3 +254,11 @@ SELECT t1.id, aes_decrypt(str, 'bar') FROM t1, t2 WHERE t1.id = t2.id DROP TABLE t1, t2; +# +# Bug #12728: strange elt() behavior +# + +create table t1(a varchar(8), primary key(a)); +insert into t1 values('bar'), ('foo'); +select a from t1 where a=elt(1, 'foo', 'bar') or a=elt(2, 'foo', 'bar'); +drop table t1; diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index f070382e5c1..2ea693e94a3 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -1599,6 +1599,17 @@ String *Item_func_elt::val_str(String *str) } +bool Item_func_elt::eq(const Item *par_item, bool binary_cmp) const +{ + /* + We can use (Item_func_elt*) typecast here because the check is done + in the Item_func::eq(). + */ + return Item_func::eq(par_item, binary_cmp) && + item->eq(((Item_func_elt*) par_item)->item, binary_cmp); +} + + void Item_func_make_set::split_sum_func(List &fields) { if (item->with_sum_func && item->type() != SUM_FUNC_ITEM) diff --git a/sql/item_strfunc.h b/sql/item_strfunc.h index ece15484fd9..482a941c55b 100644 --- a/sql/item_strfunc.h +++ b/sql/item_strfunc.h @@ -372,6 +372,7 @@ public: void fix_length_and_dec(); void update_used_tables(); const char *func_name() const { return "elt"; } + bool eq(const Item *par_item, bool binary_cmp) const; unsigned int size_of() { return sizeof(*this);} }; -- cgit v1.2.1 From b72842514a32c7646699546c4ded464b121e2179 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 13 Jun 2006 18:53:12 +0500 Subject: Bug#19720 "Information Schema" output does not list privileges when running "embedded" replace PRVILEGES column result with # for compatibility with embedded --- mysql-test/r/join.result | 4 ++-- mysql-test/t/join.test | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/join.result b/mysql-test/r/join.result index 86288caf398..ce491505030 100644 --- a/mysql-test/r/join.result +++ b/mysql-test/r/join.result @@ -700,8 +700,8 @@ ERROR 42S22: Unknown column 't1.b' in 'on clause' select * from information_schema.statistics join information_schema.columns using(table_name,column_name) where table_name='user'; TABLE_NAME COLUMN_NAME TABLE_CATALOG TABLE_SCHEMA NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT TABLE_CATALOG TABLE_SCHEMA ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT -user Host NULL mysql 0 mysql PRIMARY 1 A NULL NULL NULL BTREE NULL mysql 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI select,insert,update,references -user User NULL mysql 0 mysql PRIMARY 2 A 5 NULL NULL BTREE NULL mysql 2 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI select,insert,update,references +user Host NULL mysql 0 mysql PRIMARY 1 A NULL NULL NULL BTREE NULL mysql 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI # +user User NULL mysql 0 mysql PRIMARY 2 A 5 NULL NULL BTREE NULL mysql 2 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI # drop table t1; drop table t2; drop table t3; diff --git a/mysql-test/t/join.test b/mysql-test/t/join.test index f6a57d5e230..ce19fce678a 100644 --- a/mysql-test/t/join.test +++ b/mysql-test/t/join.test @@ -520,6 +520,7 @@ select * from v1a join v1b on t1.b = t2.b; # # Bug #17523 natural join and information_schema # +--replace_column 31 # select * from information_schema.statistics join information_schema.columns using(table_name,column_name) where table_name='user'; -- cgit v1.2.1 From d2a491b57c792cf04d8c35cf9f2d5204b806b5ef Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 00:21:46 +1000 Subject: BUG#17928 testBackup fails in error handling testcases Reproduced failure of NFMaster on my laptop, this is the fix with some added debug information to help people in the future when they trigger asserts in AsyncFile (ndbfs helper threads). storage/ndb/src/kernel/blocks/backup/Backup.cpp: In Backup::checkFile(Signal*, BackupFilePtr), only send FSCLOSEREQ if file is not already being closed. Add debug printouts if DEBUG_ABORT is defined to help in finding the problem. Only set filePtr.p->fileClosing when we are actually closing the file, not when we're anticipating a close. In Backup::closeFiles(Signal*,BackupRecordPtr), when we're closing a file, make sure we've queued everything to be written out before sending FSCLOSEREQ. This solves two problems: - in testBackup (NFMaster) on my machine (but not in autotest since the end of March for whatever reason), we were hitting an assert in the buffer for files saying we hadn't written everything out of the buffer before closing. (for the interested, it was 10 bytes of data) - once I'd fixed the above (by the checkFile before close) I'd then get really nonsensical trace dumps in NFMaster for ERROR_INSERT 10003. It turns out that any asserts in AsyncFile (the thread that NDBFS runs to do its bidding) don't cause anything to be written out anywhere and you're left scratching your head as to what on earth happenned (apart from getting "caught signal 6, aborted"). What really was happenning was we were then calling FSCLOSEREQ one too many times, hitting the assert on trying to close an fd of -1 in AsyncFile. storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp: It turns out that any asserts in AsyncFile (the thread that NDBFS runs to do its bidding) don't cause anything to be written out anywhere and you're left scratching your head as to what on earth happenned (apart from getting "caught signal 6, aborted"). What really was happenning was we were then calling FSCLOSEREQ one too many times, hitting the assert on trying to close an fd of -1 in AsyncFile. Added DEBUG printouts for every assert in AsyncFile --- storage/ndb/src/kernel/blocks/backup/Backup.cpp | 51 +++++++++++++++-------- storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp | 8 +++- 2 files changed, 41 insertions(+), 18 deletions(-) diff --git a/storage/ndb/src/kernel/blocks/backup/Backup.cpp b/storage/ndb/src/kernel/blocks/backup/Backup.cpp index 07df1db862b..e593b5ff044 100644 --- a/storage/ndb/src/kernel/blocks/backup/Backup.cpp +++ b/storage/ndb/src/kernel/blocks/backup/Backup.cpp @@ -3819,19 +3819,37 @@ Backup::checkFile(Signal* signal, BackupFilePtr filePtr) FsAppendReq::SignalLength, JBA); return; }//if - - filePtr.p->fileRunning = 0; - filePtr.p->fileClosing = 1; - - FsCloseReq * req = (FsCloseReq *)signal->getDataPtrSend(); - req->filePointer = filePtr.p->filePointer; - req->userPointer = filePtr.i; - req->userReference = reference(); - req->fileFlag = 0; + +#ifdef DEBUG_ABORT + Uint32 running= filePtr.p->fileRunning; + Uint32 closing= filePtr.p->fileClosing; +#endif + + if(!filePtr.p->fileClosing) + { + filePtr.p->fileRunning = 0; + filePtr.p->fileClosing = 1; + + FsCloseReq * req = (FsCloseReq *)signal->getDataPtrSend(); + req->filePointer = filePtr.p->filePointer; + req->userPointer = filePtr.i; + req->userReference = reference(); + req->fileFlag = 0; +#ifdef DEBUG_ABORT + ndbout_c("***** a FSCLOSEREQ filePtr.i = %u run=%d cl=%d", filePtr.i, + running, closing); +#endif + sendSignal(NDBFS_REF, GSN_FSCLOSEREQ, signal, FsCloseReq::SignalLength, JBA); + } + else + { #ifdef DEBUG_ABORT - ndbout_c("***** a FSCLOSEREQ filePtr.i = %u", filePtr.i); + ndbout_c("***** a NOT SENDING FSCLOSEREQ filePtr.i = %u run=%d cl=%d", + filePtr.i, + running, closing); #endif - sendSignal(NDBFS_REF, GSN_FSCLOSEREQ, signal, FsCloseReq::SignalLength, JBA); + + } } @@ -4082,9 +4100,7 @@ Backup::closeFiles(Signal* sig, BackupRecordPtr ptr) jam(); continue; }//if - - filePtr.p->fileClosing = 1; - + if(filePtr.p->fileRunning == 1){ jam(); #ifdef DEBUG_ABORT @@ -4093,7 +4109,10 @@ Backup::closeFiles(Signal* sig, BackupRecordPtr ptr) filePtr.p->operation.dataBuffer.eof(); } else { jam(); - + filePtr.p->fileClosing = 1; + filePtr.p->operation.dataBuffer.eof(); + checkFile(sig, filePtr); // make sure we write everything before closing + FsCloseReq * req = (FsCloseReq *)sig->getDataPtrSend(); req->filePointer = filePtr.p->filePointer; req->userPointer = filePtr.i; @@ -4555,7 +4574,6 @@ Backup::execLCP_PREPARE_REQ(Signal* signal) jam(); BackupFilePtr filePtr; c_backupFilePool.getPtr(filePtr, ptr.p->dataFilePtr); - filePtr.p->fileClosing = 1; filePtr.p->operation.dataBuffer.eof(); } @@ -4647,7 +4665,6 @@ Backup::execEND_LCPREQ(Signal* signal) BackupFilePtr filePtr; c_backupFilePool.getPtr(filePtr, ptr.p->dataFilePtr); - filePtr.p->fileClosing = 1; filePtr.p->operation.dataBuffer.eof(); return; } diff --git a/storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp b/storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp index b0a4d6264fb..a3b6104a059 100644 --- a/storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp +++ b/storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp @@ -228,6 +228,7 @@ AsyncFile::run() endReq(); return; default: + DEBUG(ndbout_c("Invalid Request")); abort(); break; }//switch @@ -676,6 +677,7 @@ AsyncFile::extendfile(Request* request) { return 0; #else request = request; + DEBUG(ndbout_c("no pwrite")); abort(); return -1; #endif @@ -792,6 +794,7 @@ AsyncFile::writeBuffer(const char * buf, size_t size, off_t offset, bytes_written = return_value; if(bytes_written == 0){ + DEBUG(ndbout_c("no bytes written")); abort(); } @@ -830,8 +833,10 @@ AsyncFile::closeReq(Request * request) #else if (-1 == ::close(theFd)) { #ifndef DBUG_OFF - if (theFd == -1) + if (theFd == -1) { + DEBUG(ndbout_c("close on fd = -1")); abort(); + } #endif request->error = errno; } @@ -899,6 +904,7 @@ AsyncFile::appendReq(Request * request){ return; } if(n == 0){ + DEBUG(ndbout_c("append with n=0")); abort(); } size -= n; -- cgit v1.2.1 From 55559673f3a7fb44707bff2db8f10f402d1f1ec9 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 13 Jun 2006 16:44:30 +0200 Subject: Fixed incorrect handling of renamed fields, forcing copy of table if needed and added optional system variable ndb_use_copying_alter_table --- sql/ha_ndbcluster.cc | 11 +++++++++++ sql/mysqld.cc | 7 +++++++ sql/set_var.cc | 4 ++++ sql/sql_class.h | 1 + 4 files changed, 23 insertions(+) diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 94fb7e6eb5c..b3ff91cb823 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -9824,10 +9824,21 @@ bool ha_ndbcluster::check_if_incompatible_data(HA_CREATE_INFO *info, uint i; const NDBTAB *tab= (const NDBTAB *) m_table; + if (current_thd->variables.ndb_use_copying_alter_table) + { + DBUG_PRINT("info", ("On-line alter table disabled")); + DBUG_RETURN(COMPATIBLE_DATA_NO); + } + for (i= 0; i < table->s->fields; i++) { Field *field= table->field[i]; const NDBCOL *col= tab->getColumn(field->field_name); + if (!col) + { + DBUG_PRINT("info", ("Field has been renamed, copy table")); + DBUG_RETURN(COMPATIBLE_DATA_NO); + } if ((field->flags & FIELD_IN_ADD_INDEX) && col->getStorageType() == NdbDictionary::Column::StorageTypeDisk) { diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 56c3b1857a8..1a576616966 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -4695,6 +4695,7 @@ enum options_mysqld OPT_NDB_EXTRA_LOGGING, OPT_NDB_REPORT_THRESH_BINLOG_EPOCH_SLIP, OPT_NDB_REPORT_THRESH_BINLOG_MEM_USAGE, + OPT_NDB_USE_COPYING_ALTER_TABLE, OPT_SKIP_SAFEMALLOC, OPT_TEMP_POOL, OPT_TX_ISOLATION, OPT_COMPLETION_TYPE, OPT_SKIP_STACK_TRACE, OPT_SKIP_SYMLINKS, @@ -5430,6 +5431,12 @@ Disable with --skip-ndbcluster (will save memory).", (gptr*) &max_system_variables.ndb_index_stat_update_freq, 0, GET_ULONG, OPT_ARG, 20, 0, ~0L, 0, 0, 0}, #endif + {"nb-use-copying-alter-table", + OPT_NDB_USE_COPYING_ALTER_TABLE, + "Force ndbcluster to always copy tables at alter table (used for ensuring that operations such as renaming fields are propagated to ndb data dictionary).", + (gptr*) &global_system_variables.ndb_use_copying_alter_table, + (gptr*) &global_system_variables.ndb_use_copying_alter_table, + 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"new", 'n', "Use very new possible 'unsafe' functions.", (gptr*) &global_system_variables.new_mode, (gptr*) &max_system_variables.new_mode, diff --git a/sql/set_var.cc b/sql/set_var.cc index 53b4b395c37..a44395c74ca 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -548,6 +548,8 @@ sys_ndb_index_stat_update_freq("ndb_index_stat_update_freq", &SV::ndb_index_stat_update_freq); sys_var_long_ptr sys_ndb_extra_logging("ndb_extra_logging", &ndb_extra_logging); +sys_var_thd_bool +sys_ndb_use_copying_alter_table("ndb_use_copying_alter_table", &SV::ndb_use_copying_alter_table); /* Time/date/datetime formats */ @@ -917,6 +919,8 @@ SHOW_VAR init_vars[]= { {sys_ndb_report_thresh_binlog_mem_usage.name, (char*) &sys_ndb_report_thresh_binlog_mem_usage, SHOW_SYS}, #endif + {sys_ndb_use_copying_alter_table.name, + (char*) &sys_ndb_use_copying_alter_table, SHOW_SYS}, {sys_ndb_use_exact_count.name,(char*) &sys_ndb_use_exact_count, SHOW_SYS}, {sys_ndb_use_transactions.name,(char*) &sys_ndb_use_transactions, SHOW_SYS}, {sys_net_buffer_length.name,(char*) &sys_net_buffer_length, SHOW_SYS}, diff --git a/sql/sql_class.h b/sql/sql_class.h index 03a8439db58..450a8d041c9 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -244,6 +244,7 @@ struct system_variables my_bool innodb_table_locks; my_bool innodb_support_xa; my_bool ndb_force_send; + my_bool ndb_use_copying_alter_table; my_bool ndb_use_exact_count; my_bool ndb_use_transactions; my_bool ndb_index_stat_enable; -- cgit v1.2.1 From 47311e8e878a0f049c3f3b2a1c1dea454800d70a Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 13 Jun 2006 19:09:24 +0400 Subject: Fixed bug#16377: result of DATE/TIME functions were compared as strings which can lead to a wrong result. All date/time functions has the STRING result type thus their results are compared as strings. The string date representation allows a user to skip some of leading zeros. This can lead to wrong comparison result if a date/time function result is compared to such a string constant. The idea behind this bug fix is to compare results of date/time functions and data/time constants as ints, because that date/time representation is more exact. To achieve this the agg_cmp_type() is changed to take in the account that a date/time field or an date/time item should be compared as ints. This bug fix is partially back ported from 5.0. The agg_cmp_type() function now accepts THD as one of parameters. In addition, it now checks if a date/time field/function is present in the list. If so, it tries to coerce all constants to INT to make date/time comparison return correct result. The field for the constant coercion is taken from the Item_field or constructed from the Item_func. In latter case the constructed field will be freed after conversion of all constant items. Otherwise the result is same as before - aggregated with help of the item_cmp_type() function. From the Item_func_between::fix_length_and_dec() function removed the part which was converting date/time constants to int if possible. Now this is done by the agg_cmp_type() function. The new function result_as_longlong() is added to the Item class. It indicates that the item is a date/time item and result of it can be compared as int. Such items are date/time fields/functions. Correct val_int() methods are implemented for classes Item_date_typecast, Item_func_makedate, Item_time_typecast, Item_datetime_typecast. All these classes are derived from Item_str_func and Item_str_func::val_int() converts its string value to int without regard to the date/time type of these items. Arg_comparator::set_compare_func() and Arg_comparator::set_cmp_func() functions are changed to substitute result type of an item with the INT_RESULT if the item is a date/time item and another item is a constant. This is done to get a correct result of comparisons like date_time_function() = string_constant. mysql-test/r/cast.result: Fixed wrong test case result after bug fix#16377. sql/item_timefunc.h: Fixed bug#16377: result of DATE/TIME functions were compared as strings which can lead to a wrong result. The result_as_longlong() function is set to return TRUE for these classes: Item_date, Item_date_func, Item_func_curtime, Item_func_sec_to_time, Item_date_typecast, Item_time_typecast, Item_datetime_typecast, Item_func_makedate. sql/item_timefunc.cc: Fixed bug#16377: result of DATE/TIME functions were compared as strings which can lead to a wrong result.Correct val_int() methods are implemented for classes Item_date_typecast, Item_func_makedate, Item_time_typecast, Item_datetime_typecast. sql/item_cmpfunc.h: Fixed bug#16377: result of DATE/TIME functions were compared as strings which can lead to a wrong result. Arg_comparator::set_compare_func() and Arg_comparator::set_cmp_func() functions are changed to substitute result type of an item with the INT_RESULT if the item is a date/time item and another item is a constant. sql/field.cc: Fixed bug#16377: result of DATE/TIME functions were compared as strings which can lead to a wrong result. Field::set_warning(), Field::set_datetime_warning() now use current_thd to get thd if table isn't set. sql/item_cmpfunc.cc: Fixed bug#16377: result of DATE/TIME functions were compared as strings which can lead to a wrong result. The agg_cmp_type() function now accepts THD as one of parameters. In addition, it now checks if a date/time field/function is present in the list. If so, it tries to coerce all constants to INT to make date/time comparison return correct result. The field for the constant coercion is taken from the Item_field or constructed from the Item_func. In latter case the constructed field will be freed after conversion of all constant items. Otherwise the result is same as before - aggregated with help of the item_cmp_type() function. sql/item.h: The new function result_as_longlong() is added to the Item class. It indicates that the item is a date/time item and result of it can be compared as int. Such items are date/time fields/functions. mysql-test/t/func_time.test: Added test case fot bug#16377: result of DATE/TIME functions were compared as strings which can lead to a wrong result. mysql-test/r/func_time.result: Added test case fot bug#16377: result of DATE/TIME functions were compared as strings which can lead to a wrong result. --- mysql-test/r/cast.result | 2 +- mysql-test/r/func_time.result | 41 +++++++++++ mysql-test/t/func_time.test | 20 ++++++ sql/field.cc | 16 +++-- sql/item.h | 16 +++++ sql/item_cmpfunc.cc | 154 +++++++++++++++++++++++++++++++++--------- sql/item_cmpfunc.h | 14 ++-- sql/item_timefunc.cc | 60 ++++++++++++++++ sql/item_timefunc.h | 12 ++++ 9 files changed, 293 insertions(+), 42 deletions(-) diff --git a/mysql-test/r/cast.result b/mysql-test/r/cast.result index 68687670e17..2538fbfd61d 100644 --- a/mysql-test/r/cast.result +++ b/mysql-test/r/cast.result @@ -192,7 +192,7 @@ cast("2001-1-1" as datetime) = "2001-01-01 00:00:00" 1 select cast("1:2:3" as TIME) = "1:02:03"; cast("1:2:3" as TIME) = "1:02:03" -0 +1 select cast(NULL as DATE); cast(NULL as DATE) NULL diff --git a/mysql-test/r/func_time.result b/mysql-test/r/func_time.result index 02f3d2f7273..93d4542bf5b 100644 --- a/mysql-test/r/func_time.result +++ b/mysql-test/r/func_time.result @@ -630,3 +630,44 @@ select monthname(str_to_date(null, '%m')), monthname(str_to_date(null, '%m')), monthname(str_to_date(1, '%m')), monthname(str_to_date(0, '%m')); monthname(str_to_date(null, '%m')) monthname(str_to_date(null, '%m')) monthname(str_to_date(1, '%m')) monthname(str_to_date(0, '%m')) NULL NULL January NULL +create table t1(f1 date, f2 time, f3 datetime); +insert into t1 values ("2006-01-01", "12:01:01", "2006-01-01 12:01:01"); +insert into t1 values ("2006-01-02", "12:01:02", "2006-01-02 12:01:02"); +select f1 from t1 where f1 between "2006-1-1" and 20060101; +f1 +2006-01-01 +select f1 from t1 where f1 between "2006-1-1" and "2006.1.1"; +f1 +2006-01-01 +select f1 from t1 where date(f1) between "2006-1-1" and "2006.1.1"; +f1 +2006-01-01 +select f2 from t1 where f2 between "12:1:2" and "12:2:2"; +f2 +12:01:02 +select f2 from t1 where time(f2) between "12:1:2" and "12:2:2"; +f2 +12:01:02 +select f3 from t1 where f3 between "2006-1-1 12:1:1" and "2006-1-1 12:1:2"; +f3 +2006-01-01 12:01:01 +select f3 from t1 where timestamp(f3) between "2006-1-1 12:1:1" and "2006-1-1 12:1:2"; +f3 +2006-01-01 12:01:01 +select f1 from t1 where "2006-1-1" between f1 and f3; +f1 +2006-01-01 +select f1 from t1 where "2006-1-1" between date(f1) and date(f3); +f1 +2006-01-01 +select f1 from t1 where "2006-1-1" between f1 and 'zzz'; +f1 +Warnings: +Warning 1292 Truncated incorrect date value: 'zzz' +select f1 from t1 where makedate(2006,1) between date(f1) and date(f3); +f1 +2006-01-01 +select f1 from t1 where makedate(2006,2) between date(f1) and date(f3); +f1 +2006-01-02 +drop table t1; diff --git a/mysql-test/t/func_time.test b/mysql-test/t/func_time.test index 01e4e47d318..5e0b35522cf 100644 --- a/mysql-test/t/func_time.test +++ b/mysql-test/t/func_time.test @@ -322,4 +322,24 @@ select last_day('2005-01-00'); select monthname(str_to_date(null, '%m')), monthname(str_to_date(null, '%m')), monthname(str_to_date(1, '%m')), monthname(str_to_date(0, '%m')); +# +# Bug#16377 result of DATE/TIME functions were compared as strings which +# can lead to a wrong result. +# +create table t1(f1 date, f2 time, f3 datetime); +insert into t1 values ("2006-01-01", "12:01:01", "2006-01-01 12:01:01"); +insert into t1 values ("2006-01-02", "12:01:02", "2006-01-02 12:01:02"); +select f1 from t1 where f1 between "2006-1-1" and 20060101; +select f1 from t1 where f1 between "2006-1-1" and "2006.1.1"; +select f1 from t1 where date(f1) between "2006-1-1" and "2006.1.1"; +select f2 from t1 where f2 between "12:1:2" and "12:2:2"; +select f2 from t1 where time(f2) between "12:1:2" and "12:2:2"; +select f3 from t1 where f3 between "2006-1-1 12:1:1" and "2006-1-1 12:1:2"; +select f3 from t1 where timestamp(f3) between "2006-1-1 12:1:1" and "2006-1-1 12:1:2"; +select f1 from t1 where "2006-1-1" between f1 and f3; +select f1 from t1 where "2006-1-1" between date(f1) and date(f3); +select f1 from t1 where "2006-1-1" between f1 and 'zzz'; +select f1 from t1 where makedate(2006,1) between date(f1) and date(f3); +select f1 from t1 where makedate(2006,2) between date(f1) and date(f3); +drop table t1; # End of 4.1 tests diff --git a/sql/field.cc b/sql/field.cc index a64eaad7308..ec4d4b4e4f5 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -6841,7 +6841,11 @@ create_field::create_field(Field *old_field,Field *orig_field) bool Field::set_warning(const uint level, const uint code, int cuted_increment) { - THD *thd= table->in_use; + /* + If this field was created only for type conversion purposes it + will have table == NULL. + */ + THD *thd= table ? table->in_use : current_thd; if (thd->count_cuted_fields) { thd->cuted_fields+= cuted_increment; @@ -6876,7 +6880,8 @@ Field::set_datetime_warning(const uint level, const uint code, timestamp_type ts_type, int cuted_increment) { if (set_warning(level, code, cuted_increment)) - make_truncated_value_warning(table->in_use, str, str_length, ts_type); + make_truncated_value_warning(table ? table->in_use : current_thd, + str, str_length, ts_type); } @@ -6905,8 +6910,8 @@ Field::set_datetime_warning(const uint level, const uint code, { char str_nr[22]; char *str_end= longlong10_to_str(nr, str_nr, -10); - make_truncated_value_warning(table->in_use, str_nr, str_end - str_nr, - ts_type); + make_truncated_value_warning(table ? table->in_use : current_thd, + str_nr, str_end - str_nr, ts_type); } } @@ -6935,7 +6940,8 @@ Field::set_datetime_warning(const uint level, const uint code, /* DBL_DIG is enough to print '-[digits].E+###' */ char str_nr[DBL_DIG + 8]; uint str_len= my_sprintf(str_nr, (str_nr, "%g", nr)); - make_truncated_value_warning(table->in_use, str_nr, str_len, ts_type); + make_truncated_value_warning(table ? table->in_use : current_thd, + str_nr, str_len, ts_type); } } diff --git a/sql/item.h b/sql/item.h index 66da7ad4e74..eca8ee184a1 100644 --- a/sql/item.h +++ b/sql/item.h @@ -327,6 +327,14 @@ public: cleanup(); delete this; } + /* + result_as_longlong() must return TRUE for Items representing DATE/TIME + functions and DATE/TIME table fields. + Those Items have result_type()==STRING_RESULT (and not INT_RESULT), but + their values should be compared as integers (because the integer + representation is more precise than the string one). + */ + virtual bool result_as_longlong() { return FALSE; } }; @@ -450,6 +458,10 @@ public: Item *get_tmp_table_item(THD *thd); void cleanup(); inline uint32 max_disp_length() { return field->max_length(); } + bool result_as_longlong() + { + return field->can_be_compared_as_longlong(); + } friend class Item_default_value; friend class Item_insert_value; friend class st_select_lex_unit; @@ -973,6 +985,10 @@ public: } Item *real_item() { return *ref; } void print(String *str); + bool result_as_longlong() + { + return (*ref)->result_as_longlong(); + } }; diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index bfbb3355004..e92e1d30ca4 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -25,6 +25,8 @@ #include #include "sql_select.h" +static bool convert_constant_item(THD *thd, Field *field, Item **item); + static Item_result item_store_type(Item_result a,Item_result b) { if (a == STRING_RESULT || b == STRING_RESULT) @@ -64,6 +66,7 @@ static void agg_result_type(Item_result *type, Item **items, uint nitems) SYNOPSIS: agg_cmp_type() + thd thread handle type [out] the aggregated type items array of items to aggregate the type from nitems number of items in the array @@ -78,24 +81,133 @@ static void agg_result_type(Item_result *type, Item **items, uint nitems) If all items are constants the type will be aggregated from all items. If there are some non-constant items then only types of non-constant items will be used for aggregation. + If there are DATE/TIME fields/functions in the list and no string + fields/functions in the list then: + The INT_RESULT type will be used for aggregation instead of orginal + result type of any DATE/TIME field/function in the list + All constant items in the list will be converted to a DATE/TIME using + found field or result field of found function. + + Implementation notes: + The code is equvalent to: + 1. Check the list for presense of a STRING field/function. + Collect the is_const flag. + 2. Get a Field* object to use for type coercion + 3. Perform type conversion. + 1 and 2 are implemented in 2 loops. The first searches for a DATE/TIME + field/function and checks presense of a STRING field/function. + The second loop works only if a DATE/TIME field/function is found. + It checks presense of a STRING field/function in the rest of the list. + + TODO + 1) The current implementation can produce false comparison results for + expressions like: + date_time_field BETWEEN string_field_with_dates AND string_constant + if the string_constant will omit some of leading zeroes. + In order to fully implement correct comparison of DATE/TIME the new + DATETIME_RESULT result type should be introduced and agg_cmp_type() + should return the DATE/TIME field used for the conversion. Later + this field can be used by comparison functions like Item_func_between to + convert string values to ints on the fly and thus return correct results. + This modification will affect functions BETWEEN, IN and CASE. + + 2) If in the list a DATE field/function and a DATETIME field/function + are present in the list then the first found field/function will be + used for conversion. This may lead to wrong results and probably should + be fixed. */ -static void agg_cmp_type(Item_result *type, Item **items, uint nitems) + +static void agg_cmp_type(THD *thd, Item_result *type, Item **items, uint nitems) { uint i; - type[0]= items[0]->result_type(); + Item::Type res; + char *buff= NULL; + uchar null_byte; + Field *field= NULL; + + /* Search for date/time fields/functions */ + for (i= 0; i < nitems; i++) + { + if (!items[i]->result_as_longlong()) + { + /* Do not convert anything if a string field/function is present */ + if (!items[i]->const_item() && items[i]->result_type() == STRING_RESULT) + { + i= nitems; + break; + } + continue; + } + if ((res= items[i]->real_item()->type()) == Item::FIELD_ITEM) + { + field= ((Item_field *)items[i]->real_item())->field; + break; + } + else if (res == Item::FUNC_ITEM) + { + field= items[i]->tmp_table_field_from_field_type(0); + if (field) + buff= alloc_root(thd->mem_root, field->max_length()); + if (!buff || !field) + { + if (field) + delete field; + if (buff) + my_free(buff, MYF(MY_WME)); + field= 0; + } + else + field->move_field(buff, &null_byte, 0); + break; + } + } + if (field) + { + /* Check the rest of the list for presense of a string field/function. */ + for (i++ ; i < nitems; i++) + { + if (!items[i]->const_item() && items[i]->result_type() == STRING_RESULT && + !items[i]->result_as_longlong()) + { + field= 0; + break; + } + } + } /* Reset to 0 on first occurence of non-const item. 1 otherwise */ bool is_const= items[0]->const_item(); + /* + If the first item is a date/time function then its result should be + compared as int + */ + if (field) + { + /* Suppose we are comparing dates and some non-constant items are present. */ + type[0]= INT_RESULT; + is_const= 0; + } + else + type[0]= items[0]->result_type(); - for (i= 1 ; i < nitems ; i++) + for (i= 0; i < nitems ; i++) { if (!items[i]->const_item()) { - type[0]= is_const ? items[i]->result_type() : - item_cmp_type(type[0], items[i]->result_type()); + Item_result result= field && items[i]->result_as_longlong() ? + INT_RESULT : items[i]->result_type(); + type[0]= is_const ? result : item_cmp_type(type[0], result); is_const= 0; } else if (is_const) type[0]= item_cmp_type(type[0], items[i]->result_type()); + else if (field) + convert_constant_item(thd, field, &items[i]); + } + + if (res == Item::FUNC_ITEM && field) + { + delete field; + my_free(buff, MYF(MY_WME)); } } @@ -929,31 +1041,9 @@ void Item_func_between::fix_length_and_dec() */ if (!args[0] || !args[1] || !args[2]) return; - agg_cmp_type(&cmp_type, args, 3); - if (cmp_type == STRING_RESULT && - agg_arg_charsets(cmp_collation, args, 3, MY_COLL_CMP_CONV)) - return; - - /* - Make a special case of compare with date/time and longlong fields. - They are compared as integers, so for const item this time-consuming - conversion can be done only once, not for every single comparison - */ - if (args[0]->type() == FIELD_ITEM) - { - Field *field=((Item_field*) args[0])->field; - if (field->can_be_compared_as_longlong()) - { - /* - The following can't be recoded with || as convert_constant_item - changes the argument - */ - if (convert_constant_item(thd, field,&args[1])) - cmp_type=INT_RESULT; // Works for all types. - if (convert_constant_item(thd, field,&args[2])) - cmp_type=INT_RESULT; // Works for all types. - } - } + agg_cmp_type(thd, &cmp_type, args, 3); + if (cmp_type == STRING_RESULT) + agg_arg_charsets(cmp_collation, args, 3, MY_COLL_CMP_CONV); } @@ -1477,7 +1567,7 @@ void Item_func_case::fix_length_and_dec() for (nagg= 0; nagg < ncases/2 ; nagg++) agg[nagg+1]= args[nagg*2]; nagg++; - agg_cmp_type(&cmp_type, agg, nagg); + agg_cmp_type(current_thd, &cmp_type, agg, nagg); if ((cmp_type == STRING_RESULT) && agg_arg_charsets(cmp_collation, agg, nagg, MY_COLL_CMP_CONV)) return; @@ -1958,7 +2048,7 @@ void Item_func_in::fix_length_and_dec() uint const_itm= 1; THD *thd= current_thd; - agg_cmp_type(&cmp_type, args, arg_count); + agg_cmp_type(thd, &cmp_type, args, arg_count); if (cmp_type == STRING_RESULT && agg_arg_charsets(cmp_collation, args, arg_count, MY_COLL_CMP_CONV)) diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index ade09113c63..08d9de6ffd6 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -43,8 +43,11 @@ public: int set_compare_func(Item_bool_func2 *owner, Item_result type); inline int set_compare_func(Item_bool_func2 *owner_arg) { - return set_compare_func(owner_arg, item_cmp_type((*a)->result_type(), - (*b)->result_type())); + Item_result ar= (*a)->result_as_longlong() && (*b)->const_item() ? + INT_RESULT : (*a)->result_type(); + Item_result br= (*b)->result_as_longlong() && (*a)->const_item() ? + INT_RESULT : (*b)->result_type(); + return set_compare_func(owner_arg, item_cmp_type(ar, br)); } inline int set_cmp_func(Item_bool_func2 *owner_arg, Item **a1, Item **a2, @@ -57,8 +60,11 @@ public: inline int set_cmp_func(Item_bool_func2 *owner_arg, Item **a1, Item **a2) { - return set_cmp_func(owner_arg, a1, a2, item_cmp_type((*a1)->result_type(), - (*a2)->result_type())); + Item_result ar= (*a1)->result_as_longlong() && (*a2)->const_item() ? + INT_RESULT : (*a1)->result_type(); + Item_result br= (*a2)->result_as_longlong() && (*a1)->const_item() ? + INT_RESULT : (*a2)->result_type(); + return set_cmp_func(owner_arg, a1, a2, item_cmp_type(ar, br)); } inline int compare() { return (this->*func)(); } diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc index 5fdbd968df1..f7b4c9dd630 100644 --- a/sql/item_timefunc.cc +++ b/sql/item_timefunc.cc @@ -2306,6 +2306,20 @@ String *Item_datetime_typecast::val_str(String *str) } +longlong Item_datetime_typecast::val_int() +{ + DBUG_ASSERT(fixed == 1); + TIME ltime; + if (get_arg0_date(<ime,1)) + { + null_value= 1; + return 0; + } + + return TIME_to_ulonglong_datetime(<ime); +} + + bool Item_time_typecast::get_time(TIME *ltime) { bool res= get_arg0_time(ltime); @@ -2320,6 +2334,17 @@ bool Item_time_typecast::get_time(TIME *ltime) } +longlong Item_time_typecast::val_int() +{ + TIME ltime; + if (get_time(<ime)) + { + null_value= 1; + return 0; + } + return ltime.hour * 10000L + ltime.minute * 100 + ltime.second; +} + String *Item_time_typecast::val_str(String *str) { DBUG_ASSERT(fixed == 1); @@ -2359,6 +2384,14 @@ String *Item_date_typecast::val_str(String *str) return 0; } +longlong Item_date_typecast::val_int() +{ + DBUG_ASSERT(fixed == 1); + TIME ltime; + if (args[0]->get_date(<ime, TIME_FUZZY_DATE)) + return 0; + return (longlong) (ltime.year * 10000L + ltime.month * 100 + ltime.day); +} /* MAKEDATE(a,b) is a date function that creates a date value @@ -2395,6 +2428,33 @@ err: } +longlong Item_func_makedate::val_int() +{ + DBUG_ASSERT(fixed == 1); + TIME l_time; + long daynr= (long) args[1]->val_int(); + long yearnr= (long) args[0]->val_int(); + long days; + + if (args[0]->null_value || args[1]->null_value || + yearnr < 0 || daynr <= 0) + goto err; + + days= calc_daynr(yearnr,1,1) + daynr - 1; + /* Day number from year 0 to 9999-12-31 */ + if (days >= 0 && days < MAX_DAY_NUMBER) + { + null_value=0; + get_date_from_daynr(days,&l_time.year,&l_time.month,&l_time.day); + return (longlong) (l_time.year * 10000L + l_time.month * 100 + l_time.day); + } + +err: + null_value= 1; + return 0; +} + + void Item_func_add_time::fix_length_and_dec() { enum_field_types arg0_field_type; diff --git a/sql/item_timefunc.h b/sql/item_timefunc.h index 163b1591e52..95f1dfa75d1 100644 --- a/sql/item_timefunc.h +++ b/sql/item_timefunc.h @@ -339,6 +339,7 @@ public: { return (new Field_date(maybe_null, name, t_arg, &my_charset_bin)); } + bool result_as_longlong() { return TRUE; } }; @@ -354,6 +355,7 @@ public: { return (new Field_datetime(maybe_null, name, t_arg, &my_charset_bin)); } + bool result_as_longlong() { return TRUE; } }; @@ -383,6 +385,7 @@ public: TIME representation using UTC-SYSTEM or per-thread time zone. */ virtual void store_now_in_TIME(TIME *now_time)=0; + bool result_as_longlong() { return TRUE; } }; @@ -588,6 +591,7 @@ public: { return (new Field_time(maybe_null, name, t_arg, &my_charset_bin)); } + bool result_as_longlong() { return TRUE; } }; /* @@ -715,6 +719,8 @@ public: max_length= 10; maybe_null= 1; } + bool result_as_longlong() { return TRUE; } + longlong val_int(); }; @@ -731,6 +737,8 @@ public: { return (new Field_time(maybe_null, name, t_arg, &my_charset_bin)); } + bool result_as_longlong() { return TRUE; } + longlong val_int(); }; @@ -746,6 +754,8 @@ public: { return (new Field_datetime(maybe_null, name, t_arg, &my_charset_bin)); } + bool result_as_longlong() { return TRUE; } + longlong val_int(); }; class Item_func_makedate :public Item_str_func @@ -764,6 +774,8 @@ public: { return (new Field_date(maybe_null, name, t_arg, &my_charset_bin)); } + bool result_as_longlong() { return TRUE; } + longlong val_int(); }; -- cgit v1.2.1 From 01c9fd31d7456827587b4ea00facb14317fdd81b Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 13 Jun 2006 18:18:32 +0300 Subject: Bug #20195: INSERT DELAYED with auto_increment is assigned wrong values The INSERT DELAYED should not maintain its own private auto-increment counter, because this is assuming that other threads cannot insert into the table while the INSERT DELAYED thread is inserting, which is a wrong assumption. So the start of processing of a batch of INSERT rows in the INSERT DELAYED thread must be treated as a start of a new statement and cached next_insert_id must be cleared. mysql-test/r/delayed.result: test suite for the bug mysql-test/t/delayed.test: test suite for the bug sql/sql_insert.cc: Reset auto-increment cacheing before processing the next batch of inserts in the handler thread --- mysql-test/r/delayed.result | 30 +++++++++++++++++++++++++++ mysql-test/t/delayed.test | 49 +++++++++++++++++++++++++++++++++++++++++++++ sql/sql_insert.cc | 8 ++++++++ 3 files changed, 87 insertions(+) diff --git a/mysql-test/r/delayed.result b/mysql-test/r/delayed.result index f8ae61b03fb..a336f3b4108 100644 --- a/mysql-test/r/delayed.result +++ b/mysql-test/r/delayed.result @@ -39,3 +39,33 @@ select * from t1; a 1 drop table t1; +CREATE TABLE t1 ( a int(10) NOT NULL auto_increment, PRIMARY KEY (a)); +insert delayed into t1 values(null); +insert into t1 values(null); +insert into t1 values(null); +insert delayed into t1 values(null); +insert delayed into t1 values(null); +insert delayed into t1 values(null); +insert into t1 values(null); +insert into t1 values(null); +insert into t1 values(null); +delete from t1 where a=6; +insert delayed into t1 values(null); +insert delayed into t1 values(null); +insert delayed into t1 values(null); +insert delayed into t1 values(null); +select * from t1 order by a; +a +1 +2 +3 +4 +5 +7 +8 +9 +10 +11 +12 +13 +DROP TABLE t1; diff --git a/mysql-test/t/delayed.test b/mysql-test/t/delayed.test index 5ae757b1fde..55e8f81f763 100644 --- a/mysql-test/t/delayed.test +++ b/mysql-test/t/delayed.test @@ -50,3 +50,52 @@ insert into t1 values (1); insert delayed into t1 values (1); select * from t1; drop table t1; + +# +# Bug #20195: INSERT DELAYED with auto_increment is assigned wrong values +# +CREATE TABLE t1 ( a int(10) NOT NULL auto_increment, PRIMARY KEY (a)); + +# Make one delayed insert to start the separate thread +insert delayed into t1 values(null); + +# Do some normal inserts +insert into t1 values(null); +insert into t1 values(null); + +# Discarded, since the delayed-counter is 2, which is already used +insert delayed into t1 values(null); + +# Discarded, since the delayed-counter is 3, which is already used +insert delayed into t1 values(null); + +# Works, since the delayed-counter is 4, which is unused +insert delayed into t1 values(null); + +# Do some more inserts +insert into t1 values(null); +insert into t1 values(null); +insert into t1 values(null); + +# Delete one of the above to make a hole +delete from t1 where a=6; + +# Discarded, since the delayed-counter is 5, which is already used +insert delayed into t1 values(null); + +# Works, since the delayed-counter is 6, which is unused (the row we deleted) +insert delayed into t1 values(null); + +# Discarded, since the delayed-counter is 7, which is already used +insert delayed into t1 values(null); + +# Works, since the delayed-counter is 8, which is unused +insert delayed into t1 values(null); + +# Check what we have now +# must wait so that the delayed thread finishes +# Note: this must be increased if the test fails +--sleep 1 +select * from t1 order by a; + +DROP TABLE t1; diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 26f3b6f5faa..5630702fe52 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -1938,6 +1938,14 @@ bool delayed_insert::handle_inserts(void) if (!using_bin_log) table->file->extra(HA_EXTRA_WRITE_CACHE); pthread_mutex_lock(&mutex); + + /* Reset auto-increment cacheing */ + if (thd.clear_next_insert_id) + { + thd.next_insert_id= 0; + thd.clear_next_insert_id= 0; + } + while ((row=rows.get())) { stacked_inserts--; -- cgit v1.2.1 From b4b3f31d5207700305cdc0c66e6420c383bb7db8 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 13 Jun 2006 13:00:06 -0700 Subject: Bug#20168 "--default-storage-engine=XXX" doesn't work typo in the code and forgotten changes sql/mysqld.cc: Bug#20168 typo and forgotten changes --- sql/mysqld.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 56c3b1857a8..b1d77a87191 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -4983,11 +4983,12 @@ Disable with --skip-bdb (will save memory).", (gptr*) &default_collation_name, (gptr*) &default_collation_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, {"default-storage-engine", OPT_STORAGE_ENGINE, - "Set the default storage engine (table type) for tables.", 0, 0, + "Set the default storage engine (table type) for tables.", + (gptr*)&default_storage_engine_str, (gptr*)&default_storage_engine_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"default-table-type", OPT_STORAGE_ENGINE, "(deprecated) Use --default-storage-engine.", - (gptr*)default_storage_engine_str, (gptr*)default_storage_engine_str, + (gptr*)&default_storage_engine_str, (gptr*)&default_storage_engine_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"default-time-zone", OPT_DEFAULT_TIME_ZONE, "Set the default time zone.", (gptr*) &default_tz_name, (gptr*) &default_tz_name, -- cgit v1.2.1 From 5eb8871e74a72221e3617ebad428f0e2733a0e3d Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 13 Jun 2006 22:10:00 +0200 Subject: Bug#19066 (DELETE FROM replication inconsistency for NDB): Post-merge fixes. sql/sql_class.h: Post-merge fixes sql/sql_delete.cc: Conditional inclusion of row-based code. --- sql/sql_class.h | 1 - sql/sql_delete.cc | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/sql/sql_class.h b/sql/sql_class.h index 5156e740028..dab9b546b2c 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -941,7 +941,6 @@ public: int binlog_flush_pending_rows_event(bool stmt_end); void binlog_delete_pending_rows_event(); -#ifdef HAVE_ROW_BASED_REPLICATION private: uint binlog_table_maps; // Number of table maps currently in the binlog public: diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index 92ddff58dd5..0a4c54ecdd7 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -977,7 +977,9 @@ trunc_by_del: thd->options&= ~(ulong) (OPTION_BEGIN | OPTION_NOT_AUTOCOMMIT); ha_enable_transaction(thd, FALSE); mysql_init_select(thd->lex); +#ifdef HAVE_ROW_BASED_REPLICATION thd->clear_current_stmt_binlog_row_based(); +#endif error= mysql_delete(thd, table_list, (COND*) 0, (SQL_LIST*) 0, HA_POS_ERROR, LL(0), TRUE); ha_enable_transaction(thd, TRUE); -- cgit v1.2.1 From c74c968d79235e7b965656518261bc9ea71115bb Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 13 Jun 2006 22:10:01 +0200 Subject: Bug#19066 (DELETE FROM replication inconsistency for NDB): Fixing result files for tests. mysql-test/extra/rpl_tests/rpl_truncate_helper.inc: Fixing SERVER_VERSION mysql-test/r/binlog_row_mix_innodb_myisam.result: Result change mysql-test/r/rpl_ddl.result: Result change mysql-test/r/rpl_row_basic_11bugs.result: Result change mysql-test/r/rpl_truncate_2myisam.result: Result change mysql-test/r/rpl_truncate_3innodb.result: Result change mysql-test/r/rpl_truncate_7ndb.result: Result change mysql-test/t/rpl_truncate_7ndb.test: Fixing SERVER_VERSION --- mysql-test/extra/rpl_tests/rpl_truncate_helper.inc | 1 + mysql-test/r/binlog_row_mix_innodb_myisam.result | 31 +++++++++------------- mysql-test/r/rpl_ddl.result | 2 -- mysql-test/r/rpl_row_basic_11bugs.result | 5 ++-- mysql-test/r/rpl_truncate_2myisam.result | 12 ++++----- mysql-test/r/rpl_truncate_3innodb.result | 12 ++++----- mysql-test/r/rpl_truncate_7ndb.result | 4 +-- mysql-test/t/rpl_truncate_7ndb.test | 2 ++ 8 files changed, 32 insertions(+), 37 deletions(-) diff --git a/mysql-test/extra/rpl_tests/rpl_truncate_helper.inc b/mysql-test/extra/rpl_tests/rpl_truncate_helper.inc index c6defefa986..2306b746a86 100644 --- a/mysql-test/extra/rpl_tests/rpl_truncate_helper.inc +++ b/mysql-test/extra/rpl_tests/rpl_truncate_helper.inc @@ -36,5 +36,6 @@ SELECT * FROM t1; --echo **** On Master **** connection master; DROP TABLE t1; +--replace_result $SERVER_VERSION SERVER_VERSION --replace_regex /table_id: [0-9]+/table_id: #/ SHOW BINLOG EVENTS; diff --git a/mysql-test/r/binlog_row_mix_innodb_myisam.result b/mysql-test/r/binlog_row_mix_innodb_myisam.result index d136c710642..700bf1c9edc 100644 --- a/mysql-test/r/binlog_row_mix_innodb_myisam.result +++ b/mysql-test/r/binlog_row_mix_innodb_myisam.result @@ -265,24 +265,19 @@ master-bin.000001 316 Xid 1 # COMMIT /* xid= */ master-bin.000001 343 Table_map 1 # table_id: # (test.t1) master-bin.000001 382 Delete_rows 1 # table_id: # flags: STMT_END_F master-bin.000001 421 Xid 1 # COMMIT /* xid= */ -master-bin.000001 448 Table_map 1 # table_id: # (test.t2) -master-bin.000001 487 Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 516 Xid 1 # COMMIT /* xid= */ -master-bin.000001 543 Query 1 # use `test`; alter table t2 engine=MyISAM -master-bin.000001 634 Table_map 1 # table_id: # (test.t1) -master-bin.000001 673 Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 707 Xid 1 # COMMIT /* xid= */ -master-bin.000001 734 Query 1 # use `test`; BEGIN -master-bin.000001 802 Table_map 1 # table_id: # (test.t1) -master-bin.000001 841 Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 870 Xid 1 # COMMIT /* xid= */ -master-bin.000001 897 Query 1 # use `test`; drop table t1,t2 -master-bin.000001 976 Query 1 # use `test`; create table t0 (n int) -master-bin.000001 1062 Table_map 1 # table_id: # (test.t0) -master-bin.000001 1101 Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 1135 Table_map 1 # table_id: # (test.t0) -master-bin.000001 1174 Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 1208 Query 1 # use `test`; create table t2 (n int) engine=innodb +master-bin.000001 448 Query 1 # use `test`; alter table t2 engine=MyISAM +master-bin.000001 539 Table_map 1 # table_id: # (test.t1) +master-bin.000001 578 Write_rows 1 # table_id: # flags: STMT_END_F +master-bin.000001 612 Xid 1 # COMMIT /* xid= */ +master-bin.000001 639 Table_map 1 # table_id: # (test.t2) +master-bin.000001 678 Write_rows 1 # table_id: # flags: STMT_END_F +master-bin.000001 712 Query 1 # use `test`; drop table t1,t2 +master-bin.000001 791 Query 1 # use `test`; create table t0 (n int) +master-bin.000001 877 Table_map 1 # table_id: # (test.t0) +master-bin.000001 916 Write_rows 1 # table_id: # flags: STMT_END_F +master-bin.000001 950 Table_map 1 # table_id: # (test.t0) +master-bin.000001 989 Write_rows 1 # table_id: # flags: STMT_END_F +master-bin.000001 1023 Query 1 # use `test`; create table t2 (n int) engine=innodb do release_lock("lock1"); drop table t0,t2; reset master; diff --git a/mysql-test/r/rpl_ddl.result b/mysql-test/r/rpl_ddl.result index e828f2c1e31..ec6d7183186 100644 --- a/mysql-test/r/rpl_ddl.result +++ b/mysql-test/r/rpl_ddl.result @@ -650,11 +650,9 @@ flush logs; -------- switch to master ------- SELECT * FROM mysqltest1.t7; f1 - -------- switch to slave -------- SELECT * FROM mysqltest1.t7; f1 - -------- switch to master ------- ######## LOCK TABLES mysqltest1.t1 WRITE, mysqltest1.t8 READ ######## diff --git a/mysql-test/r/rpl_row_basic_11bugs.result b/mysql-test/r/rpl_row_basic_11bugs.result index 7cd895f2041..8c8a77b5084 100644 --- a/mysql-test/r/rpl_row_basic_11bugs.result +++ b/mysql-test/r/rpl_row_basic_11bugs.result @@ -58,6 +58,5 @@ SHOW BINLOG EVENTS; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.11-beta-debug-log, Binlog ver: 4 master-bin.000001 102 Query 1 188 use `test`; CREATE TABLE t1 (a INT) -master-bin.000001 188 Query 1 265 use `test`; DELETE FROM t1 -master-bin.000001 265 Table_map 1 304 table_id: # (test.t1) -master-bin.000001 304 Write_rows 1 343 table_id: # flags: STMT_END_F +master-bin.000001 188 Table_map 1 227 table_id: # (test.t1) +master-bin.000001 227 Write_rows 1 266 table_id: # flags: STMT_END_F diff --git a/mysql-test/r/rpl_truncate_2myisam.result b/mysql-test/r/rpl_truncate_2myisam.result index 6cd8b267578..41640a709b9 100644 --- a/mysql-test/r/rpl_truncate_2myisam.result +++ b/mysql-test/r/rpl_truncate_2myisam.result @@ -31,7 +31,7 @@ a b DROP TABLE t1; SHOW BINLOG EVENTS; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 4 Format_desc 1 102 Server ver: SERVER_VERSION, Binlog ver: 4 master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=MyISAM master-bin.000001 210 Query 1 307 use `test`; INSERT INTO t1 VALUES (1,1), (2,2) master-bin.000001 307 Query 1 387 use `test`; TRUNCATE TABLE t1 @@ -63,7 +63,7 @@ a b DROP TABLE t1; SHOW BINLOG EVENTS; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 4 Format_desc 1 102 Server ver: SERVER_VERSION, Binlog ver: 4 master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=MyISAM master-bin.000001 210 Query 1 307 use `test`; INSERT INTO t1 VALUES (1,1), (2,2) master-bin.000001 307 Query 1 387 use `test`; TRUNCATE TABLE t1 @@ -95,7 +95,7 @@ a b DROP TABLE t1; SHOW BINLOG EVENTS; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 4 Format_desc 1 102 Server ver: SERVER_VERSION, Binlog ver: 4 master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=MyISAM master-bin.000001 210 Table_map 1 250 table_id: # (test.t1) master-bin.000001 250 Write_rows 1 297 table_id: # flags: STMT_END_F @@ -128,7 +128,7 @@ a b DROP TABLE t1; SHOW BINLOG EVENTS; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 4 Format_desc 1 102 Server ver: SERVER_VERSION, Binlog ver: 4 master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=MyISAM master-bin.000001 210 Query 1 307 use `test`; INSERT INTO t1 VALUES (1,1), (2,2) master-bin.000001 307 Query 1 384 use `test`; DELETE FROM t1 @@ -160,7 +160,7 @@ a b DROP TABLE t1; SHOW BINLOG EVENTS; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 4 Format_desc 1 102 Server ver: SERVER_VERSION, Binlog ver: 4 master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=MyISAM master-bin.000001 210 Query 1 307 use `test`; INSERT INTO t1 VALUES (1,1), (2,2) master-bin.000001 307 Query 1 384 use `test`; DELETE FROM t1 @@ -193,7 +193,7 @@ a b DROP TABLE t1; SHOW BINLOG EVENTS; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 4 Format_desc 1 102 Server ver: SERVER_VERSION, Binlog ver: 4 master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=MyISAM master-bin.000001 210 Table_map 1 250 table_id: # (test.t1) master-bin.000001 250 Write_rows 1 297 table_id: # flags: STMT_END_F diff --git a/mysql-test/r/rpl_truncate_3innodb.result b/mysql-test/r/rpl_truncate_3innodb.result index 8d5fbed0795..062c9704ae0 100644 --- a/mysql-test/r/rpl_truncate_3innodb.result +++ b/mysql-test/r/rpl_truncate_3innodb.result @@ -31,7 +31,7 @@ a b DROP TABLE t1; SHOW BINLOG EVENTS; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 4 Format_desc 1 102 Server ver: SERVER_VERSION, Binlog ver: 4 master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=InnoDB master-bin.000001 210 Query 1 97 use `test`; INSERT INTO t1 VALUES (1,1), (2,2) master-bin.000001 307 Xid 1 334 COMMIT /* xid= */ @@ -65,7 +65,7 @@ a b DROP TABLE t1; SHOW BINLOG EVENTS; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 4 Format_desc 1 102 Server ver: SERVER_VERSION, Binlog ver: 4 master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=InnoDB master-bin.000001 210 Query 1 97 use `test`; INSERT INTO t1 VALUES (1,1), (2,2) master-bin.000001 307 Xid 1 334 COMMIT /* xid= */ @@ -99,7 +99,7 @@ a b DROP TABLE t1; SHOW BINLOG EVENTS; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 4 Format_desc 1 102 Server ver: SERVER_VERSION, Binlog ver: 4 master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=InnoDB master-bin.000001 210 Table_map 1 40 table_id: # (test.t1) master-bin.000001 250 Write_rows 1 87 table_id: # flags: STMT_END_F @@ -134,7 +134,7 @@ a b DROP TABLE t1; SHOW BINLOG EVENTS; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 4 Format_desc 1 102 Server ver: SERVER_VERSION, Binlog ver: 4 master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=InnoDB master-bin.000001 210 Query 1 97 use `test`; INSERT INTO t1 VALUES (1,1), (2,2) master-bin.000001 307 Xid 1 334 COMMIT /* xid= */ @@ -168,7 +168,7 @@ a b DROP TABLE t1; SHOW BINLOG EVENTS; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 4 Format_desc 1 102 Server ver: SERVER_VERSION, Binlog ver: 4 master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=InnoDB master-bin.000001 210 Query 1 97 use `test`; INSERT INTO t1 VALUES (1,1), (2,2) master-bin.000001 307 Xid 1 334 COMMIT /* xid= */ @@ -203,7 +203,7 @@ a b DROP TABLE t1; SHOW BINLOG EVENTS; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 4 Format_desc 1 102 Server ver: SERVER_VERSION, Binlog ver: 4 master-bin.000001 102 Query 1 210 use `test`; CREATE TABLE t1 (a INT, b LONG) ENGINE=InnoDB master-bin.000001 210 Table_map 1 40 table_id: # (test.t1) master-bin.000001 250 Write_rows 1 87 table_id: # flags: STMT_END_F diff --git a/mysql-test/r/rpl_truncate_7ndb.result b/mysql-test/r/rpl_truncate_7ndb.result index 40ca6409759..b33f8f1ccaa 100644 --- a/mysql-test/r/rpl_truncate_7ndb.result +++ b/mysql-test/r/rpl_truncate_7ndb.result @@ -29,7 +29,7 @@ a b DROP TABLE t1; SHOW BINLOG EVENTS; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 4 Format_desc 1 102 Server ver: SERVER_VERSION, Binlog ver: 4 master-bin.000001 102 Query 1 219 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB master-bin.000001 219 Query 1 283 BEGIN master-bin.000001 283 Table_map 1 40 table_id: # (test.t1) @@ -72,7 +72,7 @@ a b DROP TABLE t1; SHOW BINLOG EVENTS; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.10-beta-debug-log, Binlog ver: 4 +master-bin.000001 4 Format_desc 1 102 Server ver: SERVER_VERSION, Binlog ver: 4 master-bin.000001 102 Query 1 219 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB master-bin.000001 219 Query 1 283 BEGIN master-bin.000001 283 Table_map 1 40 table_id: # (test.t1) diff --git a/mysql-test/t/rpl_truncate_7ndb.test b/mysql-test/t/rpl_truncate_7ndb.test index 7a8101cbf55..7a6151c6028 100644 --- a/mysql-test/t/rpl_truncate_7ndb.test +++ b/mysql-test/t/rpl_truncate_7ndb.test @@ -37,6 +37,7 @@ SELECT * FROM t1 ORDER BY a,b; connection master; DROP TABLE t1; --replace_regex /table_id: [0-9]+/table_id: #/ +--replace_result $SERVER_VERSION SERVER_VERSION SHOW BINLOG EVENTS; --echo **** On Master **** @@ -60,5 +61,6 @@ SELECT * FROM t1 ORDER BY a,b; connection master; DROP TABLE t1; --replace_regex /table_id: [0-9]+/table_id: #/ +--replace_result $SERVER_VERSION SERVER_VERSION SHOW BINLOG EVENTS; -- cgit v1.2.1 From de5de7c3196533922169bb0538433fc9618f34f1 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 00:38:34 +0200 Subject: ndb - bug#20406 multi-platform testing - not FIX --- mysql-test/r/ndb_condition_pushdown.result | 24 ++++++++++++++++++++++++ mysql-test/t/ndb_condition_pushdown.test | 22 ++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/mysql-test/r/ndb_condition_pushdown.result b/mysql-test/r/ndb_condition_pushdown.result index 27a510b252f..4e5597a4851 100644 --- a/mysql-test/r/ndb_condition_pushdown.result +++ b/mysql-test/r/ndb_condition_pushdown.result @@ -1842,5 +1842,29 @@ a b select * from t1 where b like 'abc' or b like 'abc'; a b 3 abc +drop table t1; +create table t1 ( fname varchar(255), lname varchar(255) ) +engine=ndbcluster; +insert into t1 values ("Young","Foo"); +set engine_condition_pushdown = 0; +SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%'); +fname lname +Young Foo +set engine_condition_pushdown = 1; +SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%'); +fname lname +Young Foo +insert into t1 values ("aaa", "aaa"); +insert into t1 values ("bbb", "bbb"); +insert into t1 values ("ccc", "ccc"); +insert into t1 values ("ddd", "ddd"); +set engine_condition_pushdown = 0; +SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%'); +fname lname +Young Foo +set engine_condition_pushdown = 1; +SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%'); +fname lname +Young Foo set engine_condition_pushdown = @old_ecpd; DROP TABLE t1,t2,t3,t4,t5; diff --git a/mysql-test/t/ndb_condition_pushdown.test b/mysql-test/t/ndb_condition_pushdown.test index 398ca3c502c..cc138b32b7e 100644 --- a/mysql-test/t/ndb_condition_pushdown.test +++ b/mysql-test/t/ndb_condition_pushdown.test @@ -1686,5 +1686,27 @@ select * from t1 where b like 'ab' or b like 'ab'; select * from t1 where b like 'abc'; select * from t1 where b like 'abc' or b like 'abc'; +# bug#20406 (maybe same as bug#17421 -1, not seen on 32-bit x86) +drop table t1; +create table t1 ( fname varchar(255), lname varchar(255) ) +engine=ndbcluster; +insert into t1 values ("Young","Foo"); + +set engine_condition_pushdown = 0; +SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%'); +set engine_condition_pushdown = 1; +SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%'); + +# make sure optimizer does not do some crazy shortcut +insert into t1 values ("aaa", "aaa"); +insert into t1 values ("bbb", "bbb"); +insert into t1 values ("ccc", "ccc"); +insert into t1 values ("ddd", "ddd"); + +set engine_condition_pushdown = 0; +SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%'); +set engine_condition_pushdown = 1; +SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%'); + set engine_condition_pushdown = @old_ecpd; DROP TABLE t1,t2,t3,t4,t5; -- cgit v1.2.1 From 748f589ecde3fca1610db5e5512daacc6e14aba2 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 01:19:13 +0200 Subject: correct initialization of event operation to enable early delete --- storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp b/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp index c8f05f3a96c..e0b8043a8ff 100644 --- a/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp +++ b/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp @@ -79,7 +79,8 @@ NdbEventOperationImpl::NdbEventOperationImpl(NdbEventOperation &f, NdbEventOperation(*this), m_facade(&f), m_ndb(theNdb), - m_state(EO_ERROR) + m_state(EO_ERROR), + m_oid(~(Uint32)0) { DBUG_ENTER("NdbEventOperationImpl::NdbEventOperationImpl"); @@ -88,7 +89,11 @@ NdbEventOperationImpl::NdbEventOperationImpl(NdbEventOperation &f, assert(myDict != NULL); const NdbDictionary::Event *myEvnt = myDict->getEvent(eventName); - if (!myEvnt) { m_error.code= myDict->getNdbError().code; DBUG_VOID_RETURN; } + if (!myEvnt) + { + m_error.code= myDict->getNdbError().code; + DBUG_VOID_RETURN; + } init(myEvnt->m_impl); DBUG_VOID_RETURN; @@ -99,7 +104,8 @@ NdbEventOperationImpl::NdbEventOperationImpl(Ndb *theNdb, NdbEventOperation(*this), m_facade(this), m_ndb(theNdb), - m_state(EO_ERROR) + m_state(EO_ERROR), + m_oid(~(Uint32)0) { DBUG_ENTER("NdbEventOperationImpl::NdbEventOperationImpl [evnt]"); init(evnt); @@ -113,7 +119,6 @@ NdbEventOperationImpl::init(NdbEventImpl& evnt) m_magic_number = 0; mi_type = 0; - m_oid = ~(Uint32)0; m_change_mask = 0; #ifdef VM_TRACE m_data_done_count = 0; @@ -173,6 +178,9 @@ NdbEventOperationImpl::~NdbEventOperationImpl() DBUG_ENTER("NdbEventOperationImpl::~NdbEventOperationImpl"); m_magic_number= 0; + if (m_oid == ~(Uint32)0) + DBUG_VOID_RETURN; + stop(); // m_bufferHandle->dropSubscribeEvent(m_bufferId); ; // ToDo? We should send stop signal here -- cgit v1.2.1 From 17f566506efaed3edd6d37e9ca2bed98dc402715 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 01:20:39 +0200 Subject: ndb: add missing LOCK_open --- sql/ha_ndbcluster.cc | 2 ++ sql/ha_ndbcluster_binlog.cc | 1 + 2 files changed, 3 insertions(+) diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 94fb7e6eb5c..d8f4ddac73c 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -5848,6 +5848,7 @@ int ndbcluster_drop_database_impl(const char *path) while ((tabname=it++)) { tablename_to_filename(tabname, tmp, FN_REFLEN - (tmp - full_path)-1); + VOID(pthread_mutex_lock(&LOCK_open)); if (ha_ndbcluster::delete_table(0, ndb, full_path, dbname, tabname)) { const NdbError err= dict->getNdbError(); @@ -5857,6 +5858,7 @@ int ndbcluster_drop_database_impl(const char *path) ret= ndb_to_mysql_error(&err); } } + VOID(pthread_mutex_unlock(&LOCK_open)); } DBUG_RETURN(ret); } diff --git a/sql/ha_ndbcluster_binlog.cc b/sql/ha_ndbcluster_binlog.cc index af6eb74a236..022c8a021cb 100644 --- a/sql/ha_ndbcluster_binlog.cc +++ b/sql/ha_ndbcluster_binlog.cc @@ -286,6 +286,7 @@ ndbcluster_binlog_open_table(THD *thd, NDB_SHARE *share, int error; DBUG_ENTER("ndbcluster_binlog_open_table"); + safe_mutex_assert_owner(&LOCK_open); init_tmp_table_share(table_share, share->db, 0, share->table_name, share->key); if ((error= open_table_def(thd, table_share, 0))) -- cgit v1.2.1 From cb0f1641fe4f746508e7715fa9417c6afa19e9cc Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 13 Jun 2006 22:46:38 -0400 Subject: BUG#20397: Crash at ALTER TABLE t1 engine = x; for partitioned table mysql-test/r/partition_error.result: New test cases mysql-test/t/partition_error.test: New test cases sql/sql_table.cc: ALTER TABLE t1 engine = x; will behave exactly like ALTER TABLE t1; See no reason why one should change handler to something not specified in query when there is already something one is attached to. --- mysql-test/r/partition_error.result | 24 ++++++++++++++++++++++++ mysql-test/t/partition_error.test | 20 ++++++++++++++++++++ sql/sql_table.cc | 12 ++++++++++++ 3 files changed, 56 insertions(+) diff --git a/mysql-test/r/partition_error.result b/mysql-test/r/partition_error.result index a7ca3d9b2fa..a4866209ee6 100644 --- a/mysql-test/r/partition_error.result +++ b/mysql-test/r/partition_error.result @@ -1,4 +1,28 @@ drop table if exists t1; +create table t1 (a int) +engine = x +partition by key (a); +Warnings: +Error 1286 Unknown table engine 'x' +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY (a) +drop table t1; +create table t1 (a int) +engine = innodb +partition by list (a) +(partition p0 values in (0)); +alter table t1 engine = x; +Warnings: +Error 1286 Unknown table engine 'x' +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 PARTITION BY LIST (a) (PARTITION p0 VALUES IN (0) ENGINE = InnoDB) +drop table t1; partition by list (a) partitions 3 (partition x1 values in (1,2,9,4) tablespace ts1, diff --git a/mysql-test/t/partition_error.test b/mysql-test/t/partition_error.test index 659f0b8cef4..39fde685bce 100644 --- a/mysql-test/t/partition_error.test +++ b/mysql-test/t/partition_error.test @@ -8,6 +8,24 @@ drop table if exists t1; --enable_warnings +# +# Bug 20397: Partitions: Crash when using non-existing engine +# +create table t1 (a int) +engine = x +partition by key (a); +show create table t1; +drop table t1; + +create table t1 (a int) +engine = innodb +partition by list (a) +(partition p0 values in (0)); + +alter table t1 engine = x; +show create table t1; +drop table t1; + # # Partition by key stand-alone error # @@ -775,3 +793,5 @@ partition by range (a + (select count(*) from t1)) -- error ER_PARTITION_FUNC_NOT_ALLOWED_ERROR create table t1 (a char(10)) partition by hash (extractvalue(a,'a')); + + diff --git a/sql/sql_table.cc b/sql/sql_table.cc index a49b7a2cc42..58d50727000 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -4992,7 +4992,19 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, old_db_type= table->s->db_type; if (!create_info->db_type) + { + if (create_info->used_fields & HA_CREATE_USED_ENGINE) + { + /* + This case happens when the user specified + ENGINE = x where x is a non-existing storage engine + We clear the flag and treat it the same way + as if no storage engine was specified. + */ + create_info->used_fields^= HA_CREATE_USED_ENGINE; + } create_info->db_type= old_db_type; + } #ifdef WITH_PARTITION_STORAGE_ENGINE if (prep_alter_part_table(thd, table, alter_info, create_info, old_db_type, -- cgit v1.2.1 From 36b49259b1965743f12cd072bd033162becfbd10 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 13 Jun 2006 19:57:50 -0700 Subject: Fixed bug #14896. This bug in Field_string::cmp resulted in a wrong comparison with keys in partial indexes over multi-byte character fields. Given field a is declared as a varchar(16) collate utf8_unicode_ci INDEX(a(4)) gives us an example of such an index. Wrong key comparisons could lead to wrong result sets if the selected query execution plan used a range scan by a partial index over a utf8 character field. This also caused wrong results in many other cases. mysql-test/r/ctype_utf8.result: Added test cases for bug #14896. mysql-test/t/ctype_utf8.test: Added test cases for bug #14896. --- mysql-test/r/ctype_utf8.result | 40 ++++++++++++++++++++++++++++++++++++++++ mysql-test/t/ctype_utf8.test | 26 ++++++++++++++++++++++++++ sql/field.cc | 20 +++++++------------- 3 files changed, 73 insertions(+), 13 deletions(-) diff --git a/mysql-test/r/ctype_utf8.result b/mysql-test/r/ctype_utf8.result index 69d7577ee77..cc271176dfc 100644 --- a/mysql-test/r/ctype_utf8.result +++ b/mysql-test/r/ctype_utf8.result @@ -1124,3 +1124,43 @@ check table t1; Table Op Msg_type Msg_text test.t1 check status OK drop table t1; +SET NAMES utf8; +CREATE TABLE t1 (id int PRIMARY KEY, +a varchar(16) collate utf8_unicode_ci NOT NULL default '', +b int, +f varchar(128) default 'XXX', +INDEX (a(4)) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +INSERT INTO t1(id, a, b) VALUES +(1, 'cccc', 50), (2, 'cccc', 70), (3, 'cccc', 30), +(4, 'cccc', 30), (5, 'cccc', 20), (6, 'bbbbbb', 40), +(7, 'dddd', 30), (8, 'aaaa', 10), (9, 'aaaa', 50), +(10, 'eeeee', 40), (11, 'bbbbbb', 60); +SELECT id, a, b FROM t1; +id a b +1 cccc 50 +2 cccc 70 +3 cccc 30 +4 cccc 30 +5 cccc 20 +6 bbbbbb 40 +7 dddd 30 +8 aaaa 10 +9 aaaa 50 +10 eeeee 40 +11 bbbbbb 60 +SELECT id, a, b FROM t1 WHERE a BETWEEN 'aaaa' AND 'bbbbbb'; +id a b +8 aaaa 10 +9 aaaa 50 +6 bbbbbb 40 +11 bbbbbb 60 +SELECT id, a FROM t1 WHERE a='bbbbbb'; +id a +6 bbbbbb +11 bbbbbb +SELECT id, a FROM t1 WHERE a='bbbbbb' ORDER BY b; +id a +6 bbbbbb +11 bbbbbb +DROP TABLE t1; diff --git a/mysql-test/t/ctype_utf8.test b/mysql-test/t/ctype_utf8.test index 5044f7979f1..9b8e6590999 100644 --- a/mysql-test/t/ctype_utf8.test +++ b/mysql-test/t/ctype_utf8.test @@ -926,4 +926,30 @@ INSERT INTO t1 VALUES('uUABCDEFGHIGKLMNOPRSTUVWXYZ̈bbbbbbbbbbbbbbbbbbbbbbbbbbbb check table t1; drop table t1; +# +# Bug#14896: Comparison with a key in a partial index over mb chararacter field +# + +SET NAMES utf8; +CREATE TABLE t1 (id int PRIMARY KEY, + a varchar(16) collate utf8_unicode_ci NOT NULL default '', + b int, + f varchar(128) default 'XXX', + INDEX (a(4)) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +INSERT INTO t1(id, a, b) VALUES + (1, 'cccc', 50), (2, 'cccc', 70), (3, 'cccc', 30), + (4, 'cccc', 30), (5, 'cccc', 20), (6, 'bbbbbb', 40), + (7, 'dddd', 30), (8, 'aaaa', 10), (9, 'aaaa', 50), + (10, 'eeeee', 40), (11, 'bbbbbb', 60); + +SELECT id, a, b FROM t1; + +SELECT id, a, b FROM t1 WHERE a BETWEEN 'aaaa' AND 'bbbbbb'; + +SELECT id, a FROM t1 WHERE a='bbbbbb'; +SELECT id, a FROM t1 WHERE a='bbbbbb' ORDER BY b; + +DROP TABLE t1; + # End of 4.1 tests diff --git a/sql/field.cc b/sql/field.cc index a64eaad7308..6eea006fcc8 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -5072,17 +5072,6 @@ int Field_string::cmp(const char *a_ptr, const char *b_ptr) { uint a_len, b_len; - if (field_charset->strxfrm_multiply > 1) - { - /* - We have to remove end space to be able to compare multi-byte-characters - like in latin_de 'ae' and 0xe4 - */ - return field_charset->coll->strnncollsp(field_charset, - (const uchar*) a_ptr, field_length, - (const uchar*) b_ptr, - field_length); - } if (field_charset->mbmaxlen != 1) { uint char_len= field_length/field_charset->mbmaxlen; @@ -5091,8 +5080,13 @@ int Field_string::cmp(const char *a_ptr, const char *b_ptr) } else a_len= b_len= field_length; - return my_strnncoll(field_charset,(const uchar*) a_ptr, a_len, - (const uchar*) b_ptr, b_len); + /* + We have to remove end space to be able to compare multi-byte-characters + like in latin_de 'ae' and 0xe4 + */ + return field_charset->coll->strnncollsp(field_charset, + (const uchar*) a_ptr, a_len, + (const uchar*) b_ptr, b_len); } -- cgit v1.2.1 From 5eead315e038d705b69eb1ca354398b38b533441 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 13 Jun 2006 22:38:00 -0700 Subject: Post-review corrections of the fix for bug #18206. mysql-test/r/func_group.result: Added another test case for bug #18206. mysql-test/t/func_group.test: Added another test case for bug #18206. --- mysql-test/r/func_group.result | 13 +++++++++++++ mysql-test/t/func_group.test | 9 +++++++++ sql/opt_sum.cc | 6 ++++-- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/func_group.result b/mysql-test/r/func_group.result index ffa68f279f3..f16fb01d0df 100644 --- a/mysql-test/r/func_group.result +++ b/mysql-test/r/func_group.result @@ -940,3 +940,16 @@ EXPLAIN SELECT MAX(b) FROM t1; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 2 DROP TABLE t1; +CREATE TABLE t1 (id int , b varchar(512), INDEX(b(250))) COLLATE latin1_bin; +Warnings: +Warning 1246 Converting column 'b' from CHAR to TEXT +INSERT INTO t1 VALUES +(1,CONCAT(REPEAT('_', 250), "qq")), (1,CONCAT(REPEAT('_', 250), "zz")), +(1,CONCAT(REPEAT('_', 250), "aa")), (1,CONCAT(REPEAT('_', 250), "ff")); +SELECT MAX(b) FROM t1; +MAX(b) +__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________zz +EXPLAIN SELECT MAX(b) FROM t1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 4 +DROP TABLE t1; diff --git a/mysql-test/t/func_group.test b/mysql-test/t/func_group.test index f8a3ed0f25e..7133b96f868 100644 --- a/mysql-test/t/func_group.test +++ b/mysql-test/t/func_group.test @@ -617,4 +617,13 @@ SELECT MAX(b) FROM t1; EXPLAIN SELECT MAX(b) FROM t1; DROP TABLE t1; +CREATE TABLE t1 (id int , b varchar(512), INDEX(b(250))) COLLATE latin1_bin; +INSERT INTO t1 VALUES + (1,CONCAT(REPEAT('_', 250), "qq")), (1,CONCAT(REPEAT('_', 250), "zz")), + (1,CONCAT(REPEAT('_', 250), "aa")), (1,CONCAT(REPEAT('_', 250), "ff")); + +SELECT MAX(b) FROM t1; +EXPLAIN SELECT MAX(b) FROM t1; +DROP TABLE t1; + # End of 4.1 tests diff --git a/sql/opt_sum.cc b/sql/opt_sum.cc index 97e271121d3..21c637f4faf 100644 --- a/sql/opt_sum.cc +++ b/sql/opt_sum.cc @@ -685,8 +685,10 @@ static bool find_key_for_maxmin(bool max_fl, TABLE_REF *ref, if (!(table->file->index_flags(idx, jdx, 0) & HA_READ_ORDER)) return 0; - /* Check whether the index component is partial */ - if (part->length < table->field[part->fieldnr-1]->pack_length()) + /* Check whether the index component is partial */ + Field *part_field= table->field[part->fieldnr-1]; + if ((part_field->flags & BLOB_FLAG) || + part->length < part_field->key_length()) break; if (field->eq(part->field)) -- cgit v1.2.1 From eff0000226253bf87d03f1f465c52bee09a679c8 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 09:12:37 +0200 Subject: change test targets to be more modular. include unit tests into make test --- Makefile.am | 43 ++++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/Makefile.am b/Makefile.am index dfa6c7f0f07..8a575b3c365 100644 --- a/Makefile.am +++ b/Makefile.am @@ -101,7 +101,9 @@ dist-hook: tags: support-files/build-tags -.PHONY: init-db bin-dist + +.PHONY: init-db bin-dist test test-full test-ps test-nr \ + test-ns test-pr test-unit # Target 'test' will run the regression test suite using the built server. # @@ -111,29 +113,34 @@ tags: # will then calculate the various port numbers it needs from this, # making sure each user use different ports. -test: +test-unit: + cd unittest && $(MAKE) test + +test-ps: cd mysql-test ; \ - ./mysql-test-run.pl --mysqld=--binlog-format=statement && \ - ./mysql-test-run.pl --ps-protocol --mysqld=--binlog-format=row + ./mysql-test-run.pl $(force) --ps-protocol --mysqld=--binlog-format=statement -test-full: +test-nr: cd mysql-test ; \ - ./mysql-test-run.pl --mysqld=--binlog-format=statement && \ - ./mysql-test-run.pl --ps-protocol --mysqld=--binlog-format=statement && \ - ./mysql-test-run.pl --mysqld=--binlog-format=row && \ - ./mysql-test-run.pl --ps-protocol --mysqld=--binlog-format=row + ./mysql-test-run.pl $(force) --mysqld=--binlog-format=row -test-force: +test-pr: cd mysql-test ; \ - ./mysql-test-run.pl --force --mysqld=--binlog-format=statement && \ - ./mysql-test-run.pl --ps-protocol --force --mysqld=--binlog-format=row + ./mysql-test-run.pl $(force) --ps-protocol --mysqld=--binlog-format=row -test-force-full: +test-ns: cd mysql-test ; \ - ./mysql-test-run.pl --force --mysqld=--binlog-format=statement && \ - ./mysql-test-run.pl --force --ps-protocol --mysqld=--binlog-format=statement && \ - ./mysql-test-run.pl --force --mysqld=--binlog-format=row && \ - ./mysql-test-run.pl --force --ps-protocol --mysqld=--binlog-format=row + ./mysql-test-run.pl $(force) --mysqld=--binlog-format=statement + +test: test-unit test-ns test-pr + +test-full: test test-nr test-ps + +test-force: + $(MAKE) force=--force test + +test-force-full: + $(MAKE) force=--force test-full # Keep these for a while test-pl: test @@ -141,8 +148,6 @@ test-full-pl: test-full test-force-pl: test-force test-force-full-pl: test-force-full - - # Don't update the files from bitkeeper %::SCCS/s.% -- cgit v1.2.1 From 115cb627b0698919da5aff221333af28fc6d0f00 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 09:19:02 +0200 Subject: Bug#14708: Inconsistent treatment of NULLs in LEFT JOINed FULLTEXT matching without index Don't rely on table->null_row when no index is used - it may be a multi-table --- mysql-test/r/fulltext_left_join.result | 17 +++++++++++++++++ mysql-test/t/fulltext_left_join.test | 15 ++++++++++++++- sql/item_func.cc | 2 +- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/fulltext_left_join.result b/mysql-test/r/fulltext_left_join.result index f3dad290525..68a424fa3a5 100644 --- a/mysql-test/r/fulltext_left_join.result +++ b/mysql-test/r/fulltext_left_join.result @@ -50,3 +50,20 @@ venue_id venue_text dt name entity_id 1 a1 2003-05-23 19:30:00 aberdeen town hall 1 NULL a2 2003-05-23 19:30:00 NULL NULL drop table t1,t2; +create table t1 (id int not null primary key, d char(200) not null, e char(200)); +insert into t1 values (1, 'aword', null), (2, 'aword', 'bword'), (3, 'bword', null), (4, 'bword', 'aword'), (5, 'aword and bword', null); +select * from t1 where match(d, e) against ('+aword +bword' in boolean mode); +id d e +2 aword bword +4 bword aword +5 aword and bword NULL +create table t2 (m_id int not null, f char(200), key (m_id)); +insert into t2 values (1, 'bword'), (3, 'aword'), (5, ''); +select * from t1 left join t2 on m_id = id where match(d, e, f) against ('+aword +bword' in boolean mode); +id d e m_id f +1 aword NULL 1 bword +2 aword bword NULL NULL +3 bword NULL 3 aword +4 bword aword NULL NULL +5 aword and bword NULL 5 +drop table t1,t2; diff --git a/mysql-test/t/fulltext_left_join.test b/mysql-test/t/fulltext_left_join.test index 3bb1f0b7309..7c22f49ed8c 100644 --- a/mysql-test/t/fulltext_left_join.test +++ b/mysql-test/t/fulltext_left_join.test @@ -32,7 +32,7 @@ select match(t1.texte,t1.sujet,t1.motsclefs) against('droit' IN BOOLEAN MODE) drop table t1, t2; # -# Bug #484, reported by Stephen Brandon +# BUG#484, reported by Stephen Brandon # create table t1 (venue_id int(11) default null, venue_text varchar(255) default null, dt datetime default null) engine=myisam; @@ -45,4 +45,17 @@ select * from t1 left join t2 on (venue_id = entity_id and match(name) against(' select * from t1 left join t2 on (venue_id = entity_id and match(name) against('aberdeen')) where dt = '2003-05-23 19:30:00'; drop table t1,t2; +# +# BUG#14708 +# Inconsistent treatment of NULLs in LEFT JOINed FULLTEXT matching without index +# + +create table t1 (id int not null primary key, d char(200) not null, e char(200)); +insert into t1 values (1, 'aword', null), (2, 'aword', 'bword'), (3, 'bword', null), (4, 'bword', 'aword'), (5, 'aword and bword', null); +select * from t1 where match(d, e) against ('+aword +bword' in boolean mode); +create table t2 (m_id int not null, f char(200), key (m_id)); +insert into t2 values (1, 'bword'), (3, 'aword'), (5, ''); +select * from t1 left join t2 on m_id = id where match(d, e, f) against ('+aword +bword' in boolean mode); +drop table t1,t2; + # End of 4.1 tests diff --git a/sql/item_func.cc b/sql/item_func.cc index 3b633295f20..051238843fa 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -4516,7 +4516,7 @@ double Item_func_match::val_real() if (ft_handler == NULL) DBUG_RETURN(-1.0); - if (table->null_row) /* NULL row from an outer join */ + if (key != NO_SUCH_KEY && table->null_row) /* NULL row from an outer join */ DBUG_RETURN(0.0); if (join_key) -- cgit v1.2.1 From 19d55e396eb73af5d630045554e49a9ebbadae69 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 10:04:30 +0200 Subject: move --disable_warnings where it belongs --- mysql-test/t/ps_1general.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mysql-test/t/ps_1general.test b/mysql-test/t/ps_1general.test index 0b9a46ad4d3..76da296c0b0 100644 --- a/mysql-test/t/ps_1general.test +++ b/mysql-test/t/ps_1general.test @@ -320,16 +320,16 @@ prepare stmt4 from ' show status like ''Threads_running'' '; execute stmt4; prepare stmt4 from ' show variables like ''sql_mode'' '; execute stmt4; -prepare stmt4 from ' show engine bdb logs '; # The output depends on the bdb being enabled and on the history # history (actions of the bdb engine). # That is the reason why, we switch the output here off. # (The real output will be tested in ps_6bdb.test) --disable_warnings +prepare stmt4 from ' show engine bdb logs '; +--enable_warnings --disable_result_log execute stmt4; --enable_result_log ---enable_warnings prepare stmt4 from ' show grants for user '; --error 1295 prepare stmt4 from ' show create table t2 '; -- cgit v1.2.1 From 2252f6a7f0eec42810437339154b6934b2b9207f Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 10:23:08 +0200 Subject: Update test result to 5.1 format mysql-test/r/create_not_windows.result: Update test result to use uppercase for keywords --- mysql-test/r/create_not_windows.result | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/create_not_windows.result b/mysql-test/r/create_not_windows.result index b975c98c2b1..2d7fd30dfdd 100644 --- a/mysql-test/r/create_not_windows.result +++ b/mysql-test/r/create_not_windows.result @@ -7,8 +7,8 @@ primary key (_id) show create table `about:text`; Table Create Table about:text CREATE TABLE `about:text` ( - `_id` int(11) NOT NULL auto_increment, - `about:text` varchar(255) NOT NULL default '', - PRIMARY KEY (`_id`) + `_id` int(11) NOT NULL AUTO_INCREMENT, + `about:text` varchar(255) NOT NULL DEFAULT '', + PRIMARY KEY (`_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table `about:text`; -- cgit v1.2.1 From 1025a02ac143fcb88f7a27db54ff06fbf711bfaf Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 13:52:16 +0500 Subject: after merege fix --- mysql-test/r/information_schema.result | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result index 7bd8fefbdde..070049b303a 100644 --- a/mysql-test/r/information_schema.result +++ b/mysql-test/r/information_schema.result @@ -1158,14 +1158,6 @@ routine_name delete from proc where name=''; use test; -select * from information_schema.engines WHERE ENGINE="MyISAM"; -ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS -MyISAM ENABLED Default engine as of MySQL 3.23 with great performance NO NO NO -grant select on *.* to user3148@localhost; -select user,db from information_schema.processlist; -user db -user3148 test -drop user user3148@localhost; grant select on test.* to mysqltest_1@localhost; create table t1 (id int); create view v1 as select * from t1; @@ -1188,3 +1180,11 @@ concat(@a, table_name) @a table_name .t1 . t1 .t2 . t2 drop table t1,t2; +select * from information_schema.engines WHERE ENGINE="MyISAM"; +ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS +MyISAM ENABLED Default engine as of MySQL 3.23 with great performance NO NO NO +grant select on *.* to user3148@localhost; +select user,db from information_schema.processlist; +user db +user3148 test +drop user user3148@localhost; -- cgit v1.2.1 From cf0374854b09e9e634964efef91325d2e61f3938 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 11:08:36 +0200 Subject: Added flag to detect renaming of fields (not supported as fast alter table for ndbcluster) --- include/mysql_com.h | 1 + sql/ha_ndbcluster.cc | 4 ++-- sql/sql_table.cc | 5 +++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/include/mysql_com.h b/include/mysql_com.h index 623aaf43783..c65f5944747 100644 --- a/include/mysql_com.h +++ b/include/mysql_com.h @@ -99,6 +99,7 @@ enum enum_server_command #define GET_FIXED_FIELDS_FLAG (1 << 18) /* Used to get fields in item tree */ #define FIELD_IN_PART_FUNC_FLAG (1 << 19)/* Field part of partition func */ #define FIELD_IN_ADD_INDEX (1<< 20) /* Intern: Field used in ADD INDEX */ +#define FIELD_IS_RENAMED (1<< 21) /* Intern: Field is being renamed */ #define REFRESH_GRANT 1 /* Refresh grant tables */ #define REFRESH_LOG 2 /* Start on new log file */ diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index b3ff91cb823..e07c696d46e 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -9833,8 +9833,8 @@ bool ha_ndbcluster::check_if_incompatible_data(HA_CREATE_INFO *info, for (i= 0; i < table->s->fields; i++) { Field *field= table->field[i]; - const NDBCOL *col= tab->getColumn(field->field_name); - if (!col) + const NDBCOL *col= tab->getColumn(i); + if (field->flags & FIELD_IS_RENAMED) { DBUG_PRINT("info", ("Field has been renamed, copy table")); DBUG_RETURN(COMPATIBLE_DATA_NO); diff --git a/sql/sql_table.cc b/sql/sql_table.cc index e9c89b4983d..c0db7120b86 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -4744,6 +4744,11 @@ static uint compare_tables(TABLE *table, List *create_list, create_info->row_type != ROW_TYPE_FIXED) create_info->table_options|= HA_OPTION_PACK_RECORD; + /* Check if field was renamed */ + if (my_strcasecmp(system_charset_info, + field->field_name, + new_field->field_name)) + field->flags|= FIELD_IS_RENAMED; /* Evaluate changes bitmap and send to check_if_incompatible_data() */ if (!(tmp= field->is_equal(new_field))) DBUG_RETURN(ALTER_TABLE_DATA_CHANGED); -- cgit v1.2.1 From d70df431284f76771f9965b6d620626b5f03392b Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 11:38:55 +0200 Subject: Added flag to detect renaming of fields (not supported as fast alter table for ndbcluster): added test case --- mysql-test/r/ndb_alter_table.result | 7 ++++++- mysql-test/t/ndb_alter_table.test | 13 ++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/ndb_alter_table.result b/mysql-test/r/ndb_alter_table.result index e506973f347..7facb5fa286 100644 --- a/mysql-test/r/ndb_alter_table.result +++ b/mysql-test/r/ndb_alter_table.result @@ -320,8 +320,13 @@ LOAD DATA INFILE 'tmp.dat' INTO TABLE ndb_show_tables; set @t1_id = (select id from ndb_show_tables where name like '%t1%'); truncate ndb_show_tables; alter table t1 change tiny new_tiny tinyint(4) DEFAULT '0' NOT NULL; +LOAD DATA INFILE 'tmp.dat' INTO TABLE ndb_show_tables; +select 'no_copy' from ndb_show_tables where id = @t1_id and name like '%t1%'; +no_copy +set @t1_id = (select id from ndb_show_tables where name like '%t1%'); +truncate ndb_show_tables; create index i1 on t1(medium); -alter table t1 add index i2(long_int); +alter table t1 add index i2(new_tiny); drop index i1 on t1; LOAD DATA INFILE 'tmp.dat' INTO TABLE ndb_show_tables; select 'no_copy' from ndb_show_tables where id = @t1_id and name like '%t1%'; diff --git a/mysql-test/t/ndb_alter_table.test b/mysql-test/t/ndb_alter_table.test index 8e3b4a6ca89..73c612b203f 100644 --- a/mysql-test/t/ndb_alter_table.test +++ b/mysql-test/t/ndb_alter_table.test @@ -367,12 +367,23 @@ CREATE TEMPORARY TABLE ndb_show_tables (id INT, type VARCHAR(20), state VARCHAR( LOAD DATA INFILE 'tmp.dat' INTO TABLE ndb_show_tables; --enable_warnings +# Ndb doesn't support renaming attributes on-line set @t1_id = (select id from ndb_show_tables where name like '%t1%'); truncate ndb_show_tables; alter table t1 change tiny new_tiny tinyint(4) DEFAULT '0' NOT NULL; +--disable_warnings +--exec $NDB_TOOLS_DIR/ndb_show_tables --p > $MYSQLTEST_VARDIR/master-data/test/tmp.dat +LOAD DATA INFILE 'tmp.dat' INTO TABLE ndb_show_tables; +--enable_warnings + +select 'no_copy' from ndb_show_tables where id = @t1_id and name like '%t1%'; + +set @t1_id = (select id from ndb_show_tables where name like '%t1%'); +truncate ndb_show_tables; + create index i1 on t1(medium); -alter table t1 add index i2(long_int); +alter table t1 add index i2(new_tiny); drop index i1 on t1; --disable_warnings -- cgit v1.2.1 From 0795b20b625e1df969e29585b70ed3e57e130203 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 12:01:06 +0200 Subject: Added flag to detect renaming of fields (not supported as fast alter table for ndbcluster): psot review comment: cleared flag before checking --- sql/sql_table.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sql/sql_table.cc b/sql/sql_table.cc index c0db7120b86..3ac41d2910f 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -4745,10 +4745,12 @@ static uint compare_tables(TABLE *table, List *create_list, create_info->table_options|= HA_OPTION_PACK_RECORD; /* Check if field was renamed */ + field->flags&= ~FIELD_IS_RENAMED; if (my_strcasecmp(system_charset_info, field->field_name, new_field->field_name)) field->flags|= FIELD_IS_RENAMED; + /* Evaluate changes bitmap and send to check_if_incompatible_data() */ if (!(tmp= field->is_equal(new_field))) DBUG_RETURN(ALTER_TABLE_DATA_CHANGED); -- cgit v1.2.1 From 2bd4fb46695c565459a41da1cc53860751d50703 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 12:21:18 +0200 Subject: Bug #18595 repeated create, insert, drop can cause MySQL table definition cache to corrupt - add infinite retry on drop table temporary error mysql-test/r/ndb_restore_partition.result: New BitKeeper file ``mysql-test/r/ndb_restore_partition.result'' mysql-test/t/ndb_restore_partition-master.opt: New BitKeeper file ``mysql-test/t/ndb_restore_partition-master.opt'' mysql-test/t/ndb_restore_partition.test: New BitKeeper file ``mysql-test/t/ndb_restore_partition.test'' --- mysql-test/r/ndb_restore_partition.result | 469 ++++++++++++++++++++++++++ mysql-test/t/ndb_restore_partition-master.opt | 1 + mysql-test/t/ndb_restore_partition.test | 375 ++++++++++++++++++++ sql/ha_ndbcluster.cc | 78 ++++- 4 files changed, 906 insertions(+), 17 deletions(-) create mode 100644 mysql-test/r/ndb_restore_partition.result create mode 100644 mysql-test/t/ndb_restore_partition-master.opt create mode 100644 mysql-test/t/ndb_restore_partition.test diff --git a/mysql-test/r/ndb_restore_partition.result b/mysql-test/r/ndb_restore_partition.result new file mode 100644 index 00000000000..7dc4057e615 --- /dev/null +++ b/mysql-test/r/ndb_restore_partition.result @@ -0,0 +1,469 @@ +use test; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c; +CREATE TABLE `t1_c` ( +`capgoaledatta` smallint(5) unsigned NOT NULL auto_increment, +`goaledatta` char(2) NOT NULL default '', +`maturegarbagefa` varchar(32) NOT NULL default '', +PRIMARY KEY (`capgoaledatta`,`goaledatta`,`maturegarbagefa`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1; +INSERT INTO `t1_c` VALUES (2,'3','q3plus.qt'),(4,'4','q3plus.qt'),(1,'3','q3.net'),(3,'4','q3.net'),(3,'20','threetrees.qt'); +CREATE TABLE `t2_c` ( +`capgotod` smallint(5) unsigned NOT NULL auto_increment, +`gotod` smallint(5) unsigned NOT NULL default '0', +`goaledatta` char(2) default NULL, +`maturegarbagefa` varchar(32) default NULL, +`descrpooppo` varchar(64) default NULL, +`svcutonsa` varchar(64) NOT NULL default '', +PRIMARY KEY (`capgotod`), +KEY `i_quadaddsvr` (`gotod`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1; +INSERT INTO `t2_c` VALUES (5,4,'','q3.net','addavp:MK_CASELECTOR=1','postorod rattoaa'),(2,1,'4','','addavp:MK_BRANDTAD=345','REDS Brandtad'),(3,2,'4','q3.net','execorder','fixedRatediPO REDS'),(1,1,'3','','addavp:MK_BRANDTAD=123','TEST Brandtad'),(6,5,'','told.q3.net','addavp:MK_BRANDTAD=123','Brandtad Toldzone'),(4,3,'3','q3.net','addavp:MK_POOLHINT=2','ratedi PO TEST'); +CREATE TABLE `t3_c` ( +`CapGoaledatta` smallint(5) unsigned NOT NULL default '0', +`capgotod` smallint(5) unsigned NOT NULL default '0', +PRIMARY KEY (`capgotod`,`CapGoaledatta`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1; +INSERT INTO `t3_c` VALUES (5,3),(2,4),(5,4),(1,3); +CREATE TABLE `t4_c` ( +`capfa` bigint(20) unsigned NOT NULL auto_increment, +`realm` varchar(32) NOT NULL default '', +`authpwchap` varchar(32) default NULL, +`fa` varchar(32) NOT NULL default '', +`payyingatta` tinyint(4) NOT NULL default '0', +`status` char(1) default NULL, +PRIMARY KEY (`fa`,`realm`), +KEY `capfa` (`capfa`), +KEY `i_quadentity` (`fa`,`realm`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1; +INSERT INTO `t4_c` VALUES (18,'john.smith','q3.net','dessjohn.smith',0,NULL),(21,'quad_katt_with_brandtad','q3.net','acne',0,NULL),(22,'quad_katt_carattoaa','q3.net','acne',0,NULL),(26,'436462612809','sqasdt.q3.net','N/A',0,'6'),(19,'john','smith.qt','dessjohn',0,NULL),(33,'436643196120','sqasdt.q3.net','N/A',1,'6'),(28,'436642900019','sqasdt.q3.net','N/A',0,'6'),(30,'436462900209','sqasdt.q3.net','N/A',0,'6'),(16,'436640006666','sqasdt.q3.net','',0,NULL),(19,'dette','el-redun.com','dessdette',0,NULL),(12,'quad_kattPP','q3.net','acne',2,NULL),(14,'436640008888','sqasdt.q3.net','',0,NULL),(29,'463624900028','sqasdt.q3.net','N/A',0,'6'),(15,'436640099099','sqasdt.q3.net','',0,NULL),(13,'pap','q3plus.qt','acne',1,NULL),(19,'436642612091','sqasdt.q3.net','N/A',0,'6'),(12,'quad_katt','q3.net','acne',0,NULL),(11,'quad_kattVK','q3.net','acne',1,NULL),(32,'463641969502','sqasdt.q3.net','N/A',1,'6'),(20,'joe','q3.net','joedesswd',0,NULL),(29,'436642900034','sqasdt.q3.net','N/A',0,'6'),(25,'contind','armerde.qt','acne',1,NULL); +CREATE TABLE `t5_c` ( +`capfa` bigint(20) unsigned NOT NULL default '0', +`gotod` smallint(5) unsigned NOT NULL default '0', +`orderutonsa` varchar(64) NOT NULL default '', +PRIMARY KEY (`capfa`,`gotod`,`orderutonsa`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1; +INSERT INTO `t5_c` VALUES (21,2,''),(21,1,''),(22,4,''); +CREATE TABLE `t6_c` ( +`capfa_parent` bigint(20) unsigned NOT NULL default '0', +`capfa_child` bigint(20) unsigned NOT NULL default '0', +`relatta` smallint(5) unsigned NOT NULL default '0', +PRIMARY KEY (`capfa_child`,`capfa_parent`,`relatta`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1; +INSERT INTO `t6_c` VALUES (15,16,0),(19,20,0),(18326932092909551615,30,0),(26,29,0),(18326932092909551615,29,0),(19,18,0),(26,28,0),(12,14,0); +CREATE TABLE `t7_c` ( +`dardpo` char(15) NOT NULL default '', +`dardtestard` tinyint(3) unsigned NOT NULL default '0', +`FastFA` char(5) NOT NULL default '', +`FastCode` char(6) NOT NULL default '', +`Fastca` char(1) NOT NULL default '', +`Fastmag` char(1) NOT NULL default '', +`Beareratta` char(2) NOT NULL default '', +PRIMARY KEY (`dardpo`,`dardtestard`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1; +INSERT INTO `t7_c` VALUES ('2.6.2.4',24,'CECHP','54545','0','0','5'),('2.2.5.4',26,'CANFA','33223','1','1','4'),('4.3.2.4',28,'ITALD','54222','1','0','5'),('129..0.0.eins',28,'G','99999','1','1','5'),('1.1.1.1',24,'AUTPT','32323','0','1','3'); +CREATE TABLE `t8_c` ( +`kattjame` varchar(32) NOT NULL default '', +`realm` varchar(32) NOT NULL default '', +`realm_entered` varchar(32) NOT NULL default '', +`maturegarbagefa` varchar(32) NOT NULL default '', +`hunderaaarbagefa_parent` varchar(32) NOT NULL default '', +`kattjame_entered` varchar(32) NOT NULL default '', +`hunderaaarbagefa` varchar(32) NOT NULL default '', +`gest` varchar(16) default NULL, +`hassetino` varchar(16) NOT NULL default '', +`aaaproxysessfa` varchar(255) default NULL, +`autologonallowed` char(1) default NULL, +`squardporoot` varchar(15) NOT NULL default '', +`naspo` varchar(15) default NULL, +`beareratta` char(2) default NULL, +`fastCode` varchar(6) default NULL, +`fastFA` varchar(5) default NULL, +`fastca` char(1) default NULL, +`fastmag` char(1) default NULL, +`lastupdate` datetime default NULL, +`hassetistart` datetime NOT NULL default '0000-00-00 00:00:00', +`accthassetitime` int(10) unsigned default NULL, +`acctoutputoctets` bigint(20) unsigned default NULL, +`acctinputoctets` bigint(20) unsigned default NULL, +PRIMARY KEY (`kattjame`,`hunderaaarbagefa`,`hassetistart`,`hassetino`), +KEY `squardporoot` (`squardporoot`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1; +INSERT INTO `t8_c` VALUES ('4tt45345235','pap','q3plus.qt','q3plus.qt','q3.net','436643196120','436643196929','8956234534568968','5524595699','uxasmt21.net.acne.qt/481889229462692422','','1.1.1.1','2.2.4.6','4','86989','34','x','x','2012-03-12 12:55:34','2012-12-05 11:20:04',3223433,3369,9565),('4545435545','john','q3.net','q3.net','acne.li','436643196120','436643196929','45345234568968','995696699','uxasmt21.net.acne.qt/481889229462692423','','1.1.1.1','2.2.9.8','2','86989','34','x','x','2012-03-12 11:35:03','2012-12-05 08:50:04',8821923,169,3565),('versteckter_q3net_katt','joe','q3.net','elredun.com','q3.net','436643196120','436643196939','91341234568968','695595699','uxasmt21.net.acne.qt/481889229462692421','','1.1.1.1','2.5.2.5','3','86989','34','x','x','2012-03-12 18:35:04','2012-12-05 12:35:04',1923123,9569,6565); +CREATE TABLE `t9_c` ( +`kattjame` varchar(32) NOT NULL default '', +`kattjame_entered` varchar(32) NOT NULL default '', +`realm` varchar(32) NOT NULL default '', +`realm_entered` varchar(32) NOT NULL default '', +`maturegarbagefa` varchar(32) NOT NULL default '', +`hunderaaarbagefa` varchar(32) NOT NULL default '', +`hunderaaarbagefa_parent` varchar(32) NOT NULL default '', +`gest` varchar(16) default NULL, +`hassetino` varchar(16) NOT NULL default '', +`squardporoot` varchar(15) NOT NULL default '', +`naspo` varchar(15) default NULL, +`beareratta` char(2) default NULL, +`fastCode` varchar(6) default NULL, +`fastFA` varchar(5) default NULL, +`fastca` char(1) default NULL, +`fastmag` char(1) default NULL, +`lastupdate` datetime default NULL, +`hassetistart` datetime NOT NULL default '0000-00-00 00:00:00', +`accthassetitime` int(10) unsigned default NULL, +`actcoutpuocttets` bigint(20) unsigned default NULL, +`actinputocctets` bigint(20) unsigned default NULL, +`terminateraste` tinyint(3) unsigned default NULL, +PRIMARY KEY (`kattjame`,`hunderaaarbagefa`,`hassetistart`,`hassetino`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1; +INSERT INTO `t9_c` VALUES ('3g4jh8gar2t','joe','q3.net','elredun.com','q3.net','436643316120','436643316939','91341234568968','695595699','1.1.1.1','2.2.6.2','3','86989','34','x','x','2012-03-12 18:35:04','2012-12-05 12:35:04',3123123,9569,6565,1),('4tt45345235','pap','q3plus.qt','q3plus.qt','q3.net','436643316120','436643316939','8956234534568968','5254595969','1.1.1.1','8.6.2.2','4','86989','34','x','x','2012-03-12 12:55:34','2012-12-05 11:20:04',3223433,3369,9565,2),('4545435545','john','q3.net','q3.net','acne.li','436643316120','436643316939','45345234568968','995696699','1.1.1.1','2.9.9.2','2','86998','34','x','x','2012-03-12 11:35:03','2012-12-05 08:50:04',8823123,169,3565,3); +create table t1 engine=myisam as select * from t1_c; +create table t2 engine=myisam as select * from t2_c; +create table t3 engine=myisam as select * from t3_c; +create table t4 engine=myisam as select * from t4_c; +create table t5 engine=myisam as select * from t5_c; +create table t6 engine=myisam as select * from t6_c; +create table t7 engine=myisam as select * from t7_c; +create table t8 engine=myisam as select * from t8_c; +create table t9 engine=myisam as select * from t9_c; +CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info (id INT, backup_id INT) ENGINE = HEAP; +DELETE FROM test.backup_info; +LOAD DATA INFILE '../tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ','; +SELECT @the_backup_id:=backup_id FROM test.backup_info; +@the_backup_id:=backup_id + +DROP TABLE test.backup_info; +drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c; +select count(*) from t1; +count(*) +5 +select count(*) from t1_c; +count(*) +5 +select count(*) +from (select * from t1 union +select * from t1_c) a; +count(*) +5 +select count(*) from t2; +count(*) +6 +select count(*) from t2_c; +count(*) +6 +select count(*) +from (select * from t2 union +select * from t2_c) a; +count(*) +6 +select count(*) from t3; +count(*) +4 +select count(*) from t3_c; +count(*) +4 +select count(*) +from (select * from t3 union +select * from t3_c) a; +count(*) +4 +select count(*) from t4; +count(*) +22 +select count(*) from t4_c; +count(*) +22 +select count(*) +from (select * from t4 union +select * from t4_c) a; +count(*) +22 +select count(*) from t5; +count(*) +3 +select count(*) from t5_c; +count(*) +3 +select count(*) +from (select * from t5 union +select * from t5_c) a; +count(*) +3 +select count(*) from t6; +count(*) +8 +select count(*) from t6_c; +count(*) +8 +select count(*) +from (select * from t6 union +select * from t6_c) a; +count(*) +8 +select count(*) from t7; +count(*) +5 +select count(*) from t7_c; +count(*) +5 +select count(*) +from (select * from t7 union +select * from t7_c) a; +count(*) +5 +select count(*) from t8; +count(*) +3 +select count(*) from t8_c; +count(*) +3 +select count(*) +from (select * from t8 union +select * from t8_c) a; +count(*) +3 +select count(*) from t9; +count(*) +3 +select count(*) from t9_c; +count(*) +3 +select count(*) +from (select * from t9 union +select * from t9_c) a; +count(*) +3 +ALTER TABLE t1_c +PARTITION BY RANGE (`capgoaledatta`) +(PARTITION p0 VALUES LESS THAN MAXVALUE); +ALTER TABLE t2_c +PARTITION BY LIST(`capgotod`) +(PARTITION p0 VALUES IN (0,1,2,3,4,5,6)); +ALTER TABLE t3_c +PARTITION BY HASH (`CapGoaledatta`); +ALTER TABLE t5_c +PARTITION BY HASH (`capfa`) +PARTITIONS 4; +ALTER TABLE t6_c +PARTITION BY LINEAR HASH (`relatta`) +PARTITIONS 4; +ALTER TABLE t7_c +PARTITION BY LINEAR KEY (`dardtestard`); +CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info (id INT, backup_id INT) ENGINE = HEAP; +DELETE FROM test.backup_info; +LOAD DATA INFILE '../tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ','; +SELECT @the_backup_id:=backup_id FROM test.backup_info; +@the_backup_id:=backup_id + +DROP TABLE test.backup_info; +drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c; +select count(*) from t1; +count(*) +5 +select count(*) from t1_c; +count(*) +5 +select count(*) +from (select * from t1 union +select * from t1_c) a; +count(*) +5 +select count(*) from t2; +count(*) +6 +select count(*) from t2_c; +count(*) +6 +select count(*) +from (select * from t2 union +select * from t2_c) a; +count(*) +6 +select count(*) from t3; +count(*) +4 +select count(*) from t3_c; +count(*) +4 +select count(*) +from (select * from t3 union +select * from t3_c) a; +count(*) +4 +select count(*) from t4; +count(*) +22 +select count(*) from t4_c; +count(*) +22 +select count(*) +from (select * from t4 union +select * from t4_c) a; +count(*) +22 +select count(*) from t5; +count(*) +3 +select count(*) from t5_c; +count(*) +3 +select count(*) +from (select * from t5 union +select * from t5_c) a; +count(*) +3 +select count(*) from t6; +count(*) +8 +select count(*) from t6_c; +count(*) +8 +select count(*) +from (select * from t6 union +select * from t6_c) a; +count(*) +8 +select count(*) from t7; +count(*) +5 +select count(*) from t7_c; +count(*) +5 +select count(*) +from (select * from t7 union +select * from t7_c) a; +count(*) +5 +select count(*) from t8; +count(*) +3 +select count(*) from t8_c; +count(*) +3 +select count(*) +from (select * from t8 union +select * from t8_c) a; +count(*) +3 +select count(*) from t9; +count(*) +3 +select count(*) from t9_c; +count(*) +3 +select count(*) +from (select * from t9 union +select * from t9_c) a; +count(*) +3 +drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c; +select count(*) from t1; +count(*) +5 +select count(*) from t1_c; +count(*) +5 +select count(*) +from (select * from t1 union +select * from t1_c) a; +count(*) +5 +select count(*) from t2; +count(*) +6 +select count(*) from t2_c; +count(*) +6 +select count(*) +from (select * from t2 union +select * from t2_c) a; +count(*) +6 +select count(*) from t3; +count(*) +4 +select count(*) from t3_c; +count(*) +4 +select count(*) +from (select * from t3 union +select * from t3_c) a; +count(*) +4 +select count(*) from t4; +count(*) +22 +select count(*) from t4_c; +count(*) +22 +select count(*) +from (select * from t4 union +select * from t4_c) a; +count(*) +22 +select count(*) from t5; +count(*) +3 +select count(*) from t5_c; +count(*) +3 +select count(*) +from (select * from t5 union +select * from t5_c) a; +count(*) +3 +select count(*) from t6; +count(*) +8 +select count(*) from t6_c; +count(*) +8 +select count(*) +from (select * from t6 union +select * from t6_c) a; +count(*) +8 +select count(*) from t7; +count(*) +5 +select count(*) from t7_c; +count(*) +5 +select count(*) +from (select * from t7 union +select * from t7_c) a; +count(*) +5 +select count(*) from t8; +count(*) +3 +select count(*) from t8_c; +count(*) +3 +select count(*) +from (select * from t8 union +select * from t8_c) a; +count(*) +3 +select count(*) from t9; +count(*) +3 +select count(*) from t9_c; +count(*) +3 +select count(*) +from (select * from t9 union +select * from t9_c) a; +count(*) +3 +drop table t1_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c; +CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info (id INT, backup_id INT) ENGINE = HEAP; +DELETE FROM test.backup_info; +LOAD DATA INFILE '../tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ','; +SELECT @the_backup_id:=backup_id FROM test.backup_info; +@the_backup_id:=backup_id + +DROP TABLE test.backup_info; +Create table test/def/t2_c failed: Translate frm error +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +drop table if exists t2_c; +520093696, diff --git a/mysql-test/t/ndb_restore_partition-master.opt b/mysql-test/t/ndb_restore_partition-master.opt new file mode 100644 index 00000000000..075c6392dde --- /dev/null +++ b/mysql-test/t/ndb_restore_partition-master.opt @@ -0,0 +1 @@ +--new diff --git a/mysql-test/t/ndb_restore_partition.test b/mysql-test/t/ndb_restore_partition.test new file mode 100644 index 00000000000..f11324492c2 --- /dev/null +++ b/mysql-test/t/ndb_restore_partition.test @@ -0,0 +1,375 @@ +-- source include/have_ndb.inc +-- source include/ndb_default_cluster.inc +-- source include/not_embedded.inc + +--disable_warnings +use test; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c; +--enable_warnings + +CREATE TABLE `t1_c` ( + `capgoaledatta` smallint(5) unsigned NOT NULL auto_increment, + `goaledatta` char(2) NOT NULL default '', + `maturegarbagefa` varchar(32) NOT NULL default '', + PRIMARY KEY (`capgoaledatta`,`goaledatta`,`maturegarbagefa`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1; +INSERT INTO `t1_c` VALUES (2,'3','q3plus.qt'),(4,'4','q3plus.qt'),(1,'3','q3.net'),(3,'4','q3.net'),(3,'20','threetrees.qt'); + +CREATE TABLE `t2_c` ( + `capgotod` smallint(5) unsigned NOT NULL auto_increment, + `gotod` smallint(5) unsigned NOT NULL default '0', + `goaledatta` char(2) default NULL, + `maturegarbagefa` varchar(32) default NULL, + `descrpooppo` varchar(64) default NULL, + `svcutonsa` varchar(64) NOT NULL default '', + PRIMARY KEY (`capgotod`), + KEY `i_quadaddsvr` (`gotod`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1; +INSERT INTO `t2_c` VALUES (5,4,'','q3.net','addavp:MK_CASELECTOR=1','postorod rattoaa'),(2,1,'4','','addavp:MK_BRANDTAD=345','REDS Brandtad'),(3,2,'4','q3.net','execorder','fixedRatediPO REDS'),(1,1,'3','','addavp:MK_BRANDTAD=123','TEST Brandtad'),(6,5,'','told.q3.net','addavp:MK_BRANDTAD=123','Brandtad Toldzone'),(4,3,'3','q3.net','addavp:MK_POOLHINT=2','ratedi PO TEST'); + +CREATE TABLE `t3_c` ( + `CapGoaledatta` smallint(5) unsigned NOT NULL default '0', + `capgotod` smallint(5) unsigned NOT NULL default '0', + PRIMARY KEY (`capgotod`,`CapGoaledatta`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1; +INSERT INTO `t3_c` VALUES (5,3),(2,4),(5,4),(1,3); + +CREATE TABLE `t4_c` ( + `capfa` bigint(20) unsigned NOT NULL auto_increment, + `realm` varchar(32) NOT NULL default '', + `authpwchap` varchar(32) default NULL, + `fa` varchar(32) NOT NULL default '', + `payyingatta` tinyint(4) NOT NULL default '0', + `status` char(1) default NULL, + PRIMARY KEY (`fa`,`realm`), + KEY `capfa` (`capfa`), + KEY `i_quadentity` (`fa`,`realm`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1; +INSERT INTO `t4_c` VALUES (18,'john.smith','q3.net','dessjohn.smith',0,NULL),(21,'quad_katt_with_brandtad','q3.net','acne',0,NULL),(22,'quad_katt_carattoaa','q3.net','acne',0,NULL),(26,'436462612809','sqasdt.q3.net','N/A',0,'6'),(19,'john','smith.qt','dessjohn',0,NULL),(33,'436643196120','sqasdt.q3.net','N/A',1,'6'),(28,'436642900019','sqasdt.q3.net','N/A',0,'6'),(30,'436462900209','sqasdt.q3.net','N/A',0,'6'),(16,'436640006666','sqasdt.q3.net','',0,NULL),(19,'dette','el-redun.com','dessdette',0,NULL),(12,'quad_kattPP','q3.net','acne',2,NULL),(14,'436640008888','sqasdt.q3.net','',0,NULL),(29,'463624900028','sqasdt.q3.net','N/A',0,'6'),(15,'436640099099','sqasdt.q3.net','',0,NULL),(13,'pap','q3plus.qt','acne',1,NULL),(19,'436642612091','sqasdt.q3.net','N/A',0,'6'),(12,'quad_katt','q3.net','acne',0,NULL),(11,'quad_kattVK','q3.net','acne',1,NULL),(32,'463641969502','sqasdt.q3.net','N/A',1,'6'),(20,'joe','q3.net','joedesswd',0,NULL),(29,'436642900034','sqasdt.q3.net','N/A',0,'6'),(25,'contind','armerde.qt','acne',1,NULL); + +CREATE TABLE `t5_c` ( + `capfa` bigint(20) unsigned NOT NULL default '0', + `gotod` smallint(5) unsigned NOT NULL default '0', + `orderutonsa` varchar(64) NOT NULL default '', + PRIMARY KEY (`capfa`,`gotod`,`orderutonsa`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1; +INSERT INTO `t5_c` VALUES (21,2,''),(21,1,''),(22,4,''); + +CREATE TABLE `t6_c` ( + `capfa_parent` bigint(20) unsigned NOT NULL default '0', + `capfa_child` bigint(20) unsigned NOT NULL default '0', + `relatta` smallint(5) unsigned NOT NULL default '0', + PRIMARY KEY (`capfa_child`,`capfa_parent`,`relatta`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1; +INSERT INTO `t6_c` VALUES (15,16,0),(19,20,0),(18326932092909551615,30,0),(26,29,0),(18326932092909551615,29,0),(19,18,0),(26,28,0),(12,14,0); + +CREATE TABLE `t7_c` ( + `dardpo` char(15) NOT NULL default '', + `dardtestard` tinyint(3) unsigned NOT NULL default '0', + `FastFA` char(5) NOT NULL default '', + `FastCode` char(6) NOT NULL default '', + `Fastca` char(1) NOT NULL default '', + `Fastmag` char(1) NOT NULL default '', + `Beareratta` char(2) NOT NULL default '', + PRIMARY KEY (`dardpo`,`dardtestard`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1; +INSERT INTO `t7_c` VALUES ('2.6.2.4',24,'CECHP','54545','0','0','5'),('2.2.5.4',26,'CANFA','33223','1','1','4'),('4.3.2.4',28,'ITALD','54222','1','0','5'),('129..0.0.eins',28,'G','99999','1','1','5'),('1.1.1.1',24,'AUTPT','32323','0','1','3'); + +CREATE TABLE `t8_c` ( + `kattjame` varchar(32) NOT NULL default '', + `realm` varchar(32) NOT NULL default '', + `realm_entered` varchar(32) NOT NULL default '', + `maturegarbagefa` varchar(32) NOT NULL default '', + `hunderaaarbagefa_parent` varchar(32) NOT NULL default '', + `kattjame_entered` varchar(32) NOT NULL default '', + `hunderaaarbagefa` varchar(32) NOT NULL default '', + `gest` varchar(16) default NULL, + `hassetino` varchar(16) NOT NULL default '', + `aaaproxysessfa` varchar(255) default NULL, + `autologonallowed` char(1) default NULL, + `squardporoot` varchar(15) NOT NULL default '', + `naspo` varchar(15) default NULL, + `beareratta` char(2) default NULL, + `fastCode` varchar(6) default NULL, + `fastFA` varchar(5) default NULL, + `fastca` char(1) default NULL, + `fastmag` char(1) default NULL, + `lastupdate` datetime default NULL, + `hassetistart` datetime NOT NULL default '0000-00-00 00:00:00', + `accthassetitime` int(10) unsigned default NULL, + `acctoutputoctets` bigint(20) unsigned default NULL, + `acctinputoctets` bigint(20) unsigned default NULL, + PRIMARY KEY (`kattjame`,`hunderaaarbagefa`,`hassetistart`,`hassetino`), + KEY `squardporoot` (`squardporoot`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1; +INSERT INTO `t8_c` VALUES ('4tt45345235','pap','q3plus.qt','q3plus.qt','q3.net','436643196120','436643196929','8956234534568968','5524595699','uxasmt21.net.acne.qt/481889229462692422','','1.1.1.1','2.2.4.6','4','86989','34','x','x','2012-03-12 12:55:34','2012-12-05 11:20:04',3223433,3369,9565),('4545435545','john','q3.net','q3.net','acne.li','436643196120','436643196929','45345234568968','995696699','uxasmt21.net.acne.qt/481889229462692423','','1.1.1.1','2.2.9.8','2','86989','34','x','x','2012-03-12 11:35:03','2012-12-05 08:50:04',8821923,169,3565),('versteckter_q3net_katt','joe','q3.net','elredun.com','q3.net','436643196120','436643196939','91341234568968','695595699','uxasmt21.net.acne.qt/481889229462692421','','1.1.1.1','2.5.2.5','3','86989','34','x','x','2012-03-12 18:35:04','2012-12-05 12:35:04',1923123,9569,6565); + +CREATE TABLE `t9_c` ( + `kattjame` varchar(32) NOT NULL default '', + `kattjame_entered` varchar(32) NOT NULL default '', + `realm` varchar(32) NOT NULL default '', + `realm_entered` varchar(32) NOT NULL default '', + `maturegarbagefa` varchar(32) NOT NULL default '', + `hunderaaarbagefa` varchar(32) NOT NULL default '', + `hunderaaarbagefa_parent` varchar(32) NOT NULL default '', + `gest` varchar(16) default NULL, + `hassetino` varchar(16) NOT NULL default '', + `squardporoot` varchar(15) NOT NULL default '', + `naspo` varchar(15) default NULL, + `beareratta` char(2) default NULL, + `fastCode` varchar(6) default NULL, + `fastFA` varchar(5) default NULL, + `fastca` char(1) default NULL, + `fastmag` char(1) default NULL, + `lastupdate` datetime default NULL, + `hassetistart` datetime NOT NULL default '0000-00-00 00:00:00', + `accthassetitime` int(10) unsigned default NULL, + `actcoutpuocttets` bigint(20) unsigned default NULL, + `actinputocctets` bigint(20) unsigned default NULL, + `terminateraste` tinyint(3) unsigned default NULL, + PRIMARY KEY (`kattjame`,`hunderaaarbagefa`,`hassetistart`,`hassetino`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1; +INSERT INTO `t9_c` VALUES ('3g4jh8gar2t','joe','q3.net','elredun.com','q3.net','436643316120','436643316939','91341234568968','695595699','1.1.1.1','2.2.6.2','3','86989','34','x','x','2012-03-12 18:35:04','2012-12-05 12:35:04',3123123,9569,6565,1),('4tt45345235','pap','q3plus.qt','q3plus.qt','q3.net','436643316120','436643316939','8956234534568968','5254595969','1.1.1.1','8.6.2.2','4','86989','34','x','x','2012-03-12 12:55:34','2012-12-05 11:20:04',3223433,3369,9565,2),('4545435545','john','q3.net','q3.net','acne.li','436643316120','436643316939','45345234568968','995696699','1.1.1.1','2.9.9.2','2','86998','34','x','x','2012-03-12 11:35:03','2012-12-05 08:50:04',8823123,169,3565,3); + +create table t1 engine=myisam as select * from t1_c; +create table t2 engine=myisam as select * from t2_c; +create table t3 engine=myisam as select * from t3_c; +create table t4 engine=myisam as select * from t4_c; +create table t5 engine=myisam as select * from t5_c; +create table t6 engine=myisam as select * from t6_c; +create table t7 engine=myisam as select * from t7_c; +create table t8 engine=myisam as select * from t8_c; +create table t9 engine=myisam as select * from t9_c; + + +--source include/ndb_backup.inc +drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c; +--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b $the_backup_id -n 1 -m -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id >> $NDB_TOOLS_OUTPUT +--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b $the_backup_id -n 2 -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id >> $NDB_TOOLS_OUTPUT + +# random output order?? +#show tables; + +select count(*) from t1; +select count(*) from t1_c; +select count(*) + from (select * from t1 union + select * from t1_c) a; + +select count(*) from t2; +select count(*) from t2_c; +select count(*) + from (select * from t2 union + select * from t2_c) a; + +select count(*) from t3; +select count(*) from t3_c; +select count(*) + from (select * from t3 union + select * from t3_c) a; + +select count(*) from t4; +select count(*) from t4_c; +select count(*) + from (select * from t4 union + select * from t4_c) a; + +select count(*) from t5; +select count(*) from t5_c; +select count(*) + from (select * from t5 union + select * from t5_c) a; + +select count(*) from t6; +select count(*) from t6_c; +select count(*) + from (select * from t6 union + select * from t6_c) a; + +select count(*) from t7; +select count(*) from t7_c; +select count(*) + from (select * from t7 union + select * from t7_c) a; + +select count(*) from t8; +select count(*) from t8_c; +select count(*) + from (select * from t8 union + select * from t8_c) a; + +select count(*) from t9; +select count(*) from t9_c; +select count(*) + from (select * from t9 union + select * from t9_c) a; + +# +# Try Partitioned tables as well +# +ALTER TABLE t1_c +PARTITION BY RANGE (`capgoaledatta`) +(PARTITION p0 VALUES LESS THAN MAXVALUE); + +ALTER TABLE t2_c +PARTITION BY LIST(`capgotod`) +(PARTITION p0 VALUES IN (0,1,2,3,4,5,6)); + +ALTER TABLE t3_c +PARTITION BY HASH (`CapGoaledatta`); + +ALTER TABLE t5_c +PARTITION BY HASH (`capfa`) +PARTITIONS 4; + +ALTER TABLE t6_c +PARTITION BY LINEAR HASH (`relatta`) +PARTITIONS 4; + +ALTER TABLE t7_c +PARTITION BY LINEAR KEY (`dardtestard`); + +--source include/ndb_backup.inc +drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c; +--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b $the_backup_id -n 1 -m -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id >> $NDB_TOOLS_OUTPUT +--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b $the_backup_id -n 2 -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id >> $NDB_TOOLS_OUTPUT + +select count(*) from t1; +select count(*) from t1_c; +select count(*) + from (select * from t1 union + select * from t1_c) a; + +select count(*) from t2; +select count(*) from t2_c; +select count(*) + from (select * from t2 union + select * from t2_c) a; + +select count(*) from t3; +select count(*) from t3_c; +select count(*) + from (select * from t3 union + select * from t3_c) a; + +select count(*) from t4; +select count(*) from t4_c; +select count(*) + from (select * from t4 union + select * from t4_c) a; + +select count(*) from t5; +select count(*) from t5_c; +select count(*) + from (select * from t5 union + select * from t5_c) a; + +select count(*) from t6; +select count(*) from t6_c; +select count(*) + from (select * from t6 union + select * from t6_c) a; + +select count(*) from t7; +select count(*) from t7_c; +select count(*) + from (select * from t7 union + select * from t7_c) a; + +select count(*) from t8; +select count(*) from t8_c; +select count(*) + from (select * from t8 union + select * from t8_c) a; + +select count(*) from t9; +select count(*) from t9_c; +select count(*) + from (select * from t9 union + select * from t9_c) a; + +drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c; +--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b $the_backup_id -n 1 -m -r --ndb-nodegroup_map '(0,0)' --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id >> $NDB_TOOLS_OUTPUT +--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b $the_backup_id -n 2 -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id >> $NDB_TOOLS_OUTPUT + +select count(*) from t1; +select count(*) from t1_c; +select count(*) + from (select * from t1 union + select * from t1_c) a; + +select count(*) from t2; +select count(*) from t2_c; +select count(*) + from (select * from t2 union + select * from t2_c) a; + +select count(*) from t3; +select count(*) from t3_c; +select count(*) + from (select * from t3 union + select * from t3_c) a; + +select count(*) from t4; +select count(*) from t4_c; +select count(*) + from (select * from t4 union + select * from t4_c) a; + +select count(*) from t5; +select count(*) from t5_c; +select count(*) + from (select * from t5 union + select * from t5_c) a; + +select count(*) from t6; +select count(*) from t6_c; +select count(*) + from (select * from t6 union + select * from t6_c) a; + +select count(*) from t7; +select count(*) from t7_c; +select count(*) + from (select * from t7 union + select * from t7_c) a; + +select count(*) from t8; +select count(*) from t8_c; +select count(*) + from (select * from t8 union + select * from t8_c) a; + +select count(*) from t9; +select count(*) from t9_c; +select count(*) + from (select * from t9 union + select * from t9_c) a; + +# +# Drop all table except t2_c +# This to make sure that error returned from ndb_restore above is +# guaranteed to be from t2_c, this since order of tables in backup +# is none deterministic +# +drop table t1_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c; +--source include/ndb_backup.inc +--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults --core=0 -b $the_backup_id -n 1 -m -r --ndb-nodegroup_map '(0,1)' $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id 2>&1 | grep Translate || true + +# +# Cleanup +# + +--disable_warnings +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +drop table if exists t2_c; +--enable_warnings + +# +# Test BUG#10287 +# + +--exec $NDB_TOOLS_DIR/ndb_select_all --no-defaults -d sys -D , SYSTAB_0 | grep 520093696, | sed "s/,$the_backup_id/,/" + +# End of 4.1 tests diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index d8f4ddac73c..27fe2e889af 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -4468,12 +4468,13 @@ int ha_ndbcluster::create(const char *name, TABLE *form, HA_CREATE_INFO *info) { + THD *thd= current_thd; NDBTAB tab; NDBCOL col; uint pack_length, length, i, pk_length= 0; const void *data, *pack_data; bool create_from_engine= (info->table_options & HA_OPTION_CREATE_FROM_ENGINE); - bool is_truncate= (current_thd->lex->sql_command == SQLCOM_TRUNCATE); + bool is_truncate= (thd->lex->sql_command == SQLCOM_TRUNCATE); DBUG_ENTER("ha_ndbcluster::create"); DBUG_PRINT("enter", ("name: %s", name)); @@ -4661,10 +4662,20 @@ int ha_ndbcluster::create(const char *name, Failed to create an index, drop the table (and all it's indexes) */ - if (dict->dropTableGlobal(*m_table) == 0) + while (dict->dropTableGlobal(*m_table)) { - m_table = 0; + switch (dict->getNdbError().status) + { + case NdbError::TemporaryError: + if (!thd->killed) + continue; // retry indefinitly + break; + default: + break; + } } + m_table = 0; + DBUG_RETURN(my_errno); } #ifdef HAVE_NDB_BINLOG @@ -4727,8 +4738,8 @@ int ha_ndbcluster::create(const char *name, */ if (share && !do_event_op) share->flags|= NSF_NO_BINLOG; - ndbcluster_log_schema_op(current_thd, share, - current_thd->query, current_thd->query_length, + ndbcluster_log_schema_op(thd, share, + thd->query, thd->query_length, share->db, share->table_name, m_table->getObjectId(), m_table->getObjectVersion(), @@ -5177,9 +5188,9 @@ ha_ndbcluster::delete_table(ha_ndbcluster *h, Ndb *ndb, THD *thd= current_thd; DBUG_ENTER("ha_ndbcluster::ndbcluster_delete_table"); NDBDICT *dict= ndb->getDictionary(); -#ifdef HAVE_NDB_BINLOG int ndb_table_id= 0; int ndb_table_version= 0; +#ifdef HAVE_NDB_BINLOG /* Don't allow drop table unless schema distribution table is setup @@ -5197,15 +5208,25 @@ ha_ndbcluster::delete_table(ha_ndbcluster *h, Ndb *ndb, int res= 0; if (h && h->m_table) { - if (dict->dropTableGlobal(*h->m_table)) - res= ndb_to_mysql_error(&dict->getNdbError()); -#ifdef HAVE_NDB_BINLOG - if (res == 0) +retry_temporary_error1: + if (dict->dropTableGlobal(*h->m_table) == 0) { ndb_table_id= h->m_table->getObjectId(); ndb_table_version= h->m_table->getObjectVersion(); } -#endif + else + { + switch (dict->getNdbError().status) + { + case NdbError::TemporaryError: + if (!thd->killed) + goto retry_temporary_error1; // retry indefinitly + break; + default: + break; + } + res= ndb_to_mysql_error(&dict->getNdbError()); + } h->release_metadata(thd, ndb); } else @@ -5216,17 +5237,28 @@ ha_ndbcluster::delete_table(ha_ndbcluster *h, Ndb *ndb, Ndb_table_guard ndbtab_g(dict, table_name); if (ndbtab_g.get_table()) { + retry_temporary_error2: if (dict->dropTableGlobal(*ndbtab_g.get_table()) == 0) { -#ifdef HAVE_NDB_BINLOG ndb_table_id= ndbtab_g.get_table()->getObjectId(); ndb_table_version= ndbtab_g.get_table()->getObjectVersion(); -#endif } - else if (dict->getNdbError().code == NDB_INVALID_SCHEMA_OBJECT) + else { - ndbtab_g.invalidate(); - continue; + switch (dict->getNdbError().status) + { + case NdbError::TemporaryError: + if (!thd->killed) + goto retry_temporary_error2; // retry indefinitly + break; + default: + if (dict->getNdbError().code == NDB_INVALID_SCHEMA_OBJECT) + { + ndbtab_g.invalidate(); + continue; + } + break; + } } } else @@ -9747,7 +9779,19 @@ uint ha_ndbcluster::set_up_partition_info(partition_info *part_info, } else { - /* +#ifdef NOT_YET + if (!current_thd->variables.new_mode) + { + push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_ERROR, + ER_ILLEGAL_HA_CREATE_OPTION, + ER(ER_ILLEGAL_HA_CREATE_OPTION), + ndbcluster_hton_name, + "LIST, RANGE and HASH partition disabled by default," + " use --new option to enable"); + return HA_ERR_UNSUPPORTED; + } +#endif + /* Create a shadow field for those tables that have user defined partitioning. This field stores the value of the partition function such that NDB can handle reorganisations of the data -- cgit v1.2.1 From 234de474750c637f4b9d6f609af94e10ccaf3a42 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 12:54:28 +0200 Subject: Bug #18595 repeated create, insert, drop can cause MySQL table definition cache to corrupt - add infinite retry on drop table temporary error --- sql/ha_ndbcluster.cc | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index c0eae685a52..b2f60fdaf2e 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -4036,20 +4036,30 @@ int ha_ndbcluster::delete_table(const char *name) int ha_ndbcluster::drop_table() { + THD *thd= current_thd; Ndb *ndb= get_ndb(); NdbDictionary::Dictionary *dict= ndb->getDictionary(); DBUG_ENTER("drop_table"); DBUG_PRINT("enter", ("Deleting %s", m_tabname)); - if (dict->dropTable(m_tabname)) + while (dict->dropTable(m_tabname)) { const NdbError err= dict->getNdbError(); - if (err.code == 709) - ; // 709: No such table existed - else + switch (err.status) + { + case NdbError::TemporaryError: + if (!thd->killed) + continue; // retry indefinitly + break; + default: + break; + } + if (err.code != 709) // 709: No such table existed ERR_RETURN(dict->getNdbError()); - } + break; + } + release_metadata(); DBUG_RETURN(0); } @@ -4453,14 +4463,24 @@ int ndbcluster_drop_database(const char *path) List_iterator_fast it(drop_list); while ((tabname=it++)) { - if (dict->dropTable(tabname)) + while (dict->dropTable(tabname)) { const NdbError err= dict->getNdbError(); - if (err.code != 709) + switch (err.status) + { + case NdbError::TemporaryError: + if (!thd->killed) + continue; // retry indefinitly + break; + default: + break; + } + if (err.code != 709) // 709: No such table existed { ERR_PRINT(err); ret= ndb_to_mysql_error(&err); } + break; } } DBUG_RETURN(ret); -- cgit v1.2.1 From dcd5786c16f8f95b772a84e66507a5915dfc9960 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 13:32:29 +0200 Subject: corrected merge error --- sql/ha_ndbcluster.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 27fe2e889af..b12ae2cdd89 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -4673,6 +4673,7 @@ int ha_ndbcluster::create(const char *name, default: break; } + break; } m_table = 0; DBUG_RETURN(my_errno); -- cgit v1.2.1 From 708740c8bb5e80a6b5e32f196c2bd14b5da03855 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 16:45:29 +0500 Subject: After merge fix. --- sql/sql_table.cc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sql/sql_table.cc b/sql/sql_table.cc index a49b7a2cc42..e5e671cabf1 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -4709,6 +4709,14 @@ static uint compare_tables(TABLE *table, List *create_list, At the moment we can't handle altering temporary tables without a copy. We also test if OPTIMIZE TABLE was given and was mapped to alter table. In that case we always do full copy. + + There was a bug prior to mysql-4.0.25. Number of null fields was + calculated incorrectly. As a result frm and data files gets out of + sync after fast alter table. There is no way to determine by which + mysql version (in 4.0 and 4.1 branches) table was created, thus we + disable fast alter table for all tables created by mysql versions + prior to 5.0 branch. + See BUG#6236. */ if (table->s->fields != create_list->elements || table->s->db_type != create_info->db_type || @@ -4718,6 +4726,7 @@ static uint compare_tables(TABLE *table, List *create_list, create_info->used_fields & HA_CREATE_USED_DEFAULT_CHARSET || (alter_info->flags & (ALTER_RECREATE | ALTER_FOREIGN_KEY)) || order_num || + !table->s->mysql_version || (table->s->frm_version < FRM_VER_TRUE_VARCHAR && varchar)) DBUG_RETURN(ALTER_TABLE_DATA_CHANGED); -- cgit v1.2.1 From e9bfc415148a9c3cb113a0f7f785c3d9578610dd Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 13:58:51 +0200 Subject: ndb - bug#19285 : document and check what blob ops are allowed ndb/src/ndbapi/ndberror.c: distinguish blob method errors: 4265-wrong state 4275-wrong op type/lockmode ndb/src/ndbapi/NdbBlobImpl.hpp: distinguish blob method errors: 4265-wrong state 4275-wrong op type/lockmode fix 4269 -> 4270 ndb/test/ndbapi/testBlobs.cpp: test lock upgrade, test 4275 errors ndb/include/ndbapi/NdbScanOperation.hpp: fix comment ndb/include/ndbapi/NdbBlob.hpp: upgrade LM_CommittedRead to LM_Read check if write allowed (new error 4275) dont invalidate blob state on error (just general principle) ndb/src/ndbapi/NdbBlob.cpp: upgrade LM_CommittedRead to LM_Read check if write allowed (new error 4275) dont invalidate blob state on error (just general principle) --- ndb/include/ndbapi/NdbBlob.hpp | 50 +++++++++--- ndb/include/ndbapi/NdbScanOperation.hpp | 2 +- ndb/src/ndbapi/NdbBlob.cpp | 56 +++++++++++--- ndb/src/ndbapi/NdbBlobImpl.hpp | 6 +- ndb/src/ndbapi/ndberror.c | 5 +- ndb/test/ndbapi/testBlobs.cpp | 131 ++++++++++++++++++++++---------- 6 files changed, 180 insertions(+), 70 deletions(-) diff --git a/ndb/include/ndbapi/NdbBlob.hpp b/ndb/include/ndbapi/NdbBlob.hpp index 76aa8e710ac..6d2c493d1ed 100644 --- a/ndb/include/ndbapi/NdbBlob.hpp +++ b/ndb/include/ndbapi/NdbBlob.hpp @@ -74,19 +74,41 @@ class NdbColumnImpl; * NdbBlob methods return -1 on error and 0 on success, and use output * parameters when necessary. * - * Operation types: - * - insertTuple must use setValue if blob column is non-nullable - * - readTuple with exclusive lock can also update existing value - * - updateTuple can overwrite with setValue or update existing value - * - writeTuple always overwrites and must use setValue if non-nullable + * Usage notes for different operation types: + * + * - insertTuple must use setValue if blob attribute is non-nullable + * + * - readTuple or scan readTuples with lock mode LM_CommittedRead is + * automatically upgraded to lock mode LM_Read if any blob attributes + * are accessed (to guarantee consistent view) + * + * - readTuple (with any lock mode) can only read blob value + * + * - updateTuple can either overwrite existing value with setValue or + * update it in active phase + * + * - writeTuple always overwrites blob value and must use setValue if + * blob attribute is non-nullable + * * - deleteTuple creates implicit non-accessible blob handles - * - scan with exclusive lock can also update existing value - * - scan "lock takeover" update op must do its own getBlobHandle + * + * - scan readTuples (any lock mode) can use its blob handles only + * to read blob value + * + * - scan readTuples with lock mode LM_Exclusive can update row and blob + * value using updateCurrentTuple, where the operation returned must + * create its own blob handles explicitly + * + * - scan readTuples with lock mode LM_Exclusive can delete row (and + * therefore blob values) using deleteCurrentTuple, which creates + * implicit non-accessible blob handles + * + * - the operation returned by lockCurrentTuple cannot update blob value * * Bugs / limitations: - * - lock mode upgrade should be handled automatically - * - lock mode vs allowed operation is not checked + * * - too many pending blob ops can blow up i/o buffers + * * - table and its blob part tables are not created atomically */ #ifndef DOXYGEN_SHOULD_SKIP_INTERNAL @@ -194,6 +216,9 @@ public: /** * Return error object. The error may be blob specific (below) or may * be copied from a failed implicit operation. + * + * The error code is copied back to the operation unless the operation + * already has a non-zero error code. */ const NdbError& getNdbError() const; /** @@ -290,6 +315,7 @@ private: bool isWriteOp(); bool isDeleteOp(); bool isScanOp(); + bool isReadOnlyOp(); bool isTakeOverOp(); // computations Uint32 getPartNumber(Uint64 pos); @@ -323,9 +349,9 @@ private: int preCommit(); int atNextResult(); // errors - void setErrorCode(int anErrorCode, bool invalidFlag = true); - void setErrorCode(NdbOperation* anOp, bool invalidFlag = true); - void setErrorCode(NdbTransaction* aCon, bool invalidFlag = true); + void setErrorCode(int anErrorCode, bool invalidFlag = false); + void setErrorCode(NdbOperation* anOp, bool invalidFlag = false); + void setErrorCode(NdbTransaction* aCon, bool invalidFlag = false); #ifdef VM_TRACE int getOperationType() const; friend class NdbOut& operator<<(NdbOut&, const NdbBlob&); diff --git a/ndb/include/ndbapi/NdbScanOperation.hpp b/ndb/include/ndbapi/NdbScanOperation.hpp index 4a8425852b9..5581e830f82 100644 --- a/ndb/include/ndbapi/NdbScanOperation.hpp +++ b/ndb/include/ndbapi/NdbScanOperation.hpp @@ -41,7 +41,7 @@ public: * readTuples. */ enum ScanFlag { - SF_TupScan = (1 << 16), // scan TUP - only LM_CommittedRead + SF_TupScan = (1 << 16), // scan TUP SF_OrderBy = (1 << 24), // index scan in order SF_Descending = (2 << 24), // index scan in descending order SF_ReadRangeNo = (4 << 24), // enable @ref get_range_no diff --git a/ndb/src/ndbapi/NdbBlob.cpp b/ndb/src/ndbapi/NdbBlob.cpp index 7d2793047c2..3440c6416cb 100644 --- a/ndb/src/ndbapi/NdbBlob.cpp +++ b/ndb/src/ndbapi/NdbBlob.cpp @@ -265,6 +265,16 @@ NdbBlob::isScanOp() theNdbOp->theOperationType == NdbOperation::OpenRangeScanRequest; } +inline bool +NdbBlob::isReadOnlyOp() +{ + return ! ( + theNdbOp->theOperationType == NdbOperation::InsertRequest || + theNdbOp->theOperationType == NdbOperation::UpdateRequest || + theNdbOp->theOperationType == NdbOperation::WriteRequest + ); +} + inline bool NdbBlob::isTakeOverOp() { @@ -438,12 +448,12 @@ NdbBlob::getValue(void* data, Uint32 bytes) { DBUG_ENTER("NdbBlob::getValue"); DBUG_PRINT("info", ("data=%p bytes=%u", data, bytes)); - if (theGetFlag || theState != Prepared) { - setErrorCode(NdbBlobImpl::ErrState); + if (! isReadOp() && ! isScanOp()) { + setErrorCode(NdbBlobImpl::ErrCompat); DBUG_RETURN(-1); } - if (! isReadOp() && ! isScanOp()) { - setErrorCode(NdbBlobImpl::ErrUsage); + if (theGetFlag || theState != Prepared) { + setErrorCode(NdbBlobImpl::ErrState); DBUG_RETURN(-1); } if (data == NULL && bytes != 0) { @@ -461,12 +471,12 @@ NdbBlob::setValue(const void* data, Uint32 bytes) { DBUG_ENTER("NdbBlob::setValue"); DBUG_PRINT("info", ("data=%p bytes=%u", data, bytes)); - if (theSetFlag || theState != Prepared) { - setErrorCode(NdbBlobImpl::ErrState); + if (isReadOnlyOp()) { + setErrorCode(NdbBlobImpl::ErrCompat); DBUG_RETURN(-1); } - if (! isInsertOp() && ! isUpdateOp() && ! isWriteOp()) { - setErrorCode(NdbBlobImpl::ErrUsage); + if (theSetFlag || theState != Prepared) { + setErrorCode(NdbBlobImpl::ErrState); DBUG_RETURN(-1); } if (data == NULL && bytes != 0) { @@ -533,6 +543,10 @@ int NdbBlob::setNull() { DBUG_ENTER("NdbBlob::setNull"); + if (isReadOnlyOp()) { + setErrorCode(NdbBlobImpl::ErrCompat); + DBUG_RETURN(-1); + } if (theNullFlag == -1) { if (theState == Prepared) { DBUG_RETURN(setValue(0, 0)); @@ -571,6 +585,10 @@ NdbBlob::truncate(Uint64 length) { DBUG_ENTER("NdbBlob::truncate"); DBUG_PRINT("info", ("length=%llu", length)); + if (isReadOnlyOp()) { + setErrorCode(NdbBlobImpl::ErrCompat); + DBUG_RETURN(-1); + } if (theNullFlag == -1) { setErrorCode(NdbBlobImpl::ErrState); DBUG_RETURN(-1); @@ -628,12 +646,14 @@ NdbBlob::setPos(Uint64 pos) int NdbBlob::readData(void* data, Uint32& bytes) { + DBUG_ENTER("NdbBlob::readData"); if (theState != Active) { setErrorCode(NdbBlobImpl::ErrState); - return -1; + DBUG_RETURN(-1); } char* buf = static_cast(data); - return readDataPrivate(buf, bytes); + int ret = readDataPrivate(buf, bytes); + DBUG_RETURN(ret); } int @@ -722,12 +742,18 @@ NdbBlob::readDataPrivate(char* buf, Uint32& bytes) int NdbBlob::writeData(const void* data, Uint32 bytes) { + DBUG_ENTER("NdbBlob::writeData"); + if (isReadOnlyOp()) { + setErrorCode(NdbBlobImpl::ErrCompat); + DBUG_RETURN(-1); + } if (theState != Active) { setErrorCode(NdbBlobImpl::ErrState); - return -1; + DBUG_RETURN(-1); } const char* buf = static_cast(data); - return writeDataPrivate(buf, bytes); + int ret = writeDataPrivate(buf, bytes); + DBUG_RETURN(0); } int @@ -1130,6 +1156,9 @@ NdbBlob::atPrepare(NdbTransaction* aCon, NdbOperation* anOp, const NdbColumnImpl } } if (isReadOp()) { + // upgrade lock mode + if (theNdbOp->theLockMode == NdbOperation::LM_CommittedRead) + theNdbOp->theLockMode = NdbOperation::LM_Read; // add read of head+inline in this op if (getHeadInlineValue(theNdbOp) == -1) DBUG_RETURN(-1); @@ -1148,6 +1177,9 @@ NdbBlob::atPrepare(NdbTransaction* aCon, NdbOperation* anOp, const NdbColumnImpl supportedOp = true; } if (isScanOp()) { + // upgrade lock mode + if (theNdbOp->theLockMode == NdbOperation::LM_CommittedRead) + theNdbOp->theLockMode = NdbOperation::LM_Read; // add read of head+inline in this op if (getHeadInlineValue(theNdbOp) == -1) DBUG_RETURN(-1); diff --git a/ndb/src/ndbapi/NdbBlobImpl.hpp b/ndb/src/ndbapi/NdbBlobImpl.hpp index 0030e910c52..b56aabfd84e 100644 --- a/ndb/src/ndbapi/NdbBlobImpl.hpp +++ b/ndb/src/ndbapi/NdbBlobImpl.hpp @@ -24,7 +24,7 @@ public: STATIC_CONST( ErrTable = 4263 ); // "Invalid usage of blob attribute" STATIC_CONST( ErrUsage = 4264 ); - // "Method is not valid in current blob state" + // "The blob method is not valid in current blob state" STATIC_CONST( ErrState = 4265 ); // "Invalid blob seek position" STATIC_CONST( ErrSeek = 4266 ); @@ -33,7 +33,9 @@ public: // "Error in blob head update forced rollback of transaction" STATIC_CONST( ErrAbort = 4268 ); // "Unknown blob error" - STATIC_CONST( ErrUnknown = 4269 ); + STATIC_CONST( ErrUnknown = 4270 ); + // "The blob method is incompatible with operation type or lock mode" + STATIC_CONST( ErrCompat = 4275 ); }; #endif diff --git a/ndb/src/ndbapi/ndberror.c b/ndb/src/ndbapi/ndberror.c index a2b96b32630..6c9931ba21c 100644 --- a/ndb/src/ndbapi/ndberror.c +++ b/ndb/src/ndbapi/ndberror.c @@ -513,14 +513,15 @@ ErrorBundle ErrorCodes[] = { { 4262, UD, "NdbScanFilter: Condition is out of bounds"}, { 4263, IE, "Invalid blob attributes or invalid blob parts table" }, { 4264, AE, "Invalid usage of blob attribute" }, - { 4265, AE, "Method is not valid in current blob state" }, + { 4265, AE, "The blob method is not valid in current blob state" }, { 4266, AE, "Invalid blob seek position" }, { 4267, IE, "Corrupted blob value" }, { 4268, IE, "Error in blob head update forced rollback of transaction" }, { 4269, IE, "No connection to ndb management server" }, { 4270, IE, "Unknown blob error" }, { 4335, AE, "Only one autoincrement column allowed per table. Having a table without primary key uses an autoincremented hidden key, i.e. a table without a primary key can not have an autoincremented column" }, - { 4271, AE, "Invalid index object, not retrieved via getIndex()" } + { 4271, AE, "Invalid index object, not retrieved via getIndex()" }, + { 4275, IE, "The blob method is incompatible with operation type or lock mode" } }; static diff --git a/ndb/test/ndbapi/testBlobs.cpp b/ndb/test/ndbapi/testBlobs.cpp index c2a06c9ffa0..fae3a662ff9 100644 --- a/ndb/test/ndbapi/testBlobs.cpp +++ b/ndb/test/ndbapi/testBlobs.cpp @@ -226,7 +226,7 @@ dropTable() { NdbDictionary::Table tab(g_opt.m_tname); if (g_dic->getTable(g_opt.m_tname) != 0) - CHK(g_dic->dropTable(tab) == 0); + CHK(g_dic->dropTable(g_opt.m_tname) == 0); return 0; } @@ -297,13 +297,15 @@ createTable() struct Bval { char* m_val; unsigned m_len; - char* m_buf; + char* m_buf; // read/write buffer unsigned m_buflen; + int m_error_code; // for testing expected error code Bval() : m_val(0), m_len(0), - m_buf(0), // read/write buffer - m_buflen(0) + m_buf(0), + m_buflen(0), + m_error_code(0) {} ~Bval() { delete [] m_val; delete [] m_buf; } void alloc(unsigned buflen) { @@ -459,19 +461,23 @@ getBlobLength(NdbBlob* h, unsigned& len) // setValue / getValue static int -setBlobValue(NdbBlob* h, const Bval& v) +setBlobValue(NdbBlob* h, const Bval& v, int error_code = 0) { bool null = (v.m_val == 0); bool isNull; unsigned len; DBG("setValue " << h->getColumn()->getName() << " len=" << v.m_len << " null=" << null); if (null) { - CHK(h->setNull() == 0); + CHK(h->setNull() == 0 || h->getNdbError().code == error_code); + if (error_code) + return 0; isNull = false; CHK(h->getNull(isNull) == 0 && isNull == true); CHK(getBlobLength(h, len) == 0 && len == 0); } else { - CHK(h->setValue(v.m_val, v.m_len) == 0); + CHK(h->setValue(v.m_val, v.m_len) == 0 || h->getNdbError().code == error_code); + if (error_code) + return 0; CHK(h->getNull(isNull) == 0 && isNull == false); CHK(getBlobLength(h, len) == 0 && len == v.m_len); } @@ -479,11 +485,11 @@ setBlobValue(NdbBlob* h, const Bval& v) } static int -setBlobValue(const Tup& tup) +setBlobValue(const Tup& tup, int error_code = 0) { - CHK(setBlobValue(g_bh1, tup.m_blob1) == 0); + CHK(setBlobValue(g_bh1, tup.m_blob1, error_code) == 0); if (! g_opt.m_oneblob) - CHK(setBlobValue(g_bh2, tup.m_blob2) == 0); + CHK(setBlobValue(g_bh2, tup.m_blob2, error_code) == 0); return 0; } @@ -543,13 +549,18 @@ writeBlobData(NdbBlob* h, const Bval& v) bool isNull; unsigned len; DBG("write " << h->getColumn()->getName() << " len=" << v.m_len << " null=" << null); + int error_code = v.m_error_code; if (null) { - CHK(h->setNull() == 0); + CHK(h->setNull() == 0 || h->getNdbError().code == error_code); + if (error_code) + return 0; isNull = false; CHK(h->getNull(isNull) == 0 && isNull == true); CHK(getBlobLength(h, len) == 0 && len == 0); } else { - CHK(h->truncate(v.m_len) == 0); + CHK(h->truncate(v.m_len) == 0 || h->getNdbError().code == error_code); + if (error_code) + return 0; unsigned n = 0; do { unsigned m = g_opt.m_full ? v.m_len : urandom(v.m_len + 1); @@ -568,11 +579,14 @@ writeBlobData(NdbBlob* h, const Bval& v) } static int -writeBlobData(const Tup& tup) +writeBlobData(Tup& tup, int error_code = 0) { + tup.m_blob1.m_error_code = error_code; CHK(writeBlobData(g_bh1, tup.m_blob1) == 0); - if (! g_opt.m_oneblob) + if (! g_opt.m_oneblob) { + tup.m_blob2.m_error_code = error_code; CHK(writeBlobData(g_bh2, tup.m_blob2) == 0); + } return 0; } @@ -635,19 +649,20 @@ blobWriteHook(NdbBlob* h, void* arg) } static int -setBlobWriteHook(NdbBlob* h, Bval& v) +setBlobWriteHook(NdbBlob* h, Bval& v, int error_code = 0) { DBG("setBlobWriteHook"); + v.m_error_code = error_code; CHK(h->setActiveHook(blobWriteHook, &v) == 0); return 0; } static int -setBlobWriteHook(Tup& tup) +setBlobWriteHook(Tup& tup, int error_code = 0) { - CHK(setBlobWriteHook(g_bh1, tup.m_blob1) == 0); + CHK(setBlobWriteHook(g_bh1, tup.m_blob1, error_code) == 0); if (! g_opt.m_oneblob) - CHK(setBlobWriteHook(g_bh2, tup.m_blob2) == 0); + CHK(setBlobWriteHook(g_bh2, tup.m_blob2, error_code) == 0); return 0; } @@ -869,7 +884,10 @@ readPk(int style) DBG("readPk pk1=" << hex << tup.m_pk1); CHK((g_con = g_ndb->startTransaction()) != 0); CHK((g_opr = g_con->getNdbOperation(g_opt.m_tname)) != 0); - CHK(g_opr->readTuple() == 0); + if (urandom(2) == 0) + CHK(g_opr->readTuple() == 0); + else + CHK(g_opr->readTuple(NdbOperation::LM_CommittedRead) == 0); CHK(g_opr->equal("PK1", tup.m_pk1) == 0); if (g_opt.m_pk2len != 0) CHK(g_opr->equal("PK2", tup.m_pk2) == 0); @@ -883,6 +901,8 @@ readPk(int style) CHK(readBlobData(tup) == 0); } CHK(g_con->execute(Commit) == 0); + // verify lock mode upgrade + CHK(g_opr->getLockMode() == NdbOperation::LM_Read); if (style == 0 || style == 1) { CHK(verifyBlobValue(tup) == 0); } @@ -900,23 +920,40 @@ updatePk(int style) for (unsigned k = 0; k < g_opt.m_rows; k++) { Tup& tup = g_tups[k]; DBG("updatePk pk1=" << hex << tup.m_pk1); - CHK((g_con = g_ndb->startTransaction()) != 0); - CHK((g_opr = g_con->getNdbOperation(g_opt.m_tname)) != 0); - CHK(g_opr->updateTuple() == 0); - CHK(g_opr->equal("PK1", tup.m_pk1) == 0); - if (g_opt.m_pk2len != 0) - CHK(g_opr->equal("PK2", tup.m_pk2) == 0); - CHK(getBlobHandles(g_opr) == 0); - if (style == 0) { - CHK(setBlobValue(tup) == 0); - } else if (style == 1) { - CHK(setBlobWriteHook(tup) == 0); - } else { - CHK(g_con->execute(NoCommit) == 0); - CHK(writeBlobData(tup) == 0); + while (1) { + int mode = urandom(3); + int error_code = mode == 0 ? 0 : 4275; + CHK((g_con = g_ndb->startTransaction()) != 0); + CHK((g_opr = g_con->getNdbOperation(g_opt.m_tname)) != 0); + if (mode == 0) { + DBG("using updateTuple"); + CHK(g_opr->updateTuple() == 0); + } else if (mode == 1) { + DBG("using readTuple exclusive"); + CHK(g_opr->readTuple(NdbOperation::LM_Exclusive) == 0); + } else { + DBG("using readTuple - will fail and retry"); + CHK(g_opr->readTuple() == 0); + } + CHK(g_opr->equal("PK1", tup.m_pk1) == 0); + if (g_opt.m_pk2len != 0) + CHK(g_opr->equal("PK2", tup.m_pk2) == 0); + CHK(getBlobHandles(g_opr) == 0); + if (style == 0) { + CHK(setBlobValue(tup, error_code) == 0); + } else if (style == 1) { + CHK(setBlobWriteHook(tup, error_code) == 0); + } else { + CHK(g_con->execute(NoCommit) == 0); + CHK(writeBlobData(tup, error_code) == 0); + } + if (error_code == 0) { + CHK(g_con->execute(Commit) == 0); + g_ndb->closeTransaction(g_con); + break; + } + g_ndb->closeTransaction(g_con); } - CHK(g_con->execute(Commit) == 0); - g_ndb->closeTransaction(g_con); g_opr = 0; g_con = 0; tup.m_exists = true; @@ -1002,7 +1039,10 @@ readIdx(int style) DBG("readIdx pk1=" << hex << tup.m_pk1); CHK((g_con = g_ndb->startTransaction()) != 0); CHK((g_opx = g_con->getNdbIndexOperation(g_opt.m_x1name, g_opt.m_tname)) != 0); - CHK(g_opx->readTuple() == 0); + if (urandom(2) == 0) + CHK(g_opx->readTuple() == 0); + else + CHK(g_opx->readTuple(NdbOperation::LM_CommittedRead) == 0); CHK(g_opx->equal("PK2", tup.m_pk2) == 0); CHK(getBlobHandles(g_opx) == 0); if (style == 0) { @@ -1014,6 +1054,8 @@ readIdx(int style) CHK(readBlobData(tup) == 0); } CHK(g_con->execute(Commit) == 0); + // verify lock mode upgrade (already done by NdbIndexOperation) + CHK(g_opx->getLockMode() == NdbOperation::LM_Read); if (style == 0 || style == 1) { CHK(verifyBlobValue(tup) == 0); } @@ -1031,6 +1073,7 @@ updateIdx(int style) for (unsigned k = 0; k < g_opt.m_rows; k++) { Tup& tup = g_tups[k]; DBG("updateIdx pk1=" << hex << tup.m_pk1); + // skip 4275 testing CHK((g_con = g_ndb->startTransaction()) != 0); CHK((g_opx = g_con->getNdbIndexOperation(g_opt.m_x1name, g_opt.m_tname)) != 0); CHK(g_opx->updateTuple() == 0); @@ -1128,7 +1171,10 @@ readScan(int style, bool idx) } else { CHK((g_ops = g_con->getNdbIndexScanOperation(g_opt.m_x2name, g_opt.m_tname)) != 0); } - CHK(g_ops->readTuples(NdbScanOperation::LM_Read) == 0); + if (urandom(2) == 0) + CHK(g_ops->readTuples(NdbOperation::LM_Read) == 0); + else + CHK(g_ops->readTuples(NdbOperation::LM_CommittedRead) == 0); CHK(g_ops->getValue("PK1", (char*)&tup.m_pk1) != 0); if (g_opt.m_pk2len != 0) CHK(g_ops->getValue("PK2", tup.m_pk2) != 0); @@ -1139,6 +1185,8 @@ readScan(int style, bool idx) CHK(setBlobReadHook(tup) == 0); } CHK(g_con->execute(NoCommit) == 0); + // verify lock mode upgrade + CHK(g_ops->getLockMode() == NdbOperation::LM_Read); unsigned rows = 0; while (1) { int ret; @@ -1180,7 +1228,7 @@ updateScan(int style, bool idx) } else { CHK((g_ops = g_con->getNdbIndexScanOperation(g_opt.m_x2name, g_opt.m_tname)) != 0); } - CHK(g_ops->readTuples(NdbScanOperation::LM_Exclusive) == 0); + CHK(g_ops->readTuples(NdbOperation::LM_Exclusive) == 0); CHK(g_ops->getValue("PK1", (char*)&tup.m_pk1) != 0); if (g_opt.m_pk2len != 0) CHK(g_ops->getValue("PK2", tup.m_pk2) != 0); @@ -1199,6 +1247,7 @@ updateScan(int style, bool idx) // calculate new blob values calcBval(g_tups[k], false); tup.copyfrom(g_tups[k]); + // cannot do 4275 testing, scan op error code controls execution CHK((g_opr = g_ops->updateCurrentTuple()) != 0); CHK(getBlobHandles(g_opr) == 0); if (style == 0) { @@ -1232,7 +1281,7 @@ deleteScan(bool idx) } else { CHK((g_ops = g_con->getNdbIndexScanOperation(g_opt.m_x2name, g_opt.m_tname)) != 0); } - CHK(g_ops->readTuples(NdbScanOperation::LM_Exclusive) == 0); + CHK(g_ops->readTuples(NdbOperation::LM_Exclusive) == 0); CHK(g_ops->getValue("PK1", (char*)&tup.m_pk1) != 0); if (g_opt.m_pk2len != 0) CHK(g_ops->getValue("PK2", tup.m_pk2) != 0); @@ -1651,7 +1700,7 @@ testperf() char b[20]; CHK((g_con = g_ndb->startTransaction()) != 0); CHK((g_ops = g_con->getNdbScanOperation(tab.getName())) != 0); - CHK(g_ops->readTuples(NdbScanOperation::LM_Read) == 0); + CHK(g_ops->readTuples(NdbOperation::LM_Read) == 0); CHK(g_ops->getValue(cA, (char*)&a) != 0); CHK(g_ops->getValue(cB, b) != 0); CHK(g_con->execute(NoCommit) == 0); @@ -1680,7 +1729,7 @@ testperf() char c[20]; CHK((g_con = g_ndb->startTransaction()) != 0); CHK((g_ops = g_con->getNdbScanOperation(tab.getName())) != 0); - CHK(g_ops->readTuples(NdbScanOperation::LM_Read) == 0); + CHK(g_ops->readTuples(NdbOperation::LM_Read) == 0); CHK(g_ops->getValue(cA, (char*)&a) != 0); CHK((g_bh1 = g_ops->getBlobHandle(cC)) != 0); CHK(g_con->execute(NoCommit) == 0); -- cgit v1.2.1 From 5436a16e436e4a97720cd884f646d2b8fa713e9c Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 14:13:45 +0200 Subject: Fixed variable description --- sql/mysqld.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 1a576616966..dda2fbc3588 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -5433,7 +5433,7 @@ Disable with --skip-ndbcluster (will save memory).", #endif {"nb-use-copying-alter-table", OPT_NDB_USE_COPYING_ALTER_TABLE, - "Force ndbcluster to always copy tables at alter table (used for ensuring that operations such as renaming fields are propagated to ndb data dictionary).", + "Force ndbcluster to always copy tables at alter table (should only be used if on-line alter table fails).", (gptr*) &global_system_variables.ndb_use_copying_alter_table, (gptr*) &global_system_variables.ndb_use_copying_alter_table, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, -- cgit v1.2.1 From 6e9bdcc9e91db27ca37535f7d4989d08727d1902 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 08:31:38 -0400 Subject: BUG#16002: Unsigned partition function support After review fix sql/sql_partition.cc: After review fix --- sql/sql_partition.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index a9f9e59c0cc..6b111f8406d 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -2532,10 +2532,10 @@ int get_partition_id_range(partition_info *part_info, if (loc_part_id != max_partition) loc_part_id++; *part_id= (uint32)loc_part_id; - if (loc_part_id == max_partition) - if (range_array[loc_part_id] != LONGLONG_MAX) - if (part_func_value >= range_array[loc_part_id]) - DBUG_RETURN(HA_ERR_NO_PARTITION_FOUND); + if (loc_part_id == max_partition && + range_array[loc_part_id] != LONGLONG_MAX && + part_func_value >= range_array[loc_part_id]) + DBUG_RETURN(HA_ERR_NO_PARTITION_FOUND); DBUG_RETURN(0); } -- cgit v1.2.1 From a4c2d33ed976de778f1ff526b6d524a3ffe844c9 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 08:35:19 -0400 Subject: BUG#19801: Problems with single partition with only NULL allowed in LIST partitioning After review fix sql/partition_info.cc: After review fix --- sql/partition_info.cc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/sql/partition_info.cc b/sql/partition_info.cc index 6e3023289d8..988c24ae344 100644 --- a/sql/partition_info.cc +++ b/sql/partition_info.cc @@ -567,7 +567,6 @@ bool partition_info::check_list_constants() uint i; uint list_index= 0; longlong *list_value; - bool not_first; bool result= TRUE; longlong curr_value, prev_value; partition_element* part_def; @@ -634,19 +633,19 @@ bool partition_info::check_list_constants() if (no_list_values) { + bool first= TRUE; qsort((void*)list_array, no_list_values, sizeof(LIST_PART_ENTRY), &list_part_cmp); - not_first= FALSE; i= prev_value= 0; //prev_value initialised to quiet compiler do { DBUG_ASSERT(i < no_list_values); curr_value= list_array[i].list_value; - if (likely(!not_first || prev_value != curr_value)) + if (likely(first || prev_value != curr_value)) { prev_value= curr_value; - not_first= TRUE; + first= FALSE; } else { -- cgit v1.2.1 From 89ce81ceedc465115cafd39f29a05689a6da7205 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 15:57:23 +0300 Subject: Bug #18895: BIT values cause joins to fail The Field::eq() considered instances of Field_bit that differ only in bit_ptr/bit_ofs equal. This caused equality conditions optimization (build_equal_items_for_cond()) to make bad field substitutions that result in wrong predicates. Field_bit requires an overloaded eq() function that checks the bit_ptr/bit_ofs in addition to Field::eq(). mysql-test/r/select.result: Bug #18895: BIT values cause joins to fail - test case mysql-test/t/select.test: Bug #18895: BIT values cause joins to fail - test case sql/field.h: Bug #18895: BIT values cause joins to fail - eq() method overloaded for Field_bit --- mysql-test/r/select.result | 20 ++++++++++++++++++++ mysql-test/t/select.test | 26 ++++++++++++++++++++++++++ sql/field.h | 9 ++++++++- 3 files changed, 54 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result index 4c1e64cc1cb..e80e8f9ec41 100644 --- a/mysql-test/r/select.result +++ b/mysql-test/r/select.result @@ -3359,3 +3359,23 @@ id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range PRIMARY,b b 5 NULL 3 Using where 1 SIMPLE t2 ref c c 5 test.t1.a 2 Using where DROP TABLE t1, t2; +create table t1 ( +a int unsigned not null auto_increment primary key, +b bit not null, +c bit not null +); +create table t2 ( +a int unsigned not null auto_increment primary key, +b bit not null, +c int unsigned not null, +d varchar(50) +); +insert into t1 (b,c) values (0,1), (0,1); +insert into t2 (b,c) values (0,1); +select t1.a, t1.b + 0, t1.c + 0, t2.a, t2.b + 0, t2.c, t2.d +from t1 left outer join t2 on t1.a = t2.c and t2.b <> 1 +where t1.b <> 1 order by t1.a; +a t1.b + 0 t1.c + 0 a t2.b + 0 c d +1 0 1 1 0 1 NULL +2 0 1 NULL NULL NULL NULL +drop table t1,t2; diff --git a/mysql-test/t/select.test b/mysql-test/t/select.test index 4ed7c3d1de9..ef7f9ca9d89 100644 --- a/mysql-test/t/select.test +++ b/mysql-test/t/select.test @@ -2840,3 +2840,29 @@ EXPLAIN SELECT a, c, d, f FROM t1,t2 WHERE a=c AND b BETWEEN 4 AND 6 AND a > 0; DROP TABLE t1, t2; + +# +# Bug #18895: BIT values cause joins to fail +# +create table t1 ( + a int unsigned not null auto_increment primary key, + b bit not null, + c bit not null +); + +create table t2 ( + a int unsigned not null auto_increment primary key, + b bit not null, + c int unsigned not null, + d varchar(50) +); + +insert into t1 (b,c) values (0,1), (0,1); +insert into t2 (b,c) values (0,1); + +-- Row 1 should succeed. Row 2 should fail. Both fail. +select t1.a, t1.b + 0, t1.c + 0, t2.a, t2.b + 0, t2.c, t2.d +from t1 left outer join t2 on t1.a = t2.c and t2.b <> 1 +where t1.b <> 1 order by t1.a; + +drop table t1,t2; diff --git a/sql/field.h b/sql/field.h index f4d27e46877..e7b7aa45c27 100644 --- a/sql/field.h +++ b/sql/field.h @@ -124,7 +124,7 @@ public: static bool type_can_have_key_part(enum_field_types); static enum_field_types field_type_merge(enum_field_types, enum_field_types); static Item_result result_merge_type(enum_field_types); - bool eq(Field *field) + virtual bool eq(Field *field) { return (ptr == field->ptr && null_ptr == field->null_ptr && null_bit == field->null_bit); @@ -1358,6 +1358,13 @@ public: bit_ptr= bit_ptr_arg; bit_ofs= bit_ofs_arg; } + bool eq(Field *field) + { + return (Field::eq(field) && + field->type() == type() && + bit_ptr == ((Field_bit *)field)->bit_ptr && + bit_ofs == ((Field_bit *)field)->bit_ofs); + } }; -- cgit v1.2.1 From f10fa9711bd0a6f8d575b7dd7814fad47ec611fc Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 16:54:54 +0200 Subject: support-files/mysql.server.sh : Fix the startup sequence. bug#18810 + bug#20118 support-files/mysql.server.sh: Ensure that some necessary / useful system services have been started already, when the MySQL server is started. This fixes bug#18810 and bug#20118 --- support-files/mysql.server.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/support-files/mysql.server.sh b/support-files/mysql.server.sh index 150a8a151ba..0a18fbff78e 100644 --- a/support-files/mysql.server.sh +++ b/support-files/mysql.server.sh @@ -17,6 +17,7 @@ ### BEGIN INIT INFO # Provides: mysql # Required-Start: $local_fs $network $remote_fs +# Should-Start: ypbind nscd ldap ntpd xntpd # Required-Stop: $local_fs $network $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 -- cgit v1.2.1 From 1a9fae81cb5018f8706d49f1032053355ce701c4 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 21:06:02 +0400 Subject: Better comments in KEY_PART_INFO struct --- sql/structs.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sql/structs.h b/sql/structs.h index 081ada88bf7..2037496635a 100644 --- a/sql/structs.h +++ b/sql/structs.h @@ -70,7 +70,13 @@ typedef struct st_key_part_info { /* Info about a key part */ Field *field; uint offset; /* offset in record (from 0) */ uint null_offset; /* Offset to null_bit in record */ - uint16 length; /* Length of key_part */ + uint16 length; /* Length of keypart value in bytes */ + /* + Number of bytes required to store the keypart value. This may be + different from the "length" field as it also counts + - possible NULL-flag byte (see HA_KEY_NULL_LENGTH) + - possible HA_KEY_BLOB_LENGTH bytes needed to store actual value length. + */ uint16 store_length; uint16 key_type; uint16 fieldnr; /* Fieldnum in UNIREG */ -- cgit v1.2.1 From ca1fd91f160a812f5da149cfb9a8065cf78bf8ad Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 20:16:32 +0200 Subject: Bug #19493 NDB does not ignore duplicate keys when using LOAD DATA LOCAL - make sure to disable bulk insert when check for duplicate key is needed mysql-test/r/ndb_loaddatalocal.result: New BitKeeper file ``mysql-test/r/ndb_loaddatalocal.result'' mysql-test/t/ndb_loaddatalocal.test: New BitKeeper file ``mysql-test/t/ndb_loaddatalocal.test'' --- mysql-test/r/ndb_loaddatalocal.result | 46 +++++++++++++++++++++++ mysql-test/t/ndb_loaddatalocal.test | 70 +++++++++++++++++++++++++++++++++++ sql/ha_ndbcluster.cc | 18 +++++++++ 3 files changed, 134 insertions(+) create mode 100644 mysql-test/r/ndb_loaddatalocal.result create mode 100644 mysql-test/t/ndb_loaddatalocal.test diff --git a/mysql-test/r/ndb_loaddatalocal.result b/mysql-test/r/ndb_loaddatalocal.result new file mode 100644 index 00000000000..1d15c608f03 --- /dev/null +++ b/mysql-test/r/ndb_loaddatalocal.result @@ -0,0 +1,46 @@ +DROP TABLE IF EXISTS t1; +create table t1(a int) engine=myisam; +select * into outfile 'MYSQLTEST_VARDIR/master-data/ndb_loaddatalocal.select_outfile' from t1; +drop table t1; +create table t1(a int) engine=ndb; +load data local infile 'MYSQLTEST_VARDIR/master-data/ndb_loaddatalocal.select_outfile' into table t1; +select count(*) from t1; +count(*) +10000 +drop table t1; +create table t1(a int) engine=myisam; +insert into t1 values (1), (2), (2), (3); +select * into outfile 'MYSQLTEST_VARDIR/master-data/ndb_loaddatalocal.select_outfile' from t1; +drop table t1; +create table t1(a int primary key) engine=ndb; +load data local infile 'MYSQLTEST_VARDIR/master-data/ndb_loaddatalocal.select_outfile' into table t1; +select * from t1 order by a; +a +1 +2 +3 +drop table t1; +create table t1(a int) engine=myisam; +insert into t1 values (1), (1), (2), (3); +select * into outfile 'MYSQLTEST_VARDIR/master-data/ndb_loaddatalocal.select_outfile' from t1; +drop table t1; +create table t1(a int primary key) engine=ndb; +load data local infile 'MYSQLTEST_VARDIR/master-data/ndb_loaddatalocal.select_outfile' into table t1; +select * from t1 order by a; +a +1 +2 +3 +drop table t1; +create table t1(a int) engine=myisam; +insert into t1 values (1), (2), (3), (3); +select * into outfile 'MYSQLTEST_VARDIR/master-data/ndb_loaddatalocal.select_outfile' from t1; +drop table t1; +create table t1(a int primary key) engine=ndb; +load data local infile 'MYSQLTEST_VARDIR/master-data/ndb_loaddatalocal.select_outfile' into table t1; +select * from t1 order by a; +a +1 +2 +3 +drop table t1; diff --git a/mysql-test/t/ndb_loaddatalocal.test b/mysql-test/t/ndb_loaddatalocal.test new file mode 100644 index 00000000000..47054ecfbf5 --- /dev/null +++ b/mysql-test/t/ndb_loaddatalocal.test @@ -0,0 +1,70 @@ +-- source include/have_ndb.inc +-- source include/not_embedded.inc + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +create table t1(a int) engine=myisam; +let $1=10000; +disable_query_log; +set SQL_LOG_BIN=0; +while ($1) +{ + insert into t1 values(1); + dec $1; +} +set SQL_LOG_BIN=1; +enable_query_log; +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +eval select * into outfile '$MYSQLTEST_VARDIR/master-data/ndb_loaddatalocal.select_outfile' from t1; +#This will generate a 20KB file, now test LOAD DATA LOCAL +drop table t1; + +create table t1(a int) engine=ndb; +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +eval load data local infile '$MYSQLTEST_VARDIR/master-data/ndb_loaddatalocal.select_outfile' into table t1; +select count(*) from t1; +system rm $MYSQLTEST_VARDIR/master-data/ndb_loaddatalocal.select_outfile ; +drop table t1; + +create table t1(a int) engine=myisam; +insert into t1 values (1), (2), (2), (3); +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +eval select * into outfile '$MYSQLTEST_VARDIR/master-data/ndb_loaddatalocal.select_outfile' from t1; +drop table t1; + +create table t1(a int primary key) engine=ndb; +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +eval load data local infile '$MYSQLTEST_VARDIR/master-data/ndb_loaddatalocal.select_outfile' into table t1; +system rm $MYSQLTEST_VARDIR/master-data/ndb_loaddatalocal.select_outfile; +select * from t1 order by a; +drop table t1; + +create table t1(a int) engine=myisam; +insert into t1 values (1), (1), (2), (3); +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +eval select * into outfile '$MYSQLTEST_VARDIR/master-data/ndb_loaddatalocal.select_outfile' from t1; +drop table t1; + +create table t1(a int primary key) engine=ndb; +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +eval load data local infile '$MYSQLTEST_VARDIR/master-data/ndb_loaddatalocal.select_outfile' into table t1; +system rm $MYSQLTEST_VARDIR/master-data/ndb_loaddatalocal.select_outfile; +select * from t1 order by a; +drop table t1; + +create table t1(a int) engine=myisam; +insert into t1 values (1), (2), (3), (3); +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +eval select * into outfile '$MYSQLTEST_VARDIR/master-data/ndb_loaddatalocal.select_outfile' from t1; +drop table t1; + +create table t1(a int primary key) engine=ndb; +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +eval load data local infile '$MYSQLTEST_VARDIR/master-data/ndb_loaddatalocal.select_outfile' into table t1; +system rm $MYSQLTEST_VARDIR/master-data/ndb_loaddatalocal.select_outfile; +select * from t1 order by a; +drop table t1; + +# End of 4.1 tests diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index b2f60fdaf2e..5be09f697a0 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -1836,6 +1836,11 @@ int ha_ndbcluster::write_row(byte *record) if(m_ignore_dup_key && table->primary_key != MAX_KEY) { + /* + compare if expression with that in start_bulk_insert() + start_bulk_insert will set parameters to ensure that each + write_row is committed individually + */ int peek_res= peek_row(record); if (!peek_res) @@ -2996,6 +3001,19 @@ void ha_ndbcluster::start_bulk_insert(ha_rows rows) DBUG_PRINT("enter", ("rows: %d", (int)rows)); m_rows_inserted= (ha_rows) 0; + if (!m_use_write && m_ignore_dup_key) + { + /* + compare if expression with that in write_row + we have a situation where peek_row() will be called + so we cannot batch + */ + DBUG_PRINT("info", ("Batching turned off as duplicate key is " + "ignored by using peek_row")); + m_rows_to_insert= 1; + m_bulk_insert_rows= 1; + DBUG_VOID_RETURN; + } if (rows == (ha_rows) 0) { /* We don't know how many will be inserted, guess */ -- cgit v1.2.1 From abe41c553dd3d073b254ebfcf9e974e161df83a7 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 14:18:42 -0400 Subject: Bug#19262: internal function create_typelib() uses DBUG_ENTER() but not DBUG_RETURN Trivial replacement of return with DBUG_RETURN. sql/sp_head.cc: Trivial replacement of return with DBUG_RETURN --- sql/sp_head.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sql/sp_head.cc b/sql/sp_head.cc index 3b29a841966..14295072fff 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -565,7 +565,7 @@ create_typelib(MEM_ROOT *mem_root, create_field *field_def, List *src) result->name= ""; if (!(result->type_names=(const char **) alloc_root(mem_root,(sizeof(char *)+sizeof(int))*(result->count+1)))) - return 0; + DBUG_RETURN(0); result->type_lengths= (unsigned int *)(result->type_names + result->count+1); List_iterator it(*src); String conv; @@ -599,7 +599,7 @@ create_typelib(MEM_ROOT *mem_root, create_field *field_def, List *src) result->type_names[result->count]= 0; result->type_lengths[result->count]= 0; } - return result; + DBUG_RETURN(result); } -- cgit v1.2.1 From f3a286cc5466f04c4c72a81f15f80c2f03a175a3 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 20:22:03 +0200 Subject: Bug #19493 NDB does not ignore duplicate keys when using LOAD DATA LOCAL - correction of backport error --- sql/ha_ndbcluster.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 5be09f697a0..e3dca77ba2f 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -3001,7 +3001,7 @@ void ha_ndbcluster::start_bulk_insert(ha_rows rows) DBUG_PRINT("enter", ("rows: %d", (int)rows)); m_rows_inserted= (ha_rows) 0; - if (!m_use_write && m_ignore_dup_key) + if (m_ignore_dup_key && table->primary_key != MAX_KEY) { /* compare if expression with that in write_row -- cgit v1.2.1 From 2a07ee7202f1ca198d60f89f3abd1cd88f87d717 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 21:30:49 +0200 Subject: Bug#19191 Repeated crashes on OpenBSD for ssl test cases - Import patch from yaSSL extra/yassl/src/handshake.cpp: Import patch yassl.diff extra/yassl/src/socket_wrapper.cpp: Import patch yassl.diff --- extra/yassl/src/handshake.cpp | 8 ++++---- extra/yassl/src/socket_wrapper.cpp | 13 +++++++++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/extra/yassl/src/handshake.cpp b/extra/yassl/src/handshake.cpp index 12b62f26e14..66ec64f4af8 100644 --- a/extra/yassl/src/handshake.cpp +++ b/extra/yassl/src/handshake.cpp @@ -880,7 +880,7 @@ int sendData(SSL& ssl, const void* buffer, int sz) ssl.SetError(no_error); ssl.verfiyHandShakeComplete(); - if (ssl.GetError()) return 0; + if (ssl.GetError()) return -1; int sent = 0; for (;;) { @@ -891,7 +891,7 @@ int sendData(SSL& ssl, const void* buffer, int sz) buildMessage(ssl, out, data); ssl.Send(out.get_buffer(), out.get_size()); - if (ssl.GetError()) return 0; + if (ssl.GetError()) return -1; sent += len; if (sent == sz) break; } @@ -918,14 +918,14 @@ int receiveData(SSL& ssl, Data& data) ssl.SetError(no_error); ssl.verfiyHandShakeComplete(); - if (ssl.GetError()) return 0; + if (ssl.GetError()) return -1; if (!ssl.bufferedData()) processReply(ssl); ssl.fillData(data); ssl.useLog().ShowData(data.get_length()); - if (ssl.GetError()) return 0; + if (ssl.GetError()) return -1; if (data.get_length() == 0 && ssl.getSocket().WouldBlock()) { ssl.SetError(YasslError(SSL_ERROR_WANT_READ)); diff --git a/extra/yassl/src/socket_wrapper.cpp b/extra/yassl/src/socket_wrapper.cpp index 803f4b01249..06b403c999d 100644 --- a/extra/yassl/src/socket_wrapper.cpp +++ b/extra/yassl/src/socket_wrapper.cpp @@ -113,13 +113,22 @@ uint Socket::get_ready() const uint Socket::send(const byte* buf, unsigned int sz, int flags) const { + const byte* pos = buf; + const byte* end = pos + sz; + assert(socket_ != INVALID_SOCKET); - int sent = ::send(socket_, reinterpret_cast(buf), sz, flags); + + while (pos != end) { + int sent = ::send(socket_, reinterpret_cast(pos), + static_cast(end - pos), flags); if (sent == -1) return 0; - return sent; + pos += sent; + } + + return sz; } -- cgit v1.2.1 From 7c1748a1a4e38dc49490a6c31761fe05a820d9e0 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 23:09:03 +0200 Subject: cleanup String::set(integer) --- sql/field.cc | 5 +---- sql/item.cc | 5 +---- sql/item_func.cc | 20 ++++---------------- sql/item_sum.cc | 5 +---- sql/sql_string.cc | 16 +++------------- sql/sql_string.h | 7 +++++-- 6 files changed, 15 insertions(+), 43 deletions(-) diff --git a/sql/field.cc b/sql/field.cc index 1f65adca2d5..b51e5b63779 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -7125,10 +7125,7 @@ int Field_blob::store(double nr) int Field_blob::store(longlong nr, bool unsigned_val) { CHARSET_INFO *cs=charset(); - if (unsigned_val) - value.set((ulonglong) nr, cs); - else - value.set(nr, cs); + value.set(nr, unsigned_val, cs); return Field_blob::store(value.ptr(), (uint) value.length(), cs); } diff --git a/sql/item.cc b/sql/item.cc index 5fa3ad61c15..cb5bbab53a2 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -212,10 +212,7 @@ String *Item::val_string_from_int(String *str) longlong nr= val_int(); if (null_value) return 0; - if (unsigned_flag) - str->set((ulonglong) nr, &my_charset_bin); - else - str->set(nr, &my_charset_bin); + str->set(nr, unsigned_flag, &my_charset_bin); return str; } diff --git a/sql/item_func.cc b/sql/item_func.cc index 051238843fa..5030c9729cd 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -556,10 +556,7 @@ String *Item_int_func::val_str(String *str) longlong nr=val_int(); if (null_value) return 0; - if (!unsigned_flag) - str->set(nr,&my_charset_bin); - else - str->set((ulonglong) nr,&my_charset_bin); + str->set(nr, unsigned_flag, &my_charset_bin); return str; } @@ -701,10 +698,7 @@ String *Item_func_numhybrid::val_str(String *str) longlong nr= int_op(); if (null_value) return 0; /* purecov: inspected */ - if (!unsigned_flag) - str->set(nr,&my_charset_bin); - else - str->set((ulonglong) nr,&my_charset_bin); + str->set(nr, unsigned_flag, &my_charset_bin); break; } case REAL_RESULT: @@ -2058,10 +2052,7 @@ String *Item_func_min_max::val_str(String *str) longlong nr=val_int(); if (null_value) return 0; - if (!unsigned_flag) - str->set(nr,&my_charset_bin); - else - str->set((ulonglong) nr,&my_charset_bin); + str->set(nr, unsigned_flag, &my_charset_bin); return str; } case DECIMAL_RESULT: @@ -2847,10 +2838,7 @@ String *Item_func_udf_int::val_str(String *str) longlong nr=val_int(); if (null_value) return 0; - if (!unsigned_flag) - str->set(nr,&my_charset_bin); - else - str->set((ulonglong) nr,&my_charset_bin); + str->set(nr, unsigned_flag, &my_charset_bin); return str; } diff --git a/sql/item_sum.cc b/sql/item_sum.cc index 1285e842769..2479d181276 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -1584,10 +1584,7 @@ Item_sum_hybrid::val_str(String *str) my_decimal2string(E_DEC_FATAL_ERROR, &sum_dec, 0, 0, 0, str); return str; case INT_RESULT: - if (unsigned_flag) - str->set((ulonglong) sum_int, &my_charset_bin); - else - str->set((longlong) sum_int, &my_charset_bin); + str->set(sum_int, unsigned_flag, &my_charset_bin); break; case ROW_RESULT: default: diff --git a/sql/sql_string.cc b/sql/sql_string.cc index 19ee9f259dc..39395ae2ca5 100644 --- a/sql/sql_string.cc +++ b/sql/sql_string.cc @@ -96,24 +96,14 @@ bool String::realloc(uint32 alloc_length) return FALSE; } -bool String::set(longlong num, CHARSET_INFO *cs) +bool String::set(longlong num, bool unsigned_flag, CHARSET_INFO *cs) { uint l=20*cs->mbmaxlen+1; + int base= unsigned_flag ? 10 : -10; if (alloc(l)) return TRUE; - str_length=(uint32) (cs->cset->longlong10_to_str)(cs,Ptr,l,-10,num); - str_charset=cs; - return FALSE; -} - -bool String::set(ulonglong num, CHARSET_INFO *cs) -{ - uint l=20*cs->mbmaxlen+1; - - if (alloc(l)) - return TRUE; - str_length=(uint32) (cs->cset->longlong10_to_str)(cs,Ptr,l,10,num); + str_length=(uint32) (cs->cset->longlong10_to_str)(cs,Ptr,l,base,num); str_charset=cs; return FALSE; } diff --git a/sql/sql_string.h b/sql/sql_string.h index ddae6368228..4e1d3a4837e 100644 --- a/sql/sql_string.h +++ b/sql/sql_string.h @@ -139,8 +139,11 @@ public: } str_charset=cs; } - bool set(longlong num, CHARSET_INFO *cs); - bool set(ulonglong num, CHARSET_INFO *cs); + bool set(longlong num, bool unsigned_flag, CHARSET_INFO *cs); + bool set(longlong num, CHARSET_INFO *cs) + { return set(num, false, cs); } + bool set(ulonglong num, CHARSET_INFO *cs) + { return set((longlong)num, true, cs); } bool set(double num,uint decimals, CHARSET_INFO *cs); /* -- cgit v1.2.1 From b2f308160b761f98d5864b36b33b64d82273cdcf Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Jun 2006 01:48:41 +0400 Subject: Many files: After merge fix mysql-test/r/func_time.result: After merge fix mysql-test/r/func_concat.result: After merge fix mysql-test/r/cast.result: After merge fix sql/item_cmpfunc.h: After merge fix sql/item_cmpfunc.cc: After merge fix sql/field.cc: After merge fix --- mysql-test/r/cast.result | 2 +- mysql-test/r/func_concat.result | 14 +++---- mysql-test/r/func_time.result | 4 +- sql/field.cc | 82 ++++++++++++++++------------------------- sql/item_cmpfunc.cc | 8 ++-- sql/item_cmpfunc.h | 15 +++----- 6 files changed, 52 insertions(+), 73 deletions(-) diff --git a/mysql-test/r/cast.result b/mysql-test/r/cast.result index 8f5a5eea99f..d60efa083e0 100644 --- a/mysql-test/r/cast.result +++ b/mysql-test/r/cast.result @@ -254,7 +254,7 @@ cast("2001-1-1" as datetime) = "2001-01-01 00:00:00" 1 select cast("1:2:3" as TIME) = "1:02:03"; cast("1:2:3" as TIME) = "1:02:03" -1 +0 select cast(NULL as DATE); cast(NULL as DATE) NULL diff --git a/mysql-test/r/func_concat.result b/mysql-test/r/func_concat.result index 7fb489f2a14..66808afd4e9 100644 --- a/mysql-test/r/func_concat.result +++ b/mysql-test/r/func_concat.result @@ -68,13 +68,6 @@ select 'a' union select concat('a', -0.0000); a a a0.0000 -create table t1(f1 varchar(6)) charset=utf8; -insert into t1 values ("123456"); -select concat(f1, 2) a from t1 union select 'x' a from t1; -a -1234562 -x -drop table t1; select concat((select x from (select 'a' as x) as t1 ), (select y from (select 'b' as y) as t2 )) from (select 1 union select 2 ) as t3; @@ -82,3 +75,10 @@ concat((select x from (select 'a' as x) as t1 ), (select y from (select 'b' as y) as t2 )) ab ab +create table t1(f1 varchar(6)) charset=utf8; +insert into t1 values ("123456"); +select concat(f1, 2) a from t1 union select 'x' a from t1; +a +1234562 +x +drop table t1; diff --git a/mysql-test/r/func_time.result b/mysql-test/r/func_time.result index a0faa05f988..cee5dc70c32 100644 --- a/mysql-test/r/func_time.result +++ b/mysql-test/r/func_time.result @@ -784,7 +784,9 @@ f1 select f1 from t1 where "2006-1-1" between f1 and 'zzz'; f1 Warnings: -Warning 1292 Truncated incorrect date value: 'zzz' +Warning 1292 Incorrect date value: 'zzz' for column 'f1' at row 1 +Warning 1292 Truncated incorrect INTEGER value: 'zzz' +Warning 1292 Truncated incorrect INTEGER value: 'zzz' select f1 from t1 where makedate(2006,1) between date(f1) and date(f3); f1 2006-01-01 diff --git a/sql/field.cc b/sql/field.cc index 64f888eb24d..b0a0633b6ce 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -4530,11 +4530,11 @@ int Field_timestamp::store(const char *from,uint len,CHARSET_INFO *cs) int error; bool have_smth_to_conv; my_bool in_dst_time_gap; - THD *thd= table->in_use; + THD *thd= table ? table->in_use : current_thd; /* We don't want to store invalid or fuzzy datetime values in TIMESTAMP */ have_smth_to_conv= (str_to_datetime(from, len, &l_time, - (table->in_use->variables.sql_mode & + (thd->variables.sql_mode & MODE_NO_ZERO_DATE) | MODE_NO_ZERO_IN_DATE, &error) > MYSQL_TIMESTAMP_ERROR); @@ -4599,7 +4599,7 @@ int Field_timestamp::store(longlong nr, bool unsigned_val) my_time_t timestamp= 0; int error; my_bool in_dst_time_gap; - THD *thd= table->in_use; + THD *thd= table ? table->in_use : current_thd; /* We don't want to store invalid or fuzzy datetime values in TIMESTAMP */ longlong tmp= number_to_datetime(nr, &l_time, (thd->variables.sql_mode & @@ -4653,7 +4653,7 @@ longlong Field_timestamp::val_int(void) { uint32 temp; TIME time_tmp; - THD *thd= table->in_use; + THD *thd= table ? table->in_use : current_thd; #ifdef WORDS_BIGENDIAN if (table->s->db_low_byte_first) @@ -4678,7 +4678,7 @@ String *Field_timestamp::val_str(String *val_buffer, String *val_ptr) { uint32 temp, temp2; TIME time_tmp; - THD *thd= table->in_use; + THD *thd= table ? table->in_use : current_thd; char *to; val_buffer->alloc(field_length+1); @@ -4749,7 +4749,7 @@ String *Field_timestamp::val_str(String *val_buffer, String *val_ptr) bool Field_timestamp::get_date(TIME *ltime, uint fuzzydate) { long temp; - THD *thd= table->in_use; + THD *thd= table ? table->in_use : current_thd; #ifdef WORDS_BIGENDIAN if (table->s->db_low_byte_first) temp=uint4korr(ptr); @@ -4832,7 +4832,8 @@ void Field_timestamp::sql_type(String &res) const void Field_timestamp::set_time() { - long tmp= (long) table->in_use->query_start(); + THD *thd= table ? table->in_use : current_thd; + long tmp= (long) thd->query_start(); set_notnull(); #ifdef WORDS_BIGENDIAN if (table->s->db_low_byte_first) @@ -5024,12 +5025,13 @@ String *Field_time::val_str(String *val_buffer, bool Field_time::get_date(TIME *ltime, uint fuzzydate) { long tmp; + THD *thd= table ? table->in_use : current_thd; if (!(fuzzydate & TIME_FUZZY_DATE)) { - push_warning_printf(table->in_use, MYSQL_ERROR::WARN_LEVEL_WARN, + push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, ER(ER_WARN_DATA_OUT_OF_RANGE), field_name, - table->in_use->row_count); + thd->row_count); return 1; } tmp=(long) sint3korr(ptr); @@ -5217,9 +5219,10 @@ int Field_date::store(const char *from, uint len,CHARSET_INFO *cs) TIME l_time; uint32 tmp; int error; + THD *thd= table ? table->in_use : current_thd; if (str_to_datetime(from, len, &l_time, TIME_FUZZY_DATE | - (table->in_use->variables.sql_mode & + (thd->variables.sql_mode & (MODE_NO_ZERO_IN_DATE | MODE_NO_ZERO_DATE | MODE_INVALID_DATES)), &error) <= MYSQL_TIMESTAMP_ERROR) @@ -5272,9 +5275,10 @@ int Field_date::store(longlong nr, bool unsigned_val) TIME not_used; int error; longlong initial_nr= nr; + THD *thd= table ? table->in_use : current_thd; nr= number_to_datetime(nr, ¬_used, (TIME_FUZZY_DATE | - (table->in_use->variables.sql_mode & + (thd->variables.sql_mode & (MODE_NO_ZERO_IN_DATE | MODE_NO_ZERO_DATE | MODE_INVALID_DATES))), &error); @@ -5420,9 +5424,10 @@ int Field_newdate::store(const char *from,uint len,CHARSET_INFO *cs) TIME l_time; long tmp; int error; + THD *thd= table ? table->in_use : current_thd; if (str_to_datetime(from, len, &l_time, (TIME_FUZZY_DATE | - (table->in_use->variables.sql_mode & + (thd->variables.sql_mode & (MODE_NO_ZERO_IN_DATE | MODE_NO_ZERO_DATE | MODE_INVALID_DATES))), &error) <= MYSQL_TIMESTAMP_ERROR) @@ -5460,9 +5465,10 @@ int Field_newdate::store(longlong nr, bool unsigned_val) TIME l_time; longlong tmp; int error; + THD *thd= table ? table->in_use : current_thd; if (number_to_datetime(nr, &l_time, (TIME_FUZZY_DATE | - (table->in_use->variables.sql_mode & + (thd->variables.sql_mode & (MODE_NO_ZERO_IN_DATE | MODE_NO_ZERO_DATE | MODE_INVALID_DATES))), &error) == LL(-1)) @@ -5605,10 +5611,11 @@ int Field_datetime::store(const char *from,uint len,CHARSET_INFO *cs) int error; ulonglong tmp= 0; enum enum_mysql_timestamp_type func_res; + THD *thd= table ? table->in_use : current_thd; func_res= str_to_datetime(from, len, &time_tmp, (TIME_FUZZY_DATE | - (table->in_use->variables.sql_mode & + (thd->variables.sql_mode & (MODE_NO_ZERO_IN_DATE | MODE_NO_ZERO_DATE | MODE_INVALID_DATES))), &error); @@ -5655,9 +5662,10 @@ int Field_datetime::store(longlong nr, bool unsigned_val) TIME not_used; int error; longlong initial_nr= nr; + THD *thd= table ? table->in_use : current_thd; nr= number_to_datetime(nr, ¬_used, (TIME_FUZZY_DATE | - (table->in_use->variables.sql_mode & + (thd->variables.sql_mode & (MODE_NO_ZERO_IN_DATE | MODE_NO_ZERO_DATE | MODE_INVALID_DATES))), &error); @@ -9076,10 +9084,10 @@ Field::set_datetime_warning(MYSQL_ERROR::enum_warning_level level, uint code, const char *str, uint str_length, timestamp_type ts_type, int cuted_increment) { - if (table->in_use->really_abort_on_warning() || + THD *thd= table ? table->in_use : current_thd; + if (thd->really_abort_on_warning() || set_warning(level, code, cuted_increment)) - make_truncated_value_warning(table ? table->in_use : current_thd, - str, str_length, ts_type, + make_truncated_value_warning(thd, str, str_length, ts_type, field_name); } @@ -9106,13 +9114,13 @@ Field::set_datetime_warning(MYSQL_ERROR::enum_warning_level level, uint code, longlong nr, timestamp_type ts_type, int cuted_increment) { - if (table->in_use->really_abort_on_warning() || + THD *thd= table ? table->in_use : current_thd; + if (thd->really_abort_on_warning() || set_warning(level, code, cuted_increment)) { char str_nr[22]; char *str_end= longlong10_to_str(nr, str_nr, -10); - make_truncated_value_warning(table ? table->in_use : current_thd, - str_nr, (uint) (str_end - str_nr), + make_truncated_value_warning(thd, str_nr, (uint) (str_end - str_nr), ts_type, field_name); } } @@ -9138,41 +9146,15 @@ void Field::set_datetime_warning(MYSQL_ERROR::enum_warning_level level, uint code, double nr, timestamp_type ts_type) { - if (table->in_use->really_abort_on_warning() || + THD *thd= table ? table->in_use : current_thd; + if (thd->really_abort_on_warning() || set_warning(level, code, 1)) { /* DBL_DIG is enough to print '-[digits].E+###' */ char str_nr[DBL_DIG + 8]; uint str_len= my_sprintf(str_nr, (str_nr, "%g", nr)); - make_truncated_value_warning(table ? table->in_use : current_thd, - str_nr, str_len, ts_type, + make_truncated_value_warning(thd, str_nr, str_len, ts_type, field_name); } } -/* - maximum possible display length for blob - - SYNOPSIS - Field_blob::max_length() - - RETURN - length -*/ -uint32 Field_blob::max_length() -{ - switch (packlength) - { - case 1: - return 255 * field_charset->mbmaxlen; - case 2: - return 65535 * field_charset->mbmaxlen; - case 3: - return 16777215 * field_charset->mbmaxlen; - case 4: - return (uint32) 4294967295U; - default: - DBUG_ASSERT(0); // we should never go here - return 0; - } -} diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 6a1ec1de7e7..db1af9de0a2 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -366,18 +366,18 @@ static bool convert_constant_item(THD *thd, Field *field, Item **item) if (!(*item)->with_subselect && (*item)->const_item()) { /* For comparison purposes allow invalid dates like 2000-01-32 */ - ulong orig_sql_mode= field->table->in_use->variables.sql_mode; - field->table->in_use->variables.sql_mode|= MODE_INVALID_DATES; + ulong orig_sql_mode= thd->variables.sql_mode; + thd->variables.sql_mode|= MODE_INVALID_DATES; if (!(*item)->save_in_field(field, 1) && !((*item)->null_value)) { Item *tmp=new Item_int_with_ref(field->val_int(), *item, test(field->flags & UNSIGNED_FLAG)); - field->table->in_use->variables.sql_mode= orig_sql_mode; + thd->variables.sql_mode= orig_sql_mode; if (tmp) thd->change_item_tree(item, tmp); return 1; // Item was replaced } - field->table->in_use->variables.sql_mode= orig_sql_mode; + thd->variables.sql_mode= orig_sql_mode; } return 0; } diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index 340bf2bb2bf..a2b10eacc79 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -45,11 +45,8 @@ public: int set_compare_func(Item_bool_func2 *owner, Item_result type); inline int set_compare_func(Item_bool_func2 *owner_arg) { - Item_result ar= (*a)->result_as_longlong() && (*b)->const_item() ? - INT_RESULT : (*a)->result_type(); - Item_result br= (*b)->result_as_longlong() && (*a)->const_item() ? - INT_RESULT : (*b)->result_type(); - return set_compare_func(owner_arg, item_cmp_type(ar, br)); + return set_compare_func(owner_arg, item_cmp_type((*a)->result_type(), + (*b)->result_type())); } inline int set_cmp_func(Item_bool_func2 *owner_arg, Item **a1, Item **a2, @@ -62,11 +59,9 @@ public: inline int set_cmp_func(Item_bool_func2 *owner_arg, Item **a1, Item **a2) { - Item_result ar= (*a1)->result_as_longlong() && (*a2)->const_item() ? - INT_RESULT : (*a1)->result_type(); - Item_result br= (*a2)->result_as_longlong() && (*a1)->const_item() ? - INT_RESULT : (*a2)->result_type(); - return set_cmp_func(owner_arg, a1, a2, item_cmp_type(ar, br)); + return set_cmp_func(owner_arg, a1, a2, + item_cmp_type((*a1)->result_type(), + (*a2)->result_type())); } inline int compare() { return (this->*func)(); } -- cgit v1.2.1 From 4414b56d85d937354e2fb384604394ec3d1ffc56 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 19:40:06 -0400 Subject: merge update mysql-test/t/partition.test: merge error --- mysql-test/t/partition.test | 1 + sql/ha_ndbcluster.cc | 9 +-------- sql/ha_partition.cc | 9 +-------- sql/partition_info.cc | 24 ++++++++++++++++++++++++ sql/partition_info.h | 3 ++- 5 files changed, 29 insertions(+), 17 deletions(-) diff --git a/mysql-test/t/partition.test b/mysql-test/t/partition.test index 9b85d6e023e..f62bb2dcd01 100644 --- a/mysql-test/t/partition.test +++ b/mysql-test/t/partition.test @@ -36,6 +36,7 @@ insert into t1 values (0xFFFFFFFFFFFFFFFD); insert into t1 values (0xFFFFFFFFFFFFFFFE); select * from t1 where (a + 1) < 10; select * from t1 where (a + 1) > 10; +drop table t1; # # Bug 19307: CSV engine crashes diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index d1bd4e057ae..caeb0631d85 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -6420,14 +6420,7 @@ void ha_ndbcluster::print_error(int error, myf errflag) DBUG_PRINT("enter", ("error = %d", error)); if (error == HA_ERR_NO_PARTITION_FOUND) - { - char buf[100]; - my_bitmap_map *old_map= dbug_tmp_use_all_columns(table, table->read_set); - my_error(ER_NO_PARTITION_FOR_GIVEN_VALUE, MYF(0), - m_part_info->part_expr->null_value ? "NULL" : - llstr(m_part_info->part_expr->val_int(), buf)); - dbug_tmp_restore_column_map(table->read_set, old_map); - } + m_part_info->print_no_partition_found(table); else handler::print_error(error, errflag); DBUG_VOID_RETURN; diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index f151d89bb1a..93fb6409f9f 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -5097,14 +5097,7 @@ void ha_partition::print_error(int error, myf errflag) DBUG_PRINT("enter", ("error: %d", error)); if (error == HA_ERR_NO_PARTITION_FOUND) - { - char buf[100]; - my_bitmap_map *old_map= dbug_tmp_use_all_columns(table, table->read_set); - my_error(ER_NO_PARTITION_FOR_GIVEN_VALUE, MYF(0), - m_part_info->part_expr->null_value ? "NULL" : - llstr(m_part_info->part_expr->val_int(), buf)); - dbug_tmp_restore_column_map(table->read_set, old_map); - } + m_part_info->print_no_partition_found(table); else m_file[0]->print_error(error, errflag); DBUG_VOID_RETURN; diff --git a/sql/partition_info.cc b/sql/partition_info.cc index 51230a0f5c0..39c8d976732 100644 --- a/sql/partition_info.cc +++ b/sql/partition_info.cc @@ -827,4 +827,28 @@ end: } +/* + Print error for no partition found + SYNOPSIS + print_no_partition_found() + table Table object + RETURN VALUES + NONE +*/ + +void partition_info::print_no_partition_found(TABLE *table) +{ + char buf[100]; + char *buf_ptr= (char*)&buf; + my_bitmap_map *old_map= dbug_tmp_use_all_columns(table, table->read_set); + + if (part_expr->null_value) + buf_ptr= (char*)"NULL"; + else + longlong2str(part_expr->val_int(), buf, + part_expr->unsigned_flag ? 10 : -10); + my_error(ER_NO_PARTITION_FOR_GIVEN_VALUE, MYF(0), buf_ptr); + dbug_tmp_restore_column_map(table->read_set, old_map); +} + #endif /* WITH_PARTITION_STORAGE_ENGINE */ diff --git a/sql/partition_info.h b/sql/partition_info.h index f195e555934..3d8c6a40221 100644 --- a/sql/partition_info.h +++ b/sql/partition_info.h @@ -217,7 +217,7 @@ public: list_of_part_fields(FALSE), list_of_subpart_fields(FALSE), linear_hash_ind(FALSE), fixed(FALSE), is_auto_partitioned(FALSE), from_openfrm(FALSE), - has_null_value(FALSE), has_null_part_id(0) + has_null_value(FALSE) { all_fields_in_PF.clear_all(); all_fields_in_PPF.clear_all(); @@ -251,6 +251,7 @@ public: bool check_list_constants(); bool check_partition_info(THD *thd, handlerton **eng_type, handler *file, ulonglong max_rows); + void print_no_partition_found(TABLE *table); private: static int list_part_cmp(const void* a, const void* b); static int list_part_cmp_unsigned(const void* a, const void* b); -- cgit v1.2.1 From c63746452585930364d2c009d9ed5abd6ee5d461 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Jun 2006 05:43:19 +0400 Subject: Post innodb-5.1-ss594 modifications. Avoiding build error caused by adding new files. storage/innobase/Makefile.am: Post innodb-5.1-ss594 modifications. Including newly added functions to EXTA_DIST. --- storage/innobase/Makefile.am | 2 ++ 1 file changed, 2 insertions(+) diff --git a/storage/innobase/Makefile.am b/storage/innobase/Makefile.am index 6fdc1621059..7884715d839 100644 --- a/storage/innobase/Makefile.am +++ b/storage/innobase/Makefile.am @@ -77,6 +77,8 @@ EXTRA_DIST = include/btr0btr.h include/btr0btr.ic include/btr0cur.h include/btr include/ut0byte.h include/ut0byte.ic include/ut0dbg.h include/ut0lst.h \ include/ut0mem.h include/ut0mem.ic include/ut0rnd.h include/ut0rnd.ic \ include/ut0sort.h include/ut0ut.h include/ut0ut.ic include/ut0vec.h include/ut0vec.ic include/ha_prototypes.h \ + include/ut0list.h include/ut0list.ic \ + include/ut0wqueue.h \ CMakeLists.txt noinst_LIBRARIES = libinnobase.a -- cgit v1.2.1 From 7431df6031227b7948765baf230a7a3eb54d4339 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Jun 2006 22:37:20 -0400 Subject: merge fixes --- mysql-test/r/partition.result | 1 + mysql-test/r/partition_range.result | 1 + mysql-test/t/partition_range.test | 1 + 3 files changed, 3 insertions(+) diff --git a/mysql-test/r/partition.result b/mysql-test/r/partition.result index dce1e1969f2..fa1baaec07e 100644 --- a/mysql-test/r/partition.result +++ b/mysql-test/r/partition.result @@ -27,6 +27,7 @@ select * from t1 where (a + 1) > 10; a 18446744073709551613 18446744073709551614 +drop table t1; create table t1 (a int) engine = csv partition by list (a) diff --git a/mysql-test/r/partition_range.result b/mysql-test/r/partition_range.result index ff17abe0ffb..152f91f0887 100644 --- a/mysql-test/r/partition_range.result +++ b/mysql-test/r/partition_range.result @@ -389,6 +389,7 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (a) (PARTITION p0 VALUES LESS THAN (2) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (10) ENGINE = MyISAM) insert into t1 values (0xFFFFFFFFFFFFFFFF); ERROR HY000: Table has no partition for value 18446744073709551615 +drop table t1; create table t1 (a int) partition by range (MOD(a,3)) subpartition by hash(a) diff --git a/mysql-test/t/partition_range.test b/mysql-test/t/partition_range.test index 5c1c17dc511..8e1e2e72e69 100644 --- a/mysql-test/t/partition_range.test +++ b/mysql-test/t/partition_range.test @@ -411,6 +411,7 @@ partition by range (a) show create table t1; --error ER_NO_PARTITION_FOR_GIVEN_VALUE insert into t1 values (0xFFFFFFFFFFFFFFFF); +drop table t1; # # BUG 18962 Errors in DROP PARTITION -- cgit v1.2.1 From aab5228292404adb1c462f36fa7da7c881314961 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Jun 2006 07:24:23 +0400 Subject: Post innodb-5.1-ss594 modifications. Avoiding compilation error ("void * - unknown size"). --- storage/innobase/mem/mem0mem.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storage/innobase/mem/mem0mem.c b/storage/innobase/mem/mem0mem.c index 3c42c1d0fff..d26e4be3f88 100644 --- a/storage/innobase/mem/mem0mem.c +++ b/storage/innobase/mem/mem0mem.c @@ -144,7 +144,7 @@ mem_heap_cat( void* res = mem_heap_alloc(heap, len1 + len2); memcpy(res, b1, len1); - memcpy(res + len1, b2, len2); + memcpy((char *)res + len1, b2, len2); return(res); } -- cgit v1.2.1 From c437565cff2111fd0856b9dfed525cd9a921ff84 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Jun 2006 10:11:50 +0200 Subject: Fixing code to avoid compile problem on Solaris (aCC). sql/handler.cc: Moving write_locked_table_maps() and binlog_log_row() into an anonymous namespace. --- sql/handler.cc | 158 ++++++++++++++++++++++++++++++--------------------------- 1 file changed, 83 insertions(+), 75 deletions(-) diff --git a/sql/handler.cc b/sql/handler.cc index e6f2f564d39..7ab7e88ec9a 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -3221,99 +3221,107 @@ namespace { THD::lock THD::locked_tables */ -static int -write_locked_table_maps(THD *thd) +namespace { - DBUG_ENTER("write_locked_table_maps"); - DBUG_PRINT("enter", ("thd=%p, thd->lock=%p, thd->locked_tables=%p", - thd, thd->lock, thd->locked_tables)); - - if (thd->get_binlog_table_maps() == 0) + int write_locked_table_maps(THD *thd) { - /* - Exactly one table has to be locked, otherwise this code is not - guaranteed to work. - */ - DBUG_ASSERT((thd->lock != NULL) + (thd->locked_tables != NULL) == 1); - - MYSQL_LOCK *lock= thd->lock ? thd->lock : thd->locked_tables; - DBUG_ASSERT(lock->table_count > 0); - TABLE **const end_ptr= lock->table + lock->table_count; - for (TABLE **table_ptr= lock->table ; - table_ptr != end_ptr ; - ++table_ptr) + DBUG_ENTER("write_locked_table_maps"); + DBUG_PRINT("enter", ("thd=%p, thd->lock=%p, thd->locked_tables=%p", + thd, thd->lock, thd->locked_tables)); + + if (thd->get_binlog_table_maps() == 0) { - TABLE *const table= *table_ptr; - DBUG_PRINT("info", ("Checking table %s", table->s->table_name)); - if (table->current_lock == F_WRLCK && - check_table_binlog_row_based(thd, table)) + /* + Exactly one table has to be locked, otherwise this code is not + guaranteed to work. + */ + DBUG_ASSERT((thd->lock != NULL) + (thd->locked_tables != NULL) == 1); + + MYSQL_LOCK *lock= thd->lock ? thd->lock : thd->locked_tables; + DBUG_ASSERT(lock->table_count > 0); + TABLE **const end_ptr= lock->table + lock->table_count; + for (TABLE **table_ptr= lock->table ; + table_ptr != end_ptr ; + ++table_ptr) { - int const has_trans= table->file->has_transactions(); - int const error= thd->binlog_write_table_map(table, has_trans); - /* - If an error occurs, it is the responsibility of the caller to - roll back the transaction. - */ - if (unlikely(error)) - DBUG_RETURN(1); + TABLE *const table= *table_ptr; + DBUG_PRINT("info", ("Checking table %s", table->s->table_name)); + if (table->current_lock == F_WRLCK && + check_table_binlog_row_based(thd, table)) + { + int const has_trans= table->file->has_transactions(); + int const error= thd->binlog_write_table_map(table, has_trans); + /* + If an error occurs, it is the responsibility of the caller to + roll back the transaction. + */ + if (unlikely(error)) + DBUG_RETURN(1); + } } } + DBUG_RETURN(0); } - DBUG_RETURN(0); -} -template int binlog_log_row(TABLE* table, - const byte *before_record, - const byte *after_record) -{ - if (table->file->is_injective()) - return 0; - bool error= 0; - THD *const thd= table->in_use; - - if (check_table_binlog_row_based(thd, table)) + template int + binlog_log_row(TABLE* table, + const byte *before_record, + const byte *after_record) { - MY_BITMAP cols; - /* Potential buffer on the stack for the bitmap */ - uint32 bitbuf[BITMAP_STACKBUF_SIZE/sizeof(uint32)]; - uint n_fields= table->s->fields; - my_bool use_bitbuf= n_fields <= sizeof(bitbuf)*8; + if (table->file->is_injective()) + return 0; + bool error= 0; + THD *const thd= table->in_use; - /* - If there are no table maps written to the binary log, this is - the first row handled in this statement. In that case, we need - to write table maps for all locked tables to the binary log. - */ - if (likely(!(error= bitmap_init(&cols, - use_bitbuf ? bitbuf : NULL, - (n_fields + 7) & ~7UL, - false)))) + if (check_table_binlog_row_based(thd, table)) { - bitmap_set_all(&cols); - if (likely(!(error= write_locked_table_maps(thd)))) + MY_BITMAP cols; + /* Potential buffer on the stack for the bitmap */ + uint32 bitbuf[BITMAP_STACKBUF_SIZE/sizeof(uint32)]; + uint n_fields= table->s->fields; + my_bool use_bitbuf= n_fields <= sizeof(bitbuf)*8; + + /* + If there are no table maps written to the binary log, this is + the first row handled in this statement. In that case, we need + to write table maps for all locked tables to the binary log. + */ + if (likely(!(error= bitmap_init(&cols, + use_bitbuf ? bitbuf : NULL, + (n_fields + 7) & ~7UL, + false)))) { - error= - RowsEventT::binlog_row_logging_function(thd, table, - table->file->has_transactions(), - &cols, table->s->fields, - before_record, after_record); + bitmap_set_all(&cols); + if (likely(!(error= write_locked_table_maps(thd)))) + { + error= + RowsEventT::binlog_row_logging_function(thd, table, + table->file->has_transactions(), + &cols, table->s->fields, + before_record, after_record); + } + if (!use_bitbuf) + bitmap_free(&cols); } - if (!use_bitbuf) - bitmap_free(&cols); } + return error ? HA_ERR_RBR_LOGGING_FAILED : 0; } - return error ? HA_ERR_RBR_LOGGING_FAILED : 0; -} -/* - Instantiate the versions we need for the above template function, because we - have -fno-implicit-template as compiling option. -*/ + /* + Instantiate the versions we need for the above template function, + because we have -fno-implicit-template as compiling option. + */ -template int binlog_log_row(TABLE *, const byte *, const byte *); -template int binlog_log_row(TABLE *, const byte *, const byte *); -template int binlog_log_row(TABLE *, const byte *, const byte *); + template int + binlog_log_row(TABLE *, const byte *, const byte *); + + template int + binlog_log_row(TABLE *, const byte *, const byte *); + + template int + binlog_log_row(TABLE *, const byte *, const byte *); +} #endif /* HAVE_ROW_BASED_REPLICATION */ -- cgit v1.2.1 From 64b82dfdb756e13b887078151e1a576b9eb9698c Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Jun 2006 13:38:32 +0500 Subject: Fixed windows compilation failure introduced by fix for BUG#12982. include/my_global.h: Remove cast to ssize_t, since there is no ssize_t type on Windows. --- include/my_global.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/my_global.h b/include/my_global.h index 0458d9dcf2c..b8e9a2fdef9 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -737,7 +737,7 @@ typedef SOCKET_SIZE_TYPE size_socket; #define FLT_MAX ((float)3.40282346638528860e+38) #endif #ifndef SSIZE_MAX -#define SSIZE_MAX (ssize_t)((~((size_t) 0)) / 2) +#define SSIZE_MAX ((~((size_t) 0)) / 2) #endif #if !defined(HAVE_ISINF) && !defined(isinf) -- cgit v1.2.1 From 57096e94cf2a5fc021dabea25e04e258efa0f86f Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Jun 2006 11:40:53 +0200 Subject: Removed stray bracket --- configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.in b/configure.in index 026a6013180..be6f3c8eaec 100644 --- a/configure.in +++ b/configure.in @@ -15,7 +15,7 @@ DOT_FRM_VERSION=6 # See the libtool docs for information on how to do shared lib versions. SHARED_LIB_MAJOR_VERSION=15 SHARED_LIB_VERSION=$SHARED_LIB_MAJOR_VERSION:0:0 -} + # Set all version vars based on $VERSION. How do we do this more elegant ? # Remember that regexps needs to quote [ and ] since this is run through m4 MYSQL_NO_DASH_VERSION=`echo $VERSION | sed -e "s|[[a-z]]*-.*$||"` -- cgit v1.2.1 From 7eec6c3f0402401caad46740bd90f04190f2df18 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Jun 2006 11:55:53 +0200 Subject: BUG#17201: Removed version number from test case output mysql-test/r/mysqldump.result: Remove comments in mysqldump output mysql-test/t/mysqldump.test: Remove comments in mysqldump output --- mysql-test/r/mysqldump.result | 28 ---------------------------- mysql-test/t/mysqldump.test | 2 +- 2 files changed, 1 insertion(+), 29 deletions(-) diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result index 099304fe6e7..ad31b8e2a65 100644 --- a/mysql-test/r/mysqldump.result +++ b/mysql-test/r/mysqldump.result @@ -2727,11 +2727,6 @@ insert into t1 values (1232131); insert into t1 values (4711); insert into t1 values (3231); insert into t1 values (0815); --- MySQL dump 10.10 --- --- Host: localhost Database: test --- ------------------------------------------------------ --- Server version 5.0.22-debug-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; @@ -2744,50 +2739,27 @@ insert into t1 values (0815); /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; --- --- Current Database: `test` --- - /*!40000 DROP DATABASE IF EXISTS `test`*/; CREATE DATABASE /*!32312 IF NOT EXISTS*/ `test` /*!40100 DEFAULT CHARACTER SET latin1 */; USE `test`; - --- --- Table structure for table `t1` --- - DROP TABLE IF EXISTS `t1`; CREATE TABLE `t1` ( `id` int(11) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1; --- --- Dumping data for table `t1` --- - /*!40000 ALTER TABLE `t1` DISABLE KEYS */; LOCK TABLES `t1` WRITE; INSERT INTO `t1` VALUES (1232131),(4711),(3231),(815); UNLOCK TABLES; /*!40000 ALTER TABLE `t1` ENABLE KEYS */; - --- --- Temporary table structure for view `v1` --- - DROP TABLE IF EXISTS `v1`; /*!50001 DROP VIEW IF EXISTS `v1`*/; /*!50001 CREATE TABLE `v1` ( `id` int(11) ) */; - --- --- Final view structure for view `v1` --- - /*!50001 DROP TABLE IF EXISTS `v1`*/; /*!50001 DROP VIEW IF EXISTS `v1`*/; /*!50001 CREATE ALGORITHM=UNDEFINED */ diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test index b7a714815b7..4113c136e17 100644 --- a/mysql-test/t/mysqldump.test +++ b/mysql-test/t/mysqldump.test @@ -1157,5 +1157,5 @@ insert into t1 values (1232131); insert into t1 values (4711); insert into t1 values (3231); insert into t1 values (0815); ---exec $MYSQL_DUMP --add-drop-database --databases test +--exec $MYSQL_DUMP --skip-comments --add-drop-database --databases test drop view v1; -- cgit v1.2.1 From ed849efcc176b4d7b500ca69cf0ee7b1ec39f8ab Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Jun 2006 11:59:21 +0200 Subject: Fixed typo in variable name --- sql/mysqld.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 851c3111a79..ad6f7401965 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -5432,7 +5432,7 @@ Disable with --skip-ndbcluster (will save memory).", (gptr*) &max_system_variables.ndb_index_stat_update_freq, 0, GET_ULONG, OPT_ARG, 20, 0, ~0L, 0, 0, 0}, #endif - {"nb-use-copying-alter-table", + {"ndb-use-copying-alter-table", OPT_NDB_USE_COPYING_ALTER_TABLE, "Force ndbcluster to always copy tables at alter table (should only be used if on-line alter table fails).", (gptr*) &global_system_variables.ndb_use_copying_alter_table, -- cgit v1.2.1 From 689205ae947176220ef7ba7332ffa2b765c4796a Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Jun 2006 16:24:02 +0500 Subject: Fix for bug#19667 group by a decimal expression yields wrong result mysql-test/r/type_newdecimal.result: Fix for bug#19667 group by a decimal expression yields wrong result test case mysql-test/t/type_newdecimal.test: Fix for bug#19667 group by a decimal expression yields wrong result test case --- mysql-test/r/type_newdecimal.result | 11 +++++++++++ mysql-test/t/type_newdecimal.test | 9 +++++++++ sql/item_buff.cc | 2 +- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/type_newdecimal.result b/mysql-test/r/type_newdecimal.result index 968c6d3ec6f..4caec152a1f 100644 --- a/mysql-test/r/type_newdecimal.result +++ b/mysql-test/r/type_newdecimal.result @@ -1397,3 +1397,14 @@ c1 9999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999 drop table t1; +create table t1 (i int, j int); +insert into t1 values (1,1), (1,2), (2,3), (2,4); +select i, count(distinct j) from t1 group by i; +i count(distinct j) +1 2 +2 2 +select i+0.0 as i2, count(distinct j) from t1 group by i2; +i2 count(distinct j) +1.0 2 +2.0 2 +drop table t1; diff --git a/mysql-test/t/type_newdecimal.test b/mysql-test/t/type_newdecimal.test index 74782a5bddb..35aff8b3c5a 100644 --- a/mysql-test/t/type_newdecimal.test +++ b/mysql-test/t/type_newdecimal.test @@ -1095,3 +1095,12 @@ insert into t1 values( insert into t1 values(1e100); select * from t1; drop table t1; + +# +# Bug#19667 group by a decimal expression yields wrong result +# +create table t1 (i int, j int); +insert into t1 values (1,1), (1,2), (2,3), (2,4); +select i, count(distinct j) from t1 group by i; +select i+0.0 as i2, count(distinct j) from t1 group by i2; +drop table t1; diff --git a/sql/item_buff.cc b/sql/item_buff.cc index 9db2f465080..1661f04a4ae 100644 --- a/sql/item_buff.cc +++ b/sql/item_buff.cc @@ -132,7 +132,7 @@ bool Cached_item_decimal::cmp() { my_decimal tmp; my_decimal *ptmp= item->val_decimal(&tmp); - if (null_value != item->null_value || my_decimal_cmp(&value, ptmp) == 0) + if (null_value != item->null_value || my_decimal_cmp(&value, ptmp)) { null_value= item->null_value; my_decimal2decimal(ptmp, &value); -- cgit v1.2.1 From e4bfa961ae40a5f55598d2ce183b9fa654b492d6 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Jun 2006 16:39:18 +0400 Subject: item_cmpfunc.h, cast.result: Post fix for bug#16377 mysql-test/r/cast.result: Post fix for bug#16377 sql/item_cmpfunc.h: Post fix for bug#16377 --- mysql-test/r/cast.result | 2 +- sql/item_cmpfunc.h | 15 +++++---------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/mysql-test/r/cast.result b/mysql-test/r/cast.result index 2538fbfd61d..68687670e17 100644 --- a/mysql-test/r/cast.result +++ b/mysql-test/r/cast.result @@ -192,7 +192,7 @@ cast("2001-1-1" as datetime) = "2001-01-01 00:00:00" 1 select cast("1:2:3" as TIME) = "1:02:03"; cast("1:2:3" as TIME) = "1:02:03" -1 +0 select cast(NULL as DATE); cast(NULL as DATE) NULL diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index 08d9de6ffd6..68852b5a5f6 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -43,11 +43,8 @@ public: int set_compare_func(Item_bool_func2 *owner, Item_result type); inline int set_compare_func(Item_bool_func2 *owner_arg) { - Item_result ar= (*a)->result_as_longlong() && (*b)->const_item() ? - INT_RESULT : (*a)->result_type(); - Item_result br= (*b)->result_as_longlong() && (*a)->const_item() ? - INT_RESULT : (*b)->result_type(); - return set_compare_func(owner_arg, item_cmp_type(ar, br)); + return set_compare_func(owner_arg, item_cmp_type((*a)->result_type(), + (*b)->result_type())); } inline int set_cmp_func(Item_bool_func2 *owner_arg, Item **a1, Item **a2, @@ -60,11 +57,9 @@ public: inline int set_cmp_func(Item_bool_func2 *owner_arg, Item **a1, Item **a2) { - Item_result ar= (*a1)->result_as_longlong() && (*a2)->const_item() ? - INT_RESULT : (*a1)->result_type(); - Item_result br= (*a2)->result_as_longlong() && (*a1)->const_item() ? - INT_RESULT : (*a2)->result_type(); - return set_cmp_func(owner_arg, a1, a2, item_cmp_type(ar, br)); + return set_cmp_func(owner_arg, a1, a2, + item_cmp_type((*a1)->result_type(), + (*a2)->result_type())); } inline int compare() { return (this->*func)(); } -- cgit v1.2.1 From 0ac7219404fa31fe1f0e7ecd25037b162d6fa571 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Jun 2006 16:51:24 +0200 Subject: Many files: Small corrections after a bad merge mysql-test/r/partition.result: Small corrections after a bad merge mysql-test/r/partition_02myisam.result: Small corrections after a bad merge mysql-test/r/partition_mgm.result: Small corrections after a bad merge mysql-test/r/partition_range.result: Small corrections after a bad merge --- mysql-test/r/partition.result | 30 +++++++++++------------ mysql-test/r/partition_02myisam.result | 44 +++++++++++++++++----------------- mysql-test/r/partition_mgm.result | 4 ++-- mysql-test/r/partition_range.result | 8 +++---- 4 files changed, 43 insertions(+), 43 deletions(-) diff --git a/mysql-test/r/partition.result b/mysql-test/r/partition.result index 14ccc98e059..95e122f20fc 100644 --- a/mysql-test/r/partition.result +++ b/mysql-test/r/partition.result @@ -46,13 +46,13 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) SUBPARTITION BY KEY (a) (PARTITION p0 VALUES LESS THAN (1) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (2) ENGINE = MyISAM)*/ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) SUBPARTITION BY KEY (a) (PARTITION p0 VALUES LESS THAN (1) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (2) ENGINE = MyISAM) */ alter table t1 reorganize partition p1 into (partition p1 values less than (3)); show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) SUBPARTITION BY KEY (a) (PARTITION p0 VALUES LESS THAN (1) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (3) ENGINE = MyISAM)*/ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) SUBPARTITION BY KEY (a) (PARTITION p0 VALUES LESS THAN (1) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (3) ENGINE = MyISAM) */ drop table t1; CREATE TABLE t1 ( a int not null, @@ -378,25 +378,25 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) */ alter table t1; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) */ alter table t1 engine=myisam; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) */ alter table t1 engine=heap; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) */ +) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) */ alter table t1 remove partitioning; show create table t1; Table Create Table @@ -413,7 +413,7 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) */ alter table t1 add column b int remove partitioning; show create table t1; Table Create Table @@ -430,7 +430,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) */ alter table t1 engine=heap partition by key(a) @@ -440,7 +440,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL -) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) */ +) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) */ alter table t1 engine=myisam, add column c int remove partitioning; show create table t1; Table Create Table @@ -459,7 +459,7 @@ t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, `c` int(11) DEFAULT NULL -) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) */ +) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) */ alter table t1 partition by key (a) (partition p0, partition p1); @@ -469,7 +469,7 @@ t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, `c` int(11) DEFAULT NULL -) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) */ +) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) */ alter table t1 engine=heap partition by key (a) @@ -480,7 +480,7 @@ t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, `c` int(11) DEFAULT NULL -) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) */ +) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) */ alter table t1 partition by key(a) (partition p0, partition p1 engine=heap); @@ -632,7 +632,7 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) SUBPARTITION BY HASH (a) (PARTITION p0 VALUES LESS THAN (100) (SUBPARTITION p0sp0 ENGINE = MyISAM), PARTITION p1 VALUES LESS THAN (200) (SUBPARTITION subpart21 ENGINE = MyISAM)) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) SUBPARTITION BY HASH (a) (PARTITION p0 VALUES LESS THAN (100) (SUBPARTITION p0sp0 ENGINE = MyISAM), PARTITION p1 VALUES LESS THAN (200) (SUBPARTITION subpart21 ENGINE = MyISAM)) */ drop table t1; create table t1 (a int) partition by key (a); @@ -646,7 +646,7 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM) */ drop table t1; create table t1 (a int, b int) partition by range (a) @@ -976,7 +976,7 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) PARTITION BY KEY (a) (PARTITION p0) +) /*!50100 PARTITION BY KEY (a) (PARTITION p0) */ set session sql_mode=''; drop table t1; create table t1 (a int) diff --git a/mysql-test/r/partition_02myisam.result b/mysql-test/r/partition_02myisam.result index 29b528f49dc..55263e4f8ce 100644 --- a/mysql-test/r/partition_02myisam.result +++ b/mysql-test/r/partition_02myisam.result @@ -147,7 +147,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -205,7 +205,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -260,7 +260,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -313,7 +313,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -371,7 +371,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -429,7 +429,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -489,7 +489,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -547,7 +547,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -603,7 +603,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -661,7 +661,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -721,7 +721,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -833,7 +833,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -891,7 +891,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (200) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part3 VALUES LESS THAN (2147483647) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM)) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (200) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part3 VALUES LESS THAN (2147483647) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM)) */ SELECT COUNT(*) = 0 AS my_value FROM t1; my_value 1 @@ -1304,7 +1304,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ DROP TABLE t1; CREATE TABLE t1 ( f1 INTEGER, f2 char(20)) PARTITION BY RANGE(f1) PARTITIONS 2 @@ -1319,7 +1319,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (1000) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (1000) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */ DROP TABLE t1; # 3.3.2 (positive) number of partition/subpartition , # 0 (= no) named partition/subpartition @@ -1454,7 +1454,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION p0 ENGINE = MyISAM, PARTITION part1 ENGINE = MyISAM) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION p0 ENGINE = MyISAM, PARTITION part1 ENGINE = MyISAM) */ INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 100 AND 200; SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200) AS my_value FROM t1; @@ -1502,7 +1502,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM) */ INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 100 - 1; ALTER TABLE t1 ADD PARTITION (PARTITION part0); SHOW CREATE TABLE t1; @@ -1510,7 +1510,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM, PARTITION part0 ENGINE = MyISAM) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM, PARTITION part0 ENGINE = MyISAM) */ INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 100 AND 200; SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200) AS my_value FROM t1; @@ -1557,7 +1557,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM, PARTITION part0 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM, PARTITION part0 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 100 AND 200; SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200) AS my_value FROM t1; @@ -1603,7 +1603,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM, PARTITION part0 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM, PARTITION part0 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */ INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 100 AND 200; SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200) AS my_value FROM t1; @@ -1651,14 +1651,14 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM) */ INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 100 - 1; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` char(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM) */ INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 100 AND 200; SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200) AS my_value FROM t1; diff --git a/mysql-test/r/partition_mgm.result b/mysql-test/r/partition_mgm.result index 48bbdf57b93..70bd1d6decf 100644 --- a/mysql-test/r/partition_mgm.result +++ b/mysql-test/r/partition_mgm.result @@ -6,11 +6,11 @@ Table Create Table t1 CREATE TABLE `t1` ( `f_date` date DEFAULT NULL, `f_varchar` varchar(30) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 2 +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 2 */ ALTER TABLE t1 COALESCE PARTITION 1; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `f_date` date DEFAULT NULL, `f_varchar` varchar(30) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 1 +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 1 */ diff --git a/mysql-test/r/partition_range.result b/mysql-test/r/partition_range.result index 6bd66a86597..3cbb517053a 100644 --- a/mysql-test/r/partition_range.result +++ b/mysql-test/r/partition_range.result @@ -143,7 +143,7 @@ t1 CREATE TABLE `t1` ( `b` int(11) NOT NULL, `c` int(11) NOT NULL, PRIMARY KEY (`a`,`b`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) SUBPARTITION BY HASH (a+b) (PARTITION x1 VALUES LESS THAN (1) (SUBPARTITION x11 ENGINE = MyISAM, SUBPARTITION x12 ENGINE = MyISAM), PARTITION x2 VALUES LESS THAN (5) (SUBPARTITION x21 ENGINE = MyISAM, SUBPARTITION x22 ENGINE = MyISAM)) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) SUBPARTITION BY HASH (a+b) (PARTITION x1 VALUES LESS THAN (1) (SUBPARTITION x11 ENGINE = MyISAM, SUBPARTITION x12 ENGINE = MyISAM), PARTITION x2 VALUES LESS THAN (5) (SUBPARTITION x21 ENGINE = MyISAM, SUBPARTITION x22 ENGINE = MyISAM)) */ ALTER TABLE t1 ADD COLUMN d int; show create table t1; Table Create Table @@ -153,7 +153,7 @@ t1 CREATE TABLE `t1` ( `c` int(11) NOT NULL, `d` int(11) DEFAULT NULL, PRIMARY KEY (`a`,`b`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) SUBPARTITION BY HASH (a+b) (PARTITION x1 VALUES LESS THAN (1) (SUBPARTITION x11 ENGINE = MyISAM, SUBPARTITION x12 ENGINE = MyISAM), PARTITION x2 VALUES LESS THAN (5) (SUBPARTITION x21 ENGINE = MyISAM, SUBPARTITION x22 ENGINE = MyISAM)) */ +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) SUBPARTITION BY HASH (a+b) (PARTITION x1 VALUES LESS THAN (1) (SUBPARTITION x11 ENGINE = MyISAM, SUBPARTITION x12 ENGINE = MyISAM), PARTITION x2 VALUES LESS THAN (5) (SUBPARTITION x21 ENGINE = MyISAM, SUBPARTITION x22 ENGINE = MyISAM)) */ drop table t1; CREATE TABLE t1 ( a int not null, @@ -376,7 +376,7 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` bigint(20) unsigned DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (a) (PARTITION p0 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (10) ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION p0 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (10) ENGINE = MyISAM) */ drop table t1; create table t1 (a bigint unsigned) partition by range (a) @@ -386,7 +386,7 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` bigint(20) unsigned DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (a) (PARTITION p0 VALUES LESS THAN (2) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (10) ENGINE = MyISAM) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION p0 VALUES LESS THAN (2) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (10) ENGINE = MyISAM) */ insert into t1 values (0xFFFFFFFFFFFFFFFF); ERROR HY000: Table has no partition for value 18446744073709551615 drop table t1; -- cgit v1.2.1 From 6e2bb263afa5a2348838df3e771c63715ab4e177 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Jun 2006 16:53:12 +0200 Subject: Various fixes to allow tests to pass. mysql-test/r/rpl_row_basic_11bugs.result: Result change mysql-test/t/disabled.def: Disabling test due to already reported bug. mysql-test/t/rpl_row_basic_11bugs.test: Adding code to replace server version mysql-test/t/rpl_truncate_7ndb.test: Adding sleep to allow NDB to write events to the binary log. --- mysql-test/r/rpl_row_basic_11bugs.result | 2 +- mysql-test/t/disabled.def | 1 + mysql-test/t/rpl_row_basic_11bugs.test | 3 +++ mysql-test/t/rpl_truncate_7ndb.test | 2 ++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/rpl_row_basic_11bugs.result b/mysql-test/r/rpl_row_basic_11bugs.result index 8c8a77b5084..e8be537816e 100644 --- a/mysql-test/r/rpl_row_basic_11bugs.result +++ b/mysql-test/r/rpl_row_basic_11bugs.result @@ -56,7 +56,7 @@ DELETE FROM t1 WHERE a = 0; UPDATE t1 SET a=99 WHERE a = 0; SHOW BINLOG EVENTS; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.11-beta-debug-log, Binlog ver: 4 +master-bin.000001 4 Format_desc 1 102 Server ver: SERVER_VERSION, Binlog ver: 4 master-bin.000001 102 Query 1 188 use `test`; CREATE TABLE t1 (a INT) master-bin.000001 188 Table_map 1 227 table_id: # (test.t1) master-bin.000001 227 Write_rows 1 266 table_id: # flags: STMT_END_F diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index de46b594f10..2023e9ef47a 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -35,6 +35,7 @@ rpl_switch_stm_row_mixed : BUG#18590 2006-03-28 brian rpl_row_blob_innodb : BUG#18980 2006-04-10 kent Test fails randomly rpl_row_func003 : BUG#19074 2006-13-04 andrei test failed rpl_sp : BUG#16456 2006-02-16 jmiller +rpl_sp_effects : BUG#19862 2006-06-15 mkindahl # the below testcase have been reworked to avoid the bug, test contains comment, keep bug open #ndb_binlog_ddl_multi : BUG#18976 2006-04-10 kent CRBR: multiple binlog, second binlog may miss schema log events diff --git a/mysql-test/t/rpl_row_basic_11bugs.test b/mysql-test/t/rpl_row_basic_11bugs.test index bd582ce349a..af7e9af4005 100644 --- a/mysql-test/t/rpl_row_basic_11bugs.test +++ b/mysql-test/t/rpl_row_basic_11bugs.test @@ -2,6 +2,8 @@ --source include/have_binlog_format_row.inc +let $SERVER_VERSION=`select version()`; + #This test case is not written for NDB, the result files #will not match when NDB is the default engine -- source include/not_ndb_default.inc @@ -49,5 +51,6 @@ DELETE FROM t1; INSERT INTO t1 VALUES (1),(2); DELETE FROM t1 WHERE a = 0; UPDATE t1 SET a=99 WHERE a = 0; +--replace_result $SERVER_VERSION SERVER_VERSION --replace_regex /table_id: [0-9]+/table_id: #/ SHOW BINLOG EVENTS; diff --git a/mysql-test/t/rpl_truncate_7ndb.test b/mysql-test/t/rpl_truncate_7ndb.test index 7a6151c6028..77ea303a17f 100644 --- a/mysql-test/t/rpl_truncate_7ndb.test +++ b/mysql-test/t/rpl_truncate_7ndb.test @@ -22,6 +22,8 @@ CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB; INSERT INTO t1 VALUES (1,1), (2,2); SELECT * FROM t1 ORDER BY a,b; --echo **** On Slave **** +# This is silly, but NDB doesn't add to the binlog fast enough +--real_sleep 10 sync_slave_with_master; INSERT INTO t1 VALUE (3,3); SELECT * FROM t1 ORDER BY a,b; -- cgit v1.2.1 From 03fcc48e81e5a318a6ea6efe215604d4f6a9c12c Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Jun 2006 17:40:23 +0200 Subject: Removing VC++Files directory for 5.1 since we are now using CMake. This has been cleared with Kent. .del-zlibvc.dsw~e0a83be4be21be4d: Delete: VC++Files/zlib/contrib/asm386/zlibvc.dsw .del-zlibvc.dsp~27398cfaac865081: Delete: VC++Files/zlib/contrib/asm386/zlibvc.dsp .del-zlib_ia64.dsp~76d309d598061eea: Delete: VC++Files/zlib/zlib_ia64.dsp .del-zlib.vcproj~9b1a681d56dae190: Delete: VC++Files/zlib/zlib.vcproj .del-zlib.dsp~503559fb84963a0d: Delete: VC++Files/zlib/zlib.dsp .del-vio_ia64.dsp~cdfbb900c43e7f10: Delete: VC++Files/vio/vio_ia64.dsp .del-vio.vcproj~b7c21b4e2d6a9b85: Delete: VC++Files/vio/vio.vcproj .del-vio.dsp~52ab62f9d499195a: Delete: VC++Files/vio/vio.dsp .del-thr_test_ia64.dsp~2ff226f5ce3197b4: Delete: VC++Files/thr_test/thr_test_ia64.dsp .del-thr_test.vcproj~fc0e15c1e6880160: Delete: VC++Files/thr_test/thr_test.vcproj .del-thr_test.dsp~af5f73d3335a6303: Delete: VC++Files/thr_test/thr_test.dsp .del-thr_test.c~70fc0971c72f2a95: Delete: VC++Files/thr_test/thr_test.c .del-thr_insert_test.dsp~e21944f040fb55a9: Delete: VC++Files/thr_insert_test/thr_insert_test.dsp .del-test1_ia64.dsp~42406d943e5f20f9: Delete: VC++Files/test1/test1_ia64.dsp .del-mysql_client_test_ia64.dsp~6a2b9edf3a66a00b: Delete: VC++Files/tests/mysql_client_test_ia64.dsp .del-mysql_client_test.vcproj~22188dcd372bc9de: Delete: VC++Files/tests/mysql_client_test.vcproj .del-mysql_client_test.dsp~d7b5fed623acb964: Delete: VC++Files/tests/mysql_client_test.dsp .del-test1.vcproj~c474b4614c67e2d2: Delete: VC++Files/test1/test1.vcproj .del-test1.dsp~83f105f472a193: Delete: VC++Files/test1/test1.dsp .del-strings.dsw~74e53a6013b0da99: Delete: VC++Files/strings/noMASM/strings.dsw .del-strings.dsp~7b4d145dfc64e39: Delete: VC++Files/strings/noMASM/strings.dsp .del-mysql_thr.c~20772782813d1274: Delete: VC++Files/test1/mysql_thr.c .del-strings_ia64.dsp~4cbf5c6548d3b4a4: Delete: VC++Files/strings/strings_ia64.dsp .del-strings.vcproj~6d1126ae59e4bf82: Delete: VC++Files/strings/strings.vcproj .del-strings.dsw~fc04f19f9c41f6ea: Delete: VC++Files/strings/strings.dsw .del-strings.dsw~44d2027eeeea00d6: Delete: VC++Files/strings/backup/strings.dsw .del-strings.dsp~de6c79f1cc99a48: Delete: VC++Files/strings/strings.dsp .del-strings.dsp~d1f09e84a9861d86: Delete: VC++Files/strings/backup/strings.dsp .del-strings.dsw~72e5896282b294d5: Delete: VC++Files/strings/MASM6x/strings.dsw .del-strings.dsp~ba34297c3be0c3aa: Delete: VC++Files/strings/MASM6x/strings.dsp .del-myisammrg_ia64.dsp~ffe1ccdf77392d5a: Delete: VC++Files/storage/myisammrg/myisammrg_ia64.dsp .del-myisammrg.vcproj~624417d12268d061: Delete: VC++Files/storage/myisammrg/myisammrg.vcproj .del-myisammrg.dsp~983cc2678e60e979: Delete: VC++Files/storage/myisammrg/myisammrg.dsp .del-myisam_ia64.dsp~ed98417b58974118: Delete: VC++Files/storage/myisam/myisam_ia64.dsp .del-myisam.vcproj~c8ad2ba4e8fb2b21: Delete: VC++Files/storage/myisam/myisam.vcproj .del-myisam.dsp~db522ff879e7720f: Delete: VC++Files/storage/myisam/myisam.dsp .del-innobase_ia64.dsp~dc7a9c2937f8fe75: Delete: VC++Files/storage/innobase/innobase_ia64.dsp .del-innobase.vcproj~4a6cd1221518a77f: Delete: VC++Files/storage/innobase/innobase.vcproj .del-innobase.dsp~8a85302e27197083: Delete: VC++Files/storage/innobase/innobase.dsp .del-libdb_tcl.def~bf5926f22f130545: Delete: VC++Files/storage/bdb/build_win32/libdb_tcl.def .del-heap_ia64.dsp~496a0b7e1268ef8e: Delete: VC++Files/storage/heap/heap_ia64.dsp .del-heap.vcproj~4382203ba03f4038: Delete: VC++Files/storage/heap/heap.vcproj .del-heap.dsp~ad83359791cc780: Delete: VC++Files/storage/heap/heap.dsp .del-example.vcproj~ae647078a46efb6e: Delete: VC++Files/storage/example/example.vcproj .del-libdb.def~898715818fce00a: Delete: VC++Files/storage/bdb/build_win32/libdb.def .del-excxx_tpcb.dsp~c2d09192efb7c6f1: Delete: VC++Files/storage/bdb/build_win32/excxx_tpcb.dsp .del-excxx_mpool.dsp~b98b16a8b35b2724: Delete: VC++Files/storage/bdb/build_win32/excxx_mpool.dsp .del-excxx_lock.dsp~c11419f4c472fd93: Delete: VC++Files/storage/bdb/build_win32/excxx_lock.dsp .del-excxx_env.dsp~a76359c56b592402: Delete: VC++Files/storage/bdb/build_win32/excxx_env.dsp .del-excxx_btrec.dsp~ef7959c1c777234f: Delete: VC++Files/storage/bdb/build_win32/excxx_btrec.dsp .del-excxx_access.dsp~63d67774c47ee39: Delete: VC++Files/storage/bdb/build_win32/excxx_access.dsp .del-ex_tpcb.dsp~303f15835d3608c: Delete: VC++Files/storage/bdb/build_win32/ex_tpcb.dsp .del-ex_mpool.dsp~7fdaf9e8399340e: Delete: VC++Files/storage/bdb/build_win32/ex_mpool.dsp .del-ex_lock.dsp~dd9b8ad7ca7fb617: Delete: VC++Files/storage/bdb/build_win32/ex_lock.dsp .del-ex_env.dsp~2ef0d5f066cb2ae7: Delete: VC++Files/storage/bdb/build_win32/ex_env.dsp .del-ex_btrec.dsp~5e8268bdd6eb02da: Delete: VC++Files/storage/bdb/build_win32/ex_btrec.dsp .del-ex_access.dsp~dedbebade1266682: Delete: VC++Files/storage/bdb/build_win32/ex_access.dsp .del-db_verify.dsp~8d56f94abea8d89b: Delete: VC++Files/storage/bdb/build_win32/db_verify.dsp .del-db_upgrade.dsp~c0eeab4121e3b43b: Delete: VC++Files/storage/bdb/build_win32/db_upgrade.dsp .del-db_test.dsp~c5df2b5cdf7d240f: Delete: VC++Files/storage/bdb/build_win32/db_test.dsp .del-db_tcl.dsp~fe347860ef24d36b: Delete: VC++Files/storage/bdb/build_win32/db_tcl.dsp .del-db_static1.dsp~93cdd4a79c56117f: Delete: VC++Files/storage/bdb/build_win32/db_static1.dsp .del-db_static.dsp~e7e19a638e56c8d5: Delete: VC++Files/storage/bdb/build_win32/db_static.dsp .del-db_stat.dsp~f4322f2f6f5241e5: Delete: VC++Files/storage/bdb/build_win32/db_stat.dsp .del-db_recover.dsp~516a4a0a93e5ecc2: Delete: VC++Files/storage/bdb/build_win32/db_recover.dsp .del-db_printlog.dsp~817cc167432446b8: Delete: VC++Files/storage/bdb/build_win32/db_printlog.dsp .del-db_load.dsp~7c0d709abbea81ee: Delete: VC++Files/storage/bdb/build_win32/db_load.dsp .del-db_java.dsp~f5f6285f1e205f2: Delete: VC++Files/storage/bdb/build_win32/db_java.dsp .del-db_dump.dsp~7f9cfc4363e1317c: Delete: VC++Files/storage/bdb/build_win32/db_dump.dsp .del-db_dll.dsp~7d5f832f50291933: Delete: VC++Files/storage/bdb/build_win32/db_dll.dsp .del-db_deadlock.dsp~12a22e0ca1a33b83: Delete: VC++Files/storage/bdb/build_win32/db_deadlock.dsp .del-db_checkpoint.dsp~f14eb8d118472abf: Delete: VC++Files/storage/bdb/build_win32/db_checkpoint.dsp .del-db_buildall.dsp~5d5b8082549e422f: Delete: VC++Files/storage/bdb/build_win32/db_buildall.dsp .del-db_archive.dsp~dea482eaf6dc3861: Delete: VC++Files/storage/bdb/build_win32/db_archive.dsp .del-bdb.vcproj~a912c68f1c2094: Delete: VC++Files/storage/bdb/bdb.vcproj .del-bdb.dsp~acd664862f396dd9: Delete: VC++Files/storage/bdb/bdb.dsp .del-archive.vcproj~1a017e10fae26f17: Delete: VC++Files/storage/archive/archive.vcproj .del-Berkeley_DB.dsw~8c801b3e52e89bbe: Delete: VC++Files/storage/bdb/build_win32/Berkeley_DB.dsw .del-mysqldmax_ia64.dsp~25006b7cc0725ad1: Delete: VC++Files/sql/mysqldmax_ia64.dsp .del-mysqldmax.dsp~5d213fe1c204142e: Delete: VC++Files/sql/mysqldmax.dsp .del-mysqld_ia64.dsp~7f8cf84d81ee04e2: Delete: VC++Files/sql/mysqld_ia64.dsp .del-mysqld.vcproj~6aa7b3f9c3e28fcb: Delete: VC++Files/sql/mysqld.vcproj .del-mysqld.dsw~fc5629c0fc1bc3af: Delete: VC++Files/sql/old/mysqld.dsw .del-mysqld.dsw~2fa9d2fa9a5902ef: Delete: VC++Files/sql/mysqld.dsw .del-replace_ia64.dsp~666e3b313837d42e: Delete: VC++Files/replace/replace_ia64.dsp .del-mysqld.dsp~ffdbf2d234e23e56: Delete: VC++Files/sql/mysqld.dsp .del-message.mc~6ff9e8e3e7294840: Delete: VC++Files/sql/message.mc .del-gen_lex_hash.vcproj~544be6b6: Delete: VC++Files/sql/gen_lex_hash.vcproj .del-gen_lex_hash.dsp~540feedd: Delete: VC++Files/sql/gen_lex_hash.dsp .del-replace.vcproj~9620b1ced86e527a: Delete: VC++Files/replace/replace.vcproj .del-replace.dsp~a97f6dda5abfb438: Delete: VC++Files/replace/replace.dsp .del-regex_ia64.dsp~dcd4172d1a454aa3: Delete: VC++Files/regex/regex_ia64.dsp .del-regex.vcproj~9dea9caafa801b26: Delete: VC++Files/regex/regex.vcproj .del-regex.dsw~59ac4f03e7ef16e: Delete: VC++Files/regex/regex.dsw .del-regex.dsp~99de200e71b64359: Delete: VC++Files/regex/regex.dsp .del-perror_ia64.dsp~be2ccb6d1c91c625: Delete: VC++Files/perror/perror_ia64.dsp .del-fulltext.vcproj~27ad6672: Delete: VC++Files/plugin/fulltext/fulltext.vcproj .del-fulltext.def~27754c94: Delete: VC++Files/plugin/fulltext/fulltext.def .del-perror.vcproj~86ad9dc660a048ad: Delete: VC++Files/perror/perror.vcproj .del-perror.dsp~d314b288f6337f54: Delete: VC++Files/perror/perror.dsp .del-mysys_ia64.dsp~7a98bd8cd01d3043: Delete: VC++Files/mysys/mysys_ia64.dsp .del-mysys.vcproj~40a49d09c4184822: Delete: VC++Files/mysys/mysys.vcproj .del-mysys.dsw~f9dacc88b2a51ba5: Delete: VC++Files/mysys/mysys.dsw .del-mysys.dsp~32695fee91189326: Delete: VC++Files/mysys/mysys.dsp .del-mysqlserver_ia64.dsp~9cd3f0532874bfbe: Delete: VC++Files/mysqlserver/mysqlserver_ia64.dsp .del-mysqlserver.vcproj~327cf9fb1c5ec95d: Delete: VC++Files/mysqlserver/mysqlserver.vcproj .del-mysqlserver.dsp~d99cfb2d291e3785: Delete: VC++Files/mysqlserver/mysqlserver.dsp .del-dummy.cpp~38c1c081e0b4c236: Delete: VC++Files/mysqlserver/dummy.cpp .del-mysqldemb_ia64.dsp~c7f7d75d542393cd: Delete: VC++Files/mysqldemb/mysqldemb_ia64.dsp .del-mysqldemb.vcproj~54c64d55ccc51a7c: Delete: VC++Files/mysqldemb/mysqldemb.vcproj .del-mysqldemb.dsp~1baf8c0e59ee9f7e: Delete: VC++Files/mysqldemb/mysqldemb.dsp .del-mysqlcheck_ia64.dsp~7123d1228c39b249: Delete: VC++Files/mysqlcheck/mysqlcheck_ia64.dsp .del-mysqlcheck.vcproj~7022581c8b8a7ea2: Delete: VC++Files/mysqlcheck/mysqlcheck.vcproj .del-mysqlcheck.dsp~b6295bc9b0c70650: Delete: VC++Files/mysqlcheck/mysqlcheck.dsp .del-mysqlbinlog_ia64.dsp~ac0f4f9efb251f5: Delete: VC++Files/mysqlbinlog/mysqlbinlog_ia64.dsp .del-mysqlbinlog.vcproj~b2a5b1868f5d6596: Delete: VC++Files/mysqlbinlog/mysqlbinlog.vcproj .del-mysqlbinlog.dsp~e24094996da02d02: Delete: VC++Files/mysqlbinlog/mysqlbinlog.dsp .del-myisampack_ia64.dsp~628bd80a496099d5: Delete: VC++Files/myisampack/myisampack_ia64.dsp .del-myisampack.vcproj~3f7d4ec0cb56a9a0: Delete: VC++Files/myisampack/myisampack.vcproj .del-myisampack.dsp~be5b602ddfb1a75a: Delete: VC++Files/myisampack/myisampack.dsp .del-myisamlog_ia64.dsp~a362c2702ab87e07: Delete: VC++Files/myisamlog/myisamlog_ia64.dsp .del-myisamlog.vcproj~daa6596ea386e5a7: Delete: VC++Files/myisamlog/myisamlog.vcproj .del-myisamlog.dsp~9f89a0e49b84a45: Delete: VC++Files/myisamlog/myisamlog.dsp .del-myisamchk_ia64.dsp~a8344727d14479e: Delete: VC++Files/myisamchk/myisamchk_ia64.dsp .del-myisamchk.vcproj~982ebe5673e58fb6: Delete: VC++Files/myisamchk/myisamchk.vcproj .del-myisamchk.dsp~b8627861f0e8dd3e: Delete: VC++Files/myisamchk/myisamchk.dsp .del-myisam_ftdump_ia64.dsp~62d0f5a56a03242: Delete: VC++Files/myisam_ftdump/myisam_ftdump_ia64.dsp .del-myisam_ftdump.vcproj~409c19b0274b7f8e: Delete: VC++Files/myisam_ftdump/myisam_ftdump.vcproj .del-myisam_ftdump.dsp~8501cb3943c50bb0: Delete: VC++Files/myisam_ftdump/myisam_ftdump.dsp .del-my_print_defaults_ia64.dsp~11f0e6ae16691bce: Delete: VC++Files/my_print_defaults/my_print_defaults_ia64.dsp .del-mytest.dsw~2324698861155335: Delete: VC++Files/libmysqltest/mytest.dsw .del-my_print_defaults.vcproj~c8aa2bd86e13c3f9: Delete: VC++Files/my_print_defaults/my_print_defaults.vcproj .del-my_print_defaults.dsp~6393cfdfd0e1b2ee: Delete: VC++Files/my_print_defaults/my_print_defaults.dsp .del-merge_ia64.dsp~d4848c4ba119776c: Delete: VC++Files/merge/merge_ia64.dsp .del-merge.dsw~559bbc65cf36612b: Delete: VC++Files/merge/merge.dsw .del-merge.dsp~ba1dc5704d438e10: Delete: VC++Files/merge/merge.dsp .del-mytest.c~9a99338689e5de8: Delete: VC++Files/libmysqltest/mytest.c .del-myTest_ia64.dsp~b17572b217d092e6: Delete: VC++Files/libmysqltest/myTest_ia64.dsp .del-myTest.vcproj~dba5adc4fad3c06: Delete: VC++Files/libmysqltest/myTest.vcproj .del-myTest.dsp~4a8c480769193952: Delete: VC++Files/libmysqltest/myTest.dsp .del-myTest-package_ia64.dsp~e423b69f2c624850: Delete: VC++Files/libmysqltest/myTest-package_ia64.dsp .del-myTest-package.dsp~ec9faf3287cbe2b9: Delete: VC++Files/libmysqltest/myTest-package.dsp .del-test_libmysqld_ia64.dsp~d79f095fa7072b25: Delete: VC++Files/libmysqld/examples/test_libmysqld_ia64.dsp .del-test_libmysqld.vcproj~fb301d42d5c4e6f4: Delete: VC++Files/libmysqld/examples/test_libmysqld.vcproj .del-test_libmysqld.dsp~681dc3c6e97a48f2: Delete: VC++Files/libmysqld/examples/test_libmysqld.dsp .del-libmysqld_ia64.dsp~578ab58d5f281d2a: Delete: VC++Files/libmysqld/libmysqld_ia64.dsp .del-libmysqld.vcproj~a75d5b9a5967dea0: Delete: VC++Files/libmysqld/libmysqld.vcproj .del-libmysqld.dsp~78dc6a589e5a4149: Delete: VC++Files/libmysqld/libmysqld.dsp .del-udf_example.dsw~91692a3d: Delete: VC++Files/examples/udf_example/udf_example.dsw .del-libmysql_ia64.dsp~ddad907847ceed3: Delete: VC++Files/libmysql/libmysql_ia64.dsp .del-libmysql.vcproj~e21508a4cbf96b49: Delete: VC++Files/libmysql/libmysql.vcproj .del-libmysql.dsw~e7bc53b7d2c2e081: Delete: VC++Files/libmysql/libmysql.dsw .del-libmysql.dsp~eebbe823fb1ed32: Delete: VC++Files/libmysql/libmysql.dsp .del-udf_example.dsp~91456aca: Delete: VC++Files/examples/udf_example/udf_example.dsp .del-udf_example.def~9111ef87: Delete: VC++Files/examples/udf_example/udf_example.def .del-dbug_ia64.dsp~76dbb7ecf79ee3e5: Delete: VC++Files/dbug/dbug_ia64.dsp .del-dbug.vcproj~1fc073f0c76a14b5: Delete: VC++Files/dbug/dbug.vcproj .del-dbug.dsw~6182dd731bef15f9: Delete: VC++Files/dbug/dbug.dsw .del-dbug.dsp~848b9cda893ec0cd: Delete: VC++Files/dbug/dbug.dsp .del-zlibvc.dsw~c6fcbe08f7876788: Delete: VC++Files/contrib/minizip/zlibvc.dsw .del-zlibvc.dsw~be3fc0a598daa999: Delete: VC++Files/contrib/asm386/zlibvc.dsw .del-zlibvc.dsp~d8e6e287a364132f: Delete: VC++Files/contrib/asm386/zlibvc.dsp .del-zlibvc.dsp~4661a0a47229e354: Delete: VC++Files/contrib/minizip/zlibvc.dsp .del-comp_err_ia64.dsp~4b56e5e25d9e54de: Delete: VC++Files/comp_err/comp_err_ia64.dsp .del-comp_err.vcproj~45c167ae5ddd5a96: Delete: VC++Files/comp_err/comp_err.vcproj .del-mysqltest_ia64.dsp~fc3a4cd59af92ac8: Delete: VC++Files/client/mysqltest_ia64.dsp .del-mysqltest.vcproj~21878840704179ef: Delete: VC++Files/client/mysqltest.vcproj .del-mysqltest.dsp~bb948912e890ae3: Delete: VC++Files/client/mysqltest.dsp .del-mysqlslap.vcproj~6f30db25e7c09b6e: Delete: VC++Files/client/mysqlslap.vcproj .del-mysqlshow_ia64.dsp~5b77172f8e4fe84a: Delete: VC++Files/client/mysqlshow_ia64.dsp .del-comp_err.dsp~cdd2b4a543da5d4c: Delete: VC++Files/comp_err/comp_err.dsp .del-mysqlshow.vcproj~797d4fa322faa148: Delete: VC++Files/client/mysqlshow.vcproj .del-mysqlshow.dsp~7166315b18f991d7: Delete: VC++Files/client/mysqlshow.dsp .del-mysqlimport_ia64.dsp~c905eeae53373c68: Delete: VC++Files/client/mysqlimport_ia64.dsp .del-mysqlimport.vcproj~5a30228ef641c081: Delete: VC++Files/client/mysqlimport.vcproj .del-mysqlimport.dsp~d508ae2a3483f1ab: Delete: VC++Files/client/mysqlimport.dsp .del-mysqldump_ia64.dsp~a2aabe898be35b31: Delete: VC++Files/client/mysqldump_ia64.dsp .del-mysqldump.vcproj~22f26554166c8e38: Delete: VC++Files/client/mysqldump.vcproj .del-mysqldump.dsp~a8bd23547d3fc27e: Delete: VC++Files/client/mysqldump.dsp .del-mysqlclient_ia64.dsp~ecab72d5220875b: Delete: VC++Files/client/mysqlclient_ia64.dsp .del-mysqlclient.vcproj~e78a73e31368a44a: Delete: VC++Files/client/mysqlclient.vcproj .del-mysqlclient.dsw~1c2fa53ceaed0042: Delete: VC++Files/client/mysqlclient.dsw .del-mysqlclient.dsp~c9f1abb3247adfa0: Delete: VC++Files/client/mysqlclient.dsp .del-mysqlcheck_ia64.dsp~5726883250a7526a: Delete: VC++Files/client/mysqlcheck_ia64.dsp .del-mysqlcheck.dsp~da7dcab87501f05b: Delete: VC++Files/client/mysqlcheck.dsp .del-mysqladmin_ia64.dsp~6d8d1da649203881: Delete: VC++Files/client/mysqladmin_ia64.dsp .del-mysqladmin.vcproj~178fa55cba442d50: Delete: VC++Files/client/mysqladmin.vcproj .del-mysqladmin.dsp~1f8468bd768bcbcd: Delete: VC++Files/client/mysqladmin.dsp .del-mysql_upgrade_ia64.dsp~c9007a313d39d7e8: Delete: VC++Files/client/mysql_upgrade_ia64.dsp .del-mysql_upgrade.vcproj~54815b7265120589: Delete: VC++Files/client/mysql_upgrade.vcproj .del-mysql_upgrade.dsp~e44498c4a2714360: Delete: VC++Files/client/mysql_upgrade.dsp .del-mysql_ia64.dsp~e651942397edd7e5: Delete: VC++Files/client/mysql_ia64.dsp .del-mysql.vcproj~f7bfe13a8836eea0: Delete: VC++Files/client/mysql.vcproj .del-mysql.dsp~1ea3b71c5b73913b: Delete: VC++Files/client/mysql.dsp .del-prepare~773a10a535120a7e: Delete: VC++Files/prepare .del-mysql_ia64.dsw~5030d1d1d4c87330: Delete: VC++Files/mysql_ia64.dsw .del-mysql.sln~76a9ff1e793b3547: Delete: VC++Files/mysql.sln .del-mysql.dsw~7ea9e16395f139f4: Delete: VC++Files/mysql.dsw .del-mysql.dsp~9d6eee4fc1d54ca5: Delete: VC++Files/mysql.dsp .del-fix-project-files~892fb27fa831ee36: Delete: VC++Files/fix-project-files .del-copy_mysql_files.bat~f6878eeb80173de9: Delete: VC++Files/copy_mysql_files.bat .del-README.build-files~8aa38ef3fb2ffc61: Delete: VC++Files/README.build-files BitKeeper/deleted/.del-README.build-files~8aa38ef3fb2ffc61: Delete: VC++Files/README.build-files BitKeeper/deleted/.del-copy_mysql_files.bat~f6878eeb80173de9: Delete: VC++Files/copy_mysql_files.bat BitKeeper/deleted/.del-fix-project-files~892fb27fa831ee36: Delete: VC++Files/fix-project-files BitKeeper/deleted/.del-mysql.dsp~9d6eee4fc1d54ca5: Delete: VC++Files/mysql.dsp BitKeeper/deleted/.del-mysql.dsw~7ea9e16395f139f4: Delete: VC++Files/mysql.dsw BitKeeper/deleted/.del-mysql.sln~76a9ff1e793b3547: Delete: VC++Files/mysql.sln BitKeeper/deleted/.del-mysql_ia64.dsw~5030d1d1d4c87330: Delete: VC++Files/mysql_ia64.dsw BitKeeper/deleted/.del-prepare~773a10a535120a7e: Delete: VC++Files/prepare BitKeeper/deleted/.del-mysql.dsp~1ea3b71c5b73913b: Delete: VC++Files/client/mysql.dsp BitKeeper/deleted/.del-mysql.vcproj~f7bfe13a8836eea0: Delete: VC++Files/client/mysql.vcproj BitKeeper/deleted/.del-mysql_ia64.dsp~e651942397edd7e5: Delete: VC++Files/client/mysql_ia64.dsp BitKeeper/deleted/.del-mysql_upgrade.dsp~e44498c4a2714360: Delete: VC++Files/client/mysql_upgrade.dsp BitKeeper/deleted/.del-mysql_upgrade.vcproj~54815b7265120589: Delete: VC++Files/client/mysql_upgrade.vcproj BitKeeper/deleted/.del-mysql_upgrade_ia64.dsp~c9007a313d39d7e8: Delete: VC++Files/client/mysql_upgrade_ia64.dsp BitKeeper/deleted/.del-mysqladmin.dsp~1f8468bd768bcbcd: Delete: VC++Files/client/mysqladmin.dsp BitKeeper/deleted/.del-mysqladmin.vcproj~178fa55cba442d50: Delete: VC++Files/client/mysqladmin.vcproj BitKeeper/deleted/.del-mysqladmin_ia64.dsp~6d8d1da649203881: Delete: VC++Files/client/mysqladmin_ia64.dsp BitKeeper/deleted/.del-mysqlcheck.dsp~da7dcab87501f05b: Delete: VC++Files/client/mysqlcheck.dsp BitKeeper/deleted/.del-mysqlcheck_ia64.dsp~5726883250a7526a: Delete: VC++Files/client/mysqlcheck_ia64.dsp BitKeeper/deleted/.del-mysqlclient.dsp~c9f1abb3247adfa0: Delete: VC++Files/client/mysqlclient.dsp BitKeeper/deleted/.del-mysqlclient.dsw~1c2fa53ceaed0042: Delete: VC++Files/client/mysqlclient.dsw BitKeeper/deleted/.del-mysqlclient.vcproj~e78a73e31368a44a: Delete: VC++Files/client/mysqlclient.vcproj BitKeeper/deleted/.del-mysqlclient_ia64.dsp~ecab72d5220875b: Delete: VC++Files/client/mysqlclient_ia64.dsp BitKeeper/deleted/.del-mysqldump.dsp~a8bd23547d3fc27e: Delete: VC++Files/client/mysqldump.dsp BitKeeper/deleted/.del-mysqldump.vcproj~22f26554166c8e38: Delete: VC++Files/client/mysqldump.vcproj BitKeeper/deleted/.del-mysqldump_ia64.dsp~a2aabe898be35b31: Delete: VC++Files/client/mysqldump_ia64.dsp BitKeeper/deleted/.del-mysqlimport.dsp~d508ae2a3483f1ab: Delete: VC++Files/client/mysqlimport.dsp BitKeeper/deleted/.del-mysqlimport.vcproj~5a30228ef641c081: Delete: VC++Files/client/mysqlimport.vcproj BitKeeper/deleted/.del-mysqlimport_ia64.dsp~c905eeae53373c68: Delete: VC++Files/client/mysqlimport_ia64.dsp BitKeeper/deleted/.del-mysqlshow.dsp~7166315b18f991d7: Delete: VC++Files/client/mysqlshow.dsp BitKeeper/deleted/.del-mysqlshow.vcproj~797d4fa322faa148: Delete: VC++Files/client/mysqlshow.vcproj BitKeeper/deleted/.del-comp_err.dsp~cdd2b4a543da5d4c: Delete: VC++Files/comp_err/comp_err.dsp BitKeeper/deleted/.del-mysqlshow_ia64.dsp~5b77172f8e4fe84a: Delete: VC++Files/client/mysqlshow_ia64.dsp BitKeeper/deleted/.del-mysqlslap.vcproj~6f30db25e7c09b6e: Delete: VC++Files/client/mysqlslap.vcproj BitKeeper/deleted/.del-mysqltest.dsp~bb948912e890ae3: Delete: VC++Files/client/mysqltest.dsp BitKeeper/deleted/.del-mysqltest.vcproj~21878840704179ef: Delete: VC++Files/client/mysqltest.vcproj BitKeeper/deleted/.del-mysqltest_ia64.dsp~fc3a4cd59af92ac8: Delete: VC++Files/client/mysqltest_ia64.dsp BitKeeper/deleted/.del-comp_err.vcproj~45c167ae5ddd5a96: Delete: VC++Files/comp_err/comp_err.vcproj BitKeeper/deleted/.del-comp_err_ia64.dsp~4b56e5e25d9e54de: Delete: VC++Files/comp_err/comp_err_ia64.dsp BitKeeper/deleted/.del-zlibvc.dsp~4661a0a47229e354: Delete: VC++Files/contrib/minizip/zlibvc.dsp BitKeeper/deleted/.del-zlibvc.dsp~d8e6e287a364132f: Delete: VC++Files/contrib/asm386/zlibvc.dsp BitKeeper/deleted/.del-zlibvc.dsw~be3fc0a598daa999: Delete: VC++Files/contrib/asm386/zlibvc.dsw BitKeeper/deleted/.del-zlibvc.dsw~c6fcbe08f7876788: Delete: VC++Files/contrib/minizip/zlibvc.dsw BitKeeper/deleted/.del-dbug.dsp~848b9cda893ec0cd: Delete: VC++Files/dbug/dbug.dsp BitKeeper/deleted/.del-dbug.dsw~6182dd731bef15f9: Delete: VC++Files/dbug/dbug.dsw BitKeeper/deleted/.del-dbug.vcproj~1fc073f0c76a14b5: Delete: VC++Files/dbug/dbug.vcproj BitKeeper/deleted/.del-dbug_ia64.dsp~76dbb7ecf79ee3e5: Delete: VC++Files/dbug/dbug_ia64.dsp BitKeeper/deleted/.del-udf_example.def~9111ef87: Delete: VC++Files/examples/udf_example/udf_example.def BitKeeper/deleted/.del-udf_example.dsp~91456aca: Delete: VC++Files/examples/udf_example/udf_example.dsp BitKeeper/deleted/.del-libmysql.dsp~eebbe823fb1ed32: Delete: VC++Files/libmysql/libmysql.dsp BitKeeper/deleted/.del-libmysql.dsw~e7bc53b7d2c2e081: Delete: VC++Files/libmysql/libmysql.dsw BitKeeper/deleted/.del-libmysql.vcproj~e21508a4cbf96b49: Delete: VC++Files/libmysql/libmysql.vcproj BitKeeper/deleted/.del-libmysql_ia64.dsp~ddad907847ceed3: Delete: VC++Files/libmysql/libmysql_ia64.dsp BitKeeper/deleted/.del-udf_example.dsw~91692a3d: Delete: VC++Files/examples/udf_example/udf_example.dsw BitKeeper/deleted/.del-libmysqld.dsp~78dc6a589e5a4149: Delete: VC++Files/libmysqld/libmysqld.dsp BitKeeper/deleted/.del-libmysqld.vcproj~a75d5b9a5967dea0: Delete: VC++Files/libmysqld/libmysqld.vcproj BitKeeper/deleted/.del-libmysqld_ia64.dsp~578ab58d5f281d2a: Delete: VC++Files/libmysqld/libmysqld_ia64.dsp BitKeeper/deleted/.del-test_libmysqld.dsp~681dc3c6e97a48f2: Delete: VC++Files/libmysqld/examples/test_libmysqld.dsp BitKeeper/deleted/.del-test_libmysqld.vcproj~fb301d42d5c4e6f4: Delete: VC++Files/libmysqld/examples/test_libmysqld.vcproj BitKeeper/deleted/.del-test_libmysqld_ia64.dsp~d79f095fa7072b25: Delete: VC++Files/libmysqld/examples/test_libmysqld_ia64.dsp BitKeeper/deleted/.del-myTest-package.dsp~ec9faf3287cbe2b9: Delete: VC++Files/libmysqltest/myTest-package.dsp BitKeeper/deleted/.del-myTest-package_ia64.dsp~e423b69f2c624850: Delete: VC++Files/libmysqltest/myTest-package_ia64.dsp BitKeeper/deleted/.del-myTest.dsp~4a8c480769193952: Delete: VC++Files/libmysqltest/myTest.dsp BitKeeper/deleted/.del-myTest.vcproj~dba5adc4fad3c06: Delete: VC++Files/libmysqltest/myTest.vcproj BitKeeper/deleted/.del-myTest_ia64.dsp~b17572b217d092e6: Delete: VC++Files/libmysqltest/myTest_ia64.dsp BitKeeper/deleted/.del-mytest.c~9a99338689e5de8: Delete: VC++Files/libmysqltest/mytest.c BitKeeper/deleted/.del-merge.dsp~ba1dc5704d438e10: Delete: VC++Files/merge/merge.dsp BitKeeper/deleted/.del-merge.dsw~559bbc65cf36612b: Delete: VC++Files/merge/merge.dsw BitKeeper/deleted/.del-merge_ia64.dsp~d4848c4ba119776c: Delete: VC++Files/merge/merge_ia64.dsp BitKeeper/deleted/.del-my_print_defaults.dsp~6393cfdfd0e1b2ee: Delete: VC++Files/my_print_defaults/my_print_defaults.dsp BitKeeper/deleted/.del-my_print_defaults.vcproj~c8aa2bd86e13c3f9: Delete: VC++Files/my_print_defaults/my_print_defaults.vcproj BitKeeper/deleted/.del-mytest.dsw~2324698861155335: Delete: VC++Files/libmysqltest/mytest.dsw BitKeeper/deleted/.del-my_print_defaults_ia64.dsp~11f0e6ae16691bce: Delete: VC++Files/my_print_defaults/my_print_defaults_ia64.dsp BitKeeper/deleted/.del-myisam_ftdump.dsp~8501cb3943c50bb0: Delete: VC++Files/myisam_ftdump/myisam_ftdump.dsp BitKeeper/deleted/.del-myisam_ftdump.vcproj~409c19b0274b7f8e: Delete: VC++Files/myisam_ftdump/myisam_ftdump.vcproj BitKeeper/deleted/.del-myisam_ftdump_ia64.dsp~62d0f5a56a03242: Delete: VC++Files/myisam_ftdump/myisam_ftdump_ia64.dsp BitKeeper/deleted/.del-myisamchk.dsp~b8627861f0e8dd3e: Delete: VC++Files/myisamchk/myisamchk.dsp BitKeeper/deleted/.del-myisamchk.vcproj~982ebe5673e58fb6: Delete: VC++Files/myisamchk/myisamchk.vcproj BitKeeper/deleted/.del-myisamchk_ia64.dsp~a8344727d14479e: Delete: VC++Files/myisamchk/myisamchk_ia64.dsp BitKeeper/deleted/.del-myisamlog.dsp~9f89a0e49b84a45: Delete: VC++Files/myisamlog/myisamlog.dsp BitKeeper/deleted/.del-myisamlog.vcproj~daa6596ea386e5a7: Delete: VC++Files/myisamlog/myisamlog.vcproj BitKeeper/deleted/.del-myisamlog_ia64.dsp~a362c2702ab87e07: Delete: VC++Files/myisamlog/myisamlog_ia64.dsp BitKeeper/deleted/.del-myisampack.dsp~be5b602ddfb1a75a: Delete: VC++Files/myisampack/myisampack.dsp BitKeeper/deleted/.del-myisampack.vcproj~3f7d4ec0cb56a9a0: Delete: VC++Files/myisampack/myisampack.vcproj BitKeeper/deleted/.del-myisampack_ia64.dsp~628bd80a496099d5: Delete: VC++Files/myisampack/myisampack_ia64.dsp BitKeeper/deleted/.del-mysqlbinlog.dsp~e24094996da02d02: Delete: VC++Files/mysqlbinlog/mysqlbinlog.dsp BitKeeper/deleted/.del-mysqlbinlog.vcproj~b2a5b1868f5d6596: Delete: VC++Files/mysqlbinlog/mysqlbinlog.vcproj BitKeeper/deleted/.del-mysqlbinlog_ia64.dsp~ac0f4f9efb251f5: Delete: VC++Files/mysqlbinlog/mysqlbinlog_ia64.dsp BitKeeper/deleted/.del-mysqlcheck.dsp~b6295bc9b0c70650: Delete: VC++Files/mysqlcheck/mysqlcheck.dsp BitKeeper/deleted/.del-mysqlcheck.vcproj~7022581c8b8a7ea2: Delete: VC++Files/mysqlcheck/mysqlcheck.vcproj BitKeeper/deleted/.del-mysqlcheck_ia64.dsp~7123d1228c39b249: Delete: VC++Files/mysqlcheck/mysqlcheck_ia64.dsp BitKeeper/deleted/.del-mysqldemb.dsp~1baf8c0e59ee9f7e: Delete: VC++Files/mysqldemb/mysqldemb.dsp BitKeeper/deleted/.del-mysqldemb.vcproj~54c64d55ccc51a7c: Delete: VC++Files/mysqldemb/mysqldemb.vcproj BitKeeper/deleted/.del-mysqldemb_ia64.dsp~c7f7d75d542393cd: Delete: VC++Files/mysqldemb/mysqldemb_ia64.dsp BitKeeper/deleted/.del-dummy.cpp~38c1c081e0b4c236: Delete: VC++Files/mysqlserver/dummy.cpp BitKeeper/deleted/.del-mysqlserver.dsp~d99cfb2d291e3785: Delete: VC++Files/mysqlserver/mysqlserver.dsp BitKeeper/deleted/.del-mysqlserver.vcproj~327cf9fb1c5ec95d: Delete: VC++Files/mysqlserver/mysqlserver.vcproj BitKeeper/deleted/.del-mysqlserver_ia64.dsp~9cd3f0532874bfbe: Delete: VC++Files/mysqlserver/mysqlserver_ia64.dsp BitKeeper/deleted/.del-mysys.dsp~32695fee91189326: Delete: VC++Files/mysys/mysys.dsp BitKeeper/deleted/.del-mysys.dsw~f9dacc88b2a51ba5: Delete: VC++Files/mysys/mysys.dsw BitKeeper/deleted/.del-mysys.vcproj~40a49d09c4184822: Delete: VC++Files/mysys/mysys.vcproj BitKeeper/deleted/.del-mysys_ia64.dsp~7a98bd8cd01d3043: Delete: VC++Files/mysys/mysys_ia64.dsp BitKeeper/deleted/.del-perror.dsp~d314b288f6337f54: Delete: VC++Files/perror/perror.dsp BitKeeper/deleted/.del-perror.vcproj~86ad9dc660a048ad: Delete: VC++Files/perror/perror.vcproj BitKeeper/deleted/.del-fulltext.def~27754c94: Delete: VC++Files/plugin/fulltext/fulltext.def BitKeeper/deleted/.del-fulltext.vcproj~27ad6672: Delete: VC++Files/plugin/fulltext/fulltext.vcproj BitKeeper/deleted/.del-perror_ia64.dsp~be2ccb6d1c91c625: Delete: VC++Files/perror/perror_ia64.dsp BitKeeper/deleted/.del-regex.dsp~99de200e71b64359: Delete: VC++Files/regex/regex.dsp BitKeeper/deleted/.del-regex.dsw~59ac4f03e7ef16e: Delete: VC++Files/regex/regex.dsw BitKeeper/deleted/.del-regex.vcproj~9dea9caafa801b26: Delete: VC++Files/regex/regex.vcproj BitKeeper/deleted/.del-regex_ia64.dsp~dcd4172d1a454aa3: Delete: VC++Files/regex/regex_ia64.dsp BitKeeper/deleted/.del-replace.dsp~a97f6dda5abfb438: Delete: VC++Files/replace/replace.dsp BitKeeper/deleted/.del-replace.vcproj~9620b1ced86e527a: Delete: VC++Files/replace/replace.vcproj BitKeeper/deleted/.del-gen_lex_hash.dsp~540feedd: Delete: VC++Files/sql/gen_lex_hash.dsp BitKeeper/deleted/.del-gen_lex_hash.vcproj~544be6b6: Delete: VC++Files/sql/gen_lex_hash.vcproj BitKeeper/deleted/.del-message.mc~6ff9e8e3e7294840: Delete: VC++Files/sql/message.mc BitKeeper/deleted/.del-mysqld.dsp~ffdbf2d234e23e56: Delete: VC++Files/sql/mysqld.dsp BitKeeper/deleted/.del-replace_ia64.dsp~666e3b313837d42e: Delete: VC++Files/replace/replace_ia64.dsp BitKeeper/deleted/.del-mysqld.dsw~2fa9d2fa9a5902ef: Delete: VC++Files/sql/mysqld.dsw BitKeeper/deleted/.del-mysqld.dsw~fc5629c0fc1bc3af: Delete: VC++Files/sql/old/mysqld.dsw BitKeeper/deleted/.del-mysqld.vcproj~6aa7b3f9c3e28fcb: Delete: VC++Files/sql/mysqld.vcproj BitKeeper/deleted/.del-mysqld_ia64.dsp~7f8cf84d81ee04e2: Delete: VC++Files/sql/mysqld_ia64.dsp BitKeeper/deleted/.del-mysqldmax.dsp~5d213fe1c204142e: Delete: VC++Files/sql/mysqldmax.dsp BitKeeper/deleted/.del-mysqldmax_ia64.dsp~25006b7cc0725ad1: Delete: VC++Files/sql/mysqldmax_ia64.dsp BitKeeper/deleted/.del-Berkeley_DB.dsw~8c801b3e52e89bbe: Delete: VC++Files/storage/bdb/build_win32/Berkeley_DB.dsw BitKeeper/deleted/.del-archive.vcproj~1a017e10fae26f17: Delete: VC++Files/storage/archive/archive.vcproj BitKeeper/deleted/.del-bdb.dsp~acd664862f396dd9: Delete: VC++Files/storage/bdb/bdb.dsp BitKeeper/deleted/.del-bdb.vcproj~a912c68f1c2094: Delete: VC++Files/storage/bdb/bdb.vcproj BitKeeper/deleted/.del-db_archive.dsp~dea482eaf6dc3861: Delete: VC++Files/storage/bdb/build_win32/db_archive.dsp BitKeeper/deleted/.del-db_buildall.dsp~5d5b8082549e422f: Delete: VC++Files/storage/bdb/build_win32/db_buildall.dsp BitKeeper/deleted/.del-db_checkpoint.dsp~f14eb8d118472abf: Delete: VC++Files/storage/bdb/build_win32/db_checkpoint.dsp BitKeeper/deleted/.del-db_deadlock.dsp~12a22e0ca1a33b83: Delete: VC++Files/storage/bdb/build_win32/db_deadlock.dsp BitKeeper/deleted/.del-db_dll.dsp~7d5f832f50291933: Delete: VC++Files/storage/bdb/build_win32/db_dll.dsp BitKeeper/deleted/.del-db_dump.dsp~7f9cfc4363e1317c: Delete: VC++Files/storage/bdb/build_win32/db_dump.dsp BitKeeper/deleted/.del-db_java.dsp~f5f6285f1e205f2: Delete: VC++Files/storage/bdb/build_win32/db_java.dsp BitKeeper/deleted/.del-db_load.dsp~7c0d709abbea81ee: Delete: VC++Files/storage/bdb/build_win32/db_load.dsp BitKeeper/deleted/.del-db_printlog.dsp~817cc167432446b8: Delete: VC++Files/storage/bdb/build_win32/db_printlog.dsp BitKeeper/deleted/.del-db_recover.dsp~516a4a0a93e5ecc2: Delete: VC++Files/storage/bdb/build_win32/db_recover.dsp BitKeeper/deleted/.del-db_stat.dsp~f4322f2f6f5241e5: Delete: VC++Files/storage/bdb/build_win32/db_stat.dsp BitKeeper/deleted/.del-db_static.dsp~e7e19a638e56c8d5: Delete: VC++Files/storage/bdb/build_win32/db_static.dsp BitKeeper/deleted/.del-db_static1.dsp~93cdd4a79c56117f: Delete: VC++Files/storage/bdb/build_win32/db_static1.dsp BitKeeper/deleted/.del-db_tcl.dsp~fe347860ef24d36b: Delete: VC++Files/storage/bdb/build_win32/db_tcl.dsp BitKeeper/deleted/.del-db_test.dsp~c5df2b5cdf7d240f: Delete: VC++Files/storage/bdb/build_win32/db_test.dsp BitKeeper/deleted/.del-db_upgrade.dsp~c0eeab4121e3b43b: Delete: VC++Files/storage/bdb/build_win32/db_upgrade.dsp BitKeeper/deleted/.del-db_verify.dsp~8d56f94abea8d89b: Delete: VC++Files/storage/bdb/build_win32/db_verify.dsp BitKeeper/deleted/.del-ex_access.dsp~dedbebade1266682: Delete: VC++Files/storage/bdb/build_win32/ex_access.dsp BitKeeper/deleted/.del-ex_btrec.dsp~5e8268bdd6eb02da: Delete: VC++Files/storage/bdb/build_win32/ex_btrec.dsp BitKeeper/deleted/.del-ex_env.dsp~2ef0d5f066cb2ae7: Delete: VC++Files/storage/bdb/build_win32/ex_env.dsp BitKeeper/deleted/.del-ex_lock.dsp~dd9b8ad7ca7fb617: Delete: VC++Files/storage/bdb/build_win32/ex_lock.dsp BitKeeper/deleted/.del-ex_mpool.dsp~7fdaf9e8399340e: Delete: VC++Files/storage/bdb/build_win32/ex_mpool.dsp BitKeeper/deleted/.del-ex_tpcb.dsp~303f15835d3608c: Delete: VC++Files/storage/bdb/build_win32/ex_tpcb.dsp BitKeeper/deleted/.del-excxx_access.dsp~63d67774c47ee39: Delete: VC++Files/storage/bdb/build_win32/excxx_access.dsp BitKeeper/deleted/.del-excxx_btrec.dsp~ef7959c1c777234f: Delete: VC++Files/storage/bdb/build_win32/excxx_btrec.dsp BitKeeper/deleted/.del-excxx_env.dsp~a76359c56b592402: Delete: VC++Files/storage/bdb/build_win32/excxx_env.dsp BitKeeper/deleted/.del-excxx_lock.dsp~c11419f4c472fd93: Delete: VC++Files/storage/bdb/build_win32/excxx_lock.dsp BitKeeper/deleted/.del-excxx_mpool.dsp~b98b16a8b35b2724: Delete: VC++Files/storage/bdb/build_win32/excxx_mpool.dsp BitKeeper/deleted/.del-excxx_tpcb.dsp~c2d09192efb7c6f1: Delete: VC++Files/storage/bdb/build_win32/excxx_tpcb.dsp BitKeeper/deleted/.del-libdb.def~898715818fce00a: Delete: VC++Files/storage/bdb/build_win32/libdb.def BitKeeper/deleted/.del-example.vcproj~ae647078a46efb6e: Delete: VC++Files/storage/example/example.vcproj BitKeeper/deleted/.del-heap.dsp~ad83359791cc780: Delete: VC++Files/storage/heap/heap.dsp BitKeeper/deleted/.del-heap.vcproj~4382203ba03f4038: Delete: VC++Files/storage/heap/heap.vcproj BitKeeper/deleted/.del-heap_ia64.dsp~496a0b7e1268ef8e: Delete: VC++Files/storage/heap/heap_ia64.dsp BitKeeper/deleted/.del-libdb_tcl.def~bf5926f22f130545: Delete: VC++Files/storage/bdb/build_win32/libdb_tcl.def BitKeeper/deleted/.del-innobase.dsp~8a85302e27197083: Delete: VC++Files/storage/innobase/innobase.dsp BitKeeper/deleted/.del-innobase.vcproj~4a6cd1221518a77f: Delete: VC++Files/storage/innobase/innobase.vcproj BitKeeper/deleted/.del-innobase_ia64.dsp~dc7a9c2937f8fe75: Delete: VC++Files/storage/innobase/innobase_ia64.dsp BitKeeper/deleted/.del-myisam.dsp~db522ff879e7720f: Delete: VC++Files/storage/myisam/myisam.dsp BitKeeper/deleted/.del-myisam.vcproj~c8ad2ba4e8fb2b21: Delete: VC++Files/storage/myisam/myisam.vcproj BitKeeper/deleted/.del-myisam_ia64.dsp~ed98417b58974118: Delete: VC++Files/storage/myisam/myisam_ia64.dsp BitKeeper/deleted/.del-myisammrg.dsp~983cc2678e60e979: Delete: VC++Files/storage/myisammrg/myisammrg.dsp BitKeeper/deleted/.del-myisammrg.vcproj~624417d12268d061: Delete: VC++Files/storage/myisammrg/myisammrg.vcproj BitKeeper/deleted/.del-myisammrg_ia64.dsp~ffe1ccdf77392d5a: Delete: VC++Files/storage/myisammrg/myisammrg_ia64.dsp BitKeeper/deleted/.del-strings.dsp~ba34297c3be0c3aa: Delete: VC++Files/strings/MASM6x/strings.dsp BitKeeper/deleted/.del-strings.dsw~72e5896282b294d5: Delete: VC++Files/strings/MASM6x/strings.dsw BitKeeper/deleted/.del-strings.dsp~d1f09e84a9861d86: Delete: VC++Files/strings/backup/strings.dsp BitKeeper/deleted/.del-strings.dsp~de6c79f1cc99a48: Delete: VC++Files/strings/strings.dsp BitKeeper/deleted/.del-strings.dsw~44d2027eeeea00d6: Delete: VC++Files/strings/backup/strings.dsw BitKeeper/deleted/.del-strings.dsw~fc04f19f9c41f6ea: Delete: VC++Files/strings/strings.dsw BitKeeper/deleted/.del-strings.vcproj~6d1126ae59e4bf82: Delete: VC++Files/strings/strings.vcproj BitKeeper/deleted/.del-strings_ia64.dsp~4cbf5c6548d3b4a4: Delete: VC++Files/strings/strings_ia64.dsp BitKeeper/deleted/.del-mysql_thr.c~20772782813d1274: Delete: VC++Files/test1/mysql_thr.c BitKeeper/deleted/.del-strings.dsp~7b4d145dfc64e39: Delete: VC++Files/strings/noMASM/strings.dsp BitKeeper/deleted/.del-strings.dsw~74e53a6013b0da99: Delete: VC++Files/strings/noMASM/strings.dsw BitKeeper/deleted/.del-test1.dsp~83f105f472a193: Delete: VC++Files/test1/test1.dsp BitKeeper/deleted/.del-test1.vcproj~c474b4614c67e2d2: Delete: VC++Files/test1/test1.vcproj BitKeeper/deleted/.del-mysql_client_test.dsp~d7b5fed623acb964: Delete: VC++Files/tests/mysql_client_test.dsp BitKeeper/deleted/.del-mysql_client_test.vcproj~22188dcd372bc9de: Delete: VC++Files/tests/mysql_client_test.vcproj BitKeeper/deleted/.del-mysql_client_test_ia64.dsp~6a2b9edf3a66a00b: Delete: VC++Files/tests/mysql_client_test_ia64.dsp BitKeeper/deleted/.del-test1_ia64.dsp~42406d943e5f20f9: Delete: VC++Files/test1/test1_ia64.dsp BitKeeper/deleted/.del-thr_insert_test.dsp~e21944f040fb55a9: Delete: VC++Files/thr_insert_test/thr_insert_test.dsp BitKeeper/deleted/.del-thr_test.c~70fc0971c72f2a95: Delete: VC++Files/thr_test/thr_test.c BitKeeper/deleted/.del-thr_test.dsp~af5f73d3335a6303: Delete: VC++Files/thr_test/thr_test.dsp BitKeeper/deleted/.del-thr_test.vcproj~fc0e15c1e6880160: Delete: VC++Files/thr_test/thr_test.vcproj BitKeeper/deleted/.del-thr_test_ia64.dsp~2ff226f5ce3197b4: Delete: VC++Files/thr_test/thr_test_ia64.dsp BitKeeper/deleted/.del-vio.dsp~52ab62f9d499195a: Delete: VC++Files/vio/vio.dsp BitKeeper/deleted/.del-vio.vcproj~b7c21b4e2d6a9b85: Delete: VC++Files/vio/vio.vcproj BitKeeper/deleted/.del-vio_ia64.dsp~cdfbb900c43e7f10: Delete: VC++Files/vio/vio_ia64.dsp BitKeeper/deleted/.del-zlib.dsp~503559fb84963a0d: Delete: VC++Files/zlib/zlib.dsp BitKeeper/deleted/.del-zlib.vcproj~9b1a681d56dae190: Delete: VC++Files/zlib/zlib.vcproj BitKeeper/deleted/.del-zlib_ia64.dsp~76d309d598061eea: Delete: VC++Files/zlib/zlib_ia64.dsp BitKeeper/deleted/.del-zlibvc.dsp~27398cfaac865081: Delete: VC++Files/zlib/contrib/asm386/zlibvc.dsp BitKeeper/deleted/.del-zlibvc.dsw~e0a83be4be21be4d: Delete: VC++Files/zlib/contrib/asm386/zlibvc.dsw --- VC++Files/README.build-files | 19 - VC++Files/client/mysql.dsp | 154 - VC++Files/client/mysql.vcproj | 318 - VC++Files/client/mysql_ia64.dsp | 140 - VC++Files/client/mysql_upgrade.dsp | 124 - VC++Files/client/mysql_upgrade.vcproj | 232 - VC++Files/client/mysql_upgrade_ia64.dsp | 124 - VC++Files/client/mysqladmin.dsp | 121 - VC++Files/client/mysqladmin.vcproj | 232 - VC++Files/client/mysqladmin_ia64.dsp | 124 - VC++Files/client/mysqlcheck.dsp | 71 - VC++Files/client/mysqlcheck_ia64.dsp | 77 - VC++Files/client/mysqlclient.dsp | 601 -- VC++Files/client/mysqlclient.dsw | 28 - VC++Files/client/mysqlclient.vcproj | 3333 ------- VC++Files/client/mysqlclient_ia64.dsp | 582 -- VC++Files/client/mysqldump.dsp | 133 - VC++Files/client/mysqldump.vcproj | 259 - VC++Files/client/mysqldump_ia64.dsp | 136 - VC++Files/client/mysqlimport.dsp | 124 - VC++Files/client/mysqlimport.vcproj | 232 - VC++Files/client/mysqlimport_ia64.dsp | 124 - VC++Files/client/mysqlshow.dsp | 121 - VC++Files/client/mysqlshow.vcproj | 232 - VC++Files/client/mysqlshow_ia64.dsp | 124 - VC++Files/client/mysqlslap.vcproj | 233 - VC++Files/client/mysqltest.dsp | 125 - VC++Files/client/mysqltest.vcproj | 264 - VC++Files/client/mysqltest_ia64.dsp | 197 - VC++Files/comp_err/comp_err.dsp | 59 - VC++Files/comp_err/comp_err.vcproj | 93 - VC++Files/comp_err/comp_err_ia64.dsp | 92 - VC++Files/contrib/asm386/zlibvc.dsp | 651 -- VC++Files/contrib/asm386/zlibvc.dsw | 40 - VC++Files/contrib/minizip/zlibvc.dsp | 651 -- VC++Files/contrib/minizip/zlibvc.dsw | 40 - VC++Files/copy_mysql_files.bat | 79 - VC++Files/dbug/dbug.dsp | 125 - VC++Files/dbug/dbug.dsw | 28 - VC++Files/dbug/dbug.vcproj | 249 - VC++Files/dbug/dbug_ia64.dsp | 125 - VC++Files/examples/udf_example/udf_example.def | 18 - VC++Files/examples/udf_example/udf_example.dsp | 111 - VC++Files/examples/udf_example/udf_example.dsw | 29 - VC++Files/fix-project-files | 7 - VC++Files/libmysql/libmysql.dsp | 569 -- VC++Files/libmysql/libmysql.dsw | 28 - VC++Files/libmysql/libmysql.vcproj | 2298 ----- VC++Files/libmysql/libmysql_ia64.dsp | 556 -- VC++Files/libmysqld/examples/test_libmysqld.dsp | 75 - VC++Files/libmysqld/examples/test_libmysqld.vcproj | 130 - .../libmysqld/examples/test_libmysqld_ia64.dsp | 79 - VC++Files/libmysqld/libmysqld.dsp | 650 -- VC++Files/libmysqld/libmysqld.vcproj | 4683 ---------- VC++Files/libmysqld/libmysqld_ia64.dsp | 588 -- VC++Files/libmysqltest/myTest-package.dsp | 92 - VC++Files/libmysqltest/myTest-package_ia64.dsp | 92 - VC++Files/libmysqltest/myTest.dsp | 92 - VC++Files/libmysqltest/myTest.vcproj | 162 - VC++Files/libmysqltest/myTest_ia64.dsp | 94 - VC++Files/libmysqltest/mytest.c | 175 - VC++Files/libmysqltest/mytest.dsw | 28 - VC++Files/merge/merge.dsp | 134 - VC++Files/merge/merge.dsw | 28 - VC++Files/merge/merge_ia64.dsp | 134 - VC++Files/my_print_defaults/my_print_defaults.dsp | 129 - .../my_print_defaults/my_print_defaults.vcproj | 245 - .../my_print_defaults/my_print_defaults_ia64.dsp | 133 - VC++Files/myisam_ftdump/myisam_ftdump.dsp | 103 - VC++Files/myisam_ftdump/myisam_ftdump.vcproj | 174 - VC++Files/myisam_ftdump/myisam_ftdump_ia64.dsp | 105 - VC++Files/myisamchk/myisamchk.dsp | 133 - VC++Files/myisamchk/myisamchk.vcproj | 244 - VC++Files/myisamchk/myisamchk_ia64.dsp | 136 - VC++Files/myisamlog/myisamlog.dsp | 135 - VC++Files/myisamlog/myisamlog.vcproj | 244 - VC++Files/myisamlog/myisamlog_ia64.dsp | 138 - VC++Files/myisampack/myisampack.dsp | 135 - VC++Files/myisampack/myisampack.vcproj | 247 - VC++Files/myisampack/myisampack_ia64.dsp | 138 - VC++Files/mysql.dsp | 80 - VC++Files/mysql.dsw | 847 -- VC++Files/mysql.sln | 1812 ---- VC++Files/mysql_ia64.dsw | 794 -- VC++Files/mysqlbinlog/mysqlbinlog.dsp | 136 - VC++Files/mysqlbinlog/mysqlbinlog.vcproj | 406 - VC++Files/mysqlbinlog/mysqlbinlog_ia64.dsp | 139 - VC++Files/mysqlcheck/mysqlcheck.dsp | 129 - VC++Files/mysqlcheck/mysqlcheck.vcproj | 244 - VC++Files/mysqlcheck/mysqlcheck_ia64.dsp | 132 - VC++Files/mysqldemb/mysqldemb.dsp | 443 - VC++Files/mysqldemb/mysqldemb.vcproj | 2960 ------ VC++Files/mysqldemb/mysqldemb_ia64.dsp | 447 - VC++Files/mysqlserver/dummy.cpp | 0 VC++Files/mysqlserver/mysqlserver.dsp | 84 - VC++Files/mysqlserver/mysqlserver.vcproj | 126 - VC++Files/mysqlserver/mysqlserver_ia64.dsp | 84 - VC++Files/mysys/mysys.dsp | 641 -- VC++Files/mysys/mysys.dsw | 28 - VC++Files/mysys/mysys.vcproj | 4921 ---------- VC++Files/mysys/mysys_ia64.dsp | 626 -- VC++Files/perror/perror.dsp | 144 - VC++Files/perror/perror.vcproj | 255 - VC++Files/perror/perror_ia64.dsp | 140 - VC++Files/plugin/fulltext/fulltext.def | 5 - VC++Files/plugin/fulltext/fulltext.vcproj | 125 - VC++Files/prepare | 101 - VC++Files/regex/regex.dsp | 114 - VC++Files/regex/regex.dsw | 28 - VC++Files/regex/regex.vcproj | 252 - VC++Files/regex/regex_ia64.dsp | 114 - VC++Files/replace/replace.dsp | 122 - VC++Files/replace/replace.vcproj | 229 - VC++Files/replace/replace_ia64.dsp | 125 - VC++Files/sql/gen_lex_hash.dsp | 98 - VC++Files/sql/gen_lex_hash.vcproj | 158 - VC++Files/sql/message.mc | 8 - VC++Files/sql/mysqld.dsp | 2049 ---- VC++Files/sql/mysqld.dsw | 28 - VC++Files/sql/mysqld.vcproj | 9737 -------------------- VC++Files/sql/mysqld_ia64.dsp | 2013 ---- VC++Files/sql/mysqldmax.dsp | 1011 -- VC++Files/sql/mysqldmax_ia64.dsp | 1542 ---- VC++Files/sql/old/mysqld.dsw | 28 - VC++Files/storage/archive/archive.vcproj | 257 - VC++Files/storage/bdb/bdb.dsp | 825 -- VC++Files/storage/bdb/bdb.vcproj | 3620 -------- VC++Files/storage/bdb/build_win32/Berkeley_DB.dsw | 568 -- VC++Files/storage/bdb/build_win32/db_archive.dsp | 151 - VC++Files/storage/bdb/build_win32/db_buildall.dsp | 128 - .../storage/bdb/build_win32/db_checkpoint.dsp | 151 - VC++Files/storage/bdb/build_win32/db_deadlock.dsp | 151 - VC++Files/storage/bdb/build_win32/db_dll.dsp | 753 -- VC++Files/storage/bdb/build_win32/db_dump.dsp | 151 - VC++Files/storage/bdb/build_win32/db_java.dsp | 174 - VC++Files/storage/bdb/build_win32/db_load.dsp | 151 - VC++Files/storage/bdb/build_win32/db_printlog.dsp | 151 - VC++Files/storage/bdb/build_win32/db_recover.dsp | 151 - VC++Files/storage/bdb/build_win32/db_stat.dsp | 151 - VC++Files/storage/bdb/build_win32/db_static.dsp | 714 -- VC++Files/storage/bdb/build_win32/db_static1.dsp | 85 - VC++Files/storage/bdb/build_win32/db_tcl.dsp | 135 - VC++Files/storage/bdb/build_win32/db_test.dsp | 99 - VC++Files/storage/bdb/build_win32/db_upgrade.dsp | 151 - VC++Files/storage/bdb/build_win32/db_verify.dsp | 151 - VC++Files/storage/bdb/build_win32/ex_access.dsp | 151 - VC++Files/storage/bdb/build_win32/ex_btrec.dsp | 151 - VC++Files/storage/bdb/build_win32/ex_env.dsp | 151 - VC++Files/storage/bdb/build_win32/ex_lock.dsp | 151 - VC++Files/storage/bdb/build_win32/ex_mpool.dsp | 151 - VC++Files/storage/bdb/build_win32/ex_tpcb.dsp | 151 - VC++Files/storage/bdb/build_win32/excxx_access.dsp | 151 - VC++Files/storage/bdb/build_win32/excxx_btrec.dsp | 151 - VC++Files/storage/bdb/build_win32/excxx_env.dsp | 151 - VC++Files/storage/bdb/build_win32/excxx_lock.dsp | 151 - VC++Files/storage/bdb/build_win32/excxx_mpool.dsp | 151 - VC++Files/storage/bdb/build_win32/excxx_tpcb.dsp | 151 - VC++Files/storage/bdb/build_win32/libdb.def | 151 - VC++Files/storage/bdb/build_win32/libdb_tcl.def | 35 - VC++Files/storage/example/example.vcproj | 257 - VC++Files/storage/heap/heap.dsp | 256 - VC++Files/storage/heap/heap.vcproj | 1062 --- VC++Files/storage/heap/heap_ia64.dsp | 256 - VC++Files/storage/innobase/innobase.dsp | 450 - VC++Files/storage/innobase/innobase.vcproj | 2957 ------ VC++Files/storage/innobase/innobase_ia64.dsp | 450 - VC++Files/storage/myisam/myisam.dsp | 366 - VC++Files/storage/myisam/myisam.vcproj | 2095 ----- VC++Files/storage/myisam/myisam_ia64.dsp | 366 - VC++Files/storage/myisammrg/myisammrg.dsp | 233 - VC++Files/storage/myisammrg/myisammrg.vcproj | 969 -- VC++Files/storage/myisammrg/myisammrg_ia64.dsp | 233 - VC++Files/strings/MASM6x/strings.dsp | 248 - VC++Files/strings/MASM6x/strings.dsw | 28 - VC++Files/strings/backup/strings.dsp | 249 - VC++Files/strings/backup/strings.dsw | 28 - VC++Files/strings/noMASM/strings.dsp | 266 - VC++Files/strings/noMASM/strings.dsw | 28 - VC++Files/strings/strings.dsp | 283 - VC++Files/strings/strings.dsw | 28 - VC++Files/strings/strings.vcproj | 1053 --- VC++Files/strings/strings_ia64.dsp | 282 - VC++Files/test1/mysql_thr.c | 256 - VC++Files/test1/test1.dsp | 102 - VC++Files/test1/test1.vcproj | 161 - VC++Files/test1/test1_ia64.dsp | 104 - VC++Files/tests/mysql_client_test.dsp | 94 - VC++Files/tests/mysql_client_test.vcproj | 163 - VC++Files/tests/mysql_client_test_ia64.dsp | 87 - VC++Files/thr_insert_test/thr_insert_test.dsp | 109 - VC++Files/thr_test/thr_test.c | 250 - VC++Files/thr_test/thr_test.dsp | 104 - VC++Files/thr_test/thr_test.vcproj | 162 - VC++Files/thr_test/thr_test_ia64.dsp | 106 - VC++Files/vio/vio.dsp | 108 - VC++Files/vio/vio.vcproj | 204 - VC++Files/vio/vio_ia64.dsp | 108 - VC++Files/zlib/contrib/asm386/zlibvc.dsp | 651 -- VC++Files/zlib/contrib/asm386/zlibvc.dsw | 41 - VC++Files/zlib/zlib.dsp | 204 - VC++Files/zlib/zlib.vcproj | 483 - VC++Files/zlib/zlib_ia64.dsp | 204 - 202 files changed, 84622 deletions(-) delete mode 100644 VC++Files/README.build-files delete mode 100644 VC++Files/client/mysql.dsp delete mode 100644 VC++Files/client/mysql.vcproj delete mode 100644 VC++Files/client/mysql_ia64.dsp delete mode 100644 VC++Files/client/mysql_upgrade.dsp delete mode 100644 VC++Files/client/mysql_upgrade.vcproj delete mode 100644 VC++Files/client/mysql_upgrade_ia64.dsp delete mode 100644 VC++Files/client/mysqladmin.dsp delete mode 100644 VC++Files/client/mysqladmin.vcproj delete mode 100644 VC++Files/client/mysqladmin_ia64.dsp delete mode 100644 VC++Files/client/mysqlcheck.dsp delete mode 100644 VC++Files/client/mysqlcheck_ia64.dsp delete mode 100644 VC++Files/client/mysqlclient.dsp delete mode 100644 VC++Files/client/mysqlclient.dsw delete mode 100644 VC++Files/client/mysqlclient.vcproj delete mode 100644 VC++Files/client/mysqlclient_ia64.dsp delete mode 100644 VC++Files/client/mysqldump.dsp delete mode 100644 VC++Files/client/mysqldump.vcproj delete mode 100644 VC++Files/client/mysqldump_ia64.dsp delete mode 100644 VC++Files/client/mysqlimport.dsp delete mode 100644 VC++Files/client/mysqlimport.vcproj delete mode 100644 VC++Files/client/mysqlimport_ia64.dsp delete mode 100644 VC++Files/client/mysqlshow.dsp delete mode 100644 VC++Files/client/mysqlshow.vcproj delete mode 100644 VC++Files/client/mysqlshow_ia64.dsp delete mode 100644 VC++Files/client/mysqlslap.vcproj delete mode 100644 VC++Files/client/mysqltest.dsp delete mode 100644 VC++Files/client/mysqltest.vcproj delete mode 100644 VC++Files/client/mysqltest_ia64.dsp delete mode 100644 VC++Files/comp_err/comp_err.dsp delete mode 100644 VC++Files/comp_err/comp_err.vcproj delete mode 100644 VC++Files/comp_err/comp_err_ia64.dsp delete mode 100644 VC++Files/contrib/asm386/zlibvc.dsp delete mode 100644 VC++Files/contrib/asm386/zlibvc.dsw delete mode 100644 VC++Files/contrib/minizip/zlibvc.dsp delete mode 100644 VC++Files/contrib/minizip/zlibvc.dsw delete mode 100644 VC++Files/copy_mysql_files.bat delete mode 100644 VC++Files/dbug/dbug.dsp delete mode 100644 VC++Files/dbug/dbug.dsw delete mode 100644 VC++Files/dbug/dbug.vcproj delete mode 100644 VC++Files/dbug/dbug_ia64.dsp delete mode 100644 VC++Files/examples/udf_example/udf_example.def delete mode 100644 VC++Files/examples/udf_example/udf_example.dsp delete mode 100644 VC++Files/examples/udf_example/udf_example.dsw delete mode 100755 VC++Files/fix-project-files delete mode 100644 VC++Files/libmysql/libmysql.dsp delete mode 100644 VC++Files/libmysql/libmysql.dsw delete mode 100644 VC++Files/libmysql/libmysql.vcproj delete mode 100644 VC++Files/libmysql/libmysql_ia64.dsp delete mode 100644 VC++Files/libmysqld/examples/test_libmysqld.dsp delete mode 100644 VC++Files/libmysqld/examples/test_libmysqld.vcproj delete mode 100644 VC++Files/libmysqld/examples/test_libmysqld_ia64.dsp delete mode 100644 VC++Files/libmysqld/libmysqld.dsp delete mode 100644 VC++Files/libmysqld/libmysqld.vcproj delete mode 100644 VC++Files/libmysqld/libmysqld_ia64.dsp delete mode 100644 VC++Files/libmysqltest/myTest-package.dsp delete mode 100644 VC++Files/libmysqltest/myTest-package_ia64.dsp delete mode 100644 VC++Files/libmysqltest/myTest.dsp delete mode 100644 VC++Files/libmysqltest/myTest.vcproj delete mode 100644 VC++Files/libmysqltest/myTest_ia64.dsp delete mode 100644 VC++Files/libmysqltest/mytest.c delete mode 100644 VC++Files/libmysqltest/mytest.dsw delete mode 100644 VC++Files/merge/merge.dsp delete mode 100644 VC++Files/merge/merge.dsw delete mode 100644 VC++Files/merge/merge_ia64.dsp delete mode 100644 VC++Files/my_print_defaults/my_print_defaults.dsp delete mode 100644 VC++Files/my_print_defaults/my_print_defaults.vcproj delete mode 100644 VC++Files/my_print_defaults/my_print_defaults_ia64.dsp delete mode 100755 VC++Files/myisam_ftdump/myisam_ftdump.dsp delete mode 100644 VC++Files/myisam_ftdump/myisam_ftdump.vcproj delete mode 100644 VC++Files/myisam_ftdump/myisam_ftdump_ia64.dsp delete mode 100644 VC++Files/myisamchk/myisamchk.dsp delete mode 100644 VC++Files/myisamchk/myisamchk.vcproj delete mode 100644 VC++Files/myisamchk/myisamchk_ia64.dsp delete mode 100644 VC++Files/myisamlog/myisamlog.dsp delete mode 100644 VC++Files/myisamlog/myisamlog.vcproj delete mode 100644 VC++Files/myisamlog/myisamlog_ia64.dsp delete mode 100644 VC++Files/myisampack/myisampack.dsp delete mode 100644 VC++Files/myisampack/myisampack.vcproj delete mode 100644 VC++Files/myisampack/myisampack_ia64.dsp delete mode 100644 VC++Files/mysql.dsp delete mode 100644 VC++Files/mysql.dsw delete mode 100644 VC++Files/mysql.sln delete mode 100644 VC++Files/mysql_ia64.dsw delete mode 100644 VC++Files/mysqlbinlog/mysqlbinlog.dsp delete mode 100644 VC++Files/mysqlbinlog/mysqlbinlog.vcproj delete mode 100644 VC++Files/mysqlbinlog/mysqlbinlog_ia64.dsp delete mode 100644 VC++Files/mysqlcheck/mysqlcheck.dsp delete mode 100644 VC++Files/mysqlcheck/mysqlcheck.vcproj delete mode 100644 VC++Files/mysqlcheck/mysqlcheck_ia64.dsp delete mode 100644 VC++Files/mysqldemb/mysqldemb.dsp delete mode 100644 VC++Files/mysqldemb/mysqldemb.vcproj delete mode 100644 VC++Files/mysqldemb/mysqldemb_ia64.dsp delete mode 100644 VC++Files/mysqlserver/dummy.cpp delete mode 100644 VC++Files/mysqlserver/mysqlserver.dsp delete mode 100644 VC++Files/mysqlserver/mysqlserver.vcproj delete mode 100644 VC++Files/mysqlserver/mysqlserver_ia64.dsp delete mode 100644 VC++Files/mysys/mysys.dsp delete mode 100644 VC++Files/mysys/mysys.dsw delete mode 100644 VC++Files/mysys/mysys.vcproj delete mode 100644 VC++Files/mysys/mysys_ia64.dsp delete mode 100644 VC++Files/perror/perror.dsp delete mode 100644 VC++Files/perror/perror.vcproj delete mode 100644 VC++Files/perror/perror_ia64.dsp delete mode 100644 VC++Files/plugin/fulltext/fulltext.def delete mode 100644 VC++Files/plugin/fulltext/fulltext.vcproj delete mode 100755 VC++Files/prepare delete mode 100644 VC++Files/regex/regex.dsp delete mode 100644 VC++Files/regex/regex.dsw delete mode 100644 VC++Files/regex/regex.vcproj delete mode 100644 VC++Files/regex/regex_ia64.dsp delete mode 100644 VC++Files/replace/replace.dsp delete mode 100644 VC++Files/replace/replace.vcproj delete mode 100644 VC++Files/replace/replace_ia64.dsp delete mode 100644 VC++Files/sql/gen_lex_hash.dsp delete mode 100644 VC++Files/sql/gen_lex_hash.vcproj delete mode 100644 VC++Files/sql/message.mc delete mode 100644 VC++Files/sql/mysqld.dsp delete mode 100644 VC++Files/sql/mysqld.dsw delete mode 100644 VC++Files/sql/mysqld.vcproj delete mode 100644 VC++Files/sql/mysqld_ia64.dsp delete mode 100644 VC++Files/sql/mysqldmax.dsp delete mode 100644 VC++Files/sql/mysqldmax_ia64.dsp delete mode 100644 VC++Files/sql/old/mysqld.dsw delete mode 100644 VC++Files/storage/archive/archive.vcproj delete mode 100644 VC++Files/storage/bdb/bdb.dsp delete mode 100644 VC++Files/storage/bdb/bdb.vcproj delete mode 100644 VC++Files/storage/bdb/build_win32/Berkeley_DB.dsw delete mode 100644 VC++Files/storage/bdb/build_win32/db_archive.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/db_buildall.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/db_checkpoint.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/db_deadlock.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/db_dll.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/db_dump.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/db_java.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/db_load.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/db_printlog.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/db_recover.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/db_stat.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/db_static.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/db_static1.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/db_tcl.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/db_test.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/db_upgrade.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/db_verify.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/ex_access.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/ex_btrec.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/ex_env.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/ex_lock.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/ex_mpool.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/ex_tpcb.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/excxx_access.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/excxx_btrec.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/excxx_env.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/excxx_lock.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/excxx_mpool.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/excxx_tpcb.dsp delete mode 100644 VC++Files/storage/bdb/build_win32/libdb.def delete mode 100644 VC++Files/storage/bdb/build_win32/libdb_tcl.def delete mode 100644 VC++Files/storage/example/example.vcproj delete mode 100644 VC++Files/storage/heap/heap.dsp delete mode 100644 VC++Files/storage/heap/heap.vcproj delete mode 100644 VC++Files/storage/heap/heap_ia64.dsp delete mode 100644 VC++Files/storage/innobase/innobase.dsp delete mode 100644 VC++Files/storage/innobase/innobase.vcproj delete mode 100644 VC++Files/storage/innobase/innobase_ia64.dsp delete mode 100644 VC++Files/storage/myisam/myisam.dsp delete mode 100644 VC++Files/storage/myisam/myisam.vcproj delete mode 100644 VC++Files/storage/myisam/myisam_ia64.dsp delete mode 100644 VC++Files/storage/myisammrg/myisammrg.dsp delete mode 100644 VC++Files/storage/myisammrg/myisammrg.vcproj delete mode 100644 VC++Files/storage/myisammrg/myisammrg_ia64.dsp delete mode 100644 VC++Files/strings/MASM6x/strings.dsp delete mode 100644 VC++Files/strings/MASM6x/strings.dsw delete mode 100644 VC++Files/strings/backup/strings.dsp delete mode 100644 VC++Files/strings/backup/strings.dsw delete mode 100644 VC++Files/strings/noMASM/strings.dsp delete mode 100644 VC++Files/strings/noMASM/strings.dsw delete mode 100644 VC++Files/strings/strings.dsp delete mode 100644 VC++Files/strings/strings.dsw delete mode 100644 VC++Files/strings/strings.vcproj delete mode 100644 VC++Files/strings/strings_ia64.dsp delete mode 100644 VC++Files/test1/mysql_thr.c delete mode 100644 VC++Files/test1/test1.dsp delete mode 100644 VC++Files/test1/test1.vcproj delete mode 100644 VC++Files/test1/test1_ia64.dsp delete mode 100644 VC++Files/tests/mysql_client_test.dsp delete mode 100644 VC++Files/tests/mysql_client_test.vcproj delete mode 100644 VC++Files/tests/mysql_client_test_ia64.dsp delete mode 100644 VC++Files/thr_insert_test/thr_insert_test.dsp delete mode 100644 VC++Files/thr_test/thr_test.c delete mode 100644 VC++Files/thr_test/thr_test.dsp delete mode 100644 VC++Files/thr_test/thr_test.vcproj delete mode 100644 VC++Files/thr_test/thr_test_ia64.dsp delete mode 100644 VC++Files/vio/vio.dsp delete mode 100644 VC++Files/vio/vio.vcproj delete mode 100644 VC++Files/vio/vio_ia64.dsp delete mode 100644 VC++Files/zlib/contrib/asm386/zlibvc.dsp delete mode 100644 VC++Files/zlib/contrib/asm386/zlibvc.dsw delete mode 100644 VC++Files/zlib/zlib.dsp delete mode 100644 VC++Files/zlib/zlib.vcproj delete mode 100644 VC++Files/zlib/zlib_ia64.dsp diff --git a/VC++Files/README.build-files b/VC++Files/README.build-files deleted file mode 100644 index 27624c3dc6f..00000000000 --- a/VC++Files/README.build-files +++ /dev/null @@ -1,19 +0,0 @@ -Some notes about building MySQL with VC++ - -- After bulding all projects, you get the files in the following directories: - -Directory Content - -lib_debug Debug libraries -lib_release Release libraries -lib_classic Embedded server libraries for classic -lib_pro Embedded server libraries for pro -client_debug Debug executables -client_release Client release -client_classic Commerical binaries (classic) -client_pro Commerical binaries (unique for pro version) -include Include files - -The copy_mysql_files.bat script can be used to copy the generated -files to c:\mysql - diff --git a/VC++Files/client/mysql.dsp b/VC++Files/client/mysql.dsp deleted file mode 100644 index 510107c8308..00000000000 --- a/VC++Files/client/mysql.dsp +++ /dev/null @@ -1,154 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysql" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysql - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysql.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysql.mak" CFG="mysql - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysql - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mysql - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysql - Win32 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysql - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /I "../extra/yassl/include" /D "NDEBUG" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /WX /Fr /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /debug /machine:I386 /out:"../client_release/mysql.exe" /libpath:"..\lib_release\\" -# SUBTRACT LINK32 /incremental:yes - -!ELSEIF "$(CFG)" == "mysql - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "mysql___" -# PROP BASE Intermediate_Dir "mysql___" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /I "../" /I "../extra/yassl/include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /Fr /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib ..\extra\yassl\Debug\yassl.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysql.exe" /pdbtype:sept /libpath:"..\lib_debug\\" - -!ELSEIF "$(CFG)" == "mysql - Win32 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysql___Win32_classic" -# PROP BASE Intermediate_Dir "mysql___Win32_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /WX /O2 /I "../include" /I "../" /I "../extra/yassl/include" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /WX /O2 /I "../include" /I "../" /I "../extra/yassl/include" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"../client_release/mysql.exe" /libpath:"..\lib_release\\" -# SUBTRACT BASE LINK32 /incremental:yes -# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /debug /machine:I386 /out:"../client_classic/mysql.exe" /libpath:"..\lib_release\\" -# SUBTRACT LINK32 /incremental:yes - -!ENDIF - -# Begin Target - -# Name "mysql - Win32 Release" -# Name "mysql - Win32 Debug" -# Name "mysql - Win32 classic" -# Begin Source File - -SOURCE=.\completion_hash.cpp -# End Source File -# Begin Source File - -SOURCE=.\mysql.cpp - -!IF "$(CFG)" == "mysql - Win32 Release" - -# ADD CPP /Zi /O2 - -!ELSEIF "$(CFG)" == "mysql - Win32 Debug" - -!ELSEIF "$(CFG)" == "mysql - Win32 classic" - -# ADD BASE CPP /Zi /O2 -# ADD CPP /Zi /O2 - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\readline.cpp -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_conio.c -# End Source File -# Begin Source File - -SOURCE=.\sql_string.cpp -# End Source File -# End Target -# End Project diff --git a/VC++Files/client/mysql.vcproj b/VC++Files/client/mysql.vcproj deleted file mode 100644 index 72cc4ba6b89..00000000000 --- a/VC++Files/client/mysql.vcproj +++ /dev/null @@ -1,318 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/client/mysql_ia64.dsp b/VC++Files/client/mysql_ia64.dsp deleted file mode 100644 index 8de283d1e0b..00000000000 --- a/VC++Files/client/mysql_ia64.dsp +++ /dev/null @@ -1,140 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysql" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysql - WinIA64 classic -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysql.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysql.mak" CFG="mysql - WinIA64 classic" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysql - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mysql - WinIA64 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysql - WinIA64 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysql - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../" /D "NDEBUG" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /WX /Fr /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IX86 /machine:IA64 -# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /debug /out:"../client_release/mysql.exe" /libpath:"..\lib_release\\" /machine:IA64 - -!ELSEIF "$(CFG)" == "mysql - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "mysql___" -# PROP BASE Intermediate_Dir "mysql___" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../include" /I "../" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /Fr /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64 -# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/mysql.exe" /libpath:"..\lib_debug\\" /machine:IA64 - -!ELSEIF "$(CFG)" == "mysql - WinIA64 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysql___WinIA64_classic" -# PROP BASE Intermediate_Dir "mysql___WinIA64_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /G6 /MT /W3 /WX /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /WX /Zi /O2 /I "../include" /I "../" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /out:"../client_release/mysql.exe" /libpath:"..\lib_release\\" /machine:IA64 -# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /debug /out:"../client_classic/mysql.exe" /libpath:"..\lib_release\\" /machine:IA64 - -!ENDIF - -# Begin Target - -# Name "mysql - WinIA64 Release" -# Name "mysql - WinIA64 Debug" -# Name "mysql - WinIA64 classic" -# Begin Source File - -SOURCE=.\completion_hash.cpp -# End Source File -# Begin Source File - -SOURCE=.\mysql.cpp -# End Source File -# Begin Source File - -SOURCE=.\readline.cpp -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_conio.c -# End Source File -# Begin Source File - -SOURCE=.\sql_string.cpp -# End Source File -# End Target -# End Project diff --git a/VC++Files/client/mysql_upgrade.dsp b/VC++Files/client/mysql_upgrade.dsp deleted file mode 100644 index 28eb2a58f39..00000000000 --- a/VC++Files/client/mysql_upgrade.dsp +++ /dev/null @@ -1,124 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysql_upgrade" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysql_upgrade - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysql_upgrade.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysql_upgrade.mak" CFG="mysql_upgrade - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysql_upgrade - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mysql_upgrade - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysql_upgrade - Win32 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysql_upgrade - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysql_upgrade.exe" /libpath:"..\lib_release\\" -# SUBTRACT LINK32 /incremental:yes - -!ELSEIF "$(CFG)" == "mysql_upgrade - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "mysqlimp" -# PROP BASE Intermediate_Dir "mysqlimp" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /I "../" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib setargv.obj ..\extra\yassl\Debug\yassl.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysql_upgrade.exe" /pdbtype:sept /libpath:"..\lib_debug\\" - -!ELSEIF "$(CFG)" == "mysql_upgrade - Win32 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysql_upgrade___Win32_classic" -# PROP BASE Intermediate_Dir "mysql_upgrade___Win32_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysql_upgrade.exe" /libpath:"..\lib_release\\" -# SUBTRACT BASE LINK32 /incremental:yes -# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysql_upgrade.exe" /libpath:"..\lib_release\\" -# SUBTRACT LINK32 /incremental:yes - -!ENDIF - -# Begin Target - -# Name "mysql_upgrade - Win32 Release" -# Name "mysql_upgrade - Win32 Debug" -# Name "mysql_upgrade - Win32 classic" -# Begin Source File - -SOURCE=.\mysql_upgrade.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/client/mysql_upgrade.vcproj b/VC++Files/client/mysql_upgrade.vcproj deleted file mode 100644 index 38cae600a75..00000000000 --- a/VC++Files/client/mysql_upgrade.vcproj +++ /dev/null @@ -1,232 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/client/mysql_upgrade_ia64.dsp b/VC++Files/client/mysql_upgrade_ia64.dsp deleted file mode 100644 index 5cb42ba0224..00000000000 --- a/VC++Files/client/mysql_upgrade_ia64.dsp +++ /dev/null @@ -1,124 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysql_upgrade" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysql_upgrade - WinIA64 classic -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysql_upgrade_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysql_upgrade_ia64.mak" CFG="mysql_upgrade - WinIA64 classic" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysql_upgrade - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mysql_upgrade - WinIA64 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysql_upgrade - WinIA64 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysql_upgrade - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_release/mysql_upgrade.exe" /libpath:"..\lib_release\\" /machine:IA64 - -!ELSEIF "$(CFG)" == "mysql_upgrade - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "mysqlimp" -# PROP BASE Intermediate_Dir "mysqlimp" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../include" /I "../" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64 -# ADD LINK32 setargv.obj ..\lib_debug\zlib.lib ..\lib_debug\dbug.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/mysql_upgrade.exe" /libpath:"..\lib_debug\\" /machine:IA64 - -!ELSEIF "$(CFG)" == "mysql_upgrade - WinIA64 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysql_upgrade___WinIA64_classic" -# PROP BASE Intermediate_Dir "mysql_upgrade___WinIA64_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /out:"../client_release/mysql_upgrade.exe" /libpath:"..\lib_release\\" /machine:IA64 -# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_classic/mysql_upgrade.exe" /libpath:"..\lib_release\\" /machine:IA64 - -!ENDIF - -# Begin Target - -# Name "mysql_upgrade - WinIA64 Release" -# Name "mysql_upgrade - WinIA64 Debug" -# Name "mysql_upgrade - WinIA64 classic" -# Begin Source File - -SOURCE=.\mysql_upgrade.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/client/mysqladmin.dsp b/VC++Files/client/mysqladmin.dsp deleted file mode 100644 index d0d29cfcaaf..00000000000 --- a/VC++Files/client/mysqladmin.dsp +++ /dev/null @@ -1,121 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqladmin" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysqladmin - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqladmin.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqladmin.mak" CFG="mysqladmin - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqladmin - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqladmin - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqladmin - Win32 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqladmin - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqladmin.exe" /libpath:"..\lib_release\\" - -!ELSEIF "$(CFG)" == "mysqladmin - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "mysqladm" -# PROP BASE Intermediate_Dir "mysqladm" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /I "../" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib ..\extra\yassl\Debug\yassl.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqladmin.exe" /pdbtype:sept /libpath:"..\lib_debug\\" - -!ELSEIF "$(CFG)" == "mysqladmin - Win32 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqladmin___Win32_classic" -# PROP BASE Intermediate_Dir "mysqladmin___Win32_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqladmin.exe" /libpath:"..\lib_release\\" -# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqladmin.exe" /libpath:"..\lib_release\\" - -!ENDIF - -# Begin Target - -# Name "mysqladmin - Win32 Release" -# Name "mysqladmin - Win32 Debug" -# Name "mysqladmin - Win32 classic" -# Begin Source File - -SOURCE=.\mysqladmin.cpp -# End Source File -# End Target -# End Project diff --git a/VC++Files/client/mysqladmin.vcproj b/VC++Files/client/mysqladmin.vcproj deleted file mode 100644 index 188bf61dff7..00000000000 --- a/VC++Files/client/mysqladmin.vcproj +++ /dev/null @@ -1,232 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/client/mysqladmin_ia64.dsp b/VC++Files/client/mysqladmin_ia64.dsp deleted file mode 100644 index f7823479d5a..00000000000 --- a/VC++Files/client/mysqladmin_ia64.dsp +++ /dev/null @@ -1,124 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqladmin" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysqladmin - WinIA64 classic -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqladmin_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqladmin_ia64.mak" CFG="mysqladmin - WinIA64 classic" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqladmin - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqladmin - WinIA64 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqladmin - WinIA64 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqladmin - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_release/mysqladmin.exe" /libpath:"..\lib_release\\" /machine:IA64 - -!ELSEIF "$(CFG)" == "mysqladmin - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "mysqladm" -# PROP BASE Intermediate_Dir "mysqladm" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../include" /I "../" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64 -# ADD LINK32 ..\lib_debug\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/mysqladmin.exe" /libpath:"..\lib_debug\\" /machine:IA64 - -!ELSEIF "$(CFG)" == "mysqladmin - WinIA64 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqladmin___Win64_classic" -# PROP BASE Intermediate_Dir "mysqladmin___Win64_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /out:"../client_release/mysqladmin.exe" /libpath:"..\lib_release\\" /machine:IA64 -# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_classic/mysqladmin.exe" /libpath:"..\lib_release\\" /machine:IA64 - -!ENDIF - -# Begin Target - -# Name "mysqladmin - WinIA64 Release" -# Name "mysqladmin - WinIA64 Debug" -# Name "mysqladmin - WinIA64 classic" -# Begin Source File - -SOURCE=.\mysqladmin.cpp -# End Source File -# End Target -# End Project diff --git a/VC++Files/client/mysqlcheck.dsp b/VC++Files/client/mysqlcheck.dsp deleted file mode 100644 index 399b18d16fc..00000000000 --- a/VC++Files/client/mysqlcheck.dsp +++ /dev/null @@ -1,71 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqlcheck" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysqlcheck - Win32 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqlcheck.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqlcheck.mak" CFG="mysqlcheck - Win32 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqlcheck - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqlcheck___Win32_Release" -# PROP BASE Intermediate_Dir "mysqlcheck___Win32_Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "mysqlcheck___Win32_Release" -# PROP Intermediate_Dir "mysqlcheck___Win32_Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "NDEBUG" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /Fp"Release/mysqlcheck.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /pdb:"release/mysqlcheck.pdb" /machine:I386 /out:"../client_release/mysqlcheck.exe" /libpath:"..\lib_release\\" -# SUBTRACT LINK32 /pdb:none -# Begin Target - -# Name "mysqlcheck - Win32 Release" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\mysqlcheck.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/client/mysqlcheck_ia64.dsp b/VC++Files/client/mysqlcheck_ia64.dsp deleted file mode 100644 index aa49d86a523..00000000000 --- a/VC++Files/client/mysqlcheck_ia64.dsp +++ /dev/null @@ -1,77 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqlcheck" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysqlcheck - Win32 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqlcheck.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqlcheck.mak" CFG="mysqlcheck - Win32 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqlcheck - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysql - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqlcheck___WinIA64_Release" -# PROP BASE Intermediate_Dir "mysqlcheck___WinIA64_Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "mysqlcheck___WinIA64_Release" -# PROP Intermediate_Dir "mysqlcheck___WinIA64_Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /I "../include" /D"NDEBUG" /D"DBUG_OFF" /D"_CONSOLE" /D"_MBCS" /D"_WINDOWS" /Fp"Release/mysqlcheck.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c /O2 /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /pdb:"release/mysqlcheck.pdb" /machine:IA64 /out:"../client_release/mysqlcheck.exe" /libpath:"..\lib_release\\" /incremental:no -# SUBTRACT LINK32 - -!ENDIF - -# Begin Target - -# Name "mysqlcheck - WinIA64 Release" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\mysqlcheck.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/client/mysqlclient.dsp b/VC++Files/client/mysqlclient.dsp deleted file mode 100644 index c14fc31ab8d..00000000000 --- a/VC++Files/client/mysqlclient.dsp +++ /dev/null @@ -1,601 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqlclient" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=mysqlclient - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqlclient.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqlclient.mak" CFG="mysqlclient - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqlclient - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "mysqlclient - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "mysqlclient - Win32 authent" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqlclient - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /I "../extra/yassl/include" /D "DBUG_OFF" /D "_WINDOWS" /D "USE_TLS" /D "MYSQL_CLIENT" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_release\mysqlclient.lib" - -!ELSEIF "$(CFG)" == "mysqlclient - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /I "../" /I "../extra/yassl/include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_TLS" /D "MYSQL_CLIENT" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_debug\mysqlclient.lib" - -!ELSEIF "$(CFG)" == "mysqlclient - Win32 authent" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqlclient___Win32_authent" -# PROP BASE Intermediate_Dir "mysqlclient___Win32_authent" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "authent" -# PROP Intermediate_Dir "authent" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_WINDOWS" /D "USE_TLS" /D "MYSQL_CLIENT" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /I "../extra/yassl/include" /D "DBUG_OFF" /D "_WINDOWS" /D "USE_TLS" /D "MYSQL_CLIENT" /D "NDEBUG" /D "CHECK_LICENSE" /D LICENSE=Commercial /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo /out:"..\lib_release\mysqlclient.lib" -# ADD LIB32 /nologo /out:"..\lib_authent\mysqlclient.lib" - -!ENDIF - -# Begin Target - -# Name "mysqlclient - Win32 Release" -# Name "mysqlclient - Win32 Debug" -# Name "mysqlclient - Win32 authent" -# Begin Source File - -SOURCE=..\mysys\array.c -# End Source File -# Begin Source File - -SOURCE=..\strings\bchange.c -# End Source File -# Begin Source File - -SOURCE=..\strings\bmove.c -# End Source File -# Begin Source File - -SOURCE=..\strings\bmove_upp.c -# End Source File -# Begin Source File - -SOURCE="..\mysys\charset-def.c" -# End Source File -# Begin Source File - -SOURCE=..\mysys\charset.c -# End Source File -# Begin Source File - -SOURCE=..\libmysql\client.c -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-big5.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-bin.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-cp932.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-czech.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-euc_kr.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-eucjpms.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-extra.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-gb2312.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-gbk.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-latin1.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-mb.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-simple.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-sjis.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-tis620.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-uca.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-ucs2.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-ujis.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-utf8.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-win1250ch.c" -# End Source File -# Begin Source File - -SOURCE=..\strings\ctype.c -# End Source File -# Begin Source File - -SOURCE=..\dbug\dbug.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\default.c -# End Source File -# Begin Source File - -SOURCE=..\libmysql\errmsg.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\errors.c -# End Source File -# Begin Source File - -SOURCE=..\libmysql\get_password.c -# End Source File -# Begin Source File - -SOURCE=..\strings\int2str.c -# End Source File -# Begin Source File - -SOURCE=..\strings\is_prefix.c -# End Source File -# Begin Source File - -SOURCE=..\libmysql\libmysql.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\list.c -# End Source File -# Begin Source File - -SOURCE=..\strings\llstr.c -# End Source File -# Begin Source File - -SOURCE=..\strings\longlong2str.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_cache.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_dirname.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_fn_ext.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_format.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_iocache.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_iocache2.c - -!IF "$(CFG)" == "mysqlclient - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqlclient - Win32 Debug" - -# ADD CPP /Od - -!ELSEIF "$(CFG)" == "mysqlclient - Win32 authent" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_loadpath.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_pack.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_path.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_tempfile.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_unixpath.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_wcomp.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mulalloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_access.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_alloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_chsize.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_compress.c -# ADD CPP /I "../zlib" -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_create.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_delete.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_div.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_error.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_file.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_fopen.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_fstream.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_gethostbyname.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_getopt.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_getwd.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_init.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_lib.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_malloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_messnc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_net.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_once.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_open.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_pread.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_pthread.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_read.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_realloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_rename.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_seek.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_static.c -# End Source File -# Begin Source File - -SOURCE=..\strings\my_strtoll10.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_symlink.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_symlink2.c -# End Source File -# Begin Source File - -SOURCE=..\libmysql\my_time.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_thr_init.c -# End Source File -# Begin Source File - -SOURCE=..\strings\my_vsnprintf.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_wincond.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_winthread.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_write.c -# End Source File -# Begin Source File - -SOURCE=.\mysys_priv.h -# End Source File -# Begin Source File - -SOURCE=..\sql\net_serv.cpp -# End Source File -# Begin Source File - -SOURCE=..\libmysql\manager.c -# End Source File -# Begin Source File - -SOURCE=..\libmysql\pack.c -# End Source File -# Begin Source File - -SOURCE=..\libmysql\password.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\safemalloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\sha1.c -# End Source File -# Begin Source File - -SOURCE=..\strings\str2int.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strcend.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strcont.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strend.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strfill.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\string.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strinstr.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strmake.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strmov.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strnlen.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strnmov.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strtod.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strtoll.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strtoull.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strxmov.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strxnmov.c -# End Source File -# Begin Source File - -SOURCE=..\strings\str_alloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\thr_mutex.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\typelib.c -# End Source File -# Begin Source File - -SOURCE=..\vio\vio.c -# End Source File -# Begin Source File - -SOURCE=..\vio\viosocket.c -# End Source File -# Begin Source File - -SOURCE=..\vio\viossl.c -# End Source File -# Begin Source File - -SOURCE=..\vio\viosslfactories.c -# End Source File -# Begin Source File - -SOURCE=..\strings\xml.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/client/mysqlclient.dsw b/VC++Files/client/mysqlclient.dsw deleted file mode 100644 index 0f35d0c2253..00000000000 --- a/VC++Files/client/mysqlclient.dsw +++ /dev/null @@ -1,28 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "mysqlclient"=".\mysqlclient.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### diff --git a/VC++Files/client/mysqlclient.vcproj b/VC++Files/client/mysqlclient.vcproj deleted file mode 100644 index dbbc615888b..00000000000 --- a/VC++Files/client/mysqlclient.vcproj +++ /dev/null @@ -1,3333 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/client/mysqlclient_ia64.dsp b/VC++Files/client/mysqlclient_ia64.dsp deleted file mode 100644 index 1aa6836ca58..00000000000 --- a/VC++Files/client/mysqlclient_ia64.dsp +++ /dev/null @@ -1,582 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqlclient" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=mysqlclient - WinIA64 authent -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqlclient.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqlclient.mak" CFG="mysqlclient - WinIA64 authent" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqlclient - WinIA64 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "mysqlclient - WinIA64 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "mysqlclient - WinIA64 authent" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqlclient - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_WINDOWS" /D "USE_TLS" /D "MYSQL_CLIENT" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_release\mysqlclient.lib" - -!ELSEIF "$(CFG)" == "mysqlclient - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN64" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../include" /I "../" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_TLS" /D "MYSQL_CLIENT" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_debug\mysqlclient.lib" - -!ELSEIF "$(CFG)" == "mysqlclient - WinIA64 authent" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqlclient___WinIA64_authent" -# PROP BASE Intermediate_Dir "mysqlclient___WinIA64_authent" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "authent" -# PROP Intermediate_Dir "authent" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_WINDOWS" /D "USE_TLS" /D "MYSQL_CLIENT" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_WINDOWS" /D "USE_TLS" /D "MYSQL_CLIENT" /D "NDEBUG" /D "CHECK_LICENSE" /D LICENSE=Commercial /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\lib_release\mysqlclient.lib" -# ADD LIB32 /nologo /out:"..\lib_authent\mysqlclient.lib" - -!ENDIF - -# Begin Target - -# Name "mysqlclient - WinIA64 Release" -# Name "mysqlclient - WinIA64 Debug" -# Name "mysqlclient - WinIA64 authent" -# Begin Source File - -SOURCE=..\mysys\array.c -# End Source File -# Begin Source File - -SOURCE=..\strings\bchange.c -# End Source File -# Begin Source File - -SOURCE=..\strings\bmove.c -# End Source File -# Begin Source File - -SOURCE=..\strings\bmove_upp.c -# End Source File -# Begin Source File - -SOURCE="..\mysys\charset-def.c" -# End Source File -# Begin Source File - -SOURCE=..\mysys\charset.c -# End Source File -# Begin Source File - -SOURCE=..\libmysql\client.c -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-big5.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-bin.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-cp932.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-czech.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-cp932.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-euc_kr.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-eucjpms.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-extra.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-gb2312.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-gbk.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-latin1.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-mb.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-simple.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-sjis.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-tis620.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-uca.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-ucs2.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-ujis.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-utf8.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-win1250ch.c" -# End Source File -# Begin Source File - -SOURCE=..\strings\ctype.c -# End Source File -# Begin Source File - -SOURCE=..\dbug\dbug.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\default.c -# End Source File -# Begin Source File - -SOURCE=..\libmysql\errmsg.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\errors.c -# End Source File -# Begin Source File - -SOURCE=..\libmysql\get_password.c -# End Source File -# Begin Source File - -SOURCE=..\strings\int2str.c -# End Source File -# Begin Source File - -SOURCE=..\strings\is_prefix.c -# End Source File -# Begin Source File - -SOURCE=..\libmysql\libmysql.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\list.c -# End Source File -# Begin Source File - -SOURCE=..\strings\llstr.c -# End Source File -# Begin Source File - -SOURCE=..\strings\longlong2str.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_cache.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_dirname.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_fn_ext.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_format.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_iocache.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_iocache2.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_loadpath.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_pack.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_path.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_tempfile.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_unixpath.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_wcomp.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mulalloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_alloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_compress.c -# ADD CPP /I "../zlib" -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_create.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_delete.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_div.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_error.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_file.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_fopen.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_fstream.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_gethostbyname.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_getopt.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_getwd.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_init.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_lib.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_malloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_messnc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_net.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_once.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_open.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_pread.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_pthread.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_read.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_realloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_rename.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_seek.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_static.c -# End Source File -# Begin Source File - -SOURCE=..\strings\my_strtoll10.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_symlink.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_symlink2.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_thr_init.c -# End Source File -# Begin Source File - -SOURCE=..\libmysql\my_time.c -# End Source File -# Begin Source File - -SOURCE=..\strings\my_vsnprintf.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_wincond.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_winthread.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_write.c -# End Source File -# Begin Source File - -SOURCE=.\mysys_priv.h -# End Source File -# Begin Source File - -SOURCE=..\sql\net_serv.cpp -# End Source File -# Begin Source File - -SOURCE=..\libmysql\pack.c -# End Source File -# Begin Source File - -SOURCE=..\libmysql\password.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\safemalloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\sha1.c -# End Source File -# Begin Source File - -SOURCE=..\strings\str2int.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strcend.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strcont.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strend.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strfill.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\string.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strinstr.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strmake.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strmov.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strnlen.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strnmov.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strtod.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strtoll.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strtoull.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strxmov.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strxnmov.c -# End Source File -# Begin Source File - -SOURCE=..\strings\str_alloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\thr_mutex.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\typelib.c -# End Source File -# Begin Source File - -SOURCE=..\vio\vio.c -# End Source File -# Begin Source File - -SOURCE=..\vio\viosocket.c -# End Source File -# Begin Source File - -SOURCE=..\vio\viossl.c -# End Source File -# Begin Source File - -SOURCE=..\vio\viosslfactories.c -# End Source File -# Begin Source File - -SOURCE=..\strings\xml.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/client/mysqldump.dsp b/VC++Files/client/mysqldump.dsp deleted file mode 100644 index 527d1eb0a74..00000000000 --- a/VC++Files/client/mysqldump.dsp +++ /dev/null @@ -1,133 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqldump" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysqldump - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqldump.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqldump.mak" CFG="mysqldump - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqldump - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqldump - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqldump - Win32 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqldump - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqldump.exe" /libpath:"..\lib_release\\" - -!ELSEIF "$(CFG)" == "mysqldump - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "mysqldum" -# PROP BASE Intermediate_Dir "mysqldum" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /I "../" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib zlib.lib ..\extra\yassl\Debug\yassl.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqldump.exe" /pdbtype:sept /libpath:"..\lib_debug\\" - -!ELSEIF "$(CFG)" == "mysqldump - Win32 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqldump___Win32_classic" -# PROP BASE Intermediate_Dir "mysqldump___Win32_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqldump.exe" /libpath:"..\lib_release\\" -# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqldump.exe" /libpath:"..\lib_release\\" - -!ENDIF - -# Begin Target - -# Name "mysqldump - Win32 Release" -# Name "mysqldump - Win32 Debug" -# Name "mysqldump - Win32 classic" -# Begin Source File - -SOURCE=.\mysqldump.c - -!IF "$(CFG)" == "mysqldump - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldump - Win32 Debug" - -# ADD CPP /W3 -# SUBTRACT CPP /YX - -!ELSEIF "$(CFG)" == "mysqldump - Win32 classic" - -!ENDIF - -# End Source File -# End Target -# End Project diff --git a/VC++Files/client/mysqldump.vcproj b/VC++Files/client/mysqldump.vcproj deleted file mode 100644 index 3585374eea5..00000000000 --- a/VC++Files/client/mysqldump.vcproj +++ /dev/null @@ -1,259 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/client/mysqldump_ia64.dsp b/VC++Files/client/mysqldump_ia64.dsp deleted file mode 100644 index 79a7059cae5..00000000000 --- a/VC++Files/client/mysqldump_ia64.dsp +++ /dev/null @@ -1,136 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqldump" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysqldump - WinIA64 classic -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqldump_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqldump_ia64.mak" CFG="mysqldump - WinIA64 classic" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqldump - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqldump - WinIA64 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqldump - WinIA64 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqldump - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_release/mysqldump.exe" /libpath:"..\lib_release\\" /machine:IA64 - -!ELSEIF "$(CFG)" == "mysqldump - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "mysqldum" -# PROP BASE Intermediate_Dir "mysqldum" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../include" /I "../" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib /nologo /subsystem:console /debug /machine:IA64 -# ADD LINK32 ..\lib_debug\dbug.lib ..\lib_debug\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/mysqldump.exe" /libpath:"..\lib_debug\\" /machine:IA64 - -!ELSEIF "$(CFG)" == "mysqldump - WinIA64 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqldump___WinIA64_classic" -# PROP BASE Intermediate_Dir "mysqldump___WinIA64_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib /nologo /subsystem:console /out:"../client_release/mysqldump.exe" /libpath:"..\lib_release\\" /machine:IA64 -# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_classic/mysqldump.exe" /libpath:"..\lib_release\\" /machine:IA64 - -!ENDIF - -# Begin Target - -# Name "mysqldump - WinIA64 Release" -# Name "mysqldump - WinIA64 Debug" -# Name "mysqldump - WinIA64 classic" -# Begin Source File - -SOURCE=.\mysqldump.c - -!IF "$(CFG)" == "mysqldump - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldump - WinIA64 Debug" - -# ADD CPP /W3 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX - -!ELSEIF "$(CFG)" == "mysqldump - WinIA64 classic" - -!ENDIF - -# End Source File -# End Target -# End Project diff --git a/VC++Files/client/mysqlimport.dsp b/VC++Files/client/mysqlimport.dsp deleted file mode 100644 index 649ba0c0aad..00000000000 --- a/VC++Files/client/mysqlimport.dsp +++ /dev/null @@ -1,124 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqlimport" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysqlimport - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqlimport.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqlimport.mak" CFG="mysqlimport - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqlimport - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqlimport - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqlimport - Win32 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqlimport - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlimport.exe" /libpath:"..\lib_release\\" -# SUBTRACT LINK32 /incremental:yes - -!ELSEIF "$(CFG)" == "mysqlimport - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "mysqlimp" -# PROP BASE Intermediate_Dir "mysqlimp" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /I "../" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib setargv.obj ..\extra\yassl\Debug\yassl.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqlimport.exe" /pdbtype:sept /libpath:"..\lib_debug\\" - -!ELSEIF "$(CFG)" == "mysqlimport - Win32 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqlimport___Win32_classic" -# PROP BASE Intermediate_Dir "mysqlimport___Win32_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlimport.exe" /libpath:"..\lib_release\\" -# SUBTRACT BASE LINK32 /incremental:yes -# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqlimport.exe" /libpath:"..\lib_release\\" -# SUBTRACT LINK32 /incremental:yes - -!ENDIF - -# Begin Target - -# Name "mysqlimport - Win32 Release" -# Name "mysqlimport - Win32 Debug" -# Name "mysqlimport - Win32 classic" -# Begin Source File - -SOURCE=.\mysqlimport.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/client/mysqlimport.vcproj b/VC++Files/client/mysqlimport.vcproj deleted file mode 100644 index ef440c2fe5a..00000000000 --- a/VC++Files/client/mysqlimport.vcproj +++ /dev/null @@ -1,232 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/client/mysqlimport_ia64.dsp b/VC++Files/client/mysqlimport_ia64.dsp deleted file mode 100644 index c6f51c0ef6f..00000000000 --- a/VC++Files/client/mysqlimport_ia64.dsp +++ /dev/null @@ -1,124 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqlimport" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysqlimport - WinIA64 classic -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqlimport_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqlimport_ia64.mak" CFG="mysqlimport - WinIA64 classic" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqlimport - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqlimport - WinIA64 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqlimport - WinIA64 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqlimport - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_release/mysqlimport.exe" /libpath:"..\lib_release\\" /machine:IA64 - -!ELSEIF "$(CFG)" == "mysqlimport - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "mysqlimp" -# PROP BASE Intermediate_Dir "mysqlimp" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../include" /I "../" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64 -# ADD LINK32 setargv.obj ..\lib_debug\zlib.lib ..\lib_debug\dbug.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/mysqlimport.exe" /libpath:"..\lib_debug\\" /machine:IA64 - -!ELSEIF "$(CFG)" == "mysqlimport - WinIA64 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqlimport___WinIA64_classic" -# PROP BASE Intermediate_Dir "mysqlimport___WinIA64_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /out:"../client_release/mysqlimport.exe" /libpath:"..\lib_release\\" /machine:IA64 -# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_classic/mysqlimport.exe" /libpath:"..\lib_release\\" /machine:IA64 - -!ENDIF - -# Begin Target - -# Name "mysqlimport - WinIA64 Release" -# Name "mysqlimport - WinIA64 Debug" -# Name "mysqlimport - WinIA64 classic" -# Begin Source File - -SOURCE=.\mysqlimport.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/client/mysqlshow.dsp b/VC++Files/client/mysqlshow.dsp deleted file mode 100644 index 118964671c5..00000000000 --- a/VC++Files/client/mysqlshow.dsp +++ /dev/null @@ -1,121 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqlshow" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysqlshow - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqlshow.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqlshow.mak" CFG="mysqlshow - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqlshow - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqlshow - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqlshow - Win32 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqlshow - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlshow.exe" /libpath:"..\lib_release\\" - -!ELSEIF "$(CFG)" == "mysqlshow - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "mysqlsho" -# PROP BASE Intermediate_Dir "mysqlsho" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /I "../" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib ..\extra\yassl\Debug\yassl.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqlshow.exe" /pdbtype:sept /libpath:"..\lib_debug\\" - -!ELSEIF "$(CFG)" == "mysqlshow - Win32 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqlshow___Win32_classic" -# PROP BASE Intermediate_Dir "mysqlshow___Win32_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlshow.exe" /libpath:"..\lib_release\\" -# ADD LINK32 mysqlclient.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqlshow.exe" /libpath:"..\lib_release\\" - -!ENDIF - -# Begin Target - -# Name "mysqlshow - Win32 Release" -# Name "mysqlshow - Win32 Debug" -# Name "mysqlshow - Win32 classic" -# Begin Source File - -SOURCE=.\mysqlshow.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/client/mysqlshow.vcproj b/VC++Files/client/mysqlshow.vcproj deleted file mode 100644 index a0707680728..00000000000 --- a/VC++Files/client/mysqlshow.vcproj +++ /dev/null @@ -1,232 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/client/mysqlshow_ia64.dsp b/VC++Files/client/mysqlshow_ia64.dsp deleted file mode 100644 index 4995f3f9ae8..00000000000 --- a/VC++Files/client/mysqlshow_ia64.dsp +++ /dev/null @@ -1,124 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqlshow" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysqlshow - WinIA64 classic -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqlshow_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqlshow_ia64.mak" CFG="mysqlshow - WinIA64 classic" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqlshow - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqlshow - WinIA64 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqlshow - WinIA64 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqlshow - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_release/mysqlshow.exe" /libpath:"..\lib_release\\" /machine:IA64 - -!ELSEIF "$(CFG)" == "mysqlshow - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "mysqlsho" -# PROP BASE Intermediate_Dir "mysqlsho" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../include" /I "../" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64 -# ADD LINK32 ..\lib_debug\zlib.lib ..\lib_debug\dbug.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/mysqlshow.exe" /libpath:"..\lib_debug\\" /machine:IA64 - -!ELSEIF "$(CFG)" == "mysqlshow - WinIA64 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqlshow___WinIA64_classic" -# PROP BASE Intermediate_Dir "mysqlshow___WinIA64_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /out:"../client_release/mysqlshow.exe" /libpath:"..\lib_release\\" /machine:IA64 -# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_classic/mysqlshow.exe" /libpath:"..\lib_release\\" /machine:IA64 - -!ENDIF - -# Begin Target - -# Name "mysqlshow - WinIA64 Release" -# Name "mysqlshow - WinIA64 Debug" -# Name "mysqlshow - WinIA64 classic" -# Begin Source File - -SOURCE=.\mysqlshow.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/client/mysqlslap.vcproj b/VC++Files/client/mysqlslap.vcproj deleted file mode 100644 index 072c7957f11..00000000000 --- a/VC++Files/client/mysqlslap.vcproj +++ /dev/null @@ -1,233 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/client/mysqltest.dsp b/VC++Files/client/mysqltest.dsp deleted file mode 100644 index 5b96fbd8a41..00000000000 --- a/VC++Files/client/mysqltest.dsp +++ /dev/null @@ -1,125 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqltest" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysqltest - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqltest.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqltest.mak" CFG="mysqltest - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqltest - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqltest - Win32 classic" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqltest - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqltest - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir ".\debug" -# PROP BASE Intermediate_Dir ".\debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir ".\debug" -# PROP Intermediate_Dir ".\debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /I "../extra" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../" /Z7 /W3 /Od /G6 /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_WINDOWS" /D "_MBCS" /Fp".\debug/mysqltest.pch" /Fo".\debug/" /Fd".\debug/" /GZ /FD /c /GX -# ADD CPP /nologo /MTd /I "../extra" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../" /Z7 /W3 /Od /G6 /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_WINDOWS" /D "_MBCS" /Fp".\debug/mysqltest.pch" /Fo".\debug/" /Fd".\debug/" /GZ /FD /c /GX -# ADD BASE MTL /nologo /tlb".\debug\mysqltest.tlb" /win32 -# ADD MTL /nologo /tlb".\debug\mysqltest.tlb" /win32 -# ADD BASE RSC /l 1033 /d "_DEBUG" -# ADD RSC /l 1033 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib ..\extra\yassl\Debug\yassl.lib wsock32.lib mysys.lib regex.lib /nologo /out:"..\client_debug\mysqltest.exe" /incremental:no /libpath:"..\lib_debug\" /debug /pdb:".\debug\mysqltest.pdb" /pdbtype:sept /subsystem:console /MACHINE:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib ..\extra\yassl\Debug\yassl.lib wsock32.lib mysys.lib regex.lib /nologo /out:"..\client_debug\mysqltest.exe" /incremental:no /libpath:"..\lib_debug\" /debug /pdb:".\debug\mysqltest.pdb" /pdbtype:sept /subsystem:console /MACHINE:I386 - -!ELSEIF "$(CFG)" == "mysqltest - Win32 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir ".\classic" -# PROP BASE Intermediate_Dir ".\classic" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir ".\classic" -# PROP Intermediate_Dir ".\classic" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /I "../extra" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../" /W3 /Ob1 /G6 /D "_CONSOLE" /D "_WINDOWS" /D "LICENSE=Commercial" /D "DBUG_OFF" /D "NDEBUG" /D "_MBCS" /GF /Gy /Fp".\classic/mysqltest.pch" /Fo".\classic/" /Fd".\classic/" /FD /c /GX -# ADD CPP /nologo /MT /I "../extra" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../" /W3 /Ob1 /G6 /D "_CONSOLE" /D "_WINDOWS" /D "LICENSE=Commercial" /D "DBUG_OFF" /D "NDEBUG" /D "_MBCS" /GF /Gy /Fp".\classic/mysqltest.pch" /Fo".\classic/" /Fd".\classic/" /FD /c /GX -# ADD BASE MTL /nologo /tlb".\classic\mysqltest.tlb" /win32 -# ADD MTL /nologo /tlb".\classic\mysqltest.tlb" /win32 -# ADD BASE RSC /l 1033 /d "NDEBUG" -# ADD RSC /l 1033 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib ..\extra\yassl\Release\yassl.lib wsock32.lib mysys.lib regex.lib /nologo /out:"..\client_classic\mysqltest.exe" /incremental:no /libpath:"..\lib_release\" /pdb:".\classic\mysqltest.pdb" /pdbtype:sept /subsystem:console /MACHINE:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib ..\extra\yassl\Release\yassl.lib wsock32.lib mysys.lib regex.lib zlib.lib /nologo /out:"..\client_classic\mysqltest.exe" /incremental:no /libpath:"..\lib_release\" /pdb:".\classic\mysqltest.pdb" /pdbtype:sept /subsystem:console /MACHINE:I386 - -!ELSEIF "$(CFG)" == "mysqltest - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir ".\release" -# PROP BASE Intermediate_Dir ".\release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir ".\release" -# PROP Intermediate_Dir ".\release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /I "../extra" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../" /W3 /Ob1 /G6 /D "DBUG_OFF" /D "_CONSOLE" /D "_WINDOWS" /D "NDEBUG" /D "_MBCS" /GF /Gy /Fp".\release/mysqltest.pch" /Fo".\release/" /Fd".\release/" /FD /c /GX -# ADD CPP /nologo /MT /I "../extra" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../" /W3 /Ob1 /G6 /D "DBUG_OFF" /D "_CONSOLE" /D "_WINDOWS" /D "NDEBUG" /D "_MBCS" /GF /Gy /Fp".\release/mysqltest.pch" /Fo".\release/" /Fd".\release/" /FD /c /GX -# ADD BASE MTL /nologo /tlb".\release\mysqltest.tlb" /win32 -# ADD MTL /nologo /tlb".\release\mysqltest.tlb" /win32 -# ADD BASE RSC /l 1033 /d "NDEBUG" -# ADD RSC /l 1033 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib ..\extra\yassl\Release\yassl.lib wsock32.lib mysys.lib regex.lib /nologo /out:"..\client_release\mysqltest.exe" /incremental:no /libpath:"..\lib_release\" /pdb:".\release\mysqltest.pdb" /pdbtype:sept /subsystem:console /MACHINE:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib ..\extra\yassl\Release\yassl.lib wsock32.lib mysys.lib regex.lib zlib.lib /nologo /out:"..\client_release\mysqltest.exe" /incremental:no /libpath:"..\lib_release\" /pdb:".\release\mysqltest.pdb" /pdbtype:sept /subsystem:console /MACHINE:I386 - -!ENDIF - -# Begin Target - -# Name "mysqltest - Win32 Debug" -# Name "mysqltest - Win32 classic" -# Name "mysqltest - Win32 Release" -# Begin Source File - -SOURCE=..\libmysql\manager.c -# End Source File -# Begin Source File - -SOURCE=.\mysqltest.c -# End Source File -# End Target -# End Project - diff --git a/VC++Files/client/mysqltest.vcproj b/VC++Files/client/mysqltest.vcproj deleted file mode 100644 index 5c075740fbd..00000000000 --- a/VC++Files/client/mysqltest.vcproj +++ /dev/null @@ -1,264 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/client/mysqltest_ia64.dsp b/VC++Files/client/mysqltest_ia64.dsp deleted file mode 100644 index 86edb4ab177..00000000000 --- a/VC++Files/client/mysqltest_ia64.dsp +++ /dev/null @@ -1,197 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqltest" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=MYSQLTEST - WinIA64 RELEASE -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqltest_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqltest_ia64.mak" CFG="MYSQLTEST - WinIA64 RELEASE" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqltest - WinIA64 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqltest - WinIA64 classic" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqltest - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqltest - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir ".\debug" -# PROP BASE Intermediate_Dir ".\debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir ".\debug" -# PROP Intermediate_Dir ".\debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE MTL /nologo /tlb".\debug\mysqltest.tlb" /win64 -# ADD MTL /nologo /tlb".\debug\mysqltest.tlb" /win64 -# ADD BASE CPP /nologo /G6 /MTd /W3 /GX /Z7 /Od /I "../include" /I "../regex" /I "../" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_WINDOWS" /D "_MBCS" /GZ /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../include" /I "../regex" /I "../" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_WINDOWS" /D "_MBCS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib /nologo /subsystem:console /debug /out:"..\client_debug\mysqltest.exe" /libpath:"..\lib_debug\\" -# SUBTRACT BASE LINK32 /pdb:none -# ADD LINK32 ..\lib_debug\zlib.lib ..\lib_debug\dbug.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /incremental:no /debug /out:"..\client_debug\mysqltest.exe" /libpath:"..\lib_debug\\" /machine:IA64 -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "mysqltest - WinIA64 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir ".\classic" -# PROP BASE Intermediate_Dir ".\classic" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir ".\classic" -# PROP Intermediate_Dir ".\classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE MTL /nologo /tlb".\classic\mysqltest.tlb" /win64 -# ADD MTL /nologo /tlb".\classic\mysqltest.tlb" /win64 -# ADD BASE CPP /nologo /G6 /MT /W3 /GX /Ob1 /Gy /I "../include" /I "../regex" /I "../" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "NDEBUG" /D "_MBCS" /GF /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../regex" /I "../" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "NDEBUG" /D "_MBCS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /GF /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib /nologo /subsystem:console /out:"..\client_classic\mysqltest.exe" /libpath:"..\lib_release\\" -# SUBTRACT BASE LINK32 /pdb:none -# ADD LINK32 ..\lib_release\zlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"..\client_classic\mysqltest.exe" /libpath:"..\lib_release\\" /machine:IA64 -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "mysqltest - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir ".\release" -# PROP BASE Intermediate_Dir ".\release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir ".\release" -# PROP Intermediate_Dir ".\release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE MTL /nologo /tlb".\release\mysqltest.tlb" /win64 -# ADD MTL /nologo /tlb".\release\mysqltest.tlb" /win64 -# ADD BASE CPP /nologo /G6 /MT /W3 /GX /Ob1 /Gy /I "../include" /I "../regex" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_WINDOWS" /D "NDEBUG" /D "_MBCS" /GF /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../regex" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_WINDOWS" /D "NDEBUG" /D "_MBCS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /G2 /GF /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib /nologo /subsystem:console /out:"..\client_release\mysqltest.exe" /libpath:"..\lib_release\\" -# SUBTRACT BASE LINK32 /pdb:none -# ADD LINK32 ..\lib_release\zlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"..\client_release\mysqltest.exe" /libpath:"..\lib_release\\" /machine:IA64 -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "mysqltest - WinIA64 Debug" -# Name "mysqltest - WinIA64 classic" -# Name "mysqltest - WinIA64 Release" -# Begin Source File - -SOURCE=..\libmysql\manager.c -DEP_CPP_MANAG=\ - "..\include\config-netware.h"\ - "..\include\config-os2.h"\ - "..\include\config-win.h"\ - "..\include\errmsg.h"\ - "..\include\m_ctype.h"\ - "..\include\m_string.h"\ - "..\include\my_alloc.h"\ - "..\include\my_config.h"\ - "..\include\my_dbug.h"\ - "..\include\my_dir.h"\ - "..\include\my_global.h"\ - "..\include\my_list.h"\ - "..\include\my_net.h"\ - "..\include\my_pthread.h"\ - "..\include\my_sys.h"\ - "..\include\mysql.h"\ - "..\include\mysql_com.h"\ - "..\include\mysql_time.h"\ - "..\include\mysql_version.h"\ - "..\include\mysqld_error.h"\ - "..\include\mysys_err.h"\ - "..\include\raid.h"\ - "..\include\t_ctype.h"\ - "..\include\typelib.h"\ - "..\include\violite.h"\ - -# End Source File -# Begin Source File - -SOURCE=.\mysqltest.c -DEP_CPP_MYSQL=\ - "..\include\config-netware.h"\ - "..\include\config-os2.h"\ - "..\include\config-win.h"\ - "..\include\errmsg.h"\ - "..\include\hash.h"\ - "..\include\help_end.h"\ - "..\include\help_start.h"\ - "..\include\m_ctype.h"\ - "..\include\m_string.h"\ - "..\include\my_alloc.h"\ - "..\include\my_config.h"\ - "..\include\my_dbug.h"\ - "..\include\my_dir.h"\ - "..\include\my_getopt.h"\ - "..\include\my_global.h"\ - "..\include\my_list.h"\ - "..\include\my_net.h"\ - "..\include\my_pthread.h"\ - "..\include\my_sys.h"\ - "..\include\mysql.h"\ - "..\include\mysql_com.h"\ - "..\include\mysql_embed.h"\ - "..\include\mysql_time.h"\ - "..\include\mysql_version.h"\ - "..\include\mysqld_error.h"\ - "..\include\raid.h"\ - "..\include\sslopt-case.h"\ - "..\include\sslopt-longopts.h"\ - "..\include\sslopt-vars.h"\ - "..\include\t_ctype.h"\ - "..\include\typelib.h"\ - "..\include\violite.h"\ - "..\regex\regex.h"\ - -# End Source File -# End Target -# End Project diff --git a/VC++Files/comp_err/comp_err.dsp b/VC++Files/comp_err/comp_err.dsp deleted file mode 100644 index 5324e1aa7a0..00000000000 --- a/VC++Files/comp_err/comp_err.dsp +++ /dev/null @@ -1,59 +0,0 @@ -# Microsoft Developer Studio Project File - Name="comp_err" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=comp_err - Win32 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "comp_err.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "comp_err.mak" CFG="comp_err - Win32 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "comp_err - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /W3 /GX /O2 /I "..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCSN" /D "DBUG_OFF" /D "_WINDOWS" /D "__WIN__" /D "_MT" /YX /FD /c -# SUBTRACT CPP /WX /Fr -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\lib_release\mysys.lib wsock32.lib ..\lib_release\strings.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"LIBC.lib" /out:"../client_release/comp-err.exe" -# Begin Target - -# Name "comp_err - Win32 Release" -# Begin Source File - -SOURCE=..\extra\comp_err.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/comp_err/comp_err.vcproj b/VC++Files/comp_err/comp_err.vcproj deleted file mode 100644 index b12ef8b0af1..00000000000 --- a/VC++Files/comp_err/comp_err.vcproj +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/comp_err/comp_err_ia64.dsp b/VC++Files/comp_err/comp_err_ia64.dsp deleted file mode 100644 index 9d4e8bd5353..00000000000 --- a/VC++Files/comp_err/comp_err_ia64.dsp +++ /dev/null @@ -1,92 +0,0 @@ -# Microsoft Developer Studio Project File - Name="comp_err" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=COMP_ERR - WinIA64 DEBUG -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "comp_err_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "comp_err_ia64.mak" CFG="COMP_ERR - WinIA64 DEBUG" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "comp_err - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "comp_err - WinIA64 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" - -!IF "$(CFG)" == "comp_err - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -CPP=cl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c -# ADD CPP /nologo /W3 /Zi /O2 /I "..\include" /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCSN" /D "DBUG_OFF" /D "_WINDOWS" /D "__WIN__" /D "_MT" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /WX /Fr -RSC=rc.exe -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\lib_release\mysys.lib wsock32.lib ..\lib_release\strings.lib bufferoverflowU.lib /nologo /subsystem:console /nodefaultlib:"LIBC.lib" /out:"../client_release/comp-err.exe" /machine:IA64 - -!ELSEIF "$(CFG)" == "comp_err - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Ignore_Export_Lib 0 -CPP=cl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c -# ADD CPP /nologo /W3 /Zi /Od /I "..\include" /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCSN" /D "DBUG_OFF" /D "_WINDOWS" /D "__WIN__" /D "_MT" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /WX /Fr -MTL=midl.exe -RSC=rc.exe -# ADD BASE RSC /l 0x416 /d "_DEBUG" -# ADD RSC /l 0x416 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\lib_release\mysys.lib wsock32.lib ..\lib_release\strings.lib bufferoverflowU.lib /nologo /subsystem:console /nodefaultlib:"LIBC.lib" /out:"../client_release/comp-err.exe" /machine:IA64 - -!ENDIF - -# Begin Target - -# Name "comp_err - WinIA64 Release" -# Name "comp_err - WinIA64 Debug" -# Begin Source File - -SOURCE=..\extra\comp_err.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/contrib/asm386/zlibvc.dsp b/VC++Files/contrib/asm386/zlibvc.dsp deleted file mode 100644 index 63d8fee6511..00000000000 --- a/VC++Files/contrib/asm386/zlibvc.dsp +++ /dev/null @@ -1,651 +0,0 @@ -# Microsoft Developer Studio Project File - Name="zlibvc" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 -# TARGTYPE "Win32 (ALPHA) Dynamic-Link Library" 0x0602 - -CFG=zlibvc - Win32 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "zlibvc.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "zlibvc.mak" CFG="zlibvc - Win32 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "zlibvc - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "zlibvc - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "zlibvc - Win32 ReleaseAxp" (based on\ - "Win32 (ALPHA) Dynamic-Link Library") -!MESSAGE "zlibvc - Win32 ReleaseWithoutAsm" (based on\ - "Win32 (x86) Dynamic-Link Library") -!MESSAGE "zlibvc - Win32 ReleaseWithoutCrtdll" (based on\ - "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir ".\Release" -# PROP BASE Intermediate_Dir ".\Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir ".\Release" -# PROP Intermediate_Dir ".\Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -CPP=cl.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /D "DYNAMIC_CRC_TABLE" /D "ASMV" /FAcs /FR /FD /c -# SUBTRACT CPP /YX -MTL=midl.exe -# ADD BASE MTL /nologo /D "NDEBUG" /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -RSC=rc.exe -# ADD BASE RSC /l 0x40c /d "NDEBUG" -# ADD RSC /l 0x40c /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 gvmat32.obj kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib crtdll.lib /nologo /subsystem:windows /dll /map /machine:I386 /nodefaultlib /out:".\Release\zlib.dll" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir ".\Debug" -# PROP BASE Intermediate_Dir ".\Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir ".\Debug" -# PROP Intermediate_Dir ".\Debug" -# PROP Target_Dir "" -CPP=cl.exe -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /FD /c -# SUBTRACT CPP /YX -MTL=midl.exe -# ADD BASE MTL /nologo /D "_DEBUG" /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -RSC=rc.exe -# ADD BASE RSC /l 0x40c /d "_DEBUG" -# ADD RSC /l 0x40c /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:".\Debug\zlib.dll" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "zlibvc__" -# PROP BASE Intermediate_Dir "zlibvc__" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "zlibvc__" -# PROP Intermediate_Dir "zlibvc__" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -CPP=cl.exe -# ADD BASE CPP /nologo /MT /Gt0 /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /D "DYNAMIC_CRC_TABLE" /FAcs /FR /YX /FD /c -# ADD CPP /nologo /MT /Gt0 /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /D "DYNAMIC_CRC_TABLE" /FAcs /FR /FD /c -# SUBTRACT CPP /YX -RSC=rc.exe -# ADD BASE RSC /l 0x40c /d "NDEBUG" -# ADD RSC /l 0x40c /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 crtdll.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /map /machine:ALPHA /nodefaultlib /out:".\Release\zlib.dll" -# SUBTRACT BASE LINK32 /pdb:none -# ADD LINK32 crtdll.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /map /machine:ALPHA /nodefaultlib /out:"zlibvc__\zlib.dll" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "zlibvc_0" -# PROP BASE Intermediate_Dir "zlibvc_0" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "zlibvc_0" -# PROP Intermediate_Dir "zlibvc_0" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -CPP=cl.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /D "DYNAMIC_CRC_TABLE" /FAcs /FR /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /D "DYNAMIC_CRC_TABLE" /FAcs /FR /FD /c -# SUBTRACT CPP /YX -MTL=midl.exe -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -RSC=rc.exe -# ADD BASE RSC /l 0x40c /d "NDEBUG" -# ADD RSC /l 0x40c /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib crtdll.lib /nologo /subsystem:windows /dll /map /machine:I386 /nodefaultlib /out:".\Release\zlib.dll" -# SUBTRACT BASE LINK32 /pdb:none -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib crtdll.lib /nologo /subsystem:windows /dll /map /machine:I386 /nodefaultlib /out:".\zlibvc_0\zlib.dll" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "zlibvc_1" -# PROP BASE Intermediate_Dir "zlibvc_1" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "zlibvc_1" -# PROP Intermediate_Dir "zlibvc_1" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -CPP=cl.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /D "DYNAMIC_CRC_TABLE" /D "ASMV" /FAcs /FR /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /D "DYNAMIC_CRC_TABLE" /D "ASMV" /FAcs /FR /FD /c -# SUBTRACT CPP /YX -MTL=midl.exe -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -RSC=rc.exe -# ADD BASE RSC /l 0x40c /d "NDEBUG" -# ADD RSC /l 0x40c /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 gvmat32.obj kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib crtdll.lib /nologo /subsystem:windows /dll /map /machine:I386 /nodefaultlib /out:".\Release\zlib.dll" -# SUBTRACT BASE LINK32 /pdb:none -# ADD LINK32 gvmat32.obj kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib crtdll.lib /nologo /subsystem:windows /dll /map /machine:I386 /nodefaultlib /out:".\zlibvc_1\zlib.dll" -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "zlibvc - Win32 Release" -# Name "zlibvc - Win32 Debug" -# Name "zlibvc - Win32 ReleaseAxp" -# Name "zlibvc - Win32 ReleaseWithoutAsm" -# Name "zlibvc - Win32 ReleaseWithoutCrtdll" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90" -# Begin Source File - -SOURCE=.\adler32.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_ADLER=\ - ".\zconf.h"\ - ".\zlib.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\compress.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_COMPR=\ - ".\zconf.h"\ - ".\zlib.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\crc32.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_CRC32=\ - ".\zconf.h"\ - ".\zlib.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\deflate.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_DEFLA=\ - ".\deflate.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\gvmat32c.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\gzio.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_GZIO_=\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\infblock.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_INFBL=\ - ".\infblock.h"\ - ".\infcodes.h"\ - ".\inftrees.h"\ - ".\infutil.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\infcodes.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_INFCO=\ - ".\infblock.h"\ - ".\infcodes.h"\ - ".\inffast.h"\ - ".\inftrees.h"\ - ".\infutil.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\inffast.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_INFFA=\ - ".\infblock.h"\ - ".\infcodes.h"\ - ".\inffast.h"\ - ".\inftrees.h"\ - ".\infutil.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\inflate.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_INFLA=\ - ".\infblock.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\inftrees.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_INFTR=\ - ".\inftrees.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\infutil.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_INFUT=\ - ".\infblock.h"\ - ".\infcodes.h"\ - ".\inftrees.h"\ - ".\infutil.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\trees.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_TREES=\ - ".\deflate.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\uncompr.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_UNCOM=\ - ".\zconf.h"\ - ".\zlib.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\unzip.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\zip.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\zlib.rc -# End Source File -# Begin Source File - -SOURCE=.\zlibvc.def -# End Source File -# Begin Source File - -SOURCE=.\zutil.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_ZUTIL=\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd" -# Begin Source File - -SOURCE=.\deflate.h -# End Source File -# Begin Source File - -SOURCE=.\infblock.h -# End Source File -# Begin Source File - -SOURCE=.\infcodes.h -# End Source File -# Begin Source File - -SOURCE=.\inffast.h -# End Source File -# Begin Source File - -SOURCE=.\inftrees.h -# End Source File -# Begin Source File - -SOURCE=.\infutil.h -# End Source File -# Begin Source File - -SOURCE=.\zconf.h -# End Source File -# Begin Source File - -SOURCE=.\zlib.h -# End Source File -# Begin Source File - -SOURCE=.\zutil.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/contrib/asm386/zlibvc.dsw b/VC++Files/contrib/asm386/zlibvc.dsw deleted file mode 100644 index 041a77a06a2..00000000000 --- a/VC++Files/contrib/asm386/zlibvc.dsw +++ /dev/null @@ -1,40 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "zlibstat"=.\zlibstat.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "zlibvc"=.\zlibvc.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### diff --git a/VC++Files/contrib/minizip/zlibvc.dsp b/VC++Files/contrib/minizip/zlibvc.dsp deleted file mode 100644 index 63d8fee6511..00000000000 --- a/VC++Files/contrib/minizip/zlibvc.dsp +++ /dev/null @@ -1,651 +0,0 @@ -# Microsoft Developer Studio Project File - Name="zlibvc" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 -# TARGTYPE "Win32 (ALPHA) Dynamic-Link Library" 0x0602 - -CFG=zlibvc - Win32 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "zlibvc.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "zlibvc.mak" CFG="zlibvc - Win32 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "zlibvc - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "zlibvc - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "zlibvc - Win32 ReleaseAxp" (based on\ - "Win32 (ALPHA) Dynamic-Link Library") -!MESSAGE "zlibvc - Win32 ReleaseWithoutAsm" (based on\ - "Win32 (x86) Dynamic-Link Library") -!MESSAGE "zlibvc - Win32 ReleaseWithoutCrtdll" (based on\ - "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir ".\Release" -# PROP BASE Intermediate_Dir ".\Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir ".\Release" -# PROP Intermediate_Dir ".\Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -CPP=cl.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /D "DYNAMIC_CRC_TABLE" /D "ASMV" /FAcs /FR /FD /c -# SUBTRACT CPP /YX -MTL=midl.exe -# ADD BASE MTL /nologo /D "NDEBUG" /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -RSC=rc.exe -# ADD BASE RSC /l 0x40c /d "NDEBUG" -# ADD RSC /l 0x40c /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 gvmat32.obj kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib crtdll.lib /nologo /subsystem:windows /dll /map /machine:I386 /nodefaultlib /out:".\Release\zlib.dll" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir ".\Debug" -# PROP BASE Intermediate_Dir ".\Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir ".\Debug" -# PROP Intermediate_Dir ".\Debug" -# PROP Target_Dir "" -CPP=cl.exe -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /FD /c -# SUBTRACT CPP /YX -MTL=midl.exe -# ADD BASE MTL /nologo /D "_DEBUG" /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -RSC=rc.exe -# ADD BASE RSC /l 0x40c /d "_DEBUG" -# ADD RSC /l 0x40c /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:".\Debug\zlib.dll" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "zlibvc__" -# PROP BASE Intermediate_Dir "zlibvc__" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "zlibvc__" -# PROP Intermediate_Dir "zlibvc__" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -CPP=cl.exe -# ADD BASE CPP /nologo /MT /Gt0 /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /D "DYNAMIC_CRC_TABLE" /FAcs /FR /YX /FD /c -# ADD CPP /nologo /MT /Gt0 /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /D "DYNAMIC_CRC_TABLE" /FAcs /FR /FD /c -# SUBTRACT CPP /YX -RSC=rc.exe -# ADD BASE RSC /l 0x40c /d "NDEBUG" -# ADD RSC /l 0x40c /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 crtdll.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /map /machine:ALPHA /nodefaultlib /out:".\Release\zlib.dll" -# SUBTRACT BASE LINK32 /pdb:none -# ADD LINK32 crtdll.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /map /machine:ALPHA /nodefaultlib /out:"zlibvc__\zlib.dll" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "zlibvc_0" -# PROP BASE Intermediate_Dir "zlibvc_0" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "zlibvc_0" -# PROP Intermediate_Dir "zlibvc_0" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -CPP=cl.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /D "DYNAMIC_CRC_TABLE" /FAcs /FR /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /D "DYNAMIC_CRC_TABLE" /FAcs /FR /FD /c -# SUBTRACT CPP /YX -MTL=midl.exe -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -RSC=rc.exe -# ADD BASE RSC /l 0x40c /d "NDEBUG" -# ADD RSC /l 0x40c /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib crtdll.lib /nologo /subsystem:windows /dll /map /machine:I386 /nodefaultlib /out:".\Release\zlib.dll" -# SUBTRACT BASE LINK32 /pdb:none -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib crtdll.lib /nologo /subsystem:windows /dll /map /machine:I386 /nodefaultlib /out:".\zlibvc_0\zlib.dll" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "zlibvc_1" -# PROP BASE Intermediate_Dir "zlibvc_1" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "zlibvc_1" -# PROP Intermediate_Dir "zlibvc_1" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -CPP=cl.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /D "DYNAMIC_CRC_TABLE" /D "ASMV" /FAcs /FR /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /D "DYNAMIC_CRC_TABLE" /D "ASMV" /FAcs /FR /FD /c -# SUBTRACT CPP /YX -MTL=midl.exe -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -RSC=rc.exe -# ADD BASE RSC /l 0x40c /d "NDEBUG" -# ADD RSC /l 0x40c /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 gvmat32.obj kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib crtdll.lib /nologo /subsystem:windows /dll /map /machine:I386 /nodefaultlib /out:".\Release\zlib.dll" -# SUBTRACT BASE LINK32 /pdb:none -# ADD LINK32 gvmat32.obj kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib crtdll.lib /nologo /subsystem:windows /dll /map /machine:I386 /nodefaultlib /out:".\zlibvc_1\zlib.dll" -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "zlibvc - Win32 Release" -# Name "zlibvc - Win32 Debug" -# Name "zlibvc - Win32 ReleaseAxp" -# Name "zlibvc - Win32 ReleaseWithoutAsm" -# Name "zlibvc - Win32 ReleaseWithoutCrtdll" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90" -# Begin Source File - -SOURCE=.\adler32.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_ADLER=\ - ".\zconf.h"\ - ".\zlib.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\compress.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_COMPR=\ - ".\zconf.h"\ - ".\zlib.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\crc32.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_CRC32=\ - ".\zconf.h"\ - ".\zlib.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\deflate.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_DEFLA=\ - ".\deflate.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\gvmat32c.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\gzio.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_GZIO_=\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\infblock.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_INFBL=\ - ".\infblock.h"\ - ".\infcodes.h"\ - ".\inftrees.h"\ - ".\infutil.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\infcodes.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_INFCO=\ - ".\infblock.h"\ - ".\infcodes.h"\ - ".\inffast.h"\ - ".\inftrees.h"\ - ".\infutil.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\inffast.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_INFFA=\ - ".\infblock.h"\ - ".\infcodes.h"\ - ".\inffast.h"\ - ".\inftrees.h"\ - ".\infutil.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\inflate.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_INFLA=\ - ".\infblock.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\inftrees.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_INFTR=\ - ".\inftrees.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\infutil.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_INFUT=\ - ".\infblock.h"\ - ".\infcodes.h"\ - ".\inftrees.h"\ - ".\infutil.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\trees.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_TREES=\ - ".\deflate.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\uncompr.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_UNCOM=\ - ".\zconf.h"\ - ".\zlib.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\unzip.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\zip.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\zlib.rc -# End Source File -# Begin Source File - -SOURCE=.\zlibvc.def -# End Source File -# Begin Source File - -SOURCE=.\zutil.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_ZUTIL=\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd" -# Begin Source File - -SOURCE=.\deflate.h -# End Source File -# Begin Source File - -SOURCE=.\infblock.h -# End Source File -# Begin Source File - -SOURCE=.\infcodes.h -# End Source File -# Begin Source File - -SOURCE=.\inffast.h -# End Source File -# Begin Source File - -SOURCE=.\inftrees.h -# End Source File -# Begin Source File - -SOURCE=.\infutil.h -# End Source File -# Begin Source File - -SOURCE=.\zconf.h -# End Source File -# Begin Source File - -SOURCE=.\zlib.h -# End Source File -# Begin Source File - -SOURCE=.\zutil.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/contrib/minizip/zlibvc.dsw b/VC++Files/contrib/minizip/zlibvc.dsw deleted file mode 100644 index 041a77a06a2..00000000000 --- a/VC++Files/contrib/minizip/zlibvc.dsw +++ /dev/null @@ -1,40 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "zlibstat"=.\zlibstat.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "zlibvc"=.\zlibvc.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### diff --git a/VC++Files/copy_mysql_files.bat b/VC++Files/copy_mysql_files.bat deleted file mode 100644 index 172075e0adf..00000000000 --- a/VC++Files/copy_mysql_files.bat +++ /dev/null @@ -1,79 +0,0 @@ -REM stop any conflicting service - -net stop mysql - -REM Copy binaries to c:\mysql -REM (We assume we are in build root when executing this script) - -copy lib_debug\libmysql.* c:\mysql\lib\debug -copy lib_debug\zlib.* c:\mysql\lib\debug -copy lib_debug\mysqlclient.lib c:\mysql\lib\debug - -copy lib_release\mysqlclient.lib c:\mysql\lib\opt -copy lib_release\libmysql.* c:\mysql\lib\opt -copy lib_release\zlib.* c:\mysql\lib\opt - -IF "%1"=="classic" goto CLASSIC -IF "%1"=="pro" goto PRO - -REM GPL binaries - -copy client_release\*.exe c:\mysql\bin -copy client_debug\mysqld.exe c:\mysql\bin - -goto REST - -:CLASSIC -REM Classic binaries - -copy client_release\*.exe c:\mysql\bin -copy client_classic\*.exe c:\mysql\bin -copy client_debug\mysqld.exe c:\mysql\bin\mysqld-debug.exe -copy lib_classic\*.* c:\mysql\lib\opt - -goto REST - -:PRO -REM Pro binaries - -copy client_release\*.exe c:\mysql\bin -copy client_classic\*.exe c:\mysql\bin -copy client_pro\*.exe c:\mysql\bin -copy client_debug\mysqld.exe c:\mysql\bin\mysqld-debug.exe -copy lib_pro\*.* c:\mysql\lib\opt - -:REST - -REM -REM Copy include files -REM - -copy include\mysql*.h c:\mysql\include -copy include\errmsg.h c:\mysql\include -copy include\my_sys.h c:\mysql\include -copy include\my_list.h c:\mysql\include -copy include\my_pthread.h c:\mysql\include -copy include\my_dbug.h c:\mysql\include -copy include\m_string.h c:\mysql\include -copy include\m_ctype.h c:\mysql\include -copy include\raid.h c:\mysql\include -copy include\conf*.h c:\mysql\include -copy include\my_global.h c:\mysql\include\my_global.h -copy libmysql\libmysql.def c:\mysql\include - -REM Copy test files - -copy libmysqltest\*.* c:\mysql\examples\libmysqltest -copy libmysqltest\release\myTest.exe c:\mysql\examples\libmysqltest - -REM Copy share, docs etc - -xcopy share\*.* c:\mysql\share /E /Y -xcopy scripts\*.* c:\mysql\scripts /E /Y -xcopy docs\*.* c:\mysql\docs /E /Y -copy docs\readme c:\mysql\ - -REM Copy privilege tables (Delete old ones as they may be from a newer version) - -del c:\mysql\data\mysql\*.* /Q -xcopy data\mysql\*.* c:\mysql\data\mysql /E /Y diff --git a/VC++Files/dbug/dbug.dsp b/VC++Files/dbug/dbug.dsp deleted file mode 100644 index f2962848939..00000000000 --- a/VC++Files/dbug/dbug.dsp +++ /dev/null @@ -1,125 +0,0 @@ -# Microsoft Developer Studio Project File - Name="dbug" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=dbug - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "dbug.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "dbug.mak" CFG="dbug - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "dbug - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "dbug - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "dbug - Win32 TLS_DEBUG" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "dbug - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_release\dbug.lib" - -!ELSEIF "$(CFG)" == "dbug - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../include" /D "__WIN32__" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_debug\dbug.lib" - -!ELSEIF "$(CFG)" == "dbug - Win32 TLS_DEBUG" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "dbug___Win32_TLS_DEBUG" -# PROP BASE Intermediate_Dir "dbug___Win32_TLS_DEBUG" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "dbug___Win32_TLS_DEBUG" -# PROP Intermediate_Dir "dbug___Win32_TLS_DEBUG" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../include" /D "__WIN32__" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../include" /D "__WIN32__" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_TLS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\lib_debug\dbug_tls.lib" -# ADD LIB32 /nologo /out:"..\lib_debug\dbug_tls.lib" - -!ENDIF - -# Begin Target - -# Name "dbug - Win32 Release" -# Name "dbug - Win32 Debug" -# Name "dbug - Win32 TLS_DEBUG" -# Begin Source File - -SOURCE=.\dbug.c -# End Source File -# Begin Source File - -SOURCE=.\factorial.c -# End Source File -# Begin Source File - -SOURCE=.\sanity.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/dbug/dbug.dsw b/VC++Files/dbug/dbug.dsw deleted file mode 100644 index b1e978b2c8f..00000000000 --- a/VC++Files/dbug/dbug.dsw +++ /dev/null @@ -1,28 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "dbug"=".\dbug.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### diff --git a/VC++Files/dbug/dbug.vcproj b/VC++Files/dbug/dbug.vcproj deleted file mode 100644 index f958ea237ba..00000000000 --- a/VC++Files/dbug/dbug.vcproj +++ /dev/null @@ -1,249 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/dbug/dbug_ia64.dsp b/VC++Files/dbug/dbug_ia64.dsp deleted file mode 100644 index 70a32279d20..00000000000 --- a/VC++Files/dbug/dbug_ia64.dsp +++ /dev/null @@ -1,125 +0,0 @@ -# Microsoft Developer Studio Project File - Name="dbug" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=dbug - WinIA64 TLS_DEBUG -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "dbug.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "dbug.mak" CFG="dbug - WinIA64 TLS_DEBUG" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "dbug - WinIA64 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "dbug - WinIA64 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "dbug - WinIA64 TLS_DEBUG" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "dbug - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_release\dbug.lib" - -!ELSEIF "$(CFG)" == "dbug - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN64" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /GF /I "../include" /D "__WIN64__" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_debug\dbug.lib" - -!ELSEIF "$(CFG)" == "dbug - WinIA64 TLS_DEBUG" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "dbug___WinIA64_TLS_DEBUG" -# PROP BASE Intermediate_Dir "dbug___WinIA64_TLS_DEBUG" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "dbug___WinIA64_TLS_DEBUG" -# PROP Intermediate_Dir "dbug___WinIA64_TLS_DEBUG" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MTd /W3 /Z7 /Od /GF /I "../include" /D "__WIN64__" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MTd /W3 /Zi /O2 /I "../include" /D "__WIN64__" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_TLS" /D "_IA64_" /D "WinIA64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\lib_debug\dbug_tls.lib" -# ADD LIB32 /nologo /out:"..\lib_debug\dbug_tls.lib" - -!ENDIF - -# Begin Target - -# Name "dbug - WinIA64 Release" -# Name "dbug - WinIA64 Debug" -# Name "dbug - WinIA64 TLS_DEBUG" -# Begin Source File - -SOURCE=.\dbug.c -# End Source File -# Begin Source File - -SOURCE=.\factorial.c -# End Source File -# Begin Source File - -SOURCE=.\sanity.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/examples/udf_example/udf_example.def b/VC++Files/examples/udf_example/udf_example.def deleted file mode 100644 index 9764343e5f2..00000000000 --- a/VC++Files/examples/udf_example/udf_example.def +++ /dev/null @@ -1,18 +0,0 @@ -LIBRARY MYUDF -DESCRIPTION 'MySQL Sample for UDF' -VERSION 1.0 -EXPORTS - metaphon_init - metaphon_deinit - metaphon - myfunc_double_init - myfunc_double - myfunc_int - sequence_init - sequence_deinit - sequence - avgcost_init - avgcost_deinit - avgcost_reset - avgcost_add - avgcost diff --git a/VC++Files/examples/udf_example/udf_example.dsp b/VC++Files/examples/udf_example/udf_example.dsp deleted file mode 100644 index bfe4d76bcc7..00000000000 --- a/VC++Files/examples/udf_example/udf_example.dsp +++ /dev/null @@ -1,111 +0,0 @@ -# Microsoft Developer Studio Project File - Name="udf_example" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=udf_example - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "udf_example.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "udf_example.mak" CFG="udf_example - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "udf_example - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "udf_example - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "udf_example - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "UDF_EXAMPLE_EXPORTS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "UDF_EXAMPLE_EXPORTS" /D "HAVE_DLOPEN" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\lib\opt\strings.lib /nologo /dll /machine:I386 /out:"Release/myudf.dll" - -!ELSEIF "$(CFG)" == "udf_example - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "UDF_EXAMPLE_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "UDF_EXAMPLE_EXPORTS" /D "HAVE_DLOPEN" /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x416 /d "_DEBUG" -# ADD RSC /l 0x416 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\lib\debug\strings.lib /nologo /dll /debug /machine:I386 /out:"Debug/myudf.dll" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "udf_example - Win32 Release" -# Name "udf_example - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\udf_example.cpp -# End Source File -# Begin Source File - -SOURCE=.\udf_example.def -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/examples/udf_example/udf_example.dsw b/VC++Files/examples/udf_example/udf_example.dsw deleted file mode 100644 index 6716e107f6a..00000000000 --- a/VC++Files/examples/udf_example/udf_example.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "udf_example"=.\udf_example.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/VC++Files/fix-project-files b/VC++Files/fix-project-files deleted file mode 100755 index b63ceab318a..00000000000 --- a/VC++Files/fix-project-files +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -# -# Change linefeed -> return+linefeed for all VC++ project files -# - -find . \( -name "*.dsp" -o -name "*.dsw" \) -print | grep -v "SCCS" | xargs replace '\r\$' ' ' '\$' ' ' -- diff --git a/VC++Files/libmysql/libmysql.dsp b/VC++Files/libmysql/libmysql.dsp deleted file mode 100644 index e17bee12d1b..00000000000 --- a/VC++Files/libmysql/libmysql.dsp +++ /dev/null @@ -1,569 +0,0 @@ -# Microsoft Developer Studio Project File - Name="libmysql" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=libmysql - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "libmysql.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "libmysql.mak" CFG="libmysql - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "libmysql - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "libmysql - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "libmysql - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "." /I "..\include" /I "../zlib" /I "../extra/yassl/include" /D "DBUG_OFF" /D "_WINDOWS" /D "USE_TLS" /D "NDEBUG" /D "MYSQL_CLIENT" /FD /c -# SUBTRACT CPP /YX -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:windows /dll /machine:I386 /def:"libmysql.def" /out:"..\lib_release\libmysql.dll" /libpath:"." /libpath:"..\lib_release" -# SUBTRACT LINK32 /pdb:none -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Move DLL export lib -PostBuild_Cmds=xcopy release\libmysql.lib ..\lib_release /y -# End Special Build Tool - -!ELSEIF "$(CFG)" == "libmysql - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "." /I "..\include" /I "../zlib" /I "../extra/yassl/include" /D "_DEBUG" /D "_WINDOWS" /D "SAFE_MUTEX" /D "USE_TLS" /D "MYSQL_CLIENT" /FD /c -# SUBTRACT CPP /YX -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 zlib.lib mysys.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\extra\yassl\Debug\yassl.lib /nologo /subsystem:windows /dll /incremental:no /map /debug /machine:I386 /def:"libmysql.def" /out:"..\lib_debug\libmysql.dll" /pdbtype:sept /libpath:"." /libpath:"..\lib_debug" -# SUBTRACT LINK32 /pdb:none -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Move DLL export lib -PostBuild_Cmds=xcopy ..\lib_debug\libmysql.dll %windir%\system32\ /y xcopy debug\libmysql.lib ..\lib_debug\ /y -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "libmysql - Win32 Release" -# Name "libmysql - Win32 Debug" -# Begin Source File - -SOURCE=..\mysys\array.c -# End Source File -# Begin Source File - -SOURCE=..\strings\bchange.c -# End Source File -# Begin Source File - -SOURCE=..\strings\bmove.c -# End Source File -# Begin Source File - -SOURCE=..\strings\bmove_upp.c -# End Source File -# Begin Source File - -SOURCE="..\mysys\charset-def.c" -# End Source File -# Begin Source File - -SOURCE=..\mysys\charset.c -# End Source File -# Begin Source File - -SOURCE=.\client.c -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-big5.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-bin.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-cp932.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-czech.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-euc_kr.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-eucjpms.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-extra.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-gb2312.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-gbk.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-latin1.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-mb.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-simple.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-sjis.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-tis620.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-uca.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-ucs2.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-ujis.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-utf8.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-win1250ch.c" -# End Source File -# Begin Source File - -SOURCE=..\strings\ctype.c -# End Source File -# Begin Source File - -SOURCE=..\dbug\dbug.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\default.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\default_modify.c -# End Source File -# Begin Source File - -SOURCE=.\dll.c -# End Source File -# Begin Source File - -SOURCE=.\errmsg.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\errors.c -# End Source File -# Begin Source File - -SOURCE=.\get_password.c -# End Source File -# Begin Source File - -SOURCE=..\strings\int2str.c -# End Source File -# Begin Source File - -SOURCE=..\strings\is_prefix.c -# End Source File -# Begin Source File - -SOURCE=.\libmysql.c -# End Source File -# Begin Source File - -SOURCE=.\Libmysql.def -# End Source File -# Begin Source File - -SOURCE=..\mysys\list.c -# End Source File -# Begin Source File - -SOURCE=..\strings\llstr.c -# End Source File -# Begin Source File - -SOURCE=..\strings\longlong2str.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_dirname.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_fn_ext.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_format.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_loadpath.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_pack.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_path.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_unixpath.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_wcomp.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mulalloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_access.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_alloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_chsize.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_compress.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_create.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_delete.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_div.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_error.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_fopen.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_fstream.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_gethostbyname.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_getopt.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_getwd.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_init.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_lib.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_malloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_messnc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_net.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_once.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_open.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_pthread.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_read.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_realloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_rename.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_seek.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_static.c -# End Source File -# Begin Source File - -SOURCE=..\strings\my_strtoll10.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_symlink.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_symlink2.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_thr_init.c -# End Source File -# Begin Source File - -SOURCE=..\strings\my_vsnprintf.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_wincond.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_winthread.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_write.c -# End Source File -# Begin Source File - -SOURCE=..\client\mysys_priv.h -# End Source File -# Begin Source File - -SOURCE=..\sql\net_serv.cpp -# End Source File -# Begin Source File - -SOURCE=.\pack.c -# End Source File -# Begin Source File - -SOURCE=.\my_time.c -# End Source File -# Begin Source File - -SOURCE=.\password.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\safemalloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\sha1.c -# End Source File -# Begin Source File - -SOURCE=..\client\sql_string.cpp -# End Source File -# Begin Source File - -SOURCE=..\client\sql_string.h -# End Source File -# Begin Source File - -SOURCE=..\strings\str2int.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strcend.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strcont.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strend.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strfill.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\string.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strinstr.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strmake.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strmov.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strnlen.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strnmov.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strtod.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strtoll.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strxmov.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strxnmov.c -# End Source File -# Begin Source File - -SOURCE=..\strings\str_alloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\thr_mutex.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\typelib.c -# End Source File -# Begin Source File - -SOURCE=..\vio\vio.c -# End Source File -# Begin Source File - -SOURCE=..\vio\viosocket.c -# End Source File -# Begin Source File - -SOURCE=..\vio\viossl.c -# End Source File -# Begin Source File - -SOURCE=..\vio\viosslfactories.c -# End Source File -# Begin Source File - -SOURCE=..\strings\xml.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/libmysql/libmysql.dsw b/VC++Files/libmysql/libmysql.dsw deleted file mode 100644 index 36d5b9b330b..00000000000 --- a/VC++Files/libmysql/libmysql.dsw +++ /dev/null @@ -1,28 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "libmysql"=".\libmysql.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### diff --git a/VC++Files/libmysql/libmysql.vcproj b/VC++Files/libmysql/libmysql.vcproj deleted file mode 100644 index 6161a96b5fc..00000000000 --- a/VC++Files/libmysql/libmysql.vcproj +++ /dev/null @@ -1,2298 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/libmysql/libmysql_ia64.dsp b/VC++Files/libmysql/libmysql_ia64.dsp deleted file mode 100644 index dc8778cfe23..00000000000 --- a/VC++Files/libmysql/libmysql_ia64.dsp +++ /dev/null @@ -1,556 +0,0 @@ -# Microsoft Developer Studio Project File - Name="libmysql" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=libmysql - WinIA64 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "libmysql_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "libmysql_ia64.mak" CFG="libmysql - WinIA64 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "libmysql - WinIA64 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "libmysql - WinIA64 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "libmysql - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "." /I "..\include" /I "../zlib" /D "DBUG_OFF" /D "_WINDOWS" /D "USE_TLS" /D "NDEBUG" /D "MYSQL_CLIENT" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win64 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win64 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:IA64 -# ADD LINK32 zlib.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:windows /dll /def:"libmysql.def" /out:"..\lib_release\libmysql.dll" /libpath:"." /libpath:"..\lib_release" /machine:IA64 -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Move DLL export lib -PostBuild_Cmds=xcopy release\libmysql.lib ..\lib_release /y -# End Special Build Tool - -!ELSEIF "$(CFG)" == "libmysql - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN64" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "." /I "..\include" /I "../zlib" /D "_DEBUG" /D "_WINDOWS" /D "SAFE_MUTEX" /D "USE_TLS" /D "MYSQL_CLIENT" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win64 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win64 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:IA64 -# ADD LINK32 zlib.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:windows /dll /incremental:no /map /debug /def:"libmysql.def" /out:"..\lib_debug\libmysql.dll" /libpath:"." /libpath:"..\lib_debug" /machine:IA64 -# SUBTRACT LINK32 /pdb:none -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Move DLL export lib -PostBuild_Cmds=xcopy ..\lib_debug\libmysql.dll %windir%\system32\ /y xcopy debug\libmysql.lib ..\lib_debug\ /y -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "libmysql - WinIA64 Release" -# Name "libmysql - WinIA64 Debug" -# Begin Source File - -SOURCE=..\mysys\array.c -# End Source File -# Begin Source File - -SOURCE=..\strings\bchange.c -# End Source File -# Begin Source File - -SOURCE=..\strings\bmove.c -# End Source File -# Begin Source File - -SOURCE=..\strings\bmove_upp.c -# End Source File -# Begin Source File - -SOURCE="..\mysys\charset-def.c" -# End Source File -# Begin Source File - -SOURCE=..\mysys\charset.c -# End Source File -# Begin Source File - -SOURCE=.\client.c -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-big5.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-bin.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-cp932.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-czech.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-cp932.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-euc_kr.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-eucjpms.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-extra.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-gb2312.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-gbk.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-latin1.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-mb.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-simple.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-sjis.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-tis620.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-uca.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-ucs2.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-ujis.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-utf8.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-win1250ch.c" -# End Source File -# Begin Source File - -SOURCE=..\strings\ctype.c -# End Source File -# Begin Source File - -SOURCE=..\dbug\dbug.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\default.c -# End Source File -# Begin Source File - -SOURCE=.\dll.c -# End Source File -# Begin Source File - -SOURCE=.\errmsg.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\errors.c -# End Source File -# Begin Source File - -SOURCE=.\get_password.c -# End Source File -# Begin Source File - -SOURCE=..\strings\int2str.c -# End Source File -# Begin Source File - -SOURCE=..\strings\is_prefix.c -# End Source File -# Begin Source File - -SOURCE=.\libmysql.c -# End Source File -# Begin Source File - -SOURCE=.\Libmysql.def -# End Source File -# Begin Source File - -SOURCE=..\mysys\list.c -# End Source File -# Begin Source File - -SOURCE=..\strings\llstr.c -# End Source File -# Begin Source File - -SOURCE=..\strings\longlong2str.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_dirname.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_fn_ext.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_format.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_loadpath.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_pack.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_path.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_unixpath.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mf_wcomp.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\mulalloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_alloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_compress.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_create.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_delete.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_div.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_error.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_fopen.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_fstream.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_gethostbyname.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_getopt.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_getwd.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_init.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_lib.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_malloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_messnc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_net.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_once.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_open.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_pthread.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_read.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_realloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_rename.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_static.c -# End Source File -# Begin Source File - -SOURCE=..\strings\my_strtoll10.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_symlink.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_symlink2.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_thr_init.c -# End Source File -# Begin Source File - -SOURCE=.\my_time.c -# End Source File -# Begin Source File - -SOURCE=..\strings\my_vsnprintf.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_wincond.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_winthread.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_write.c -# End Source File -# Begin Source File - -SOURCE=..\client\mysys_priv.h -# End Source File -# Begin Source File - -SOURCE=..\sql\net_serv.cpp -# End Source File -# Begin Source File - -SOURCE=.\pack.c -# End Source File -# Begin Source File - -SOURCE=.\password.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\safemalloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\sha1.c -# End Source File -# Begin Source File - -SOURCE=..\client\sql_string.cpp -# End Source File -# Begin Source File - -SOURCE=..\client\sql_string.h -# End Source File -# Begin Source File - -SOURCE=..\strings\str2int.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strcend.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strcont.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strend.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strfill.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\string.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strinstr.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strmake.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strmov.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strnlen.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strnmov.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strtod.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strtoll.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strxmov.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strxnmov.c -# End Source File -# Begin Source File - -SOURCE=..\strings\str_alloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\thr_mutex.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\typelib.c -# End Source File -# Begin Source File - -SOURCE=..\vio\vio.c -# End Source File -# Begin Source File - -SOURCE=..\vio\viosocket.c -# End Source File -# Begin Source File - -SOURCE=..\vio\viossl.c -# End Source File -# Begin Source File - -SOURCE=..\vio\viosslfactories.c -# End Source File -# Begin Source File - -SOURCE=..\strings\xml.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/libmysqld/examples/test_libmysqld.dsp b/VC++Files/libmysqld/examples/test_libmysqld.dsp deleted file mode 100644 index f75925f8a86..00000000000 --- a/VC++Files/libmysqld/examples/test_libmysqld.dsp +++ /dev/null @@ -1,75 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test_libmysqld" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test_libmysqld - Win32 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test_libmysqld.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test_libmysqld.mak" CFG="test_libmysqld - Win32 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test_libmysqld - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /I "../include" /I "../../extra/yassl/include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "DBUG_OFF" /YX /FD /c -# SUBTRACT CPP /WX /Fr -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"LIBCMTD" /out:"..\test_libmysqld.exe" -# Begin Target - -# Name "test_libmysqld - Win32 Release" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\..\client\completion_hash.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\client\mysql.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\client\readline.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\client\sql_string.cpp -# End Source File -# End Group -# End Target -# End Project diff --git a/VC++Files/libmysqld/examples/test_libmysqld.vcproj b/VC++Files/libmysqld/examples/test_libmysqld.vcproj deleted file mode 100644 index bf26fbd6588..00000000000 --- a/VC++Files/libmysqld/examples/test_libmysqld.vcproj +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/libmysqld/examples/test_libmysqld_ia64.dsp b/VC++Files/libmysqld/examples/test_libmysqld_ia64.dsp deleted file mode 100644 index 049b214e5ff..00000000000 --- a/VC++Files/libmysqld/examples/test_libmysqld_ia64.dsp +++ /dev/null @@ -1,79 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test_libmysqld" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test_libmysqld - WinIA64 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test_libmysqld_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test_libmysqld_ia64.mak" CFG="test_libmysqld - WinIA64 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test_libmysqld - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "..\..\include" /I "../include" /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "DBUG_OFF" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib bufferoverflowU.lib /nologo /subsystem:console /nodefaultlib:"LIBCMTD" /out:"Release/mysql-server.exe" /machine:IA64 -# Begin Target - -# Name "test_libmysqld - WinIA64 Release" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\..\client\completion_hash.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\client\mysql.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\client\readline.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\client\sql_string.cpp -# End Source File -# End Group -# Begin Source File - -SOURCE=..\..\lib_release\libmysqld.lib -# End Source File -# End Target -# End Project diff --git a/VC++Files/libmysqld/libmysqld.dsp b/VC++Files/libmysqld/libmysqld.dsp deleted file mode 100644 index 1c80147a8f5..00000000000 --- a/VC++Files/libmysqld/libmysqld.dsp +++ /dev/null @@ -1,650 +0,0 @@ -# Microsoft Developer Studio Project File - Name="libmysqld" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=libmysqld - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "libmysqld.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "libmysqld.mak" CFG="libmysqld - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "libmysqld - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "libmysqld - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "libmysqld - Win32 classic" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "libmysqld - Win32 pro" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "libmysqld - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBMYSQLD_EXPORTS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../libmysqld" /I "../sql" /I "../regex" /I "../extra/yassl/include" /I "../storage/bdb/build_win32" /I "../zlib" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "USE_TLS" /D "__WIN__" /FD /c -# SUBTRACT CPP /WX /Fr -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\myisam_tls.lib ..\lib_release\myisammrg_tls.lib ..\lib_release\mysys_tls.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap_tls.lib ..\lib_release\innodb.lib ..\lib_release\bdb.lib ..\lib_release\zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /dll /machine:I386 /out:"../lib_release/libmysqld.dll" /implib:"../lib_release/libmysqld.lib" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "libmysqld - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "libmysqld___Win32_Debug" -# PROP BASE Intermediate_Dir "libmysqld___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBMYSQLD_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /MT /W3 /Z7 /Od /I "../include" /I "../libmysqld" /I "../sql" /I "../regex" /I "../extra/yassl/include" /I "../storage/bdb/build_win32" /I "../zlib" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "SAFEMALLOC" /D "HAVE_BERKELEY_DB" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "HAVE_INNOBASE_DB" /D "USE_TLS" /D "__WIN__" /FD /GZ /c -# SUBTRACT CPP /X /Fr -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x416 /d "_DEBUG" -# ADD RSC /l 0x416 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_debug\dbug_tls.lib ..\lib_debug\mysys_tls.lib ..\lib_debug\strings.lib ..\lib_debug\regex.lib ..\lib_debug\heap_tls.lib ..\lib_debug\innodb.lib ..\extra\yassl\Debug\yassl.lib /nologo /dll /incremental:no /debug /machine:I386 /nodefaultlib:"LIBCMTD" /out:"../lib_debug/libmysqld.dll" /implib:"../lib_debug/libmysqld.lib" /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "libmysqld - Win32 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "libmysqld___Win32_classic" -# PROP BASE Intermediate_Dir "libmysqld___Win32_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../sql" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "DBUG_OFF" /D "USE_TLS" /D "__WIN__" /D "NDEBUG" /FR /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../libmysqld" /I "../sql" /I "../zlib" /D "WIN32" /D "_WINDOWS" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "USE_TLS" /D "__WIN__" /D LICENSE=Commerical /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /Fr -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\myisam_tls.lib ..\lib_release\myisammrg_tls.lib ..\lib_release\mysys_tls.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap_tls.lib ..\lib_release\zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /dll /machine:I386 /out:"../lib_release/libmysqld.dll" /implib:"../lib_release/libmysqld.lib" -# SUBTRACT BASE LINK32 /pdb:none -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\myisam_tls.lib ..\lib_release\myisammrg_tls.lib ..\lib_release\mysys_tls.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap_tls.lib ..\lib_release\zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /dll /machine:I386 /out:"../lib_classic/libmysqld.dll" /implib:"../lib_release/libmysqld.lib" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "libmysqld - Win32 pro" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "libmysqld___Win32_pro" -# PROP BASE Intermediate_Dir "libmysqld___Win32_pro" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "pro" -# PROP Intermediate_Dir "pro" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../sql" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "USE_TLS" /D "__WIN__" /D "NDEBUG" /FR /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../libmysqld" /I "../sql" /I "../zlib" /D "WIN32" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "EMBEDDED_LIBRARY" /D "USE_TLS" /D "__WIN__" /D "MYSQL_SERVER" /D LICENSE=Commercial /D "_MBCS" /D "HAVE_DLOPEN" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "NDEBUG" /D "_WINDOWS" /D "_CONSOLE" /FD /D MYSQL_SERVER_SUFFIX=-pro /c -# SUBTRACT CPP /X /Fr -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\myisam_tls.lib ..\lib_release\myisammrg_tls.lib ..\lib_release\mysys_tls.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap_tls.lib ..\lib_release\innodb.lib ..\lib_release\zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /dll /machine:I386 /out:"../lib_classic/libmysqld.dll" /implib:"../lib_release/libmysqld.lib" -# SUBTRACT BASE LINK32 /pdb:none -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\myisam_tls.lib ..\lib_release\myisammrg_tls.lib ..\lib_release\mysys_tls.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap_tls.lib ..\lib_release\innodb.lib ..\lib_release\zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /dll /machine:I386 /out:"../lib_pro/libmysqld.dll" /implib:"../lib_release/libmysqld.lib" -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "libmysqld - Win32 Release" -# Name "libmysqld - Win32 Debug" -# Name "libmysqld - Win32 classic" -# Name "libmysqld - Win32 pro" -# Begin Source File - -SOURCE="..\sql-common\client.c" - -!IF "$(CFG)" == "libmysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "libmysqld - Win32 Debug" - -!ELSEIF "$(CFG)" == "libmysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "libmysqld - Win32 pro" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\mysys\charset.c -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-latin1.c" -# End Source File -# Begin Source File - -SOURCE=..\mysys\default.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\default_modify.c -# End Source File -# Begin Source File - -SOURCE=..\sql\derror.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\discover.cpp -# End Source File -# Begin Source File - -SOURCE=.\emb_qcache.cpp -# End Source File -# Begin Source File - -SOURCE=..\libmysql\errmsg.c -# End Source File -# Begin Source File - -SOURCE=..\sql\field.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\field_conv.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\filesort.cpp -# End Source File -# Begin Source File - -SOURCE=..\client\get_password.c -# End Source File -# Begin Source File - -SOURCE=..\sql\gstream.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\ha_berkeley.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\ha_heap.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\ha_innodb.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\ha_myisam.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\ha_myisammrg.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\handler.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\hash_filo.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\hostname.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\init.cpp -# End Source File -# Begin Source File - -SOURCE=..\strings\int2str.c -# End Source File -# Begin Source File - -SOURCE=..\sql\item.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_buff.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_cmpfunc.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_create.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_func.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_geofunc.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_row.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_strfunc.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_subselect.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_sum.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_timefunc.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_uniq.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\key.cpp -# End Source File -# Begin Source File - -SOURCE=.\lib_sql.cpp -# End Source File -# Begin Source File - -SOURCE=..\libmysql\libmysql.c -# End Source File -# Begin Source File - -SOURCE=.\libmysqld.c -# End Source File -# Begin Source File - -SOURCE=.\libmysqld.def -# End Source File -# Begin Source File - -SOURCE=..\sql\lock.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\log.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\log_event.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\mf_iocache.cpp -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_alloc.c -# End Source File -# Begin Source File - -SOURCE=..\sql\my_decimal.cpp -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_getopt.c -# End Source File -# Begin Source File - -SOURCE=..\sql-common\my_time.c -# End Source File -# Begin Source File - -SOURCE=..\sql-common\my_user.c -# End Source File -# Begin Source File - -SOURCE=..\sql\net_serv.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\opt_range.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\opt_sum.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql-common\pack.c -# End Source File -# Begin Source File - -SOURCE=..\sql\parse_file.cpp -# End Source File -# Begin Source File - -SOURCE=..\libmysql\password.c -# End Source File -# Begin Source File - -SOURCE=..\sql\procedure.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\protocol.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\records.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\repl_failsafe.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\set_var.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sp.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sp_cache.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sp_head.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sp_pcontext.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sp_rcontext.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\spatial.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_acl.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_analyse.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_base.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_cache.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_class.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_crypt.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_db.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_delete.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_derived.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_do.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_error.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_handler.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_help.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_insert.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_lex.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_list.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_load.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_manager.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_map.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_parse.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_prepare.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_rename.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_repl.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_select.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_show.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_state.c -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_string.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_table.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_test.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_trigger.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_cursor.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_udf.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_union.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_update.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_view.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_yacc.cpp -# End Source File -# Begin Source File - -SOURCE=..\strings\str2int.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strcend.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strcont.c -# End Source File -# Begin Source File - -SOURCE=..\sql\strfunc.cpp -# End Source File -# Begin Source File - -SOURCE=..\strings\strinstr.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strxnmov.c -# End Source File -# Begin Source File - -SOURCE=..\strings\str_alloc.c -# End Source File -# Begin Source File - -SOURCE=..\sql\table.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\thr_malloc.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\time.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\tztime.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\uniques.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\unireg.cpp -# End Source File -# Begin Source File - -SOURCE=..\vio\vio.c -# End Source File -# Begin Source File - -SOURCE=..\vio\viosocket.c -# End Source File -# Begin Source File - -SOURCE=..\vio\viossl.c -# End Source File -# Begin Source File - -SOURCE=..\vio\viosslfactories.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/libmysqld/libmysqld.vcproj b/VC++Files/libmysqld/libmysqld.vcproj deleted file mode 100644 index e2bdbce0cf4..00000000000 --- a/VC++Files/libmysqld/libmysqld.vcproj +++ /dev/null @@ -1,4683 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/libmysqld/libmysqld_ia64.dsp b/VC++Files/libmysqld/libmysqld_ia64.dsp deleted file mode 100644 index 9668193fc1d..00000000000 --- a/VC++Files/libmysqld/libmysqld_ia64.dsp +++ /dev/null @@ -1,588 +0,0 @@ -# Microsoft Developer Studio Project File - Name="libmysqld" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=libmysqld - WinIA64 pro -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "libmysqld_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "libmysqld_ia64.mak" CFG="libmysqld - WinIA64 pro" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "libmysqld - WinIA64 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "libmysqld - WinIA64 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "libmysqld - WinIA64 classic" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "libmysqld - WinIA64 pro" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "libmysqld - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBMYSQLD_EXPORTS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../libmysqld" /I "../sql" /I "../regex" /I "../zlib" /D "WIN64" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "USE_TLS" /D "__WIN__" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /WX /Fr -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win64 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win64 -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:IA64 -# ADD LINK32 ..\lib_release\myisam_tls.lib ..\lib_release\myisammrg_tls.lib ..\lib_release\mysys_tls.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap_tls.lib ..\lib_release\innodb.lib ..\lib_release\zlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib bufferoverflowU.lib /nologo /dll /out:"../lib_release/libmysqld.dll" /implib:"../lib_release/libmysqld.lib" /machine:IA64 - -!ELSEIF "$(CFG)" == "libmysqld - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "libmysqld___Win64_Debug" -# PROP BASE Intermediate_Dir "libmysqld___Win64_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN64" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBMYSQLD_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /MT /W3 /Zi /Od /I "../include" /I "../libmysqld" /I "../sql" /I "../regex" /I "../zlib" /D "WIN64" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "SAFEMALLOC" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "HAVE_INNOBASE_DB" /D "USE_TLS" /D "__WIN__" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win64 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win64 -# ADD BASE RSC /l 0x416 /d "_DEBUG" -# ADD RSC /l 0x416 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:IA64 -# ADD LINK32 ..\lib_debug\dbug_tls.lib ..\lib_debug\myisam_tls.lib ..\lib_debug\myisammrg_tls.lib ..\lib_debug\mysys_tls.lib ..\lib_debug\strings.lib ..\lib_debug\regex.lib ..\lib_debug\heap_tls.lib ..\lib_debug\innodb.lib ../lib_debug\zlib.lib bufferoverflowU.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib /nologo /dll /incremental:no /debug /nodefaultlib:"LIBCMTD" /out:"../lib_debug/libmysqld.dll" /implib:"../lib_debug/libmysqld.lib" /machine:IA64 - -!ELSEIF "$(CFG)" == "libmysqld - WinIA64 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "libmysqld___Win64_classic" -# PROP BASE Intermediate_Dir "libmysqld___Win64_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../sql" /D "WIN64" /D "_WINDOWS" /D "_MBCS" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "DBUG_OFF" /D "USE_TLS" /D "__WIN__" /D "NDEBUG" /FR /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../regex" /I "../libmysqld" /I "../sql" /I "../zlib" /D "WIN64" /D "_WINDOWS" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "USE_TLS" /D "__WIN__" /D LICENSE=Commerical /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /Fr -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win64 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win64 -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\myisam_tls.lib ..\lib_release\myisammrg_tls.lib ..\lib_release\mysys_tls.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap_tls.lib ..\lib_release\zlib.lib /nologo /dll /out:"../lib_release/libmysqld.dll" /implib:"../lib_release/libmysqld.lib" /machine:IA64 -# ADD LINK32 ..\lib_release\myisam_tls.lib ..\lib_release\myisammrg_tls.lib ..\lib_release\mysys_tls.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap_tls.lib ..\lib_release\zlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib bufferoverflowU.lib /nologo /dll /out:"../lib_classic/libmysqld.dll" /implib:"../lib_release/libmysqld.lib" /machine:IA64 - -!ELSEIF "$(CFG)" == "libmysqld - WinIA64 pro" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "libmysqld___Win64_pro" -# PROP BASE Intermediate_Dir "libmysqld___Win64_pro" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "pro" -# PROP Intermediate_Dir "pro" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../sql" /D "WIN64" /D "_WINDOWS" /D "_MBCS" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "USE_TLS" /D "__WIN__" /D "NDEBUG" /FR /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../regex" /I "../libmysqld" /I "../sql" /I "../zlib" /D "WIN64" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "EMBEDDED_LIBRARY" /D "USE_TLS" /D "__WIN__" /D "MYSQL_SERVER" /D LICENSE=Commercial /D "_MBCS" /D "HAVE_DLOPEN" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "NDEBUG" /D "_WINDOWS" /D "_CONSOLE" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /DMYSQL_SERVER_SUFFIX=-pro /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /X /Fr -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win64 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win64 -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\myisam_tls.lib ..\lib_release\myisammrg_tls.lib ..\lib_release\mysys_tls.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap_tls.lib ..\lib_release\innodb.lib ..\lib_release\zlib.lib /nologo /dll /out:"../lib_classic/libmysqld.dll" /implib:"../lib_release/libmysqld.lib" /machine:IA64 -# ADD LINK32 ..\lib_release\myisam_tls.lib ..\lib_release\myisammrg_tls.lib ..\lib_release\mysys_tls.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap_tls.lib ..\lib_release\innodb.lib ..\lib_release\zlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib bufferoverflowU.lib /nologo /dll /out:"../lib_pro/libmysqld.dll" /implib:"../lib_release/libmysqld.lib" /machine:IA64 - -!ENDIF - -# Begin Target - -# Name "libmysqld - WinIA64 Release" -# Name "libmysqld - WinIA64 Debug" -# Name "libmysqld - WinIA64 classic" -# Name "libmysqld - WinIA64 pro" -# Begin Source File - -SOURCE="..\sql-common\client.c" -# End Source File -# Begin Source File - -SOURCE="..\strings\ctype-latin1.c" -# End Source File -# Begin Source File - -SOURCE=..\mysys\default.c -# End Source File -# Begin Source File - -SOURCE=..\sql\derror.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\discover.cpp -# End Source File -# Begin Source File - -SOURCE=.\emb_qcache.cpp -# End Source File -# Begin Source File - -SOURCE=..\libmysql\errmsg.c -# End Source File -# Begin Source File - -SOURCE=..\sql\field.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\field_conv.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\filesort.cpp -# End Source File -# Begin Source File - -SOURCE=..\client\get_password.c -# End Source File -# Begin Source File - -SOURCE=..\sql\gstream.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\ha_berkeley.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\ha_heap.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\ha_innodb.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\ha_isammrg.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\ha_myisam.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\ha_myisammrg.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\handler.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\hash_filo.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\hostname.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\init.cpp -# End Source File -# Begin Source File - -SOURCE=..\strings\int2str.c -# End Source File -# Begin Source File - -SOURCE=..\sql\item.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_buff.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_cmpfunc.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_create.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_func.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_geofunc.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_row.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_strfunc.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_subselect.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_sum.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_timefunc.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_uniq.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\key.cpp -# End Source File -# Begin Source File - -SOURCE=.\lib_sql.cpp -# End Source File -# Begin Source File - -SOURCE=..\libmysql\libmysql.c -# End Source File -# Begin Source File - -SOURCE=.\libmysqld.c -# End Source File -# Begin Source File - -SOURCE=.\libmysqld.def -# End Source File -# Begin Source File - -SOURCE=..\sql\lock.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\log.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\log_event.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\mf_iocache.cpp -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_alloc.c -# End Source File -# Begin Source File - -SOURCE=..\mysys\my_getopt.c -# End Source File -# Begin Source File - -SOURCE="..\sql-common\my_time.c" -# End Source File -# Begin Source File - -SOURCE="..\sql-common\my_user.c" -# End Source File -# Begin Source File - -SOURCE=..\sql\net_serv.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\opt_range.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\opt_sum.cpp -# End Source File -# Begin Source File - -SOURCE="..\sql-common\pack.c" -# End Source File -# Begin Source File - -SOURCE=..\libmysql\password.c -# End Source File -# Begin Source File - -SOURCE=..\sql\procedure.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\protocol.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\records.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\repl_failsafe.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\set_var.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\spatial.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_acl.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_analyse.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_base.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_cache.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_class.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_crypt.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_db.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_delete.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_derived.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_do.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_error.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_handler.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_help.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_insert.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_lex.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_list.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_load.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_manager.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_map.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_parse.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_prepare.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_rename.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_repl.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_select.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_show.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_state.c -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_string.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_table.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_test.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_udf.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_union.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_update.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_yacc.cpp -# End Source File -# Begin Source File - -SOURCE=..\strings\str2int.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strcend.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strcont.c -# End Source File -# Begin Source File - -SOURCE=..\sql\strfunc.cpp -# End Source File -# Begin Source File - -SOURCE=..\strings\strinstr.c -# End Source File -# Begin Source File - -SOURCE=..\strings\strxnmov.c -# End Source File -# Begin Source File - -SOURCE=..\strings\str_alloc.c -# End Source File -# Begin Source File - -SOURCE=..\sql\table.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\thr_malloc.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\time.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\tztime.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\uniques.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\unireg.cpp -# End Source File -# Begin Source File - -SOURCE=..\vio\vio.c -# End Source File -# Begin Source File - -SOURCE=..\vio\viosocket.c -# End Source File -# Begin Source File - -SOURCE=..\vio\viossl.c -# End Source File -# Begin Source File - -SOURCE=..\vio\viosslfactories.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/libmysqltest/myTest-package.dsp b/VC++Files/libmysqltest/myTest-package.dsp deleted file mode 100644 index a5c73d447b3..00000000000 --- a/VC++Files/libmysqltest/myTest-package.dsp +++ /dev/null @@ -1,92 +0,0 @@ -# Microsoft Developer Studio Project File - Name="myTest" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=myTest - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "myTest.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "myTest.mak" CFG="myTest - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "myTest - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "myTest - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "myTest - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /W3 /O2 /I "..\..\include" /D "NDEBUG" /D "DBUG_UFF" /D "_CONSOLE" /D "_MBCS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 ..\..\lib\opt\libmysql.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\lib_release" - -!ELSEIF "$(CFG)" == "myTest - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "..\..\include" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c -# SUBTRACT CPP /Fr /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 ..\..\lib\debug\libmysql.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /pdbtype:sept /libpath:"..\lib_debug" - -!ENDIF - -# Begin Target - -# Name "myTest - Win32 Release" -# Name "myTest - Win32 Debug" -# Begin Source File - -SOURCE=.\Mytest.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/libmysqltest/myTest-package_ia64.dsp b/VC++Files/libmysqltest/myTest-package_ia64.dsp deleted file mode 100644 index ef80a773815..00000000000 --- a/VC++Files/libmysqltest/myTest-package_ia64.dsp +++ /dev/null @@ -1,92 +0,0 @@ -# Microsoft Developer Studio Project File - Name="myTest" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=myTest - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "myTest.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "myTest.mak" CFG="myTest - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "myTest - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "myTest - WinIA64 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "myTest - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /I "..\include" /D"NDEBUG" /D"DBUG_UFF" /D"_CONSOLE" /D"_MBCS" /FD /c /O2 /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 ..\lib_release\libmysql.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 /libpath:"..\lib_release" /incremental:no - -!ELSEIF "$(CFG)" == "myTest - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Z7 /I "..\include" /D"_DEBUG" /D"_CONSOLE" /D"_MBCS" /FD /c /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /Fr /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64 -# ADD LINK32 ..\lib_debug\libmysql.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64 /libpath:"..\lib_debug" /incremental:no - -!ENDIF - -# Begin Target - -# Name "myTest - WinIA64 Release" -# Name "myTest - WinIA64 Debug" -# Begin Source File - -SOURCE=.\Mytest.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/libmysqltest/myTest.dsp b/VC++Files/libmysqltest/myTest.dsp deleted file mode 100644 index ca0f9e6e147..00000000000 --- a/VC++Files/libmysqltest/myTest.dsp +++ /dev/null @@ -1,92 +0,0 @@ -# Microsoft Developer Studio Project File - Name="myTest" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=myTest - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "myTest.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "myTest.mak" CFG="myTest - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "myTest - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "myTest - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "myTest - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /W3 /O2 /I "..\include" /D "DBUG_UFF" /D "_CONSOLE" /D "_MBCS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 libmysql.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\lib_release" - -!ELSEIF "$(CFG)" == "myTest - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "..\include" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c -# SUBTRACT CPP /Fr /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 libmysql.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /pdbtype:sept /libpath:"..\lib_debug" - -!ENDIF - -# Begin Target - -# Name "myTest - Win32 Release" -# Name "myTest - Win32 Debug" -# Begin Source File - -SOURCE=.\Mytest.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/libmysqltest/myTest.vcproj b/VC++Files/libmysqltest/myTest.vcproj deleted file mode 100644 index afc44b482c9..00000000000 --- a/VC++Files/libmysqltest/myTest.vcproj +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/libmysqltest/myTest_ia64.dsp b/VC++Files/libmysqltest/myTest_ia64.dsp deleted file mode 100644 index 4affa81ef54..00000000000 --- a/VC++Files/libmysqltest/myTest_ia64.dsp +++ /dev/null @@ -1,94 +0,0 @@ -# Microsoft Developer Studio Project File - Name="myTest" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=myTest - WinIA64 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "myTest_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "myTest_ia64.mak" CFG="myTest - WinIA64 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "myTest - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "myTest - WinIA64 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "myTest - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Zi /O2 /I "..\include" /D "DBUG_UFF" /D "_CONSOLE" /D "_MBCS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 libmysql.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:console /libpath:"..\lib_release" /machine:IA64 - -!ELSEIF "$(CFG)" == "myTest - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "..\include" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /Fr /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64 -# ADD LINK32 libmysql.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /debug /libpath:"..\lib_debug" /machine:IA64 - -!ENDIF - -# Begin Target - -# Name "myTest - WinIA64 Release" -# Name "myTest - WinIA64 Debug" -# Begin Source File - -SOURCE=.\Mytest.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/libmysqltest/mytest.c b/VC++Files/libmysqltest/mytest.c deleted file mode 100644 index a1dc13db39f..00000000000 --- a/VC++Files/libmysqltest/mytest.c +++ /dev/null @@ -1,175 +0,0 @@ -/*C4*/ -/****************************************************************/ -/* Author: Jethro Wright, III TS : 3/ 4/1998 9:15 */ -/* Date: 02/18/1998 */ -/* mytest.c : do some testing of the libmySQL.DLL.... */ -/* */ -/* History: */ -/* 02/18/1998 jw3 also sprach zarathustra.... */ -/****************************************************************/ - - -#include -#include -#include - -#include - -#define DEFALT_SQL_STMT "SELECT * FROM db" -#ifndef offsetof -#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) -#endif - - -/******************************************************** -** -** main :- -** -********************************************************/ - -int -main( int argc, char * argv[] ) -{ - - char szSQL[ 200 ], aszFlds[ 25 ][ 25 ], szDB[ 50 ] ; - const char *pszT; - int i, j, k, l, x ; - MYSQL * myData ; - MYSQL_RES * res ; - MYSQL_FIELD * fd ; - MYSQL_ROW row ; - - //....just curious.... - printf( "sizeof( MYSQL ) == %d\n", (int) sizeof( MYSQL ) ) ; - if ( argc == 2 ) - { - strcpy( szDB, argv[ 1 ] ) ; - strcpy( szSQL, DEFALT_SQL_STMT ) ; - if (!strcmp(szDB,"--debug")) - { - strcpy( szDB, "mysql" ) ; - printf("Some mysql struct information (size and offset):\n"); - printf("net:\t%3d %3d\n",(int) sizeof(myData->net), - (int) offsetof(MYSQL,net)); - printf("host:\t%3d %3d\n",(int) sizeof(myData->host), - (int) offsetof(MYSQL,host)); - printf("port:\t%3d %3d\n", (int) sizeof(myData->port), - (int) offsetof(MYSQL,port)); - printf("protocol_version:\t%3d %3d\n", - (int) sizeof(myData->protocol_version), - (int) offsetof(MYSQL,protocol_version)); - printf("thread_id:\t%3d %3d\n",(int) sizeof(myData->thread_id), - (int) offsetof(MYSQL,thread_id)); - printf("affected_rows:\t%3d %3d\n",(int) sizeof(myData->affected_rows), - (int) offsetof(MYSQL,affected_rows)); - printf("packet_length:\t%3d %3d\n",(int) sizeof(myData->packet_length), - (int) offsetof(MYSQL,packet_length)); - printf("status:\t%3d %3d\n",(int) sizeof(myData->status), - (int) offsetof(MYSQL,status)); - printf("fields:\t%3d %3d\n",(int) sizeof(myData->fields), - (int) offsetof(MYSQL,fields)); - printf("field_alloc:\t%3d %3d\n",(int) sizeof(myData->field_alloc), - (int) offsetof(MYSQL,field_alloc)); - printf("free_me:\t%3d %3d\n",(int) sizeof(myData->free_me), - (int) offsetof(MYSQL,free_me)); - printf("options:\t%3d %3d\n",(int) sizeof(myData->options), - (int) offsetof(MYSQL,options)); - puts(""); - } - } - else if ( argc > 2 ) { - strcpy( szDB, argv[ 1 ] ) ; - strcpy( szSQL, argv[ 2 ] ) ; - } - else { - strcpy( szDB, "mysql" ) ; - strcpy( szSQL, DEFALT_SQL_STMT ) ; - } - //.... - - if ( (myData = mysql_init((MYSQL*) 0)) && - mysql_real_connect( myData, NULL, NULL, NULL, NULL, MYSQL_PORT, - NULL, 0 ) ) - { - myData->reconnect= 1; - if ( mysql_select_db( myData, szDB ) < 0 ) { - printf( "Can't select the %s database !\n", szDB ) ; - mysql_close( myData ) ; - return 2 ; - } - } - else { - printf( "Can't connect to the mysql server on port %d !\n", - MYSQL_PORT ) ; - mysql_close( myData ) ; - return 1 ; - } - //.... - if ( ! mysql_query( myData, szSQL ) ) { - res = mysql_store_result( myData ) ; - i = (int) mysql_num_rows( res ) ; l = 1 ; - printf( "Query: %s\nNumber of records found: %ld\n", szSQL, i ) ; - //....we can get the field-specific characteristics here.... - for ( x = 0 ; fd = mysql_fetch_field( res ) ; x++ ) - strcpy( aszFlds[ x ], fd->name ) ; - //.... - while ( row = mysql_fetch_row( res ) ) { - j = mysql_num_fields( res ) ; - printf( "Record #%ld:-\n", l++ ) ; - for ( k = 0 ; k < j ; k++ ) - printf( " Fld #%d (%s): %s\n", k + 1, aszFlds[ k ], - (((row[k]==NULL)||(!strlen(row[k])))?"NULL":row[k])) ; - puts( "==============================\n" ) ; - } - mysql_free_result( res ) ; - } - else printf( "Couldn't execute %s on the server !\n", szSQL ) ; - //.... - puts( "==== Diagnostic info ====" ) ; - pszT = mysql_get_client_info() ; - printf( "Client info: %s\n", pszT ) ; - //.... - pszT = mysql_get_host_info( myData ) ; - printf( "Host info: %s\n", pszT ) ; - //.... - pszT = mysql_get_server_info( myData ) ; - printf( "Server info: %s\n", pszT ) ; - //.... - res = mysql_list_processes( myData ) ; l = 1 ; - if (res) - { - for ( x = 0 ; fd = mysql_fetch_field( res ) ; x++ ) - strcpy( aszFlds[ x ], fd->name ) ; - while ( row = mysql_fetch_row( res ) ) { - j = mysql_num_fields( res ) ; - printf( "Process #%ld:-\n", l++ ) ; - for ( k = 0 ; k < j ; k++ ) - printf( " Fld #%d (%s): %s\n", k + 1, aszFlds[ k ], - (((row[k]==NULL)||(!strlen(row[k])))?"NULL":row[k])) ; - puts( "==============================\n" ) ; - } - } - else - { - printf("Got error %s when retreiving processlist\n",mysql_error(myData)); - } - //.... - res = mysql_list_tables( myData, "%" ) ; l = 1 ; - for ( x = 0 ; fd = mysql_fetch_field( res ) ; x++ ) - strcpy( aszFlds[ x ], fd->name ) ; - while ( row = mysql_fetch_row( res ) ) { - j = mysql_num_fields( res ) ; - printf( "Table #%ld:-\n", l++ ) ; - for ( k = 0 ; k < j ; k++ ) - printf( " Fld #%d (%s): %s\n", k + 1, aszFlds[ k ], - (((row[k]==NULL)||(!strlen(row[k])))?"NULL":row[k])) ; - puts( "==============================\n" ) ; - } - //.... - pszT = mysql_stat( myData ) ; - puts( pszT ) ; - //.... - mysql_close( myData ) ; - return 0 ; - -} diff --git a/VC++Files/libmysqltest/mytest.dsw b/VC++Files/libmysqltest/mytest.dsw deleted file mode 100644 index 1aa804386bc..00000000000 --- a/VC++Files/libmysqltest/mytest.dsw +++ /dev/null @@ -1,28 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "myTest"=".\myTest.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### diff --git a/VC++Files/merge/merge.dsp b/VC++Files/merge/merge.dsp deleted file mode 100644 index e057bd37924..00000000000 --- a/VC++Files/merge/merge.dsp +++ /dev/null @@ -1,134 +0,0 @@ -# Microsoft Developer Studio Project File - Name="merge" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=merge - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "merge.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "merge.mak" CFG="merge - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "merge - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "merge - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "merge - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_release\merge.lib" - -!ELSEIF "$(CFG)" == "merge - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_debug\merge.lib" - -!ENDIF - -# Begin Target - -# Name "merge - Win32 Release" -# Name "merge - Win32 Debug" -# Begin Source File - -SOURCE=.\mrg_close.c -# End Source File -# Begin Source File - -SOURCE=.\mrg_create.c -# End Source File -# Begin Source File - -SOURCE=.\mrg_delete.c -# End Source File -# Begin Source File - -SOURCE=.\mrg_extra.c -# End Source File -# Begin Source File - -SOURCE=.\mrg_info.c -# End Source File -# Begin Source File - -SOURCE=.\mrg_locking.c -# End Source File -# Begin Source File - -SOURCE=.\mrg_open.c -# End Source File -# Begin Source File - -SOURCE=.\mrg_panic.c -# End Source File -# Begin Source File - -SOURCE=.\mrg_rrnd.c -# End Source File -# Begin Source File - -SOURCE=.\mrg_rsame.c -# End Source File -# Begin Source File - -SOURCE=.\mrg_static.c -# End Source File -# Begin Source File - -SOURCE=.\mrg_update.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/merge/merge.dsw b/VC++Files/merge/merge.dsw deleted file mode 100644 index 26d3bb5200c..00000000000 --- a/VC++Files/merge/merge.dsw +++ /dev/null @@ -1,28 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "merge"=".\merge.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### diff --git a/VC++Files/merge/merge_ia64.dsp b/VC++Files/merge/merge_ia64.dsp deleted file mode 100644 index 7b93f596997..00000000000 --- a/VC++Files/merge/merge_ia64.dsp +++ /dev/null @@ -1,134 +0,0 @@ -# Microsoft Developer Studio Project File - Name="merge" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=merge - WinIA64 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "merge.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "merge.mak" CFG="merge - WinIA64 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "merge - WinIA64 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "merge - WinIA64 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "merge - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WinIA64" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "_IA64_" /D "WinIA64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_release\merge.lib" - -!ELSEIF "$(CFG)" == "merge - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WinIA64" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /Gf /I "../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "_IA64_" /D "WinIA64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_debug\merge.lib" - -!ENDIF - -# Begin Target - -# Name "merge - WinIA64 Release" -# Name "merge - WinIA64 Debug" -# Begin Source File - -SOURCE=.\mrg_close.c -# End Source File -# Begin Source File - -SOURCE=.\mrg_create.c -# End Source File -# Begin Source File - -SOURCE=.\mrg_delete.c -# End Source File -# Begin Source File - -SOURCE=.\mrg_extra.c -# End Source File -# Begin Source File - -SOURCE=.\mrg_info.c -# End Source File -# Begin Source File - -SOURCE=.\mrg_locking.c -# End Source File -# Begin Source File - -SOURCE=.\mrg_open.c -# End Source File -# Begin Source File - -SOURCE=.\mrg_panic.c -# End Source File -# Begin Source File - -SOURCE=.\mrg_rrnd.c -# End Source File -# Begin Source File - -SOURCE=.\mrg_rsame.c -# End Source File -# Begin Source File - -SOURCE=.\mrg_static.c -# End Source File -# Begin Source File - -SOURCE=.\mrg_update.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/my_print_defaults/my_print_defaults.dsp b/VC++Files/my_print_defaults/my_print_defaults.dsp deleted file mode 100644 index 48a75ef7267..00000000000 --- a/VC++Files/my_print_defaults/my_print_defaults.dsp +++ /dev/null @@ -1,129 +0,0 @@ -# Microsoft Developer Studio Project File - Name="my_print_defaults" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=my_print_defaults - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "my_print_defaults.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "my_print_defaults.mak" CFG="my_print_defaults - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "my_print_defaults - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "my_print_defaults - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "my_print_defaults - Win32 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "my_print_defaults - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "../include" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "NDEBUG" /YX /FD /c -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/my_print_defaults.exe" - -!ELSEIF "$(CFG)" == "my_print_defaults - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MT /W3 /GX /Z7 /Od /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x416 /d "_DEBUG" -# ADD RSC /l 0x416 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"LIBCMTD.lib" /out:"../client_debug/my_print_defaults.exe" /pdbtype:sept - -!ELSEIF "$(CFG)" == "my_print_defaults - Win32 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "my_print_defaults___Win32_classic" -# PROP BASE Intermediate_Dir "my_print_defaults___Win32_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "../include" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "NDEBUG" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "../include" /D "WIN32" /D "_CONSOLE" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /YX /FD /c -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/my_print_defaults.exe" -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/my_print_defaults.exe" /libpath:"..\lib_release\\" - -!ENDIF - -# Begin Target - -# Name "my_print_defaults - Win32 Release" -# Name "my_print_defaults - Win32 Debug" -# Name "my_print_defaults - Win32 classic" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\extra\my_print_defaults.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/my_print_defaults/my_print_defaults.vcproj b/VC++Files/my_print_defaults/my_print_defaults.vcproj deleted file mode 100644 index e49039b6a1e..00000000000 --- a/VC++Files/my_print_defaults/my_print_defaults.vcproj +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/my_print_defaults/my_print_defaults_ia64.dsp b/VC++Files/my_print_defaults/my_print_defaults_ia64.dsp deleted file mode 100644 index 9fefa5c927e..00000000000 --- a/VC++Files/my_print_defaults/my_print_defaults_ia64.dsp +++ /dev/null @@ -1,133 +0,0 @@ -# Microsoft Developer Studio Project File - Name="my_print_defaults" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=my_print_defaults - WinIA64 classic -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "my_print_defaults_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "my_print_defaults_ia64.mak" CFG="my_print_defaults - WinIA64 classic" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "my_print_defaults - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "my_print_defaults - WinIA64 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "my_print_defaults - WinIA64 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "my_print_defaults - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /D "WIN64" /D "_CONSOLE" /D "_MBCS" /D "NDEBUG" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 ..\lib_release\mysys.lib ..\lib_release\strings.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib bufferoverflowU.lib /nologo /subsystem:console /out:"../client_release/my_print_defaults.exe" /machine:IA64 - -!ELSEIF "$(CFG)" == "my_print_defaults - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /RTC1 /c -# ADD CPP /nologo /MT /W3 /Zi /Od /I "../include" /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x416 /d "_DEBUG" -# ADD RSC /l 0x416 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64 -# ADD LINK32 ..\lib_debug\mysys.lib ..\lib_debug\strings.lib ..\lib_debug\dbug.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /debug /nodefaultlib:"LIBCMTD.lib" /out:"../client_debug/my_print_defaults.exe" /machine:IA64 -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "my_print_defaults - WinIA64 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "my_print_defaults___Win64_classic" -# PROP BASE Intermediate_Dir "my_print_defaults___Win64_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "../include" /D "WIN64" /D "_CONSOLE" /D "_MBCS" /D "NDEBUG" /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /D "WIN64" /D "_CONSOLE" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib /nologo /subsystem:console /out:"../client_release/my_print_defaults.exe" /machine:IA64 -# ADD LINK32 ..\lib_release\mysys.lib ..\lib_release\strings.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib bufferoverflowU.lib /nologo /subsystem:console /out:"../client_classic/my_print_defaults.exe" /libpath:"..\lib_release\\" /machine:IA64 - -!ENDIF - -# Begin Target - -# Name "my_print_defaults - WinIA64 Release" -# Name "my_print_defaults - WinIA64 Debug" -# Name "my_print_defaults - WinIA64 classic" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\extra\my_print_defaults.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/myisam_ftdump/myisam_ftdump.dsp b/VC++Files/myisam_ftdump/myisam_ftdump.dsp deleted file mode 100755 index d5b93ae654d..00000000000 --- a/VC++Files/myisam_ftdump/myisam_ftdump.dsp +++ /dev/null @@ -1,103 +0,0 @@ -# Microsoft Developer Studio Project File - Name="myisam_ftdump" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=myisam_ftdump - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "myisam_ftdump.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "myisam_ftdump.mak" CFG="myisam_ftdump - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "myisam_ftdump - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "myisam_ftdump - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "myisam_ftdump - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../storage/myisam" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FR /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj ..\lib_release\zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/myisam_ftdump.exe" - -!ELSEIF "$(CFG)" == "myisam_ftdump - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /I "../storage/myisam" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /Fr -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib wsock32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib setargv.obj ..\lib_debug\zlib.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/myisam_ftdump.exe" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "myisam_ftdump - Win32 Release" -# Name "myisam_ftdump - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\storage\myisam\myisam_ftdump.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/myisam_ftdump/myisam_ftdump.vcproj b/VC++Files/myisam_ftdump/myisam_ftdump.vcproj deleted file mode 100644 index 20c69b9f5bf..00000000000 --- a/VC++Files/myisam_ftdump/myisam_ftdump.vcproj +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/myisam_ftdump/myisam_ftdump_ia64.dsp b/VC++Files/myisam_ftdump/myisam_ftdump_ia64.dsp deleted file mode 100644 index 1b7dfc0a81c..00000000000 --- a/VC++Files/myisam_ftdump/myisam_ftdump_ia64.dsp +++ /dev/null @@ -1,105 +0,0 @@ -# Microsoft Developer Studio Project File - Name="myisam_ftdump" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=myisam_ftdump - WinIA64 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "myisam_ftdump_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "myisam_ftdump_ia64.mak" CFG="myisam_ftdump - WinIA64 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "myisam_ftdump - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "myisam_ftdump - WinIA64 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "myisam_ftdump - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../storage/myisam" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FR /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 ..\lib_release\myisam.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\zlib.lib kernel32.lib user32.lib wsock32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj bufferoverflowU.lib /nologo /subsystem:console /out:"../client_release/myisam_ftdump.exe" /machine:IA64 - -!ELSEIF "$(CFG)" == "myisam_ftdump - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../include" /I "../storage/myisam" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /Fr -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64 -# ADD LINK32 ole32.lib oleaut32.lib odbc32.lib odbccp32.lib ..\lib_debug\myisam.lib ..\lib_debug\mysys.lib ..\lib_debug\strings.lib ..\lib_debug\dbug.lib ..\lib_debug\zlib.lib kernel32.lib user32.lib wsock32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj bufferoverflowU.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/myisam_ftdump.exe" /machine:IA64 - -!ENDIF - -# Begin Target - -# Name "myisam_ftdump - WinIA64 Release" -# Name "myisam_ftdump - WinIA64 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\storage\myisam\myisam_ftdump.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/myisamchk/myisamchk.dsp b/VC++Files/myisamchk/myisamchk.dsp deleted file mode 100644 index 79ee13fc4da..00000000000 --- a/VC++Files/myisamchk/myisamchk.dsp +++ /dev/null @@ -1,133 +0,0 @@ -# Microsoft Developer Studio Project File - Name="myisamchk" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=myisamchk - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "myisamchk.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "myisamchk.mak" CFG="myisamchk - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "myisamchk - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "myisamchk - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "myisamchk - Win32 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "myisamchk - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../storage/myisam" /D "NDEBUG" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /WX /Fr /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj /nologo /subsystem:console /machine:I386 /out:"../client_release/myisamchk.exe" - -!ELSEIF "$(CFG)" == "myisamchk - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /I "../storage/myisam" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /Fr -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib wsock32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib setargv.obj /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/myisamchk.exe" /pdbtype:sept - -!ELSEIF "$(CFG)" == "myisamchk - Win32 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "myisamchk___Win32_classic" -# PROP BASE Intermediate_Dir "myisamchk___Win32_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../storage/myisam" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FR /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../storage/myisam" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /FR /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj /nologo /subsystem:console /machine:I386 /out:"../client_release/myisamchk.exe" -# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj ..\lib_release\myisam.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/myisamchk.exe" /libpath:"..\lib_release\\" - -!ENDIF - -# Begin Target - -# Name "myisamchk - Win32 Release" -# Name "myisamchk - Win32 Debug" -# Name "myisamchk - Win32 classic" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\storage\myisam\myisamchk.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/myisamchk/myisamchk.vcproj b/VC++Files/myisamchk/myisamchk.vcproj deleted file mode 100644 index 46041aff5d3..00000000000 --- a/VC++Files/myisamchk/myisamchk.vcproj +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/myisamchk/myisamchk_ia64.dsp b/VC++Files/myisamchk/myisamchk_ia64.dsp deleted file mode 100644 index d908b19abcf..00000000000 --- a/VC++Files/myisamchk/myisamchk_ia64.dsp +++ /dev/null @@ -1,136 +0,0 @@ -# Microsoft Developer Studio Project File - Name="myisamchk" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=myisamchk - WinIA64 classic -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "myisamchk_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "myisamchk_ia64.mak" CFG="myisamchk - WinIA64 classic" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "myisamchk - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "myisamchk - WinIA64 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "myisamchk - WinIA64 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "myisamchk - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../storage/myisam" /D "NDEBUG" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /WX /Fr /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 ..\lib_release\myisam.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\zlib.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj bufferoverflowU.lib /nologo /subsystem:console /out:"../client_release/myisamchk.exe" /machine:IA64 - -!ELSEIF "$(CFG)" == "myisamchk - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../include" /I "../storage/myisam" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /Fr -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64 -# ADD LINK32 ..\lib_debug\dbug.lib ..\lib_debug\myisam.lib ..\lib_debug\mysys.lib ..\lib_debug\strings.lib ..\lib_debug\zlib.lib ole32.lib oleaut32.lib odbc32.lib odbccp32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj bufferoverflowU.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/myisamchk.exe" /machine:IA64 - -!ELSEIF "$(CFG)" == "myisamchk - WinIA64 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "myisamchk___Win64_classic" -# PROP BASE Intermediate_Dir "myisamchk___Win64_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../storage/myisam" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FR /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../storage/myisam" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FR /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj /nologo /subsystem:console /out:"../client_release/myisamchk.exe" /machine:IA64 -# ADD LINK32 ..\lib_release\myisam.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\zlib.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj bufferoverflowU.lib /nologo /subsystem:console /out:"../client_classic/myisamchk.exe" /libpath:"..\lib_release\\" /machine:IA64 - -!ENDIF - -# Begin Target - -# Name "myisamchk - WinIA64 Release" -# Name "myisamchk - WinIA64 Debug" -# Name "myisamchk - WinIA64 classic" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\storage\myisam\myisamchk.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/myisamlog/myisamlog.dsp b/VC++Files/myisamlog/myisamlog.dsp deleted file mode 100644 index a2d5ce448aa..00000000000 --- a/VC++Files/myisamlog/myisamlog.dsp +++ /dev/null @@ -1,135 +0,0 @@ -# Microsoft Developer Studio Project File - Name="myisamlog" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=myisamlog - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "myisamlog.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "myisamlog.mak" CFG="myisamlog - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "myisamlog - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "myisamlog - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "myisamlog - Win32 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "myisamlog - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../storage/myisam" /D "NDEBUG" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /WX /Fr -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj /nologo /subsystem:console /pdb:"release/myisamchk.pdb" /machine:I386 /out:"../client_release/myisamlog.exe" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "myisamlog - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /I "../storage/myisam" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /Fr -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib wsock32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib setargv.obj /nologo /subsystem:console /incremental:no /pdb:"debug/myisamchk.pdb" /debug /machine:I386 /out:"../client_debug/myisamlog.exe" /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "myisamlog - Win32 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "myisamlog___Win32_classic" -# PROP BASE Intermediate_Dir "myisamlog___Win32_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../storage/myisam" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FR /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../storage/myisam" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /FR /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj /nologo /subsystem:console /pdb:"release/myisamchk.pdb" /machine:I386 /out:"../client_release/myisamlog.exe" -# SUBTRACT BASE LINK32 /pdb:none -# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj ..\lib_release\myisam.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\zlib.lib /nologo /subsystem:console /pdb:"release/myisamchk.pdb" /machine:I386 /out:"../client_classic/myisamlog.exe" /libpath:"..\lib_release\\" -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "myisamlog - Win32 Release" -# Name "myisamlog - Win32 Debug" -# Name "myisamlog - Win32 classic" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\storage\myisam\myisamlog.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/myisamlog/myisamlog.vcproj b/VC++Files/myisamlog/myisamlog.vcproj deleted file mode 100644 index 7d294e3c362..00000000000 --- a/VC++Files/myisamlog/myisamlog.vcproj +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/myisamlog/myisamlog_ia64.dsp b/VC++Files/myisamlog/myisamlog_ia64.dsp deleted file mode 100644 index 929c81fe929..00000000000 --- a/VC++Files/myisamlog/myisamlog_ia64.dsp +++ /dev/null @@ -1,138 +0,0 @@ -# Microsoft Developer Studio Project File - Name="myisamlog" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=myisamlog - WinIA64 classic -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "myisamlog_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "myisamlog_ia64.mak" CFG="myisamlog - WinIA64 classic" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "myisamlog - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "myisamlog - WinIA64 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "myisamlog - WinIA64 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "myisamlog - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../storage/myisam" /D "NDEBUG" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /WX /Fr -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 ..\lib_release\myisam.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\zlib.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj bufferoverflowU.lib /nologo /subsystem:console /pdb:"release/myisamchk.pdb" /out:"../client_release/myisamlog.exe" /machine:IA64 -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "myisamlog - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../include" /I "../storage/myisam" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /Fr -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64 -# ADD LINK32 ..\lib_debug\myisam.lib ..\lib_debug\mysys.lib ..\lib_debug\strings.lib ..\lib_debug\zlib.lib ..\lib_debug\dbug.lib ole32.lib oleaut32.lib odbc32.lib odbccp32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj bufferoverflowU.lib /nologo /subsystem:console /incremental:no /pdb:"debug/myisamchk.pdb" /debug /out:"../client_debug/myisamlog.exe" /machine:IA64 -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "myisamlog - WinIA64 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "myisamlog___Win64_classic" -# PROP BASE Intermediate_Dir "myisamlog___Win64_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../storage/myisam" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FR /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../storage/myisam" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FR /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj /nologo /subsystem:console /pdb:"release/myisamchk.pdb" /out:"../client_release/myisamlog.exe" /machine:IA64 -# SUBTRACT BASE LINK32 /pdb:none -# ADD LINK32 ..\lib_release\myisam.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\zlib.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj bufferoverflowU.lib /nologo /subsystem:console /pdb:"release/myisamchk.pdb" /out:"../client_classic/myisamlog.exe" /libpath:"..\lib_release\\" /machine:IA64 -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "myisamlog - WinIA64 Release" -# Name "myisamlog - WinIA64 Debug" -# Name "myisamlog - WinIA64 classic" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\storage\myisam\myisamlog.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/myisampack/myisampack.dsp b/VC++Files/myisampack/myisampack.dsp deleted file mode 100644 index 5103075a223..00000000000 --- a/VC++Files/myisampack/myisampack.dsp +++ /dev/null @@ -1,135 +0,0 @@ -# Microsoft Developer Studio Project File - Name="myisampack" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=myisampack - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "myisampack.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "myisampack.mak" CFG="myisampack - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "myisampack - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "myisampack - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "myisampack - Win32 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "myisampack - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../storage/myisam" /D "NDEBUG" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /WX /Fr -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj /nologo /subsystem:console /machine:I386 /out:"../client_release/myisampack.exe" - -!ELSEIF "$(CFG)" == "myisampack - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /I "../storage/myisam" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /Fr -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib wsock32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib setargv.obj /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/myisampack.exe" /pdbtype:sept - -!ELSEIF "$(CFG)" == "myisampack - Win32 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "myisampack___Win32_classic" -# PROP BASE Intermediate_Dir "myisampack___Win32_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../storage/myisam" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FR /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../storage/myisam" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /FR /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj /nologo /subsystem:console /machine:I386 /out:"../client_release/myisampack.exe" -# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj ..\lib_release\myisam.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/myisampack.exe" /libpath:"..\lib_release\\" - -!ENDIF - -# Begin Target - -# Name "myisampack - Win32 Release" -# Name "myisampack - Win32 Debug" -# Name "myisampack - Win32 classic" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\storage\myisam\myisampack.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\myisampack.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/myisampack/myisampack.vcproj b/VC++Files/myisampack/myisampack.vcproj deleted file mode 100644 index a83ea41acea..00000000000 --- a/VC++Files/myisampack/myisampack.vcproj +++ /dev/null @@ -1,247 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/myisampack/myisampack_ia64.dsp b/VC++Files/myisampack/myisampack_ia64.dsp deleted file mode 100644 index eb5acb1c9e7..00000000000 --- a/VC++Files/myisampack/myisampack_ia64.dsp +++ /dev/null @@ -1,138 +0,0 @@ -# Microsoft Developer Studio Project File - Name="myisampack" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=myisampack - WinIA64 classic -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "myisampack_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "myisampack_ia64.mak" CFG="myisampack - WinIA64 classic" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "myisampack - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "myisampack - WinIA64 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "myisampack - WinIA64 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "myisampack - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../storage/myisam" /D "NDEBUG" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /WX /Fr -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 ..\lib_release\myisam.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\zlib.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj bufferoverflowU.lib /nologo /subsystem:console /out:"../client_release/myisampack.exe" /machine:IA64 - -!ELSEIF "$(CFG)" == "myisampack - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../include" /I "../storage/myisam" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /Fr -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64 -# ADD LINK32 ..\lib_debug\myisam.lib ..\lib_debug\mysys.lib ..\lib_debug\strings.lib ..\lib_debug\zlib.lib ..\lib_debug\dbug.lib ole32.lib oleaut32.lib odbc32.lib odbccp32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj bufferoverflowU.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/myisampack.exe" /machine:IA64 - -!ELSEIF "$(CFG)" == "myisampack - WinIA64 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "myisampack___Win64_classic" -# PROP BASE Intermediate_Dir "myisampack___Win64_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../storage/myisam" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FR /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../storage/myisam" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FR /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj /nologo /subsystem:console /out:"../client_release/myisampack.exe" /machine:IA64 -# ADD LINK32 ..\lib_release\myisam.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\zlib.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib setargv.obj bufferoverflowU.lib /nologo /subsystem:console /out:"../client_classic/myisampack.exe" /libpath:"..\lib_release\\" /machine:IA64 - -!ENDIF - -# Begin Target - -# Name "myisampack - WinIA64 Release" -# Name "myisampack - WinIA64 Debug" -# Name "myisampack - WinIA64 classic" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\storage\myisam\myisampack.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\myisampack.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/mysql.dsp b/VC++Files/mysql.dsp deleted file mode 100644 index 4f97866cc31..00000000000 --- a/VC++Files/mysql.dsp +++ /dev/null @@ -1,80 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysql" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) External Target" 0x0106 - -CFG=mysql - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysql.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysql.mak" CFG="mysql - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysql - Win32 Release" (based on "Win32 (x86) External Target") -!MESSAGE "mysql - Win32 Debug" (based on "Win32 (x86) External Target") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" - -!IF "$(CFG)" == "mysql - Win32 Release" - -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Cmd_Line "NMAKE /f mysql.mak" -# PROP BASE Rebuild_Opt "/a" -# PROP BASE Target_File "mysql.exe" -# PROP BASE Bsc_Name "mysql.bsc" -# PROP BASE Target_Dir "" -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Cmd_Line "NMAKE /f mysql.mak" -# PROP Rebuild_Opt "/a" -# PROP Target_File "mysql.exe" -# PROP Bsc_Name "mysql.bsc" -# PROP Target_Dir "" - -!ELSEIF "$(CFG)" == "mysql - Win32 Debug" - -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Cmd_Line "NMAKE /f mysql.mak" -# PROP BASE Rebuild_Opt "/a" -# PROP BASE Target_File "mysql.exe" -# PROP BASE Bsc_Name "mysql.bsc" -# PROP BASE Target_Dir "" -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Cmd_Line "NMAKE /f mysql.mak" -# PROP Rebuild_Opt "/a" -# PROP Target_File "mysql.exe" -# PROP Bsc_Name "mysql.bsc" -# PROP Target_Dir "" - -!ENDIF - -# Begin Target - -# Name "mysql - Win32 Release" -# Name "mysql - Win32 Debug" - -!IF "$(CFG)" == "mysql - Win32 Release" - -!ELSEIF "$(CFG)" == "mysql - Win32 Debug" - -!ENDIF - -# End Target -# End Project diff --git a/VC++Files/mysql.dsw b/VC++Files/mysql.dsw deleted file mode 100644 index a5f5a214bd6..00000000000 --- a/VC++Files/mysql.dsw +++ /dev/null @@ -1,847 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "bdb"=".\storage\bdb\bdb.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "comp_err"=".\comp_err\comp_err.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency -}}} - -############################################################################### - -Project: "dbug"=".\dbug\dbug.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "heap"=".\storage\heap\heap.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "innobase"=".\storage\innobase\innobase.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "libmysql"=".\libmysql\libmysql.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name zlib - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name yassl - End Project Dependency -}}} - -############################################################################### - -Project: "libmysqld"=".\libmysqld\libmysqld.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name bdb - End Project Dependency - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency - Begin Project Dependency - Project_Dep_Name heap - End Project Dependency - Begin Project Dependency - Project_Dep_Name innobase - End Project Dependency - Begin Project Dependency - Project_Dep_Name myisam - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name regex - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency - Begin Project Dependency - Project_Dep_Name myisammrg - End Project Dependency - Begin Project Dependency - Project_Dep_Name zlib - End Project Dependency - Begin Project Dependency - Project_Dep_Name yassl - End Project Dependency -}}} - -############################################################################### - -Project: "myTest"=".\libmysqltest\myTest.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name libmysql - End Project Dependency -}}} - -############################################################################### - -Project: "my_print_defaults"=".\my_print_defaults\my_print_defaults.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency -}}} - -############################################################################### - -Project: "myisam"=".\storage\myisam\myisam.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "myisam_ftdump"=".\myisam_ftdump\myisam_ftdump.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency - Begin Project Dependency - Project_Dep_Name myisam - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency -}}} - -############################################################################### - -Project: "myisamchk"=".\myisamchk\myisamchk.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency - Begin Project Dependency - Project_Dep_Name myisam - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency - Begin Project Dependency - Project_Dep_Name zlib - End Project Dependency -}}} - -############################################################################### - -Project: "myisamlog"=".\myisamlog\myisamlog.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency - Begin Project Dependency - Project_Dep_Name myisam - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency - Begin Project Dependency - Project_Dep_Name zlib - End Project Dependency -}}} - -############################################################################### - -Project: "myisammrg"=".\storage\myisammrg\myisammrg.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "myisampack"=".\myisampack\myisampack.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency - Begin Project Dependency - Project_Dep_Name myisam - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency - Begin Project Dependency - Project_Dep_Name zlib - End Project Dependency -}}} - -############################################################################### - -Project: "mysql"=".\client\mysql.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mysqlclient - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency -}}} - -############################################################################### - -Project: "mysqladmin"=".\client\mysqladmin.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mysqlclient - End Project Dependency - Begin Project Dependency - Project_Dep_Name zlib - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency -}}} - -############################################################################### - -Project: "mysql_upgrade"=".\client\mysql_upgrade.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mysqlclient - End Project Dependency - Begin Project Dependency - Project_Dep_Name zlib - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency -}}} - -############################################################################### - -Project: "mysqlbinlog"=".\mysqlbinlog\mysqlbinlog.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mysqlclient - End Project Dependency -}}} - -############################################################################### - -Project: "mysqlcheck"=".\mysqlcheck\mysqlcheck.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mysqlclient - End Project Dependency -}}} - -############################################################################### - -Project: "mysqlclient"=".\client\mysqlclient.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name zlib - End Project Dependency - Begin Project Dependency - Project_Dep_Name yassl - End Project Dependency -}}} - -############################################################################### - -Project: "mysqld"=".\sql\mysqld.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name heap - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name regex - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysql - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysqladmin - Begin Project Dependency - Project_Dep_Name myqsl_upgrade - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysqldump - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysqlimport - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysql_upgrade - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysqlshow - End Project Dependency - Begin Project Dependency - Project_Dep_Name myTest - End Project Dependency - Begin Project Dependency - Project_Dep_Name thr_test - End Project Dependency - Begin Project Dependency - Project_Dep_Name replace - End Project Dependency - Begin Project Dependency - Project_Dep_Name zlib - End Project Dependency - Begin Project Dependency - Project_Dep_Name myisam - End Project Dependency - Begin Project Dependency - Project_Dep_Name myisammrg - End Project Dependency - Begin Project Dependency - Project_Dep_Name bdb - End Project Dependency - Begin Project Dependency - Project_Dep_Name vio - End Project Dependency - Begin Project Dependency - Project_Dep_Name innobase - End Project Dependency - Begin Project Dependency - Project_Dep_Name yassl - End Project Dependency -}}} - -############################################################################### - -Project: "mysqldemb"=".\mysqldemb\mysqldemb.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "mysqldump"=".\client\mysqldump.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mysqlclient - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency -}}} - -############################################################################### - -Project: "mysqlimport"=".\client\mysqlimport.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mysqlclient - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency -}}} - -############################################################################### - -Project: "mysql_upgrade"=".\client\mysql_upgade.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mysqlclient - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency -}}} - -############################################################################### - -Project: "mysqlserver"=".\mysqlserver\mysqlserver.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency - Begin Project Dependency - Project_Dep_Name heap - End Project Dependency - Begin Project Dependency - Project_Dep_Name innobase - End Project Dependency - Begin Project Dependency - Project_Dep_Name myisam - End Project Dependency - Begin Project Dependency - Project_Dep_Name myisammrg - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysqldemb - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name regex - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency - Begin Project Dependency - Project_Dep_Name zlib - End Project Dependency -}}} - -############################################################################### - -Project: "mysqlshow"=".\client\mysqlshow.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mysqlclient - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency -}}} - -############################################################################### - -Project: "yassl"=".\extra\yassl\yassl.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name taocrypt - End Project Dependency -}}} - -############################################################################### - -Project: "taocrypt"=".\extra\yassl\taocrypt\taocrypt.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "mysys"=".\mysys\mysys.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "perror"=".\perror\perror.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency -}}} - -############################################################################### - -Project: "regex"=".\regex\regex.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "replace"=".\replace\replace.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency -}}} - -############################################################################### - -Project: "strings"=".\strings\strings.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "test1"=".\test1\test1.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name libmysql - End Project Dependency -}}} - -############################################################################### - -Project: "test_libmysqld"=".\libmysqld\examples\test_libmysqld.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name libmysqld - End Project Dependency - Begin Project Dependency - Project_Dep_Name zlib - End Project Dependency - Begin Project Dependency - Project_Dep_Name yassl - End Project Dependency -}}} - -############################################################################### - -Project: "thr_test"=".\thr_test\thr_test.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency -}}} - -############################################################################### - -Project: "vio"=".\vio\vio.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "zlib"=".\zlib\zlib.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "mysqltest"=.\client\mysqltest.dsp - Package Owner=<4> - -Package=<5> -{{{ - }}} - - -Package=<4> -{{{ Begin Project Dependency - Project_Dep_Name libmysql - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name regex - End Project Dependency - Begin Project Dependency - Project_Dep_Name yassl - End Project Dependency -}}} - -############################################################################### - -Project: "mysql_client_test"=.\tests\mysql_client_test.dsp - Package Owner=<4> - - Package=<5> -{{{ - }}} - - Package=<4> - {{{ - }}} - - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### diff --git a/VC++Files/mysql.sln b/VC++Files/mysql.sln deleted file mode 100644 index c5bf8291888..00000000000 --- a/VC++Files/mysql.sln +++ /dev/null @@ -1,1812 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "comp_err", "comp_err\comp_err.vcproj", "{1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}" - ProjectSection(ProjectDependencies) = postProject - {EEC1300B-85A5-497C-B3E1-F708021DF859} = {EEC1300B-85A5-497C-B3E1-F708021DF859} - {44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF} - {FC369DF4-AEB7-4531-BF34-A638C4363BFE} = {FC369DF4-AEB7-4531-BF34-A638C4363BFE} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dbug", "dbug\dbug.vcproj", "{FC369DF4-AEB7-4531-BF34-A638C4363BFE}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmysql", "libmysql\libmysql.vcproj", "{1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}" - ProjectSection(ProjectDependencies) = postProject - {EEC1300B-85A5-497C-B3E1-F708021DF859} = {EEC1300B-85A5-497C-B3E1-F708021DF859} - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} = {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} - {8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF} - {44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmysqld", "libmysqld\libmysqld.vcproj", "{93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}" - ProjectSection(ProjectDependencies) = postProject - {EEC1300B-85A5-497C-B3E1-F708021DF859} = {EEC1300B-85A5-497C-B3E1-F708021DF859} - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113} = {207E9014-C4D1-4F6D-B76F-BC7DD7E31113} - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD} = {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD} - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} = {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} - {DB28DE80-837F-4497-9AA9-CC0A20584C98} = {DB28DE80-837F-4497-9AA9-CC0A20584C98} - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6} = {433BCD9B-15C5-4B11-B8BE-825EA98EACE6} - {8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF} - {44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF} - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30} = {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30} - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B} = {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B} - {FC369DF4-AEB7-4531-BF34-A638C4363BFE} = {FC369DF4-AEB7-4531-BF34-A638C4363BFE} - {86276BF8-FB93-49C8-8157-4F2181375CD0} = {86276BF8-FB93-49C8-8157-4F2181375CD0} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "myTest", "libmysqltest\myTest.vcproj", "{2794E434-7CCE-44DB-B2FB-789ABE53D6B9}" - ProjectSection(ProjectDependencies) = postProject - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F} = {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "my_print_defaults", "my_print_defaults\my_print_defaults.vcproj", "{B0EC3594-CD67-4364-826E-BA75EF2050F8}" - ProjectSection(ProjectDependencies) = postProject - {EEC1300B-85A5-497C-B3E1-F708021DF859} = {EEC1300B-85A5-497C-B3E1-F708021DF859} - {44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF} - {FC369DF4-AEB7-4531-BF34-A638C4363BFE} = {FC369DF4-AEB7-4531-BF34-A638C4363BFE} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "myisam_ftdump", "myisam_ftdump\myisam_ftdump.vcproj", "{4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}" - ProjectSection(ProjectDependencies) = postProject - {EEC1300B-85A5-497C-B3E1-F708021DF859} = {EEC1300B-85A5-497C-B3E1-F708021DF859} - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD} = {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD} - {44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF} - {FC369DF4-AEB7-4531-BF34-A638C4363BFE} = {FC369DF4-AEB7-4531-BF34-A638C4363BFE} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "myisamchk", "myisamchk\myisamchk.vcproj", "{87CD9881-D234-4306-BBC6-0668C6168C0F}" - ProjectSection(ProjectDependencies) = postProject - {EEC1300B-85A5-497C-B3E1-F708021DF859} = {EEC1300B-85A5-497C-B3E1-F708021DF859} - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD} = {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD} - {8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF} - {44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF} - {FC369DF4-AEB7-4531-BF34-A638C4363BFE} = {FC369DF4-AEB7-4531-BF34-A638C4363BFE} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "myisamlog", "myisamlog\myisamlog.vcproj", "{194F5EE6-9440-4298-A6FE-A9B4B480B44C}" - ProjectSection(ProjectDependencies) = postProject - {EEC1300B-85A5-497C-B3E1-F708021DF859} = {EEC1300B-85A5-497C-B3E1-F708021DF859} - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD} = {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD} - {8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF} - {44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF} - {FC369DF4-AEB7-4531-BF34-A638C4363BFE} = {FC369DF4-AEB7-4531-BF34-A638C4363BFE} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "myisampack", "myisampack\myisampack.vcproj", "{EF833A1E-E358-4B6C-9C27-9489E85041CC}" - ProjectSection(ProjectDependencies) = postProject - {EEC1300B-85A5-497C-B3E1-F708021DF859} = {EEC1300B-85A5-497C-B3E1-F708021DF859} - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD} = {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD} - {8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF} - {44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF} - {FC369DF4-AEB7-4531-BF34-A638C4363BFE} = {FC369DF4-AEB7-4531-BF34-A638C4363BFE} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mysql", "client\mysql.vcproj", "{F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}" - ProjectSection(ProjectDependencies) = postProject - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} = {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} - {26383276-4843-494B-8BE0-8936ED3EBAAB} = {26383276-4843-494B-8BE0-8936ED3EBAAB} - {8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF} - {44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mysqladmin", "client\mysqladmin.vcproj", "{D2B00DE0-F6E9-40AF-B90D-A257D014F098}" - ProjectSection(ProjectDependencies) = postProject - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} = {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} - {26383276-4843-494B-8BE0-8936ED3EBAAB} = {26383276-4843-494B-8BE0-8936ED3EBAAB} - {8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF} - {44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mysqlbinlog", "mysqlbinlog\mysqlbinlog.vcproj", "{DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}" - ProjectSection(ProjectDependencies) = postProject - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} = {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} - {26383276-4843-494B-8BE0-8936ED3EBAAB} = {26383276-4843-494B-8BE0-8936ED3EBAAB} - {8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mysqlcheck", "mysqlcheck\mysqlcheck.vcproj", "{67154F28-D076-419E-B149-819EF548E670}" - ProjectSection(ProjectDependencies) = postProject - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} = {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} - {26383276-4843-494B-8BE0-8936ED3EBAAB} = {26383276-4843-494B-8BE0-8936ED3EBAAB} - {8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mysqlclient", "client\mysqlclient.vcproj", "{26383276-4843-494B-8BE0-8936ED3EBAAB}" - ProjectSection(ProjectDependencies) = postProject - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} = {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} - {8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mysqld", "sql\mysqld.vcproj", "{62E85884-3ACF-4F4C-873B-60B878147890}" - ProjectSection(ProjectDependencies) = postProject - {EEC1300B-85A5-497C-B3E1-F708021DF859} = {EEC1300B-85A5-497C-B3E1-F708021DF859} - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113} = {207E9014-C4D1-4F6D-B76F-BC7DD7E31113} - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD} = {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD} - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} = {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} - {DB28DE80-837F-4497-9AA9-CC0A20584C98} = {DB28DE80-837F-4497-9AA9-CC0A20584C98} - {BFCDA391-91A5-45F5-A14F-1011F8424113} = {BFCDA391-91A5-45F5-A14F-1011F8424113} - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6} = {433BCD9B-15C5-4B11-B8BE-825EA98EACE6} - {8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF} - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B} = {F74653C4-8003-4A79-8F53-FC69E0AD7A9B} - {6B6812DB-636E-465D-B53D-5012F237E539} = {6B6812DB-636E-465D-B53D-5012F237E539} - {44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF} - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B} = {4471CADD-737B-4AD7-A108-2FBAA1C4B03B} - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30} = {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30} - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B} = {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B} - {FC369DF4-AEB7-4531-BF34-A638C4363BFE} = {FC369DF4-AEB7-4531-BF34-A638C4363BFE} - {86276BF8-FB93-49C8-8157-4F2181375CD0} = {86276BF8-FB93-49C8-8157-4F2181375CD0} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mysqldemb", "mysqldemb\mysqldemb.vcproj", "{37D9BA79-302E-4582-A545-CB5FF7982EA3}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mysqldump", "client\mysqldump.vcproj", "{89F24ECE-9953-40EF-BDF4-B41F5631E92B}" - ProjectSection(ProjectDependencies) = postProject - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} = {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} - {26383276-4843-494B-8BE0-8936ED3EBAAB} = {26383276-4843-494B-8BE0-8936ED3EBAAB} - {8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF} - {44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mysqlimport", "client\mysqlimport.vcproj", "{AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}" - ProjectSection(ProjectDependencies) = postProject - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} = {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} - {26383276-4843-494B-8BE0-8936ED3EBAAB} = {26383276-4843-494B-8BE0-8936ED3EBAAB} - {8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF} - {44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mysql_upgrade", "client\mysql_upgrade.vcproj", "{AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}" - ProjectSection(ProjectDependencies) = postProject - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} = {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} - {26383276-4843-494B-8BE0-8936ED3EBAAB} = {26383276-4843-494B-8BE0-8936ED3EBAAB} - {8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF} - {44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mysqlserver", "mysqlserver\mysqlserver.vcproj", "{94B86159-C581-42CD-825D-C69CBC237E5C}" - ProjectSection(ProjectDependencies) = postProject - {EEC1300B-85A5-497C-B3E1-F708021DF859} = {EEC1300B-85A5-497C-B3E1-F708021DF859} - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113} = {207E9014-C4D1-4F6D-B76F-BC7DD7E31113} - {37D9BA79-302E-4582-A545-CB5FF7982EA3} = {37D9BA79-302E-4582-A545-CB5FF7982EA3} - {8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF} - {44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF} - {FC369DF4-AEB7-4531-BF34-A638C4363BFE} = {FC369DF4-AEB7-4531-BF34-A638C4363BFE} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mysqlshow", "client\mysqlshow.vcproj", "{3737BFE2-EF25-464F-994D-BD28A9F84528}" - ProjectSection(ProjectDependencies) = postProject - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} = {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} - {26383276-4843-494B-8BE0-8936ED3EBAAB} = {26383276-4843-494B-8BE0-8936ED3EBAAB} - {8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF} - {44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "yassl", "extra\yassl\yassl.vcproj", "{BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}" - ProjectSection(ProjectDependencies) = postProject - {DB28DE80-837F-4497-9AA9-CC0A20584C98} = {DB28DE80-837F-4497-9AA9-CC0A20584C98} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "taocrypt", "extra\yassl\taocrypt\taocrypt.vcproj", "{DB28DE80-837F-4497-9AA9-CC0A20584C98}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mysys", "mysys\mysys.vcproj", "{44D9C7DC-6636-4B82-BD01-6876C64017DF}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "perror", "perror\perror.vcproj", "{AC47623D-933C-4A80-83BB-B6AF7CB28B4B}" - ProjectSection(ProjectDependencies) = postProject - {EEC1300B-85A5-497C-B3E1-F708021DF859} = {EEC1300B-85A5-497C-B3E1-F708021DF859} - {44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF} - {FC369DF4-AEB7-4531-BF34-A638C4363BFE} = {FC369DF4-AEB7-4531-BF34-A638C4363BFE} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "regex", "regex\regex.vcproj", "{207E9014-C4D1-4F6D-B76F-BC7DD7E31113}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "replace", "replace\replace.vcproj", "{16699B52-ECC6-4A96-A99F-A043059BA2E7}" - ProjectSection(ProjectDependencies) = postProject - {EEC1300B-85A5-497C-B3E1-F708021DF859} = {EEC1300B-85A5-497C-B3E1-F708021DF859} - {44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF} - {FC369DF4-AEB7-4531-BF34-A638C4363BFE} = {FC369DF4-AEB7-4531-BF34-A638C4363BFE} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "strings", "strings\strings.vcproj", "{EEC1300B-85A5-497C-B3E1-F708021DF859}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test1", "test1\test1.vcproj", "{8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}" - ProjectSection(ProjectDependencies) = postProject - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F} = {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_libmysqld", "libmysqld\examples\test_libmysqld.vcproj", "{6F01B69C-B1A5-4C45-B3A9-744E1EB0BED5}" - ProjectSection(ProjectDependencies) = postProject - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} = {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9} = {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9} - {8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "thr_test", "thr_test\thr_test.vcproj", "{7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}" - ProjectSection(ProjectDependencies) = postProject - {EEC1300B-85A5-497C-B3E1-F708021DF859} = {EEC1300B-85A5-497C-B3E1-F708021DF859} - {44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF} - {FC369DF4-AEB7-4531-BF34-A638C4363BFE} = {FC369DF4-AEB7-4531-BF34-A638C4363BFE} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vio", "vio\vio.vcproj", "{F74653C4-8003-4A79-8F53-FC69E0AD7A9B}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib\zlib.vcproj", "{8762A9B8-72A9-462E-A9A2-F3265081F8AF}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mysqltest", "client\mysqltest.vcproj", "{8961F149-C68A-4154-A499-A2AB39E607E8}" - ProjectSection(ProjectDependencies) = postProject - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113} = {207E9014-C4D1-4F6D-B76F-BC7DD7E31113} - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} = {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} - {26383276-4843-494B-8BE0-8936ED3EBAAB} = {26383276-4843-494B-8BE0-8936ED3EBAAB} - {8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF} - {44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mysql_client_test", "tests\mysql_client_test.vcproj", "{DA224DAB-5006-42BE-BB77-16E8BE5326D5}" - ProjectSection(ProjectDependencies) = postProject - {26383276-4843-494B-8BE0-8936ED3EBAAB} = {26383276-4843-494B-8BE0-8936ED3EBAAB} - {44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mysqlmanager", "server-tools\instance-manager\mysqlmanager.vcproj", "{6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}" - ProjectSection(ProjectDependencies) = postProject - {EEC1300B-85A5-497C-B3E1-F708021DF859} = {EEC1300B-85A5-497C-B3E1-F708021DF859} - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} = {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} - {DB28DE80-837F-4497-9AA9-CC0A20584C98} = {DB28DE80-837F-4497-9AA9-CC0A20584C98} - {8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF} - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B} = {F74653C4-8003-4A79-8F53-FC69E0AD7A9B} - {44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF} - {FC369DF4-AEB7-4531-BF34-A638C4363BFE} = {FC369DF4-AEB7-4531-BF34-A638C4363BFE} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "myisammrg", "storage\myisammrg\myisammrg.vcproj", "{433BCD9B-15C5-4B11-B8BE-825EA98EACE6}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "myisam", "storage\myisam\myisam.vcproj", "{13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "innobase", "storage\innobase\innobase.vcproj", "{8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "heap", "storage\heap\heap.vcproj", "{86276BF8-FB93-49C8-8157-4F2181375CD0}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bdb", "storage\bdb\bdb.vcproj", "{B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mysqlslap", "client\mysqlslap.vcproj", "{2E9332CF-072A-4381-BF37-17C5AB4F8583}" - ProjectSection(ProjectDependencies) = postProject - {26383276-4843-494B-8BE0-8936ED3EBAAB} = {26383276-4843-494B-8BE0-8936ED3EBAAB} - {44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "archive", "storage\archive\archive.vcproj", "{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example", "storage\example\example.vcproj", "{6B6812DB-636E-465D-B53D-5012F237E539}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fulltext", "plugin\fulltext\fulltext.vcproj", "{BFCDA391-91A5-45F5-A14F-1011F8424113}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - classic = classic - classic nt = classic nt - Debug = Debug - Embedded_Classic = Embedded_Classic - Embedded_Debug = Embedded_Debug - Embedded_Pro = Embedded_Pro - Embedded_ProGPL = Embedded_ProGPL - Embedded_Release = Embedded_Release - Max = Max - Max nt = Max nt - nt = nt - pro = pro - pro gpl = pro gpl - pro gpl nt = pro gpl nt - pro nt = pro nt - Release = Release - TLS = TLS - TLS_DEBUG = TLS_DEBUG - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.classic.ActiveCfg = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.classic nt.ActiveCfg = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.classic nt.Build.0 = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.Debug.ActiveCfg = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.Embedded_Classic.ActiveCfg = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.Embedded_Debug.ActiveCfg = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.Embedded_Pro.ActiveCfg = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.Embedded_Release.ActiveCfg = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.Max.ActiveCfg = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.Max.Build.0 = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.Max nt.ActiveCfg = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.Max nt.Build.0 = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.nt.ActiveCfg = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.nt.Build.0 = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.pro.ActiveCfg = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.pro.Build.0 = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.pro gpl.ActiveCfg = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.pro gpl.Build.0 = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.pro gpl nt.ActiveCfg = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.pro gpl nt.Build.0 = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.pro nt.ActiveCfg = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.pro nt.Build.0 = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.Release.ActiveCfg = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.Release.Build.0 = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.TLS.ActiveCfg = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.TLS.Build.0 = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.TLS_DEBUG.ActiveCfg = Release|Win32 - {1FD8A136-B86A-4B54-95B0-FA4E2EE2CCBC}.TLS_DEBUG.Build.0 = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.classic.ActiveCfg = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.classic.Build.0 = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.classic nt.ActiveCfg = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.classic nt.Build.0 = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.Debug.ActiveCfg = Debug|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.Debug.Build.0 = Debug|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.Embedded_Classic.ActiveCfg = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.Embedded_Classic.Build.0 = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.Embedded_Debug.ActiveCfg = Debug|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.Embedded_Debug.Build.0 = Debug|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.Embedded_Pro.ActiveCfg = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.Embedded_Pro.Build.0 = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.Embedded_ProGPL.Build.0 = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.Embedded_Release.ActiveCfg = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.Embedded_Release.Build.0 = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.Max.ActiveCfg = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.Max.Build.0 = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.Max nt.ActiveCfg = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.Max nt.Build.0 = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.nt.ActiveCfg = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.nt.Build.0 = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.pro.ActiveCfg = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.pro.Build.0 = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.pro gpl.ActiveCfg = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.pro gpl.Build.0 = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.pro gpl nt.ActiveCfg = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.pro gpl nt.Build.0 = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.pro nt.ActiveCfg = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.pro nt.Build.0 = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.Release.ActiveCfg = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.Release.Build.0 = Release|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.TLS.ActiveCfg = TLS_DEBUG|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.TLS.Build.0 = TLS_DEBUG|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.TLS_DEBUG.ActiveCfg = TLS_DEBUG|Win32 - {FC369DF4-AEB7-4531-BF34-A638C4363BFE}.TLS_DEBUG.Build.0 = TLS_DEBUG|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.classic.ActiveCfg = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.classic.Build.0 = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.classic nt.ActiveCfg = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.classic nt.Build.0 = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.Debug.ActiveCfg = Debug|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.Debug.Build.0 = Debug|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.Embedded_Classic.ActiveCfg = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.Embedded_Debug.ActiveCfg = Debug|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.Embedded_Pro.ActiveCfg = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.Embedded_Release.ActiveCfg = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.Max.ActiveCfg = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.Max.Build.0 = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.Max nt.ActiveCfg = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.Max nt.Build.0 = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.nt.ActiveCfg = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.nt.Build.0 = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.pro.ActiveCfg = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.pro.Build.0 = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.pro gpl.ActiveCfg = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.pro gpl.Build.0 = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.pro gpl nt.ActiveCfg = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.pro gpl nt.Build.0 = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.pro nt.ActiveCfg = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.pro nt.Build.0 = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.Release.ActiveCfg = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.Release.Build.0 = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.TLS.ActiveCfg = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.TLS.Build.0 = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.TLS_DEBUG.ActiveCfg = Release|Win32 - {1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}.TLS_DEBUG.Build.0 = Release|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.classic.ActiveCfg = classic|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.classic nt.ActiveCfg = classic|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.Debug.ActiveCfg = Debug|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.Embedded_Classic.ActiveCfg = classic|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.Embedded_Classic.Build.0 = classic|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.Embedded_Debug.ActiveCfg = Debug|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.Embedded_Debug.Build.0 = Debug|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.Embedded_Pro.ActiveCfg = pro|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.Embedded_Pro.Build.0 = pro|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.Embedded_ProGPL.Build.0 = Release|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.Embedded_Release.ActiveCfg = Release|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.Embedded_Release.Build.0 = Release|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.Max.ActiveCfg = Release|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.Max nt.ActiveCfg = Release|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.nt.ActiveCfg = Release|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.pro.ActiveCfg = pro|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.pro gpl.ActiveCfg = Release|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.pro gpl nt.ActiveCfg = Release|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.pro nt.ActiveCfg = pro|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.Release.ActiveCfg = Release|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.TLS.ActiveCfg = Release|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.TLS.Build.0 = Release|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {93CA92A0-D7B8-4FAE-9EBB-D92EFBF631C9}.TLS_DEBUG.Build.0 = Debug|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.classic.ActiveCfg = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.classic.Build.0 = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.classic nt.ActiveCfg = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.classic nt.Build.0 = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.Debug.ActiveCfg = Debug|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.Debug.Build.0 = Debug|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.Embedded_Classic.ActiveCfg = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.Embedded_Debug.ActiveCfg = Debug|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.Embedded_Pro.ActiveCfg = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.Embedded_Release.ActiveCfg = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.Max.ActiveCfg = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.Max.Build.0 = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.Max nt.ActiveCfg = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.Max nt.Build.0 = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.nt.ActiveCfg = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.nt.Build.0 = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.pro.ActiveCfg = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.pro.Build.0 = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.pro gpl.ActiveCfg = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.pro gpl.Build.0 = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.pro gpl nt.ActiveCfg = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.pro gpl nt.Build.0 = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.pro nt.ActiveCfg = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.pro nt.Build.0 = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.Release.ActiveCfg = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.Release.Build.0 = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.TLS.ActiveCfg = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.TLS.Build.0 = Release|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {2794E434-7CCE-44DB-B2FB-789ABE53D6B9}.TLS_DEBUG.Build.0 = Debug|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.classic.ActiveCfg = classic|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.classic.Build.0 = classic|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.classic nt.ActiveCfg = classic|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.classic nt.Build.0 = classic|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.Debug.ActiveCfg = Debug|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.Debug.Build.0 = Debug|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.Embedded_Classic.ActiveCfg = classic|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.Embedded_Debug.ActiveCfg = Debug|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.Embedded_Pro.ActiveCfg = Release|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.Embedded_Release.ActiveCfg = Release|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.Max.ActiveCfg = Release|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.Max.Build.0 = Release|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.Max nt.ActiveCfg = Release|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.Max nt.Build.0 = Release|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.nt.ActiveCfg = Release|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.nt.Build.0 = Release|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.pro.ActiveCfg = Release|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.pro.Build.0 = Release|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.pro gpl.ActiveCfg = Release|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.pro gpl.Build.0 = Release|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.pro gpl nt.ActiveCfg = Release|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.pro gpl nt.Build.0 = Release|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.pro nt.ActiveCfg = Release|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.pro nt.Build.0 = Release|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.Release.ActiveCfg = Release|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.Release.Build.0 = Release|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.TLS.ActiveCfg = Release|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.TLS.Build.0 = Release|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {B0EC3594-CD67-4364-826E-BA75EF2050F8}.TLS_DEBUG.Build.0 = Debug|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.classic.ActiveCfg = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.classic.Build.0 = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.classic nt.ActiveCfg = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.classic nt.Build.0 = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.Debug.ActiveCfg = Debug|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.Debug.Build.0 = Debug|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.Embedded_Classic.ActiveCfg = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.Embedded_Debug.ActiveCfg = Debug|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.Embedded_Pro.ActiveCfg = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.Embedded_Release.ActiveCfg = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.Max.ActiveCfg = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.Max.Build.0 = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.Max nt.ActiveCfg = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.Max nt.Build.0 = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.nt.ActiveCfg = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.nt.Build.0 = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.pro.ActiveCfg = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.pro.Build.0 = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.pro gpl.ActiveCfg = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.pro gpl.Build.0 = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.pro gpl nt.ActiveCfg = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.pro gpl nt.Build.0 = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.pro nt.ActiveCfg = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.pro nt.Build.0 = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.Release.ActiveCfg = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.Release.Build.0 = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.TLS.ActiveCfg = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.TLS.Build.0 = Release|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}.TLS_DEBUG.Build.0 = Debug|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.classic.ActiveCfg = classic|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.classic.Build.0 = classic|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.classic nt.ActiveCfg = classic|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.classic nt.Build.0 = classic|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.Debug.ActiveCfg = Debug|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.Debug.Build.0 = Debug|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.Embedded_Classic.ActiveCfg = classic|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.Embedded_Debug.ActiveCfg = Debug|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.Embedded_Pro.ActiveCfg = Release|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.Embedded_Release.ActiveCfg = Release|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.Max.ActiveCfg = Release|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.Max.Build.0 = Release|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.Max nt.ActiveCfg = Release|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.Max nt.Build.0 = Release|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.nt.ActiveCfg = Release|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.nt.Build.0 = Release|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.pro.ActiveCfg = Release|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.pro.Build.0 = Release|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.pro gpl.ActiveCfg = Release|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.pro gpl.Build.0 = Release|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.pro gpl nt.ActiveCfg = Release|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.pro gpl nt.Build.0 = Release|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.pro nt.ActiveCfg = Release|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.pro nt.Build.0 = Release|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.Release.ActiveCfg = Release|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.Release.Build.0 = Release|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.TLS.ActiveCfg = Release|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.TLS.Build.0 = Release|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {87CD9881-D234-4306-BBC6-0668C6168C0F}.TLS_DEBUG.Build.0 = Debug|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.classic.ActiveCfg = classic|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.classic.Build.0 = classic|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.classic nt.ActiveCfg = classic|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.classic nt.Build.0 = classic|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.Debug.ActiveCfg = Debug|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.Debug.Build.0 = Debug|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.Embedded_Classic.ActiveCfg = classic|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.Embedded_Debug.ActiveCfg = Debug|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.Embedded_Pro.ActiveCfg = Release|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.Embedded_Release.ActiveCfg = Release|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.Max.ActiveCfg = Release|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.Max.Build.0 = Release|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.Max nt.ActiveCfg = Release|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.Max nt.Build.0 = Release|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.nt.ActiveCfg = Release|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.nt.Build.0 = Release|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.pro.ActiveCfg = Release|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.pro.Build.0 = Release|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.pro gpl.ActiveCfg = Release|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.pro gpl.Build.0 = Release|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.pro gpl nt.ActiveCfg = Release|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.pro gpl nt.Build.0 = Release|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.pro nt.ActiveCfg = Release|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.pro nt.Build.0 = Release|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.Release.ActiveCfg = Release|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.Release.Build.0 = Release|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.TLS.ActiveCfg = Release|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.TLS.Build.0 = Release|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {194F5EE6-9440-4298-A6FE-A9B4B480B44C}.TLS_DEBUG.Build.0 = Debug|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.classic.ActiveCfg = classic|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.classic.Build.0 = classic|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.classic nt.ActiveCfg = classic|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.classic nt.Build.0 = classic|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.Debug.ActiveCfg = Debug|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.Debug.Build.0 = Debug|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.Embedded_Classic.ActiveCfg = classic|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.Embedded_Debug.ActiveCfg = Debug|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.Embedded_Pro.ActiveCfg = Release|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.Embedded_Release.ActiveCfg = Release|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.Max.ActiveCfg = Release|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.Max.Build.0 = Release|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.Max nt.ActiveCfg = Release|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.Max nt.Build.0 = Release|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.nt.ActiveCfg = Release|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.nt.Build.0 = Release|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.pro.ActiveCfg = Release|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.pro.Build.0 = Release|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.pro gpl.ActiveCfg = Release|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.pro gpl.Build.0 = Release|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.pro gpl nt.ActiveCfg = Release|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.pro gpl nt.Build.0 = Release|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.pro nt.ActiveCfg = Release|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.pro nt.Build.0 = Release|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.Release.ActiveCfg = Release|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.Release.Build.0 = Release|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.TLS.ActiveCfg = Release|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.TLS.Build.0 = Release|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {EF833A1E-E358-4B6C-9C27-9489E85041CC}.TLS_DEBUG.Build.0 = Debug|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.classic.ActiveCfg = classic|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.classic.Build.0 = classic|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.classic nt.ActiveCfg = classic|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.classic nt.Build.0 = classic|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.Debug.ActiveCfg = Debug|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.Debug.Build.0 = Debug|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.Embedded_Classic.ActiveCfg = classic|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.Embedded_Debug.ActiveCfg = Debug|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.Embedded_Pro.ActiveCfg = Release|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.Embedded_Release.ActiveCfg = Release|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.Max.ActiveCfg = Release|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.Max.Build.0 = Release|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.Max nt.ActiveCfg = Release|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.Max nt.Build.0 = Release|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.nt.ActiveCfg = Release|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.nt.Build.0 = Release|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.pro.ActiveCfg = Release|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.pro.Build.0 = Release|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.pro gpl.ActiveCfg = Release|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.pro gpl.Build.0 = Release|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.pro gpl nt.ActiveCfg = Release|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.pro gpl nt.Build.0 = Release|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.pro nt.ActiveCfg = Release|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.pro nt.Build.0 = Release|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.Release.ActiveCfg = Release|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.Release.Build.0 = Release|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.TLS.ActiveCfg = Release|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.TLS.Build.0 = Release|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}.TLS_DEBUG.Build.0 = Debug|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.classic.ActiveCfg = classic|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.classic.Build.0 = classic|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.classic nt.ActiveCfg = classic|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.classic nt.Build.0 = classic|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.Debug.ActiveCfg = Debug|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.Debug.Build.0 = Debug|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.Embedded_Classic.ActiveCfg = classic|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.Embedded_Debug.ActiveCfg = Debug|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.Embedded_Pro.ActiveCfg = Release|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.Embedded_Release.ActiveCfg = Release|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.Max.ActiveCfg = Release|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.Max.Build.0 = Release|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.Max nt.ActiveCfg = Release|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.Max nt.Build.0 = Release|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.nt.ActiveCfg = Release|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.nt.Build.0 = Release|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.pro.ActiveCfg = Release|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.pro.Build.0 = Release|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.pro gpl.ActiveCfg = Release|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.pro gpl.Build.0 = Release|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.pro gpl nt.ActiveCfg = Release|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.pro gpl nt.Build.0 = Release|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.pro nt.ActiveCfg = Release|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.pro nt.Build.0 = Release|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.Release.ActiveCfg = Release|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.Release.Build.0 = Release|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.TLS.ActiveCfg = Release|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.TLS.Build.0 = Release|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {D2B00DE0-F6E9-40AF-B90D-A257D014F098}.TLS_DEBUG.Build.0 = Debug|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.classic.ActiveCfg = classic|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.classic.Build.0 = classic|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.classic nt.ActiveCfg = classic|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.classic nt.Build.0 = classic|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.Debug.ActiveCfg = Debug|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.Debug.Build.0 = Debug|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.Embedded_Classic.ActiveCfg = classic|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.Embedded_Debug.ActiveCfg = Debug|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.Embedded_Pro.ActiveCfg = Release|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.Embedded_Release.ActiveCfg = Release|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.Max.ActiveCfg = Release|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.Max.Build.0 = Release|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.Max nt.ActiveCfg = Release|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.Max nt.Build.0 = Release|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.nt.ActiveCfg = Release|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.nt.Build.0 = Release|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.pro.ActiveCfg = Release|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.pro.Build.0 = Release|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.pro gpl.ActiveCfg = Release|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.pro gpl.Build.0 = Release|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.pro gpl nt.ActiveCfg = Release|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.pro gpl nt.Build.0 = Release|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.pro nt.ActiveCfg = Release|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.pro nt.Build.0 = Release|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.Release.ActiveCfg = Release|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.Release.Build.0 = Release|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.TLS.ActiveCfg = Release|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.TLS.Build.0 = Release|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {DC3A4D26-B533-465B-A3C7-9DBBC06DC8BB}.TLS_DEBUG.Build.0 = Debug|Win32 - {67154F28-D076-419E-B149-819EF548E670}.classic.ActiveCfg = classic|Win32 - {67154F28-D076-419E-B149-819EF548E670}.classic.Build.0 = classic|Win32 - {67154F28-D076-419E-B149-819EF548E670}.classic nt.ActiveCfg = classic|Win32 - {67154F28-D076-419E-B149-819EF548E670}.classic nt.Build.0 = classic|Win32 - {67154F28-D076-419E-B149-819EF548E670}.Debug.ActiveCfg = Debug|Win32 - {67154F28-D076-419E-B149-819EF548E670}.Debug.Build.0 = Debug|Win32 - {67154F28-D076-419E-B149-819EF548E670}.Embedded_Classic.ActiveCfg = classic|Win32 - {67154F28-D076-419E-B149-819EF548E670}.Embedded_Debug.ActiveCfg = Debug|Win32 - {67154F28-D076-419E-B149-819EF548E670}.Embedded_Pro.ActiveCfg = Release|Win32 - {67154F28-D076-419E-B149-819EF548E670}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {67154F28-D076-419E-B149-819EF548E670}.Embedded_Release.ActiveCfg = Release|Win32 - {67154F28-D076-419E-B149-819EF548E670}.Max.ActiveCfg = Release|Win32 - {67154F28-D076-419E-B149-819EF548E670}.Max.Build.0 = Release|Win32 - {67154F28-D076-419E-B149-819EF548E670}.Max nt.ActiveCfg = Release|Win32 - {67154F28-D076-419E-B149-819EF548E670}.Max nt.Build.0 = Release|Win32 - {67154F28-D076-419E-B149-819EF548E670}.nt.ActiveCfg = Release|Win32 - {67154F28-D076-419E-B149-819EF548E670}.nt.Build.0 = Release|Win32 - {67154F28-D076-419E-B149-819EF548E670}.pro.ActiveCfg = Release|Win32 - {67154F28-D076-419E-B149-819EF548E670}.pro.Build.0 = Release|Win32 - {67154F28-D076-419E-B149-819EF548E670}.pro gpl.ActiveCfg = Release|Win32 - {67154F28-D076-419E-B149-819EF548E670}.pro gpl.Build.0 = Release|Win32 - {67154F28-D076-419E-B149-819EF548E670}.pro gpl nt.ActiveCfg = Release|Win32 - {67154F28-D076-419E-B149-819EF548E670}.pro gpl nt.Build.0 = Release|Win32 - {67154F28-D076-419E-B149-819EF548E670}.pro nt.ActiveCfg = Release|Win32 - {67154F28-D076-419E-B149-819EF548E670}.pro nt.Build.0 = Release|Win32 - {67154F28-D076-419E-B149-819EF548E670}.Release.ActiveCfg = Release|Win32 - {67154F28-D076-419E-B149-819EF548E670}.Release.Build.0 = Release|Win32 - {67154F28-D076-419E-B149-819EF548E670}.TLS.ActiveCfg = Release|Win32 - {67154F28-D076-419E-B149-819EF548E670}.TLS.Build.0 = Release|Win32 - {67154F28-D076-419E-B149-819EF548E670}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {67154F28-D076-419E-B149-819EF548E670}.TLS_DEBUG.Build.0 = Debug|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.classic.ActiveCfg = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.classic.Build.0 = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.classic nt.ActiveCfg = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.classic nt.Build.0 = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.Debug.ActiveCfg = Debug|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.Debug.Build.0 = Debug|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.Embedded_Classic.ActiveCfg = Debug|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.Embedded_Debug.ActiveCfg = Debug|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.Embedded_Pro.ActiveCfg = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.Embedded_Release.ActiveCfg = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.Max.ActiveCfg = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.Max.Build.0 = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.Max nt.ActiveCfg = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.Max nt.Build.0 = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.nt.ActiveCfg = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.nt.Build.0 = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.pro.ActiveCfg = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.pro.Build.0 = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.pro gpl.ActiveCfg = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.pro gpl.Build.0 = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.pro gpl nt.ActiveCfg = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.pro gpl nt.Build.0 = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.pro nt.ActiveCfg = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.pro nt.Build.0 = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.Release.ActiveCfg = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.Release.Build.0 = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.TLS.ActiveCfg = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.TLS.Build.0 = Release|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {26383276-4843-494B-8BE0-8936ED3EBAAB}.TLS_DEBUG.Build.0 = Debug|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.classic.ActiveCfg = classic|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.classic.Build.0 = classic|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.classic nt.ActiveCfg = classic nt|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.classic nt.Build.0 = classic nt|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.Debug.ActiveCfg = Debug|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.Debug.Build.0 = Debug|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.Embedded_Classic.ActiveCfg = classic|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.Embedded_Debug.ActiveCfg = Debug|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.Embedded_Pro.ActiveCfg = Release|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.Embedded_Release.ActiveCfg = Release|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.Max.ActiveCfg = Max|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.Max.Build.0 = Max|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.Max nt.ActiveCfg = Max nt|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.Max nt.Build.0 = Max nt|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.nt.ActiveCfg = nt|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.nt.Build.0 = nt|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.pro.ActiveCfg = pro|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.pro.Build.0 = pro|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.pro gpl.ActiveCfg = Release|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.pro gpl.Build.0 = Release|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.pro gpl nt.ActiveCfg = nt|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.pro gpl nt.Build.0 = nt|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.pro nt.ActiveCfg = pro nt|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.pro nt.Build.0 = pro nt|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.Release.ActiveCfg = Release|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.Release.Build.0 = Release|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.TLS.ActiveCfg = Release|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.TLS.Build.0 = Release|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {62E85884-3ACF-4F4C-873B-60B878147890}.TLS_DEBUG.Build.0 = Debug|Win32 - {37D9BA79-302E-4582-A545-CB5FF7982EA3}.classic.ActiveCfg = classic|Win32 - {37D9BA79-302E-4582-A545-CB5FF7982EA3}.classic nt.ActiveCfg = classic|Win32 - {37D9BA79-302E-4582-A545-CB5FF7982EA3}.Debug.ActiveCfg = Debug|Win32 - {37D9BA79-302E-4582-A545-CB5FF7982EA3}.Embedded_Classic.ActiveCfg = classic|Win32 - {37D9BA79-302E-4582-A545-CB5FF7982EA3}.Embedded_Debug.ActiveCfg = Debug|Win32 - {37D9BA79-302E-4582-A545-CB5FF7982EA3}.Embedded_Pro.ActiveCfg = Release|Win32 - {37D9BA79-302E-4582-A545-CB5FF7982EA3}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {37D9BA79-302E-4582-A545-CB5FF7982EA3}.Embedded_Release.ActiveCfg = Release|Win32 - {37D9BA79-302E-4582-A545-CB5FF7982EA3}.Max.ActiveCfg = Release|Win32 - {37D9BA79-302E-4582-A545-CB5FF7982EA3}.Max nt.ActiveCfg = Release|Win32 - {37D9BA79-302E-4582-A545-CB5FF7982EA3}.nt.ActiveCfg = Release|Win32 - {37D9BA79-302E-4582-A545-CB5FF7982EA3}.pro.ActiveCfg = pro|Win32 - {37D9BA79-302E-4582-A545-CB5FF7982EA3}.pro gpl.ActiveCfg = Release|Win32 - {37D9BA79-302E-4582-A545-CB5FF7982EA3}.pro gpl nt.ActiveCfg = Release|Win32 - {37D9BA79-302E-4582-A545-CB5FF7982EA3}.pro nt.ActiveCfg = pro|Win32 - {37D9BA79-302E-4582-A545-CB5FF7982EA3}.Release.ActiveCfg = Release|Win32 - {37D9BA79-302E-4582-A545-CB5FF7982EA3}.TLS.ActiveCfg = Release|Win32 - {37D9BA79-302E-4582-A545-CB5FF7982EA3}.TLS.Build.0 = Release|Win32 - {37D9BA79-302E-4582-A545-CB5FF7982EA3}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {37D9BA79-302E-4582-A545-CB5FF7982EA3}.TLS_DEBUG.Build.0 = Debug|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.classic.ActiveCfg = classic|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.classic.Build.0 = classic|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.classic nt.ActiveCfg = classic|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.classic nt.Build.0 = classic|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.Debug.ActiveCfg = Debug|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.Debug.Build.0 = Debug|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.Embedded_Classic.ActiveCfg = classic|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.Embedded_Debug.ActiveCfg = Debug|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.Embedded_Pro.ActiveCfg = Release|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.Embedded_Release.ActiveCfg = Release|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.Max.ActiveCfg = Release|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.Max.Build.0 = Release|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.Max nt.ActiveCfg = Release|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.Max nt.Build.0 = Release|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.nt.ActiveCfg = Release|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.nt.Build.0 = Release|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.pro.ActiveCfg = Release|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.pro.Build.0 = Release|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.pro gpl.ActiveCfg = Release|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.pro gpl.Build.0 = Release|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.pro gpl nt.ActiveCfg = Release|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.pro gpl nt.Build.0 = Release|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.pro nt.ActiveCfg = Release|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.pro nt.Build.0 = Release|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.Release.ActiveCfg = Release|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.Release.Build.0 = Release|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.TLS.ActiveCfg = Release|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.TLS.Build.0 = Release|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {89F24ECE-9953-40EF-BDF4-B41F5631E92B}.TLS_DEBUG.Build.0 = Debug|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.classic.ActiveCfg = classic|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.classic.Build.0 = classic|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.classic nt.ActiveCfg = classic|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.classic nt.Build.0 = classic|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.Debug.ActiveCfg = Debug|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.Debug.Build.0 = Debug|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.Embedded_Classic.ActiveCfg = classic|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.Embedded_Debug.ActiveCfg = Debug|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.Embedded_Pro.ActiveCfg = Release|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.Embedded_Release.ActiveCfg = Release|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.Max.ActiveCfg = Release|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.Max.Build.0 = Release|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.Max nt.ActiveCfg = Release|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.Max nt.Build.0 = Release|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.nt.ActiveCfg = Release|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.nt.Build.0 = Release|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.pro.ActiveCfg = Release|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.pro.Build.0 = Release|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.pro gpl.ActiveCfg = Release|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.pro gpl.Build.0 = Release|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.pro gpl nt.ActiveCfg = Release|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.pro gpl nt.Build.0 = Release|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.pro nt.ActiveCfg = Release|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.pro nt.Build.0 = Release|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.Release.ActiveCfg = Release|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.Release.Build.0 = Release|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.TLS.ActiveCfg = Release|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.TLS.Build.0 = Release|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {AD95DAD3-6DB9-4F8B-A345-7A39A83AAD3D}.TLS_DEBUG.Build.0 = Debug|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.classic.ActiveCfg = Release|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.classic nt.ActiveCfg = Release|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.Debug.ActiveCfg = Debug|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.Embedded_Classic.ActiveCfg = Release|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.Embedded_Classic.Build.0 = Release|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.Embedded_Debug.ActiveCfg = Debug|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.Embedded_Debug.Build.0 = Debug|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.Embedded_Pro.ActiveCfg = Release|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.Embedded_Pro.Build.0 = Release|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.Embedded_ProGPL.Build.0 = Release|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.Embedded_Release.ActiveCfg = Release|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.Embedded_Release.Build.0 = Release|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.Max.ActiveCfg = Release|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.Max nt.ActiveCfg = Release|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.nt.ActiveCfg = Release|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.pro.ActiveCfg = Release|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.pro gpl.ActiveCfg = Release|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.pro gpl nt.ActiveCfg = Release|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.pro nt.ActiveCfg = Release|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.Release.ActiveCfg = Release|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.TLS.ActiveCfg = Release|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.TLS.Build.0 = Release|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {94B86159-C581-42CD-825D-C69CBC237E5C}.TLS_DEBUG.Build.0 = Debug|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.classic.ActiveCfg = classic|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.classic.Build.0 = classic|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.classic nt.ActiveCfg = classic|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.classic nt.Build.0 = classic|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.Debug.ActiveCfg = Debug|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.Debug.Build.0 = Debug|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.Embedded_Classic.ActiveCfg = classic|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.Embedded_Debug.ActiveCfg = Debug|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.Embedded_Pro.ActiveCfg = Release|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.Embedded_Release.ActiveCfg = Release|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.Max.ActiveCfg = Release|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.Max.Build.0 = Release|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.Max nt.ActiveCfg = Release|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.Max nt.Build.0 = Release|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.nt.ActiveCfg = Release|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.nt.Build.0 = Release|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.pro.ActiveCfg = Release|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.pro.Build.0 = Release|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.pro gpl.ActiveCfg = Release|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.pro gpl.Build.0 = Release|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.pro gpl nt.ActiveCfg = Release|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.pro gpl nt.Build.0 = Release|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.pro nt.ActiveCfg = Release|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.pro nt.Build.0 = Release|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.Release.ActiveCfg = Release|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.Release.Build.0 = Release|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.TLS.ActiveCfg = Release|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.TLS.Build.0 = Release|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {3737BFE2-EF25-464F-994D-BD28A9F84528}.TLS_DEBUG.Build.0 = Debug|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.classic.ActiveCfg = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.classic.Build.0 = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.classic nt.ActiveCfg = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.classic nt.Build.0 = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.Debug.ActiveCfg = Debug|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.Debug.Build.0 = Debug|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.Embedded_Classic.ActiveCfg = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.Embedded_Classic.Build.0 = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.Embedded_Debug.ActiveCfg = Debug|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.Embedded_Debug.Build.0 = Debug|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.Embedded_Pro.ActiveCfg = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.Embedded_Pro.Build.0 = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.Embedded_ProGPL.Build.0 = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.Embedded_Release.ActiveCfg = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.Embedded_Release.Build.0 = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.Max.ActiveCfg = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.Max.Build.0 = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.Max nt.ActiveCfg = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.Max nt.Build.0 = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.nt.ActiveCfg = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.nt.Build.0 = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.pro.ActiveCfg = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.pro.Build.0 = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.pro gpl.ActiveCfg = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.pro gpl.Build.0 = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.pro gpl nt.ActiveCfg = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.pro gpl nt.Build.0 = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.pro nt.ActiveCfg = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.pro nt.Build.0 = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.Release.ActiveCfg = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.Release.Build.0 = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.TLS.ActiveCfg = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.TLS.Build.0 = Release|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}.TLS_DEBUG.Build.0 = Debug|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.classic.ActiveCfg = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.classic.Build.0 = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.classic nt.ActiveCfg = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.classic nt.Build.0 = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.Debug.ActiveCfg = Debug|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.Debug.Build.0 = Debug|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.Embedded_Classic.ActiveCfg = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.Embedded_Classic.Build.0 = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.Embedded_Debug.ActiveCfg = Debug|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.Embedded_Debug.Build.0 = Debug|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.Embedded_Pro.ActiveCfg = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.Embedded_Pro.Build.0 = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.Embedded_ProGPL.Build.0 = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.Embedded_Release.ActiveCfg = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.Embedded_Release.Build.0 = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.Max.ActiveCfg = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.Max.Build.0 = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.Max nt.ActiveCfg = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.Max nt.Build.0 = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.nt.ActiveCfg = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.nt.Build.0 = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.pro.ActiveCfg = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.pro.Build.0 = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.pro gpl.ActiveCfg = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.pro gpl.Build.0 = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.pro gpl nt.ActiveCfg = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.pro gpl nt.Build.0 = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.pro nt.ActiveCfg = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.pro nt.Build.0 = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.Release.ActiveCfg = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.Release.Build.0 = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.TLS.ActiveCfg = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.TLS.Build.0 = Release|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {DB28DE80-837F-4497-9AA9-CC0A20584C98}.TLS_DEBUG.Build.0 = Debug|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.classic.ActiveCfg = TLS|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.classic.Build.0 = TLS|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.classic nt.ActiveCfg = TLS|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.classic nt.Build.0 = TLS|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Debug.ActiveCfg = Debug|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Debug.Build.0 = Debug|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Embedded_Classic.ActiveCfg = Release|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Embedded_Classic.Build.0 = Release|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Embedded_Debug.ActiveCfg = Debug|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Embedded_Debug.Build.0 = Debug|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Embedded_Pro.ActiveCfg = Release|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Embedded_Pro.Build.0 = Release|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Embedded_ProGPL.Build.0 = Release|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Embedded_Release.ActiveCfg = Release|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Embedded_Release.Build.0 = Release|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Max.ActiveCfg = Max|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Max.Build.0 = Max|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Max nt.ActiveCfg = Max|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Max nt.Build.0 = Max|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.nt.ActiveCfg = TLS|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.nt.Build.0 = TLS|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro.ActiveCfg = TLS|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro.Build.0 = TLS|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro gpl.ActiveCfg = TLS|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro gpl.Build.0 = TLS|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro gpl nt.ActiveCfg = TLS|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro gpl nt.Build.0 = TLS|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro nt.ActiveCfg = TLS|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro nt.Build.0 = TLS|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Release.ActiveCfg = TLS|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Release.Build.0 = TLS|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.TLS.ActiveCfg = TLS|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.TLS.Build.0 = TLS|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.TLS_DEBUG.ActiveCfg = TLS_DEBUG|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.TLS_DEBUG.Build.0 = TLS_DEBUG|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.classic.ActiveCfg = classic|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.classic.Build.0 = classic|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.classic nt.ActiveCfg = classic|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.classic nt.Build.0 = classic|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.Debug.ActiveCfg = Debug|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.Debug.Build.0 = Debug|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.Embedded_Classic.ActiveCfg = classic|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.Embedded_Debug.ActiveCfg = Debug|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.Embedded_Pro.ActiveCfg = Release|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.Embedded_Release.ActiveCfg = Release|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.Max.ActiveCfg = Release|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.Max.Build.0 = Release|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.Max nt.ActiveCfg = Release|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.Max nt.Build.0 = Release|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.nt.ActiveCfg = Release|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.nt.Build.0 = Release|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.pro.ActiveCfg = Release|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.pro.Build.0 = Release|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.pro gpl.ActiveCfg = Release|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.pro gpl.Build.0 = Release|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.pro gpl nt.ActiveCfg = Release|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.pro gpl nt.Build.0 = Release|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.pro nt.ActiveCfg = Release|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.pro nt.Build.0 = Release|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.Release.ActiveCfg = Release|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.Release.Build.0 = Release|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.TLS.ActiveCfg = Release|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.TLS.Build.0 = Release|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.TLS_DEBUG.Build.0 = Debug|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.classic.ActiveCfg = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.classic.Build.0 = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.classic nt.ActiveCfg = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.classic nt.Build.0 = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.Debug.ActiveCfg = Debug|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.Debug.Build.0 = Debug|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.Embedded_Classic.ActiveCfg = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.Embedded_Classic.Build.0 = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.Embedded_Debug.ActiveCfg = Debug|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.Embedded_Debug.Build.0 = Debug|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.Embedded_Pro.ActiveCfg = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.Embedded_Pro.Build.0 = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.Embedded_ProGPL.Build.0 = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.Embedded_Release.ActiveCfg = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.Embedded_Release.Build.0 = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.Max.ActiveCfg = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.Max.Build.0 = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.Max nt.ActiveCfg = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.Max nt.Build.0 = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.nt.ActiveCfg = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.nt.Build.0 = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.pro.ActiveCfg = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.pro.Build.0 = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.pro gpl.ActiveCfg = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.pro gpl.Build.0 = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.pro gpl nt.ActiveCfg = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.pro gpl nt.Build.0 = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.pro nt.ActiveCfg = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.pro nt.Build.0 = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.Release.ActiveCfg = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.Release.Build.0 = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.TLS.ActiveCfg = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.TLS.Build.0 = Release|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}.TLS_DEBUG.Build.0 = Debug|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.classic.ActiveCfg = classic|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.classic.Build.0 = classic|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.classic nt.ActiveCfg = classic|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.classic nt.Build.0 = classic|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.Debug.ActiveCfg = Debug|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.Debug.Build.0 = Debug|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.Embedded_Classic.ActiveCfg = classic|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.Embedded_Debug.ActiveCfg = Debug|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.Embedded_Pro.ActiveCfg = Release|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.Embedded_Release.ActiveCfg = Release|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.Max.ActiveCfg = Release|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.Max.Build.0 = Release|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.Max nt.ActiveCfg = Release|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.Max nt.Build.0 = Release|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.nt.ActiveCfg = Release|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.nt.Build.0 = Release|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.pro.ActiveCfg = Release|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.pro.Build.0 = Release|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.pro gpl.ActiveCfg = Release|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.pro gpl.Build.0 = Release|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.pro gpl nt.ActiveCfg = Release|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.pro gpl nt.Build.0 = Release|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.pro nt.ActiveCfg = Release|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.pro nt.Build.0 = Release|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.Release.ActiveCfg = Release|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.Release.Build.0 = Release|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.TLS.ActiveCfg = Release|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.TLS.Build.0 = Release|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {16699B52-ECC6-4A96-A99F-A043059BA2E7}.TLS_DEBUG.Build.0 = Debug|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.classic.ActiveCfg = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.classic.Build.0 = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.classic nt.ActiveCfg = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.classic nt.Build.0 = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.Debug.ActiveCfg = Debug|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.Debug.Build.0 = Debug|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.Embedded_Classic.ActiveCfg = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.Embedded_Classic.Build.0 = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.Embedded_Debug.ActiveCfg = Debug|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.Embedded_Debug.Build.0 = Debug|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.Embedded_Pro.ActiveCfg = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.Embedded_Pro.Build.0 = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.Embedded_ProGPL.Build.0 = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.Embedded_Release.ActiveCfg = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.Embedded_Release.Build.0 = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.Max.ActiveCfg = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.Max.Build.0 = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.Max nt.ActiveCfg = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.Max nt.Build.0 = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.nt.ActiveCfg = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.nt.Build.0 = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.pro.ActiveCfg = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.pro.Build.0 = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.pro gpl.ActiveCfg = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.pro gpl.Build.0 = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.pro gpl nt.ActiveCfg = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.pro gpl nt.Build.0 = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.pro nt.ActiveCfg = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.pro nt.Build.0 = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.Release.ActiveCfg = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.Release.Build.0 = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.TLS.ActiveCfg = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.TLS.Build.0 = Release|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {EEC1300B-85A5-497C-B3E1-F708021DF859}.TLS_DEBUG.Build.0 = Debug|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.classic.ActiveCfg = Release|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.classic.Build.0 = Release|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.classic nt.ActiveCfg = Release|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.Debug.ActiveCfg = Debug|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.Debug.Build.0 = Debug|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.Embedded_Classic.ActiveCfg = Debug|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.Embedded_Debug.ActiveCfg = Debug|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.Embedded_Pro.ActiveCfg = Release|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.Embedded_Release.ActiveCfg = Release|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.Max.ActiveCfg = Release|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.Max nt.ActiveCfg = Release|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.nt.ActiveCfg = Release|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.pro.ActiveCfg = Release|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.pro gpl.ActiveCfg = Release|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.pro gpl.Build.0 = Release|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.pro gpl nt.ActiveCfg = Release|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.pro gpl nt.Build.0 = Release|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.pro nt.ActiveCfg = Release|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.Release.ActiveCfg = Release|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.Release.Build.0 = Release|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.TLS.ActiveCfg = Release|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.TLS.Build.0 = Release|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {8CB5AB80-05DA-49DA-BC9F-EAC20667E0D0}.TLS_DEBUG.Build.0 = Debug|Win32 - {6F01B69C-B1A5-4C45-B3A9-744E1EB0BED5}.classic.ActiveCfg = Release|Win32 - {6F01B69C-B1A5-4C45-B3A9-744E1EB0BED5}.classic nt.ActiveCfg = Release|Win32 - {6F01B69C-B1A5-4C45-B3A9-744E1EB0BED5}.Debug.ActiveCfg = Release|Win32 - {6F01B69C-B1A5-4C45-B3A9-744E1EB0BED5}.Embedded_Classic.ActiveCfg = Release|Win32 - {6F01B69C-B1A5-4C45-B3A9-744E1EB0BED5}.Embedded_Debug.ActiveCfg = Release|Win32 - {6F01B69C-B1A5-4C45-B3A9-744E1EB0BED5}.Embedded_Pro.ActiveCfg = Release|Win32 - {6F01B69C-B1A5-4C45-B3A9-744E1EB0BED5}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {6F01B69C-B1A5-4C45-B3A9-744E1EB0BED5}.Embedded_Release.ActiveCfg = Release|Win32 - {6F01B69C-B1A5-4C45-B3A9-744E1EB0BED5}.Max.ActiveCfg = Release|Win32 - {6F01B69C-B1A5-4C45-B3A9-744E1EB0BED5}.Max nt.ActiveCfg = Release|Win32 - {6F01B69C-B1A5-4C45-B3A9-744E1EB0BED5}.nt.ActiveCfg = Release|Win32 - {6F01B69C-B1A5-4C45-B3A9-744E1EB0BED5}.pro.ActiveCfg = Release|Win32 - {6F01B69C-B1A5-4C45-B3A9-744E1EB0BED5}.pro gpl.ActiveCfg = Release|Win32 - {6F01B69C-B1A5-4C45-B3A9-744E1EB0BED5}.pro gpl nt.ActiveCfg = Release|Win32 - {6F01B69C-B1A5-4C45-B3A9-744E1EB0BED5}.pro nt.ActiveCfg = Release|Win32 - {6F01B69C-B1A5-4C45-B3A9-744E1EB0BED5}.Release.ActiveCfg = Release|Win32 - {6F01B69C-B1A5-4C45-B3A9-744E1EB0BED5}.TLS.ActiveCfg = Release|Win32 - {6F01B69C-B1A5-4C45-B3A9-744E1EB0BED5}.TLS.Build.0 = Release|Win32 - {6F01B69C-B1A5-4C45-B3A9-744E1EB0BED5}.TLS_DEBUG.ActiveCfg = Release|Win32 - {6F01B69C-B1A5-4C45-B3A9-744E1EB0BED5}.TLS_DEBUG.Build.0 = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.classic.ActiveCfg = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.classic.Build.0 = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.classic nt.ActiveCfg = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.classic nt.Build.0 = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.Debug.ActiveCfg = Debug|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.Debug.Build.0 = Debug|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.Embedded_Classic.ActiveCfg = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.Embedded_Debug.ActiveCfg = Debug|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.Embedded_Pro.ActiveCfg = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.Embedded_Release.ActiveCfg = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.Max.ActiveCfg = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.Max.Build.0 = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.Max nt.ActiveCfg = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.Max nt.Build.0 = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.nt.ActiveCfg = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.nt.Build.0 = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.pro.ActiveCfg = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.pro.Build.0 = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.pro gpl.ActiveCfg = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.pro gpl.Build.0 = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.pro gpl nt.ActiveCfg = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.pro gpl nt.Build.0 = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.pro nt.ActiveCfg = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.pro nt.Build.0 = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.Release.ActiveCfg = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.Release.Build.0 = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.TLS.ActiveCfg = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.TLS.Build.0 = Release|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {7FFA3009-E0E1-4E4E-9CDF-F408AA108CC8}.TLS_DEBUG.Build.0 = Debug|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.classic.ActiveCfg = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.classic.Build.0 = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.classic nt.ActiveCfg = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.classic nt.Build.0 = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.Debug.ActiveCfg = Debug|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.Debug.Build.0 = Debug|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.Embedded_Classic.ActiveCfg = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.Embedded_Classic.Build.0 = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.Embedded_Debug.ActiveCfg = Debug|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.Embedded_Debug.Build.0 = Debug|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.Embedded_Pro.ActiveCfg = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.Embedded_Pro.Build.0 = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.Embedded_ProGPL.Build.0 = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.Embedded_Release.ActiveCfg = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.Embedded_Release.Build.0 = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.Max.ActiveCfg = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.Max.Build.0 = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.Max nt.ActiveCfg = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.Max nt.Build.0 = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.nt.ActiveCfg = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.nt.Build.0 = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.pro.ActiveCfg = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.pro.Build.0 = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.pro gpl.ActiveCfg = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.pro gpl.Build.0 = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.pro gpl nt.ActiveCfg = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.pro gpl nt.Build.0 = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.pro nt.ActiveCfg = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.pro nt.Build.0 = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.Release.ActiveCfg = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.Release.Build.0 = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.TLS.ActiveCfg = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.TLS.Build.0 = Release|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}.TLS_DEBUG.Build.0 = Debug|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.classic.ActiveCfg = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.classic.Build.0 = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.classic nt.ActiveCfg = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.classic nt.Build.0 = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.Debug.ActiveCfg = Debug|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.Debug.Build.0 = Debug|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.Embedded_Classic.ActiveCfg = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.Embedded_Classic.Build.0 = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.Embedded_Debug.ActiveCfg = Debug|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.Embedded_Debug.Build.0 = Debug|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.Embedded_Pro.ActiveCfg = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.Embedded_Pro.Build.0 = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.Embedded_ProGPL.Build.0 = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.Embedded_Release.ActiveCfg = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.Embedded_Release.Build.0 = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.Max.ActiveCfg = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.Max.Build.0 = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.Max nt.ActiveCfg = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.Max nt.Build.0 = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.nt.ActiveCfg = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.nt.Build.0 = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.pro.ActiveCfg = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.pro.Build.0 = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.pro gpl.ActiveCfg = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.pro gpl.Build.0 = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.pro gpl nt.ActiveCfg = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.pro gpl nt.Build.0 = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.pro nt.ActiveCfg = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.pro nt.Build.0 = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.Release.ActiveCfg = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.Release.Build.0 = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.TLS.ActiveCfg = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.TLS.Build.0 = Release|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {8762A9B8-72A9-462E-A9A2-F3265081F8AF}.TLS_DEBUG.Build.0 = Debug|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.classic.ActiveCfg = classic|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.classic.Build.0 = classic|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.classic nt.ActiveCfg = classic|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.classic nt.Build.0 = classic|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.Debug.ActiveCfg = Debug|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.Debug.Build.0 = Debug|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.Embedded_Classic.ActiveCfg = classic|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.Embedded_Debug.ActiveCfg = Debug|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.Embedded_Pro.ActiveCfg = Release|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.Embedded_Release.ActiveCfg = Release|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.Max.ActiveCfg = Release|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.Max.Build.0 = Release|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.Max nt.ActiveCfg = Release|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.Max nt.Build.0 = Release|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.nt.ActiveCfg = Release|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.nt.Build.0 = Release|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.pro.ActiveCfg = Release|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.pro.Build.0 = Release|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.pro gpl.ActiveCfg = Release|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.pro gpl.Build.0 = Release|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.pro gpl nt.ActiveCfg = Release|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.pro gpl nt.Build.0 = Release|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.pro nt.ActiveCfg = Release|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.pro nt.Build.0 = Release|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.Release.ActiveCfg = Release|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.Release.Build.0 = Release|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.TLS.ActiveCfg = Release|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.TLS.Build.0 = Release|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {8961F149-C68A-4154-A499-A2AB39E607E8}.TLS_DEBUG.Build.0 = Debug|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.classic.ActiveCfg = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.classic.Build.0 = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.classic nt.ActiveCfg = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.classic nt.Build.0 = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.Debug.ActiveCfg = Debug|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.Debug.Build.0 = Debug|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.Embedded_Classic.ActiveCfg = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.Embedded_Debug.ActiveCfg = Debug|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.Embedded_Pro.ActiveCfg = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.Embedded_Release.ActiveCfg = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.Max.ActiveCfg = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.Max.Build.0 = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.Max nt.ActiveCfg = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.nt.ActiveCfg = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.nt.Build.0 = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.pro.ActiveCfg = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.pro.Build.0 = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.pro gpl.ActiveCfg = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.pro gpl.Build.0 = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.pro gpl nt.ActiveCfg = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.pro gpl nt.Build.0 = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.pro nt.ActiveCfg = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.pro nt.Build.0 = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.Release.ActiveCfg = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.Release.Build.0 = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.TLS.ActiveCfg = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.TLS.Build.0 = Release|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.TLS_DEBUG.Build.0 = Debug|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.classic.ActiveCfg = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.classic.Build.0 = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.classic nt.ActiveCfg = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.classic nt.Build.0 = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.Debug.ActiveCfg = Debug|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.Debug.Build.0 = Debug|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.Embedded_Classic.ActiveCfg = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.Embedded_Debug.ActiveCfg = Debug|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.Embedded_Pro.ActiveCfg = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.Embedded_Release.ActiveCfg = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.Max.ActiveCfg = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.Max.Build.0 = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.Max nt.ActiveCfg = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.Max nt.Build.0 = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.nt.ActiveCfg = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.nt.Build.0 = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.pro.ActiveCfg = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.pro.Build.0 = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.pro gpl.ActiveCfg = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.pro gpl.Build.0 = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.pro gpl nt.ActiveCfg = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.pro gpl nt.Build.0 = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.pro nt.ActiveCfg = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.pro nt.Build.0 = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.Release.ActiveCfg = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.Release.Build.0 = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.TLS.ActiveCfg = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.TLS.Build.0 = Release|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {6189F838-21C6-42A1-B2D0-9146316573F7}.TLS_DEBUG.Build.0 = Debug|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.classic.ActiveCfg = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.classic.Build.0 = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.classic nt.ActiveCfg = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.classic nt.Build.0 = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.Debug.ActiveCfg = Debug|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.Debug.Build.0 = Debug|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.Embedded_Classic.ActiveCfg = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.Embedded_Classic.Build.0 = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.Embedded_Debug.ActiveCfg = Debug|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.Embedded_Debug.Build.0 = Debug|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.Embedded_Pro.ActiveCfg = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.Embedded_Pro.Build.0 = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.Embedded_ProGPL.Build.0 = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.Embedded_Release.ActiveCfg = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.Embedded_Release.Build.0 = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.Max.ActiveCfg = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.Max.Build.0 = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.Max nt.ActiveCfg = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.Max nt.Build.0 = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.nt.ActiveCfg = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.nt.Build.0 = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.pro.ActiveCfg = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.pro.Build.0 = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.pro gpl.ActiveCfg = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.pro gpl.Build.0 = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.pro gpl nt.ActiveCfg = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.pro gpl nt.Build.0 = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.pro nt.ActiveCfg = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.pro nt.Build.0 = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.Release.ActiveCfg = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.Release.Build.0 = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.TLS.ActiveCfg = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.TLS.Build.0 = Release|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}.TLS_DEBUG.Build.0 = Debug|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.classic.ActiveCfg = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.classic.Build.0 = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.classic nt.ActiveCfg = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.classic nt.Build.0 = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.Debug.ActiveCfg = Debug|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.Debug.Build.0 = Debug|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.Embedded_Classic.ActiveCfg = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.Embedded_Classic.Build.0 = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.Embedded_Debug.ActiveCfg = Debug|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.Embedded_Debug.Build.0 = Debug|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.Embedded_Pro.ActiveCfg = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.Embedded_Pro.Build.0 = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.Embedded_ProGPL.Build.0 = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.Embedded_Release.ActiveCfg = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.Embedded_Release.Build.0 = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.Max.ActiveCfg = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.Max.Build.0 = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.Max nt.ActiveCfg = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.Max nt.Build.0 = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.nt.ActiveCfg = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.nt.Build.0 = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.pro.ActiveCfg = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.pro.Build.0 = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.pro gpl.ActiveCfg = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.pro gpl.Build.0 = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.pro gpl nt.ActiveCfg = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.pro gpl nt.Build.0 = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.pro nt.ActiveCfg = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.pro nt.Build.0 = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.Release.ActiveCfg = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.Release.Build.0 = Release|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.TLS.ActiveCfg = TLS|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.TLS.Build.0 = TLS|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.TLS_DEBUG.ActiveCfg = TLS_DEBUG|Win32 - {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}.TLS_DEBUG.Build.0 = TLS_DEBUG|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.classic.ActiveCfg = TLS|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.classic.Build.0 = TLS|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.classic nt.ActiveCfg = TLS|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.classic nt.Build.0 = TLS|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.Debug.ActiveCfg = Debug|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.Debug.Build.0 = Debug|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.Embedded_Classic.ActiveCfg = Release|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.Embedded_Classic.Build.0 = Release|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.Embedded_Debug.ActiveCfg = Debug|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.Embedded_Debug.Build.0 = Debug|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.Embedded_Pro.ActiveCfg = Release|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.Embedded_Pro.Build.0 = Release|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.Embedded_ProGPL.Build.0 = Release|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.Embedded_Release.ActiveCfg = Release|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.Embedded_Release.Build.0 = Release|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.Max.ActiveCfg = Release|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.Max.Build.0 = Release|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.Max nt.ActiveCfg = Release|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.Max nt.Build.0 = Release|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.nt.ActiveCfg = TLS|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.nt.Build.0 = TLS|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.pro.ActiveCfg = TLS|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.pro.Build.0 = TLS|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.pro gpl.ActiveCfg = TLS|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.pro gpl.Build.0 = TLS|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.pro gpl nt.ActiveCfg = TLS|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.pro gpl nt.Build.0 = TLS|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.pro nt.ActiveCfg = TLS|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.pro nt.Build.0 = TLS|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.Release.ActiveCfg = TLS|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.Release.Build.0 = TLS|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.TLS.ActiveCfg = TLS|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.TLS.Build.0 = TLS|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.TLS_DEBUG.ActiveCfg = TLS_DEBUG|Win32 - {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}.TLS_DEBUG.Build.0 = TLS_DEBUG|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.classic.ActiveCfg = nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.classic.Build.0 = nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.classic nt.ActiveCfg = nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.classic nt.Build.0 = nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.Debug.ActiveCfg = Debug|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.Debug.Build.0 = Debug|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.Embedded_Classic.ActiveCfg = nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.Embedded_Classic.Build.0 = nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.Embedded_Debug.ActiveCfg = Debug|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.Embedded_Debug.Build.0 = Debug|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.Embedded_Pro.ActiveCfg = nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.Embedded_Pro.Build.0 = nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.Embedded_ProGPL.ActiveCfg = nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.Embedded_ProGPL.Build.0 = nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.Embedded_Release.ActiveCfg = Release|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.Embedded_Release.Build.0 = Release|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.Max.ActiveCfg = Max nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.Max.Build.0 = Max nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.Max nt.ActiveCfg = Max nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.Max nt.Build.0 = Max nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.nt.ActiveCfg = nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.nt.Build.0 = nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.pro.ActiveCfg = nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.pro.Build.0 = nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.pro gpl.ActiveCfg = nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.pro gpl.Build.0 = nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.pro gpl nt.ActiveCfg = nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.pro gpl nt.Build.0 = nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.pro nt.ActiveCfg = nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.pro nt.Build.0 = nt|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.Release.ActiveCfg = Release|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.Release.Build.0 = Release|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.TLS.ActiveCfg = Release|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.TLS.Build.0 = Release|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}.TLS_DEBUG.Build.0 = Debug|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.classic.ActiveCfg = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.classic.Build.0 = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.classic nt.ActiveCfg = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.classic nt.Build.0 = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.Debug.ActiveCfg = Debug|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.Debug.Build.0 = Debug|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.Embedded_Classic.ActiveCfg = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.Embedded_Classic.Build.0 = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.Embedded_Debug.ActiveCfg = Debug|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.Embedded_Debug.Build.0 = Debug|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.Embedded_Pro.ActiveCfg = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.Embedded_Pro.Build.0 = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.Embedded_ProGPL.Build.0 = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.Embedded_Release.ActiveCfg = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.Embedded_Release.Build.0 = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.Max.ActiveCfg = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.Max.Build.0 = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.Max nt.ActiveCfg = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.Max nt.Build.0 = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.nt.ActiveCfg = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.nt.Build.0 = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.pro.ActiveCfg = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.pro.Build.0 = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.pro gpl.ActiveCfg = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.pro gpl.Build.0 = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.pro gpl nt.ActiveCfg = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.pro gpl nt.Build.0 = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.pro nt.ActiveCfg = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.pro nt.Build.0 = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.Release.ActiveCfg = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.Release.Build.0 = Release|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.TLS.ActiveCfg = TLS|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.TLS.Build.0 = TLS|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.TLS_DEBUG.ActiveCfg = TLS_DEBUG|Win32 - {86276BF8-FB93-49C8-8157-4F2181375CD0}.TLS_DEBUG.Build.0 = TLS_DEBUG|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.classic.ActiveCfg = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.classic.Build.0 = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.classic nt.ActiveCfg = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.classic nt.Build.0 = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.Debug.ActiveCfg = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.Debug.Build.0 = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.Embedded_Classic.ActiveCfg = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.Embedded_Classic.Build.0 = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.Embedded_Debug.ActiveCfg = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.Embedded_Debug.Build.0 = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.Embedded_Pro.ActiveCfg = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.Embedded_Pro.Build.0 = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.Embedded_ProGPL.ActiveCfg = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.Embedded_ProGPL.Build.0 = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.Embedded_Release.ActiveCfg = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.Embedded_Release.Build.0 = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.Max.ActiveCfg = Max|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.Max.Build.0 = Max|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.Max nt.ActiveCfg = Max|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.Max nt.Build.0 = Max|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.nt.ActiveCfg = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.nt.Build.0 = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.pro.ActiveCfg = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.pro.Build.0 = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.pro gpl.ActiveCfg = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.pro gpl.Build.0 = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.pro gpl nt.ActiveCfg = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.pro gpl nt.Build.0 = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.pro nt.ActiveCfg = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.pro nt.Build.0 = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.Release.ActiveCfg = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.Release.Build.0 = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.TLS.ActiveCfg = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.TLS.Build.0 = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.TLS_DEBUG.Build.0 = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.classic.ActiveCfg = classic|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.classic.Build.0 = classic|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.classic nt.ActiveCfg = classic|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.classic nt.Build.0 = classic|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.Debug.ActiveCfg = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.Debug.Build.0 = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.Embedded_Classic.ActiveCfg = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.Embedded_Classic.Build.0 = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.Embedded_Debug.ActiveCfg = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.Embedded_Debug.Build.0 = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.Embedded_Pro.ActiveCfg = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.Embedded_Pro.Build.0 = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.Embedded_ProGPL.ActiveCfg = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.Embedded_ProGPL.Build.0 = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.Embedded_Release.ActiveCfg = Release|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.Embedded_Release.Build.0 = Release|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.Max.ActiveCfg = Release|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.Max.Build.0 = Release|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.Max nt.ActiveCfg = Release|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.Max nt.Build.0 = Release|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.nt.ActiveCfg = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.nt.Build.0 = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.pro.ActiveCfg = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.pro.Build.0 = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.pro gpl.ActiveCfg = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.pro gpl.Build.0 = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.pro gpl nt.ActiveCfg = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.pro gpl nt.Build.0 = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.pro nt.ActiveCfg = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.pro nt.Build.0 = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.Release.ActiveCfg = Release|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.Release.Build.0 = Release|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.TLS.ActiveCfg = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.TLS.Build.0 = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.TLS_DEBUG.ActiveCfg = Debug|Win32 - {2E9332CF-072A-4381-BF37-17C5AB4F8583}.TLS_DEBUG.Build.0 = Debug|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.classic.ActiveCfg = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.classic.Build.0 = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.classic nt.ActiveCfg = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.classic nt.Build.0 = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Debug.ActiveCfg = Debug|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Debug.Build.0 = Debug|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Embedded_Classic.ActiveCfg = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Embedded_Classic.Build.0 = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Embedded_Debug.ActiveCfg = Debug|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Embedded_Debug.Build.0 = Debug|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Embedded_Pro.ActiveCfg = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Embedded_Pro.Build.0 = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Embedded_ProGPL.Build.0 = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Embedded_Release.ActiveCfg = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Embedded_Release.Build.0 = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Max.ActiveCfg = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Max.Build.0 = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Max nt.ActiveCfg = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Max nt.Build.0 = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.nt.ActiveCfg = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.nt.Build.0 = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.pro.ActiveCfg = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.pro.Build.0 = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.pro gpl.ActiveCfg = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.pro gpl.Build.0 = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.pro gpl nt.ActiveCfg = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.pro gpl nt.Build.0 = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.pro nt.ActiveCfg = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.pro nt.Build.0 = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Release.ActiveCfg = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Release.Build.0 = Release|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.TLS.ActiveCfg = TLS|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.TLS.Build.0 = TLS|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.TLS_DEBUG.ActiveCfg = TLS_DEBUG|Win32 - {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.TLS_DEBUG.Build.0 = TLS_DEBUG|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.classic.ActiveCfg = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.classic.Build.0 = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.classic nt.ActiveCfg = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.classic nt.Build.0 = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.Debug.ActiveCfg = Debug|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.Debug.Build.0 = Debug|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.Embedded_Classic.ActiveCfg = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.Embedded_Classic.Build.0 = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.Embedded_Debug.ActiveCfg = Debug|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.Embedded_Debug.Build.0 = Debug|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.Embedded_Pro.ActiveCfg = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.Embedded_Pro.Build.0 = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.Embedded_ProGPL.Build.0 = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.Embedded_Release.ActiveCfg = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.Embedded_Release.Build.0 = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.Max.ActiveCfg = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.Max.Build.0 = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.Max nt.ActiveCfg = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.Max nt.Build.0 = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.nt.ActiveCfg = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.nt.Build.0 = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.pro.ActiveCfg = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.pro.Build.0 = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.pro gpl.ActiveCfg = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.pro gpl.Build.0 = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.pro gpl nt.ActiveCfg = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.pro gpl nt.Build.0 = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.pro nt.ActiveCfg = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.pro nt.Build.0 = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.Release.ActiveCfg = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.Release.Build.0 = Release|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.TLS.ActiveCfg = TLS|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.TLS.Build.0 = TLS|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.TLS_DEBUG.ActiveCfg = TLS_DEBUG|Win32 - {6B6812DB-636E-465D-B53D-5012F237E539}.TLS_DEBUG.Build.0 = TLS_DEBUG|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.classic.ActiveCfg = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.classic.Build.0 = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.classic nt.ActiveCfg = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.classic nt.Build.0 = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.Debug.ActiveCfg = Debug|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.Debug.Build.0 = Debug|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.Embedded_Classic.ActiveCfg = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.Embedded_Classic.Build.0 = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.Embedded_Debug.ActiveCfg = Debug|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.Embedded_Debug.Build.0 = Debug|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.Embedded_Pro.ActiveCfg = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.Embedded_Pro.Build.0 = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.Embedded_ProGPL.ActiveCfg = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.Embedded_ProGPL.Build.0 = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.Embedded_Release.ActiveCfg = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.Embedded_Release.Build.0 = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.Max.ActiveCfg = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.Max.Build.0 = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.Max nt.ActiveCfg = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.Max nt.Build.0 = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.nt.ActiveCfg = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.nt.Build.0 = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.pro.ActiveCfg = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.pro.Build.0 = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.pro gpl.ActiveCfg = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.pro gpl.Build.0 = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.pro gpl nt.ActiveCfg = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.pro gpl nt.Build.0 = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.pro nt.ActiveCfg = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.pro nt.Build.0 = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.Release.ActiveCfg = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.Release.Build.0 = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.TLS.ActiveCfg = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.TLS.Build.0 = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.TLS_DEBUG.ActiveCfg = Release|Win32 - {BFCDA391-91A5-45F5-A14F-1011F8424113}.TLS_DEBUG.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal diff --git a/VC++Files/mysql_ia64.dsw b/VC++Files/mysql_ia64.dsw deleted file mode 100644 index 0f9c5471f7e..00000000000 --- a/VC++Files/mysql_ia64.dsw +++ /dev/null @@ -1,794 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "mysys"=".\mysys\mysys_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - - -############################################################################### - -Project: "strings"=".\strings\strings_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "vio"=".\vio\vio_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "regex"=".\regex\regex_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "zlib"=".\zlib\zlib_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "comp_err"=".\comp_err\comp_err_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency -}}} - -############################################################################### - -Project: "dbug"=".\dbug\dbug_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "mysqlclient"=".\client\mysqlclient_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name zlib - End Project Dependency -}}} - -############################################################################### - -Project: "myisam"=".\storage\myisam\myisam_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency -}}} - -############################################################################### - -Project: "myisammrg"=".\storage\myisammrg\myisammrg_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "myisampack"=".\myisampack\myisampack_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency - Begin Project Dependency - Project_Dep_Name myisam - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency - Begin Project Dependency - Project_Dep_Name zlib - End Project Dependency -}}} - -############################################################################### - -Project: "heap"=".\storage\heap\heap_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "innobase"=".\storage\innobase\innobase_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "isam"=".\isam\isam_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "isamchk"=".\isamchk\isamchk_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name isam - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency -}}} - -############################################################################### - -Project: "libmysql"=".\libmysql\libmysql_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name zlib - End Project Dependency -}}} - -############################################################################### - -Project: "libmysqld"=".\libmysqld\libmysqld_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency - Begin Project Dependency - Project_Dep_Name heap - End Project Dependency - Begin Project Dependency - Project_Dep_Name innobase - End Project Dependency - Begin Project Dependency - Project_Dep_Name myisam - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name regex - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency - Begin Project Dependency - Project_Dep_Name myisammrg - End Project Dependency - Begin Project Dependency - Project_Dep_Name zlib - End Project Dependency -}}} - -############################################################################### - -Project: "merge"=".\merge\merge_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "myTest"=".\libmysqltest\myTest_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name libmysql - End Project Dependency -}}} - -############################################################################### - -Project: "my_print_defaults"=".\my_print_defaults\my_print_defaults_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency -}}} - -############################################################################### - -Project: "myisam_ftdump"=".\myisam_ftdump\myisam_ftdump_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency - Begin Project Dependency - Project_Dep_Name myisam - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency -}}} - -############################################################################### - -Project: "myisamchk"=".\myisamchk\myisamchk_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency - Begin Project Dependency - Project_Dep_Name myisam - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency - Begin Project Dependency - Project_Dep_Name zlib - End Project Dependency -}}} - -############################################################################### - -Project: "myisamlog"=".\myisamlog\myisamlog_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency - Begin Project Dependency - Project_Dep_Name myisam - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency - Begin Project Dependency - Project_Dep_Name zlib - End Project Dependency -}}} - -############################################################################### - -Project: "mysql"=".\client\mysql_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mysqlclient - End Project Dependency -}}} - -############################################################################### - -Project: "mysqladmin"=".\client\mysqladmin_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mysqlclient - End Project Dependency - Begin Project Dependency - Project_Dep_Name zlib - End Project Dependency -}}} - -############################################################################### - -Project: "mysql_upgrade"=".\client\mysql_upgrade_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mysqlclient - End Project Dependency - Begin Project Dependency - Project_Dep_Name zlib - End Project Dependency -}}} - -############################################################################### - -Project: "mysqlbinlog"=".\mysqlbinlog\mysqlbinlog_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mysqlclient - End Project Dependency -}}} - -############################################################################### - -Project: "mysqlcheck"=".\mysqlcheck\mysqlcheck_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mysqlclient - End Project Dependency -}}} - -############################################################################### - -Project: "mysqld"=".\sql\mysqld_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name heap - End Project Dependency - Begin Project Dependency - Project_Dep_Name isam - End Project Dependency - Begin Project Dependency - Project_Dep_Name merge - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name regex - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency - Begin Project Dependency - Project_Dep_Name dbug_ia64 - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysql_ia64 - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysqladmin_ia64 - Begin Project Dependency - Project_Dep_Name mysql_upgrade_ia64 - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysqldump - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysqlimport - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysql_upgrade - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysqlshow - End Project Dependency - Begin Project Dependency - Project_Dep_Name myTest - End Project Dependency - Begin Project Dependency - Project_Dep_Name thr_test - End Project Dependency - Begin Project Dependency - Project_Dep_Name replace - End Project Dependency - Begin Project Dependency - Project_Dep_Name zlib - End Project Dependency - Begin Project Dependency - Project_Dep_Name myisam - End Project Dependency - Begin Project Dependency - Project_Dep_Name myisammrg - End Project Dependency - Begin Project Dependency - Project_Dep_Name vio - End Project Dependency - Begin Project Dependency - Project_Dep_Name innobase - End Project Dependency -}}} - -############################################################################### - -Project: "mysqldemb"=".\mysqldemb\mysqldemb_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "mysqldump"=".\client\mysqldump_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mysqlclient - End Project Dependency -}}} - -############################################################################### - -Project: "mysqlimport"=".\client\mysqlimport_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mysqlclient - End Project Dependency -}}} - -############################################################################### - -Project: "mysql_upgrade"=".\client\mysql_upgrade_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mysqlclient - End Project Dependency -}}} - -############################################################################### - -Project: "mysqlserver"=".\mysqlserver\mysqlserver_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency - Begin Project Dependency - Project_Dep_Name heap - End Project Dependency - Begin Project Dependency - Project_Dep_Name innobase - End Project Dependency - Begin Project Dependency - Project_Dep_Name merge - End Project Dependency - Begin Project Dependency - Project_Dep_Name myisam - End Project Dependency - Begin Project Dependency - Project_Dep_Name myisammrg - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysqldemb - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name regex - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency - Begin Project Dependency - Project_Dep_Name zlib - End Project Dependency -}}} - -############################################################################### - -Project: "mysqlshow"=".\client\mysqlshow_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mysqlclient - End Project Dependency -}}} - -############################################################################### - -Project: "pack_isam"=".\pack_isam\pack_isam_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency - Begin Project Dependency - Project_Dep_Name isam - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency -}}} - -############################################################################### - -Project: "perror"=".\perror\perror_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency -}}} - -############################################################################### - -Project: "replace"=".\replace\replace_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency -}}} - -############################################################################### - -Project: "test1"=".\test1\test1_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name libmysql - End Project Dependency -}}} - -############################################################################### - -Project: "thr_test"=".\thr_test\thr_test_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name dbug - End Project Dependency - Begin Project Dependency - Project_Dep_Name mysys - End Project Dependency - Begin Project Dependency - Project_Dep_Name strings - End Project Dependency -}}} - - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### diff --git a/VC++Files/mysqlbinlog/mysqlbinlog.dsp b/VC++Files/mysqlbinlog/mysqlbinlog.dsp deleted file mode 100644 index bb191944afe..00000000000 --- a/VC++Files/mysqlbinlog/mysqlbinlog.dsp +++ /dev/null @@ -1,136 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqlbinlog" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysqlbinlog - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqlbinlog.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqlbinlog.mak" CFG="mysqlbinlog - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqlbinlog - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqlbinlog - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqlbinlog - Win32 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqlbinlog - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "eelease" -# PROP Intermediate_Dir "eelease" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /I "../sql" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "MYSQL_SERVER" /D "NDEBUG" /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlbinlog.exe" /libpath:"..\lib_release\\" -# SUBTRACT LINK32 /pdb:none /debug - -!ELSEIF "$(CFG)" == "mysqlbinlog - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /I "../" /I "../sql" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "MYSQL_SERVER" /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib ..\extra\yassl\Debug\yassl.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqlbinlog.exe" /pdbtype:sept /libpath:"..\lib_debug\\" - -!ELSEIF "$(CFG)" == "mysqlbinlog - Win32 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqlbinlog___Win32_classic" -# PROP BASE Intermediate_Dir "mysqlbinlog___Win32_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /I "../sql" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "MYSQL_SERVER" /D "NDEBUG" /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /I "../sql" /D "MYSQL_SERVER" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlbinlog.exe" /libpath:"..\lib_release\\" -# SUBTRACT BASE LINK32 /pdb:none /debug -# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqlbinlog.exe" /libpath:"..\lib_release\\" -# SUBTRACT LINK32 /pdb:none /debug - -!ENDIF - -# Begin Target - -# Name "mysqlbinlog - Win32 Release" -# Name "mysqlbinlog - Win32 Debug" -# Name "mysqlbinlog - Win32 classic" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\mysys\mf_tempdir.c -# End Source File -# Begin Source File - -SOURCE=..\client\mysqlbinlog.cpp -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/mysqlbinlog/mysqlbinlog.vcproj b/VC++Files/mysqlbinlog/mysqlbinlog.vcproj deleted file mode 100644 index 46dfb48bb57..00000000000 --- a/VC++Files/mysqlbinlog/mysqlbinlog.vcproj +++ /dev/null @@ -1,406 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/mysqlbinlog/mysqlbinlog_ia64.dsp b/VC++Files/mysqlbinlog/mysqlbinlog_ia64.dsp deleted file mode 100644 index 0bb6e9ed747..00000000000 --- a/VC++Files/mysqlbinlog/mysqlbinlog_ia64.dsp +++ /dev/null @@ -1,139 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqlbinlog" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysqlbinlog - WinIA64 classic -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqlbinlog_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqlbinlog_ia64.mak" CFG="mysqlbinlog - WinIA64 classic" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqlbinlog - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqlbinlog - WinIA64 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqlbinlog - WinIA64 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqlbinlog - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "eelease" -# PROP Intermediate_Dir "eelease" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../" /I "../sql" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "MYSQL_SERVER" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_release/mysqlbinlog.exe" /libpath:"..\lib_release\\" /machine:IA64 -# SUBTRACT LINK32 /debug - -!ELSEIF "$(CFG)" == "mysqlbinlog - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../include" /I "../" /I "../sql" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "MYSQL_SERVER" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64 -# ADD LINK32 ..\lib_debug\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/mysqlbinlog.exe" /libpath:"..\lib_debug\\" /machine:IA64 - -!ELSEIF "$(CFG)" == "mysqlbinlog - WinIA64 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqlbinlog___Win64_classic" -# PROP BASE Intermediate_Dir "mysqlbinlog___Win64_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /I "../sql" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "MYSQL_SERVER" /D "NDEBUG" /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../" /I "../sql" /D "MYSQL_SERVER" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /out:"../client_release/mysqlbinlog.exe" /libpath:"..\lib_release\\" /machine:IA64 -# SUBTRACT BASE LINK32 /debug -# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_classic/mysqlbinlog.exe" /libpath:"..\lib_release\\" /machine:IA64 -# SUBTRACT LINK32 /debug - -!ENDIF - -# Begin Target - -# Name "mysqlbinlog - WinIA64 Release" -# Name "mysqlbinlog - WinIA64 Debug" -# Name "mysqlbinlog - WinIA64 classic" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\mysys\mf_tempdir.c -# End Source File -# Begin Source File - -SOURCE=..\client\mysqlbinlog.cpp -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/mysqlcheck/mysqlcheck.dsp b/VC++Files/mysqlcheck/mysqlcheck.dsp deleted file mode 100644 index 1f047e04155..00000000000 --- a/VC++Files/mysqlcheck/mysqlcheck.dsp +++ /dev/null @@ -1,129 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqlcheck" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysqlcheck - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqlcheck.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqlcheck.mak" CFG="mysqlcheck - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqlcheck - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqlcheck - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqlcheck - Win32 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqlcheck - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "MYSQL_SERVER" /D "NDEBUG" /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlcheck.exe" /libpath:"..\lib_release\\" - -!ELSEIF "$(CFG)" == "mysqlcheck - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /I "../" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "MYSQL_SERVER" /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib ..\extra\yassl\Debug\yassl.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqlcheck.exe" /pdbtype:sept /libpath:"..\lib_debug\\" - -!ELSEIF "$(CFG)" == "mysqlcheck - Win32 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqlcheck___Win32_classic" -# PROP BASE Intermediate_Dir "mysqlcheck___Win32_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "MYSQL_SERVER" /D "NDEBUG" /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "MYSQL_SERVER" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlcheck.exe" /libpath:"..\lib_release\\" -# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqlcheck.exe" /libpath:"..\lib_release\\" - -!ENDIF - -# Begin Target - -# Name "mysqlcheck - Win32 Release" -# Name "mysqlcheck - Win32 Debug" -# Name "mysqlcheck - Win32 classic" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\client\mysqlcheck.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/mysqlcheck/mysqlcheck.vcproj b/VC++Files/mysqlcheck/mysqlcheck.vcproj deleted file mode 100644 index f47e171fd65..00000000000 --- a/VC++Files/mysqlcheck/mysqlcheck.vcproj +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/mysqlcheck/mysqlcheck_ia64.dsp b/VC++Files/mysqlcheck/mysqlcheck_ia64.dsp deleted file mode 100644 index 04f10a2ddb8..00000000000 --- a/VC++Files/mysqlcheck/mysqlcheck_ia64.dsp +++ /dev/null @@ -1,132 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqlcheck" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysqlcheck - WinIA64 classic -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqlcheck_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqlcheck_ia64.mak" CFG="mysqlcheck - WinIA64 classic" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqlcheck - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqlcheck - WinIA64 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqlcheck - WinIA64 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqlcheck - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "MYSQL_SERVER" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_release/mysqlcheck.exe" /libpath:"..\lib_release\\" /machine:IA64 - -!ELSEIF "$(CFG)" == "mysqlcheck - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../include" /I "../" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "MYSQL_SERVER" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64 -# ADD LINK32 ..\lib_debug\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/mysqlcheck.exe" /libpath:"..\lib_debug\\" /machine:IA64 - -!ELSEIF "$(CFG)" == "mysqlcheck - WinIA64 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqlcheck___Win64_classic" -# PROP BASE Intermediate_Dir "mysqlcheck___Win64_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "MYSQL_SERVER" /D "NDEBUG" /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../" /D "MYSQL_SERVER" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /out:"../client_release/mysqlcheck.exe" /libpath:"..\lib_release\\" /machine:IA64 -# ADD LINK32 ..\lib_release\zlib.lib mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib zlib.lib /nologo /subsystem:console /out:"../client_classic/mysqlcheck.exe" /libpath:"..\lib_release\\" /machine:IA64 - -!ENDIF - -# Begin Target - -# Name "mysqlcheck - WinIA64 Release" -# Name "mysqlcheck - WinIA64 Debug" -# Name "mysqlcheck - WinIA64 classic" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\client\mysqlcheck.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/mysqldemb/mysqldemb.dsp b/VC++Files/mysqldemb/mysqldemb.dsp deleted file mode 100644 index 61a745ff7e8..00000000000 --- a/VC++Files/mysqldemb/mysqldemb.dsp +++ /dev/null @@ -1,443 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqldemb" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=mysqldemb - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqldemb.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqldemb.mak" CFG="mysqldemb - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqldemb - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "mysqldemb - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "mysqldemb - Win32 classic" (based on "Win32 (x86) Static Library") -!MESSAGE "mysqldemb - Win32 pro" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqldemb - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /MT /W3 /O2 /I "../include" /I "../regex" /I "../libmysqld" /I "../sql" /I "../bdb/build_win32" /I "../zlib" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "MYSQL_SERVER" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "USE_TLS" /D "__WIN__" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ELSEIF "$(CFG)" == "mysqldemb - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Z7 /Od /I "../zlib" /I "../include" /I "../regex" /I "../libmysqld" /I "../sql" /I "../bdb/build_win32" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "MYSQL_SERVER" /D "HAVE_INNOBASE_DB" /D "USE_TLS" /D "__WIN__" /FD /GZ /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x416 /d "_DEBUG" -# ADD RSC /l 0x416 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"../lib_debug/mysqldemb.lib" - -!ELSEIF "$(CFG)" == "mysqldemb - Win32 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqldemb___Win32_classic" -# PROP BASE Intermediate_Dir "mysqldemb___Win32_classic" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /O2 /I "../include" /I "../regex" /I "../libmysqld" /I "../sql" /I "../zlib" /D "WIN32" /D "_MBCS" /D "_LIB" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "MYSQL_SERVER" /D "DBUG_OFF" /D "USE_TLS" /D "__WIN__" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /O2 /I "../include" /I "../regex" /I "../libmysqld" /I "../sql" /I "../zlib" /D "WIN32" /D "_LIB" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "MYSQL_SERVER" /D "USE_TLS" /D "__WIN__" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_classic\mysqldemb.lib" - -!ELSEIF "$(CFG)" == "mysqldemb - Win32 pro" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqldemb___Win32_pro" -# PROP BASE Intermediate_Dir "mysqldemb___Win32_pro" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "pro" -# PROP Intermediate_Dir "pro" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /O2 /I "../include" /I "../regex" /I "../libmysqld" /I "../sql" /I "../zlib" /D "WIN32" /D "_MBCS" /D "_LIB" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "MYSQL_SERVER" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "USE_TLS" /D "__WIN__" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /O2 /I "../include" /I "../regex" /I "../libmysqld" /I "../sql" /I "../zlib" /D "WIN32" /D "_LIB" /D "SIGNAL_WITH_VIO_CLOSE" /D "EMBEDDED_LIBRARY" /D "USE_TLS" /D "__WIN__" /D "USE_SYMDIR" /D "MYSQL_SERVER" /D LICENSE=Commercial /D "_MBCS" /D "HAVE_DLOPEN" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "NDEBUG" /D "_WINDOWS" /D "_CONSOLE" /FD /D MYSQL_SERVER_SUFFIX=-pro /c -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_pro\mysqldemb.lib" - -!ENDIF - -# Begin Target - -# Name "mysqldemb - Win32 Release" -# Name "mysqldemb - Win32 Debug" -# Name "mysqldemb - Win32 classic" -# Name "mysqldemb - Win32 pro" -# Begin Source File - -SOURCE=..\sql\derror.cpp -# End Source File -# Begin Source File - -SOURCE=..\libmysql\errmsg.c -# End Source File -# Begin Source File - -SOURCE=..\sql\field.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\field_conv.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\filesort.cpp -# End Source File -# Begin Source File - -SOURCE=..\libmysql\get_password.c -# End Source File -# Begin Source File - -SOURCE=..\sql\ha_heap.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\ha_innodb.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\ha_myisam.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\ha_myisammrg.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\handler.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\hash_filo.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\hostname.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\init.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_buff.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_cmpfunc.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_create.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_func.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_row.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_strfunc.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_subselect.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_sum.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_timefunc.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_uniq.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\key.cpp -# End Source File -# Begin Source File - -SOURCE=..\libmysqld\lib_sql.cpp -# End Source File -# Begin Source File - -SOURCE=..\libmysqld\libmysqld.c -# End Source File -# Begin Source File - -SOURCE=..\sql\lock.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\log.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\log_event.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\mf_iocache.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\net_serv.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\opt_range.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\opt_sum.cpp -# End Source File -# Begin Source File - -SOURCE=..\libmysql\password.c -# End Source File -# Begin Source File - -SOURCE=..\sql\procedure.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\protocol.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\records.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\repl_failsafe.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\slave.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_acl.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_analyse.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_base.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_cache.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_class.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_crypt.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_db.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_delete.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_derived.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_do.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_error.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_handler.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_insert.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_lex.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_list.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_manager.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_map.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_parse.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_prepare.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_rename.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_repl.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_select.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_show.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_string.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_table.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_test.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_udf.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_union.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_update.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_yacc.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\table.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\thr_malloc.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\time.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\uniques.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\unireg.cpp -# End Source File -# End Target -# End Project diff --git a/VC++Files/mysqldemb/mysqldemb.vcproj b/VC++Files/mysqldemb/mysqldemb.vcproj deleted file mode 100644 index bf5fc557882..00000000000 --- a/VC++Files/mysqldemb/mysqldemb.vcproj +++ /dev/null @@ -1,2960 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/mysqldemb/mysqldemb_ia64.dsp b/VC++Files/mysqldemb/mysqldemb_ia64.dsp deleted file mode 100644 index 5b54a7756e1..00000000000 --- a/VC++Files/mysqldemb/mysqldemb_ia64.dsp +++ /dev/null @@ -1,447 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqldemb" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=mysqldemb - WinIA64 pro -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqldemb.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqldemb.mak" CFG="mysqldemb - WinIA64 pro" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqldemb - WinIA64 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "mysqldemb - WinIA64 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "mysqldemb - WinIA64 classic" (based on "Win32 (x86) Static Library") -!MESSAGE "mysqldemb - WinIA64 pro" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqldemb - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WinIA64" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../regex" /I "../libmysqld" /I "../sql" /I "../bdb/build_WinIA64" /I "../zlib" /D "WinIA64" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "MYSQL_SERVER" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "USE_TLS" /D "__WIN__" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ELSEIF "$(CFG)" == "mysqldemb - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WinIA64" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../zlib" /I "../include" /I "../regex" /I "../libmysqld" /I "../sql" /I "../bdb/build_WinIA64" /D "WinIA64" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "MYSQL_SERVER" /D "HAVE_INNOBASE_DB" /D "USE_TLS" /D "__WIN__" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /GZ /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x416 /d "_DEBUG" -# ADD RSC /l 0x416 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"../lib_debug/mysqldemb.lib" - -!ELSEIF "$(CFG)" == "mysqldemb - WinIA64 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqldemb___WinIA64 _classic" -# PROP BASE Intermediate_Dir "mysqldemb___WinIA64 _classic" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /O2 /I "../include" /I "../regex" /I "../libmysqld" /I "../sql" /I "../zlib" /D "WinIA64" /D "_MBCS" /D "_LIB" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "MYSQL_SERVER" /D "DBUG_OFF" /D "USE_TLS" /D "__WIN__" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../regex" /I "../libmysqld" /I "../sql" /I "../zlib" /D "WinIA64" /D "_LIB" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "MYSQL_SERVER" /D "USE_TLS" /D "__WIN__" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_classic\mysqldemb.lib" - -!ELSEIF "$(CFG)" == "mysqldemb - WinIA64 pro" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqldemb___WinIA64 _pro" -# PROP BASE Intermediate_Dir "mysqldemb___WinIA64 _pro" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "pro" -# PROP Intermediate_Dir "pro" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /O2 /I "../include" /I "../regex" /I "../libmysqld" /I "../sql" /I "../zlib" /D "WinIA64" /D "_MBCS" /D "_LIB" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "MYSQL_SERVER" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "USE_TLS" /D "__WIN__" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../regex" /I "../libmysqld" /I "../sql" /I "../zlib" /D "WinIA64" /D "_LIB" /D "SIGNAL_WITH_VIO_CLOSE" /D "EMBEDDED_LIBRARY" /D "USE_TLS" /D "__WIN__" /D "USE_SYMDIR" /D "MYSQL_SERVER" /D LICENSE=Commercial /D "_MBCS" /D "HAVE_DLOPEN" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "NDEBUG" /D "_WINDOWS" /D "_CONSOLE" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /DMYSQL_SERVER_SUFFIX=-pro /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_pro\mysqldemb.lib" - -!ENDIF - -# Begin Target - -# Name "mysqldemb - WinIA64 Release" -# Name "mysqldemb - WinIA64 Debug" -# Name "mysqldemb - WinIA64 classic" -# Name "mysqldemb - WinIA64 pro" -# Begin Source File - -SOURCE=..\sql\derror.cpp -# End Source File -# Begin Source File - -SOURCE=..\libmysql\errmsg.c -# End Source File -# Begin Source File - -SOURCE=..\sql\field.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\field_conv.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\filesort.cpp -# End Source File -# Begin Source File - -SOURCE=..\libmysql\get_password.c -# End Source File -# Begin Source File - -SOURCE=..\sql\ha_heap.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\ha_innodb.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\ha_isammrg.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\ha_myisam.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\ha_myisammrg.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\handler.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\hash_filo.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\hostname.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\init.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_buff.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_cmpfunc.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_create.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_func.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_row.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_strfunc.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_subselect.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_sum.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_timefunc.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\item_uniq.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\key.cpp -# End Source File -# Begin Source File - -SOURCE=..\libmysqld\lib_sql.cpp -# End Source File -# Begin Source File - -SOURCE=..\libmysqld\libmysqld.c -# End Source File -# Begin Source File - -SOURCE=..\sql\lock.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\log.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\log_event.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\mf_iocache.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\net_serv.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\opt_range.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\opt_sum.cpp -# End Source File -# Begin Source File - -SOURCE=..\libmysql\password.c -# End Source File -# Begin Source File - -SOURCE=..\sql\procedure.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\protocol.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\records.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\repl_failsafe.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\slave.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_acl.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_analyse.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_base.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_cache.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_class.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_crypt.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_db.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_delete.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_derived.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_do.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_error.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_handler.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_insert.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_lex.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_list.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_manager.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_map.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_parse.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_prepare.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_rename.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_repl.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_select.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_show.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_string.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_table.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_test.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_udf.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_union.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_update.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\sql_yacc.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\table.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\thr_malloc.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\time.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\uniques.cpp -# End Source File -# Begin Source File - -SOURCE=..\sql\unireg.cpp -# End Source File -# End Target -# End Project diff --git a/VC++Files/mysqlserver/dummy.cpp b/VC++Files/mysqlserver/dummy.cpp deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/VC++Files/mysqlserver/mysqlserver.dsp b/VC++Files/mysqlserver/mysqlserver.dsp deleted file mode 100644 index b8d07a4bf34..00000000000 --- a/VC++Files/mysqlserver/mysqlserver.dsp +++ /dev/null @@ -1,84 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqlserver" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=mysqlserver - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqlserver.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqlserver.mak" CFG="mysqlserver - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqlserver - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "mysqlserver - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqlserver - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /MT /W3 /O2 /I "../include" /I "../regex" /I "../sql" /I "../bdb/build_win32" /I "../libmysqld" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "HAVE_BERKELEY_DB" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "USE_TLS" /YX /FD /c -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ELSEIF "$(CFG)" == "mysqlserver - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Z7 /Od /I "../include" /I "../regex" /I "../sql" /I "../bdb/build_win32" /I "libmysqld" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "HAVE_BERKELEY_DB" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "HAVE_INNOBASE_DB" /D "USE_TLS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x416 /d "_DEBUG" -# ADD RSC /l 0x416 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ENDIF - -# Begin Target - -# Name "mysqlserver - Win32 Release" -# Name "mysqlserver - Win32 Debug" -# End Target -# End Project diff --git a/VC++Files/mysqlserver/mysqlserver.vcproj b/VC++Files/mysqlserver/mysqlserver.vcproj deleted file mode 100644 index 6027b8475c2..00000000000 --- a/VC++Files/mysqlserver/mysqlserver.vcproj +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/mysqlserver/mysqlserver_ia64.dsp b/VC++Files/mysqlserver/mysqlserver_ia64.dsp deleted file mode 100644 index 205a1d1407d..00000000000 --- a/VC++Files/mysqlserver/mysqlserver_ia64.dsp +++ /dev/null @@ -1,84 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqlserver" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=mysqlserver - WinIA64 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqlserver.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqlserver.mak" CFG="mysqlserver - WinIA64 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqlserver - WinIA64 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "mysqlserver - WinIA64 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqlserver - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../regex" /I "../sql" /I "../bdb/build_win64" /I "../libmysqld" /D "WIN64" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "HAVE_BERKELEY_DB" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "USE_TLS" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /YX /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ELSEIF "$(CFG)" == "mysqlserver - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN64" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../include" /I "../regex" /I "../sql" /I "../bdb/build_win64" /I "libmysqld" /D "WIN64" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "HAVE_BERKELEY_DB" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "HAVE_INNOBASE_DB" /D "USE_TLS" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /YX /FD /GZ /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x416 /d "_DEBUG" -# ADD RSC /l 0x416 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ENDIF - -# Begin Target - -# Name "mysqlserver - WinIA64 Release" -# Name "mysqlserver - WinIA64 Debug" -# End Target -# End Project diff --git a/VC++Files/mysys/mysys.dsp b/VC++Files/mysys/mysys.dsp deleted file mode 100644 index 935f1411530..00000000000 --- a/VC++Files/mysys/mysys.dsp +++ /dev/null @@ -1,641 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysys" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=mysys - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysys.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysys.mak" CFG="mysys - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysys - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "mysys - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "mysys - Win32 Max" (based on "Win32 (x86) Static Library") -!MESSAGE "mysys - Win32 TLS_DEBUG" (based on "Win32 (x86) Static Library") -!MESSAGE "mysys - Win32 TLS" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysys - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../zlib" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /WX /Fr /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_release\mysys.lib" - -!ELSEIF "$(CFG)" == "mysys - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /I "../zlib" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_SYMDIR" /FD /c -# SUBTRACT CPP /Fr -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_debug\mysys.lib" - -!ELSEIF "$(CFG)" == "mysys - Win32 Max" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysys___Win32_Max" -# PROP BASE Intermediate_Dir "mysys___Win32_Max" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "max" -# PROP Intermediate_Dir "max" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "NDEBUG" /D "DBUG_OFF" /D "_WINDOWS" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../zlib" /D "USE_SYMDIR" /D "NDEBUG" /D "DBUG_OFF" /D "_WINDOWS" /D MYSQL_SERVER_SUFFIX=-max /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo /out:"..\lib_release\mysys.lib" -# ADD LIB32 /nologo /out:"..\lib_release\mysys-max.lib" - -!ELSEIF "$(CFG)" == "mysys - Win32 TLS_DEBUG" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "mysys___Win32_TLS_DEBUG" -# PROP BASE Intermediate_Dir "mysys___Win32_TLS_DEBUG" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "mysys___Win32_TLS_DEBUG" -# PROP Intermediate_Dir "mysys___Win32_TLS_DEBUG" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /I "../zlib" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_SYMDIR" /FD /c -# SUBTRACT BASE CPP /Fr -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /I "../zlib" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_SYMDIR" /D "USE_TLS" /FD /c -# SUBTRACT CPP /Fr -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\lib_debug\mysys_tls.lib" -# ADD LIB32 /nologo /out:"..\lib_debug\mysys_tls.lib" - -!ELSEIF "$(CFG)" == "mysys - Win32 TLS" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysys___Win32_TLS" -# PROP BASE Intermediate_Dir "mysys___Win32_TLS" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "mysys___Win32_TLS" -# PROP Intermediate_Dir "mysys___Win32_TLS" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../zlib" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../zlib" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "USE_TLS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\lib_release\mysys_tls.lib" -# ADD LIB32 /nologo /out:"..\lib_release\mysys_tls.lib" - -!ENDIF - -# Begin Target - -# Name "mysys - Win32 Release" -# Name "mysys - Win32 Debug" -# Name "mysys - Win32 Max" -# Name "mysys - Win32 TLS_DEBUG" -# Name "mysys - Win32 TLS" -# Begin Source File - -SOURCE=.\array.c - -!IF "$(CFG)" == "mysys - Win32 Release" - -!ELSEIF "$(CFG)" == "mysys - Win32 Debug" - -# SUBTRACT CPP /Fr - -!ELSEIF "$(CFG)" == "mysys - Win32 Max" - - -!ELSEIF "$(CFG)" == "mysys - Win32 TLS_DEBUG" - -# ADD BASE CPP /FR -# ADD CPP /FR - -!ELSEIF "$(CFG)" == "mysys - Win32 TLS" - -!ENDIF - -# End Source File - -# Begin Source File -SOURCE=".\my_access.c" -# End Source File - -# Begin Source File - -SOURCE=".\charset-def.c" -# End Source File -# Begin Source File - -SOURCE=.\charset.c -# End Source File -# Begin Source File - -SOURCE=.\checksum.c -# End Source File -# Begin Source File - -SOURCE=.\default.c -# End Source File -# Begin Source File - -SOURCE=.\default_modify.c -# End Source File -# Begin Source File - -SOURCE=.\errors.c -# End Source File -# Begin Source File - -SOURCE=.\hash.c -# End Source File -# Begin Source File - -SOURCE=.\list.c -# End Source File -# Begin Source File - -SOURCE=.\md5.c -# End Source File -# Begin Source File - -SOURCE=.\mf_brkhant.c -# End Source File -# Begin Source File - -SOURCE=.\mf_cache.c -# End Source File -# Begin Source File - -SOURCE=.\mf_dirname.c -# End Source File -# Begin Source File - -SOURCE=.\mf_fn_ext.c -# End Source File -# Begin Source File - -SOURCE=.\mf_format.c -# End Source File -# Begin Source File - -SOURCE=.\mf_getdate.c -# End Source File -# Begin Source File - -SOURCE=.\mf_iocache.c -# End Source File -# Begin Source File - -SOURCE=.\mf_iocache2.c -# End Source File -# Begin Source File - -SOURCE=.\mf_keycache.c -# End Source File -# Begin Source File - -SOURCE=.\mf_keycaches.c -# End Source File -# Begin Source File - -SOURCE=.\mf_loadpath.c -# End Source File -# Begin Source File - -SOURCE=.\mf_pack.c -# End Source File -# Begin Source File - -SOURCE=.\mf_path.c -# End Source File -# Begin Source File - -SOURCE=.\mf_qsort.c -# End Source File -# Begin Source File - -SOURCE=.\mf_qsort2.c -# End Source File -# Begin Source File - -SOURCE=.\mf_radix.c -# End Source File -# Begin Source File - -SOURCE=.\mf_same.c -# End Source File -# Begin Source File - -SOURCE=.\mf_sort.c -# End Source File -# Begin Source File - -SOURCE=.\mf_soundex.c -# End Source File -# Begin Source File - -SOURCE=.\mf_strip.c -# End Source File -# Begin Source File - -SOURCE=.\mf_tempdir.c -# End Source File -# Begin Source File - -SOURCE=.\mf_tempfile.c -# End Source File -# Begin Source File - -SOURCE=.\mf_unixpath.c -# End Source File -# Begin Source File - -SOURCE=.\mf_wcomp.c -# End Source File -# Begin Source File - -SOURCE=.\mf_wfile.c -# End Source File -# Begin Source File - -SOURCE=.\mulalloc.c -# End Source File -# Begin Source File - -SOURCE=.\my_aes.c -# End Source File -# Begin Source File - -SOURCE=.\my_alarm.c -# End Source File -# Begin Source File - -SOURCE=.\my_alloc.c -# End Source File -# Begin Source File - -SOURCE=.\my_append.c -# End Source File -# Begin Source File - -SOURCE=.\my_bit.c -# End Source File -# Begin Source File - -SOURCE=.\my_bitmap.c -# End Source File -# Begin Source File - -SOURCE=.\my_chsize.c -# End Source File -# Begin Source File - -SOURCE=.\my_clock.c -# End Source File -# Begin Source File - -SOURCE=.\my_compress.c -# End Source File -# Begin Source File - -SOURCE=.\my_conio.c -# End Source File -# Begin Source File - -SOURCE=.\my_copy.c -# End Source File -# Begin Source File - -SOURCE=.\my_crc32.c -# End Source File -# Begin Source File - -SOURCE=.\my_create.c -# End Source File -# Begin Source File - -SOURCE=.\my_delete.c -# End Source File -# Begin Source File - -SOURCE=.\my_div.c -# End Source File -# Begin Source File - -SOURCE=.\my_error.c -# End Source File -# Begin Source File - -SOURCE=.\my_fopen.c -# End Source File -# Begin Source File - -SOURCE=.\my_fstream.c -# End Source File -# Begin Source File - -SOURCE=.\my_gethostbyname.c -# End Source File -# Begin Source File - -SOURCE=.\my_gethwaddr.c -# End Source File -# Begin Source File - -SOURCE=.\my_getopt.c -# End Source File -# Begin Source File - -SOURCE=.\my_getsystime.c -# End Source File -# Begin Source File - -SOURCE=.\my_getwd.c -# End Source File -# Begin Source File - -SOURCE=.\my_handler.c -# End Source File -# Begin Source File - -SOURCE=.\my_init.c -# End Source File -# Begin Source File - -SOURCE=.\my_lib.c -# End Source File -# Begin Source File - -SOURCE=.\my_lock.c -# End Source File -# Begin Source File - -SOURCE=.\my_lockmem.c -# End Source File -# Begin Source File - -SOURCE=.\my_lread.c -# End Source File -# Begin Source File - -SOURCE=.\my_lwrite.c -# End Source File -# Begin Source File - -SOURCE=.\my_malloc.c -# End Source File -# Begin Source File - -SOURCE=.\my_messnc.c -# End Source File -# Begin Source File - -SOURCE=.\my_mkdir.c -# End Source File -# Begin Source File - -SOURCE=.\my_mmap.c -# End Source File -# Begin Source File - -SOURCE=.\my_net.c -# End Source File -# Begin Source File - -SOURCE=.\my_once.c -# End Source File -# Begin Source File - -SOURCE=.\my_open.c -# End Source File -# Begin Source File - -SOURCE=.\my_file.c -# End Source File -# Begin Source File - -SOURCE=.\my_pread.c -# End Source File -# Begin Source File - -SOURCE=.\my_pthread.c -# End Source File -# Begin Source File - -SOURCE=.\my_quick.c -# End Source File -# Begin Source File - -SOURCE=.\my_read.c -# End Source File -# Begin Source File - -SOURCE=.\my_realloc.c -# End Source File -# Begin Source File - -SOURCE=.\my_redel.c -# End Source File -# Begin Source File - -SOURCE=.\my_rename.c -# End Source File -# Begin Source File - -SOURCE=.\my_seek.c -# End Source File -# Begin Source File - -SOURCE=.\my_sleep.c -# End Source File -# Begin Source File - -SOURCE=.\my_static.c -# End Source File -# Begin Source File - -SOURCE=.\my_static.h -# End Source File -# Begin Source File - -SOURCE=.\my_symlink.c -# End Source File -# Begin Source File - -SOURCE=.\my_symlink2.c -# End Source File -# Begin Source File - -SOURCE=.\my_sync.c -# End Source File -# Begin Source File - -SOURCE=.\my_thr_init.c -# End Source File -# Begin Source File - -SOURCE=.\my_wincond.c -# End Source File -# Begin Source File - -SOURCE=.\my_windac.c -# End Source File -# Begin Source File - -SOURCE=.\my_winsem.c -# End Source File -# Begin Source File - -SOURCE=.\my_winthread.c -# End Source File -# Begin Source File - -SOURCE=.\my_write.c -# End Source File -# Begin Source File - -SOURCE=.\mysys_priv.h -# End Source File -# Begin Source File - -SOURCE=.\ptr_cmp.c -# End Source File -# Begin Source File - -SOURCE=.\queues.c -# End Source File -# Begin Source File - -SOURCE=.\raid.cpp -# End Source File -# Begin Source File - -SOURCE=.\rijndael.c -# End Source File -# Begin Source File - -SOURCE=.\safemalloc.c -# End Source File -# Begin Source File - -SOURCE=.\sha1.c -# End Source File -# Begin Source File - -SOURCE=.\string.c -# End Source File -# Begin Source File - -SOURCE=.\thr_alarm.c -# End Source File -# Begin Source File - -SOURCE=.\thr_lock.c - -!IF "$(CFG)" == "mysys - Win32 Release" - -!ELSEIF "$(CFG)" == "mysys - Win32 Debug" - -# ADD CPP /D "EXTRA_DEBUG" - -!ELSEIF "$(CFG)" == "mysys - Win32 Max" - -!ELSEIF "$(CFG)" == "mysys - Win32 TLS_DEBUG" - -# ADD BASE CPP /D "EXTRA_DEBUG" -# ADD CPP /D "EXTRA_DEBUG" - -!ELSEIF "$(CFG)" == "mysys - Win32 TLS" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\thr_mutex.c -# End Source File -# Begin Source File - -SOURCE=.\thr_rwlock.c -# End Source File -# Begin Source File - -SOURCE=.\tree.c -# End Source File -# Begin Source File - -SOURCE=.\typelib.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/mysys/mysys.dsw b/VC++Files/mysys/mysys.dsw deleted file mode 100644 index 445079aed69..00000000000 --- a/VC++Files/mysys/mysys.dsw +++ /dev/null @@ -1,28 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "mysys"=".\mysys.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### diff --git a/VC++Files/mysys/mysys.vcproj b/VC++Files/mysys/mysys.vcproj deleted file mode 100644 index cf367e5666b..00000000000 --- a/VC++Files/mysys/mysys.vcproj +++ /dev/null @@ -1,4921 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/mysys/mysys_ia64.dsp b/VC++Files/mysys/mysys_ia64.dsp deleted file mode 100644 index 10d6ca7960a..00000000000 --- a/VC++Files/mysys/mysys_ia64.dsp +++ /dev/null @@ -1,626 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysys" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=mysys - WinIA64 TLS -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysys.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysys.mak" CFG="mysys - WinIA64 TLS" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysys - WinIA64 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "mysys - WinIA64 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "mysys - WinIA64 Max" (based on "Win32 (x86) Static Library") -!MESSAGE "mysys - WinIA64 TLS_DEBUG" (based on "Win32 (x86) Static Library") -!MESSAGE "mysys - WinIA64 TLS" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysys - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../zlib" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /WX /Fr /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_release\mysys.lib" - -!ELSEIF "$(CFG)" == "mysys - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN64" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../include" /I "../zlib" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_SYMDIR" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /Fr -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_debug\mysys.lib" - -!ELSEIF "$(CFG)" == "mysys - WinIA64 Max" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysys___WinIA64_Max" -# PROP BASE Intermediate_Dir "mysys___WinIA64_Max" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "max" -# PROP Intermediate_Dir "max" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "NDEBUG" /D "DBUG_OFF" /D "_WINDOWS" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../zlib" /D "USE_SYMDIR" /D "NDEBUG" /D "DBUG_OFF" /D "_WINDOWS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /DMYSQL_SERVER_SUFFIX=-max /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\lib_release\mysys.lib" -# ADD LIB32 /nologo /out:"..\lib_release\mysys-max.lib" - -!ELSEIF "$(CFG)" == "mysys - WinIA64 TLS_DEBUG" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "mysys___WinIA64_TLS_DEBUG" -# PROP BASE Intermediate_Dir "mysys___WinIA64_TLS_DEBUG" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "mysys___WinIA64_TLS_DEBUG" -# PROP Intermediate_Dir "mysys___WinIA64_TLS_DEBUG" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /I "../zlib" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_SYMDIR" /FD /c -# SUBTRACT BASE CPP /Fr -# ADD CPP /nologo /MTd /W3 /Zi /O2 /I "../include" /I "../zlib" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_SYMDIR" /D "USE_TLS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /Fr -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\lib_debug\mysys_tls.lib" -# ADD LIB32 /nologo /out:"..\lib_debug\mysys_tls.lib" - -!ELSEIF "$(CFG)" == "mysys - WinIA64 TLS" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysys___WinIA64_TLS" -# PROP BASE Intermediate_Dir "mysys___WinIA64_TLS" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "mysys___WinIA64_TLS" -# PROP Intermediate_Dir "mysys___WinIA64_TLS" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../zlib" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../zlib" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "USE_TLS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\lib_release\mysys_tls.lib" -# ADD LIB32 /nologo /out:"..\lib_release\mysys_tls.lib" - -!ENDIF - -# Begin Target - -# Name "mysys - WinIA64 Release" -# Name "mysys - WinIA64 Debug" -# Name "mysys - WinIA64 Max" -# Name "mysys - WinIA64 TLS_DEBUG" -# Name "mysys - WinIA64 TLS" - -# Begin Source File - -SOURCE=.\my_access.c - -# End Source File - -# Begin Source File - -SOURCE=.\array.c - -!IF "$(CFG)" == "mysys - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysys - WinIA64 Debug" - -# SUBTRACT CPP /Fr - -!ELSEIF "$(CFG)" == "mysys - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysys - WinIA64 TLS_DEBUG" - -# ADD BASE CPP /FR -# ADD CPP /Zi /O2 /FR /G2 /EHsc /Wp64 /Zm600 - -!ELSEIF "$(CFG)" == "mysys - WinIA64 TLS" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=".\charset-def.c" -# End Source File -# Begin Source File - -SOURCE=.\charset.c -# End Source File -# Begin Source File - -SOURCE=.\checksum.c -# End Source File -# Begin Source File - -SOURCE=.\default.c -# End Source File -# Begin Source File - -SOURCE=.\errors.c -# End Source File -# Begin Source File - -SOURCE=.\hash.c -# End Source File -# Begin Source File - -SOURCE=.\list.c -# End Source File -# Begin Source File - -SOURCE=.\md5.c -# End Source File -# Begin Source File - -SOURCE=.\mf_brkhant.c -# End Source File -# Begin Source File - -SOURCE=.\mf_cache.c -# End Source File -# Begin Source File - -SOURCE=.\mf_dirname.c -# End Source File -# Begin Source File - -SOURCE=.\mf_fn_ext.c -# End Source File -# Begin Source File - -SOURCE=.\mf_format.c -# End Source File -# Begin Source File - -SOURCE=.\mf_getdate.c -# End Source File -# Begin Source File - -SOURCE=.\mf_iocache.c -# End Source File -# Begin Source File - -SOURCE=.\mf_iocache2.c -# End Source File -# Begin Source File - -SOURCE=.\mf_keycache.c -# End Source File -# Begin Source File - -SOURCE=.\mf_keycaches.c -# End Source File -# Begin Source File - -SOURCE=.\mf_loadpath.c -# End Source File -# Begin Source File - -SOURCE=.\mf_pack.c -# End Source File -# Begin Source File - -SOURCE=.\mf_path.c -# End Source File -# Begin Source File - -SOURCE=.\mf_qsort.c -# End Source File -# Begin Source File - -SOURCE=.\mf_qsort2.c -# End Source File -# Begin Source File - -SOURCE=.\mf_radix.c -# End Source File -# Begin Source File - -SOURCE=.\mf_same.c -# End Source File -# Begin Source File - -SOURCE=.\mf_sort.c -# End Source File -# Begin Source File - -SOURCE=.\mf_soundex.c -# End Source File -# Begin Source File - -SOURCE=.\mf_strip.c -# End Source File -# Begin Source File - -SOURCE=.\mf_tempdir.c -# End Source File -# Begin Source File - -SOURCE=.\mf_tempfile.c -# End Source File -# Begin Source File - -SOURCE=.\mf_wcomp.c -# End Source File -# Begin Source File - -SOURCE=.\mf_wfile.c -# End Source File -# Begin Source File - -SOURCE=.\mulalloc.c -# End Source File -# Begin Source File - -SOURCE=.\my_aes.c -# End Source File -# Begin Source File - -SOURCE=.\my_alarm.c -# End Source File -# Begin Source File - -SOURCE=.\my_alloc.c -# End Source File -# Begin Source File - -SOURCE=.\my_append.c -# End Source File -# Begin Source File - -SOURCE=.\my_bit.c -# End Source File -# Begin Source File - -SOURCE=.\my_bitmap.c -# End Source File -# Begin Source File - -SOURCE=.\my_chsize.c -# End Source File -# Begin Source File - -SOURCE=.\my_clock.c -# End Source File -# Begin Source File - -SOURCE=.\my_compress.c -# End Source File -# Begin Source File - -SOURCE=.\my_conio.c -# End Source File -# Begin Source File - -SOURCE=.\my_copy.c -# End Source File -# Begin Source File - -SOURCE=.\my_crc32.c -# End Source File -# Begin Source File - -SOURCE=.\my_create.c -# End Source File -# Begin Source File - -SOURCE=.\my_delete.c -# End Source File -# Begin Source File - -SOURCE=.\my_div.c -# End Source File -# Begin Source File - -SOURCE=.\my_error.c -# End Source File -# Begin Source File - -SOURCE=.\my_file.c -# End Source File -# Begin Source File - -SOURCE=.\my_fopen.c -# End Source File -# Begin Source File - -SOURCE=.\my_fstream.c -# End Source File -# Begin Source File - -SOURCE=.\my_gethostbyname.c -# End Source File -# Begin Source File - -SOURCE=.\my_gethwaddr.c -# End Source File -# Begin Source File - -SOURCE=.\my_getopt.c -# End Source File -# Begin Source File - -SOURCE=.\my_getsystime.c -# End Source File -# Begin Source File - -SOURCE=.\my_getwd.c -# End Source File -# Begin Source File - -SOURCE=.\my_handler.c -# End Source File -# Begin Source File - -SOURCE=.\my_init.c -# End Source File -# Begin Source File - -SOURCE=.\my_lib.c -# End Source File -# Begin Source File - -SOURCE=.\my_lock.c -# End Source File -# Begin Source File - -SOURCE=.\my_lockmem.c -# End Source File -# Begin Source File - -SOURCE=.\my_lread.c -# End Source File -# Begin Source File - -SOURCE=.\my_lwrite.c -# End Source File -# Begin Source File - -SOURCE=.\my_malloc.c -# End Source File -# Begin Source File - -SOURCE=.\my_messnc.c -# End Source File -# Begin Source File - -SOURCE=.\my_mkdir.c -# End Source File -# Begin Source File - -SOURCE=.\my_net.c -# End Source File -# Begin Source File - -SOURCE=.\my_once.c -# End Source File -# Begin Source File - -SOURCE=.\my_open.c -# End Source File -# Begin Source File - -SOURCE=.\my_pread.c -# End Source File -# Begin Source File - -SOURCE=.\my_pthread.c -# End Source File -# Begin Source File - -SOURCE=.\my_quick.c -# End Source File -# Begin Source File - -SOURCE=.\my_read.c -# End Source File -# Begin Source File - -SOURCE=.\my_realloc.c -# End Source File -# Begin Source File - -SOURCE=.\my_redel.c -# End Source File -# Begin Source File - -SOURCE=.\my_rename.c -# End Source File -# Begin Source File - -SOURCE=.\my_seek.c -# End Source File -# Begin Source File - -SOURCE=.\my_sleep.c -# End Source File -# Begin Source File - -SOURCE=.\my_static.c -# End Source File -# Begin Source File - -SOURCE=.\my_static.h -# End Source File -# Begin Source File - -SOURCE=.\my_symlink.c -# End Source File -# Begin Source File - -SOURCE=.\my_symlink2.c -# End Source File -# Begin Source File - -SOURCE=.\my_sync.c -# End Source File -# Begin Source File - -SOURCE=.\my_thr_init.c -# End Source File -# Begin Source File - -SOURCE=.\my_wincond.c -# End Source File -# Begin Source File - -SOURCE=.\my_winsem.c -# End Source File -# Begin Source File - -SOURCE=.\my_winthread.c -# End Source File -# Begin Source File - -SOURCE=.\my_write.c -# End Source File -# Begin Source File - -SOURCE=.\mysys_priv.h -# End Source File -# Begin Source File - -SOURCE=.\ptr_cmp.c -# End Source File -# Begin Source File - -SOURCE=.\queues.c -# End Source File -# Begin Source File - -SOURCE=.\raid.cpp -# End Source File -# Begin Source File - -SOURCE=.\rijndael.c -# End Source File -# Begin Source File - -SOURCE=.\safemalloc.c -# End Source File -# Begin Source File - -SOURCE=.\sha1.c -# End Source File -# Begin Source File - -SOURCE=.\string.c -# End Source File -# Begin Source File - -SOURCE=.\thr_alarm.c -# End Source File -# Begin Source File - -SOURCE=.\thr_lock.c - -!IF "$(CFG)" == "mysys - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysys - WinIA64 Debug" - -# ADD CPP /Zi /Od /D "EXTRA_DEBUG" /G2 /EHsc /Wp64 /Zm600 - -!ELSEIF "$(CFG)" == "mysys - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysys - WinIA64 TLS_DEBUG" - -# ADD BASE CPP /D "EXTRA_DEBUG" -# ADD CPP /Zi /O2 /D "EXTRA_DEBUG" /G2 /EHsc /Wp64 /Zm600 - -!ELSEIF "$(CFG)" == "mysys - WinIA64 TLS" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\thr_mutex.c -# End Source File -# Begin Source File - -SOURCE=.\thr_rwlock.c -# End Source File -# Begin Source File - -SOURCE=.\tree.c -# End Source File -# Begin Source File - -SOURCE=.\typelib.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/perror/perror.dsp b/VC++Files/perror/perror.dsp deleted file mode 100644 index daa6a4dc4ce..00000000000 --- a/VC++Files/perror/perror.dsp +++ /dev/null @@ -1,144 +0,0 @@ -# Microsoft Developer Studio Project File - Name="perror" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Application" 0x0101 - -CFG=perror - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "perror.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "perror.mak" CFG="perror - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "perror - Win32 Release" (based on "Win32 (x86) Application") -!MESSAGE "perror - Win32 Debug" (based on "Win32 (x86) Application") -!MESSAGE "perror - Win32 classic" (based on "Win32 (x86) Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "perror - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/perror.exe" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "perror - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /FD /GZ /c -# SUBTRACT CPP /YX -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib wsock32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /incremental:no /debug /machine:I386 /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "perror - Win32 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "perror___Win32_classic" -# PROP BASE Intermediate_Dir "perror___Win32_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "WIN32" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/perror.exe" -# SUBTRACT BASE LINK32 /pdb:none -# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/perror.exe" /libpath:"..\lib_release\\" -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "perror - Win32 Release" -# Name "perror - Win32 Debug" -# Name "perror - Win32 classic" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\extra\perror.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/perror/perror.vcproj b/VC++Files/perror/perror.vcproj deleted file mode 100644 index 2a7bb6407c0..00000000000 --- a/VC++Files/perror/perror.vcproj +++ /dev/null @@ -1,255 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/perror/perror_ia64.dsp b/VC++Files/perror/perror_ia64.dsp deleted file mode 100644 index 69fe18340dd..00000000000 --- a/VC++Files/perror/perror_ia64.dsp +++ /dev/null @@ -1,140 +0,0 @@ -# Microsoft Developer Studio Project File - Name="perror" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Application" 0x0101 - -CFG=perror - WinIA64 classic -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "perror_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "perror_ia64.mak" CFG="perror - WinIA64 classic" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "perror - WinIA64 Release" (based on "Win32 (x86) Application") -!MESSAGE "perror - WinIA64 Debug" (based on "Win32 (x86) Application") -!MESSAGE "perror - WinIA64 classic" (based on "Win32 (x86) Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "perror - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /D "WIN64" /D "_WINDOWS" /D "_MBCS" /D "NDEBUG" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win64 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win64 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:IA64 -# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib /nologo /subsystem:console /out:"../client_release/perror.exe" /machine:IA64 - -!ELSEIF "$(CFG)" == "perror - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN64" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../include" /D "WIN64" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win64 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win64 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:IA64 -# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib ..\lib_debug\mysys.lib ..\lib_debug\strings.lib ..\lib_debug\dbug.lib /nologo /incremental:no /debug /machine:IA64 -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "perror - WinIA64 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "perror___Win64_classic" -# PROP BASE Intermediate_Dir "perror___Win64_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "WIN64" /D "_WINDOWS" /D "_MBCS" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /D "WIN64" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win64 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win64 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /out:"../client_release/perror.exe" /machine:IA64 -# ADD LINK32 ..\lib_release\mysys.lib ..\lib_release\strings.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:console /out:"../client_classic/perror.exe" /libpath:"..\lib_release\\" /machine:IA64 - -!ENDIF - -# Begin Target - -# Name "perror - WinIA64 Release" -# Name "perror - WinIA64 Debug" -# Name "perror - WinIA64 classic" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\extra\perror.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/plugin/fulltext/fulltext.def b/VC++Files/plugin/fulltext/fulltext.def deleted file mode 100644 index 2df551f6486..00000000000 --- a/VC++Files/plugin/fulltext/fulltext.def +++ /dev/null @@ -1,5 +0,0 @@ -LIBRARY fulltext -EXPORTS - _mysql_plugin_interface_version_ - _mysql_plugin_declarations_ - \ No newline at end of file diff --git a/VC++Files/plugin/fulltext/fulltext.vcproj b/VC++Files/plugin/fulltext/fulltext.vcproj deleted file mode 100644 index 6a9fe986fea..00000000000 --- a/VC++Files/plugin/fulltext/fulltext.vcproj +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/prepare b/VC++Files/prepare deleted file mode 100755 index f68d0676fc9..00000000000 --- a/VC++Files/prepare +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/sh - -if [ -f prepare_done ] -then - exit -fi - -cd .. -SRCDIR=`pwd` - -( -find $SRCDIR -name *.dsw -and -not -path \*SCCS\* -print -find $SRCDIR -name *.dsp -and -not -path \*SCCS\* -print -)|( -while read v -do - sed 's/$'"/`echo -e \\\r`/" $v > $v.tmp - rm $v - mv $v.tmp $v -done -) - -ln -s $SRCDIR/include $SRCDIR/VC++Files/include - -link_dir_files() -{ - for arg do - - cd $SRCDIR/$arg/ - ( - ls -A1|grep \\.[ch]$ - ls -A1|grep \\.ih$ - ls -A1|grep \\.asm$ - )|( - while read v - do - ln -s $SRCDIR/$arg/$v $SRCDIR/VC++Files/$arg/$v - done - ) - - cd $SRCDIR/$arg/ - (ls -A1|grep \\.cc$|sed 's/.cc$//g')|( - while read v - do - ln -s $SRCDIR/$arg/$v.cc $SRCDIR/VC++Files/$arg/$v.cpp - done - ) - - done -} - -link_dir_dirs() -{ - for arg do - - cd $SRCDIR/$arg/ - ( - ls -l |grep "^d"|awk '{print($9)}' - - )|( - while read v - do - ln -s $SRCDIR/$arg/$v $SRCDIR/VC++Files/$arg/ - done - ) - - done -} - -link_dir_files 'heap' -link_dir_files 'mysys' -link_dir_files 'zlib' -link_dir_files 'regex' -link_dir_files 'strings' -link_dir_files 'dbug' -link_dir_files 'vio' -link_dir_files 'client' -link_dir_files 'libmysql' -link_dir_files 'extra' -link_dir_files 'myisam' -link_dir_files 'myisammrg' -link_dir_files 'innobase' -link_dir_files 'bdb' -link_dir_files 'sql' -link_dir_files 'bdb/build_win32' -link_dir_files 'libmysqld' - -link_dir_dirs 'bdb' -link_dir_dirs 'innobase' - -ln -s $SRCDIR/myisam/myisampack.c $SRCDIR/VC++Files/myisampack/ -ln -s $SRCDIR/client/mysqlbinlog.cc $SRCDIR/VC++Files/mysqlbinlog/mysqlbinlog.cpp - -echo '/* added for win : */' >> $SRCDIR/config.h -echo '#undef HAVE_SCHED_H' >> $SRCDIR/config.h -echo '#USE_QUERY_CACHE_INTEGRITY_CHECK 1' >> $SRCDIR/config.h - -echo '/* added for win : */' >> $SRCDIR/innobase/ib_config.h -echo '#undef HAVE_SCHED_H' >> $SRCDIR/innobase/ib_config.h - -cd $SRCDIR/VC++Files -echo '1' > prepare_done diff --git a/VC++Files/regex/regex.dsp b/VC++Files/regex/regex.dsp deleted file mode 100644 index ecca45178f9..00000000000 --- a/VC++Files/regex/regex.dsp +++ /dev/null @@ -1,114 +0,0 @@ -# Microsoft Developer Studio Project File - Name="regex" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=regex - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "regex.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "regex.mak" CFG="regex - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "regex - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "regex - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "regex - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "./" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_release\regex.lib" - -!ELSEIF "$(CFG)" == "regex - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../include" /I "./" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_debug\regex.lib" - -!ENDIF - -# Begin Target - -# Name "regex - Win32 Release" -# Name "regex - Win32 Debug" -# Begin Source File - -SOURCE=.\debug.c -# End Source File -# Begin Source File - -SOURCE=.\regcomp.c -# End Source File -# Begin Source File - -SOURCE=.\regerror.c -# End Source File -# Begin Source File - -SOURCE=.\regexec.c -# End Source File -# Begin Source File - -SOURCE=.\regfree.c -# End Source File -# Begin Source File - -SOURCE=.\reginit.c -# End Source File -# Begin Source File - -SOURCE=.\split.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/regex/regex.dsw b/VC++Files/regex/regex.dsw deleted file mode 100644 index 1abe4485cd4..00000000000 --- a/VC++Files/regex/regex.dsw +++ /dev/null @@ -1,28 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "regex"=".\regex.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### diff --git a/VC++Files/regex/regex.vcproj b/VC++Files/regex/regex.vcproj deleted file mode 100644 index 1b52017ca3b..00000000000 --- a/VC++Files/regex/regex.vcproj +++ /dev/null @@ -1,252 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/regex/regex_ia64.dsp b/VC++Files/regex/regex_ia64.dsp deleted file mode 100644 index 96088e1ce09..00000000000 --- a/VC++Files/regex/regex_ia64.dsp +++ /dev/null @@ -1,114 +0,0 @@ -# Microsoft Developer Studio Project File - Name="regex" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=regex - WinIA64 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "regex.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "regex.mak" CFG="regex - WinIA64 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "regex - WinIA64 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "regex - WinIA64 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "regex - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "./" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_release\regex.lib" - -!ELSEIF "$(CFG)" == "regex - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN64" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../include" /I "./" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /GF /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_debug\regex.lib" - -!ENDIF - -# Begin Target - -# Name "regex - WinIA64 Release" -# Name "regex - WinIA64 Debug" -# Begin Source File - -SOURCE=.\debug.c -# End Source File -# Begin Source File - -SOURCE=.\regcomp.c -# End Source File -# Begin Source File - -SOURCE=.\regerror.c -# End Source File -# Begin Source File - -SOURCE=.\regexec.c -# End Source File -# Begin Source File - -SOURCE=.\regfree.c -# End Source File -# Begin Source File - -SOURCE=.\reginit.c -# End Source File -# Begin Source File - -SOURCE=.\split.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/replace/replace.dsp b/VC++Files/replace/replace.dsp deleted file mode 100644 index 6df0f793d92..00000000000 --- a/VC++Files/replace/replace.dsp +++ /dev/null @@ -1,122 +0,0 @@ -# Microsoft Developer Studio Project File - Name="replace" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=replace - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "replace.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "replace.mak" CFG="replace - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "replace - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "replace - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "replace - Win32 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "replace - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x40b /d "NDEBUG" -# ADD RSC /l 0x40b /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib setargv.obj /nologo /subsystem:console /machine:I386 /out:"../client_release/replace.exe" - -!ELSEIF "$(CFG)" == "replace - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x40b /d "_DEBUG" -# ADD RSC /l 0x40b /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib wsock32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib setargv.obj /nologo /subsystem:console /incremental:no /machine:I386 /out:"../client_debug/replace.exe" /pdbtype:sept -# SUBTRACT LINK32 /debug - -!ELSEIF "$(CFG)" == "replace - Win32 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "replace___Win32_classic" -# PROP BASE Intermediate_Dir "replace___Win32_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x40b /d "NDEBUG" -# ADD RSC /l 0x40b /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib setargv.obj /nologo /subsystem:console /machine:I386 /out:"../client_release/replace.exe" -# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib setargv.obj ..\lib_release\mysys.lib ..\lib_release\strings.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/replace.exe" /libpath:"..\lib_release\\" - -!ENDIF - -# Begin Target - -# Name "replace - Win32 Release" -# Name "replace - Win32 Debug" -# Name "replace - Win32 classic" -# Begin Source File - -SOURCE=..\extra\replace.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/replace/replace.vcproj b/VC++Files/replace/replace.vcproj deleted file mode 100644 index 270ff494539..00000000000 --- a/VC++Files/replace/replace.vcproj +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/replace/replace_ia64.dsp b/VC++Files/replace/replace_ia64.dsp deleted file mode 100644 index 925af8d8081..00000000000 --- a/VC++Files/replace/replace_ia64.dsp +++ /dev/null @@ -1,125 +0,0 @@ -# Microsoft Developer Studio Project File - Name="replace" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=replace - WinIA64 classic -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "replace_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "replace_ia64.mak" CFG="replace - WinIA64 classic" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "replace - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "replace - WinIA64 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "replace - WinIA64 classic" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "replace - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "Win64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /D "_IA64_" /D "Win64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x40b /d "NDEBUG" -# ADD RSC /l 0x40b /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 ..\lib_release\mysys.lib ..\lib_release\strings.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib setargv.obj bufferoverflowU.lib /nologo /subsystem:console /out:"../client_release/replace.exe" /machine:IA64 - -!ELSEIF "$(CFG)" == "replace - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "Win64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../include" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "_IA64_" /D "Win64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x40b /d "_DEBUG" -# ADD RSC /l 0x40b /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64 -# ADD LINK32 ../lib_debug/dbug.lib ..\lib_debug\mysys.lib ..\lib_debug\strings.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib setargv.obj bufferoverflowU.lib /nologo /subsystem:console /incremental:no /out:"../client_debug/replace.exe" /machine:IA64 -# SUBTRACT LINK32 /debug - -!ELSEIF "$(CFG)" == "replace - WinIA64 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "replace___Win64_classic" -# PROP BASE Intermediate_Dir "replace___Win64_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /D "_CONSOLE" /D "_WINDOWS" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /D "_IA64_" /D "Win64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x40b /d "NDEBUG" -# ADD RSC /l 0x40b /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib setargv.obj /nologo /subsystem:console /out:"../client_release/replace.exe" /machine:IA64 -# ADD LINK32 ..\lib_release\mysys.lib ..\lib_release\strings.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib setargv.obj bufferoverflowU.lib /nologo /subsystem:console /out:"../client_classic/replace.exe" /libpath:"..\lib_release\\" /machine:IA64 - -!ENDIF - -# Begin Target - -# Name "replace - WinIA64 Release" -# Name "replace - WinIA64 Debug" -# Name "replace - WinIA64 classic" -# Begin Source File - -SOURCE=..\extra\replace.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/sql/gen_lex_hash.dsp b/VC++Files/sql/gen_lex_hash.dsp deleted file mode 100644 index 5cc1f70b488..00000000000 --- a/VC++Files/sql/gen_lex_hash.dsp +++ /dev/null @@ -1,98 +0,0 @@ -# Microsoft Developer Studio Project File - Name="gen_lex_hash" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=gen_lex_hash - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "gen_lex_hash.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "gen_lex_hash.mak" CFG="gen_lex_hash - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "gen_lex_hash - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "gen_lex_hash - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "gen_lex_hash - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "gen_lex_hash___Win32_Release" -# PROP BASE Intermediate_Dir "gen_lex_hash___Win32_Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "gen_lex_hash___Win32_Release" -# PROP Intermediate_Dir "gen_lex_hash___Win32_Release" -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x419 /d "NDEBUG" -# ADD RSC /l 0x419 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "gen_lex_hash - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x419 /d "_DEBUG" -# ADD RSC /l 0x419 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "gen_lex_hash - Win32 Release" -# Name "gen_lex_hash - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/sql/gen_lex_hash.vcproj b/VC++Files/sql/gen_lex_hash.vcproj deleted file mode 100644 index 3f600f34cfb..00000000000 --- a/VC++Files/sql/gen_lex_hash.vcproj +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/sql/message.mc b/VC++Files/sql/message.mc deleted file mode 100644 index a1a7c8cff7e..00000000000 --- a/VC++Files/sql/message.mc +++ /dev/null @@ -1,8 +0,0 @@ -MessageId = 100 -Severity = Error -Facility = Application -SymbolicName = MSG_DEFAULT -Language = English -%1For more information, see Help and Support Center at http://www.mysql.com. - - diff --git a/VC++Files/sql/mysqld.dsp b/VC++Files/sql/mysqld.dsp deleted file mode 100644 index 1d8fa70471c..00000000000 --- a/VC++Files/sql/mysqld.dsp +++ /dev/null @@ -1,2049 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqld" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysqld - Win32 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqld.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqld.mak" CFG="mysqld - Win32 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqld - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqld - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqld - Win32 nt" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqld - Win32 Max nt" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqld - Win32 Max" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqld - Win32 classic" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqld - Win32 pro" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqld - Win32 classic nt" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqld - Win32 pro nt" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqld - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../zlib" /I "../include" /I "../regex" /I "../extra/yassl/include" /D "NDEBUG" /D "DBUG_OFF" /D "HAVE_INNOBASE_DB" /D "HAVE_ARCHIVE_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x410 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\vio.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../client_release/mysqld.exe" -# SUBTRACT LINK32 /debug - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../bdb/build_win32" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../zlib" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "HAVE_INNOBASE_DB" /D "HAVE_BERKELEY_DB" /D "HAVE_ARCHIVE_DB" /D "HAVE_BLACKHOLE_DB" /D "HAVE_FEDERATED_DB" /D "HAVE_EXAMPLE_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /FD /c -# SUBTRACT CPP /Fr /YX -# ADD BASE RSC /l 0x410 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_debug\dbug.lib ..\lib_debug\vio.lib ..\lib_debug\mysys.lib ..\lib_debug\strings.lib ..\lib_debug\regex.lib ..\lib_debug\heap.lib ..\lib_debug\bdb.lib ..\lib_debug\innodb.lib ..\extra\yassl\Debug\yassl.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqld-debug.exe" /pdbtype:sept - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqld__" -# PROP BASE Intermediate_Dir "mysqld__" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "nt" -# PROP Intermediate_Dir "nt" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G5 /MT /W3 /O2 /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "__WIN32__" /D "DBUG_OFF" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /I "../extra/yassl/include" /D "__NT__" /D "DBUG_OFF" /D "NDEBUG" /D "HAVE_INNOBASE_DB" /D "HAVE_ARCHIVE_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-nt /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x410 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib /nologo /subsystem:console /debug /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\vio.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\innodb.lib ..\lib_release\zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /map /machine:I386 /out:"../client_release/mysqld-nt.exe" -# SUBTRACT LINK32 /pdb:none /debug - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqld___Win32_Max_nt" -# PROP BASE Intermediate_Dir "mysqld___Win32_Max_nt" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "max_nt" -# PROP Intermediate_Dir "max_nt" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /D "NDEBUG" /D "__NT__" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../bdb/build_win32" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../zlib" /D "NDEBUG" /D "__NT__" /D "DBUG_OFF" /D "HAVE_INNOBASE_DB" /D "HAVE_BERKELEY_DB" /D "HAVE_ARCHIVE_DB" /D "HAVE_BLACKHOLE_DB" /D "HAVE_EXAMPLE_DB" /D "HAVE_FEDERATED_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-nt-max /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\zlib.lib /nologo /subsystem:console /map /machine:I386 -# SUBTRACT BASE LINK32 /pdb:none /debug -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\vio.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys-max.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\zlib.lib ..\lib_release\innodb.lib ..\lib_release\bdb.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /map /machine:I386 /out:"../client_release/mysqld-max-nt.exe" -# SUBTRACT LINK32 /pdb:none /debug - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqld___Win32_Max" -# PROP BASE Intermediate_Dir "mysqld___Win32_Max" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "max" -# PROP Intermediate_Dir "max" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /D "NDEBUG" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../bdb/build_win32" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../zlib" /D "NDEBUG" /D "DBUG_OFF" /D "USE_SYMDIR" /D "HAVE_INNOBASE_DB" /D "HAVE_BERKELEY_DB" /D "HAVE_ARCHIVE_DB" /D "HAVE_BLACKHOLE_DB" /D "HAVE_EXAMPLE_DB" /D "HAVE_FEDERATED_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-max /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\vio.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys-max.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\innodb.lib ..\lib_release\bdb.lib ..\lib_release\zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../client_release/mysqld-max.exe" -# SUBTRACT LINK32 /debug - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqld___Win32_classic" -# PROP BASE Intermediate_Dir "mysqld___Win32_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "USE_SYMDIR" /D "HAVE_DLOPEN" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /I "../extra/yassl/include" /D LICENSE=Commercial /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "HAVE_DLOPEN" /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /FD /D MYSQL_SERVER_SUFFIX=-classic /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\vio.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib /nologo /subsystem:console /pdb:none /machine:I386 -# SUBTRACT BASE LINK32 /debug -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\vio.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../client_classic/mysqld.exe" /libpath:"..\lib_release" -# SUBTRACT LINK32 /debug - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqld___Win32_pro" -# PROP BASE Intermediate_Dir "mysqld___Win32_pro" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "pro" -# PROP Intermediate_Dir "pro" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "USE_SYMDIR" /D "HAVE_DLOPEN" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /I "../extra/yassl/include" /D "MYSQL_SERVER" /D LICENSE=Commercial /D "_MBCS" /D "HAVE_DLOPEN" /D "HAVE_INNOBASE_DB" /D "HAVE_ARCHIVE_DB" /D "DBUG_OFF" /D "NDEBUG" /D "_WINDOWS" /D "_CONSOLE" /D MYSQL_SERVER_SUFFIX=-pro /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\vio.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib /nologo /subsystem:console /pdb:none /machine:I386 -# SUBTRACT BASE LINK32 /debug -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\vio.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\innodb.lib ..\lib_release\zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../client_pro/mysqld.exe" /libpath:"..\lib_release" -# SUBTRACT LINK32 /debug - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqld___Win32_classic_nt" -# PROP BASE Intermediate_Dir "mysqld___Win32_classic_nt" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic_nt" -# PROP Intermediate_Dir "classic_nt" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "USE_SYMDIR" /D "HAVE_DLOPEN" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /I "../extra/yassl/include" /D "__NT__" /D "DBUG_OFF" /D "NDEBUG" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /FD /D LICENSE=Commercial /D MYSQL_SERVER_SUFFIX=-classic-nt /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\vio.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib /nologo /subsystem:console /pdb:none /machine:I386 -# SUBTRACT BASE LINK32 /debug -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\vio.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../client_classic/mysqld-nt.exe" /libpath:"..\lib_release" -# SUBTRACT LINK32 /debug - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqld___Win32_pro_nt" -# PROP BASE Intermediate_Dir "mysqld___Win32_pro_nt" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "pro_nt" -# PROP Intermediate_Dir "pro_nt" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "USE_SYMDIR" /D "HAVE_DLOPEN" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /I "../extra/yassl/include" /D "__NT__" /D "DBUG_OFF" /D "NDEBUG" /D "HAVE_INNOBASE_DB" /D "HAVE_ARCHIVE_DB" /D "MYSQL_SERVER" /D LICENSE=Commercial /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-pro-nt /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\vio.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib /nologo /subsystem:console /pdb:none /machine:I386 -# SUBTRACT BASE LINK32 /debug -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\vio.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\innodb.lib ..\lib_release\zlib.lib ..\extra\yassl\Release\yassl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../client_pro/mysqld-nt.exe" /libpath:"..\lib_release" -# SUBTRACT LINK32 /debug - -!ENDIF - -# Begin Target - -# Name "mysqld - Win32 Release" -# Name "mysqld - Win32 Debug" -# Name "mysqld - Win32 nt" -# Name "mysqld - Win32 Max nt" -# Name "mysqld - Win32 Max" -# Name "mysqld - Win32 classic" -# Name "mysqld - Win32 pro" -# Name "mysqld - Win32 classic nt" -# Name "mysqld - Win32 pro nt" -# Begin Source File - -SOURCE=.\client.c - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\derror.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\des_key_file.cpp -# End Source File -# Begin Source File - -SOURCE=.\discover.cpp -# End Source File -# Begin Source File - -SOURCE=..\libmysql\errmsg.c -# End Source File -# Begin Source File - -SOURCE=.\field.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\field_conv.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\filesort.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\gstream.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_archive.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_blackhole.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_federated.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_berkeley.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_heap.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_innodb.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_myisam.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_myisammrg.cpp -# End Source File -# Begin Source File - -SOURCE=.\handler.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\hash_filo.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\hash_filo.h -# End Source File -# Begin Source File - -SOURCE=.\hostname.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\init.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_buff.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_cmpfunc.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_create.cpp -# End Source File -# Begin Source File - -SOURCE=.\item_func.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_geofunc.cpp -# End Source File -# Begin Source File - -SOURCE=.\item_row.cpp -# End Source File -# Begin Source File - -SOURCE=.\item_strfunc.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_subselect.cpp -# End Source File -# Begin Source File - -SOURCE=.\item_sum.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_timefunc.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_uniq.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\key.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\lock.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\log.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\log_event.cpp -# End Source File -# Begin Source File - -SOURCE=.\message.mc - -!IF "$(CFG)" == "mysqld - Win32 Release" - -# Begin Custom Build -InputPath=.\message.mc - -BuildCmds= \ - mc message.mc - -"message.rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) - -"message.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) -# End Custom Build - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# Begin Custom Build -InputPath=.\message.mc - -BuildCmds= \ - mc message.mc - -"message.rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) - -"message.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) -# End Custom Build - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -# Begin Custom Build -InputPath=.\message.mc - -BuildCmds= \ - mc message.mc - -"message.rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) - -"message.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) -# End Custom Build - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -# Begin Custom Build -InputPath=.\message.mc - -BuildCmds= \ - mc message.mc - -"message.rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) - -"message.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) -# End Custom Build - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -# Begin Custom Build -InputPath=.\message.mc - -BuildCmds= \ - mc message.mc - -"message.rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) - -"message.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) -# End Custom Build - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -# Begin Custom Build -InputPath=.\message.mc - -BuildCmds= \ - mc message.mc - -"message.rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) - -"message.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) -# End Custom Build - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -# Begin Custom Build -InputPath=.\message.mc - -BuildCmds= \ - mc message.mc - -"message.rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) - -"message.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) -# End Custom Build - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -# Begin Custom Build -InputPath=.\message.mc - -BuildCmds= \ - mc message.mc - -"message.rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) - -"message.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) -# End Custom Build - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -# Begin Custom Build -InputPath=.\message.mc - -BuildCmds= \ - mc message.mc - -"message.rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) - -"message.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) -# End Custom Build - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\message.rc -# End Source File -# Begin Source File - -SOURCE=.\mf_iocache.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\my_decimal.cpp -# End Source File -# Begin Source File - -SOURCE=.\my_time.c -# End Source File -# Begin Source File - -SOURCE=.\mysqld.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\net_serv.cpp -# End Source File -# Begin Source File - -SOURCE=.\nt_servc.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\nt_servc.h -# End Source File -# Begin Source File - -SOURCE=.\opt_range.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\opt_range.h -# End Source File -# Begin Source File - -SOURCE=.\OPT_SUM.cpp -# End Source File -# Begin Source File - -SOURCE=.\pack.c -# End Source File -# Begin Source File - -SOURCE=.\parse_file.cpp -# End Source File -# Begin Source File - -SOURCE=.\password.c - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\procedure.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\protocol.cpp -# End Source File -# Begin Source File - -SOURCE=.\records.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\repl_failsafe.cpp -# End Source File -# Begin Source File - -SOURCE=.\set_var.cpp -# End Source File -# Begin Source File - -SOURCE=.\slave.cpp -# End Source File -# Begin Source File - -SOURCE=.\sp.cpp -# End Source File -# Begin Source File - -SOURCE=.\sp_cache.cpp -# End Source File -# Begin Source File - -SOURCE=.\sp_head.cpp -# End Source File -# Begin Source File - -SOURCE=.\sp_pcontext.cpp -# End Source File -# Begin Source File - -SOURCE=.\sp_rcontext.cpp -# End Source File -# Begin Source File - -SOURCE=.\spatial.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_acl.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_analyse.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_base.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_cache.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_class.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_client.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_crypt.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_crypt.h -# End Source File -# Begin Source File - -SOURCE=.\sql_db.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_delete.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_derived.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_do.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_error.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_handler.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_help.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_insert.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_lex.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_list.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_load.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_manager.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_map.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_parse.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_prepare.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_rename.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_repl.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_select.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_show.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_state.c -# End Source File -# Begin Source File - -SOURCE=.\sql_string.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_table.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_test.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_trigger.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_cursor.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_udf.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_union.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_update.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_view.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_yacc.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\strfunc.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\table.cpp -# End Source File -# Begin Source File - -SOURCE=.\thr_malloc.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\time.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\tztime.cpp -# End Source File -# Begin Source File - -SOURCE=.\uniques.cpp -# End Source File -# Begin Source File - -SOURCE=.\unireg.cpp - -!IF "$(CFG)" == "mysqld - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 Max" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro" - -!ELSEIF "$(CFG)" == "mysqld - Win32 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt" - -!ENDIF - -# End Source File -# End Target -# End Project diff --git a/VC++Files/sql/mysqld.dsw b/VC++Files/sql/mysqld.dsw deleted file mode 100644 index 67948565f66..00000000000 --- a/VC++Files/sql/mysqld.dsw +++ /dev/null @@ -1,28 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "mysqld"=".\mysqld.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### diff --git a/VC++Files/sql/mysqld.vcproj b/VC++Files/sql/mysqld.vcproj deleted file mode 100644 index 444eb7a18e0..00000000000 --- a/VC++Files/sql/mysqld.vcproj +++ /dev/null @@ -1,9737 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/sql/mysqld_ia64.dsp b/VC++Files/sql/mysqld_ia64.dsp deleted file mode 100644 index 11809875aaa..00000000000 --- a/VC++Files/sql/mysqld_ia64.dsp +++ /dev/null @@ -1,2013 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqld" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysqld - WinIA64 pro nt -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqld_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqld_ia64.mak" CFG="mysqld - WinIA64 pro nt" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqld - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqld - WinIA64 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqld - WinIA64 nt" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqld - WinIA64 Max nt" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqld - WinIA64 Max" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqld - WinIA64 classic" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqld - WinIA64 pro" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqld - WinIA64 classic nt" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqld - WinIA64 pro nt" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../zlib" /I "../include" /I "../regex" /D "NDEBUG" /D "DBUG_OFF" /D "HAVE_INNOBASE_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x410 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 ..\lib_release\myisammrg.lib ..\lib_release\innodb.lib ..\lib_release\zlib.lib ..\lib_release\vio.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\myisam.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib bufferoverflowU.lib /nologo /subsystem:console /out:"../client_release/mysqld.exe" /machine:IA64 -# SUBTRACT LINK32 /debug - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../storage/bdb/build_win32" /I "../include" /I "../regex" /I "../zlib" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "HAVE_INNOBASE_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /Fr /YX -# ADD BASE RSC /l 0x410 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64 -# ADD LINK32 ..\lib_debug\zlib.lib ..\lib_debug\myisammrg.lib ..\lib_debug\dbug.lib ..\lib_debug\vio.lib ..\lib_debug\isam.lib ..\lib_debug\merge.lib ..\lib_debug\mysys.lib ..\lib_debug\strings.lib ..\lib_debug\regex.lib ..\lib_debug\heap.lib ..\lib_debug\innodb.lib ..\lib_debug\myisam.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /debug /out:"../client_debug/mysqld-debug.exe" /machine:IA64 - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqld__" -# PROP BASE Intermediate_Dir "mysqld__" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "nt" -# PROP Intermediate_Dir "nt" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /G5 /MT /W3 /O2 /I "../include" /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "__WIN64__" /D "DBUG_OFF" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../regex" /I "../zlib" /D "NDEBUG" /D "__NT__" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "HAVE_INNOBASE_DB" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /DMYSQL_SERVER_SUFFIX=-nt /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x410 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib /nologo /subsystem:console /debug /machine:IA64 -# ADD LINK32 ..\lib_release\vio.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\innodb.lib ..\lib_release\zlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib bufferoverflowU.lib /nologo /subsystem:console /map /out:"../client_release/mysqld-nt.exe" /machine:IA64 -# SUBTRACT LINK32 /debug - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqld___Win64_Max_nt" -# PROP BASE Intermediate_Dir "mysqld___Win64_Max_nt" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "max_nt" -# PROP Intermediate_Dir "max_nt" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /D "NDEBUG" /D "__NT__" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../storage/bdb/build_win32" /I "../include" /I "../regex" /I "../zlib" /D "NDEBUG" /D "__NT__" /D "DBUG_OFF" /D "HAVE_INNOBASE_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /DMYSQL_SERVER_SUFFIX=-nt-max /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\zlib.lib /nologo /subsystem:console /map /machine:IA64 -# SUBTRACT BASE LINK32 /debug -# ADD LINK32 ..\lib_release\vio.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys-max.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\zlib.lib ..\lib_release\innodb.lib ..\lib_release\mysys.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib bufferoverflowU.lib /nologo /subsystem:console /map /out:"../client_release/mysqld-max-nt.exe" /machine:IA64 -# SUBTRACT LINK32 /debug - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqld___Win64_Max" -# PROP BASE Intermediate_Dir "mysqld___Win64_Max" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "max" -# PROP Intermediate_Dir "max" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /D "NDEBUG" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../storage/bdb/build_win32" /I "../include" /I "../regex" /I "../zlib" /D "NDEBUG" /D "DBUG_OFF" /D "USE_SYMDIR" /D "HAVE_INNOBASE_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /DMYSQL_SERVER_SUFFIX=-max /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib /nologo /subsystem:console /debug /machine:IA64 -# ADD LINK32 ..\lib_release\vio.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys-max.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\innodb.lib ..\lib_release\zlib.lib ..\lib_release\mysys.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib bufferoverflowU.lib /nologo /subsystem:console /out:"../client_release/mysqld-max.exe" /machine:IA64 -# SUBTRACT LINK32 /debug - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqld___Win64_classic" -# PROP BASE Intermediate_Dir "mysqld___Win64_classic" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic" -# PROP Intermediate_Dir "classic" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "USE_SYMDIR" /D "HAVE_DLOPEN" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../regex" /I "../zlib" /D LICENSE=Commercial /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "HAVE_DLOPEN" /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /DMYSQL_SERVER_SUFFIX=-classic /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\vio.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib /nologo /subsystem:console /machine:IA64 -# SUBTRACT BASE LINK32 /debug -# ADD LINK32 ..\lib_release\vio.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\zlib.lib ..\lib_release\innodb.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib bufferoverflowU.lib /nologo /subsystem:console /out:"../client_classic/mysqld.exe" /libpath:"..\lib_release" /machine:IA64 -# SUBTRACT LINK32 /debug - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqld___Win64_pro" -# PROP BASE Intermediate_Dir "mysqld___Win64_pro" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "pro" -# PROP Intermediate_Dir "pro" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "USE_SYMDIR" /D "HAVE_DLOPEN" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../regex" /I "../zlib" /D "MYSQL_SERVER" /D LICENSE=Commercial /D "_MBCS" /D "HAVE_DLOPEN" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "NDEBUG" /D "_WINDOWS" /D "_CONSOLE" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /DMYSQL_SERVER_SUFFIX=-pro /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\vio.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib /nologo /subsystem:console /machine:IA64 -# SUBTRACT BASE LINK32 /debug -# ADD LINK32 ..\lib_release\vio.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\innodb.lib ..\lib_release\zlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib bufferoverflowU.lib /nologo /subsystem:console /out:"../client_pro/mysqld.exe" /libpath:"..\lib_release" /machine:IA64 -# SUBTRACT LINK32 /debug - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqld___Win64_classic_nt" -# PROP BASE Intermediate_Dir "mysqld___Win64_classic_nt" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "classic_nt" -# PROP Intermediate_Dir "classic_nt" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "USE_SYMDIR" /D "HAVE_DLOPEN" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../regex" /I "../zlib" /D "__NT__" /D "DBUG_OFF" /D "NDEBUG" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D LICENSE=Commercial /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /DMYSQL_SERVER_SUFFIX=-classic-nt /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\vio.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib /nologo /subsystem:console /machine:IA64 -# SUBTRACT BASE LINK32 /debug -# ADD LINK32 ..\lib_release\vio.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\zlib.lib ..\lib_release\innodb.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib bufferoverflowU.lib /nologo /subsystem:console /out:"../client_classic/mysqld-nt.exe" /libpath:"..\lib_release" /machine:IA64 -# SUBTRACT LINK32 /debug - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqld___Win64_pro_nt" -# PROP BASE Intermediate_Dir "mysqld___Win64_pro_nt" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "pro_nt" -# PROP Intermediate_Dir "pro_nt" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "USE_SYMDIR" /D "HAVE_DLOPEN" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /I "../regex" /I "../zlib" /D "__NT__" /D "DBUG_OFF" /D "HAVE_INNOBASE_DB" /D LICENSE=Commercial /D "NDEBUG" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /DMYSQL_SERVER_SUFFIX=-pro-nt" /G2 /EHsc /Wp64 /Zm600 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\vio.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib /nologo /subsystem:console /machine:IA64 -# SUBTRACT BASE LINK32 /debug -# ADD LINK32 ..\lib_release\zlib.lib ..\lib_release\mysys.lib ..\lib_release\innodb.lib ..\lib_release\vio.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib bufferoverflowU.lib /nologo /subsystem:console /out:"../client_pro/mysqld-nt.exe" /libpath:"..\lib_release" /machine:IA64 -# SUBTRACT LINK32 /debug - -!ENDIF - -# Begin Target - -# Name "mysqld - WinIA64 Release" -# Name "mysqld - WinIA64 Debug" -# Name "mysqld - WinIA64 nt" -# Name "mysqld - WinIA64 Max nt" -# Name "mysqld - WinIA64 Max" -# Name "mysqld - WinIA64 classic" -# Name "mysqld - WinIA64 pro" -# Name "mysqld - WinIA64 classic nt" -# Name "mysqld - WinIA64 pro nt" -# Begin Source File - -SOURCE=.\client.c - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\derror.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\discover.cpp -# End Source File -# Begin Source File - -SOURCE=..\libmysql\errmsg.c -# End Source File -# Begin Source File - -SOURCE=.\field.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\field_conv.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\filesort.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\gstream.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_berkeley.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_heap.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_innodb.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_isam.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_isammrg.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_myisam.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_myisammrg.cpp -# End Source File -# Begin Source File - -SOURCE=.\handler.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\hash_filo.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\hash_filo.h -# End Source File -# Begin Source File - -SOURCE=.\hostname.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\init.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_buff.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_cmpfunc.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_create.cpp -# End Source File -# Begin Source File - -SOURCE=.\item_func.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_geofunc.cpp -# End Source File -# Begin Source File - -SOURCE=.\item_row.cpp -# End Source File -# Begin Source File - -SOURCE=.\item_strfunc.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_subselect.cpp -# End Source File -# Begin Source File - -SOURCE=.\item_sum.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_timefunc.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_uniq.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\key.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\lock.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\log.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\log_event.cpp -# End Source File -# Begin Source File - -SOURCE=.\message.mc - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -# Begin Custom Build -InputPath=.\message.mc - -BuildCmds= \ - mc message.mc - -"message.rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) - -"message.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) -# End Custom Build - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# Begin Custom Build -InputPath=.\message.mc - -BuildCmds= \ - mc message.mc - -"message.rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) - -"message.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) -# End Custom Build - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -# Begin Custom Build -InputPath=.\message.mc - -BuildCmds= \ - mc message.mc - -"message.rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) - -"message.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) -# End Custom Build - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -# Begin Custom Build -InputPath=.\message.mc - -BuildCmds= \ - mc message.mc - -"message.rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) - -"message.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) -# End Custom Build - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -# Begin Custom Build -InputPath=.\message.mc - -BuildCmds= \ - mc message.mc - -"message.rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) - -"message.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) -# End Custom Build - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -# Begin Custom Build -InputPath=.\message.mc - -BuildCmds= \ - mc message.mc - -"message.rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) - -"message.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) -# End Custom Build - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -# Begin Custom Build -InputPath=.\message.mc - -BuildCmds= \ - mc message.mc - -"message.rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) - -"message.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) -# End Custom Build - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -# Begin Custom Build -InputPath=.\message.mc - -BuildCmds= \ - mc message.mc - -"message.rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) - -"message.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) -# End Custom Build - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -# Begin Custom Build -InputPath=.\message.mc - -BuildCmds= \ - mc message.mc - -"message.rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) - -"message.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) -# End Custom Build - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\message.rc -# End Source File -# Begin Source File - -SOURCE=.\mf_iocache.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\my_time.c -# End Source File -# Begin Source File - -SOURCE=..\myisammrg\myrg_rnext_same.c -# End Source File -# Begin Source File - -SOURCE=.\mysqld.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\net_serv.cpp -# End Source File -# Begin Source File - -SOURCE=.\nt_servc.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\nt_servc.h -# End Source File -# Begin Source File - -SOURCE=.\opt_range.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\opt_range.h -# End Source File -# Begin Source File - -SOURCE=.\OPT_SUM.cpp -# End Source File -# Begin Source File - -SOURCE=.\pack.c -# End Source File -# Begin Source File - -SOURCE=.\password.c - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\procedure.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\protocol.cpp -# End Source File -# Begin Source File - -SOURCE=.\records.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\repl_failsafe.cpp -# End Source File -# Begin Source File - -SOURCE=.\set_var.cpp -# End Source File -# Begin Source File - -SOURCE=.\slave.cpp -# End Source File -# Begin Source File - -SOURCE=.\spatial.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_acl.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_analyse.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_base.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_cache.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_class.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_client.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_crypt.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_crypt.h -# End Source File -# Begin Source File - -SOURCE=.\sql_db.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_delete.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_derived.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_do.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_error.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_handler.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_help.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_insert.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_lex.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_list.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_load.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_manager.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_map.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_parse.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_prepare.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_rename.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_repl.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_select.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_show.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_state.c -# End Source File -# Begin Source File - -SOURCE=.\sql_string.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_table.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_test.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_udf.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_union.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_update.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_yacc.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\strfunc.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\table.cpp -# End Source File -# Begin Source File - -SOURCE=.\thr_malloc.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\time.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\tztime.cpp -# End Source File -# Begin Source File - -SOURCE=.\uniques.cpp -# End Source File -# Begin Source File - -SOURCE=.\unireg.cpp - -!IF "$(CFG)" == "mysqld - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Debug" - -# ADD CPP /G5 /Zi /Od /G2 /EHsc /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 Max" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 classic nt" - -!ELSEIF "$(CFG)" == "mysqld - WinIA64 pro nt" - -!ENDIF - -# End Source File -# End Target -# End Project diff --git a/VC++Files/sql/mysqldmax.dsp b/VC++Files/sql/mysqldmax.dsp deleted file mode 100644 index 2711b274da0..00000000000 --- a/VC++Files/sql/mysqldmax.dsp +++ /dev/null @@ -1,1011 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqldmax" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysqldmax - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqldmax.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqldmax.mak" CFG="mysqldmax - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqldmax - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqldmax - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqldmax - Win32 nt" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /D "NDEBUG" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_BERKELEY_DB" /D "HAVE_INNOBASE_DB" /FD /c -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\innobase-opt.lib ..\lib_release\libdb32s.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"LIBC" /out:"../client_release/mysqld-max-opt.exe" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /G6 /MTd /W3 /Gm /ZI /Od /I "../include" /I "../regex" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_BERKELEY_DB" /D "HAVE_INNOBASE_DB" /FR /FD /c -# ADD BASE RSC /l 0x416 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_debug\dbug.lib ..\lib_debug\mysys.lib ..\lib_debug\strings.lib ..\lib_debug\regex.lib ..\lib_debug\heap.lib ..\lib_release\innobase-opt.lib ..\lib_release\libdb32s.lib /nologo /subsystem:console /incremental:no /pdb:"debug/mysqld.pdb" /debug /machine:I386 /nodefaultlib:"LIBC" /out:"../client_debug/mysqld-max.exe" /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "nt" -# PROP BASE Intermediate_Dir "nt" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "nt" -# PROP Intermediate_Dir "nt" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /D "NDEBUG" /D "__NT__" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_BERKELEY_DB" /D "HAVE_INNOBASE_DB" /FD /c -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\zlib.lib ..\lib_release\innobase-nt.lib ..\lib_release\libdb32s.lib /nologo /subsystem:console /pdb:"NT/mysqld-nt.pdb" /map:"NT/mysqld-nt.map" /machine:I386 /nodefaultlib:"LIBC" /out:"../client_release/mysqld-max-nt.exe" -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "mysqldmax - Win32 Release" -# Name "mysqldmax - Win32 Debug" -# Name "mysqldmax - Win32 nt" -# Begin Source File - -SOURCE=.\convert.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\derror.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\field.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\field_conv.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\filesort.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\ha_berkeley.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_heap.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_innobase.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_myisam.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_myisammrg.cpp -# End Source File -# Begin Source File - -SOURCE=.\handler.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\hash_filo.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\hash_filo.h -# End Source File -# Begin Source File - -SOURCE=.\hostname.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\init.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_buff.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_cmpfunc.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_create.cpp -# End Source File -# Begin Source File - -SOURCE=.\item_func.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_strfunc.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_sum.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_timefunc.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_uniq.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\key.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\lock.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\log.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\log_event.cpp -# End Source File -# Begin Source File - -SOURCE=.\md5.c -# End Source File -# Begin Source File - -SOURCE=.\mf_iocache.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\mini_client.cpp -# End Source File -# Begin Source File - -SOURCE=.\mini_client_errors.c -# End Source File -# Begin Source File - -SOURCE=.\mysqld.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\net_pkg.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\net_serv.cpp -# End Source File -# Begin Source File - -SOURCE=.\nt_servc.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\nt_servc.h -# End Source File -# Begin Source File - -SOURCE=.\opt_ft.cpp -# End Source File -# Begin Source File - -SOURCE=.\opt_range.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\opt_range.h -# End Source File -# Begin Source File - -SOURCE=.\opt_sum.cpp -# End Source File -# Begin Source File - -SOURCE=.\password.c - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\procedure.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\records.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\slave.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_acl.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_analyse.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_base.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_cache.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_class.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_crypt.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_crypt.h -# End Source File -# Begin Source File - -SOURCE=.\sql_db.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_delete.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_insert.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_lex.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_list.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_load.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_manager.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_map.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_parse.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_rename.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_repl.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_select.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_show.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_string.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_table.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_test.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_update.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_yacc.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\strfunc.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\table.cpp -# End Source File -# Begin Source File - -SOURCE=.\thr_malloc.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\time.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\unireg.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\violite.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/sql/mysqldmax_ia64.dsp b/VC++Files/sql/mysqldmax_ia64.dsp deleted file mode 100644 index 9d79d224e4a..00000000000 --- a/VC++Files/sql/mysqldmax_ia64.dsp +++ /dev/null @@ -1,1542 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqldmax" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysqldmax - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqldmax.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqldmax.mak" CFG="mysqldmax - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqldmax - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqldmax - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqldmax - Win32 nt" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqldmax - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqldmax - WinIA64 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysqldmax - WinIA64 nt" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /I "../include" /I "../regex" /D "NDEBUG" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_BERKELEY_DB" /D "HAVE_INNOBASE_DB" /FD /c /O2 -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\innobase-opt.lib ..\lib_release\libdb32s.lib /nologo /subsystem:console /pdb:none /debug /nodefaultlib:"LIBC" /out:"../client_release/mysqld-max-opt.exe" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /G6 /MTd /W3 /Gm /ZI /I "../include" /I "../regex" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_BERKELEY_DB" /D "HAVE_INNOBASE_DB" /FR /FD /c /Od -# ADD BASE RSC /l 0x416 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_debug\dbug.lib ..\lib_debug\isam.lib ..\lib_debug\merge.lib ..\lib_debug\mysys.lib ..\lib_debug\strings.lib ..\lib_debug\regex.lib ..\lib_debug\heap.lib ..\lib_release\innobase-opt.lib ..\lib_release\libdb32s.lib /nologo /subsystem:console /incremental:no /pdb:"debug/mysqld.pdb" /debug /nodefaultlib:"LIBC" /out:"../client_debug/mysqld-max.exe" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "nt" -# PROP BASE Intermediate_Dir "nt" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "nt" -# PROP Intermediate_Dir "nt" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /I "../include" /I "../regex" /D "NDEBUG" /D "__NT__" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_BERKELEY_DB" /D "HAVE_INNOBASE_DB" /FD /c /O2 -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\zlib.lib ..\lib_release\innobase-nt.lib ..\lib_release\libdb32s.lib /nologo /subsystem:console /pdb:"NT/mysqld-nt.pdb" /map:"NT/mysqld-nt.map" /nodefaultlib:"LIBC" /out:"../client_release/mysqld-max-nt.exe" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /I "../include" /I "../regex" /D"NDEBUG" /D"DBUG_OFF" /D"MYSQL_SERVER" /D"_WINDOWS" /D"_CONSOLE" /D"_MBCS" /D"HAVE_BERKELEY_DB" /D"HAVE_INNOBASE_DB" /FD /c /O2 /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\innobase-opt.lib ..\lib_release\libdb32s.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"LIBC" /out:"../client_release/mysqld-max-opt.exe" /incremental:no - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /I "../include" /I "../regex" /D"_DEBUG" /D"SAFEMALLOC" /D"SAFE_MUTEX" /D"MYSQL_SERVER" /D"_WINDOWS" /D"_CONSOLE" /D"_MBCS" /D"HAVE_INNOBASE_DB" /FR /FD /c /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# ADD BASE RSC /l 0x416 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_debug\dbug.lib ..\lib_debug\isam.lib ..\lib_debug\merge.lib ..\lib_debug\mysys.lib ..\lib_debug\strings.lib ..\lib_debug\regex.lib ..\lib_debug\heap.lib ..\lib_release\innobase-opt.lib ..\lib_release\libdb32s.lib /nologo /subsystem:console /pdb:"debug/mysqld.pdb" /debug /machine:IA64 /nodefaultlib:"LIBC" /out:"../client_debug/mysqld-max.exe" /incremental:no -# SUBTRACT LINK32 - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "nt" -# PROP BASE Intermediate_Dir "nt" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "nt" -# PROP Intermediate_Dir "nt" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /I "../include" /I "../regex" /D"NDEBUG" /D"__NT__" /D"DBUG_OFF" /D"MYSQL_SERVER" /D"_WINDOWS" /D"_CONSOLE" /D"_MBCS" /D"HAVE_INNOBASE_DB" /FD /c /O2 /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\zlib.lib ..\lib_release\innobase-nt.lib ..\lib_release\libdb32s.lib /nologo /subsystem:console /pdb:"NT/mysqld-nt.pdb" /map:"NT/mysqld-nt.map" /machine:IA64 /nodefaultlib:"LIBC" /out:"../client_release/mysqld-max-nt.exe" /incremental:no -# SUBTRACT LINK32 - -!ENDIF - -# Begin Target - -# Name "mysqldmax - Win32 Release" -# Name "mysqldmax - Win32 Debug" -# Name "mysqldmax - Win32 nt" -# Name "mysqldmax - WinIA64 Release" -# Name "mysqldmax - WinIA64 Debug" -# Name "mysqldmax - WinIA64 nt" -# Begin Source File - -SOURCE=.\convert.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\derror.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\field.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\field_conv.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\filesort.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\ha_berkeley.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_heap.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_innobase.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_isam.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_isammrg.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_myisam.cpp -# End Source File -# Begin Source File - -SOURCE=.\ha_myisammrg.cpp -# End Source File -# Begin Source File - -SOURCE=.\handler.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\hash_filo.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\hash_filo.h -# End Source File -# Begin Source File - -SOURCE=.\hostname.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\init.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_buff.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_cmpfunc.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_create.cpp -# End Source File -# Begin Source File - -SOURCE=.\item_func.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_strfunc.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_sum.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_timefunc.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\item_uniq.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\key.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\lock.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\log.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\log_event.cpp -# End Source File -# Begin Source File - -SOURCE=.\md5.c -# End Source File -# Begin Source File - -SOURCE=.\mf_iocache.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\mini_client.cpp -# End Source File -# Begin Source File - -SOURCE=.\mini_client_errors.c -# End Source File -# Begin Source File - -SOURCE=.\mysqld.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\net_pkg.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\net_serv.cpp -# End Source File -# Begin Source File - -SOURCE=.\nt_servc.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\nt_servc.h -# End Source File -# Begin Source File - -SOURCE=.\opt_ft.cpp -# End Source File -# Begin Source File - -SOURCE=.\opt_range.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\opt_range.h -# End Source File -# Begin Source File - -SOURCE=.\opt_sum.cpp -# End Source File -# Begin Source File - -SOURCE=.\password.c - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\procedure.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\records.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\slave.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_acl.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_analyse.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_base.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_cache.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_class.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_crypt.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_crypt.h -# End Source File -# Begin Source File - -SOURCE=.\sql_db.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_delete.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_insert.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_lex.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_list.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_load.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_manager.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_map.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_parse.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_rename.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_repl.cpp -# End Source File -# Begin Source File - -SOURCE=.\sql_select.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_show.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_string.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_table.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_test.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_update.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\sql_yacc.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\strfunc.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\table.cpp -# End Source File -# Begin Source File - -SOURCE=.\thr_malloc.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\time.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\unireg.cpp - -!IF "$(CFG)" == "mysqldmax - Win32 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 Debug" - -# ADD CPP /G5 /Od -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - Win32 nt" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Release" - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 Debug" - -# ADD CPP /G5 /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# SUBTRACT CPP /YX /Yc /Yu - -!ELSEIF "$(CFG)" == "mysqldmax - WinIA64 nt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\violite.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/sql/old/mysqld.dsw b/VC++Files/sql/old/mysqld.dsw deleted file mode 100644 index 67948565f66..00000000000 --- a/VC++Files/sql/old/mysqld.dsw +++ /dev/null @@ -1,28 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "mysqld"=".\mysqld.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### diff --git a/VC++Files/storage/archive/archive.vcproj b/VC++Files/storage/archive/archive.vcproj deleted file mode 100644 index c82bdfc8e03..00000000000 --- a/VC++Files/storage/archive/archive.vcproj +++ /dev/null @@ -1,257 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/storage/bdb/bdb.dsp b/VC++Files/storage/bdb/bdb.dsp deleted file mode 100644 index 4b2751873ea..00000000000 --- a/VC++Files/storage/bdb/bdb.dsp +++ /dev/null @@ -1,825 +0,0 @@ -# Microsoft Developer Studio Project File - Name="bdb" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=bdb - Win32 Max -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "bdb.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "bdb.mak" CFG="bdb - Win32 Max" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "bdb - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "bdb - Win32 Max" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "bdb - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../bdb/build_win32" /I "../bdb" /I "../bdb/dbinc" /D "__WIN32__" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\lib_debug\bdb.lib" - -!ELSEIF "$(CFG)" == "bdb - Win32 Max" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "max" -# PROP BASE Intermediate_Dir "max" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "max" -# PROP Intermediate_Dir "max" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../bdb/build_win32" /I "../bdb/include" /D "__WIN32__" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /FD /c -# SUBTRACT BASE CPP /Fr -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../bdb/build_win32" /I "../bdb" /D "NDEBUG" /D "DBUG_OFF" /D "_WINDOWS" /D MYSQL_SERVER_SUFFIX=-max /Fo"max/" /Fd"max/" /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\lib_debug\bdb.lib" -# ADD LIB32 /nologo /out:"..\..\lib_release\bdb.lib" - -!ENDIF - -# Begin Target - -# Name "bdb - Win32 Debug" -# Name "bdb - Win32 Max" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\btree\bt_compare.c -# End Source File -# Begin Source File - -SOURCE=.\btree\bt_conv.c -# End Source File -# Begin Source File - -SOURCE=.\btree\bt_curadj.c -# End Source File -# Begin Source File - -SOURCE=.\btree\bt_cursor.c -# End Source File -# Begin Source File - -SOURCE=.\btree\bt_delete.c -# End Source File -# Begin Source File - -SOURCE=.\btree\bt_method.c -# End Source File -# Begin Source File - -SOURCE=.\btree\bt_open.c -# End Source File -# Begin Source File - -SOURCE=.\btree\bt_put.c -# End Source File -# Begin Source File - -SOURCE=.\btree\bt_rec.c -# End Source File -# Begin Source File - -SOURCE=.\btree\bt_reclaim.c -# End Source File -# Begin Source File - -SOURCE=.\btree\bt_recno.c -# End Source File -# Begin Source File - -SOURCE=.\btree\bt_rsearch.c -# End Source File -# Begin Source File - -SOURCE=.\btree\bt_search.c -# End Source File -# Begin Source File - -SOURCE=.\btree\bt_split.c -# End Source File -# Begin Source File - -SOURCE=.\btree\bt_stat.c -# End Source File -# Begin Source File - -SOURCE=.\btree\bt_upgrade.c -# End Source File -# Begin Source File - -SOURCE=.\btree\bt_verify.c -# End Source File -# Begin Source File - -SOURCE=.\btree\btree_auto.c -# End Source File -# Begin Source File - -SOURCE=.\crypto\aes_method.c -# End Source File -# Begin Source File - -SOURCE=.\crypto\crypto.c -# End Source File -# Begin Source File - -SOURCE=.\crypto\mersenne\mt19937db.c -# End Source File -# Begin Source File - -SOURCE=.\crypto\rijndael\rijndael-alg-fst.c -# End Source File -# Begin Source File - -SOURCE=.\crypto\rijndael\rijndael-api-fst.c -# End Source File -# Begin Source File - -SOURCE=.\db\crdel_auto.c -# End Source File -# Begin Source File - -SOURCE=.\db\crdel_rec.c -# End Source File -# Begin Source File - -SOURCE=.\db\db.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_am.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_auto.c -# End Source File -# Begin Source File - -SOURCE=.\common\db_byteorder.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_cam.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_conv.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_dispatch.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_dup.c -# End Source File -# Begin Source File - -SOURCE=.\common\db_err.c -# End Source File -# Begin Source File - -SOURCE=.\common\db_getlong.c -# End Source File -# Begin Source File - -SOURCE=.\common\db_idspace.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_iface.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_join.c -# End Source File -# Begin Source File - -SOURCE=.\common\db_log2.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_meta.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_method.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_open.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_overflow.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_ovfl_vrfy.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_pr.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_rec.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_reclaim.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_remove.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_rename.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_ret.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_setid.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_setlsn.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_stati.c -# End Source File -# Begin Source File - -SOURCE=.\env\db_salloc.c -# End Source File -# Begin Source File - -SOURCE=.\env\db_shash.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_truncate.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_upg.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_upg_opd.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_vrfy.c -# End Source File -# Begin Source File - -SOURCE=.\db\db_vrfyutil.c -# End Source File -# Begin Source File - -SOURCE=.\dbm\dbm.c -# End Source File -# Begin Source File - -SOURCE=.\dbreg\dbreg.c -# End Source File -# Begin Source File - -SOURCE=.\dbreg\dbreg_auto.c -# End Source File -# Begin Source File - -SOURCE=.\dbreg\dbreg_rec.c -# End Source File -# Begin Source File - -SOURCE=.\dbreg\dbreg_stat.c -# End Source File -# Begin Source File - -SOURCE=.\dbreg\dbreg_util.c -# End Source File -# Begin Source File - -SOURCE=.\env\env_file.c -# End Source File -# Begin Source File - -SOURCE=.\env\env_method.c -# End Source File -# Begin Source File - -SOURCE=.\env\env_open.c -# End Source File -# Begin Source File - -SOURCE=.\env\env_recover.c -# End Source File -# Begin Source File - -SOURCE=.\env\env_region.c -# End Source File -# Begin Source File - -SOURCE=.\env\env_stat.c -# End Source File -# Begin Source File - -SOURCE=.\fileops\fileops_auto.c -# End Source File -# Begin Source File - -SOURCE=.\fileops\fop_basic.c -# End Source File -# Begin Source File - -SOURCE=.\fileops\fop_rec.c -# End Source File -# Begin Source File - -SOURCE=.\fileops\fop_util.c -# End Source File -# Begin Source File - -SOURCE=.\hash\hash.c -# End Source File -# Begin Source File - -SOURCE=.\hash\hash_auto.c -# End Source File -# Begin Source File - -SOURCE=.\hash\hash_conv.c -# End Source File -# Begin Source File - -SOURCE=.\hash\hash_dup.c -# End Source File -# Begin Source File - -SOURCE=.\hash\hash_func.c -# End Source File -# Begin Source File - -SOURCE=.\hash\hash_meta.c -# End Source File -# Begin Source File - -SOURCE=.\hash\hash_method.c -# End Source File -# Begin Source File - -SOURCE=.\hash\hash_open.c -# End Source File -# Begin Source File - -SOURCE=.\hash\hash_page.c -# End Source File -# Begin Source File - -SOURCE=.\hash\hash_rec.c -# End Source File -# Begin Source File - -SOURCE=.\hash\hash_reclaim.c -# End Source File -# Begin Source File - -SOURCE=.\hash\hash_stat.c -# End Source File -# Begin Source File - -SOURCE=.\hash\hash_upgrade.c -# End Source File -# Begin Source File - -SOURCE=.\hash\hash_verify.c -# End Source File -# Begin Source File - -SOURCE=.\hmac\hmac.c -# End Source File -# Begin Source File - -SOURCE=.\hsearch\hsearch.c -# End Source File -# Begin Source File - -SOURCE=.\lock\lock.c -# End Source File -# Begin Source File - -SOURCE=.\lock\lock_deadlock.c -# End Source File -# Begin Source File - -SOURCE=.\lock\lock_id.c -# End Source File -# Begin Source File - -SOURCE=.\lock\lock_list.c -# End Source File -# Begin Source File - -SOURCE=.\lock\lock_method.c -# End Source File -# Begin Source File - -SOURCE=.\lock\lock_region.c -# End Source File -# Begin Source File - -SOURCE=.\lock\lock_stat.c -# End Source File -# Begin Source File - -SOURCE=.\lock\lock_timer.c -# End Source File -# Begin Source File - -SOURCE=.\lock\lock_util.c -# End Source File -# Begin Source File - -SOURCE=.\log\log.c -# End Source File -# Begin Source File - -SOURCE=.\log\log_archive.c -# End Source File -# Begin Source File - -SOURCE=.\log\log_compare.c -# End Source File -# Begin Source File - -SOURCE=.\log\log_get.c -# End Source File -# Begin Source File - -SOURCE=.\log\log_method.c -# End Source File -# Begin Source File - -SOURCE=.\log\log_put.c -# End Source File -# Begin Source File - -SOURCE=.\log\log_stat.c -# End Source File -# Begin Source File - -SOURCE=.\mp\mp_alloc.c -# End Source File -# Begin Source File - -SOURCE=.\mp\mp_bh.c -# End Source File -# Begin Source File - -SOURCE=.\mp\mp_fget.c -# End Source File -# Begin Source File - -SOURCE=.\mp\mp_fmethod.c -# End Source File -# Begin Source File - -SOURCE=.\mp\mp_fopen.c -# End Source File -# Begin Source File - -SOURCE=.\mp\mp_fput.c -# End Source File -# Begin Source File - -SOURCE=.\mp\mp_fset.c -# End Source File -# Begin Source File - -SOURCE=.\mp\mp_method.c -# End Source File -# Begin Source File - -SOURCE=.\mp\mp_region.c -# End Source File -# Begin Source File - -SOURCE=.\mp\mp_register.c -# End Source File -# Begin Source File - -SOURCE=.\mp\mp_stat.c -# End Source File -# Begin Source File - -SOURCE=.\mp\mp_sync.c -# End Source File -# Begin Source File - -SOURCE=.\mp\mp_trickle.c -# End Source File -# Begin Source File - -SOURCE=.\mutex\mut_tas.c -# End Source File -# Begin Source File - -SOURCE=.\mutex\mut_win32.c -# End Source File -# Begin Source File - -SOURCE=.\mutex\mutex.c -# End Source File -# Begin Source File - -SOURCE=.\os_win32\os_abs.c -# End Source File -# Begin Source File - -SOURCE=.\os\os_alloc.c -# End Source File -# Begin Source File - -SOURCE=.\os_win32\os_clock.c -# End Source File -# Begin Source File - -SOURCE=.\os_win32\os_config.c -# End Source File -# Begin Source File - -SOURCE=.\os_win32\os_dir.c -# End Source File -# Begin Source File - -SOURCE=.\os_win32\os_errno.c -# End Source File -# Begin Source File - -SOURCE=.\os_win32\os_fid.c -# End Source File -# Begin Source File - -SOURCE=.\os_win32\os_fsync.c -# End Source File -# Begin Source File - -SOURCE=.\os_win32\os_handle.c -# End Source File -# Begin Source File - -SOURCE=.\os\os_id.c -# End Source File -# Begin Source File - -SOURCE=.\os_win32\os_map.c -# End Source File -# Begin Source File - -SOURCE=.\os\os_method.c -# End Source File -# Begin Source File - -SOURCE=.\os\os_oflags.c -# End Source File -# Begin Source File - -SOURCE=.\os_win32\os_open.c -# End Source File -# Begin Source File - -SOURCE=.\os\os_region.c -# End Source File -# Begin Source File - -SOURCE=.\os_win32\os_rename.c -# End Source File -# Begin Source File - -SOURCE=.\os\os_root.c -# End Source File -# Begin Source File - -SOURCE=.\os\os_rpath.c -# End Source File -# Begin Source File - -SOURCE=.\os_win32\os_rw.c -# End Source File -# Begin Source File - -SOURCE=.\os_win32\os_seek.c -# End Source File -# Begin Source File - -SOURCE=.\os_win32\os_sleep.c -# End Source File -# Begin Source File - -SOURCE=.\os_win32\os_spin.c -# End Source File -# Begin Source File - -SOURCE=.\os_win32\os_stat.c -# End Source File -# Begin Source File - -SOURCE=.\os\os_tmpdir.c -# End Source File -# Begin Source File - -SOURCE=.\os_win32\os_truncate.c -# End Source File -# Begin Source File - -SOURCE=.\os_win32\os_type.c -# End Source File -# Begin Source File - -SOURCE=.\os\os_unlink.c -# End Source File -# Begin Source File - -SOURCE=.\qam\qam.c -# End Source File -# Begin Source File - -SOURCE=.\qam\qam_auto.c -# End Source File -# Begin Source File - -SOURCE=.\qam\qam_conv.c -# End Source File -# Begin Source File - -SOURCE=.\qam\qam_files.c -# End Source File -# Begin Source File - -SOURCE=.\qam\qam_method.c -# End Source File -# Begin Source File - -SOURCE=.\qam\qam_open.c -# End Source File -# Begin Source File - -SOURCE=.\qam\qam_rec.c -# End Source File -# Begin Source File - -SOURCE=.\qam\qam_stat.c -# End Source File -# Begin Source File - -SOURCE=.\qam\qam_upgrade.c -# End Source File -# Begin Source File - -SOURCE=.\qam\qam_verify.c -# End Source File -# Begin Source File - -SOURCE=.\rep\rep_auto.c -# End Source File -# Begin Source File - -SOURCE=.\rep\rep_backup.c -# End Source File -# Begin Source File - -SOURCE=.\rep\rep_method.c -# End Source File -# Begin Source File - -SOURCE=.\rep\rep_record.c -# End Source File -# Begin Source File - -SOURCE=.\rep\rep_region.c -# End Source File -# Begin Source File - -SOURCE=.\rep\rep_stat.c -# End Source File -# Begin Source File - -SOURCE=.\rep\rep_util.c -# End Source File -# Begin Source File - -SOURCE=.\hmac\sha1.c -# End Source File -# Begin Source File - -SOURCE=.\clib\strcasecmp.c -# End Source File -# Begin Source File - -SOURCE=.\txn\txn.c -# End Source File -# Begin Source File - -SOURCE=.\txn\txn_auto.c -# End Source File -# Begin Source File - -SOURCE=.\txn\txn_method.c -# End Source File -# Begin Source File - -SOURCE=.\txn\txn_rec.c -# End Source File -# Begin Source File - -SOURCE=.\txn\txn_recover.c -# End Source File -# Begin Source File - -SOURCE=.\txn\txn_region.c -# End Source File -# Begin Source File - -SOURCE=.\txn\txn_stat.c -# End Source File -# Begin Source File - -SOURCE=.\txn\txn_util.c -# End Source File -# Begin Source File - -SOURCE=.\common\util_log.c -# End Source File -# Begin Source File - -SOURCE=.\common\util_sig.c -# End Source File -# Begin Source File - -SOURCE=.\xa\xa.c -# End Source File -# Begin Source File - -SOURCE=.\xa\xa_db.c -# End Source File -# Begin Source File - -SOURCE=.\xa\xa_map.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# End Target -# End Project diff --git a/VC++Files/storage/bdb/bdb.vcproj b/VC++Files/storage/bdb/bdb.vcproj deleted file mode 100644 index 6a94a44d8de..00000000000 --- a/VC++Files/storage/bdb/bdb.vcproj +++ /dev/null @@ -1,3620 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/storage/bdb/build_win32/Berkeley_DB.dsw b/VC++Files/storage/bdb/build_win32/Berkeley_DB.dsw deleted file mode 100644 index 899e31ad58d..00000000000 --- a/VC++Files/storage/bdb/build_win32/Berkeley_DB.dsw +++ /dev/null @@ -1,568 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "DB_DLL"=.\db_dll.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "DB_Static"=.\db_static.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "db_archive"=.\db_archive.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_Static - End Project Dependency -}}} - -############################################################################### - -Project: "db_buildall"=.\db_buildall.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name db_archive - End Project Dependency - Begin Project Dependency - Project_Dep_Name db_checkpoint - End Project Dependency - Begin Project Dependency - Project_Dep_Name db_deadlock - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency - Begin Project Dependency - Project_Dep_Name db_dump - End Project Dependency - Begin Project Dependency - Project_Dep_Name db_load - End Project Dependency - Begin Project Dependency - Project_Dep_Name db_printlog - End Project Dependency - Begin Project Dependency - Project_Dep_Name db_recover - End Project Dependency - Begin Project Dependency - Project_Dep_Name db_stat - End Project Dependency - Begin Project Dependency - Project_Dep_Name db_upgrade - End Project Dependency - Begin Project Dependency - Project_Dep_Name db_verify - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_Static - End Project Dependency - Begin Project Dependency - Project_Dep_Name ex_access - End Project Dependency - Begin Project Dependency - Project_Dep_Name ex_btrec - End Project Dependency - Begin Project Dependency - Project_Dep_Name ex_env - End Project Dependency - Begin Project Dependency - Project_Dep_Name ex_lock - End Project Dependency - Begin Project Dependency - Project_Dep_Name ex_mpool - End Project Dependency - Begin Project Dependency - Project_Dep_Name ex_tpcb - End Project Dependency - Begin Project Dependency - Project_Dep_Name excxx_access - End Project Dependency - Begin Project Dependency - Project_Dep_Name excxx_btrec - End Project Dependency - Begin Project Dependency - Project_Dep_Name excxx_env - End Project Dependency - Begin Project Dependency - Project_Dep_Name excxx_lock - End Project Dependency - Begin Project Dependency - Project_Dep_Name excxx_mpool - End Project Dependency - Begin Project Dependency - Project_Dep_Name excxx_tpcb - End Project Dependency -}}} - -############################################################################### - -Project: "db_checkpoint"=.\db_checkpoint.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_Static - End Project Dependency -}}} - -############################################################################### - -Project: "db_deadlock"=.\db_deadlock.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_Static - End Project Dependency -}}} - -############################################################################### - -Project: "db_dump"=.\db_dump.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_Static - End Project Dependency -}}} - -############################################################################### - -Project: "db_java"=.\db_java.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency -}}} - -############################################################################### - -Project: "db_load"=.\db_load.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_Static - End Project Dependency -}}} - -############################################################################### - -Project: "db_printlog"=.\db_printlog.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_Static - End Project Dependency -}}} - -############################################################################### - -Project: "db_recover"=.\db_recover.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_Static - End Project Dependency -}}} - -############################################################################### - -Project: "db_stat"=.\db_stat.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_Static - End Project Dependency -}}} - -############################################################################### - -Project: "db_tcl"=.\db_tcl.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency -}}} - -############################################################################### - -Project: "db_test"=.\db_test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name db_buildall - End Project Dependency - Begin Project Dependency - Project_Dep_Name db_tcl - End Project Dependency -}}} - -############################################################################### - -Project: "db_upgrade"=.\db_upgrade.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_Static - End Project Dependency -}}} - -############################################################################### - -Project: "db_verify"=.\db_verify.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_Static - End Project Dependency -}}} - -############################################################################### - -Project: "ex_access"=.\ex_access.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_Static - End Project Dependency -}}} - -############################################################################### - -Project: "ex_btrec"=.\ex_btrec.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_Static - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency -}}} - -############################################################################### - -Project: "ex_env"=.\ex_env.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_Static - End Project Dependency -}}} - -############################################################################### - -Project: "ex_lock"=.\ex_lock.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_Static - End Project Dependency -}}} - -############################################################################### - -Project: "ex_mpool"=.\ex_mpool.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_Static - End Project Dependency -}}} - -############################################################################### - -Project: "ex_tpcb"=.\ex_tpcb.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_Static - End Project Dependency -}}} - -############################################################################### - -Project: "excxx_access"=.\excxx_access.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_Static - End Project Dependency -}}} - -############################################################################### - -Project: "excxx_btrec"=.\excxx_btrec.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_Static - End Project Dependency -}}} - -############################################################################### - -Project: "excxx_env"=.\excxx_env.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_Static - End Project Dependency -}}} - -############################################################################### - -Project: "excxx_lock"=.\excxx_lock.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_Static - End Project Dependency -}}} - -############################################################################### - -Project: "excxx_mpool"=.\excxx_mpool.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_Static - End Project Dependency -}}} - -############################################################################### - -Project: "excxx_tpcb"=.\excxx_tpcb.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name DB_DLL - End Project Dependency - Begin Project Dependency - Project_Dep_Name DB_Static - End Project Dependency -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### diff --git a/VC++Files/storage/bdb/build_win32/db_archive.dsp b/VC++Files/storage/bdb/build_win32/db_archive.dsp deleted file mode 100644 index b115caba486..00000000000 --- a/VC++Files/storage/bdb/build_win32/db_archive.dsp +++ /dev/null @@ -1,151 +0,0 @@ -# Microsoft Developer Studio Project File - Name="db_archive" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=db_archive - Win32 Debug Static -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "db_archive.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "db_archive.mak" CFG="db_archive - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "db_archive - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_archive - Win32 Debug" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_archive - Win32 Release Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_archive - Win32 Debug Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "db_archive - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" - -!ELSEIF "$(CFG)" == "db_archive - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no - -!ELSEIF "$(CFG)" == "db_archive - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Release_static/libdb32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release_static/libdb32s.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "db_archive - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Debug_static/libdb32d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no -# ADD LINK32 Debug_static/libdb32sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no - -!ENDIF - -# Begin Target - -# Name "db_archive - Win32 Release" -# Name "db_archive - Win32 Debug" -# Name "db_archive - Win32 Release Static" -# Name "db_archive - Win32 Debug Static" -# Begin Source File - -SOURCE=..\db_archive\db_archive.c -# End Source File -# Begin Source File - -SOURCE=..\clib\getopt.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/db_buildall.dsp b/VC++Files/storage/bdb/build_win32/db_buildall.dsp deleted file mode 100644 index 1f54083d00f..00000000000 --- a/VC++Files/storage/bdb/build_win32/db_buildall.dsp +++ /dev/null @@ -1,128 +0,0 @@ -# Microsoft Developer Studio Project File - Name="db_buildall" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) External Target" 0x0106 - -CFG=db_buildall - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "db_buildall.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "db_buildall.mak" CFG="db_buildall - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "db_buildall - Win32 Release" (based on "Win32 (x86) External Target") -!MESSAGE "db_buildall - Win32 Debug" (based on "Win32 (x86) External Target") -!MESSAGE "db_buildall - Win32 Release Static" (based on\ - "Win32 (x86) External Target") -!MESSAGE "db_buildall - Win32 Debug Static" (based on\ - "Win32 (x86) External Target") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" - -!IF "$(CFG)" == "db_buildall - Win32 Release" - -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Cmd_Line "NMAKE /f db_buildall.mak" -# PROP BASE Rebuild_Opt "/a" -# PROP BASE Target_File "db_buildall.exe" -# PROP BASE Bsc_Name "db_buildall.bsc" -# PROP BASE Target_Dir "" -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Cmd_Line "echo DB release version built." -# PROP Rebuild_Opt "" -# PROP Target_File "db_buildall.exe" -# PROP Bsc_Name "db_buildall.bsc" -# PROP Target_Dir "" - -!ELSEIF "$(CFG)" == "db_buildall - Win32 Debug" - -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Cmd_Line "NMAKE /f db_buildall.mak" -# PROP BASE Rebuild_Opt "/a" -# PROP BASE Target_File "db_buildall.exe" -# PROP BASE Bsc_Name "db_buildall.bsc" -# PROP BASE Target_Dir "" -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Cmd_Line "echo DB debug version built." -# PROP Rebuild_Opt "" -# PROP Target_File "db_buildall.exe" -# PROP Bsc_Name "db_buildall.bsc" -# PROP Target_Dir "" - -!ELSEIF "$(CFG)" == "db_buildall - Win32 Release Static" - -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release_static" -# PROP BASE Intermediate_Dir "Release_static" -# PROP BASE Cmd_Line "echo DB release version built." -# PROP BASE Rebuild_Opt "" -# PROP BASE Target_File "db_buildall.exe" -# PROP BASE Bsc_Name "db_buildall.bsc" -# PROP BASE Target_Dir "" -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Cmd_Line "echo DB release version built." -# PROP Rebuild_Opt "" -# PROP Target_File "db_buildall.exe" -# PROP Bsc_Name "db_buildall.bsc" -# PROP Target_Dir "" - -!ELSEIF "$(CFG)" == "db_buildall - Win32 Debug Static" - -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug_static" -# PROP BASE Intermediate_Dir "Debug_static" -# PROP BASE Cmd_Line "echo DB debug version built." -# PROP BASE Rebuild_Opt "" -# PROP BASE Target_File "db_buildall.exe" -# PROP BASE Bsc_Name "db_buildall.bsc" -# PROP BASE Target_Dir "" -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Cmd_Line "echo DB debug version built." -# PROP Rebuild_Opt "" -# PROP Target_File "db_buildall.exe" -# PROP Bsc_Name "db_buildall.bsc" -# PROP Target_Dir "" - -!ENDIF - -# Begin Target - -# Name "db_buildall - Win32 Release" -# Name "db_buildall - Win32 Debug" -# Name "db_buildall - Win32 Release Static" -# Name "db_buildall - Win32 Debug Static" - -!IF "$(CFG)" == "db_buildall - Win32 Release" - -!ELSEIF "$(CFG)" == "db_buildall - Win32 Debug" - -!ELSEIF "$(CFG)" == "db_buildall - Win32 Release Static" - -!ELSEIF "$(CFG)" == "db_buildall - Win32 Debug Static" - -!ENDIF - -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/db_checkpoint.dsp b/VC++Files/storage/bdb/build_win32/db_checkpoint.dsp deleted file mode 100644 index 71ee57e1693..00000000000 --- a/VC++Files/storage/bdb/build_win32/db_checkpoint.dsp +++ /dev/null @@ -1,151 +0,0 @@ -# Microsoft Developer Studio Project File - Name="db_checkpoint" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=db_checkpoint - Win32 Debug Static -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "db_checkpoint.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "db_checkpoint.mak" CFG="db_checkpoint - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "db_checkpoint - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_checkpoint - Win32 Debug" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_checkpoint - Win32 Release Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_checkpoint - Win32 Debug Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "db_checkpoint - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" - -!ELSEIF "$(CFG)" == "db_checkpoint - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no - -!ELSEIF "$(CFG)" == "db_checkpoint - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Release_static/libdb32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release_static/libdb32s.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "db_checkpoint - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Debug_static/libdb32d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no -# ADD LINK32 Debug_static/libdb32sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no - -!ENDIF - -# Begin Target - -# Name "db_checkpoint - Win32 Release" -# Name "db_checkpoint - Win32 Debug" -# Name "db_checkpoint - Win32 Release Static" -# Name "db_checkpoint - Win32 Debug Static" -# Begin Source File - -SOURCE=..\db_checkpoint\db_checkpoint.c -# End Source File -# Begin Source File - -SOURCE=..\clib\getopt.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/db_deadlock.dsp b/VC++Files/storage/bdb/build_win32/db_deadlock.dsp deleted file mode 100644 index d9112bace47..00000000000 --- a/VC++Files/storage/bdb/build_win32/db_deadlock.dsp +++ /dev/null @@ -1,151 +0,0 @@ -# Microsoft Developer Studio Project File - Name="db_deadlock" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=db_deadlock - Win32 Debug Static -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "db_deadlock.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "db_deadlock.mak" CFG="db_deadlock - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "db_deadlock - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_deadlock - Win32 Debug" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_deadlock - Win32 Release Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_deadlock - Win32 Debug Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "db_deadlock - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" - -!ELSEIF "$(CFG)" == "db_deadlock - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no - -!ELSEIF "$(CFG)" == "db_deadlock - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Release_static/libdb32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release_static/libdb32s.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "db_deadlock - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Debug_static/libdb32d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no -# ADD LINK32 Debug_static/libdb32sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no - -!ENDIF - -# Begin Target - -# Name "db_deadlock - Win32 Release" -# Name "db_deadlock - Win32 Debug" -# Name "db_deadlock - Win32 Release Static" -# Name "db_deadlock - Win32 Debug Static" -# Begin Source File - -SOURCE=..\db_deadlock\db_deadlock.c -# End Source File -# Begin Source File - -SOURCE=..\clib\getopt.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/db_dll.dsp b/VC++Files/storage/bdb/build_win32/db_dll.dsp deleted file mode 100644 index 3ec370c1d72..00000000000 --- a/VC++Files/storage/bdb/build_win32/db_dll.dsp +++ /dev/null @@ -1,753 +0,0 @@ -# Microsoft Developer Studio Project File - Name="db_dll" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=db_dll - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "db_dll.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "db_dll.mak" CFG="db_dll - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "db_dll - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "db_dll - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "db_dll - Win32 Release Static" (based on\ - "Win32 (x86) Dynamic-Link Library") -!MESSAGE "db_dll - Win32 Debug Static" (based on\ - "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "db_dll - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /Ob2 /I "." /I "../include" /D "DB_CREATE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release/libdb32.dll" - -!ELSEIF "$(CFG)" == "db_dll - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 2 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "DB_CREATE_DLL" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /YX"config.h" /FD /c -# SUBTRACT CPP /Fr -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 /nologo /base:"0x13000000" /subsystem:windows /dll /pdb:none /debug /machine:I386 /out:"Debug/libdb32d.dll" /fixed:no - -!ELSEIF "$(CFG)" == "db_dll - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "DB_DLL__" -# PROP BASE Intermediate_Dir "DB_DLL__" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /Ob2 /I "." /I "../include" /D "DB_CREATE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /Ob2 /I "." /I "../include" /D "DB_CREATE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release/libdb32.dll" -# ADD LINK32 /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release/libdb32.dll" - -!ELSEIF "$(CFG)" == "db_dll - Win32 Debug Static" - -# PROP BASE Use_MFC 2 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "DB_DLL_0" -# PROP BASE Intermediate_Dir "DB_DLL_0" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 2 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "DB_CREATE_DLL" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /YX"config.h" /FD /c -# SUBTRACT BASE CPP /Fr -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "DB_CREATE_DLL" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /YX"config.h" /FD /c -# SUBTRACT CPP /Fr -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" -# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 /nologo /base:"0x13000000" /subsystem:windows /dll /pdb:none /debug /machine:I386 /out:"Debug/libdb32d.dll" /fixed:no -# ADD LINK32 /nologo /base:"0x13000000" /subsystem:windows /dll /pdb:none /debug /machine:I386 /out:"Debug/libdb32d.dll" /fixed:no - -!ENDIF - -# Begin Target - -# Name "db_dll - Win32 Release" -# Name "db_dll - Win32 Debug" -# Name "db_dll - Win32 Release Static" -# Name "db_dll - Win32 Debug Static" -# Begin Source File - -SOURCE=..\btree\bt_compare.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_conv.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_curadj.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_cursor.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_delete.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_method.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_open.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_put.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_rec.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_reclaim.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_recno.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_rsearch.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_search.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_split.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_stat.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_upgrade.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_verify.c -# End Source File -# Begin Source File - -SOURCE=..\btree\btree_auto.c -# End Source File -# Begin Source File - -SOURCE=.\dllmain.c -# End Source File -# Begin Source File - -SOURCE=.\libdb.def -# End Source File -# Begin Source File - -SOURCE=.\libdb.rc -# End Source File -# Begin Source File - -SOURCE=..\clib\strcasecmp.c -# End Source File -# Begin Source File - -SOURCE=..\common\db_byteorder.c -# End Source File -# Begin Source File - -SOURCE=..\common\db_err.c -# End Source File -# Begin Source File - -SOURCE=..\common\db_getlong.c -# End Source File -# Begin Source File - -SOURCE=..\common\db_log2.c -# End Source File -# Begin Source File - -SOURCE=..\common\util_log.c -# End Source File -# Begin Source File - -SOURCE=..\common\util_sig.c -# End Source File -# Begin Source File - -SOURCE=..\cxx\cxx_app.cpp -# End Source File -# Begin Source File - -SOURCE=..\cxx\cxx_except.cpp -# End Source File -# Begin Source File - -SOURCE=..\cxx\cxx_lock.cpp -# End Source File -# Begin Source File - -SOURCE=..\cxx\cxx_log.cpp -# End Source File -# Begin Source File - -SOURCE=..\cxx\cxx_mpool.cpp -# End Source File -# Begin Source File - -SOURCE=..\cxx\cxx_table.cpp -# End Source File -# Begin Source File - -SOURCE=..\cxx\cxx_txn.cpp -# End Source File -# Begin Source File - -SOURCE=..\db\crdel_auto.c -# End Source File -# Begin Source File - -SOURCE=..\db\crdel_rec.c -# End Source File -# Begin Source File - -SOURCE=..\db\db.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_am.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_auto.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_cam.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_conv.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_dispatch.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_dup.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_iface.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_join.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_meta.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_method.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_overflow.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_pr.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_rec.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_reclaim.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_ret.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_upg.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_upg_opd.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_vrfy.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_vrfyutil.c -# End Source File -# Begin Source File - -SOURCE=..\dbm\dbm.c -# End Source File -# Begin Source File - -SOURCE=..\env\db_salloc.c -# End Source File -# Begin Source File - -SOURCE=..\env\db_shash.c -# End Source File -# Begin Source File - -SOURCE=..\env\env_method.c -# End Source File -# Begin Source File - -SOURCE=..\env\env_open.c -# End Source File -# Begin Source File - -SOURCE=..\env\env_recover.c -# End Source File -# Begin Source File - -SOURCE=..\env\env_region.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_auto.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_conv.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_dup.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_func.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_meta.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_method.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_page.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_rec.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_reclaim.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_stat.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_upgrade.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_verify.c -# End Source File -# Begin Source File - -SOURCE=..\hsearch\hsearch.c -# End Source File -# Begin Source File - -SOURCE=..\lock\lock.c -# End Source File -# Begin Source File - -SOURCE=..\lock\lock_conflict.c -# End Source File -# Begin Source File - -SOURCE=..\lock\lock_deadlock.c -# End Source File -# Begin Source File - -SOURCE=..\lock\lock_method.c -# End Source File -# Begin Source File - -SOURCE=..\lock\lock_region.c -# End Source File -# Begin Source File - -SOURCE=..\lock\lock_stat.c -# End Source File -# Begin Source File - -SOURCE=..\lock\lock_util.c -# End Source File -# Begin Source File - -SOURCE=..\log\log.c -# End Source File -# Begin Source File - -SOURCE=..\log\log_archive.c -# End Source File -# Begin Source File - -SOURCE=..\log\log_auto.c -# End Source File -# Begin Source File - -SOURCE=..\log\log_compare.c -# End Source File -# Begin Source File - -SOURCE=..\log\log_findckp.c -# End Source File -# Begin Source File - -SOURCE=..\log\log_get.c -# End Source File -# Begin Source File - -SOURCE=..\log\log_method.c -# End Source File -# Begin Source File - -SOURCE=..\log\log_put.c -# End Source File -# Begin Source File - -SOURCE=..\log\log_rec.c -# End Source File -# Begin Source File - -SOURCE=..\log\log_register.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_alloc.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_bh.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_fget.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_fopen.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_fput.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_fset.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_method.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_region.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_register.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_stat.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_sync.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_trickle.c -# End Source File -# Begin Source File - -SOURCE=..\mutex\mut_tas.c -# End Source File -# Begin Source File - -SOURCE=..\mutex\mutex.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_alloc.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_fsync.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_handle.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_method.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_oflags.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_region.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_root.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_rpath.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_rw.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_stat.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_tmpdir.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_unlink.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_abs.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_dir.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_errno.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_fid.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_finit.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_map.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_open.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_rename.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_seek.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_sleep.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_spin.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_type.c -# End Source File -# Begin Source File - -SOURCE=..\qam\qam.c -# End Source File -# Begin Source File - -SOURCE=..\qam\qam_auto.c -# End Source File -# Begin Source File - -SOURCE=..\qam\qam_conv.c -# End Source File -# Begin Source File - -SOURCE=..\qam\qam_files.c -# End Source File -# Begin Source File - -SOURCE=..\qam\qam_method.c -# End Source File -# Begin Source File - -SOURCE=..\qam\qam_open.c -# End Source File -# Begin Source File - -SOURCE=..\qam\qam_rec.c -# End Source File -# Begin Source File - -SOURCE=..\qam\qam_stat.c -# End Source File -# Begin Source File - -SOURCE=..\qam\qam_upgrade.c -# End Source File -# Begin Source File - -SOURCE=..\qam\qam_verify.c -# End Source File -# Begin Source File - -SOURCE=..\txn\txn.c -# End Source File -# Begin Source File - -SOURCE=..\txn\txn_auto.c -# End Source File -# Begin Source File - -SOURCE=..\txn\txn_rec.c -# End Source File -# Begin Source File - -SOURCE=..\txn\txn_region.c -# End Source File -# Begin Source File - -SOURCE=..\xa\xa.c -# End Source File -# Begin Source File - -SOURCE=..\xa\xa_db.c -# End Source File -# Begin Source File - -SOURCE=..\xa\xa_map.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/db_dump.dsp b/VC++Files/storage/bdb/build_win32/db_dump.dsp deleted file mode 100644 index dbc183166a4..00000000000 --- a/VC++Files/storage/bdb/build_win32/db_dump.dsp +++ /dev/null @@ -1,151 +0,0 @@ -# Microsoft Developer Studio Project File - Name="db_dump" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=db_dump - Win32 Debug Static -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "db_dump.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "db_dump.mak" CFG="db_dump - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "db_dump - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_dump - Win32 Debug" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_dump - Win32 Release Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_dump - Win32 Debug Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "db_dump - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" - -!ELSEIF "$(CFG)" == "db_dump - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no - -!ELSEIF "$(CFG)" == "db_dump - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Release_static/libdb32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release_static/libdb32s.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "db_dump - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Debug_static/libdb32d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no -# ADD LINK32 Debug_static/libdb32sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no - -!ENDIF - -# Begin Target - -# Name "db_dump - Win32 Release" -# Name "db_dump - Win32 Debug" -# Name "db_dump - Win32 Release Static" -# Name "db_dump - Win32 Debug Static" -# Begin Source File - -SOURCE=..\db_dump\db_dump.c -# End Source File -# Begin Source File - -SOURCE=..\clib\getopt.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/db_java.dsp b/VC++Files/storage/bdb/build_win32/db_java.dsp deleted file mode 100644 index 5866d355259..00000000000 --- a/VC++Files/storage/bdb/build_win32/db_java.dsp +++ /dev/null @@ -1,174 +0,0 @@ -# Microsoft Developer Studio Project File - Name="db_java" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=db_java - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "db_java.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "db_java.mak" CFG="db_java - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "db_java - Win32 Release" (based on\ - "Win32 (x86) Dynamic-Link Library") -!MESSAGE "db_java - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "db_java - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /Ob2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "DB_CREATE_DLL" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release/libdb_java32.dll" -# Begin Custom Build - Compiling java files using javac -ProjDir=. -InputPath=.\Release\libdb_java32.dll -SOURCE=$(InputPath) - -"force_compilation.txt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - cd $(ProjDir)\..\java\src\com\sleepycat\db - mkdir ..\..\..\..\classes - echo compiling Berkeley DB classes - javac -d ../../../../classes -classpath "$(CLASSPATH);../../../../classes"\ - *.java - echo compiling examples - cd ..\examples - javac -d ../../../../classes -classpath "$(CLASSPATH);../../../../classes"\ - *.java - echo creating jar file - cd ..\..\..\..\classes - jar cf db.jar com\sleepycat\db\*.class - echo Java build finished - -# End Custom Build - -!ELSEIF "$(CFG)" == "db_java - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 2 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "DB_CREATE_DLL" /D "_WINDLL" /D "_AFXDLL" /YX"config.h" /FD /c -# SUBTRACT CPP /Fr -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib /nologo /base:"0x13000000" /subsystem:windows /dll /pdb:none /debug /machine:I386 /out:"Debug/libdb_java32d.dll" /fixed:no -# Begin Custom Build - Compiling java files using javac -ProjDir=. -InputPath=.\Debug\libdb_java32d.dll -SOURCE=$(InputPath) - -"force_compilation.txt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - cd $(ProjDir)\..\java\src\com\sleepycat\db - mkdir ..\..\..\..\classes - echo compiling Berkeley DB classes - javac -g -d ../../../../classes -classpath "$(CLASSPATH);../../../../classes"\ - *.java - echo compiling examples - javac -g -d ../../../../classes -classpath "$(CLASSPATH);../../../../classes"\ - *.java - cd ..\examples - echo creating jar file - cd ..\..\..\..\classes - jar cf db.jar com\sleepycat\db\*.class - echo Java build finished - -# End Custom Build - -!ENDIF - -# Begin Target - -# Name "db_java - Win32 Release" -# Name "db_java - Win32 Debug" -# Begin Source File - -SOURCE=..\libdb_java\java_Db.c -# End Source File -# Begin Source File - -SOURCE=..\libdb_java\java_DbEnv.c -# End Source File -# Begin Source File - -SOURCE=..\libdb_java\java_DbLock.c -# End Source File -# Begin Source File - -SOURCE=..\libdb_java\java_DbLsn.c -# End Source File -# Begin Source File - -SOURCE=..\libdb_java\java_DbTxn.c -# End Source File -# Begin Source File - -SOURCE=..\libdb_java\java_Dbc.c -# End Source File -# Begin Source File - -SOURCE=..\libdb_java\java_Dbt.c -# End Source File -# Begin Source File - -SOURCE=..\libdb_java\java_info.c -# End Source File -# Begin Source File - -SOURCE=..\libdb_java\java_locked.c -# End Source File -# Begin Source File - -SOURCE=..\libdb_java\java_util.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/db_load.dsp b/VC++Files/storage/bdb/build_win32/db_load.dsp deleted file mode 100644 index ddd516e67fd..00000000000 --- a/VC++Files/storage/bdb/build_win32/db_load.dsp +++ /dev/null @@ -1,151 +0,0 @@ -# Microsoft Developer Studio Project File - Name="db_load" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=db_load - Win32 Debug Static -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "db_load.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "db_load.mak" CFG="db_load - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "db_load - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_load - Win32 Debug" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_load - Win32 Release Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_load - Win32 Debug Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "db_load - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" - -!ELSEIF "$(CFG)" == "db_load - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no - -!ELSEIF "$(CFG)" == "db_load - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Release_static/libdb32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release_static/libdb32s.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "db_load - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Debug_static/libdb32d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no -# ADD LINK32 Debug_static/libdb32sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no - -!ENDIF - -# Begin Target - -# Name "db_load - Win32 Release" -# Name "db_load - Win32 Debug" -# Name "db_load - Win32 Release Static" -# Name "db_load - Win32 Debug Static" -# Begin Source File - -SOURCE=..\db_load\db_load.c -# End Source File -# Begin Source File - -SOURCE=..\clib\getopt.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/db_printlog.dsp b/VC++Files/storage/bdb/build_win32/db_printlog.dsp deleted file mode 100644 index 4e19ff7344a..00000000000 --- a/VC++Files/storage/bdb/build_win32/db_printlog.dsp +++ /dev/null @@ -1,151 +0,0 @@ -# Microsoft Developer Studio Project File - Name="db_printlog" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=db_printlog - Win32 Debug Static -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "db_printlog.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "db_printlog.mak" CFG="db_printlog - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "db_printlog - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_printlog - Win32 Debug" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_printlog - Win32 Release Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_printlog - Win32 Debug Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "db_printlog - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" - -!ELSEIF "$(CFG)" == "db_printlog - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no - -!ELSEIF "$(CFG)" == "db_printlog - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Release_static/libdb32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release_static/libdb32s.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "db_printlog - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Debug_static/libdb32d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no -# ADD LINK32 Debug_static/libdb32sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no - -!ENDIF - -# Begin Target - -# Name "db_printlog - Win32 Release" -# Name "db_printlog - Win32 Debug" -# Name "db_printlog - Win32 Release Static" -# Name "db_printlog - Win32 Debug Static" -# Begin Source File - -SOURCE=..\db_printlog\db_printlog.c -# End Source File -# Begin Source File - -SOURCE=..\clib\getopt.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/db_recover.dsp b/VC++Files/storage/bdb/build_win32/db_recover.dsp deleted file mode 100644 index 6419c3faf64..00000000000 --- a/VC++Files/storage/bdb/build_win32/db_recover.dsp +++ /dev/null @@ -1,151 +0,0 @@ -# Microsoft Developer Studio Project File - Name="db_recover" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=db_recover - Win32 Debug Static -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "db_recover.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "db_recover.mak" CFG="db_recover - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "db_recover - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_recover - Win32 Debug" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_recover - Win32 Release Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_recover - Win32 Debug Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "db_recover - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" - -!ELSEIF "$(CFG)" == "db_recover - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no - -!ELSEIF "$(CFG)" == "db_recover - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Release_static/libdb32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release_static/libdb32s.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "db_recover - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Debug_static/libdb32d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no -# ADD LINK32 Debug_static/libdb32sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no - -!ENDIF - -# Begin Target - -# Name "db_recover - Win32 Release" -# Name "db_recover - Win32 Debug" -# Name "db_recover - Win32 Release Static" -# Name "db_recover - Win32 Debug Static" -# Begin Source File - -SOURCE=..\db_recover\db_recover.c -# End Source File -# Begin Source File - -SOURCE=..\clib\getopt.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/db_stat.dsp b/VC++Files/storage/bdb/build_win32/db_stat.dsp deleted file mode 100644 index 8cf59197d42..00000000000 --- a/VC++Files/storage/bdb/build_win32/db_stat.dsp +++ /dev/null @@ -1,151 +0,0 @@ -# Microsoft Developer Studio Project File - Name="db_stat" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=db_stat - Win32 Debug Static -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "db_stat.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "db_stat.mak" CFG="db_stat - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "db_stat - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_stat - Win32 Debug" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_stat - Win32 Release Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_stat - Win32 Debug Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "db_stat - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" - -!ELSEIF "$(CFG)" == "db_stat - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no - -!ELSEIF "$(CFG)" == "db_stat - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Release_static/libdb32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release_static/libdb32s.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "db_stat - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Debug_static/libdb32d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no -# ADD LINK32 Debug_static/libdb32sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no - -!ENDIF - -# Begin Target - -# Name "db_stat - Win32 Release" -# Name "db_stat - Win32 Debug" -# Name "db_stat - Win32 Release Static" -# Name "db_stat - Win32 Debug Static" -# Begin Source File - -SOURCE=..\db_stat\db_stat.c -# End Source File -# Begin Source File - -SOURCE=..\clib\getopt.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/db_static.dsp b/VC++Files/storage/bdb/build_win32/db_static.dsp deleted file mode 100644 index 5a95bf7b1c6..00000000000 --- a/VC++Files/storage/bdb/build_win32/db_static.dsp +++ /dev/null @@ -1,714 +0,0 @@ -# Microsoft Developer Studio Project File - Name="db_static" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=db_static - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "db_static.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "db_static.mak" CFG="db_static - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "db_static - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "db_static - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "db_static - Win32 Release Static" (based on\ - "Win32 (x86) Static Library") -!MESSAGE "db_static - Win32 Debug Static" (based on\ - "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe - -!IF "$(CFG)" == "db_static - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "DB_Stati" -# PROP BASE Intermediate_Dir "DB_Stati" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"Release_static/libdb32s.lib" - -!ELSEIF "$(CFG)" == "db_static - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "DB_Stat0" -# PROP BASE Intermediate_Dir "DB_Stat0" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"Debug_static/libdb32sd.lib" - -!ELSEIF "$(CFG)" == "db_static - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "DB_Stati" -# PROP BASE Intermediate_Dir "DB_Stati" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX"config.h" /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"Release/libdb32s.lib" -# ADD LIB32 /nologo /out:"Release_static/libdb32s.lib" - -!ELSEIF "$(CFG)" == "db_static - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "DB_Stat0" -# PROP BASE Intermediate_Dir "DB_Stat0" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX"config.h" /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"Debug/libdb32sd.lib" -# ADD LIB32 /nologo /out:"Debug_static/libdb32sd.lib" - -!ENDIF - -# Begin Target - -# Name "db_static - Win32 Release" -# Name "db_static - Win32 Debug" -# Name "db_static - Win32 Release Static" -# Name "db_static - Win32 Debug Static" -# Begin Source File - -SOURCE=..\btree\bt_compare.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_conv.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_curadj.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_cursor.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_delete.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_method.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_open.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_put.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_rec.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_reclaim.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_recno.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_rsearch.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_search.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_split.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_stat.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_upgrade.c -# End Source File -# Begin Source File - -SOURCE=..\btree\bt_verify.c -# End Source File -# Begin Source File - -SOURCE=..\btree\btree_auto.c -# End Source File -# Begin Source File - -SOURCE=..\clib\strcasecmp.c -# End Source File -# Begin Source File - -SOURCE=..\common\db_byteorder.c -# End Source File -# Begin Source File - -SOURCE=..\common\db_err.c -# End Source File -# Begin Source File - -SOURCE=..\common\db_getlong.c -# End Source File -# Begin Source File - -SOURCE=..\common\db_log2.c -# End Source File -# Begin Source File - -SOURCE=..\common\util_log.c -# End Source File -# Begin Source File - -SOURCE=..\common\util_sig.c -# End Source File -# Begin Source File - -SOURCE=..\cxx\cxx_app.cpp -# End Source File -# Begin Source File - -SOURCE=..\cxx\cxx_except.cpp -# End Source File -# Begin Source File - -SOURCE=..\cxx\cxx_lock.cpp -# End Source File -# Begin Source File - -SOURCE=..\cxx\cxx_log.cpp -# End Source File -# Begin Source File - -SOURCE=..\cxx\cxx_mpool.cpp -# End Source File -# Begin Source File - -SOURCE=..\cxx\cxx_table.cpp -# End Source File -# Begin Source File - -SOURCE=..\cxx\cxx_txn.cpp -# End Source File -# Begin Source File - -SOURCE=..\db\crdel_auto.c -# End Source File -# Begin Source File - -SOURCE=..\db\crdel_rec.c -# End Source File -# Begin Source File - -SOURCE=..\db\db.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_am.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_auto.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_cam.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_conv.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_dispatch.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_dup.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_iface.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_join.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_meta.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_method.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_overflow.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_pr.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_rec.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_reclaim.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_ret.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_upg.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_upg_opd.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_vrfy.c -# End Source File -# Begin Source File - -SOURCE=..\db\db_vrfyutil.c -# End Source File -# Begin Source File - -SOURCE=..\dbm\dbm.c -# End Source File -# Begin Source File - -SOURCE=..\env\db_salloc.c -# End Source File -# Begin Source File - -SOURCE=..\env\db_shash.c -# End Source File -# Begin Source File - -SOURCE=..\env\env_method.c -# End Source File -# Begin Source File - -SOURCE=..\env\env_open.c -# End Source File -# Begin Source File - -SOURCE=..\env\env_recover.c -# End Source File -# Begin Source File - -SOURCE=..\env\env_region.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_auto.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_conv.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_dup.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_func.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_meta.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_method.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_page.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_rec.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_reclaim.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_stat.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_upgrade.c -# End Source File -# Begin Source File - -SOURCE=..\hash\hash_verify.c -# End Source File -# Begin Source File - -SOURCE=..\hsearch\hsearch.c -# End Source File -# Begin Source File - -SOURCE=..\lock\lock.c -# End Source File -# Begin Source File - -SOURCE=..\lock\lock_conflict.c -# End Source File -# Begin Source File - -SOURCE=..\lock\lock_deadlock.c -# End Source File -# Begin Source File - -SOURCE=..\lock\lock_method.c -# End Source File -# Begin Source File - -SOURCE=..\lock\lock_region.c -# End Source File -# Begin Source File - -SOURCE=..\lock\lock_stat.c -# End Source File -# Begin Source File - -SOURCE=..\lock\lock_util.c -# End Source File -# Begin Source File - -SOURCE=..\log\log.c -# End Source File -# Begin Source File - -SOURCE=..\log\log_archive.c -# End Source File -# Begin Source File - -SOURCE=..\log\log_auto.c -# End Source File -# Begin Source File - -SOURCE=..\log\log_compare.c -# End Source File -# Begin Source File - -SOURCE=..\log\log_findckp.c -# End Source File -# Begin Source File - -SOURCE=..\log\log_get.c -# End Source File -# Begin Source File - -SOURCE=..\log\log_method.c -# End Source File -# Begin Source File - -SOURCE=..\log\log_put.c -# End Source File -# Begin Source File - -SOURCE=..\log\log_rec.c -# End Source File -# Begin Source File - -SOURCE=..\log\log_register.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_alloc.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_bh.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_fget.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_fopen.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_fput.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_fset.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_method.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_region.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_register.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_stat.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_sync.c -# End Source File -# Begin Source File - -SOURCE=..\mp\mp_trickle.c -# End Source File -# Begin Source File - -SOURCE=..\mutex\mut_tas.c -# End Source File -# Begin Source File - -SOURCE=..\mutex\mutex.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_alloc.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_fsync.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_handle.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_method.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_oflags.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_region.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_root.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_rpath.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_rw.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_stat.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_tmpdir.c -# End Source File -# Begin Source File - -SOURCE=..\os\os_unlink.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_abs.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_dir.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_errno.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_fid.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_finit.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_map.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_open.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_rename.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_seek.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_sleep.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_spin.c -# End Source File -# Begin Source File - -SOURCE=..\os_win32\os_type.c -# End Source File -# Begin Source File - -SOURCE=..\qam\qam.c -# End Source File -# Begin Source File - -SOURCE=..\qam\qam_auto.c -# End Source File -# Begin Source File - -SOURCE=..\qam\qam_conv.c -# End Source File -# Begin Source File - -SOURCE=..\qam\qam_files.c -# End Source File -# Begin Source File - -SOURCE=..\qam\qam_method.c -# End Source File -# Begin Source File - -SOURCE=..\qam\qam_open.c -# End Source File -# Begin Source File - -SOURCE=..\qam\qam_rec.c -# End Source File -# Begin Source File - -SOURCE=..\qam\qam_stat.c -# End Source File -# Begin Source File - -SOURCE=..\qam\qam_upgrade.c -# End Source File -# Begin Source File - -SOURCE=..\qam\qam_verify.c -# End Source File -# Begin Source File - -SOURCE=..\txn\txn.c -# End Source File -# Begin Source File - -SOURCE=..\txn\txn_auto.c -# End Source File -# Begin Source File - -SOURCE=..\txn\txn_rec.c -# End Source File -# Begin Source File - -SOURCE=..\txn\txn_region.c -# End Source File -# Begin Source File - -SOURCE=..\xa\xa.c -# End Source File -# Begin Source File - -SOURCE=..\xa\xa_db.c -# End Source File -# Begin Source File - -SOURCE=..\xa\xa_map.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/db_static1.dsp b/VC++Files/storage/bdb/build_win32/db_static1.dsp deleted file mode 100644 index 15498e58ca5..00000000000 --- a/VC++Files/storage/bdb/build_win32/db_static1.dsp +++ /dev/null @@ -1,85 +0,0 @@ -# Microsoft Developer Studio Project File - Name="db_static1" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) External Target" 0x0106 - -CFG=db_static1 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "db_static1.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "db_static1.mak" CFG="db_static1 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "db_static1 - Win32 Release" (based on "Win32 (x86) External Target") -!MESSAGE "db_static1 - Win32 Debug" (based on "Win32 (x86) External Target") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" - -!IF "$(CFG)" == "db_static1 - Win32 Release" - -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Cmd_Line "NMAKE /f db_static.mak" -# PROP BASE Rebuild_Opt "/a" -# PROP BASE Target_File "db_static.exe" -# PROP BASE Bsc_Name "db_static.bsc" -# PROP BASE Target_Dir "" -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Cmd_Line "NMAKE /f db_static.mak" -# PROP Rebuild_Opt "/a" -# PROP Target_File "db_static1.exe" -# PROP Bsc_Name "db_static1.bsc" -# PROP Target_Dir "" - -!ELSEIF "$(CFG)" == "db_static1 - Win32 Debug" - -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Cmd_Line "NMAKE /f db_static.mak" -# PROP BASE Rebuild_Opt "/a" -# PROP BASE Target_File "db_static.exe" -# PROP BASE Bsc_Name "db_static.bsc" -# PROP BASE Target_Dir "" -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Cmd_Line "NMAKE /f db_static.mak" -# PROP Rebuild_Opt "/a" -# PROP Target_File "db_static1.exe" -# PROP Bsc_Name "db_static1.bsc" -# PROP Target_Dir "" - -!ENDIF - -# Begin Target - -# Name "db_static1 - Win32 Release" -# Name "db_static1 - Win32 Debug" - -!IF "$(CFG)" == "db_static1 - Win32 Release" - -!ELSEIF "$(CFG)" == "db_static1 - Win32 Debug" - -!ENDIF - -# Begin Source File - -SOURCE=.\db_static.dsp -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/db_tcl.dsp b/VC++Files/storage/bdb/build_win32/db_tcl.dsp deleted file mode 100644 index ae2e1a38e9b..00000000000 --- a/VC++Files/storage/bdb/build_win32/db_tcl.dsp +++ /dev/null @@ -1,135 +0,0 @@ -# Microsoft Developer Studio Project File - Name="db_tcl" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=db_tcl - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "db_tcl.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "db_tcl.mak" CFG="db_tcl - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "db_tcl - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "db_tcl - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "db_tcl - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /Ob2 /I "." /I "../include" /D "DB_TCL_SUPPORT" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "DB_CREATE_DLL" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 Release/libdb32.lib tcl83.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release/libdb_tcl32.dll" - -!ELSEIF "$(CFG)" == "db_tcl - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 2 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "DB_TCL_SUPPORT" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "DB_CREATE_DLL" /D "_WINDLL" /D "_AFXDLL" /YX"config.h" /FD /c -# SUBTRACT CPP /Fr -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib tcl83d.lib /nologo /base:"0x13000000" /subsystem:windows /dll /pdb:none /debug /machine:I386 /out:"Debug/libdb_tcl32d.dll" /fixed:no - -!ENDIF - -# Begin Target - -# Name "db_tcl - Win32 Release" -# Name "db_tcl - Win32 Debug" -# Begin Source File - -SOURCE=.\libdb_tcl.def -# End Source File -# Begin Source File - -SOURCE=..\tcl\tcl_compat.c -# End Source File -# Begin Source File - -SOURCE=..\tcl\tcl_db.c -# End Source File -# Begin Source File - -SOURCE=..\tcl\tcl_db_pkg.c -# End Source File -# Begin Source File - -SOURCE=..\tcl\tcl_dbcursor.c -# End Source File -# Begin Source File - -SOURCE=..\tcl\tcl_env.c -# End Source File -# Begin Source File - -SOURCE=..\tcl\tcl_internal.c -# End Source File -# Begin Source File - -SOURCE=..\tcl\tcl_lock.c -# End Source File -# Begin Source File - -SOURCE=..\tcl\tcl_log.c -# End Source File -# Begin Source File - -SOURCE=..\tcl\tcl_mp.c -# End Source File -# Begin Source File - -SOURCE=..\tcl\tcl_txn.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/db_test.dsp b/VC++Files/storage/bdb/build_win32/db_test.dsp deleted file mode 100644 index 406a1369696..00000000000 --- a/VC++Files/storage/bdb/build_win32/db_test.dsp +++ /dev/null @@ -1,99 +0,0 @@ -# Microsoft Developer Studio Project File - Name="db_test" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=db_test - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "db_test.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "db_test.mak" CFG="db_test - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "db_test - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "db_test - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "db_test - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /subsystem:console /machine:I386 -# Begin Special Build Tool -SOURCE=$(InputPath) -PostBuild_Desc=Copy built executable files. -PostBuild_Cmds=copy Release\*.exe . -# End Special Build Tool - -!ELSEIF "$(CFG)" == "db_test - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "db_recov" -# PROP BASE Intermediate_Dir "db_recov" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /out:"Debug/dbkill.exe" /fixed:no -# Begin Special Build Tool -SOURCE=$(InputPath) -PostBuild_Desc=Copy built executable files. -PostBuild_Cmds=copy Debug\*.exe . -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "db_test - Win32 Release" -# Name "db_test - Win32 Debug" -# Begin Source File - -SOURCE=.\dbkill.cpp -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/db_upgrade.dsp b/VC++Files/storage/bdb/build_win32/db_upgrade.dsp deleted file mode 100644 index c2f3a748a61..00000000000 --- a/VC++Files/storage/bdb/build_win32/db_upgrade.dsp +++ /dev/null @@ -1,151 +0,0 @@ -# Microsoft Developer Studio Project File - Name="db_upgrade" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=db_upgrade - Win32 Debug Static -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "db_upgrade.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "db_upgrade.mak" CFG="db_upgrade - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "db_upgrade - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_upgrade - Win32 Debug" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_upgrade - Win32 Release Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_upgrade - Win32 Debug Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "db_upgrade - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" - -!ELSEIF "$(CFG)" == "db_upgrade - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no - -!ELSEIF "$(CFG)" == "db_upgrade - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Release_static/libdb32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release_static/libdb32s.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "db_upgrade - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Debug_static/libdb32d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no -# ADD LINK32 Debug_static/libdb32sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no - -!ENDIF - -# Begin Target - -# Name "db_upgrade - Win32 Release" -# Name "db_upgrade - Win32 Debug" -# Name "db_upgrade - Win32 Release Static" -# Name "db_upgrade - Win32 Debug Static" -# Begin Source File - -SOURCE=..\db_upgrade\db_upgrade.c -# End Source File -# Begin Source File - -SOURCE=..\clib\getopt.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/db_verify.dsp b/VC++Files/storage/bdb/build_win32/db_verify.dsp deleted file mode 100644 index b76bd203b44..00000000000 --- a/VC++Files/storage/bdb/build_win32/db_verify.dsp +++ /dev/null @@ -1,151 +0,0 @@ -# Microsoft Developer Studio Project File - Name="db_verify" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=db_verify - Win32 Debug Static -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "db_verify.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "db_verify.mak" CFG="db_verify - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "db_verify - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_verify - Win32 Debug" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_verify - Win32 Release Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "db_verify - Win32 Debug Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "db_verify - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" - -!ELSEIF "$(CFG)" == "db_verify - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no - -!ELSEIF "$(CFG)" == "db_verify - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Release_static/libdb32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release_static/libdb32s.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "db_verify - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Debug_static/libdb32d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no -# ADD LINK32 Debug_static/libdb32sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no - -!ENDIF - -# Begin Target - -# Name "db_verify - Win32 Release" -# Name "db_verify - Win32 Debug" -# Name "db_verify - Win32 Release Static" -# Name "db_verify - Win32 Debug Static" -# Begin Source File - -SOURCE=..\db_verify\db_verify.c -# End Source File -# Begin Source File - -SOURCE=..\clib\getopt.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/ex_access.dsp b/VC++Files/storage/bdb/build_win32/ex_access.dsp deleted file mode 100644 index 5c1615c915a..00000000000 --- a/VC++Files/storage/bdb/build_win32/ex_access.dsp +++ /dev/null @@ -1,151 +0,0 @@ -# Microsoft Developer Studio Project File - Name="ex_access" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=ex_access - Win32 Debug Static -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "ex_access.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "ex_access.mak" CFG="ex_access - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "ex_access - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "ex_access - Win32 Debug" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "ex_access - Win32 Release Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "ex_access - Win32 Debug Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "ex_access - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" - -!ELSEIF "$(CFG)" == "ex_access - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no - -!ELSEIF "$(CFG)" == "ex_access - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Release_static/libdb32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release_static/libdb32s.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "ex_access - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Debug_static/libdb32d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no -# ADD LINK32 Debug_static/libdb32sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no - -!ENDIF - -# Begin Target - -# Name "ex_access - Win32 Release" -# Name "ex_access - Win32 Debug" -# Name "ex_access - Win32 Release Static" -# Name "ex_access - Win32 Debug Static" -# Begin Source File - -SOURCE=..\examples_c\ex_access.c -# End Source File -# Begin Source File - -SOURCE=..\clib\getopt.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/ex_btrec.dsp b/VC++Files/storage/bdb/build_win32/ex_btrec.dsp deleted file mode 100644 index e687324d813..00000000000 --- a/VC++Files/storage/bdb/build_win32/ex_btrec.dsp +++ /dev/null @@ -1,151 +0,0 @@ -# Microsoft Developer Studio Project File - Name="ex_btrec" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=ex_btrec - Win32 Debug Static -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "ex_btrec.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "ex_btrec.mak" CFG="ex_btrec - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "ex_btrec - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "ex_btrec - Win32 Debug" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "ex_btrec - Win32 Release Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "ex_btrec - Win32 Debug Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "ex_btrec - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" - -!ELSEIF "$(CFG)" == "ex_btrec - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no - -!ELSEIF "$(CFG)" == "ex_btrec - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Release_static/libdb32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release_static/libdb32s.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "ex_btrec - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Debug_static/libdb32d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no -# ADD LINK32 Debug_static/libdb32sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no - -!ENDIF - -# Begin Target - -# Name "ex_btrec - Win32 Release" -# Name "ex_btrec - Win32 Debug" -# Name "ex_btrec - Win32 Release Static" -# Name "ex_btrec - Win32 Debug Static" -# Begin Source File - -SOURCE=..\examples_c\ex_btrec.c -# End Source File -# Begin Source File - -SOURCE=..\clib\getopt.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/ex_env.dsp b/VC++Files/storage/bdb/build_win32/ex_env.dsp deleted file mode 100644 index ade4c87d965..00000000000 --- a/VC++Files/storage/bdb/build_win32/ex_env.dsp +++ /dev/null @@ -1,151 +0,0 @@ -# Microsoft Developer Studio Project File - Name="ex_env" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=ex_env - Win32 Debug Static -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "ex_env.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "ex_env.mak" CFG="ex_env - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "ex_env - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "ex_env - Win32 Debug" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "ex_env - Win32 Release Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "ex_env - Win32 Debug Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "ex_env - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" - -!ELSEIF "$(CFG)" == "ex_env - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no - -!ELSEIF "$(CFG)" == "ex_env - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Release_static/libdb32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release_static/libdb32s.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "ex_env - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Debug_static/libdb32d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no -# ADD LINK32 Debug_static/libdb32sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no - -!ENDIF - -# Begin Target - -# Name "ex_env - Win32 Release" -# Name "ex_env - Win32 Debug" -# Name "ex_env - Win32 Release Static" -# Name "ex_env - Win32 Debug Static" -# Begin Source File - -SOURCE=..\examples_c\ex_env.c -# End Source File -# Begin Source File - -SOURCE=..\clib\getopt.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/ex_lock.dsp b/VC++Files/storage/bdb/build_win32/ex_lock.dsp deleted file mode 100644 index ce5ecc22b56..00000000000 --- a/VC++Files/storage/bdb/build_win32/ex_lock.dsp +++ /dev/null @@ -1,151 +0,0 @@ -# Microsoft Developer Studio Project File - Name="ex_lock" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=ex_lock - Win32 Debug Static -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "ex_lock.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "ex_lock.mak" CFG="ex_lock - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "ex_lock - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "ex_lock - Win32 Debug" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "ex_lock - Win32 Release Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "ex_lock - Win32 Debug Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "ex_lock - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" - -!ELSEIF "$(CFG)" == "ex_lock - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no - -!ELSEIF "$(CFG)" == "ex_lock - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Release_static/libdb32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release_static/libdb32s.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "ex_lock - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Debug_static/libdb32d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no -# ADD LINK32 Debug_static/libdb32sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no - -!ENDIF - -# Begin Target - -# Name "ex_lock - Win32 Release" -# Name "ex_lock - Win32 Debug" -# Name "ex_lock - Win32 Release Static" -# Name "ex_lock - Win32 Debug Static" -# Begin Source File - -SOURCE=..\examples_c\ex_lock.c -# End Source File -# Begin Source File - -SOURCE=..\clib\getopt.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/ex_mpool.dsp b/VC++Files/storage/bdb/build_win32/ex_mpool.dsp deleted file mode 100644 index f6ae1df52dc..00000000000 --- a/VC++Files/storage/bdb/build_win32/ex_mpool.dsp +++ /dev/null @@ -1,151 +0,0 @@ -# Microsoft Developer Studio Project File - Name="ex_mpool" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=ex_mpool - Win32 Debug Static -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "ex_mpool.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "ex_mpool.mak" CFG="ex_mpool - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "ex_mpool - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "ex_mpool - Win32 Debug" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "ex_mpool - Win32 Release Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "ex_mpool - Win32 Debug Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "ex_mpool - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" - -!ELSEIF "$(CFG)" == "ex_mpool - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no - -!ELSEIF "$(CFG)" == "ex_mpool - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Release_static/libdb32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release_static/libdb32s.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "ex_mpool - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Debug_static/libdb32d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no -# ADD LINK32 Debug_static/libdb32sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no - -!ENDIF - -# Begin Target - -# Name "ex_mpool - Win32 Release" -# Name "ex_mpool - Win32 Debug" -# Name "ex_mpool - Win32 Release Static" -# Name "ex_mpool - Win32 Debug Static" -# Begin Source File - -SOURCE=..\examples_c\ex_mpool.c -# End Source File -# Begin Source File - -SOURCE=..\clib\getopt.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/ex_tpcb.dsp b/VC++Files/storage/bdb/build_win32/ex_tpcb.dsp deleted file mode 100644 index 43f7a560915..00000000000 --- a/VC++Files/storage/bdb/build_win32/ex_tpcb.dsp +++ /dev/null @@ -1,151 +0,0 @@ -# Microsoft Developer Studio Project File - Name="ex_tpcb" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=ex_tpcb - Win32 Debug Static -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "ex_tpcb.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "ex_tpcb.mak" CFG="ex_tpcb - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "ex_tpcb - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "ex_tpcb - Win32 Debug" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "ex_tpcb - Win32 Release Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "ex_tpcb - Win32 Debug Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "ex_tpcb - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" - -!ELSEIF "$(CFG)" == "ex_tpcb - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no - -!ELSEIF "$(CFG)" == "ex_tpcb - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Release_static/libdb32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release_static/libdb32s.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "ex_tpcb - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Debug_static/libdb32d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no -# ADD LINK32 Debug_static/libdb32sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no - -!ENDIF - -# Begin Target - -# Name "ex_tpcb - Win32 Release" -# Name "ex_tpcb - Win32 Debug" -# Name "ex_tpcb - Win32 Release Static" -# Name "ex_tpcb - Win32 Debug Static" -# Begin Source File - -SOURCE=..\examples_c\ex_tpcb.c -# End Source File -# Begin Source File - -SOURCE=..\clib\getopt.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/excxx_access.dsp b/VC++Files/storage/bdb/build_win32/excxx_access.dsp deleted file mode 100644 index f817b791627..00000000000 --- a/VC++Files/storage/bdb/build_win32/excxx_access.dsp +++ /dev/null @@ -1,151 +0,0 @@ -# Microsoft Developer Studio Project File - Name="excxx_access" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=excxx_access - Win32 Debug Static -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "excxx_access.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "excxx_access.mak" CFG="excxx_access - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "excxx_access - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "excxx_access - Win32 Debug" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "excxx_access - Win32 Release Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "excxx_access - Win32 Debug Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "excxx_access - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" - -!ELSEIF "$(CFG)" == "excxx_access - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no - -!ELSEIF "$(CFG)" == "excxx_access - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Release_static/libdb32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release_static/libdb32s.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "excxx_access - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Debug_static/libdb32d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no -# ADD LINK32 Debug_static/libdb32sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no - -!ENDIF - -# Begin Target - -# Name "excxx_access - Win32 Release" -# Name "excxx_access - Win32 Debug" -# Name "excxx_access - Win32 Release Static" -# Name "excxx_access - Win32 Debug Static" -# Begin Source File - -SOURCE=..\examples_cxx\AccessExample.cpp -# End Source File -# Begin Source File - -SOURCE=..\clib\getopt.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/excxx_btrec.dsp b/VC++Files/storage/bdb/build_win32/excxx_btrec.dsp deleted file mode 100644 index a06904f2160..00000000000 --- a/VC++Files/storage/bdb/build_win32/excxx_btrec.dsp +++ /dev/null @@ -1,151 +0,0 @@ -# Microsoft Developer Studio Project File - Name="excxx_btrec" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=excxx_btrec - Win32 Debug Static -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "excxx_btrec.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "excxx_btrec.mak" CFG="excxx_btrec - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "excxx_btrec - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "excxx_btrec - Win32 Debug" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "excxx_btrec - Win32 Release Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "excxx_btrec - Win32 Debug Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "excxx_btrec - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" - -!ELSEIF "$(CFG)" == "excxx_btrec - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no - -!ELSEIF "$(CFG)" == "excxx_btrec - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Release_static/libdb32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release_static/libdb32s.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "excxx_btrec - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Debug_static/libdb32d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no -# ADD LINK32 Debug_static/libdb32sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no - -!ENDIF - -# Begin Target - -# Name "excxx_btrec - Win32 Release" -# Name "excxx_btrec - Win32 Debug" -# Name "excxx_btrec - Win32 Release Static" -# Name "excxx_btrec - Win32 Debug Static" -# Begin Source File - -SOURCE=..\examples_cxx\BtRecExample.cpp -# End Source File -# Begin Source File - -SOURCE=..\clib\getopt.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/excxx_env.dsp b/VC++Files/storage/bdb/build_win32/excxx_env.dsp deleted file mode 100644 index 5f1b1c0a2e4..00000000000 --- a/VC++Files/storage/bdb/build_win32/excxx_env.dsp +++ /dev/null @@ -1,151 +0,0 @@ -# Microsoft Developer Studio Project File - Name="excxx_env" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=excxx_env - Win32 Debug Static -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "excxx_env.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "excxx_env.mak" CFG="excxx_env - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "excxx_env - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "excxx_env - Win32 Debug" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "excxx_env - Win32 Release Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "excxx_env - Win32 Debug Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "excxx_env - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" - -!ELSEIF "$(CFG)" == "excxx_env - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no - -!ELSEIF "$(CFG)" == "excxx_env - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Release_static/libdb32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release_static/libdb32s.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "excxx_env - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Debug_static/libdb32d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no -# ADD LINK32 Debug_static/libdb32sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no - -!ENDIF - -# Begin Target - -# Name "excxx_env - Win32 Release" -# Name "excxx_env - Win32 Debug" -# Name "excxx_env - Win32 Release Static" -# Name "excxx_env - Win32 Debug Static" -# Begin Source File - -SOURCE=..\examples_cxx\EnvExample.cpp -# End Source File -# Begin Source File - -SOURCE=..\clib\getopt.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/excxx_lock.dsp b/VC++Files/storage/bdb/build_win32/excxx_lock.dsp deleted file mode 100644 index 5fe931537a9..00000000000 --- a/VC++Files/storage/bdb/build_win32/excxx_lock.dsp +++ /dev/null @@ -1,151 +0,0 @@ -# Microsoft Developer Studio Project File - Name="excxx_lock" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=excxx_lock - Win32 Debug Static -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "excxx_lock.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "excxx_lock.mak" CFG="excxx_lock - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "excxx_lock - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "excxx_lock - Win32 Debug" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "excxx_lock - Win32 Release Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "excxx_lock - Win32 Debug Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "excxx_lock - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" - -!ELSEIF "$(CFG)" == "excxx_lock - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no - -!ELSEIF "$(CFG)" == "excxx_lock - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Release_static/libdb32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release_static/libdb32s.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "excxx_lock - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Debug_static/libdb32d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no -# ADD LINK32 Debug_static/libdb32sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no - -!ENDIF - -# Begin Target - -# Name "excxx_lock - Win32 Release" -# Name "excxx_lock - Win32 Debug" -# Name "excxx_lock - Win32 Release Static" -# Name "excxx_lock - Win32 Debug Static" -# Begin Source File - -SOURCE=..\examples_cxx\LockExample.cpp -# End Source File -# Begin Source File - -SOURCE=..\clib\getopt.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/excxx_mpool.dsp b/VC++Files/storage/bdb/build_win32/excxx_mpool.dsp deleted file mode 100644 index 213202b1726..00000000000 --- a/VC++Files/storage/bdb/build_win32/excxx_mpool.dsp +++ /dev/null @@ -1,151 +0,0 @@ -# Microsoft Developer Studio Project File - Name="excxx_mpool" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=excxx_mpool - Win32 Debug Static -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "excxx_mpool.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "excxx_mpool.mak" CFG="excxx_mpool - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "excxx_mpool - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "excxx_mpool - Win32 Debug" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "excxx_mpool - Win32 Release Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "excxx_mpool - Win32 Debug Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "excxx_mpool - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" - -!ELSEIF "$(CFG)" == "excxx_mpool - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no - -!ELSEIF "$(CFG)" == "excxx_mpool - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Release_static/libdb32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release_static/libdb32s.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "excxx_mpool - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Debug_static/libdb32d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no -# ADD LINK32 Debug_static/libdb32sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no - -!ENDIF - -# Begin Target - -# Name "excxx_mpool - Win32 Release" -# Name "excxx_mpool - Win32 Debug" -# Name "excxx_mpool - Win32 Release Static" -# Name "excxx_mpool - Win32 Debug Static" -# Begin Source File - -SOURCE=..\examples_cxx\MpoolExample.cpp -# End Source File -# Begin Source File - -SOURCE=..\clib\getopt.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/excxx_tpcb.dsp b/VC++Files/storage/bdb/build_win32/excxx_tpcb.dsp deleted file mode 100644 index ef89fc0de87..00000000000 --- a/VC++Files/storage/bdb/build_win32/excxx_tpcb.dsp +++ /dev/null @@ -1,151 +0,0 @@ -# Microsoft Developer Studio Project File - Name="excxx_tpcb" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=excxx_tpcb - Win32 Debug Static -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "excxx_tpcb.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "excxx_tpcb.mak" CFG="excxx_tpcb - Win32 Debug Static" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "excxx_tpcb - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "excxx_tpcb - Win32 Debug" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "excxx_tpcb - Win32 Release Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "excxx_tpcb - Win32 Debug Static" (based on\ - "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "excxx_tpcb - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release/libdb32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" - -!ELSEIF "$(CFG)" == "excxx_tpcb - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 Debug/libdb32d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no - -!ELSEIF "$(CFG)" == "excxx_tpcb - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release_static" -# PROP Intermediate_Dir "Release_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Release_static/libdb32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 Release_static/libdb32s.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "excxx_tpcb - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug_static" -# PROP Intermediate_Dir "Debug_static" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 Debug_static/libdb32d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no -# ADD LINK32 Debug_static/libdb32sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no - -!ENDIF - -# Begin Target - -# Name "excxx_tpcb - Win32 Release" -# Name "excxx_tpcb - Win32 Debug" -# Name "excxx_tpcb - Win32 Release Static" -# Name "excxx_tpcb - Win32 Debug Static" -# Begin Source File - -SOURCE=..\examples_cxx\TpcbExample.cpp -# End Source File -# Begin Source File - -SOURCE=..\clib\getopt.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/bdb/build_win32/libdb.def b/VC++Files/storage/bdb/build_win32/libdb.def deleted file mode 100644 index a3b4cb3b26b..00000000000 --- a/VC++Files/storage/bdb/build_win32/libdb.def +++ /dev/null @@ -1,151 +0,0 @@ -; $Id: libdb.def,v 11.21 2001/01/04 15:07:33 dda Exp $ - -DESCRIPTION 'Berkeley DB 3.2 Library' -EXPORTS - lock_get @1 - lock_id @2 - lock_put @3 - lock_vec @4 - log_compare @5 - log_file @6 - log_flush @7 - log_get @8 - log_put @9 - log_register @10 - log_unregister @11 - memp_fclose @12 - memp_fget @13 - memp_fopen @14 - memp_fput @15 - memp_fset @16 - memp_fsync @17 - memp_register @18 - memp_sync @19 - txn_abort @20 - txn_begin @21 - txn_checkpoint @22 - txn_commit @23 - txn_prepare @24 - db_version @25 - memp_stat @26 - log_archive @27 - lock_detect @28 - txn_id @29 - txn_stat @30 - memp_trickle @31 - log_stat @32 - lock_stat @33 - db_create @34 - db_env_create @35 - db_strerror @36 - db_xa_switch @37 - db_env_set_func_close @38 - db_env_set_func_dirfree @39 - db_env_set_func_dirlist @40 - db_env_set_func_exists @41 - db_env_set_func_free @42 - db_env_set_func_fsync @43 - db_env_set_func_ioinfo @44 - db_env_set_func_malloc @45 - db_env_set_func_map @46 - db_env_set_func_open @47 - db_env_set_func_read @48 - db_env_set_func_realloc @49 - db_env_set_func_rename @50 - db_env_set_func_sleep @51 - db_env_set_func_unlink @52 - db_env_set_func_unmap @53 - db_env_set_func_write @54 - db_env_set_func_yield @55 -; FREE @56 - db_env_set_pageyield @57 - db_env_set_panicstate @58 - db_env_set_region_init @59 - db_env_set_tas_spins @60 -; these are only for testing - __db_loadme @201 - __ham_func2 @202 - __ham_func3 @203 - __ham_func4 @204 - __ham_func5 @205 - __db_hcreate @206 - __db_hsearch @207 - __db_hdestroy @208 - __db_dbm_init @209 - __db_dbm_delete @210 - __db_dbm_fetch @211 - __db_dbm_store @212 - __db_dbm_firstkey @213 - __db_dbm_nextkey @214 - __db_dbm_close @215 - __db_ndbm_open @216 - __db_ndbm_store @217 - __db_ndbm_rdonly @218 - __db_ndbm_pagfno @219 - __db_ndbm_nextkey @220 - __db_ndbm_firstkey @221 - __db_ndbm_fetch @222 - __db_ndbm_error @223 - __db_ndbm_dirfno @224 - __db_ndbm_delete @225 - __db_ndbm_close @226 - __db_ndbm_clearerr @227 - __lock_dump_region @228 - __memp_dump_region @229 - __os_closehandle @230 - __os_openhandle @231 - __os_strdup @232 - __db_r_attach @233 - __db_r_detach @234 - __db_tas_mutex_init @235 - __db_tas_mutex_lock @236 - __db_tas_mutex_unlock @237 - __os_read @238 - __os_write @239 - __os_open @240 - __os_ioinfo @241 - __os_free @242 - __os_malloc @243 - __os_freestr @244 - __os_calloc @245 - __ham_test @246 -; these are needed for linking tools - __db_dump @401 - __db_rpath @402 - __db_dispatch @403 - __db_err @404 - __db_init_print @405 - __txn_init_print @406 - __log_init_print @407 - __ham_init_print @408 - __bam_init_print @409 - __db_jump @410 - __ham_pgin @411 - __ham_pgout @412 - __bam_pgin @413 - __bam_pgout @414 - __db_omode @415 - __db_prdbt @416 - __os_sleep @417 - __db_e_stat @420 - __db_getlong @421 - __os_get_errno @422 - __os_set_errno @423 - __ham_get_meta @424 - __ham_release_meta @425 - __qam_init_print @426 - __crdel_init_print @427 - __qam_pgin_out @428 - __db_pgin @429 - __db_pgout @430 - __db_getulong @431 - __db_util_sigresend @432 - __db_util_siginit @433 - __db_util_interrupted @434 - __db_util_logset @435 - __db_prheader @436 - __db_prfooter @437 - __db_verify_callback @438 - __db_verify_internal @439 - __os_yield @440 - __db_global_values @441 diff --git a/VC++Files/storage/bdb/build_win32/libdb_tcl.def b/VC++Files/storage/bdb/build_win32/libdb_tcl.def deleted file mode 100644 index a18459beaba..00000000000 --- a/VC++Files/storage/bdb/build_win32/libdb_tcl.def +++ /dev/null @@ -1,35 +0,0 @@ -; $Id: libdb_tcl.def,v 11.2 1999/11/21 23:10:00 bostic Exp $ - -DESCRIPTION 'Berkeley DB TCL interface Library' -EXPORTS - Db_tcl_Init - bdb_DbmCommand - bdb_HCommand - bdb_NdbmOpen - bdb_RandCommand - db_Cmd - dbc_Cmd - env_Cmd - ndbm_Cmd - tcl_EnvRemove - tcl_LockDetect - tcl_LockGet - tcl_LockStat - tcl_LockVec - tcl_LogArchive - tcl_LogCompare - tcl_LogFile - tcl_LogFlush - tcl_LogGet - tcl_LogPut - tcl_LogRegister - tcl_LogStat - tcl_LogUnregister - tcl_Mp - tcl_MpStat - tcl_MpSync - tcl_MpTrickle - tcl_Txn - tcl_TxnCheckpoint - tcl_TxnStat - txn_Cmd diff --git a/VC++Files/storage/example/example.vcproj b/VC++Files/storage/example/example.vcproj deleted file mode 100644 index 81353cb759b..00000000000 --- a/VC++Files/storage/example/example.vcproj +++ /dev/null @@ -1,257 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/storage/heap/heap.dsp b/VC++Files/storage/heap/heap.dsp deleted file mode 100644 index 11792c6fcc1..00000000000 --- a/VC++Files/storage/heap/heap.dsp +++ /dev/null @@ -1,256 +0,0 @@ -# Microsoft Developer Studio Project File - Name="heap" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=heap - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "heap.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "heap.mak" CFG="heap - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "heap - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "heap - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "heap - Win32 TLS_DEBUG" (based on "Win32 (x86) Static Library") -!MESSAGE "heap - Win32 TLS" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "heap - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\lib_release\heap.lib" - -!ELSEIF "$(CFG)" == "heap - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\lib_debug\heap.lib" - -!ELSEIF "$(CFG)" == "heap - Win32 TLS_DEBUG" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "heap___Win32_TLS_DEBUG" -# PROP BASE Intermediate_Dir "heap___Win32_TLS_DEBUG" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "heap___Win32_TLS_DEBUG" -# PROP Intermediate_Dir "heap___Win32_TLS_DEBUG" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_TLS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\lib_debug\heap_tls.lib" -# ADD LIB32 /nologo /out:"..\..\lib_debug\heap_tls.lib" - -!ELSEIF "$(CFG)" == "heap - Win32 TLS" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "heap___Win32_TLS" -# PROP BASE Intermediate_Dir "heap___Win32_TLS" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "heap___Win32_TLS" -# PROP Intermediate_Dir "heap___Win32_TLS" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "USE_TLS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\lib_release\heap_tls.lib" -# ADD LIB32 /nologo /out:"..\..\lib_release\heap_tls.lib" - -!ENDIF - -# Begin Target - -# Name "heap - Win32 Release" -# Name "heap - Win32 Debug" -# Name "heap - Win32 TLS_DEBUG" -# Name "heap - Win32 TLS" -# Begin Source File - -SOURCE=.\_check.c -# End Source File -# Begin Source File - -SOURCE=.\_rectest.c -# End Source File -# Begin Source File - -SOURCE=.\heapdef.h -# End Source File -# Begin Source File - -SOURCE=.\hp_block.c -# End Source File -# Begin Source File - -SOURCE=.\hp_clear.c -# End Source File -# Begin Source File - -SOURCE=.\hp_close.c -# End Source File -# Begin Source File - -SOURCE=.\hp_create.c -# End Source File -# Begin Source File - -SOURCE=.\hp_delete.c -# End Source File -# Begin Source File - -SOURCE=.\hp_extra.c -# End Source File -# Begin Source File - -SOURCE=.\hp_hash.c - -!IF "$(CFG)" == "heap - Win32 Release" - -!ELSEIF "$(CFG)" == "heap - Win32 Debug" - -# SUBTRACT CPP /YX - -!ELSEIF "$(CFG)" == "heap - Win32 TLS_DEBUG" - -# SUBTRACT BASE CPP /YX -# SUBTRACT CPP /YX - -!ELSEIF "$(CFG)" == "heap - Win32 TLS" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\hp_info.c -# End Source File -# Begin Source File - -SOURCE=.\hp_open.c -# End Source File -# Begin Source File - -SOURCE=.\hp_panic.c -# End Source File -# Begin Source File - -SOURCE=.\hp_rename.c -# End Source File -# Begin Source File - -SOURCE=.\hp_rfirst.c -# End Source File -# Begin Source File - -SOURCE=.\hp_rkey.c -# End Source File -# Begin Source File - -SOURCE=.\hp_rlast.c -# End Source File -# Begin Source File - -SOURCE=.\hp_rnext.c -# End Source File -# Begin Source File - -SOURCE=.\hp_rprev.c -# End Source File -# Begin Source File - -SOURCE=.\hp_rrnd.c -# End Source File -# Begin Source File - -SOURCE=.\hp_rsame.c -# End Source File -# Begin Source File - -SOURCE=.\hp_scan.c -# End Source File -# Begin Source File - -SOURCE=.\hp_static.c -# End Source File -# Begin Source File - -SOURCE=.\hp_update.c -# End Source File -# Begin Source File - -SOURCE=.\hp_write.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/heap/heap.vcproj b/VC++Files/storage/heap/heap.vcproj deleted file mode 100644 index 73cffb22c1b..00000000000 --- a/VC++Files/storage/heap/heap.vcproj +++ /dev/null @@ -1,1062 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/storage/heap/heap_ia64.dsp b/VC++Files/storage/heap/heap_ia64.dsp deleted file mode 100644 index 1cc7be280b1..00000000000 --- a/VC++Files/storage/heap/heap_ia64.dsp +++ /dev/null @@ -1,256 +0,0 @@ -# Microsoft Developer Studio Project File - Name="heap" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=heap - WinIA64 TLS -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "heap.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "heap.mak" CFG="heap - WinIA64 TLS" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "heap - WinIA64 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "heap - WinIA64 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "heap - WinIA64 TLS_DEBUG" (based on "Win32 (x86) Static Library") -!MESSAGE "heap - WinIA64 TLS" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "heap - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\lib_release\heap.lib" - -!ELSEIF "$(CFG)" == "heap - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN64" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /GF /I "../../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\lib_debug\heap.lib" - -!ELSEIF "$(CFG)" == "heap - WinIA64 TLS_DEBUG" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "heap___WinIA64_TLS_DEBUG" -# PROP BASE Intermediate_Dir "heap___WinIA64_TLS_DEBUG" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "heap___WinIA64_TLS_DEBUG" -# PROP Intermediate_Dir "heap___WinIA64_TLS_DEBUG" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MTd /W3 /Z7 /Od /GF /I "../../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MTd /W3 /Zi /O2 /I "../../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_TLS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\lib_debug\heap_tls.lib" -# ADD LIB32 /nologo /out:"..\..\lib_debug\heap_tls.lib" - -!ELSEIF "$(CFG)" == "heap - WinIA64 TLS" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "heap___WinIA64_TLS" -# PROP BASE Intermediate_Dir "heap___WinIA64_TLS" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "heap___WinIA64_TLS" -# PROP Intermediate_Dir "heap___WinIA64_TLS" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "USE_TLS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\lib_release\heap_tls.lib" -# ADD LIB32 /nologo /out:"..\..\lib_release\heap_tls.lib" - -!ENDIF - -# Begin Target - -# Name "heap - WinIA64 Release" -# Name "heap - WinIA64 Debug" -# Name "heap - WinIA64 TLS_DEBUG" -# Name "heap - WinIA64 TLS" -# Begin Source File - -SOURCE=.\_check.c -# End Source File -# Begin Source File - -SOURCE=.\_rectest.c -# End Source File -# Begin Source File - -SOURCE=.\heapdef.h -# End Source File -# Begin Source File - -SOURCE=.\hp_block.c -# End Source File -# Begin Source File - -SOURCE=.\hp_clear.c -# End Source File -# Begin Source File - -SOURCE=.\hp_close.c -# End Source File -# Begin Source File - -SOURCE=.\hp_create.c -# End Source File -# Begin Source File - -SOURCE=.\hp_delete.c -# End Source File -# Begin Source File - -SOURCE=.\hp_extra.c -# End Source File -# Begin Source File - -SOURCE=.\hp_hash.c - -!IF "$(CFG)" == "heap - WinIA64 Release" - -!ELSEIF "$(CFG)" == "heap - WinIA64 Debug" - -# SUBTRACT CPP /YX - -!ELSEIF "$(CFG)" == "heap - WinIA64 TLS_DEBUG" - -# SUBTRACT BASE CPP /YX -# SUBTRACT CPP /YX - -!ELSEIF "$(CFG)" == "heap - WinIA64 TLS" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\hp_info.c -# End Source File -# Begin Source File - -SOURCE=.\hp_open.c -# End Source File -# Begin Source File - -SOURCE=.\hp_panic.c -# End Source File -# Begin Source File - -SOURCE=.\hp_rename.c -# End Source File -# Begin Source File - -SOURCE=.\hp_rfirst.c -# End Source File -# Begin Source File - -SOURCE=.\hp_rkey.c -# End Source File -# Begin Source File - -SOURCE=.\hp_rlast.c -# End Source File -# Begin Source File - -SOURCE=.\hp_rnext.c -# End Source File -# Begin Source File - -SOURCE=.\hp_rprev.c -# End Source File -# Begin Source File - -SOURCE=.\hp_rrnd.c -# End Source File -# Begin Source File - -SOURCE=.\hp_rsame.c -# End Source File -# Begin Source File - -SOURCE=.\hp_scan.c -# End Source File -# Begin Source File - -SOURCE=.\hp_static.c -# End Source File -# Begin Source File - -SOURCE=.\hp_update.c -# End Source File -# Begin Source File - -SOURCE=.\hp_write.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/innobase/innobase.dsp b/VC++Files/storage/innobase/innobase.dsp deleted file mode 100644 index 47fcd04683a..00000000000 --- a/VC++Files/storage/innobase/innobase.dsp +++ /dev/null @@ -1,450 +0,0 @@ -# Microsoft Developer Studio Project File - Name="innobase" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=INNOBASE - WIN32 RELEASE -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "innobase.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "innobase.mak" CFG="INNOBASE - WIN32 RELEASE" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "innobase - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "innobase - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "innobase - Win32 nt" (based on "Win32 (x86) Static Library") -!MESSAGE "innobase - Win32 Max nt" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "innobase - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "innobase___Win32_Debug" -# PROP BASE Intermediate_Dir "innobase___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /GX /O2 /I "../innobase/include" /D "NDEBUG" /D "_LIB" /D "_WIN32" /D "__NT__" /D "WIN32" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /GX /Z7 /Od /I "../innobase/include" /I "../../include" /D "NDEBUG" /D "_LIB" /D "_WIN32" /D "WIN32" /D "_MBCS" /D "MYSQL_SERVER" /FD /c -# SUBTRACT CPP /Fr /YX -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\lib_release\innobase-nt.lib" -# ADD LIB32 /nologo /out:"..\..\lib_debug\innodb.lib" - -!ELSEIF "$(CFG)" == "innobase - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "innobase___Win32_Release0" -# PROP BASE Intermediate_Dir "innobase___Win32_Release0" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /GX /O2 /I "../innobase/include" /I "../../include" /D "NDEBUG" /D "_LIB" /D "_WIN32" /D "WIN32" /D "_MBCS" /D "MYSQL_SERVER" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /GX /O2 /I "../innobase/include" /I "../../include" /D "_LIB" /D "_WIN32" /D "WIN32" /D "_MBCS" /D "MYSQL_SERVER" /D "NDEBUG" /FD /c -# SUBTRACT CPP /WX /Fr /YX -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\lib_release\innodb.lib" -# ADD LIB32 /nologo /out:"..\..\lib_release\innodb.lib" - -!ELSEIF "$(CFG)" == "innobase - Win32 nt" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "innobase___Win32_nt" -# PROP BASE Intermediate_Dir "innobase___Win32_nt" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "nt" -# PROP Intermediate_Dir "nt" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /GX /O2 /I "../innobase/include" /I "../../include" /D "NDEBUG" /D "_LIB" /D "_WIN32" /D "WIN32" /D "_MBCS" /D "MYSQL_SERVER" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /GX /O2 /I "../innobase/include" /I "../../include" /D "_LIB" /D "_WIN32" /D "WIN32" /D "NDEBUG" /D "MYSQL_SERVER" /D "_MBCS" /D MYSQL_SERVER_SUFFIX=-nt /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\lib_release\innodb.lib" -# ADD LIB32 /nologo /out:"..\..\lib_release\innodb.lib" - -!ELSEIF "$(CFG)" == "innobase - Win32 Max nt" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "innobase___Win32_Max_nt" -# PROP BASE Intermediate_Dir "innobase___Win32_Max_nt" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "max_nt" -# PROP Intermediate_Dir "max_nt" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /GX /O2 /I "../innobase/include" /I "../../include" /D "NDEBUG" /D "_LIB" /D "_WIN32" /D "WIN32" /D "_MBCS" /D "MYSQL_SERVER" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /GX /O2 /I "../innobase/include" /I "../../include" /D "_LIB" /D "_WIN32" /D "WIN32" /D "NDEBUG" /D "MYSQL_SERVER" /D "_MBCS" /D MYSQL_SERVER_SUFFIX=-nt-max /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\lib_release\innodb.lib" -# ADD LIB32 /nologo /out:"..\..\lib_release\innodb.lib" - -!ENDIF - -# Begin Target - -# Name "innobase - Win32 Debug" -# Name "innobase - Win32 Release" -# Name "innobase - Win32 nt" -# Name "innobase - Win32 Max nt" -# Begin Source File - -SOURCE=.\btr\btr0btr.c -# End Source File -# Begin Source File - -SOURCE=.\btr\btr0cur.c -# End Source File -# Begin Source File - -SOURCE=.\btr\btr0pcur.c -# End Source File -# Begin Source File - -SOURCE=.\btr\btr0sea.c -# End Source File -# Begin Source File - -SOURCE=.\buf\buf0buf.c -# End Source File -# Begin Source File - -SOURCE=.\buf\buf0flu.c -# End Source File -# Begin Source File - -SOURCE=.\buf\buf0lru.c -# End Source File -# Begin Source File - -SOURCE=.\buf\buf0rea.c -# End Source File -# Begin Source File - -SOURCE=.\data\data0data.c -# End Source File -# Begin Source File - -SOURCE=.\data\data0type.c -# End Source File -# Begin Source File - -SOURCE=.\dict\dict0boot.c -# End Source File -# Begin Source File - -SOURCE=.\dict\dict0crea.c -# End Source File -# Begin Source File - -SOURCE=.\dict\dict0dict.c -# End Source File -# Begin Source File - -SOURCE=.\dict\dict0load.c -# End Source File -# Begin Source File - -SOURCE=.\dict\dict0mem.c -# End Source File -# Begin Source File - -SOURCE=.\dyn\dyn0dyn.c -# End Source File -# Begin Source File - -SOURCE=.\eval\eval0eval.c -# End Source File -# Begin Source File - -SOURCE=.\eval\eval0proc.c -# End Source File -# Begin Source File - -SOURCE=.\fil\fil0fil.c -# End Source File -# Begin Source File - -SOURCE=.\fsp\fsp0fsp.c -# End Source File -# Begin Source File - -SOURCE=.\fut\fut0fut.c -# End Source File -# Begin Source File - -SOURCE=.\fut\fut0lst.c -# End Source File -# Begin Source File - -SOURCE=.\ha\ha0ha.c -# End Source File -# Begin Source File - -SOURCE=.\ha\hash0hash.c -# End Source File -# Begin Source File - -SOURCE=.\ibuf\ibuf0ibuf.c -# End Source File -# Begin Source File - -SOURCE=.\pars\lexyy.c -# End Source File -# Begin Source File - -SOURCE=.\lock\lock0lock.c -# End Source File -# Begin Source File - -SOURCE=.\log\log0log.c -# End Source File -# Begin Source File - -SOURCE=.\log\log0recv.c -# End Source File -# Begin Source File - -SOURCE=.\mach\mach0data.c -# End Source File -# Begin Source File - -SOURCE=.\mem\mem0mem.c -# End Source File -# Begin Source File - -SOURCE=.\mem\mem0pool.c -# End Source File -# Begin Source File - -SOURCE=.\mtr\mtr0log.c -# End Source File -# Begin Source File - -SOURCE=.\mtr\mtr0mtr.c -# End Source File -# Begin Source File - -SOURCE=.\os\os0file.c -# End Source File -# Begin Source File - -SOURCE=.\os\os0proc.c -# End Source File -# Begin Source File - -SOURCE=.\os\os0sync.c -# End Source File -# Begin Source File - -SOURCE=.\os\os0thread.c -# End Source File -# Begin Source File - -SOURCE=.\page\page0cur.c -# End Source File -# Begin Source File - -SOURCE=.\page\page0page.c -# End Source File -# Begin Source File - -SOURCE=.\pars\pars0grm.c -# End Source File -# Begin Source File - -SOURCE=.\pars\pars0opt.c -# End Source File -# Begin Source File - -SOURCE=.\pars\pars0pars.c -# End Source File -# Begin Source File - -SOURCE=.\pars\pars0sym.c -# End Source File -# Begin Source File - -SOURCE=.\que\que0que.c -# End Source File -# Begin Source File - -SOURCE=.\read\read0read.c -# End Source File -# Begin Source File - -SOURCE=.\rem\rem0cmp.c -# End Source File -# Begin Source File - -SOURCE=.\rem\rem0rec.c -# End Source File -# Begin Source File - -SOURCE=.\row\row0ins.c -# End Source File -# Begin Source File - -SOURCE=.\row\row0mysql.c -# End Source File -# Begin Source File - -SOURCE=.\row\row0purge.c -# End Source File -# Begin Source File - -SOURCE=.\row\row0row.c -# End Source File -# Begin Source File - -SOURCE=.\row\row0sel.c -# End Source File -# Begin Source File - -SOURCE=.\row\row0uins.c -# End Source File -# Begin Source File - -SOURCE=.\row\row0umod.c -# End Source File -# Begin Source File - -SOURCE=.\row\row0undo.c -# End Source File -# Begin Source File - -SOURCE=.\row\row0upd.c -# End Source File -# Begin Source File - -SOURCE=.\row\row0vers.c -# End Source File -# Begin Source File - -SOURCE=.\srv\srv0que.c -# End Source File -# Begin Source File - -SOURCE=.\srv\srv0srv.c -# End Source File -# Begin Source File - -SOURCE=.\srv\srv0start.c -# End Source File -# Begin Source File - -SOURCE=.\sync\sync0arr.c -# End Source File -# Begin Source File - -SOURCE=.\sync\sync0rw.c -# End Source File -# Begin Source File - -SOURCE=.\sync\sync0sync.c -# End Source File -# Begin Source File - -SOURCE=.\thr\thr0loc.c -# End Source File -# Begin Source File - -SOURCE=.\trx\trx0purge.c -# End Source File -# Begin Source File - -SOURCE=.\trx\trx0rec.c -# End Source File -# Begin Source File - -SOURCE=.\trx\trx0roll.c -# End Source File -# Begin Source File - -SOURCE=.\trx\trx0rseg.c -# End Source File -# Begin Source File - -SOURCE=.\trx\trx0sys.c -# End Source File -# Begin Source File - -SOURCE=.\trx\trx0trx.c -# End Source File -# Begin Source File - -SOURCE=.\trx\trx0undo.c -# End Source File -# Begin Source File - -SOURCE=.\usr\usr0sess.c -# End Source File -# Begin Source File - -SOURCE=.\ut\ut0byte.c -# End Source File -# Begin Source File - -SOURCE=.\ut\ut0dbg.c -# End Source File -# Begin Source File - -SOURCE=.\ut\ut0mem.c -# End Source File -# Begin Source File - -SOURCE=.\ut\ut0rnd.c -# End Source File -# Begin Source File - -SOURCE=.\ut\ut0ut.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/innobase/innobase.vcproj b/VC++Files/storage/innobase/innobase.vcproj deleted file mode 100644 index cd3c68997a1..00000000000 --- a/VC++Files/storage/innobase/innobase.vcproj +++ /dev/null @@ -1,2957 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/storage/innobase/innobase_ia64.dsp b/VC++Files/storage/innobase/innobase_ia64.dsp deleted file mode 100644 index a16e7441c72..00000000000 --- a/VC++Files/storage/innobase/innobase_ia64.dsp +++ /dev/null @@ -1,450 +0,0 @@ -# Microsoft Developer Studio Project File - Name="innobase" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=innobase - WinIA64 Max nt -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "innobase.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "innobase.mak" CFG="innobase - WinIA64 Max nt" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "innobase - WinIA64 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "innobase - WinIA64 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "innobase - WinIA64 nt" (based on "Win32 (x86) Static Library") -!MESSAGE "innobase - WinIA64 Max nt" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "innobase - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "innobase___WinIA64_Debug" -# PROP BASE Intermediate_Dir "innobase___WinIA64_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /GX /O2 /I "../innobase/include" /D "NDEBUG" /D "_LIB" /D "_WIN64" /D "__NT__" /D "WIN64" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../innobase/include" /I "../../include" /D "NDEBUG" /D "_LIB" /D "_WIN64" /D "WIN64" /D "_MBCS" /D "MYSQL_SERVER" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /Fr /YX -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\lib_release\innobase-nt.lib" -# ADD LIB32 /nologo /out:"..\..\lib_debug\innodb.lib" - -!ELSEIF "$(CFG)" == "innobase - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "innobase___WinIA64_Release0" -# PROP BASE Intermediate_Dir "innobase___WinIA64_Release0" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /GX /O2 /I "../innobase/include" /I "../../include" /D "NDEBUG" /D "_LIB" /D "_WIN64" /D "WIN64" /D "_MBCS" /D "MYSQL_SERVER" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../innobase/include" /I "../../include" /D "_LIB" /D "_WIN64" /D "WIN64" /D "_MBCS" /D "MYSQL_SERVER" /D "NDEBUG" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /WX /Fr /YX -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\lib_release\innodb.lib" -# ADD LIB32 /nologo /out:"..\..\lib_release\innodb.lib" - -!ELSEIF "$(CFG)" == "innobase - WinIA64 nt" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "innobase___WinIA64_nt" -# PROP BASE Intermediate_Dir "innobase___WinIA64_nt" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "nt" -# PROP Intermediate_Dir "nt" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /GX /O2 /I "../innobase/include" /I "../../include" /D "NDEBUG" /D "_LIB" /D "_WIN64" /D "WIN64" /D "_MBCS" /D "MYSQL_SERVER" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../innobase/include" /I "../../include" /D "_LIB" /D "_WIN64" /D "WIN64" /D "NDEBUG" /D "MYSQL_SERVER" /D "_MBCS" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /DMYSQL_SERVER_SUFFIX=-nt /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\lib_release\innodb.lib" -# ADD LIB32 /nologo /out:"..\..\lib_release\innodb.lib" - -!ELSEIF "$(CFG)" == "innobase - WinIA64 Max nt" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "innobase___WinIA64_Max_nt" -# PROP BASE Intermediate_Dir "innobase___WinIA64_Max_nt" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "max_nt" -# PROP Intermediate_Dir "max_nt" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /GX /O2 /I "../innobase/include" /I "../../include" /D "NDEBUG" /D "_LIB" /D "_Win64" /D "WIN64" /D "_MBCS" /D "MYSQL_SERVER" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../innobase/include" /I "../../include" /D "_LIB" /D "_WIN64" /D "WIN64" /D "NDEBUG" /D "MYSQL_SERVER" /D "_MBCS" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /DMYSQL_SERVER_SUFFIX=-nt-max /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x416 /d "NDEBUG" -# ADD RSC /l 0x416 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\lib_release\innodb.lib" -# ADD LIB32 /nologo /out:"..\..\lib_release\innodb.lib" - -!ENDIF - -# Begin Target - -# Name "innobase - WinIA64 Debug" -# Name "innobase - WinIA64 Release" -# Name "innobase - WinIA64 nt" -# Name "innobase - WinIA64 Max nt" -# Begin Source File - -SOURCE=.\btr\btr0btr.c -# End Source File -# Begin Source File - -SOURCE=.\btr\btr0cur.c -# End Source File -# Begin Source File - -SOURCE=.\btr\btr0pcur.c -# End Source File -# Begin Source File - -SOURCE=.\btr\btr0sea.c -# End Source File -# Begin Source File - -SOURCE=.\buf\buf0buf.c -# End Source File -# Begin Source File - -SOURCE=.\buf\buf0flu.c -# End Source File -# Begin Source File - -SOURCE=.\buf\buf0lru.c -# End Source File -# Begin Source File - -SOURCE=.\buf\buf0rea.c -# End Source File -# Begin Source File - -SOURCE=.\data\data0data.c -# End Source File -# Begin Source File - -SOURCE=.\data\data0type.c -# End Source File -# Begin Source File - -SOURCE=.\dict\dict0boot.c -# End Source File -# Begin Source File - -SOURCE=.\dict\dict0crea.c -# End Source File -# Begin Source File - -SOURCE=.\dict\dict0dict.c -# End Source File -# Begin Source File - -SOURCE=.\dict\dict0load.c -# End Source File -# Begin Source File - -SOURCE=.\dict\dict0mem.c -# End Source File -# Begin Source File - -SOURCE=.\dyn\dyn0dyn.c -# End Source File -# Begin Source File - -SOURCE=.\eval\eval0eval.c -# End Source File -# Begin Source File - -SOURCE=.\eval\eval0proc.c -# End Source File -# Begin Source File - -SOURCE=.\fil\fil0fil.c -# End Source File -# Begin Source File - -SOURCE=.\fsp\fsp0fsp.c -# End Source File -# Begin Source File - -SOURCE=.\fut\fut0fut.c -# End Source File -# Begin Source File - -SOURCE=.\fut\fut0lst.c -# End Source File -# Begin Source File - -SOURCE=.\ha\ha0ha.c -# End Source File -# Begin Source File - -SOURCE=.\ha\hash0hash.c -# End Source File -# Begin Source File - -SOURCE=.\ibuf\ibuf0ibuf.c -# End Source File -# Begin Source File - -SOURCE=.\pars\lexyy.c -# End Source File -# Begin Source File - -SOURCE=.\lock\lock0lock.c -# End Source File -# Begin Source File - -SOURCE=.\log\log0log.c -# End Source File -# Begin Source File - -SOURCE=.\log\log0recv.c -# End Source File -# Begin Source File - -SOURCE=.\mach\mach0data.c -# End Source File -# Begin Source File - -SOURCE=.\mem\mem0mem.c -# End Source File -# Begin Source File - -SOURCE=.\mem\mem0pool.c -# End Source File -# Begin Source File - -SOURCE=.\mtr\mtr0log.c -# End Source File -# Begin Source File - -SOURCE=.\mtr\mtr0mtr.c -# End Source File -# Begin Source File - -SOURCE=.\os\os0file.c -# End Source File -# Begin Source File - -SOURCE=.\os\os0proc.c -# End Source File -# Begin Source File - -SOURCE=.\os\os0sync.c -# End Source File -# Begin Source File - -SOURCE=.\os\os0thread.c -# End Source File -# Begin Source File - -SOURCE=.\page\page0cur.c -# End Source File -# Begin Source File - -SOURCE=.\page\page0page.c -# End Source File -# Begin Source File - -SOURCE=.\pars\pars0grm.c -# End Source File -# Begin Source File - -SOURCE=.\pars\pars0opt.c -# End Source File -# Begin Source File - -SOURCE=.\pars\pars0pars.c -# End Source File -# Begin Source File - -SOURCE=.\pars\pars0sym.c -# End Source File -# Begin Source File - -SOURCE=.\que\que0que.c -# End Source File -# Begin Source File - -SOURCE=.\read\read0read.c -# End Source File -# Begin Source File - -SOURCE=.\rem\rem0cmp.c -# End Source File -# Begin Source File - -SOURCE=.\rem\rem0rec.c -# End Source File -# Begin Source File - -SOURCE=.\row\row0ins.c -# End Source File -# Begin Source File - -SOURCE=.\row\row0mysql.c -# End Source File -# Begin Source File - -SOURCE=.\row\row0purge.c -# End Source File -# Begin Source File - -SOURCE=.\row\row0row.c -# End Source File -# Begin Source File - -SOURCE=.\row\row0sel.c -# End Source File -# Begin Source File - -SOURCE=.\row\row0uins.c -# End Source File -# Begin Source File - -SOURCE=.\row\row0umod.c -# End Source File -# Begin Source File - -SOURCE=.\row\row0undo.c -# End Source File -# Begin Source File - -SOURCE=.\row\row0upd.c -# End Source File -# Begin Source File - -SOURCE=.\row\row0vers.c -# End Source File -# Begin Source File - -SOURCE=.\srv\srv0que.c -# End Source File -# Begin Source File - -SOURCE=.\srv\srv0srv.c -# End Source File -# Begin Source File - -SOURCE=.\srv\srv0start.c -# End Source File -# Begin Source File - -SOURCE=.\sync\sync0arr.c -# End Source File -# Begin Source File - -SOURCE=.\sync\sync0rw.c -# End Source File -# Begin Source File - -SOURCE=.\sync\sync0sync.c -# End Source File -# Begin Source File - -SOURCE=.\thr\thr0loc.c -# End Source File -# Begin Source File - -SOURCE=.\trx\trx0purge.c -# End Source File -# Begin Source File - -SOURCE=.\trx\trx0rec.c -# End Source File -# Begin Source File - -SOURCE=.\trx\trx0roll.c -# End Source File -# Begin Source File - -SOURCE=.\trx\trx0rseg.c -# End Source File -# Begin Source File - -SOURCE=.\trx\trx0sys.c -# End Source File -# Begin Source File - -SOURCE=.\trx\trx0trx.c -# End Source File -# Begin Source File - -SOURCE=.\trx\trx0undo.c -# End Source File -# Begin Source File - -SOURCE=.\usr\usr0sess.c -# End Source File -# Begin Source File - -SOURCE=.\ut\ut0byte.c -# End Source File -# Begin Source File - -SOURCE=.\ut\ut0dbg.c -# End Source File -# Begin Source File - -SOURCE=.\ut\ut0mem.c -# End Source File -# Begin Source File - -SOURCE=.\ut\ut0rnd.c -# End Source File -# Begin Source File - -SOURCE=.\ut\ut0ut.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/storage/myisam/myisam.dsp b/VC++Files/storage/myisam/myisam.dsp deleted file mode 100644 index f040f6ffdfc..00000000000 --- a/VC++Files/storage/myisam/myisam.dsp +++ /dev/null @@ -1,366 +0,0 @@ -# Microsoft Developer Studio Project File - Name="myisam" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=myisam - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "myisam.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "myisam.mak" CFG="myisam - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "myisam - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "myisam - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "myisam - Win32 TLS_DEBUG" (based on "Win32 (x86) Static Library") -!MESSAGE "myisam - Win32 TLS" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "myisam - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\lib_release\myisam.lib" - -!ELSEIF "$(CFG)" == "myisam - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /Fo".\Debug/" /Fd".\Debug/" /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\lib_Debug\myisam.lib" - -!ELSEIF "$(CFG)" == "myisam - Win32 TLS_DEBUG" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "myisam___Win32_TLS_DEBUG" -# PROP BASE Intermediate_Dir "myisam___Win32_TLS_DEBUG" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "myisam___Win32_TLS_DEBUG" -# PROP Intermediate_Dir "myisam___Win32_TLS_DEBUG" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /Fo".\Debug/" /Fd".\Debug/" /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_TLS" /Fo".\Debug/" /Fd".\Debug/" /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\lib_Debug\myisam_tls.lib" -# ADD LIB32 /nologo /out:"..\..\lib_Debug\myisam_tls.lib" - -!ELSEIF "$(CFG)" == "myisam - Win32 TLS" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "myisam___Win32_TLS" -# PROP BASE Intermediate_Dir "myisam___Win32_TLS" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "myisam___Win32_TLS" -# PROP Intermediate_Dir "myisam___Win32_TLS" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "USE_TLS" /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\lib_release\myisam_tls.lib" -# ADD LIB32 /nologo /out:"..\..\lib_release\myisam_tls.lib" - -!ENDIF - -# Begin Target - -# Name "myisam - Win32 Release" -# Name "myisam - Win32 Debug" -# Name "myisam - Win32 TLS_DEBUG" -# Name "myisam - Win32 TLS" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\ft_boolean_search.c -# End Source File -# Begin Source File - -SOURCE=.\ft_nlq_search.c -# End Source File -# Begin Source File - -SOURCE=.\ft_parser.c -# End Source File -# Begin Source File - -SOURCE=.\ft_static.c -# End Source File -# Begin Source File - -SOURCE=.\ft_stem.c -# End Source File -# Begin Source File - -SOURCE=.\ft_stopwords.c -# End Source File -# Begin Source File - -SOURCE=.\ft_update.c -# End Source File -# Begin Source File - -SOURCE=.\mi_cache.c -# End Source File -# Begin Source File - -SOURCE=.\mi_changed.c -# End Source File -# Begin Source File - -SOURCE=.\mi_check.c -# End Source File -# Begin Source File - -SOURCE=.\mi_checksum.c -# End Source File -# Begin Source File - -SOURCE=.\mi_close.c -# End Source File -# Begin Source File - -SOURCE=.\mi_create.c -# End Source File -# Begin Source File - -SOURCE=.\mi_dbug.c -# End Source File -# Begin Source File - -SOURCE=.\mi_delete.c -# End Source File -# Begin Source File - -SOURCE=.\mi_delete_all.c -# End Source File -# Begin Source File - -SOURCE=.\mi_delete_table.c -# End Source File -# Begin Source File - -SOURCE=.\mi_dynrec.c -# End Source File -# Begin Source File - -SOURCE=.\mi_extra.c -# End Source File -# Begin Source File - -SOURCE=.\mi_info.c -# End Source File -# Begin Source File - -SOURCE=.\mi_key.c -# End Source File -# Begin Source File - -SOURCE=.\mi_keycache.c -# End Source File -# Begin Source File - -SOURCE=.\mi_locking.c -# End Source File -# Begin Source File - -SOURCE=.\mi_log.c -# End Source File -# Begin Source File - -SOURCE=.\mi_open.c -# End Source File -# Begin Source File - -SOURCE=.\mi_packrec.c -# End Source File -# Begin Source File - -SOURCE=.\mi_page.c -# End Source File -# Begin Source File - -SOURCE=.\mi_panic.c -# End Source File -# Begin Source File - -SOURCE=.\mi_preload.c -# End Source File -# Begin Source File - -SOURCE=.\mi_range.c -# End Source File -# Begin Source File - -SOURCE=.\mi_rename.c -# End Source File -# Begin Source File - -SOURCE=.\mi_rfirst.c -# End Source File -# Begin Source File - -SOURCE=.\mi_rkey.c -# End Source File -# Begin Source File - -SOURCE=.\mi_rlast.c -# End Source File -# Begin Source File - -SOURCE=.\mi_rnext.c -# End Source File -# Begin Source File - -SOURCE=.\mi_rnext_same.c -# End Source File -# Begin Source File - -SOURCE=.\mi_rprev.c -# End Source File -# Begin Source File - -SOURCE=.\mi_rrnd.c -# End Source File -# Begin Source File - -SOURCE=.\mi_rsame.c -# End Source File -# Begin Source File - -SOURCE=.\mi_rsamepos.c -# End Source File -# Begin Source File - -SOURCE=.\mi_scan.c -# End Source File -# Begin Source File - -SOURCE=.\mi_search.c -# End Source File -# Begin Source File - -SOURCE=.\mi_static.c -# End Source File -# Begin Source File - -SOURCE=.\mi_statrec.c -# End Source File -# Begin Source File - -SOURCE=.\mi_unique.c -# End Source File -# Begin Source File - -SOURCE=.\mi_update.c -# End Source File -# Begin Source File - -SOURCE=.\mi_write.c -# End Source File -# Begin Source File - -SOURCE=.\rt_index.c -# End Source File -# Begin Source File - -SOURCE=.\rt_key.c -# End Source File -# Begin Source File - -SOURCE=.\rt_mbr.c -# End Source File -# Begin Source File - -SOURCE=.\rt_split.c -# End Source File -# Begin Source File - -SOURCE=.\sort.c -# End Source File -# Begin Source File - -SOURCE=.\sp_key.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\ft_eval.h -# End Source File -# Begin Source File - -SOURCE=.\myisamdef.h -# End Source File -# Begin Source File - -SOURCE=.\rt_index.h -# End Source File -# End Group -# End Target -# End Project diff --git a/VC++Files/storage/myisam/myisam.vcproj b/VC++Files/storage/myisam/myisam.vcproj deleted file mode 100644 index 2f3d8271525..00000000000 --- a/VC++Files/storage/myisam/myisam.vcproj +++ /dev/null @@ -1,2095 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/storage/myisam/myisam_ia64.dsp b/VC++Files/storage/myisam/myisam_ia64.dsp deleted file mode 100644 index e93b0b8211b..00000000000 --- a/VC++Files/storage/myisam/myisam_ia64.dsp +++ /dev/null @@ -1,366 +0,0 @@ -# Microsoft Developer Studio Project File - Name="myisam" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=myisam - WinIA64 TLS -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "myisam.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "myisam.mak" CFG="myisam - WinIA64 TLS" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "myisam - WinIA64 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "myisam - WinIA64 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "myisam - WinIA64 TLS_DEBUG" (based on "Win32 (x86) Static Library") -!MESSAGE "myisam - WinIA64 TLS" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "myisam - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\lib_release\myisam.lib" - -!ELSEIF "$(CFG)" == "myisam - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN64" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /GF /I "../../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /Fo".\Debug/" /Fd".\Debug/" /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\lib_Debug\myisam.lib" - -!ELSEIF "$(CFG)" == "myisam - WinIA64 TLS_DEBUG" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "myisam___Win64_TLS_DEBUG" -# PROP BASE Intermediate_Dir "myisam___Win64_TLS_DEBUG" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "myisam___Win64_TLS_DEBUG" -# PROP Intermediate_Dir "myisam___Win64_TLS_DEBUG" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MTd /W3 /Z7 /Od /GF /I "../../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /Fo".\Debug/" /Fd".\Debug/" /FD /c -# ADD CPP /nologo /MTd /W3 /Zi /O2 /I "../../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_TLS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /Fo".\Debug/" /Fd".\Debug/" /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\lib_Debug\myisam_tls.lib" -# ADD LIB32 /nologo /out:"..\..\lib_Debug\myisam_tls.lib" - -!ELSEIF "$(CFG)" == "myisam - WinIA64 TLS" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "myisam___Win64_TLS" -# PROP BASE Intermediate_Dir "myisam___Win64_TLS" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "myisam___Win64_TLS" -# PROP Intermediate_Dir "myisam___Win64_TLS" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "USE_TLS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\lib_release\myisam_tls.lib" -# ADD LIB32 /nologo /out:"..\..\lib_release\myisam_tls.lib" - -!ENDIF - -# Begin Target - -# Name "myisam - WinIA64 Release" -# Name "myisam - WinIA64 Debug" -# Name "myisam - WinIA64 TLS_DEBUG" -# Name "myisam - WinIA64 TLS" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\ft_boolean_search.c -# End Source File -# Begin Source File - -SOURCE=.\ft_nlq_search.c -# End Source File -# Begin Source File - -SOURCE=.\ft_parser.c -# End Source File -# Begin Source File - -SOURCE=.\ft_static.c -# End Source File -# Begin Source File - -SOURCE=.\ft_stem.c -# End Source File -# Begin Source File - -SOURCE=.\ft_stopwords.c -# End Source File -# Begin Source File - -SOURCE=.\ft_update.c -# End Source File -# Begin Source File - -SOURCE=.\mi_cache.c -# End Source File -# Begin Source File - -SOURCE=.\mi_changed.c -# End Source File -# Begin Source File - -SOURCE=.\mi_check.c -# End Source File -# Begin Source File - -SOURCE=.\mi_checksum.c -# End Source File -# Begin Source File - -SOURCE=.\mi_close.c -# End Source File -# Begin Source File - -SOURCE=.\mi_create.c -# End Source File -# Begin Source File - -SOURCE=.\mi_dbug.c -# End Source File -# Begin Source File - -SOURCE=.\mi_delete.c -# End Source File -# Begin Source File - -SOURCE=.\mi_delete_all.c -# End Source File -# Begin Source File - -SOURCE=.\mi_delete_table.c -# End Source File -# Begin Source File - -SOURCE=.\mi_dynrec.c -# End Source File -# Begin Source File - -SOURCE=.\mi_extra.c -# End Source File -# Begin Source File - -SOURCE=.\mi_info.c -# End Source File -# Begin Source File - -SOURCE=.\mi_key.c -# End Source File -# Begin Source File - -SOURCE=.\mi_keycache.c -# End Source File -# Begin Source File - -SOURCE=.\mi_locking.c -# End Source File -# Begin Source File - -SOURCE=.\mi_log.c -# End Source File -# Begin Source File - -SOURCE=.\mi_open.c -# End Source File -# Begin Source File - -SOURCE=.\mi_packrec.c -# End Source File -# Begin Source File - -SOURCE=.\mi_page.c -# End Source File -# Begin Source File - -SOURCE=.\mi_panic.c -# End Source File -# Begin Source File - -SOURCE=.\mi_preload.c -# End Source File -# Begin Source File - -SOURCE=.\mi_range.c -# End Source File -# Begin Source File - -SOURCE=.\mi_rename.c -# End Source File -# Begin Source File - -SOURCE=.\mi_rfirst.c -# End Source File -# Begin Source File - -SOURCE=.\mi_rkey.c -# End Source File -# Begin Source File - -SOURCE=.\mi_rlast.c -# End Source File -# Begin Source File - -SOURCE=.\mi_rnext.c -# End Source File -# Begin Source File - -SOURCE=.\mi_rnext_same.c -# End Source File -# Begin Source File - -SOURCE=.\mi_rprev.c -# End Source File -# Begin Source File - -SOURCE=.\mi_rrnd.c -# End Source File -# Begin Source File - -SOURCE=.\mi_rsame.c -# End Source File -# Begin Source File - -SOURCE=.\mi_rsamepos.c -# End Source File -# Begin Source File - -SOURCE=.\mi_scan.c -# End Source File -# Begin Source File - -SOURCE=.\mi_search.c -# End Source File -# Begin Source File - -SOURCE=.\mi_static.c -# End Source File -# Begin Source File - -SOURCE=.\mi_statrec.c -# End Source File -# Begin Source File - -SOURCE=.\mi_unique.c -# End Source File -# Begin Source File - -SOURCE=.\mi_update.c -# End Source File -# Begin Source File - -SOURCE=.\mi_write.c -# End Source File -# Begin Source File - -SOURCE=.\rt_index.c -# End Source File -# Begin Source File - -SOURCE=.\rt_key.c -# End Source File -# Begin Source File - -SOURCE=.\rt_mbr.c -# End Source File -# Begin Source File - -SOURCE=.\rt_split.c -# End Source File -# Begin Source File - -SOURCE=.\sort.c -# End Source File -# Begin Source File - -SOURCE=.\sp_key.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\ft_eval.h -# End Source File -# Begin Source File - -SOURCE=.\myisamdef.h -# End Source File -# Begin Source File - -SOURCE=.\rt_index.h -# End Source File -# End Group -# End Target -# End Project diff --git a/VC++Files/storage/myisammrg/myisammrg.dsp b/VC++Files/storage/myisammrg/myisammrg.dsp deleted file mode 100644 index 3aa638167d1..00000000000 --- a/VC++Files/storage/myisammrg/myisammrg.dsp +++ /dev/null @@ -1,233 +0,0 @@ -# Microsoft Developer Studio Project File - Name="myisammrg" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=myisammrg - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "myisammrg.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "myisammrg.mak" CFG="myisammrg - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "myisammrg - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "myisammrg - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "myisammrg - Win32 TLS_DEBUG" (based on "Win32 (x86) Static Library") -!MESSAGE "myisammrg - Win32 TLS" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "myisammrg - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\lib_release\myisammrg.lib" - -!ELSEIF "$(CFG)" == "myisammrg - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /Fo".\Debug/" /Fd".\Debug/" /FD /c -# SUBTRACT CPP /Fr -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\lib_Debug\myisammrg.lib" - -!ELSEIF "$(CFG)" == "myisammrg - Win32 TLS_DEBUG" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "myisammrg___Win32_TLS_DEBUG" -# PROP BASE Intermediate_Dir "myisammrg___Win32_TLS_DEBUG" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "myisammrg___Win32_TLS_DEBUG" -# PROP Intermediate_Dir "myisammrg___Win32_TLS_DEBUG" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /Fo".\Debug/" /Fd".\Debug/" /FD /c -# SUBTRACT BASE CPP /Fr -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_TLS" /Fo".\Debug/" /Fd".\Debug/" /FD /c -# SUBTRACT CPP /Fr -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\lib_Debug\myisammrg_tls.lib" -# ADD LIB32 /nologo /out:"..\..\lib_Debug\myisammrg_tls.lib" - -!ELSEIF "$(CFG)" == "myisammrg - Win32 TLS" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "myisammrg___Win32_TLS" -# PROP BASE Intermediate_Dir "myisammrg___Win32_TLS" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "myisammrg___Win32_TLS" -# PROP Intermediate_Dir "myisammrg___Win32_TLS" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "USE_TLS" /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\lib_release\myisammrg_tls.lib" -# ADD LIB32 /nologo /out:"..\..\lib_release\myisammrg_tls.lib" - -!ENDIF - -# Begin Target - -# Name "myisammrg - Win32 Release" -# Name "myisammrg - Win32 Debug" -# Name "myisammrg - Win32 TLS_DEBUG" -# Name "myisammrg - Win32 TLS" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\myrg_close.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_create.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_delete.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_extra.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_info.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_locking.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_open.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_panic.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_queue.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_range.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_rfirst.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_rkey.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_rlast.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_rnext.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_rnext_same.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_rprev.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_rrnd.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_rsame.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_static.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_update.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_write.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\mymrgdef.h -# End Source File -# End Group -# End Target -# End Project diff --git a/VC++Files/storage/myisammrg/myisammrg.vcproj b/VC++Files/storage/myisammrg/myisammrg.vcproj deleted file mode 100644 index b186eda538d..00000000000 --- a/VC++Files/storage/myisammrg/myisammrg.vcproj +++ /dev/null @@ -1,969 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/storage/myisammrg/myisammrg_ia64.dsp b/VC++Files/storage/myisammrg/myisammrg_ia64.dsp deleted file mode 100644 index c759ac7febc..00000000000 --- a/VC++Files/storage/myisammrg/myisammrg_ia64.dsp +++ /dev/null @@ -1,233 +0,0 @@ -# Microsoft Developer Studio Project File - Name="myisammrg" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=myisammrg - WinIA64 TLS -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "myisammrg.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "myisammrg.mak" CFG="myisammrg - WinIA64 TLS" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "myisammrg - WinIA64 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "myisammrg - WinIA64 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "myisammrg - WinIA64 TLS_DEBUG" (based on "Win32 (x86) Static Library") -!MESSAGE "myisammrg - WinIA64 TLS" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "myisammrg - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WinIA64" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "_IA64_" /D "WinIA64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\lib_release\myisammrg.lib" - -!ELSEIF "$(CFG)" == "myisammrg - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WinIA64" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /Gf /I "../../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "_IA64_" /D "WinIA64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /Fo".\Debug/" /Fd".\Debug/" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /Fr -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\lib_Debug\myisammrg.lib" - -!ELSEIF "$(CFG)" == "myisammrg - WinIA64 TLS_DEBUG" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "myisammrg___WinIA64 _TLS_DEBUG" -# PROP BASE Intermediate_Dir "myisammrg___WinIA64 _TLS_DEBUG" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "myisammrg___WinIA64 _TLS_DEBUG" -# PROP Intermediate_Dir "myisammrg___WinIA64 _TLS_DEBUG" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /Fo".\Debug/" /Fd".\Debug/" /FD /c -# SUBTRACT BASE CPP /Fr -# ADD CPP /nologo /MTd /W3 /Zi /O2 /I "../../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_TLS" /D "_IA64_" /D "WinIA64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /Fo".\Debug/" /Fd".\Debug/" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /Fr -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\lib_Debug\myisammrg_tls.lib" -# ADD LIB32 /nologo /out:"..\..\lib_Debug\myisammrg_tls.lib" - -!ELSEIF "$(CFG)" == "myisammrg - WinIA64 TLS" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "myisammrg___WinIA64 _TLS" -# PROP BASE Intermediate_Dir "myisammrg___WinIA64 _TLS" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "myisammrg___WinIA64 _TLS" -# PROP Intermediate_Dir "myisammrg___WinIA64 _TLS" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "USE_TLS" /D "_IA64_" /D "WinIA64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\lib_release\myisammrg_tls.lib" -# ADD LIB32 /nologo /out:"..\..\lib_release\myisammrg_tls.lib" - -!ENDIF - -# Begin Target - -# Name "myisammrg - WinIA64 Release" -# Name "myisammrg - WinIA64 Debug" -# Name "myisammrg - WinIA64 TLS_DEBUG" -# Name "myisammrg - WinIA64 TLS" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\myrg_close.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_create.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_delete.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_extra.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_info.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_locking.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_open.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_panic.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_queue.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_range.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_rfirst.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_rkey.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_rlast.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_rnext.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_rnext_same.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_rprev.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_rrnd.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_rsame.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_static.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_update.c -# End Source File -# Begin Source File - -SOURCE=.\myrg_write.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\mymrgdef.h -# End Source File -# End Group -# End Target -# End Project diff --git a/VC++Files/strings/MASM6x/strings.dsp b/VC++Files/strings/MASM6x/strings.dsp deleted file mode 100644 index e7b1c161d83..00000000000 --- a/VC++Files/strings/MASM6x/strings.dsp +++ /dev/null @@ -1,248 +0,0 @@ -# Microsoft Developer Studio Project File - Name="strings" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=strings - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "strings.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "strings.mak" CFG="strings - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "strings - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "strings - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "strings - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "NDEBUG" /D "DBUG_OFF" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_release\strings.lib" - -!ELSEIF "$(CFG)" == "strings - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_debug\strings.lib" - -!ENDIF - -# Begin Target - -# Name "strings - Win32 Release" -# Name "strings - Win32 Debug" -# Begin Source File - -SOURCE=.\bchange.c -# End Source File -# Begin Source File - -SOURCE=.\bcmp.c -# End Source File -# Begin Source File - -SOURCE=.\bfill.c -# End Source File -# Begin Source File - -SOURCE=.\bmove512.c -# End Source File -# Begin Source File - -SOURCE=".\ctype-big5.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-czech.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-euc_kr.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-gb2312.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-gbk.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-sjis.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-tis620.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-ujis.c" -# End Source File -# Begin Source File - -SOURCE=.\ctype.c -# End Source File -# Begin Source File - -SOURCE=.\int2str.c -# End Source File -# Begin Source File - -SOURCE=.\llstr.c -# End Source File -# Begin Source File - -SOURCE=.\longlong2str.c -# End Source File -# Begin Source File - -SOURCE=.\r_strinstr.c -# End Source File -# Begin Source File - -SOURCE=.\str2int.c -# End Source File -# Begin Source File - -SOURCE=.\strnlen.c -# End Source File -# Begin Source File - -SOURCE=.\Strings.asm - -!IF "$(CFG)" == "strings - Win32 Release" - -# Begin Custom Build -OutDir=.\release -InputPath=.\Strings.asm -InputName=Strings - -"$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - ml /Cx /nologo /DDOS386 /DM_I386 /Zm /coff /c /Fo $(Outdir)\$(InputName).obj $(InputPath) - -# End Custom Build - -!ELSEIF "$(CFG)" == "strings - Win32 Debug" - -# Begin Custom Build -OutDir=.\debug -InputPath=.\Strings.asm -InputName=Strings - -"$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - ml /Cx /nologo /DDOS386 /DM_I386 /Zm /coff /c /Fo $(Outdir)\$(InputName).obj $(InputPath) - -# End Custom Build - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\strtod.c -# End Source File -# Begin Source File - -SOURCE=.\strtol.c -# End Source File -# Begin Source File - -SOURCE=.\strtoll.c -# End Source File -# Begin Source File - -SOURCE=.\strtoul.c -# End Source File -# Begin Source File - -SOURCE=.\strtoull.c -# End Source File -# Begin Source File - -SOURCE=.\Strxmov.asm - -!IF "$(CFG)" == "strings - Win32 Release" - -# Begin Custom Build -OutDir=.\release -InputPath=.\Strxmov.asm -InputName=Strxmov - -"$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - ml /Cx /nologo /DDOS386 /DM_I386 /Zm /coff /c /Fo $(Outdir)\$(InputName).obj $(InputPath) - -# End Custom Build - -!ELSEIF "$(CFG)" == "strings - Win32 Debug" - -# Begin Custom Build -OutDir=.\debug -InputPath=.\Strxmov.asm -InputName=Strxmov - -"$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - ml /Cx /nologo /DDOS386 /DM_I386 /Zm /coff /c /Fo $(Outdir)\$(InputName).obj $(InputPath) - -# End Custom Build - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\strxnmov.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/strings/MASM6x/strings.dsw b/VC++Files/strings/MASM6x/strings.dsw deleted file mode 100644 index 63fc3706c19..00000000000 --- a/VC++Files/strings/MASM6x/strings.dsw +++ /dev/null @@ -1,28 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "strings"=".\strings.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### diff --git a/VC++Files/strings/backup/strings.dsp b/VC++Files/strings/backup/strings.dsp deleted file mode 100644 index dcff9915f13..00000000000 --- a/VC++Files/strings/backup/strings.dsp +++ /dev/null @@ -1,249 +0,0 @@ -# Microsoft Developer Studio Project File - Name="strings" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=strings - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "strings.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "strings.mak" CFG="strings - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "strings - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "strings - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "strings - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "NDEBUG" /D "DBUG_OFF" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_release\strings.lib" - -!ELSEIF "$(CFG)" == "strings - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../include" /D "_DEBUG" /D "SAFEMALLOC" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_debug\strings.lib" - -!ENDIF - -# Begin Target - -# Name "strings - Win32 Release" -# Name "strings - Win32 Debug" -# Begin Source File - -SOURCE=.\atof.c -# End Source File -# Begin Source File - -SOURCE=.\bchange.c -# End Source File -# Begin Source File - -SOURCE=.\bcmp.c -# End Source File -# Begin Source File - -SOURCE=.\bfill.c -# End Source File -# Begin Source File - -SOURCE=.\bmove512.c -# End Source File -# Begin Source File - -SOURCE=".\ctype-big5.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-czech.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-euc_kr.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-gb2312.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-gbk.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-sjis.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-tis620.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-ujis.c" -# End Source File -# Begin Source File - -SOURCE=.\ctype.c -# End Source File -# Begin Source File - -SOURCE=.\int2str.c -# End Source File -# Begin Source File - -SOURCE=.\llstr.c -# End Source File -# Begin Source File - -SOURCE=.\longlong2str.c -# End Source File -# Begin Source File - -SOURCE=.\r_strinstr.c -# End Source File -# Begin Source File - -SOURCE=.\str2int.c -# End Source File -# Begin Source File - -SOURCE=.\Strings.asm - -!IF "$(CFG)" == "strings - Win32 Release" - -# Begin Custom Build -OutDir=.\release -InputPath=.\Strings.asm -InputName=Strings - -"$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - C:\masm\masm -Mx -t -DDOS386 -DM_I386 $(InputPath),$(OutDir)\$(InputName).obj,,, - -# End Custom Build - -!ELSEIF "$(CFG)" == "strings - Win32 Debug" - -# Begin Custom Build -OutDir=.\debug -InputPath=.\Strings.asm -InputName=Strings - -"$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - C:\masm\masm -Mx -t -DDOS386 -DM_I386 $(InputPath),$(Outdir)\$(InputName).obj,,, - -# End Custom Build - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\strtol.c -# End Source File -# Begin Source File - -SOURCE=.\strtoll.c -# End Source File -# Begin Source File - -SOURCE=.\strtoul.c -# End Source File -# Begin Source File - -SOURCE=.\strtoull.c -# End Source File -# Begin Source File - -SOURCE=.\Strxmov.asm - -!IF "$(CFG)" == "strings - Win32 Release" - -# Begin Custom Build -OutDir=.\release -InputPath=.\Strxmov.asm -InputName=Strxmov - -"$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - C:\masm\masm -Mx -t -DDOS386 -DM_I386 $(InputPath),$(OutDir)\$(InputName).obj,,, - -# End Custom Build - -!ELSEIF "$(CFG)" == "strings - Win32 Debug" - -# Begin Custom Build -OutDir=.\debug -InputPath=.\Strxmov.asm -InputName=Strxmov - -"$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - C:\masm\masm -Mx -t -DDOS386 -DM_I386 $(InputPath),$(Outdir)\$(InputName).obj,,, - -# End Custom Build - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\strxnmov.c -# End Source File -# Begin Source File - -SOURCE=.\str_alloc.c -# End Source File - -# End Target -# End Project diff --git a/VC++Files/strings/backup/strings.dsw b/VC++Files/strings/backup/strings.dsw deleted file mode 100644 index 63fc3706c19..00000000000 --- a/VC++Files/strings/backup/strings.dsw +++ /dev/null @@ -1,28 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "strings"=".\strings.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### diff --git a/VC++Files/strings/noMASM/strings.dsp b/VC++Files/strings/noMASM/strings.dsp deleted file mode 100644 index e7a0395c3df..00000000000 --- a/VC++Files/strings/noMASM/strings.dsp +++ /dev/null @@ -1,266 +0,0 @@ -# Microsoft Developer Studio Project File - Name="strings" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=strings - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "strings.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "strings.mak" CFG="strings - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "strings - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "strings - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "strings - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "NDEBUG" /D "DBUG_OFF" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_release\strings.lib" - -!ELSEIF "$(CFG)" == "strings - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_debug\strings.lib" - -!ENDIF - -# Begin Target - -# Name "strings - Win32 Release" -# Name "strings - Win32 Debug" -# Begin Source File - -SOURCE=.\bchange.c -# End Source File -# Begin Source File - -SOURCE=.\bcmp.c -# End Source File -# Begin Source File - -SOURCE=.\bfill.c -# End Source File -# Begin Source File - -SOURCE=.\bmove512.c -# End Source File -# Begin Source File - -SOURCE=.\bmove_upp.c -# End Source File -# Begin Source File - -SOURCE=".\ctype-big5.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-bin.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-czech.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-euc_kr.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-extra.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-gb2312.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-gbk.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-latin1.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-mb.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-simple.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-sjis.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-tis620.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-ucs2.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-ujis.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-utf8.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-win1250ch.c" -# End Source File -# Begin Source File - -SOURCE=.\ctype.c -# End Source File -# Begin Source File - -SOURCE=.\int2str.c -# End Source File -# Begin Source File - -SOURCE=.\is_prefix.c -# End Source File -# Begin Source File - -SOURCE=.\llstr.c -# End Source File -# Begin Source File - -SOURCE=.\longlong2str.c -# End Source File -# Begin Source File - -SOURCE=.\my_strtoll10.c -# End Source File -# Begin Source File - -SOURCE=.\my_vsnprintf.c -# End Source File -# Begin Source File - -SOURCE=.\r_strinstr.c -# End Source File -# Begin Source File - -SOURCE=.\str2int.c -# End Source File -# Begin Source File - -SOURCE=.\strcend.c -# End Source File -# Begin Source File - -SOURCE=.\strend.c -# End Source File -# Begin Source File - -SOURCE=.\strfill.c -# End Source File -# Begin Source File - -SOURCE=.\strmake.c -# End Source File -# Begin Source File - -SOURCE=.\strmov.c -# End Source File -# Begin Source File - -SOURCE=.\strnmov.c -# End Source File -# Begin Source File - -SOURCE=.\strtod.c -# End Source File -# Begin Source File - -SOURCE=.\strtol.c -# End Source File -# Begin Source File - -SOURCE=.\strtoll.c -# End Source File -# Begin Source File - -SOURCE=.\strtoul.c -# End Source File -# Begin Source File - -SOURCE=.\strtoull.c -# End Source File -# Begin Source File - -SOURCE=.\strxmov.c -# End Source File -# Begin Source File - -SOURCE=.\strxnmov.c -# End Source File -# Begin Source File - -SOURCE=.\str_alloc.c -# End Source File -# Begin Source File - -SOURCE=.\xml.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/strings/noMASM/strings.dsw b/VC++Files/strings/noMASM/strings.dsw deleted file mode 100644 index 63fc3706c19..00000000000 --- a/VC++Files/strings/noMASM/strings.dsw +++ /dev/null @@ -1,28 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "strings"=".\strings.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### diff --git a/VC++Files/strings/strings.dsp b/VC++Files/strings/strings.dsp deleted file mode 100644 index 714359c5570..00000000000 --- a/VC++Files/strings/strings.dsp +++ /dev/null @@ -1,283 +0,0 @@ -# Microsoft Developer Studio Project File - Name="strings" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=strings - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "strings.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "strings.mak" CFG="strings - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "strings - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "strings - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "strings - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_release\strings.lib" - -!ELSEIF "$(CFG)" == "strings - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_debug\strings.lib" - -!ENDIF - -# Begin Target - -# Name "strings - Win32 Release" -# Name "strings - Win32 Debug" -# Begin Source File - -SOURCE=.\bchange.c -# End Source File -# Begin Source File - -SOURCE=.\bcmp.c -# End Source File -# Begin Source File - -SOURCE=.\bfill.c -# End Source File -# Begin Source File - -SOURCE=.\bmove512.c -# End Source File -# Begin Source File - -SOURCE=.\bmove_upp.c -# End Source File -# Begin Source File - -SOURCE=".\ctype-big5.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-bin.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-cp932.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-czech.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-eucjpms.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-euc_kr.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-extra.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-gb2312.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-gbk.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-latin1.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-mb.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-simple.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-sjis.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-tis620.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-uca.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-ucs2.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-ujis.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-utf8.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-win1250ch.c" -# End Source File -# Begin Source File - -SOURCE=.\ctype.c -# End Source File -# Begin Source File - -SOURCE=.\decimal.c -# End Source File -# Begin Source File - -SOURCE=.\int2str.c -# End Source File -# Begin Source File - -SOURCE=.\is_prefix.c -# End Source File -# Begin Source File - -SOURCE=.\llstr.c -# End Source File -# Begin Source File - -SOURCE=.\longlong2str.c -# End Source File -# Begin Source File - -SOURCE=.\my_strtoll10.c -# End Source File -# Begin Source File - -SOURCE=.\my_vsnprintf.c -# End Source File -# Begin Source File - -SOURCE=.\r_strinstr.c -# End Source File -# Begin Source File - -SOURCE=.\str2int.c -# End Source File -# Begin Source File - -SOURCE=.\strcend.c -# End Source File -# Begin Source File - -SOURCE=.\strend.c -# End Source File -# Begin Source File - -SOURCE=.\strfill.c -# End Source File -# Begin Source File - -SOURCE=.\strmake.c -# End Source File -# Begin Source File - -SOURCE=.\strmov.c -# End Source File -# Begin Source File - -SOURCE=.\strnmov.c -# End Source File -# Begin Source File - -SOURCE=.\strtod.c -# End Source File -# Begin Source File - -SOURCE=.\strtol.c -# End Source File -# Begin Source File - -SOURCE=.\strtoll.c -# End Source File -# Begin Source File - -SOURCE=.\strtoul.c -# End Source File -# Begin Source File - -SOURCE=.\strtoull.c -# End Source File -# Begin Source File - -SOURCE=.\strxmov.c -# End Source File -# Begin Source File - -SOURCE=.\strxnmov.c -# End Source File -# Begin Source File - -SOURCE=.\str_alloc.c -# End Source File -# Begin Source File - -SOURCE=.\xml.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/strings/strings.dsw b/VC++Files/strings/strings.dsw deleted file mode 100644 index 63fc3706c19..00000000000 --- a/VC++Files/strings/strings.dsw +++ /dev/null @@ -1,28 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "strings"=".\strings.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### diff --git a/VC++Files/strings/strings.vcproj b/VC++Files/strings/strings.vcproj deleted file mode 100644 index 9712217f742..00000000000 --- a/VC++Files/strings/strings.vcproj +++ /dev/null @@ -1,1053 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/strings/strings_ia64.dsp b/VC++Files/strings/strings_ia64.dsp deleted file mode 100644 index 0ccb4f62928..00000000000 --- a/VC++Files/strings/strings_ia64.dsp +++ /dev/null @@ -1,282 +0,0 @@ -# Microsoft Developer Studio Project File - Name="strings" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=strings - WinIA64 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "strings.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "strings.mak" CFG="strings - WinIA64 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "strings - WinIA64 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "strings - WinIA64 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "strings - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_release\strings.lib" - -!ELSEIF "$(CFG)" == "strings - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN64" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /GF /I "../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_debug\strings.lib" - -!ENDIF - -# Begin Target - -# Name "strings - WinIA64 Release" -# Name "strings - WinIA64 Debug" -# Begin Source File - -SOURCE=.\bchange.c -# End Source File -# Begin Source File - -SOURCE=.\bcmp.c -# End Source File -# Begin Source File - -SOURCE=.\bfill.c -# End Source File -# Begin Source File - -SOURCE=.\bmove512.c -# End Source File -# Begin Source File - -SOURCE=.\bmove_upp.c -# End Source File -# Begin Source File - -SOURCE=".\ctype-big5.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-bin.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-cp932.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-czech.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-cp932.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-euc_kr.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-eucjpms.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-extra.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-gb2312.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-gbk.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-latin1.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-mb.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-simple.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-sjis.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-tis620.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-uca.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-ucs2.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-ujis.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-utf8.c" -# End Source File -# Begin Source File - -SOURCE=".\ctype-win1250ch.c" -# End Source File -# Begin Source File - -SOURCE=.\ctype.c -# End Source File -# Begin Source File - -SOURCE=.\int2str.c -# End Source File -# Begin Source File - -SOURCE=.\is_prefix.c -# End Source File -# Begin Source File - -SOURCE=.\llstr.c -# End Source File -# Begin Source File - -SOURCE=.\longlong2str.c -# End Source File -# Begin Source File - -SOURCE=.\my_strtoll10.c -# End Source File -# Begin Source File - -SOURCE=.\my_vsnprintf.c -# End Source File -# Begin Source File - -SOURCE=.\r_strinstr.c -# End Source File -# Begin Source File - -SOURCE=.\str2int.c -# End Source File -# Begin Source File - -SOURCE=.\strcend.c -# End Source File -# Begin Source File - -SOURCE=.\strend.c -# End Source File -# Begin Source File - -SOURCE=.\strfill.c -# End Source File -# Begin Source File - -SOURCE=.\strmake.c -# End Source File -# Begin Source File - -SOURCE=.\strmov.c -# End Source File -# Begin Source File - -SOURCE=.\strnmov.c -# End Source File -# Begin Source File - -SOURCE=.\strtod.c -# End Source File -# Begin Source File - -SOURCE=.\strtol.c -# End Source File -# Begin Source File - -SOURCE=.\strtoll.c -# End Source File -# Begin Source File - -SOURCE=.\strtoul.c -# End Source File -# Begin Source File - -SOURCE=.\strtoull.c -# End Source File -# Begin Source File - -SOURCE=.\strxmov.c -# End Source File -# Begin Source File - -SOURCE=.\strxnmov.c -# End Source File -# Begin Source File - -SOURCE=.\str_alloc.c -# End Source File -# Begin Source File - -SOURCE=.\xml.c -# End Source File -# End Target -# End Project diff --git a/VC++Files/test1/mysql_thr.c b/VC++Files/test1/mysql_thr.c deleted file mode 100644 index a1ac09f2784..00000000000 --- a/VC++Files/test1/mysql_thr.c +++ /dev/null @@ -1,256 +0,0 @@ -/* Testing of connecting to MySQL from X threads */ - -#include -#include -#include -#include -#include - -#define TEST_COUNT 20 - -/***************************************************************************** -** The following is to emulate the posix thread interface -*****************************************************************************/ - -typedef HANDLE pthread_t; -typedef struct thread_attr { - DWORD dwStackSize ; - DWORD dwCreatingFlag ; - int priority ; -} pthread_attr_t ; - -typedef struct { int dummy; } pthread_condattr_t; -typedef unsigned int uint; - -typedef struct { - uint waiting; - HANDLE semaphore; -} pthread_cond_t; - -typedef CRITICAL_SECTION pthread_mutex_t; - -#define pthread_mutex_init(A,B) InitializeCriticalSection(A) -#define pthread_mutex_lock(A) (EnterCriticalSection(A),0) -#define pthread_mutex_unlock(A) LeaveCriticalSection(A) -#define pthread_mutex_destroy(A) DeleteCriticalSection(A) -#define pthread_handler_t unsigned __cdecl -typedef unsigned (__cdecl *pthread_handler)(void *); -#define pthread_self() GetCurrentThread() - -static unsigned int thread_count; -static pthread_cond_t COND_thread_count; -static pthread_mutex_t LOCK_thread_count; - -pthread_mutex_t THR_LOCK_malloc,THR_LOCK_open,THR_LOCK_keycache, - THR_LOCK_lock,THR_LOCK_isam; - -/* -** We have tried to use '_beginthreadex' instead of '_beginthread' here -** but in this case the program leaks about 512 characters for each -** created thread ! -*/ - -int pthread_create(pthread_t *thread_id, pthread_attr_t *attr, - pthread_handler func, void *param) -{ - HANDLE hThread; - - hThread=(HANDLE)_beginthread(func, - attr->dwStackSize ? attr->dwStackSize : - 65535,param); - if ((long) hThread == -1L) - { - return(errno ? errno : -1); - } - *thread_id=hThread; - return(0); -} - -void pthread_exit(unsigned A) -{ - _endthread(); -} - -/* -** The following simple implementation of conds works as long as -** only one thread uses pthread_cond_wait at a time. -** This is coded very carefully to work with thr_lock. -*/ - -/***************************************************************************** -** The following is a simple implementation of posix conditions -*****************************************************************************/ - -int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr) -{ - cond->waiting=0; - cond->semaphore=CreateSemaphore(NULL,0,0x7FFFFFFF,(char*) 0); - if (!cond->semaphore) - return ENOMEM; - return 0; -} - -int pthread_cond_destroy(pthread_cond_t *cond) -{ - return CloseHandle(cond->semaphore) ? 0 : EINVAL; -} - -int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) -{ - InterlockedIncrement(&cond->waiting); - LeaveCriticalSection(mutex); - WaitForSingleObject(cond->semaphore,INFINITE); - InterlockedDecrement(&cond->waiting); - EnterCriticalSection(mutex); - return 0 ; -} - -int pthread_cond_signal(pthread_cond_t *cond) -{ - long prev_count; - if (cond->waiting) - ReleaseSemaphore(cond->semaphore,1,&prev_count); - return 0; -} - -int pthread_attr_init(pthread_attr_t *connect_att) -{ - connect_att->dwStackSize = 0; - connect_att->dwCreatingFlag = 0; - connect_att->priority = 0; - return 0; -} - -int pthread_attr_setstacksize(pthread_attr_t *connect_att,DWORD stack) -{ - connect_att->dwStackSize=stack; - return 0; -} - -int pthread_attr_setprio(pthread_attr_t *connect_att,int priority) -{ - connect_att->priority=priority; - return 0; -} - -int pthread_attr_destroy(pthread_attr_t *connect_att) -{ - return 0; -} - -/* from my_pthread.c */ - -#ifndef REMOVE_BUG - -__declspec(thread) int THR_KEY_my_errno; - -int _my_errno(void) -{ - return THR_KEY_my_errno; -} -#endif - - -/***************************************************************************** -** The test program -*****************************************************************************/ - -pthread_handler_t test_thread(void *arg) -{ - MYSQL mysql; - MYSQL_RES *res; - - mysql_init(&mysql); - if (!mysql_real_connect(&mysql,NULL,0,0,NULL,0,NULL,0)) - { - fprintf(stderr,"Couldn't connect to engine!\n%s\n\n",mysql_error(&mysql)); - perror(""); - goto end; - } - mysql.reconnect= 1; - if (mysql_query(&mysql,"select 1") < 0) - { - fprintf(stderr,"Query failed (%s)\n",mysql_error(&mysql)); - goto end; - } - if (!(res=mysql_store_result(&mysql))) - { - fprintf(stderr,"Couldn't get result from query failed\n", - mysql_error(&mysql)); - goto end; - } - mysql_free_result(res); - -end: - - Sleep(1000); /* Win32 sleep */ - mysql_close(&mysql); - - pthread_mutex_lock(&LOCK_thread_count); - thread_count--; - pthread_cond_signal(&COND_thread_count); /* Tell main we are ready */ - pthread_mutex_unlock(&LOCK_thread_count); - pthread_exit(0); - return 0; -} - -int main(int argc,char **argv) -{ - pthread_t tid; - pthread_attr_t thr_attr; - int i,error; - - if ((error=pthread_cond_init(&COND_thread_count,NULL))) - { - fprintf(stderr,"Got error: %d from pthread_cond_init (errno: %d)", - error,errno); - exit(1); - } - pthread_mutex_init(&LOCK_thread_count,NULL); - if ((error=pthread_attr_init(&thr_attr))) - { - fprintf(stderr,"Got error: %d from pthread_attr_init (errno: %d)", - error,errno); - exit(1); - } - if ((error=pthread_attr_setstacksize(&thr_attr,65536L))) - { - fprintf(stderr,"Got error: %d from pthread_attr_setstacksize (errno: %d)", - error,errno); - exit(1); - } - - printf("Init ok. Creating %d threads\n",TEST_COUNT); - - for (i=1 ; i <= TEST_COUNT ; i++) - { - int *param= &i; - if ((error=pthread_mutex_lock(&LOCK_thread_count))) - { - fprintf(stderr,"\nGot error: %d from pthread_mutex_lock (errno: %d)", - error,errno); - exit(1); - } - if ((error=pthread_create(&tid,&thr_attr,test_thread,(void*) param))) - { - fprintf(stderr,"\nGot error: %d from pthread_create (errno: %d)\n", - error,errno); - pthread_mutex_unlock(&LOCK_thread_count); - exit(1); - } - thread_count++; - pthread_mutex_unlock(&LOCK_thread_count); - } - - if ((error=pthread_mutex_lock(&LOCK_thread_count))) - fprintf(stderr,"\nGot error: %d from pthread_mutex_lock\n",error); - while (thread_count) - { - if ((error=pthread_cond_wait(&COND_thread_count,&LOCK_thread_count))) - fprintf(stderr,"\nGot error: %d from pthread_cond_wait\n",error); - } - pthread_mutex_unlock(&LOCK_thread_count); - pthread_attr_destroy(&thr_attr); - printf("\nend\n"); - return 0; -} diff --git a/VC++Files/test1/test1.dsp b/VC++Files/test1/test1.dsp deleted file mode 100644 index e3be8f7a315..00000000000 --- a/VC++Files/test1/test1.dsp +++ /dev/null @@ -1,102 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test1" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test1 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test1.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test1.mak" CFG="test1 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test1 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test1 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "test1 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /W3 /O2 /I "../include" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test1 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 libmysql.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\lib_debug" -# SUBTRACT LINK32 /incremental:no - -!ENDIF - -# Begin Target - -# Name "test1 - Win32 Release" -# Name "test1 - Win32 Debug" -# Begin Source File - -SOURCE=.\mysql_thr.c - -!IF "$(CFG)" == "test1 - Win32 Release" - -# ADD CPP /MT - -!ELSEIF "$(CFG)" == "test1 - Win32 Debug" - -!ENDIF - -# End Source File -# End Target -# End Project diff --git a/VC++Files/test1/test1.vcproj b/VC++Files/test1/test1.vcproj deleted file mode 100644 index 6a850f7b2e3..00000000000 --- a/VC++Files/test1/test1.vcproj +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/test1/test1_ia64.dsp b/VC++Files/test1/test1_ia64.dsp deleted file mode 100644 index 6e283ac0224..00000000000 --- a/VC++Files/test1/test1_ia64.dsp +++ /dev/null @@ -1,104 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test1" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test1 - WinIA64 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test1_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test1_ia64.mak" CFG="test1 - WinIA64 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test1 - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test1 - WinIA64 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test1 - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Zi /O2 /I "../include" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 ..\lib_release\libmysql.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:console /machine:IA64 - -!ELSEIF "$(CFG)" == "test1 - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../include" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64 -# ADD LINK32 libmysql.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /debug /libpath:"..\lib_debug" /machine:IA64 -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "test1 - WinIA64 Release" -# Name "test1 - WinIA64 Debug" -# Begin Source File - -SOURCE=.\mysql_thr.c - -!IF "$(CFG)" == "test1 - WinIA64 Release" - -# ADD CPP /MT /Zi /O2 /G2 /EHsc /Wp64 /Zm600 - -!ELSEIF "$(CFG)" == "test1 - WinIA64 Debug" - -!ENDIF - -# End Source File -# End Target -# End Project diff --git a/VC++Files/tests/mysql_client_test.dsp b/VC++Files/tests/mysql_client_test.dsp deleted file mode 100644 index 7d821b45f2b..00000000000 --- a/VC++Files/tests/mysql_client_test.dsp +++ /dev/null @@ -1,94 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysql_client_test" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysql_client_test - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysql_client_test.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysql_client_test.mak" CFG="mysql_client_test - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysql_client_test - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "mysql_client_test - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysql_client_test - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir ".\Debug" -# PROP BASE Intermediate_Dir ".\Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir ".\Debug" -# PROP Intermediate_Dir ".\Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /I "../include" /I "../" /Z7 /W3 /Od /G6 /D "_DEBUG" /D "_WINDOWS" /D "SAFE_MUTEX" /D "USE_TLS" /D "MYSQL_CLIENT" /D "__WIN__" /D "_WIN32" /Fp".\Debug/mysql_client_test.pch" /Fo".\Debug/" /Fd".\Debug/" /GZ /FD /c /GX -# ADD CPP /nologo /MTd /I "../include" /I "../" /Z7 /W3 /Od /G6 /D "_DEBUG" /D "_WINDOWS" /D "SAFE_MUTEX" /D "USE_TLS" /D "MYSQL_CLIENT" /D "__WIN__" /D "_WIN32" /Fp".\Debug/mysql_client_test.pch" /Fo".\Debug/" /Fd".\Debug/" /GZ /FD /c /GX -# ADD BASE MTL /nologo /tlb".\Debug\mysql_client_test.tlb" /win32 -# ADD MTL /nologo /tlb".\Debug\mysql_client_test.tlb" /win32 -# ADD BASE RSC /l 1033 -# ADD RSC /l 1033 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib ..\extra\yassl\Debug\yassl.lib /nologo /out:"..\client_debug\mysql_client_test.exe" /incremental:yes /libpath:"..\lib_debug\" /debug /pdb:".\Debug\mysql_client_test.pdb" /pdbtype:sept /map:".\Debug\mysql_client_test.map" /subsystem:console -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib ..\extra\yassl\Debug\yassl.lib /nologo /out:"..\client_debug\mysql_client_test.exe" /incremental:yes /libpath:"..\lib_debug\" /debug /pdb:".\Debug\mysql_client_test.pdb" /pdbtype:sept /map:".\Debug\mysql_client_test.map" /subsystem:console - -!ELSEIF "$(CFG)" == "mysql_client_test - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir ".\Release" -# PROP BASE Intermediate_Dir ".\Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir ".\Release" -# PROP Intermediate_Dir ".\Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /I "../include" /I "../" /W3 /Ob1 /G6 /D "DBUG_OFF" /D "_WINDOWS" /D "SAFE_MUTEX" /D "USE_TLS" /D "MYSQL_CLIENT" /D "__WIN__" /D "_WIN32" /GF /Gy /Fp".\Release/mysql_client_test.pch" /Fo".\Release/" /Fd".\Release/" /FD /c /GX -# ADD CPP /nologo /MTd /I "../include" /I "../" /W3 /Ob1 /G6 /D "DBUG_OFF" /D "_WINDOWS" /D "SAFE_MUTEX" /D "USE_TLS" /D "MYSQL_CLIENT" /D "__WIN__" /D "_WIN32" /GF /Gy /Fp".\Release/mysql_client_test.pch" /Fo".\Release/" /Fd".\Release/" /FD /c /GX -# ADD BASE MTL /nologo /tlb".\Release\mysql_client_test.tlb" /win32 -# ADD MTL /nologo /tlb".\Release\mysql_client_test.tlb" /win32 -# ADD BASE RSC /l 1033 -# ADD RSC /l 1033 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib Ws2_32.lib mysqlclient.lib mysys.lib regex.lib ..\extra\yassl\Release\yassl.lib /nologo /out:"..\client_release\mysql_client_test.exe" /incremental:no /libpath:"..\lib_release\" /pdb:".\Release\mysql_client_test.pdb" /pdbtype:sept /subsystem:console -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib Ws2_32.lib mysqlclient.lib mysys.lib regex.lib ..\extra\yassl\Release\yassl.lib /nologo /out:"..\client_release\mysql_client_test.exe" /incremental:no /libpath:"..\lib_release\" /pdb:".\Release\mysql_client_test.pdb" /pdbtype:sept /subsystem:console - -!ENDIF - -# Begin Target - -# Name "mysql_client_test - Win32 Debug" -# Name "mysql_client_test - Win32 Release" -# Begin Source File - -SOURCE=mysql_client_test.c -# End Source File -# End Target -# End Project - diff --git a/VC++Files/tests/mysql_client_test.vcproj b/VC++Files/tests/mysql_client_test.vcproj deleted file mode 100644 index 89a9b71e60a..00000000000 --- a/VC++Files/tests/mysql_client_test.vcproj +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/tests/mysql_client_test_ia64.dsp b/VC++Files/tests/mysql_client_test_ia64.dsp deleted file mode 100644 index f9dfbe5f027..00000000000 --- a/VC++Files/tests/mysql_client_test_ia64.dsp +++ /dev/null @@ -1,87 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysql_client_test" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysql_client_test - WinIA64 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysql_client_test_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysql_client_test_ia64.mak" CFG="mysql_client_test - WinIA64 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysql_client_test - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir ".\Release" -# PROP BASE Intermediate_Dir ".\Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir ".\Release" -# PROP Intermediate_Dir ".\Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE MTL /nologo /tlb".\Release\mysql_client_test.tlb" /win32 -# ADD MTL /nologo /tlb".\Release\mysql_client_test.tlb" /win32 -# ADD BASE CPP /nologo /G6 /MTd /W3 /GX /Ob1 /Gy /I "../include" /I "../" /D "DBUG_OFF" /D "_WINDOWS" /D "SAFE_MUTEX" /D "USE_TLS" /D "MYSQL_CLIENT" /D "__WIN__" /D "_WIN32" /GF /c -# ADD CPP /nologo /G6 /MTd /W3 /GX /Ob1 /Gy /I "../include" /I "../" /D "DBUG_OFF" /D "_WINDOWS" /D "SAFE_MUTEX" /D "USE_TLS" /D "MYSQL_CLIENT" /D "__WIN__" /D "_WIN32" /GF /c -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /subsystem:console /out:"..\mysql_client_test.exe" /machine:IA64 -# SUBTRACT BASE LINK32 /pdb:none -# ADD LINK32 ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\libmysql.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib Ws2_32.lib bufferoverflowU.lib /nologo /subsystem:console /nodefaultlib /out:"..\mysql_client_test.exe" /machine:IA64 /machine:IA64 -# SUBTRACT LINK32 /pdb:none -# Begin Target - -# Name "mysql_client_test - WinIA64 Release" -# Begin Source File - -SOURCE=mysql_client_test.c -DEP_CPP_MYSQL=\ - "..\include\config-netware.h"\ - "..\include\config-os2.h"\ - "..\include\config-win.h"\ - "..\include\errmsg.h"\ - "..\include\m_ctype.h"\ - "..\include\m_string.h"\ - "..\include\my_alloc.h"\ - "..\include\my_config.h"\ - "..\include\my_dbug.h"\ - "..\include\my_dir.h"\ - "..\include\my_getopt.h"\ - "..\include\my_global.h"\ - "..\include\my_list.h"\ - "..\include\my_pthread.h"\ - "..\include\my_sys.h"\ - "..\include\mysql.h"\ - "..\include\mysql_com.h"\ - "..\include\mysql_time.h"\ - "..\include\mysql_version.h"\ - "..\include\raid.h"\ - "..\include\t_ctype.h"\ - "..\include\typelib.h"\ - -# End Source File -# End Target -# End Project diff --git a/VC++Files/thr_insert_test/thr_insert_test.dsp b/VC++Files/thr_insert_test/thr_insert_test.dsp deleted file mode 100644 index 11028b926d1..00000000000 --- a/VC++Files/thr_insert_test/thr_insert_test.dsp +++ /dev/null @@ -1,109 +0,0 @@ -# Microsoft Developer Studio Project File - Name="thr_insert_test" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Application" 0x0101 - -CFG=thr_insert_test - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "thr_insert_test.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "thr_insert_test.mak" CFG="thr_insert_test - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "thr_insert_test - Win32 Release" (based on "Win32 (x86) Application") -!MESSAGE "thr_insert_test - Win32 Debug" (based on "Win32 (x86) Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "thr_insert_test - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /GX- /O2 /I "../include" /I "../" /D "NDEBUG" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/hr_insert_test.exe" /libpath:"..\lib_release\\" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "thr_insert_test - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /G6 /MTd /W3 /Gm /GX- /ZI /Od /I "../include" /I "../" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:"debug/mysqldump.pdb" /debug /machine:I386 /out:"../client_debug/thr_insert_test.exe" /pdbtype:sept /libpath:"..\lib_debug\\" -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "thr_insert_test - Win32 Release" -# Name "thr_insert_test - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\tests\thr_insert_test.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/thr_test/thr_test.c b/VC++Files/thr_test/thr_test.c deleted file mode 100644 index efb9ea27ba7..00000000000 --- a/VC++Files/thr_test/thr_test.c +++ /dev/null @@ -1,250 +0,0 @@ -/* Testing of thread creation to find memory allocation bug -** This is coded to use as few extern functions as possible! -** -** The program must be compiled to be multithreaded ! -** -** The problem is that when this program is run it will allocate more and more -** memory, so there is a memory leak in the thread handling. The problem is how -** to avoid is ! -** -** It looks like the bug is that the std library doesn't free thread -** specific variables if one uses a thread variable. -** If one compiles this program with -DREMOVE_BUG -** there is no memory leaks anymore! -** -** This program is tested with Microsofts VC++ 5.0, but BC5.2 is also -** reported to have this bug. -*/ - -#include -#include -#include - -#define TEST_COUNT 100000 - -/***************************************************************************** -** The following is to emulate the posix thread interface -*****************************************************************************/ - -typedef HANDLE pthread_t; -typedef struct thread_attr { - DWORD dwStackSize ; - DWORD dwCreatingFlag ; - int priority ; -} pthread_attr_t ; -typedef struct { int dummy; } pthread_condattr_t; -typedef struct { - unsigned int msg; - pthread_t thread; - DWORD thread_id; -} pthread_cond_t; -typedef CRITICAL_SECTION pthread_mutex_t; - -#define pthread_mutex_init(A,B) InitializeCriticalSection(A) -#define pthread_mutex_lock(A) (EnterCriticalSection(A),0) -#define pthread_mutex_unlock(A) LeaveCriticalSection(A) -#define pthread_mutex_destroy(A) DeleteCriticalSection(A) -#define pthread_handler_t unsigned __cdecl -typedef unsigned (__cdecl *pthread_handler)(void *); -#define pthread_self() GetCurrentThread() - -static unsigned int thread_count; -static pthread_cond_t COND_thread_count; -static pthread_mutex_t LOCK_thread_count; - -pthread_mutex_t THR_LOCK_malloc,THR_LOCK_open,THR_LOCK_keycache, - THR_LOCK_lock,THR_LOCK_isam; -/* -** We have tried to use '_beginthreadex' instead of '_beginthread' here -** but in this case the program leaks about 512 characters for each -** created thread ! -*/ - -int pthread_create(pthread_t *thread_id, pthread_attr_t *attr, - pthread_handler func, void *param) -{ - HANDLE hThread; - - hThread=(HANDLE)_beginthread(func, - attr->dwStackSize ? attr->dwStackSize : - 65535,param); - if ((long) hThread == -1L) - { - return(errno ? errno : -1); - } - *thread_id=hThread; - return(0); -} - -void pthread_exit(unsigned A) -{ - _endthread(); -} - -/* -** The following simple implementation of conds works as long as -** only one thread uses pthread_cond_wait at a time. -** This is coded very carefully to work with thr_lock. -*/ - -static unsigned int WIN32_WAIT_SIGNAL= 30000; /* Start message to use */ - -int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr) -{ - cond->msg=WIN32_WAIT_SIGNAL++; - cond->thread=(pthread_t) pthread_self(); /* For global conds */ -//IRENA - cond->thread_id=GetCurrentThreadId(); - return 0; -} - - -int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) -{ - MSG msg ; - unsigned int msgCode=cond->msg; - - cond->thread=(pthread_t) pthread_self(); -//IRENA -//??? cond->thread_id=GetCurrentThreadId(); - //VOID(ReleaseMutex(*mutex)); - - LeaveCriticalSection(mutex); - do - { - WaitMessage() ; - if (!PeekMessage(&msg, NULL, 1, 65534,PM_REMOVE)) - { - return errno=GetLastError() ; - } - } while (msg.message != msgCode) ; - EnterCriticalSection(mutex); - return 0 ; -} - - -int pthread_cond_signal(pthread_cond_t *cond) -{ - - if (!PostThreadMessage(cond->thread_id, cond->msg, 0,0)) - { - return errno=GetLastError() ; - } - return 0 ; -} - -int pthread_attr_init(pthread_attr_t *connect_att) -{ - connect_att->dwStackSize = 0; - connect_att->dwCreatingFlag = 0; - connect_att->priority = 0; - return 0; -} - -int pthread_attr_setstacksize(pthread_attr_t *connect_att,DWORD stack) -{ - connect_att->dwStackSize=stack; - return 0; -} - -int pthread_attr_setprio(pthread_attr_t *connect_att,int priority) -{ - connect_att->priority=priority; - return 0; -} - -int pthread_attr_destroy(pthread_attr_t *connect_att) -{ - return 0; -} - -/* from my_pthread.c */ - -#ifndef REMOVE_BUG - -__declspec(thread) int THR_KEY_my_errno; - -int _my_errno(void) -{ - return THR_KEY_my_errno; -} -#endif - -/***************************************************************************** -** The test program -*****************************************************************************/ - -pthread_handler_t test_thread(void *arg) -{ - pthread_mutex_lock(&LOCK_thread_count); - thread_count--; - pthread_cond_signal(&COND_thread_count); /* Tell main we are ready */ - pthread_mutex_unlock(&LOCK_thread_count); - pthread_exit(0); - return 0; -} - -int main(int argc,char **argv) -{ - pthread_t tid; - pthread_attr_t thr_attr; - int i,error; - - if ((error=pthread_cond_init(&COND_thread_count,NULL))) - { - fprintf(stderr,"Got error: %d from pthread_cond_init (errno: %d)", - error,errno); - exit(1); - } - pthread_mutex_init(&LOCK_thread_count,NULL); - if ((error=pthread_attr_init(&thr_attr))) - { - fprintf(stderr,"Got error: %d from pthread_attr_init (errno: %d)", - error,errno); - exit(1); - } - if ((error=pthread_attr_setstacksize(&thr_attr,65536L))) - { - fprintf(stderr,"Got error: %d from pthread_attr_setstacksize (errno: %d)", - error,errno); - exit(1); - } - - printf("Init ok. Creating %d threads\n",TEST_COUNT); - for (i=1 ; i <= TEST_COUNT ; i++) - { - int *param= &i; - if ((i % 100) == 0) - { - printf("%8d",i); - fflush(stdout); - } - if ((error=pthread_mutex_lock(&LOCK_thread_count))) - { - fprintf(stderr,"\nGot error: %d from pthread_mutex_lock (errno: %d)", - error,errno); - exit(1); - } - if ((error=pthread_create(&tid,&thr_attr,test_thread,(void*) param))) - { - fprintf(stderr,"\nGot error: %d from pthread_create (errno: %d)\n", - error,errno); - pthread_mutex_unlock(&LOCK_thread_count); - exit(1); - } - thread_count++; - pthread_mutex_unlock(&LOCK_thread_count); - - if ((error=pthread_mutex_lock(&LOCK_thread_count))) - fprintf(stderr,"\nGot error: %d from pthread_mutex_lock\n",error); - while (thread_count) - { - if ((error=pthread_cond_wait(&COND_thread_count,&LOCK_thread_count))) - fprintf(stderr,"\nGot error: %d from pthread_cond_wait\n",error); - } - pthread_mutex_unlock(&LOCK_thread_count); - } - pthread_attr_destroy(&thr_attr); - printf("\nend\n"); - return 0; -} diff --git a/VC++Files/thr_test/thr_test.dsp b/VC++Files/thr_test/thr_test.dsp deleted file mode 100644 index 0d2b8e0d24b..00000000000 --- a/VC++Files/thr_test/thr_test.dsp +++ /dev/null @@ -1,104 +0,0 @@ -# Microsoft Developer Studio Project File - Name="thr_test" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=thr_test - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "thr_test.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "thr_test.mak" CFG="thr_test - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "thr_test - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "thr_test - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "thr_test - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x40b /d "NDEBUG" -# ADD RSC /l 0x40b /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# SUBTRACT LINK32 /nodefaultlib - -!ELSEIF "$(CFG)" == "thr_test - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /D "__WIN32__" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /FD /c -# SUBTRACT CPP /Fr /YX -# ADD BASE RSC /l 0x40b /d "_DEBUG" -# ADD RSC /l 0x40b /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "thr_test - Win32 Release" -# Name "thr_test - Win32 Debug" -# Begin Source File - -SOURCE=.\thr_test.c - -!IF "$(CFG)" == "thr_test - Win32 Release" - -# ADD CPP /G5 - -!ELSEIF "$(CFG)" == "thr_test - Win32 Debug" - -# ADD CPP /FAcs - -!ENDIF - -# End Source File -# End Target -# End Project diff --git a/VC++Files/thr_test/thr_test.vcproj b/VC++Files/thr_test/thr_test.vcproj deleted file mode 100644 index ede9bd04de8..00000000000 --- a/VC++Files/thr_test/thr_test.vcproj +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/thr_test/thr_test_ia64.dsp b/VC++Files/thr_test/thr_test_ia64.dsp deleted file mode 100644 index 90b6ca02648..00000000000 --- a/VC++Files/thr_test/thr_test_ia64.dsp +++ /dev/null @@ -1,106 +0,0 @@ -# Microsoft Developer Studio Project File - Name="thr_test" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=thr_test - WinIA64 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "thr_test_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "thr_test_ia64.mak" CFG="thr_test - WinIA64 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "thr_test - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "thr_test - WinIA64 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "thr_test - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x40b /d "NDEBUG" -# ADD RSC /l 0x40b /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:console /machine:IA64 -# SUBTRACT LINK32 /nodefaultlib - -!ELSEIF "$(CFG)" == "thr_test - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../include" /D "__WIN64__" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /Fr /YX -# ADD BASE RSC /l 0x40b /d "_DEBUG" -# ADD RSC /l 0x40b /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IA64 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /debug /machine:IA64 - -!ENDIF - -# Begin Target - -# Name "thr_test - WinIA64 Release" -# Name "thr_test - WinIA64 Debug" -# Begin Source File - -SOURCE=.\thr_test.c - -!IF "$(CFG)" == "thr_test - WinIA64 Release" - -# ADD CPP /G5 /Zi /O2 /G2 /EHsc /Wp64 /Zm600 - -!ELSEIF "$(CFG)" == "thr_test - WinIA64 Debug" - -# ADD CPP /Zi /Od /FAcs /G2 /EHsc /Wp64 /Zm600 - -!ENDIF - -# End Source File -# End Target -# End Project diff --git a/VC++Files/vio/vio.dsp b/VC++Files/vio/vio.dsp deleted file mode 100644 index f7971823937..00000000000 --- a/VC++Files/vio/vio.dsp +++ /dev/null @@ -1,108 +0,0 @@ -# Microsoft Developer Studio Project File - Name="vio" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=vio - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "vio.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "vio.mak" CFG="vio - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "vio - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "vio - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "vio - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../extra/yassl/include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_release\vio.lib" - -!ELSEIF "$(CFG)" == "vio - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /I "../extra/yassl/include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_SYMDIR" /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_debug\vio.lib" - -!ENDIF - -# Begin Target - -# Name "vio - Win32 Release" -# Name "vio - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\vio.c -# End Source File -# Begin Source File - -SOURCE=.\viosocket.c -# End Source File -# Begin Source File - -SOURCE=.\viossl.c -# End Source File -# Begin Source File - -SOURCE=.\viosslfactories.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# End Target -# End Project diff --git a/VC++Files/vio/vio.vcproj b/VC++Files/vio/vio.vcproj deleted file mode 100644 index 3f50c1546fb..00000000000 --- a/VC++Files/vio/vio.vcproj +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/vio/vio_ia64.dsp b/VC++Files/vio/vio_ia64.dsp deleted file mode 100644 index 9dd9a0b9eb6..00000000000 --- a/VC++Files/vio/vio_ia64.dsp +++ /dev/null @@ -1,108 +0,0 @@ -# Microsoft Developer Studio Project File - Name="vio" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=vio - WinIA64 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "vio.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "vio.mak" CFG="vio - WinIA64 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "vio - WinIA64 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "vio - WinIA64 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "vio - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WinIA64" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /I "../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "_IA64_" /D "WinIA64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_release\vio.lib" - -!ELSEIF "$(CFG)" == "vio - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WinIA64" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /I "../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_SYMDIR" /D "_IA64_" /D "WinIA64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_debug\vio.lib" - -!ENDIF - -# Begin Target - -# Name "vio - WinIA64 Release" -# Name "vio - WinIA64 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\vio.c -# End Source File -# Begin Source File - -SOURCE=.\viosocket.c -# End Source File -# Begin Source File - -SOURCE=.\viossl.c -# End Source File -# Begin Source File - -SOURCE=.\viosslfactories.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# End Target -# End Project diff --git a/VC++Files/zlib/contrib/asm386/zlibvc.dsp b/VC++Files/zlib/contrib/asm386/zlibvc.dsp deleted file mode 100644 index 63d8fee6511..00000000000 --- a/VC++Files/zlib/contrib/asm386/zlibvc.dsp +++ /dev/null @@ -1,651 +0,0 @@ -# Microsoft Developer Studio Project File - Name="zlibvc" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 -# TARGTYPE "Win32 (ALPHA) Dynamic-Link Library" 0x0602 - -CFG=zlibvc - Win32 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "zlibvc.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "zlibvc.mak" CFG="zlibvc - Win32 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "zlibvc - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "zlibvc - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "zlibvc - Win32 ReleaseAxp" (based on\ - "Win32 (ALPHA) Dynamic-Link Library") -!MESSAGE "zlibvc - Win32 ReleaseWithoutAsm" (based on\ - "Win32 (x86) Dynamic-Link Library") -!MESSAGE "zlibvc - Win32 ReleaseWithoutCrtdll" (based on\ - "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir ".\Release" -# PROP BASE Intermediate_Dir ".\Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir ".\Release" -# PROP Intermediate_Dir ".\Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -CPP=cl.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /D "DYNAMIC_CRC_TABLE" /D "ASMV" /FAcs /FR /FD /c -# SUBTRACT CPP /YX -MTL=midl.exe -# ADD BASE MTL /nologo /D "NDEBUG" /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -RSC=rc.exe -# ADD BASE RSC /l 0x40c /d "NDEBUG" -# ADD RSC /l 0x40c /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 gvmat32.obj kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib crtdll.lib /nologo /subsystem:windows /dll /map /machine:I386 /nodefaultlib /out:".\Release\zlib.dll" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir ".\Debug" -# PROP BASE Intermediate_Dir ".\Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir ".\Debug" -# PROP Intermediate_Dir ".\Debug" -# PROP Target_Dir "" -CPP=cl.exe -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /FD /c -# SUBTRACT CPP /YX -MTL=midl.exe -# ADD BASE MTL /nologo /D "_DEBUG" /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -RSC=rc.exe -# ADD BASE RSC /l 0x40c /d "_DEBUG" -# ADD RSC /l 0x40c /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:".\Debug\zlib.dll" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "zlibvc__" -# PROP BASE Intermediate_Dir "zlibvc__" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "zlibvc__" -# PROP Intermediate_Dir "zlibvc__" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -CPP=cl.exe -# ADD BASE CPP /nologo /MT /Gt0 /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /D "DYNAMIC_CRC_TABLE" /FAcs /FR /YX /FD /c -# ADD CPP /nologo /MT /Gt0 /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /D "DYNAMIC_CRC_TABLE" /FAcs /FR /FD /c -# SUBTRACT CPP /YX -RSC=rc.exe -# ADD BASE RSC /l 0x40c /d "NDEBUG" -# ADD RSC /l 0x40c /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 crtdll.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /map /machine:ALPHA /nodefaultlib /out:".\Release\zlib.dll" -# SUBTRACT BASE LINK32 /pdb:none -# ADD LINK32 crtdll.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /map /machine:ALPHA /nodefaultlib /out:"zlibvc__\zlib.dll" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "zlibvc_0" -# PROP BASE Intermediate_Dir "zlibvc_0" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "zlibvc_0" -# PROP Intermediate_Dir "zlibvc_0" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -CPP=cl.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /D "DYNAMIC_CRC_TABLE" /FAcs /FR /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /D "DYNAMIC_CRC_TABLE" /FAcs /FR /FD /c -# SUBTRACT CPP /YX -MTL=midl.exe -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -RSC=rc.exe -# ADD BASE RSC /l 0x40c /d "NDEBUG" -# ADD RSC /l 0x40c /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib crtdll.lib /nologo /subsystem:windows /dll /map /machine:I386 /nodefaultlib /out:".\Release\zlib.dll" -# SUBTRACT BASE LINK32 /pdb:none -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib crtdll.lib /nologo /subsystem:windows /dll /map /machine:I386 /nodefaultlib /out:".\zlibvc_0\zlib.dll" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "zlibvc_1" -# PROP BASE Intermediate_Dir "zlibvc_1" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "zlibvc_1" -# PROP Intermediate_Dir "zlibvc_1" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -CPP=cl.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /D "DYNAMIC_CRC_TABLE" /D "ASMV" /FAcs /FR /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_WIN32" /D "BUILD_ZLIBDLL" /D "ZLIB_DLL" /D "DYNAMIC_CRC_TABLE" /D "ASMV" /FAcs /FR /FD /c -# SUBTRACT CPP /YX -MTL=midl.exe -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -RSC=rc.exe -# ADD BASE RSC /l 0x40c /d "NDEBUG" -# ADD RSC /l 0x40c /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 gvmat32.obj kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib crtdll.lib /nologo /subsystem:windows /dll /map /machine:I386 /nodefaultlib /out:".\Release\zlib.dll" -# SUBTRACT BASE LINK32 /pdb:none -# ADD LINK32 gvmat32.obj kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib crtdll.lib /nologo /subsystem:windows /dll /map /machine:I386 /nodefaultlib /out:".\zlibvc_1\zlib.dll" -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "zlibvc - Win32 Release" -# Name "zlibvc - Win32 Debug" -# Name "zlibvc - Win32 ReleaseAxp" -# Name "zlibvc - Win32 ReleaseWithoutAsm" -# Name "zlibvc - Win32 ReleaseWithoutCrtdll" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90" -# Begin Source File - -SOURCE=.\adler32.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_ADLER=\ - ".\zconf.h"\ - ".\zlib.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\compress.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_COMPR=\ - ".\zconf.h"\ - ".\zlib.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\crc32.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_CRC32=\ - ".\zconf.h"\ - ".\zlib.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\deflate.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_DEFLA=\ - ".\deflate.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\gvmat32c.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\gzio.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_GZIO_=\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\infblock.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_INFBL=\ - ".\infblock.h"\ - ".\infcodes.h"\ - ".\inftrees.h"\ - ".\infutil.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\infcodes.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_INFCO=\ - ".\infblock.h"\ - ".\infcodes.h"\ - ".\inffast.h"\ - ".\inftrees.h"\ - ".\infutil.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\inffast.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_INFFA=\ - ".\infblock.h"\ - ".\infcodes.h"\ - ".\inffast.h"\ - ".\inftrees.h"\ - ".\infutil.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\inflate.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_INFLA=\ - ".\infblock.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\inftrees.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_INFTR=\ - ".\inftrees.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\infutil.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_INFUT=\ - ".\infblock.h"\ - ".\infcodes.h"\ - ".\inftrees.h"\ - ".\infutil.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\trees.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_TREES=\ - ".\deflate.h"\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\uncompr.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_UNCOM=\ - ".\zconf.h"\ - ".\zlib.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\unzip.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\zip.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\zlib.rc -# End Source File -# Begin Source File - -SOURCE=.\zlibvc.def -# End Source File -# Begin Source File - -SOURCE=.\zutil.c - -!IF "$(CFG)" == "zlibvc - Win32 Release" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 Debug" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseAxp" - -DEP_CPP_ZUTIL=\ - ".\zconf.h"\ - ".\zlib.h"\ - ".\zutil.h"\ - - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutAsm" - -!ELSEIF "$(CFG)" == "zlibvc - Win32 ReleaseWithoutCrtdll" - -!ENDIF - -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd" -# Begin Source File - -SOURCE=.\deflate.h -# End Source File -# Begin Source File - -SOURCE=.\infblock.h -# End Source File -# Begin Source File - -SOURCE=.\infcodes.h -# End Source File -# Begin Source File - -SOURCE=.\inffast.h -# End Source File -# Begin Source File - -SOURCE=.\inftrees.h -# End Source File -# Begin Source File - -SOURCE=.\infutil.h -# End Source File -# Begin Source File - -SOURCE=.\zconf.h -# End Source File -# Begin Source File - -SOURCE=.\zlib.h -# End Source File -# Begin Source File - -SOURCE=.\zutil.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/zlib/contrib/asm386/zlibvc.dsw b/VC++Files/zlib/contrib/asm386/zlibvc.dsw deleted file mode 100644 index 493cd870365..00000000000 --- a/VC++Files/zlib/contrib/asm386/zlibvc.dsw +++ /dev/null @@ -1,41 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "zlibstat"=.\zlibstat.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "zlibvc"=.\zlibvc.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/VC++Files/zlib/zlib.dsp b/VC++Files/zlib/zlib.dsp deleted file mode 100644 index 3a2e25fe2b0..00000000000 --- a/VC++Files/zlib/zlib.dsp +++ /dev/null @@ -1,204 +0,0 @@ -# Microsoft Developer Studio Project File - Name="zlib" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=zlib - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "zlib.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "zlib.mak" CFG="zlib - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "zlib - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "zlib - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "zlib - Win32 authent" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe - -!IF "$(CFG)" == "zlib - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_release\zlib.lib" - -!ELSEIF "$(CFG)" == "zlib - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /D "_DEBUG" /D "__WIN32__" /D "_WINDOWS" /FD /c -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_debug\zlib.lib" - -!ELSEIF "$(CFG)" == "zlib - Win32 authent" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "zlib___Win32_authent" -# PROP BASE Intermediate_Dir "zlib___Win32_authent" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "zlib___Win32_authent" -# PROP Intermediate_Dir "zlib___Win32_authent" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=xilink6.exe -lib -# ADD BASE LIB32 /nologo /out:"..\lib_release\zlib.lib" -# ADD LIB32 /nologo /out:"..\lib_release\zlib.lib" - -!ENDIF - -# Begin Target - -# Name "zlib - Win32 Release" -# Name "zlib - Win32 Debug" -# Name "zlib - Win32 authent" -# Begin Source File - -SOURCE=.\adler32.c -# End Source File -# Begin Source File - -SOURCE=.\compress.c -# End Source File -# Begin Source File - -SOURCE=.\crc32.c -# End Source File -# Begin Source File - -SOURCE=.\crc32.h -# End Source File -# Begin Source File - -SOURCE=.\deflate.c -# End Source File -# Begin Source File - -SOURCE=.\deflate.h -# End Source File -# Begin Source File - -SOURCE=.\gzio.c -# End Source File -# Begin Source File - -SOURCE=.\infback.c -# End Source File -# Begin Source File - -SOURCE=.\inffast.c -# End Source File -# Begin Source File - -SOURCE=.\inffast.h -# End Source File -# Begin Source File - -SOURCE=.\inffixed.h -# End Source File -# Begin Source File - -SOURCE=.\inflate.c -# End Source File -# Begin Source File - -SOURCE=.\inflate.h -# End Source File -# Begin Source File - -SOURCE=.\inftrees.h -# End Source File -# Begin Source File - -SOURCE=.\inftrees.c -# End Source File -# Begin Source File - -SOURCE=.\inftrees.h -# End Source File -# Begin Source File - -SOURCE=.\trees.c -# End Source File -# Begin Source File - -SOURCE=.\trees.h -# End Source File -# Begin Source File - -SOURCE=.\uncompr.c -# End Source File -# Begin Source File - -SOURCE=.\zconf.h -# End Source File -# Begin Source File - -SOURCE=.\zlib.h -# End Source File -# Begin Source File - -SOURCE=.\zutil.c -# End Source File -# Begin Source File - -SOURCE=.\zutil.h -# End Source File -# End Target -# End Project diff --git a/VC++Files/zlib/zlib.vcproj b/VC++Files/zlib/zlib.vcproj deleted file mode 100644 index ee17d915a1a..00000000000 --- a/VC++Files/zlib/zlib.vcproj +++ /dev/null @@ -1,483 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/VC++Files/zlib/zlib_ia64.dsp b/VC++Files/zlib/zlib_ia64.dsp deleted file mode 100644 index c8cb0f6a38b..00000000000 --- a/VC++Files/zlib/zlib_ia64.dsp +++ /dev/null @@ -1,204 +0,0 @@ -# Microsoft Developer Studio Project File - Name="zlib" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=zlib - WinIA64 authent -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "zlib.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "zlib.mak" CFG="zlib - WinIA64 authent" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "zlib - WinIA64 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "zlib - WinIA64 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "zlib - WinIA64 authent" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "zlib - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Zi /O2 /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_release\zlib.lib" - -!ELSEIF "$(CFG)" == "zlib - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN64" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Zi /Od /D "_DEBUG" /D "__WIN64__" /D "_WINDOWS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\lib_debug\zlib.lib" - -!ELSEIF "$(CFG)" == "zlib - WinIA64 authent" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "zlib___WinIA64_authent" -# PROP BASE Intermediate_Dir "zlib___WinIA64_authent" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "zlib___WinIA64_authent" -# PROP Intermediate_Dir "zlib___WinIA64_authent" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /MT /W3 /Zi /O2 /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\lib_release\zlib.lib" -# ADD LIB32 /nologo /out:"..\lib_release\zlib.lib" - -!ENDIF - -# Begin Target - -# Name "zlib - WinIA64 Release" -# Name "zlib - WinIA64 Debug" -# Name "zlib - WinIA64 authent" -# Begin Source File - -SOURCE=.\adler32.c -# End Source File -# Begin Source File - -SOURCE=.\compress.c -# End Source File -# Begin Source File - -SOURCE=.\crc32.c -# End Source File -# Begin Source File - -SOURCE=.\crc32.h -# End Source File -# Begin Source File - -SOURCE=.\deflate.c -# End Source File -# Begin Source File - -SOURCE=.\deflate.h -# End Source File -# Begin Source File - -SOURCE=.\gzio.c -# End Source File -# Begin Source File - -SOURCE=.\infback.c -# End Source File -# Begin Source File - -SOURCE=.\inffast.c -# End Source File -# Begin Source File - -SOURCE=.\inffast.h -# End Source File -# Begin Source File - -SOURCE=.\inffixed.h -# End Source File -# Begin Source File - -SOURCE=.\inflate.c -# End Source File -# Begin Source File - -SOURCE=.\inflate.h -# End Source File -# Begin Source File - -SOURCE=.\inftrees.c -# End Source File -# Begin Source File - -SOURCE=.\inftrees.h -# End Source File -# Begin Source File - -SOURCE=.\inftrees.h -# End Source File -# Begin Source File - -SOURCE=.\trees.c -# End Source File -# Begin Source File - -SOURCE=.\trees.h -# End Source File -# Begin Source File - -SOURCE=.\uncompr.c -# End Source File -# Begin Source File - -SOURCE=.\zconf.h -# End Source File -# Begin Source File - -SOURCE=.\zlib.h -# End Source File -# Begin Source File - -SOURCE=.\zutil.c -# End Source File -# Begin Source File - -SOURCE=.\zutil.h -# End Source File -# End Target -# End Project -- cgit v1.2.1 From ae90c20278270d75bc43be0817d173916e44095b Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Jun 2006 14:03:17 -0400 Subject: BUG#19309: Crash if double procedural alter mysql-test/r/partition.result: New test case mysql-test/t/partition.test: New test case sql/sql_table.cc: Added new routine to make copy of create_info struct. This struct is manipulated during alter table and create table but needs to remain the same for repeated execution in stored procedures or prepared statements. --- mysql-test/r/partition.result | 8 ++++++++ mysql-test/t/partition.test | 14 ++++++++++++++ sql/sql_table.cc | 39 +++++++++++++++++++++++++++++++++++++-- 3 files changed, 59 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/partition.result b/mysql-test/r/partition.result index 025d9f46412..d8cb474fefc 100644 --- a/mysql-test/r/partition.result +++ b/mysql-test/r/partition.result @@ -1,5 +1,13 @@ drop table if exists t1; create table t1 (a int) +partition by list (a) +(partition p0 values in (1)); +create procedure pz() +alter table t1 engine = myisam; +call pz(); +call pz(); +drop table t1; +create table t1 (a int) engine = csv partition by list (a) (partition p0 values in (null)); diff --git a/mysql-test/t/partition.test b/mysql-test/t/partition.test index a7f2e1c0b3e..6658064c094 100644 --- a/mysql-test/t/partition.test +++ b/mysql-test/t/partition.test @@ -9,6 +9,20 @@ drop table if exists t1; --enable_warnings +# +# Bug 19309 Partitions: Crash if double procedural alter +# +create table t1 (a int) +partition by list (a) +(partition p0 values in (1)); + +create procedure pz() +alter table t1 engine = myisam; + +call pz(); +call pz(); +drop table t1; + # # Bug 19307: CSV engine crashes # diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 4bc84521f2a..55afd7a5a04 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -3001,6 +3001,31 @@ void sp_prepare_create_field(THD *thd, create_field *sql_field) } +/* + Copy HA_CREATE_INFO struct + SYNOPSIS + copy_create_info() + lex_create_info The create_info struct setup by parser + RETURN VALUES + > 0 A pointer to a copy of the lex_create_info + 0 Memory allocation error + DESCRIPTION + Allocate memory for copy of HA_CREATE_INFO structure from parser + to ensure we can reuse the parser struct in stored procedures + and prepared statements. +*/ + +static HA_CREATE_INFO *copy_create_info(HA_CREATE_INFO *lex_create_info) +{ + HA_CREATE_INFO *create_info; + if (!(create_info= (HA_CREATE_INFO*)sql_alloc(sizeof(HA_CREATE_INFO)))) + mem_alloc_error(sizeof(HA_CREATE_INFO)); + else + memcpy((void*)create_info, (void*)lex_create_info, sizeof(HA_CREATE_INFO)); + return create_info; +} + + /* Create a table @@ -3030,7 +3055,7 @@ void sp_prepare_create_field(THD *thd, create_field *sql_field) bool mysql_create_table_internal(THD *thd, const char *db, const char *table_name, - HA_CREATE_INFO *create_info, + HA_CREATE_INFO *lex_create_info, List &fields, List &keys,bool internal_tmp_table, uint select_field_count) @@ -3040,10 +3065,15 @@ bool mysql_create_table_internal(THD *thd, const char *alias; uint db_options, key_count; KEY *key_info_buffer; + HA_CREATE_INFO *create_info; handler *file; bool error= TRUE; DBUG_ENTER("mysql_create_table_internal"); + if (!(create_info= copy_create_info(lex_create_info))) + { + DBUG_RETURN(TRUE); + } /* Check for duplicate fields and check type of table to create */ if (!fields.elements) { @@ -4889,7 +4919,7 @@ static uint compare_tables(TABLE *table, List *create_list, */ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, - HA_CREATE_INFO *create_info, + HA_CREATE_INFO *lex_create_info, TABLE_LIST *table_list, List &fields, List &keys, uint order_num, ORDER *order, @@ -4907,6 +4937,7 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, ulonglong next_insert_id; uint db_create_options, used_fields; handlerton *old_db_type, *new_db_type; + HA_CREATE_INFO *create_info; uint need_copy_table= 0; bool no_table_reopen= FALSE, varchar= FALSE; #ifdef WITH_PARTITION_STORAGE_ENGINE @@ -4932,6 +4963,10 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, LINT_INIT(index_drop_buffer); thd->proc_info="init"; + if (!(create_info= copy_create_info(lex_create_info))) + { + DBUG_RETURN(TRUE); + } table_name=table_list->table_name; alias= (lower_case_table_names == 2) ? table_list->alias : table_name; db=table_list->db; -- cgit v1.2.1 From 548b9aeff332060ffd8c5fb29dab7125f97c7979 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Jun 2006 22:09:58 +0400 Subject: Fixed bug#18175: The nest_level counter wasn't decremented for union parts which resulted in a wrong error message. The nest_level counter indicates the depth of nesting for a subselect. It is needed to properly resolve aggregate functions in nested subselects. Obviously it shouldn't be incremented for UNION parts because they have the same level of nesting. This counter was incremented by 1 in the mysql_new_select() function for any new select and wasn't decremented for UNION parts. This resulted in wrongly reported error messages. Now the nest_level counter is decremented by 1 for any union part. mysql-test/t/union.test: Added test case for the bug#18175: The nest_level counter wasn't decremented for union parts which resulted in a wrong error message. mysql-test/r/union.result: Added test case for the bug#18175: The nest_level counter wasn't decremented for union parts which resulted in a wrong error message. sql/sql_yacc.yy: Fixed bug#18175: The nest_level counter wasn't decremented for union parts which resulted in a wrong error message. Now the nest_level counter is decremented by 1 for any union part. --- mysql-test/r/union.result | 45 ++++++++++++++++++++++++++++++++++++++++++++ mysql-test/t/union.test | 48 +++++++++++++++++++++++++++++++++++++++++++++++ sql/sql_yacc.yy | 2 ++ 3 files changed, 95 insertions(+) diff --git a/mysql-test/r/union.result b/mysql-test/r/union.result index eb9e10aa58d..426387e04f5 100644 --- a/mysql-test/r/union.result +++ b/mysql-test/r/union.result @@ -1306,3 +1306,48 @@ id 5 99 drop table t1; +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)); +avg(1) +NULL diff --git a/mysql-test/t/union.test b/mysql-test/t/union.test index 692f1f509fa..7dfe4ac482f 100644 --- a/mysql-test/t/union.test +++ b/mysql-test/t/union.test @@ -793,3 +793,51 @@ select id from t1 union all select 99 order by 1; drop table t1; # End of 4.1 tests + +# +# Bug#18175: Union select over 129 tables with a sum function fails. +# +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)) union +(select avg(1)) union (select avg(1)) union (select avg(1)); + diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index b2dbc517fa4..4f3cf4d8554 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -8752,6 +8752,8 @@ union_list: yyerror(ER(ER_SYNTAX_ERROR)); YYABORT; } + /* This counter shouldn't be incremented for UNION parts */ + Lex->nest_level--; if (mysql_new_select(lex, 0)) YYABORT; mysql_init_select(lex); -- cgit v1.2.1 From 33f38c317ad32820d8a0f7bcad665e442f643977 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Jun 2006 21:43:29 +0200 Subject: don't call plugins' configure scripts manually, use AC_CONFIG_SUBDIRS don't add CFLAGS/CXXFLAGS to ./configure command line in config.status but _do_ add them before calling plugins' configure scripts config/ac-macros/plugins.m4: don't call plugins' configure scripts manually, use AC_CONFIG_SUBDIRS --- config/ac-macros/plugins.m4 | 2 +- configure.in | 29 +++++++---------------------- 2 files changed, 8 insertions(+), 23 deletions(-) diff --git a/config/ac-macros/plugins.m4 b/config/ac-macros/plugins.m4 index 4bf9292547d..cfc5f8dbcbe 100644 --- a/config/ac-macros/plugins.m4 +++ b/config/ac-macros/plugins.m4 @@ -406,7 +406,7 @@ dnl Although this is "pretty", it breaks libmysqld build mysql_plugin_dirs="$mysql_plugin_dirs $6" m4_syscmd(test -f "$6/configure") ifelse(m4_sysval, 0, - [other_configures="$other_configures $6/configure"], + [AC_CONFIG_SUBDIRS($6)], [AC_CONFIG_FILES($6/Makefile)] ) ifelse(m4_substr($6, 0, 8), [storage/], diff --git a/configure.in b/configure.in index be6f3c8eaec..120863dafbd 100644 --- a/configure.in +++ b/configure.in @@ -2474,10 +2474,6 @@ AC_SUBST(netware_dir) AC_SUBST(linked_netware_sources) AM_CONDITIONAL(HAVE_NETWARE, test "$netware_dir" = "netware") -# Ensure that table handlers gets all modifications to CFLAGS/CXXFLAGS -export CC CXX CFLAGS CXXFLAGS LD LDFLAGS AR -ac_configure_args="$ac_configure_args CFLAGS='$CFLAGS' CXXFLAGS='$CXXFLAGS'" - if test "$with_server" = "yes" -o "$THREAD_SAFE_CLIENT" != "no" then AC_DEFINE([THREAD], [1], @@ -2527,22 +2523,6 @@ AC_SUBST(CC) AC_SUBST(GXX) # Set configuration options for make_binary_distribution - -CONF_ARGS= -case $SYSTEM_TYPE in - *netware*) - MAKE_BINARY_DISTRIBUTION_OPTIONS=--no-strip - CONF_ARGS=--host="$MACHINE_TYPE-$SYSTEM_TYPE" - ;; - *) - MAKE_BINARY_DISTRIBUTION_OPTIONS= - ;; -esac - -for CONF in $other_configures; do - (cd `dirname $CONF`; ./`basename $CONF` $CONF_ARGS --build=$build_alias) -done - AC_SUBST(MAKE_BINARY_DISTRIBUTION_OPTIONS) # Output results @@ -2559,8 +2539,13 @@ AC_CONFIG_FILES(Makefile extra/Makefile mysys/Makefile dnl support-files/MacOSX/Makefile mysql-test/Makefile dnl mysql-test/ndb/Makefile netware/Makefile dnl include/mysql_version.h plugin/Makefile win/Makefile) - AC_CONFIG_COMMANDS([default], , test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h) - AC_OUTPUT + +AC_CONFIG_COMMANDS([default], , test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h) + +# Ensure that table handlers gets all modifications to CFLAGS/CXXFLAGS +AC_CONFIG_COMMANDS_POST(ac_configure_args="$ac_configure_args CFLAGS='$CFLAGS' CXXFLAGS='$CXXFLAGS'") + +AC_OUTPUT echo echo "MySQL has a Web site at http://www.mysql.com/ which carries details on the" -- cgit v1.2.1 From 6dd40f3e0ab74846d7793cc32065b4c2aa7741f5 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Jun 2006 15:56:47 -0400 Subject: BUG#20397: Crash when alter table t1 engine = x; Review fixes sql/sql_table.cc: Review fixes --- sql/sql_table.cc | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 58d50727000..7e25c4848ca 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -4993,17 +4993,20 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, old_db_type= table->s->db_type; if (!create_info->db_type) { - if (create_info->used_fields & HA_CREATE_USED_ENGINE) + if (table->part_info && + create_info->used_fields & HA_CREATE_USED_ENGINE) { /* This case happens when the user specified ENGINE = x where x is a non-existing storage engine - We clear the flag and treat it the same way - as if no storage engine was specified. + We set create_info->db_type to default_engine_type + to ensure we don't change underlying engine type + due to a erroneously given engine name. */ - create_info->used_fields^= HA_CREATE_USED_ENGINE; + create_info->db_type= table->part_info->default_engine_type; } - create_info->db_type= old_db_type; + else + create_info->db_type= old_db_type; } #ifdef WITH_PARTITION_STORAGE_ENGINE -- cgit v1.2.1 From 9668198e14d575a12dd889a601233924b1f13479 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Jun 2006 22:02:26 +0200 Subject: BUG#19940: Add Valgrind suppression for false alarm report. --- mysql-test/valgrind.supp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/mysql-test/valgrind.supp b/mysql-test/valgrind.supp index 3c2ac1a7ea5..65c5a82db36 100644 --- a/mysql-test/valgrind.supp +++ b/mysql-test/valgrind.supp @@ -292,3 +292,18 @@ futex(utime) fun:__lll_mutex_unlock_wake } + +# +# BUG#19940: NDB sends uninitialized parts of field buffers across the wire. +# This is "works as designed"; the uninitialized part is not used at the +# other end (but Valgrind cannot see this). +# +{ + bug19940 + Memcheck:Param + socketcall.sendto(msg) + fun:send + fun:_ZN15TCP_Transporter6doSendEv + fun:_ZN19TransporterRegistry11performSendEv + fun:_ZN19TransporterRegistry14forceSendCheckEi +} -- cgit v1.2.1 From 321947ab0f4e827354713955bffe8fb71e4c04df Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Jun 2006 18:24:33 -0400 Subject: BUG#19281: Auto-increment disappeared after create index mysql-test/r/partition_list.result: New test case mysql-test/t/partition_list.test: New test case sql/ha_partition.cc: Implement a proper update_create_info --- mysql-test/r/partition_list.result | 10 ++++++++++ mysql-test/t/partition_list.test | 12 ++++++++++++ sql/ha_partition.cc | 1 + 3 files changed, 23 insertions(+) diff --git a/mysql-test/r/partition_list.result b/mysql-test/r/partition_list.result index 26974e5221d..c722a3c6be3 100644 --- a/mysql-test/r/partition_list.result +++ b/mysql-test/r/partition_list.result @@ -191,3 +191,13 @@ SELECT COUNT(*) FROM t1 WHERE s1 < 3; COUNT(*) 2 DROP TABLE t1; +create table t1 (a int auto_increment primary key) +auto_increment=100 +partition by list (a) +(partition p0 values in (1, 100)); +create index inx on t1 (a); +insert into t1 values (null); +select * from t1; +a +100 +drop table t1; diff --git a/mysql-test/t/partition_list.test b/mysql-test/t/partition_list.test index 3e0eaa45f32..e243ec468e1 100644 --- a/mysql-test/t/partition_list.test +++ b/mysql-test/t/partition_list.test @@ -124,3 +124,15 @@ INSERT INTO t1 VALUES (1), (2), (3), (4), (5); SELECT COUNT(*) FROM t1 WHERE s1 < 3; DROP TABLE t1; +# +# Bug 19281 Partitions: Auto-increment value lost +# +create table t1 (a int auto_increment primary key) +auto_increment=100 +partition by list (a) +(partition p0 values in (1, 100)); +create index inx on t1 (a); +insert into t1 values (null); +select * from t1; +drop table t1; + diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index af0556f1e6f..eab46e96a1a 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -1581,6 +1581,7 @@ error: void ha_partition::update_create_info(HA_CREATE_INFO *create_info) { + m_file[0]->update_create_info(create_info); return; } -- cgit v1.2.1 From 40305d7a81863c6586611e1e7af6051554c53169 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 16 Jun 2006 02:52:17 +0200 Subject: After merge fixes --- sql/handler.cc | 2 ++ sql/sql_class.h | 5 +---- sql/sql_insert.cc | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/sql/handler.cc b/sql/handler.cc index ce96817695a..0895c6cf454 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -53,6 +53,8 @@ st_plugin_int *hton2plugin[MAX_HA]; static handlerton *installed_htons[128]; +#define BITMAP_STACKBUF_SIZE (128/8) + KEY_CREATE_INFO default_key_create_info= { HA_KEY_ALG_UNDEF, 0, {NullS,0} }; /* static functions defined in this file */ diff --git a/sql/sql_class.h b/sql/sql_class.h index 702c8fee671..866ee7b7a27 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -1611,14 +1611,11 @@ public: List &select_fields,enum_duplicates duplic, bool ignore) :select_insert (NULL, NULL, &select_fields, 0, 0, duplic, ignore), create_table(table), extra_fields(&fields_par),keys(&keys_par), - create_info(create_info_par), - lock(0) + create_info(create_info_par) {} int prepare(List &list, SELECT_LEX_UNIT *u); -#ifdef HAVE_ROW_BASED_REPLICATION void binlog_show_create_table(TABLE **tables, uint count); -#endif void store_values(List &values); void send_error(uint errcode,const char *err); bool send_eof(); diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 175d69de244..a6b4221f0a7 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -2772,7 +2772,7 @@ select_create::prepare(List &values, SELECT_LEX_UNIT *u) unit= u; if (!(table= create_table_from_items(thd, create_info, create_table, extra_fields, keys, &values, &lock, - &hook_ptr))) + hook_ptr))) DBUG_RETURN(-1); // abort() deletes table if (table->s->fields < values.elements) -- cgit v1.2.1 From 59d38c15bc8c010fcff11cdf72f497fd957a1ef6 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Jun 2006 22:46:52 -0400 Subject: Fixing false alarm errors on windows build from a clean clone. win/build-vs71.bat: Don't trigger 'could not find the file specified' errors when running from a clean clone. win/build-vs8.bat: Don't trigger 'could not find the file specified' errors when running from a clean clone. --- win/build-vs71.bat | 2 +- win/build-vs8.bat | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/win/build-vs71.bat b/win/build-vs71.bat index 46f3bc32f6e..959067695c5 100644 --- a/win/build-vs71.bat +++ b/win/build-vs71.bat @@ -1,6 +1,6 @@ @echo off -del cmakecache.txt +if exist cmakecache.txt del cmakecache.txt copy win\vs71cache.txt cmakecache.txt cmake -G "Visual Studio 7 .NET 2003" copy cmakecache.txt win\vs71cache.txt diff --git a/win/build-vs8.bat b/win/build-vs8.bat index 349c3e78628..d9c06241a9b 100644 --- a/win/build-vs8.bat +++ b/win/build-vs8.bat @@ -1,6 +1,6 @@ @echo off -del cmakecache.txt +if exist cmakecache.txt del cmakecache.txt copy win\vs8cache.txt cmakecache.txt cmake -G "Visual Studio 8 2005" copy cmakecache.txt win\vs8cache.txt -- cgit v1.2.1 From b47705abf385274f3a5f4844c3496c1b22b15db6 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Jun 2006 20:29:05 -0700 Subject: Post_merges fixes. --- mysql-test/r/func_group.result | 2 -- 1 file changed, 2 deletions(-) diff --git a/mysql-test/r/func_group.result b/mysql-test/r/func_group.result index 9f6189b558f..f693c6190d5 100644 --- a/mysql-test/r/func_group.result +++ b/mysql-test/r/func_group.result @@ -846,8 +846,6 @@ id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 2 DROP TABLE t1; CREATE TABLE t1 (id int , b varchar(512), INDEX(b(250))) COLLATE latin1_bin; -Warnings: -Warning 1246 Converting column 'b' from CHAR to TEXT INSERT INTO t1 VALUES (1,CONCAT(REPEAT('_', 250), "qq")), (1,CONCAT(REPEAT('_', 250), "zz")), (1,CONCAT(REPEAT('_', 250), "aa")), (1,CONCAT(REPEAT('_', 250), "ff")); -- cgit v1.2.1 From 1b1cb63d6979974a8b51b2fc7ea5ead82e83b850 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 16 Jun 2006 09:02:03 +0200 Subject: Bug#18775 - Temporary table from alter table visible to other threads The intermediate (not temporary) files of the new table during ALTER TABLE was visible for SHOW TABLES. These intermediate files are copies of the original table with the changes done by ALTER TABLE. After all the data is copied over from the original table, these files are renamed to the original tables file names. So they are not temporary files. They persist after ALTER TABLE, but just with another name. Normal GRANT checking takes place for the intermediate table. Everyone who can see the original table (and hence the final table) can also see the intermediate table. But noone else. In 5.0 the intermediate files are invisible for SHOW TABLES because all file names beginning with "#sql" were suppressed. In 5.1 temporary files are created in TMPDIR, so that they don't appear in the database directories. Also in 5.1 a translation between table names and file names is done. The tmp_file_prefix on file level is now "@0023sql". The suppression of files starting with tmp_file_prefix is still in place, but still only files beginning with "#sql" were suppressed. I do now translate tmp_file_prefix from table name to file name before comparing it with the files in a directory. This suppresses the intermediate files again. No test case. The test case looks so that a reasonable big table is altered while a second thread runs SHOW TABLES. This in itself would be possible to do, but on slow machines it would add too much time to the test suite, while on fast machines the ALTER TABLE might have finished before SHOW TABLES looks at the directory. Even if there might be a good balance for todays machines, one day the test would become void as the intermediate table would not be seen even with the bug in place. I added a test script to the bug report. It can easily be changed so that it uses a table size that is appropriate for the test machine. sql/sql_show.cc: Bug#18775 - Temporary table from alter table visible to other threads Translating tmp_file_prefix to filename before comparison. --- sql/sql_show.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 83f64e2c9c9..4c9b24c83d8 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -438,6 +438,7 @@ mysql_find_files(THD *thd,List *files, const char *db,const char *path, uint col_access=thd->col_access; #endif TABLE_LIST table_list; + char tbbuff[FN_REFLEN]; DBUG_ENTER("mysql_find_files"); if (wild && !wild[0]) @@ -454,6 +455,8 @@ mysql_find_files(THD *thd,List *files, const char *db,const char *path, DBUG_RETURN(-1); } + VOID(tablename_to_filename(tmp_file_prefix, tbbuff, sizeof(tbbuff))); + for (i=0 ; i < (uint) dirp->number_off_files ; i++) { char uname[NAME_LEN*3+1]; /* Unencoded name */ @@ -491,7 +494,7 @@ mysql_find_files(THD *thd,List *files, const char *db,const char *path, { // Return only .frm files which aren't temp files. if (my_strcasecmp(system_charset_info, ext=fn_rext(file->name),reg_ext) || - is_prefix(file->name,tmp_file_prefix)) + is_prefix(file->name,tbbuff)) continue; *ext=0; VOID(filename_to_tablename(file->name, uname, sizeof(uname))); -- cgit v1.2.1 From 64c856c9393b5e51a715b88f41fb65ef70fb7e05 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 16 Jun 2006 09:49:18 +0200 Subject: Bug#14708: Inconsistent treatment of NULLs in LEFT JOINed FULLTEXT matching without index Don't rely on table->null_row when no index is used - it may be a multi-table search --- mysql-test/r/fulltext_left_join.result | 17 +++++++++++++++++ mysql-test/t/fulltext_left_join.test | 15 ++++++++++++++- sql/item_func.cc | 2 +- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/fulltext_left_join.result b/mysql-test/r/fulltext_left_join.result index f3dad290525..68a424fa3a5 100644 --- a/mysql-test/r/fulltext_left_join.result +++ b/mysql-test/r/fulltext_left_join.result @@ -50,3 +50,20 @@ venue_id venue_text dt name entity_id 1 a1 2003-05-23 19:30:00 aberdeen town hall 1 NULL a2 2003-05-23 19:30:00 NULL NULL drop table t1,t2; +create table t1 (id int not null primary key, d char(200) not null, e char(200)); +insert into t1 values (1, 'aword', null), (2, 'aword', 'bword'), (3, 'bword', null), (4, 'bword', 'aword'), (5, 'aword and bword', null); +select * from t1 where match(d, e) against ('+aword +bword' in boolean mode); +id d e +2 aword bword +4 bword aword +5 aword and bword NULL +create table t2 (m_id int not null, f char(200), key (m_id)); +insert into t2 values (1, 'bword'), (3, 'aword'), (5, ''); +select * from t1 left join t2 on m_id = id where match(d, e, f) against ('+aword +bword' in boolean mode); +id d e m_id f +1 aword NULL 1 bword +2 aword bword NULL NULL +3 bword NULL 3 aword +4 bword aword NULL NULL +5 aword and bword NULL 5 +drop table t1,t2; diff --git a/mysql-test/t/fulltext_left_join.test b/mysql-test/t/fulltext_left_join.test index 3bb1f0b7309..7c22f49ed8c 100644 --- a/mysql-test/t/fulltext_left_join.test +++ b/mysql-test/t/fulltext_left_join.test @@ -32,7 +32,7 @@ select match(t1.texte,t1.sujet,t1.motsclefs) against('droit' IN BOOLEAN MODE) drop table t1, t2; # -# Bug #484, reported by Stephen Brandon +# BUG#484, reported by Stephen Brandon # create table t1 (venue_id int(11) default null, venue_text varchar(255) default null, dt datetime default null) engine=myisam; @@ -45,4 +45,17 @@ select * from t1 left join t2 on (venue_id = entity_id and match(name) against(' select * from t1 left join t2 on (venue_id = entity_id and match(name) against('aberdeen')) where dt = '2003-05-23 19:30:00'; drop table t1,t2; +# +# BUG#14708 +# Inconsistent treatment of NULLs in LEFT JOINed FULLTEXT matching without index +# + +create table t1 (id int not null primary key, d char(200) not null, e char(200)); +insert into t1 values (1, 'aword', null), (2, 'aword', 'bword'), (3, 'bword', null), (4, 'bword', 'aword'), (5, 'aword and bword', null); +select * from t1 where match(d, e) against ('+aword +bword' in boolean mode); +create table t2 (m_id int not null, f char(200), key (m_id)); +insert into t2 values (1, 'bword'), (3, 'aword'), (5, ''); +select * from t1 left join t2 on m_id = id where match(d, e, f) against ('+aword +bword' in boolean mode); +drop table t1,t2; + # End of 4.1 tests diff --git a/sql/item_func.cc b/sql/item_func.cc index 4bdb62c6e7a..eaeacffad9f 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -4482,7 +4482,7 @@ double Item_func_match::val_real() if (ft_handler == NULL) DBUG_RETURN(-1.0); - if (table->null_row) /* NULL row from an outer join */ + if (key != NO_SUCH_KEY && table->null_row) /* NULL row from an outer join */ return 0.0; if (join_key) -- cgit v1.2.1 From dd285aac1b005866c3d3ae3d1a4e6e890f838d42 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 16 Jun 2006 14:05:58 +0500 Subject: after-merge fixes. mysql-test/r/rpl_log.result: after-merge fix. sql/ha_archive.cc: after-merge fix. sql/item_func.cc: after-merge fix. sql/sql_class.cc: after-merge fix. sql/sql_class.h: after-merge fix. --- mysql-test/r/rpl_log.result | 10 +++++----- sql/ha_archive.cc | 2 +- sql/item_func.cc | 2 +- sql/sql_class.cc | 4 ++++ sql/sql_class.h | 3 ++- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/mysql-test/r/rpl_log.result b/mysql-test/r/rpl_log.result index 6a41a9b9e02..6ee0eb283b5 100644 --- a/mysql-test/r/rpl_log.result +++ b/mysql-test/r/rpl_log.result @@ -107,11 +107,11 @@ reset master; set insert_id=5; insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); show binlog events; -Log_name Pos Event_type Server_id Orig_log_pos Info -slave-bin.000001 4 Start 2 4 Server ver: VERSION, Binlog ver: 3 -slave-bin.000001 79 Intvar 2 79 LAST_INSERT_ID=1 -slave-bin.000001 107 Intvar 2 107 INSERT_ID=5 -slave-bin.000001 135 Query 2 135 use `test`; insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()) +Log_name Pos Event_type Server_id End_log_pos Info +slave-bin.000001 4 Format_desc 2 98 Server ver: VERSION, Binlog ver: 4 +slave-bin.000001 98 Intvar 2 126 LAST_INSERT_ID=1 +slave-bin.000001 126 Intvar 2 154 INSERT_ID=5 +slave-bin.000001 154 Query 2 289 use `test`; insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()) select * from t1; a b 1 1 diff --git a/sql/ha_archive.cc b/sql/ha_archive.cc index bfb90b607ee..3885defb4d5 100644 --- a/sql/ha_archive.cc +++ b/sql/ha_archive.cc @@ -1131,7 +1131,7 @@ int ha_archive::end_bulk_insert() int ha_archive::delete_all_rows() { DBUG_ENTER("ha_archive::delete_all_rows"); - DBUG_RETURN(0); + DBUG_RETURN(HA_ERR_WRONG_COMMAND); } /* diff --git a/sql/item_func.cc b/sql/item_func.cc index 2c770bec1ad..c75480aaeae 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -3296,7 +3296,7 @@ longlong Item_func_last_insert_id::val_int() return value; // Avoid side effect of insert_id() } thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT); - return thd->insert_id(); + return thd->last_insert_id_used ? thd->current_insert_id : thd->insert_id(); } /* This function is just used to test speed of different functions */ diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 65fd4d3ac19..678048226af 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -2050,7 +2050,9 @@ void THD::reset_sub_statement_state(Sub_statement_state *backup, backup->enable_slow_log= enable_slow_log; backup->last_insert_id= last_insert_id; backup->next_insert_id= next_insert_id; + backup->current_insert_id= current_insert_id; backup->insert_id_used= insert_id_used; + backup->last_insert_id_used= last_insert_id_used; backup->clear_next_insert_id= clear_next_insert_id; backup->limit_found_rows= limit_found_rows; backup->examined_row_count= examined_row_count; @@ -2099,7 +2101,9 @@ void THD::restore_sub_statement_state(Sub_statement_state *backup) enable_slow_log= backup->enable_slow_log; last_insert_id= backup->last_insert_id; next_insert_id= backup->next_insert_id; + current_insert_id= backup->current_insert_id; insert_id_used= backup->insert_id_used; + last_insert_id_used= backup->last_insert_id_used; clear_next_insert_id= backup->clear_next_insert_id; limit_found_rows= backup->limit_found_rows; sent_row_count= backup->sent_row_count; diff --git a/sql/sql_class.h b/sql/sql_class.h index 0ddba0e6f05..2cfc9142453 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -1051,12 +1051,13 @@ class Sub_statement_state { public: ulonglong options; - ulonglong last_insert_id, next_insert_id; + ulonglong last_insert_id, next_insert_id, current_insert_id; ulonglong limit_found_rows; ha_rows cuted_fields, sent_row_count, examined_row_count; ulong client_capabilities; uint in_sub_stmt; bool enable_slow_log, insert_id_used, clear_next_insert_id; + bool last_insert_id_used; my_bool no_send_ok; SAVEPOINT *savepoints; }; -- cgit v1.2.1 From ee8a1a74e7d9e4e99be25dec4bd1b6fcb3387b21 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 16 Jun 2006 11:10:37 +0200 Subject: Fixes in tests for Replication/Backup Team Tree. mysql-test/extra/rpl_tests/rpl_truncate_helper.inc: Removing xid from test output mysql-test/r/rpl_truncate_7ndb.result: Result change. mysql-test/t/rpl_truncate_7ndb.test: Removing xid from test output --- mysql-test/extra/rpl_tests/rpl_truncate_helper.inc | 2 +- mysql-test/r/rpl_truncate_7ndb.result | 50 ++++++++-------------- mysql-test/t/rpl_truncate_7ndb.test | 2 +- 3 files changed, 20 insertions(+), 34 deletions(-) diff --git a/mysql-test/extra/rpl_tests/rpl_truncate_helper.inc b/mysql-test/extra/rpl_tests/rpl_truncate_helper.inc index 2306b746a86..1e485baca36 100644 --- a/mysql-test/extra/rpl_tests/rpl_truncate_helper.inc +++ b/mysql-test/extra/rpl_tests/rpl_truncate_helper.inc @@ -37,5 +37,5 @@ SELECT * FROM t1; connection master; DROP TABLE t1; --replace_result $SERVER_VERSION SERVER_VERSION ---replace_regex /table_id: [0-9]+/table_id: #/ +--replace_regex /\/\* xid=[0-9]+ \*\//\/* xid= *\// /table_id: [0-9]+/table_id: #/ SHOW BINLOG EVENTS; diff --git a/mysql-test/r/rpl_truncate_7ndb.result b/mysql-test/r/rpl_truncate_7ndb.result index b33f8f1ccaa..0e1b21d31aa 100644 --- a/mysql-test/r/rpl_truncate_7ndb.result +++ b/mysql-test/r/rpl_truncate_7ndb.result @@ -37,15 +37,8 @@ master-bin.000001 323 Table_map 1 93 table_id: # (cluster.apply_status) master-bin.000001 376 Write_rows 1 135 table_id: # master-bin.000001 418 Write_rows 1 182 table_id: # flags: STMT_END_F master-bin.000001 465 Query 1 530 COMMIT -master-bin.000001 530 Query 1 80 use `test`; TRUNCATE TABLE t1 -master-bin.000001 610 Query 1 679 use `test`; COMMIT -master-bin.000001 679 Query 1 743 BEGIN -master-bin.000001 743 Table_map 1 40 table_id: # (test.t1) -master-bin.000001 783 Table_map 1 93 table_id: # (cluster.apply_status) -master-bin.000001 836 Write_rows 1 135 table_id: # -master-bin.000001 878 Delete_rows 1 174 table_id: # flags: STMT_END_F -master-bin.000001 917 Query 1 982 COMMIT -master-bin.000001 982 Query 1 1058 use `test`; DROP TABLE t1 +master-bin.000001 530 Query 1 610 use `test`; TRUNCATE TABLE t1 +master-bin.000001 610 Query 1 686 use `test`; DROP TABLE t1 **** On Master **** CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB; INSERT INTO t1 VALUES (1,1), (2,2); @@ -80,26 +73,19 @@ master-bin.000001 323 Table_map 1 93 table_id: # (cluster.apply_status) master-bin.000001 376 Write_rows 1 135 table_id: # master-bin.000001 418 Write_rows 1 182 table_id: # flags: STMT_END_F master-bin.000001 465 Query 1 530 COMMIT -master-bin.000001 530 Query 1 80 use `test`; TRUNCATE TABLE t1 -master-bin.000001 610 Query 1 679 use `test`; COMMIT -master-bin.000001 679 Query 1 743 BEGIN -master-bin.000001 743 Table_map 1 40 table_id: # (test.t1) -master-bin.000001 783 Table_map 1 93 table_id: # (cluster.apply_status) -master-bin.000001 836 Write_rows 1 135 table_id: # -master-bin.000001 878 Delete_rows 1 174 table_id: # flags: STMT_END_F -master-bin.000001 917 Query 1 982 COMMIT -master-bin.000001 982 Query 1 1058 use `test`; DROP TABLE t1 -master-bin.000001 1058 Query 1 1175 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB -master-bin.000001 1175 Query 1 1239 BEGIN -master-bin.000001 1239 Table_map 1 40 table_id: # (test.t1) -master-bin.000001 1279 Table_map 1 93 table_id: # (cluster.apply_status) -master-bin.000001 1332 Write_rows 1 135 table_id: # -master-bin.000001 1374 Write_rows 1 182 table_id: # flags: STMT_END_F -master-bin.000001 1421 Query 1 1486 COMMIT -master-bin.000001 1486 Query 1 1550 BEGIN -master-bin.000001 1550 Table_map 1 40 table_id: # (test.t1) -master-bin.000001 1590 Table_map 1 93 table_id: # (cluster.apply_status) -master-bin.000001 1643 Write_rows 1 135 table_id: # -master-bin.000001 1685 Delete_rows 1 174 table_id: # flags: STMT_END_F -master-bin.000001 1724 Query 1 1789 COMMIT -master-bin.000001 1789 Query 1 1865 use `test`; DROP TABLE t1 +master-bin.000001 530 Query 1 610 use `test`; TRUNCATE TABLE t1 +master-bin.000001 610 Query 1 686 use `test`; DROP TABLE t1 +master-bin.000001 686 Query 1 803 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB +master-bin.000001 803 Query 1 867 BEGIN +master-bin.000001 867 Table_map 1 40 table_id: # (test.t1) +master-bin.000001 907 Table_map 1 93 table_id: # (cluster.apply_status) +master-bin.000001 960 Write_rows 1 135 table_id: # +master-bin.000001 1002 Write_rows 1 182 table_id: # flags: STMT_END_F +master-bin.000001 1049 Query 1 1114 COMMIT +master-bin.000001 1114 Query 1 1178 BEGIN +master-bin.000001 1178 Table_map 1 40 table_id: # (test.t1) +master-bin.000001 1218 Table_map 1 93 table_id: # (cluster.apply_status) +master-bin.000001 1271 Write_rows 1 135 table_id: # +master-bin.000001 1313 Delete_rows 1 174 table_id: # flags: STMT_END_F +master-bin.000001 1352 Query 1 1417 COMMIT +master-bin.000001 1417 Query 1 1493 use `test`; DROP TABLE t1 diff --git a/mysql-test/t/rpl_truncate_7ndb.test b/mysql-test/t/rpl_truncate_7ndb.test index 77ea303a17f..f4bbadbf718 100644 --- a/mysql-test/t/rpl_truncate_7ndb.test +++ b/mysql-test/t/rpl_truncate_7ndb.test @@ -38,7 +38,7 @@ SELECT * FROM t1 ORDER BY a,b; --echo **** On Master **** connection master; DROP TABLE t1; ---replace_regex /table_id: [0-9]+/table_id: #/ +--replace_regex /\/\* xid=[0-9]+ \*\//\/* xid= *\// /table_id: [0-9]+/table_id: #/ --replace_result $SERVER_VERSION SERVER_VERSION SHOW BINLOG EVENTS; -- cgit v1.2.1 From 0237d9b0af6c9ddc182fe9389d788a094608ec43 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 16 Jun 2006 12:17:20 +0200 Subject: String::set(double) and set(longlong) -> set_real() and set_int() fix Field::store(double) being used instead of store(longlong) NB: overloading functions is evil --- sql/field.cc | 10 +++++----- sql/item.cc | 16 ++++++++-------- sql/item_func.cc | 18 +++++++++--------- sql/item_strfunc.cc | 2 +- sql/item_sum.cc | 4 ++-- sql/item_timefunc.cc | 2 +- sql/log.cc | 18 +++++++++--------- sql/procedure.h | 10 +++++----- sql/protocol.cc | 4 ++-- sql/sp.cc | 14 +++++++------- sql/sql_acl.cc | 2 +- sql/sql_analyse.cc | 8 ++++---- sql/sql_analyse.h | 44 ++++++++++++++++++++++---------------------- sql/sql_show.cc | 2 +- sql/sql_string.cc | 4 ++-- sql/sql_string.h | 8 ++++---- 16 files changed, 83 insertions(+), 83 deletions(-) diff --git a/sql/field.cc b/sql/field.cc index b51e5b63779..6fc774e9806 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -4978,7 +4978,7 @@ int Field_time::store_time(TIME *ltime, timestamp_type type) (ltime->minute * 100 + ltime->second); if (ltime->neg) tmp= -tmp; - return Field_time::store((longlong) tmp); + return Field_time::store((longlong) tmp, TRUE); } @@ -4990,7 +4990,7 @@ int Field_time::store(double nr) if (nr > 8385959.0) { tmp=8385959L; - set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, + set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, nr, MYSQL_TIMESTAMP_TIME); error= 1; } @@ -7117,7 +7117,7 @@ int Field_blob::store(const char *from,uint length,CHARSET_INFO *cs) int Field_blob::store(double nr) { CHARSET_INFO *cs=charset(); - value.set(nr, 2, cs); + value.set_real(nr, 2, cs); return Field_blob::store(value.ptr(),(uint) value.length(), cs); } @@ -7125,7 +7125,7 @@ int Field_blob::store(double nr) int Field_blob::store(longlong nr, bool unsigned_val) { CHARSET_INFO *cs=charset(); - value.set(nr, unsigned_val, cs); + value.set_int(nr, unsigned_val, cs); return Field_blob::store(value.ptr(), (uint) value.length(), cs); } @@ -8216,7 +8216,7 @@ int Field_bit::store_decimal(const my_decimal *val) { int err= 0; longlong i= convert_decimal2longlong(val, 1, &err); - return test(err | store(i)); + return test(err | store(i, TRUE)); } diff --git a/sql/item.cc b/sql/item.cc index cb5bbab53a2..53797052788 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -61,7 +61,7 @@ Hybrid_type_traits::val_decimal(Hybrid_type *val, my_decimal *to) const String * Hybrid_type_traits::val_str(Hybrid_type *val, String *to, uint8 decimals) const { - to->set(val->real, decimals, &my_charset_bin); + to->set_real(val->real, decimals, &my_charset_bin); return to; } @@ -202,7 +202,7 @@ String *Item::val_string_from_real(String *str) double nr= val_real(); if (null_value) return 0; /* purecov: inspected */ - str->set(nr,decimals, &my_charset_bin); + str->set_real(nr,decimals, &my_charset_bin); return str; } @@ -212,7 +212,7 @@ String *Item::val_string_from_int(String *str) longlong nr= val_int(); if (null_value) return 0; - str->set(nr, unsigned_flag, &my_charset_bin); + str->set_int(nr, unsigned_flag, &my_charset_bin); return str; } @@ -2038,7 +2038,7 @@ String *Item_float::val_str(String *str) { // following assert is redundant, because fixed=1 assigned in constructor DBUG_ASSERT(fixed == 1); - str->set(value,decimals,&my_charset_bin); + str->set_real(value,decimals,&my_charset_bin); return str; } @@ -2633,7 +2633,7 @@ String *Item_param::val_str(String* str) case LONG_DATA_VALUE: return &str_value_ptr; case REAL_VALUE: - str->set(value.real, NOT_FIXED_DEC, &my_charset_bin); + str->set_real(value.real, NOT_FIXED_DEC, &my_charset_bin); return str; case INT_VALUE: str->set(value.integer, &my_charset_bin); @@ -2673,7 +2673,7 @@ const String *Item_param::query_val_str(String* str) const str->set(value.integer, &my_charset_bin); break; case REAL_VALUE: - str->set(value.real, NOT_FIXED_DEC, &my_charset_bin); + str->set_real(value.real, NOT_FIXED_DEC, &my_charset_bin); break; case DECIMAL_VALUE: if (my_decimal2string(E_DEC_FATAL_ERROR, &decimal_value, @@ -4326,7 +4326,7 @@ void Item_float::print(String *str) } char buffer[20]; String num(buffer, sizeof(buffer), &my_charset_bin); - num.set(value, decimals, &my_charset_bin); + num.set_real(value, decimals, &my_charset_bin); str->append(num); } @@ -5768,7 +5768,7 @@ longlong Item_cache_real::val_int() String* Item_cache_real::val_str(String *str) { DBUG_ASSERT(fixed == 1); - str->set(value, decimals, default_charset()); + str->set_real(value, decimals, default_charset()); return str; } diff --git a/sql/item_func.cc b/sql/item_func.cc index 5030c9729cd..91bb38c8f8a 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -416,7 +416,7 @@ String *Item_real_func::val_str(String *str) double nr= val_real(); if (null_value) return 0; /* purecov: inspected */ - str->set(nr,decimals, &my_charset_bin); + str->set_real(nr,decimals, &my_charset_bin); return str; } @@ -556,7 +556,7 @@ String *Item_int_func::val_str(String *str) longlong nr=val_int(); if (null_value) return 0; - str->set(nr, unsigned_flag, &my_charset_bin); + str->set_int(nr, unsigned_flag, &my_charset_bin); return str; } @@ -698,7 +698,7 @@ String *Item_func_numhybrid::val_str(String *str) longlong nr= int_op(); if (null_value) return 0; /* purecov: inspected */ - str->set(nr, unsigned_flag, &my_charset_bin); + str->set_int(nr, unsigned_flag, &my_charset_bin); break; } case REAL_RESULT: @@ -706,7 +706,7 @@ String *Item_func_numhybrid::val_str(String *str) double nr= real_op(); if (null_value) return 0; /* purecov: inspected */ - str->set(nr,decimals,&my_charset_bin); + str->set_real(nr,decimals,&my_charset_bin); break; } case STRING_RESULT: @@ -2052,7 +2052,7 @@ String *Item_func_min_max::val_str(String *str) longlong nr=val_int(); if (null_value) return 0; - str->set(nr, unsigned_flag, &my_charset_bin); + str->set_int(nr, unsigned_flag, &my_charset_bin); return str; } case DECIMAL_RESULT: @@ -2068,7 +2068,7 @@ String *Item_func_min_max::val_str(String *str) double nr= val_real(); if (null_value) return 0; /* purecov: inspected */ - str->set(nr,decimals,&my_charset_bin); + str->set_real(nr,decimals,&my_charset_bin); return str; } case STRING_RESULT: @@ -2819,7 +2819,7 @@ String *Item_func_udf_float::val_str(String *str) double nr= val_real(); if (null_value) return 0; /* purecov: inspected */ - str->set(nr,decimals,&my_charset_bin); + str->set_real(nr,decimals,&my_charset_bin); return str; } @@ -2838,7 +2838,7 @@ String *Item_func_udf_int::val_str(String *str) longlong nr=val_int(); if (null_value) return 0; - str->set(nr, unsigned_flag, &my_charset_bin); + str->set_int(nr, unsigned_flag, &my_charset_bin); return str; } @@ -3638,7 +3638,7 @@ String *user_var_entry::val_str(my_bool *null_value, String *str, switch (type) { case REAL_RESULT: - str->set(*(double*) value, decimals, &my_charset_bin); + str->set_real(*(double*) value, decimals, &my_charset_bin); break; case INT_RESULT: str->set(*(longlong*) value, &my_charset_bin); diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index eb1fbf4855d..3dead7fe1e7 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -1808,7 +1808,7 @@ String *Item_func_format::val_str(String *str) return 0; /* purecov: inspected */ nr= my_double_round(nr, decimals, FALSE); /* Here default_charset() is right as this is not an automatic conversion */ - str->set(nr,decimals, default_charset()); + str->set_real(nr,decimals, default_charset()); if (isnan(nr)) return str; str_length=str->length(); diff --git a/sql/item_sum.cc b/sql/item_sum.cc index 2479d181276..d6bc2c326d6 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -1578,13 +1578,13 @@ Item_sum_hybrid::val_str(String *str) case STRING_RESULT: return &value; case REAL_RESULT: - str->set(sum,decimals, &my_charset_bin); + str->set_real(sum,decimals, &my_charset_bin); break; case DECIMAL_RESULT: my_decimal2string(E_DEC_FATAL_ERROR, &sum_dec, 0, 0, 0, str); return str; case INT_RESULT: - str->set(sum_int, unsigned_flag, &my_charset_bin); + str->set_int(sum_int, unsigned_flag, &my_charset_bin); break; case ROW_RESULT: default: diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc index 06abbe60121..4ffb3324a5b 100644 --- a/sql/item_timefunc.cc +++ b/sql/item_timefunc.cc @@ -1503,7 +1503,7 @@ double Item_func_sysdate_local::val_real() { DBUG_ASSERT(fixed == 1); store_now_in_TIME(<ime); - return (longlong) TIME_to_ulonglong_datetime(<ime); + return ulonglong2double(TIME_to_ulonglong_datetime(<ime)); } diff --git a/sql/log.cc b/sql/log.cc index 5a17ef817d0..6dea50413eb 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -313,9 +313,9 @@ bool Log_to_csv_event_handler:: table->field[1]->store(user_host, user_host_len, client_cs); table->field[1]->set_notnull(); - table->field[2]->store((longlong) thread_id); + table->field[2]->store((longlong) thread_id, TRUE); table->field[2]->set_notnull(); - table->field[3]->store((longlong) server_id); + table->field[3]->store((longlong) server_id, TRUE); table->field[3]->set_notnull(); table->field[4]->store(command_type, command_type_len, client_cs); table->field[4]->set_notnull(); @@ -395,13 +395,13 @@ bool Log_to_csv_event_handler:: if (query_start_arg) { /* fill in query_time field */ - table->field[2]->store(query_time); + table->field[2]->store(query_time, TRUE); /* lock_time */ - table->field[3]->store(lock_time); + table->field[3]->store(lock_time, TRUE); /* rows_sent */ - table->field[4]->store((longlong) thd->sent_row_count); + table->field[4]->store((longlong) thd->sent_row_count, TRUE); /* rows_examined */ - table->field[5]->store((longlong) thd->examined_row_count); + table->field[5]->store((longlong) thd->examined_row_count, TRUE); } else { @@ -420,18 +420,18 @@ bool Log_to_csv_event_handler:: if (thd->last_insert_id_used) { - table->field[7]->store((longlong) thd->current_insert_id); + table->field[7]->store((longlong) thd->current_insert_id, TRUE); table->field[7]->set_notnull(); } /* set value if we do an insert on autoincrement column */ if (thd->insert_id_used) { - table->field[8]->store((longlong) thd->last_insert_id); + table->field[8]->store((longlong) thd->last_insert_id, TRUE); table->field[8]->set_notnull(); } - table->field[9]->store((longlong) server_id); + table->field[9]->store((longlong) server_id, TRUE); table->field[9]->set_notnull(); /* sql_text */ diff --git a/sql/procedure.h b/sql/procedure.h index aceadd10883..5c8a3387eec 100644 --- a/sql/procedure.h +++ b/sql/procedure.h @@ -68,11 +68,11 @@ public: longlong val_int() { return (longlong) value; } String *val_str(String *s) { - s->set(value,decimals,default_charset()); + s->set_real(value,decimals,default_charset()); return s; } my_decimal *val_decimal(my_decimal *); - unsigned int size_of() { return sizeof(*this);} + unsigned int size_of() { return sizeof(*this);} }; class Item_proc_int :public Item_proc @@ -91,7 +91,7 @@ public: longlong val_int() { return value; } String *val_str(String *s) { s->set(value, default_charset()); return s; } my_decimal *val_decimal(my_decimal *); - unsigned int size_of() { return sizeof(*this);} + unsigned int size_of() { return sizeof(*this);} }; @@ -102,12 +102,12 @@ public: { this->max_length=length; } enum Item_result result_type () const { return STRING_RESULT; } enum_field_types field_type() const { return MYSQL_TYPE_VARCHAR; } - void set(double nr) { str_value.set(nr, 2, default_charset()); } + void set(double nr) { str_value.set_real(nr, 2, default_charset()); } void set(longlong nr) { str_value.set(nr, default_charset()); } void set(const char *str, uint length, CHARSET_INFO *cs) { str_value.copy(str,length,cs); } double val_real() - { + { int err_not_used; char *end_not_used; CHARSET_INFO *cs= str_value.charset(); diff --git a/sql/protocol.cc b/sql/protocol.cc index bb0891cdbbe..2edc11b6b3e 100644 --- a/sql/protocol.cc +++ b/sql/protocol.cc @@ -897,7 +897,7 @@ bool Protocol_simple::store(float from, uint32 decimals, String *buffer) field_types[field_pos] == MYSQL_TYPE_FLOAT); field_pos++; #endif - buffer->set((double) from, decimals, thd->charset()); + buffer->set_real((double) from, decimals, thd->charset()); return net_store_data((char*) buffer->ptr(), buffer->length()); } @@ -909,7 +909,7 @@ bool Protocol_simple::store(double from, uint32 decimals, String *buffer) field_types[field_pos] == MYSQL_TYPE_DOUBLE); field_pos++; #endif - buffer->set(from, decimals, thd->charset()); + buffer->set_real(from, decimals, thd->charset()); return net_store_data((char*) buffer->ptr(), buffer->length()); } diff --git a/sql/sp.cc b/sql/sp.cc index 653c04ee11a..93e21170156 100644 --- a/sql/sp.cc +++ b/sql/sp.cc @@ -555,17 +555,17 @@ db_create_routine(THD *thd, int type, sp_head *sp) table->field[MYSQL_PROC_FIELD_NAME]-> store(sp->m_name.str, sp->m_name.length, system_charset_info); table->field[MYSQL_PROC_FIELD_TYPE]-> - store((longlong)type); + store((longlong)type, TRUE); table->field[MYSQL_PROC_FIELD_SPECIFIC_NAME]-> store(sp->m_name.str, sp->m_name.length, system_charset_info); if (sp->m_chistics->daccess != SP_DEFAULT_ACCESS) table->field[MYSQL_PROC_FIELD_ACCESS]-> - store((longlong)sp->m_chistics->daccess); + store((longlong)sp->m_chistics->daccess, TRUE); table->field[MYSQL_PROC_FIELD_DETERMINISTIC]-> - store((longlong)(sp->m_chistics->detistic ? 1 : 2)); + store((longlong)(sp->m_chistics->detistic ? 1 : 2), TRUE); if (sp->m_chistics->suid != SP_IS_DEFAULT_SUID) table->field[MYSQL_PROC_FIELD_SECURITY_TYPE]-> - store((longlong)sp->m_chistics->suid); + store((longlong)sp->m_chistics->suid, TRUE); table->field[MYSQL_PROC_FIELD_PARAM_LIST]-> store(sp->m_params.str, sp->m_params.length, system_charset_info); if (sp->m_type == TYPE_ENUM_FUNCTION) @@ -582,7 +582,7 @@ db_create_routine(THD *thd, int type, sp_head *sp) ((Field_timestamp *)table->field[MYSQL_PROC_FIELD_CREATED])->set_time(); ((Field_timestamp *)table->field[MYSQL_PROC_FIELD_MODIFIED])->set_time(); table->field[MYSQL_PROC_FIELD_SQL_MODE]-> - store((longlong)thd->variables.sql_mode); + store((longlong)thd->variables.sql_mode, TRUE); if (sp->m_chistics->comment.str) table->field[MYSQL_PROC_FIELD_COMMENT]-> store(sp->m_chistics->comment.str, sp->m_chistics->comment.length, @@ -686,10 +686,10 @@ db_update_routine(THD *thd, int type, sp_name *name, st_sp_chistics *chistics) ((Field_timestamp *)table->field[MYSQL_PROC_FIELD_MODIFIED])->set_time(); if (chistics->suid != SP_IS_DEFAULT_SUID) table->field[MYSQL_PROC_FIELD_SECURITY_TYPE]-> - store((longlong)chistics->suid); + store((longlong)chistics->suid, TRUE); if (chistics->daccess != SP_DEFAULT_ACCESS) table->field[MYSQL_PROC_FIELD_ACCESS]-> - store((longlong)chistics->daccess); + store((longlong)chistics->daccess, TRUE); if (chistics->comment.str) table->field[MYSQL_PROC_FIELD_COMMENT]->store(chistics->comment.str, chistics->comment.length, diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 4c2dfac6b8b..8066c41fd10 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -2030,7 +2030,7 @@ static int replace_user_table(THD *thd, TABLE *table, const LEX_USER &combo, table->field[next_field+2]->store((longlong) mqh.conn_per_hour, TRUE); if (table->s->fields >= 36 && (mqh.specified_limits & USER_RESOURCES::USER_CONNECTIONS)) - table->field[next_field+3]->store((longlong) mqh.user_conn); + table->field[next_field+3]->store((longlong) mqh.user_conn, TRUE); mqh_used= mqh_used || mqh.questions || mqh.updates || mqh.conn_per_hour; } if (old_row_exists) diff --git a/sql/sql_analyse.cc b/sql/sql_analyse.cc index f372c55c13e..9f1a0561138 100644 --- a/sql/sql_analyse.cc +++ b/sql/sql_analyse.cc @@ -1024,7 +1024,7 @@ String *field_decimal::avg(String *s, ha_rows rows) { if (!(rows - nulls)) { - s->set((double) 0.0, 1,my_thd_charset); + s->set_real((double) 0.0, 1,my_thd_charset); return s; } my_decimal num, avg_val, rounded_avg; @@ -1045,7 +1045,7 @@ String *field_decimal::std(String *s, ha_rows rows) { if (!(rows - nulls)) { - s->set((double) 0.0, 1,my_thd_charset); + s->set_real((double) 0.0, 1,my_thd_charset); return s; } my_decimal num, tmp, sum2, sum2d; @@ -1058,7 +1058,7 @@ String *field_decimal::std(String *s, ha_rows rows) my_decimal_sub(E_DEC_FATAL_ERROR, &sum2, sum_sqr+cur_sum, &tmp); my_decimal_div(E_DEC_FATAL_ERROR, &tmp, &sum2, &num, prec_increment); my_decimal2double(E_DEC_FATAL_ERROR, &tmp, &std_sqr); - s->set(((double) std_sqr <= 0.0 ? 0.0 : sqrt(std_sqr)), + s->set_real(((double) std_sqr <= 0.0 ? 0.0 : sqrt(std_sqr)), min(item->decimals + prec_increment, NOT_FIXED_DEC), my_thd_charset); return s; @@ -1092,7 +1092,7 @@ int collect_real(double *element, element_count count __attribute__((unused)), else info->found = 1; info->str->append('\''); - s.set(*element, info->item->decimals, current_thd->charset()); + s.set_real(*element, info->item->decimals, current_thd->charset()); info->str->append(s); info->str->append('\''); return 0; diff --git a/sql/sql_analyse.h b/sql/sql_analyse.h index 9e5926fd9b1..0e7bd1b722a 100644 --- a/sql/sql_analyse.h +++ b/sql/sql_analyse.h @@ -128,9 +128,9 @@ public: String *avg(String *s, ha_rows rows) { if (!(rows - nulls)) - s->set((double) 0.0, 1,my_thd_charset); + s->set_real((double) 0.0, 1,my_thd_charset); else - s->set((ulonglong2double(sum) / ulonglong2double(rows - nulls)), + s->set_real((ulonglong2double(sum) / ulonglong2double(rows - nulls)), DEC_IN_AVG,my_thd_charset); return s; } @@ -190,34 +190,34 @@ public: void add(); void get_opt_type(String*, ha_rows); - String *get_min_arg(String *s) - { - s->set(min_arg, item->decimals,my_thd_charset); - return s; + String *get_min_arg(String *s) + { + s->set_real(min_arg, item->decimals, my_thd_charset); + return s; } - String *get_max_arg(String *s) - { - s->set(max_arg, item->decimals,my_thd_charset); - return s; + String *get_max_arg(String *s) + { + s->set_real(max_arg, item->decimals, my_thd_charset); + return s; } String *avg(String *s, ha_rows rows) { if (!(rows - nulls)) - s->set((double) 0.0, 1,my_thd_charset); + s->set_real((double) 0.0, 1,my_thd_charset); else - s->set(((double)sum / (double) (rows - nulls)), item->decimals,my_thd_charset); + s->set_real(((double)sum / (double) (rows - nulls)), item->decimals,my_thd_charset); return s; } String *std(String *s, ha_rows rows) { double tmp = ulonglong2double(rows); if (!(tmp - nulls)) - s->set((double) 0.0, 1,my_thd_charset); + s->set_real((double) 0.0, 1,my_thd_charset); else { double tmp2 = ((sum_sqr - sum * sum / (tmp - nulls)) / (tmp - nulls)); - s->set(((double) tmp2 <= 0.0 ? 0.0 : sqrt(tmp2)), item->decimals,my_thd_charset); + s->set_real(((double) tmp2 <= 0.0 ? 0.0 : sqrt(tmp2)), item->decimals,my_thd_charset); } return s; } @@ -249,21 +249,21 @@ public: String *avg(String *s, ha_rows rows) { if (!(rows - nulls)) - s->set((double) 0.0, 1,my_thd_charset); + s->set_real((double) 0.0, 1,my_thd_charset); else - s->set(((double) sum / (double) (rows - nulls)), DEC_IN_AVG,my_thd_charset); + s->set_real(((double) sum / (double) (rows - nulls)), DEC_IN_AVG,my_thd_charset); return s; } String *std(String *s, ha_rows rows) { double tmp = ulonglong2double(rows); if (!(tmp - nulls)) - s->set((double) 0.0, 1,my_thd_charset); + s->set_real((double) 0.0, 1,my_thd_charset); else { double tmp2 = ((sum_sqr - sum * sum / (tmp - nulls)) / (tmp - nulls)); - s->set(((double) tmp2 <= 0.0 ? 0.0 : sqrt(tmp2)), DEC_IN_AVG,my_thd_charset); + s->set_real(((double) tmp2 <= 0.0 ? 0.0 : sqrt(tmp2)), DEC_IN_AVG,my_thd_charset); } return s; } @@ -293,9 +293,9 @@ public: String *avg(String *s, ha_rows rows) { if (!(rows - nulls)) - s->set((double) 0.0, 1,my_thd_charset); + s->set_real((double) 0.0, 1,my_thd_charset); else - s->set((ulonglong2double(sum) / ulonglong2double(rows - nulls)), + s->set_real((ulonglong2double(sum) / ulonglong2double(rows - nulls)), DEC_IN_AVG,my_thd_charset); return s; } @@ -303,13 +303,13 @@ public: { double tmp = ulonglong2double(rows); if (!(tmp - nulls)) - s->set((double) 0.0, 1,my_thd_charset); + s->set_real((double) 0.0, 1,my_thd_charset); else { double tmp2 = ((ulonglong2double(sum_sqr) - ulonglong2double(sum * sum) / (tmp - nulls)) / (tmp - nulls)); - s->set(((double) tmp2 <= 0.0 ? 0.0 : sqrt(tmp2)), DEC_IN_AVG,my_thd_charset); + s->set_real(((double) tmp2 <= 0.0 ? 0.0 : sqrt(tmp2)), DEC_IN_AVG,my_thd_charset); } return s; } diff --git a/sql/sql_show.cc b/sql/sql_show.cc index b479eb32f36..dc598b786d5 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -3421,7 +3421,7 @@ static int get_schema_stat_record(THD *thd, struct st_table_list *tables, show_table->field[key_part->fieldnr-1]->key_length())) { table->field[10]->store((longlong) key_part->length / - key_part->field->charset()->mbmaxlen); + key_part->field->charset()->mbmaxlen, TRUE); table->field[10]->set_notnull(); } uint flags= key_part->field ? key_part->field->flags : 0; diff --git a/sql/sql_string.cc b/sql/sql_string.cc index 39395ae2ca5..f86c05d2f4f 100644 --- a/sql/sql_string.cc +++ b/sql/sql_string.cc @@ -96,7 +96,7 @@ bool String::realloc(uint32 alloc_length) return FALSE; } -bool String::set(longlong num, bool unsigned_flag, CHARSET_INFO *cs) +bool String::set_int(longlong num, bool unsigned_flag, CHARSET_INFO *cs) { uint l=20*cs->mbmaxlen+1; int base= unsigned_flag ? 10 : -10; @@ -108,7 +108,7 @@ bool String::set(longlong num, bool unsigned_flag, CHARSET_INFO *cs) return FALSE; } -bool String::set(double num,uint decimals, CHARSET_INFO *cs) +bool String::set_real(double num,uint decimals, CHARSET_INFO *cs) { char buff[331]; uint dummy_errors; diff --git a/sql/sql_string.h b/sql/sql_string.h index 4e1d3a4837e..b1d417be2c2 100644 --- a/sql/sql_string.h +++ b/sql/sql_string.h @@ -139,12 +139,12 @@ public: } str_charset=cs; } - bool set(longlong num, bool unsigned_flag, CHARSET_INFO *cs); + bool set_int(longlong num, bool unsigned_flag, CHARSET_INFO *cs); bool set(longlong num, CHARSET_INFO *cs) - { return set(num, false, cs); } + { return set_int(num, false, cs); } bool set(ulonglong num, CHARSET_INFO *cs) - { return set((longlong)num, true, cs); } - bool set(double num,uint decimals, CHARSET_INFO *cs); + { return set_int((longlong)num, true, cs); } + bool set_real(double num,uint decimals, CHARSET_INFO *cs); /* PMG 2004.11.12 -- cgit v1.2.1 From 78deb348f0d8579cccbac2afb1fd5ec982d2fd07 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 16 Jun 2006 12:29:04 +0200 Subject: BUG#20498: Wrong usage of hash_first() in get_open_table(). The get_open_table() function was using the wrong key for hash lookups. This could potentially lead to unpredictable behaviour. sql/ha_ndbcluster.cc: BUG#20498: Wrong usage of hash_first() in get_open_table(). --- sql/ha_ndbcluster.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 2d623702670..2c9798369ed 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -317,7 +317,7 @@ byte *thd_ndb_share_get_key(THD_NDB_SHARE *thd_ndb_share, uint *length, my_bool not_used __attribute__((unused))) { *length= sizeof(thd_ndb_share->key); - return (byte*) thd_ndb_share->key; + return (byte*) &thd_ndb_share->key; } Thd_ndb::Thd_ndb() @@ -371,9 +371,9 @@ Thd_ndb::get_open_table(THD *thd, const void *key) DBUG_ENTER("Thd_ndb::get_open_table"); HASH_SEARCH_STATE state; THD_NDB_SHARE *thd_ndb_share= - (THD_NDB_SHARE*)hash_first(&open_tables, (byte *)key, sizeof(key), &state); + (THD_NDB_SHARE*)hash_first(&open_tables, (byte *)&key, sizeof(key), &state); while (thd_ndb_share && thd_ndb_share->key != key) - thd_ndb_share= (THD_NDB_SHARE*)hash_next(&open_tables, (byte *)key, sizeof(key), &state); + thd_ndb_share= (THD_NDB_SHARE*)hash_next(&open_tables, (byte *)&key, sizeof(key), &state); if (thd_ndb_share == 0) { thd_ndb_share= (THD_NDB_SHARE *) alloc_root(&thd->transaction.mem_root, -- cgit v1.2.1 From 4ef7be4c329bb1257888280440cbf11758d53518 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 16 Jun 2006 15:56:08 +0200 Subject: Set default valgrind options to "-v --show-reachable=yes" and make it possible to override that with --valgrind-options mysql-test/mysql-test-run.pl: Make --valgrind-all a synonym for --valgrind. Set "-v --show-reachable=yes" as our default valgrind options. Make --valgrind-options override the default options Update usage. Turn on valgrinding also when user specified --valgrind-path or --valgrind-options without --valgrind --- mysql-test/mysql-test-run.pl | 50 +++++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 92407380ac2..bfd1f7de059 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -286,7 +286,7 @@ our $opt_user_test; our $opt_valgrind= 0; our $opt_valgrind_mysqld= 0; our $opt_valgrind_mysqltest= 0; -our $opt_valgrind_all= 0; +our $default_valgrind_options= "-v --show-reachable=yes"; our $opt_valgrind_options; our $opt_valgrind_path; @@ -597,10 +597,9 @@ sub command_line_setup () { # Coverage, profiling etc 'gcov' => \$opt_gcov, 'gprof' => \$opt_gprof, - 'valgrind' => \$opt_valgrind, + 'valgrind|valgrind-all' => \$opt_valgrind, 'valgrind-mysqltest' => \$opt_valgrind_mysqltest, 'valgrind-mysqld' => \$opt_valgrind_mysqld, - 'valgrind-all' => \$opt_valgrind_all, 'valgrind-options=s' => \$opt_valgrind_options, 'valgrind-path=s' => \$opt_valgrind_path, @@ -807,20 +806,32 @@ sub command_line_setup () { $opt_with_ndbcluster= 0; } - # Turn on valgrinding of all executables if "valgrind" or "valgrind-all" - if ( $opt_valgrind or $opt_valgrind_all ) + # Check valgrind arguments + if ( $opt_valgrind or $opt_valgrind_path or defined $opt_valgrind_options) { mtr_report("Turning on valgrind for all executables"); $opt_valgrind= 1; $opt_valgrind_mysqld= 1; $opt_valgrind_mysqltest= 1; } - elsif ( $opt_valgrind_mysqld or $opt_valgrind_mysqltest ) + elsif ( $opt_valgrind_mysqld ) { - # If test's are run for a specific executable, turn on - # verbose and show-reachable + mtr_report("Turning on valgrind for mysqld(s) only"); $opt_valgrind= 1; - $opt_valgrind_all= 1; + } + elsif ( $opt_valgrind_mysqltest ) + { + mtr_report("Turning on valgrind for mysqltest only"); + $opt_valgrind= 1; + } + + if ( $opt_valgrind ) + { + # Set valgrind_options to default unless already defined + $opt_valgrind_options=$default_valgrind_options + unless defined $opt_valgrind_options; + + mtr_report("Running valgrind with options \"$opt_valgrind_options\""); } if ( ! $opt_testcase_timeout ) @@ -3409,17 +3420,8 @@ sub valgrind_arguments { mtr_add_arg($args, "--suppressions=%s/valgrind.supp", $glob_mysql_test_dir) if -f "$glob_mysql_test_dir/valgrind.supp"; - if ( $opt_valgrind_all ) - { - mtr_add_arg($args, "-v"); - mtr_add_arg($args, "--show-reachable=yes"); - } - - if ( $opt_valgrind_options ) - { - mtr_add_arg($args, '%s', $_) for (split(' ', $opt_valgrind_options)); - } - + # Add valgrind options, can be overriden by user + mtr_add_arg($args, '%s', $_) for (split(' ', $opt_valgrind_options)); mtr_add_arg($args, $$exe); @@ -3519,12 +3521,12 @@ Options for coverage, profiling etc gcov FIXME gprof FIXME - valgrind Run the "mysqltest" and "mysqld" executables using valgrind - valgrind-all Same as "valgrind" but will also add "verbose" and "--show-reachable" - flags to valgrind + valgrind Run the "mysqltest" and "mysqld" executables using + valgrind with options($default_valgrind_options) + valgrind-all Synonym for --valgrind valgrind-mysqltest Run the "mysqltest" executable with valgrind valgrind-mysqld Run the "mysqld" executable with valgrind - valgrind-options=ARGS Extra options to give valgrind + valgrind-options=ARGS Options to give valgrind, replaces default options valgrind-path=[EXE] Path to the valgrind executable Misc options -- cgit v1.2.1 From 6f1605321de19ea68cd2e4c2c43649b31c05196f Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 16 Jun 2006 16:26:30 +0200 Subject: remove wrong assert --- sql/field.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sql/field.cc b/sql/field.cc index 6fc774e9806..fa018b3eaba 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -3471,8 +3471,7 @@ int Field_long::store(longlong nr, bool unsigned_val) ASSERT_COLUMN_MARKED_FOR_WRITE; int error= 0; int32 res; - DBUG_ASSERT(table->in_use == current_thd); // General safety - + if (unsigned_flag) { if (nr < 0 && !unsigned_val) -- cgit v1.2.1 From e08a2b326b143cc5b3dead51f981559aef2c2e95 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 16 Jun 2006 20:21:25 +0400 Subject: Fix for bug#13479 "REPLACE activates UPDATE trigger, not the DELETE and INSERT triggers". In cases when REPLACE was internally executed via update and table had on update (on delete) triggers defined we exposed the fact that such optimization used by callng on update (not calling on delete) triggers. Such behavior contradicts our documentation which describes REPLACE as INSERT with optional DELETE. This fix just disables this optimization for tables with on delete triggers. The optimization is still applied for tables which have on update but have no on delete triggers, we just don't invoke on update triggers in this case and thus don't expose information about optimization to user. Also added test coverage for values returned by ROW_COUNT() function (and thus for values returned by mysql_affected_rows()) for various forms of INSERT. mysql-test/r/insert.result: Added test for values returned by ROW_COUNT() function (and thus for values returned by mysql_affected_rows()) for various forms of INSERT. We didn't have coverage for this before and since this fix touches related code it is better to add it now. mysql-test/r/trigger.result: Adjusted test after fixing bug#13479 "REPLACE activates UPDATE trigger, not the DELETE and INSERT triggers". mysql-test/t/insert.test: Added test for values returned by ROW_COUNT() function (and thus for values returned by mysql_affected_rows()) for various forms of INSERT. We didn't have coverage for this before and since this fix touches related code it is better to add it now. mysql-test/t/trigger.test: Adjusted test after fixing bug#13479 "REPLACE activates UPDATE trigger, not the DELETE and INSERT triggers". sql/sql_insert.cc: write_record(): We should not expose that internally we sometimes execute REPLACE via UPDATE instead of documented INSERT + DELETE pair. So we should not use this optimization for tables with on delete triggers. OTOH it is ok to use it for tables which have on update but have no on delete triggers, we just should not invoke on update triggers in this case. --- mysql-test/r/insert.result | 26 ++++++++++++++++++++++++++ mysql-test/r/trigger.result | 32 ++++++++++---------------------- mysql-test/t/insert.test | 23 +++++++++++++++++++++++ mysql-test/t/trigger.test | 40 +++++++++++++++++----------------------- sql/sql_insert.cc | 43 ++++++++++++++++++++----------------------- 5 files changed, 96 insertions(+), 68 deletions(-) diff --git a/mysql-test/r/insert.result b/mysql-test/r/insert.result index 00a987c9254..82fad8e912c 100644 --- a/mysql-test/r/insert.result +++ b/mysql-test/r/insert.result @@ -305,3 +305,29 @@ insert delayed into v1 values (1); ERROR HY000: 'test.v1' is not BASE TABLE drop table t1; drop view v1; +create table t1 (id int primary key, data int); +insert into t1 values (1, 1), (2, 2), (3, 3); +select row_count(); +row_count() +3 +insert ignore into t1 values (1, 1); +select row_count(); +row_count() +0 +replace into t1 values (1, 11); +select row_count(); +row_count() +2 +replace into t1 values (4, 4); +select row_count(); +row_count() +1 +insert into t1 values (2, 2) on duplicate key update data= data + 10; +select row_count(); +row_count() +2 +insert into t1 values (5, 5) on duplicate key update data= data + 10; +select row_count(); +row_count() +1 +drop table t1; diff --git a/mysql-test/r/trigger.result b/mysql-test/r/trigger.result index 8b4aba367fb..d4791c6b117 100644 --- a/mysql-test/r/trigger.result +++ b/mysql-test/r/trigger.result @@ -169,21 +169,22 @@ select @log; @log (BEFORE_INSERT: new=(id=1, data=2)) set @log:= ""; -replace t1 values (1, 3), (2, 2); +insert into t1 (id, data) values (1, 3), (2, 2) on duplicate key update data= data + 1; select @log; @log -(BEFORE_INSERT: new=(id=1, data=3))(BEFORE_UPDATE: old=(id=1, data=1) new=(id=1, data=3))(AFTER_UPDATE: old=(id=1, data=1) new=(id=1, data=3))(BEFORE_INSERT: new=(id=2, data=2))(AFTER_INSERT: new=(id=2, data=2)) -alter table t1 add ts timestamp default now(); +(BEFORE_INSERT: new=(id=1, data=3))(BEFORE_UPDATE: old=(id=1, data=1) new=(id=1, data=2))(AFTER_UPDATE: old=(id=1, data=1) new=(id=1, data=2))(BEFORE_INSERT: new=(id=2, data=2))(AFTER_INSERT: new=(id=2, data=2)) set @log:= ""; -replace t1 (id, data) values (1, 4); +replace t1 values (1, 4), (3, 3); select @log; @log -(BEFORE_INSERT: new=(id=1, data=4))(BEFORE_DELETE: old=(id=1, data=3))(AFTER_DELETE: old=(id=1, data=3))(AFTER_INSERT: new=(id=1, data=4)) +(BEFORE_INSERT: new=(id=1, data=4))(BEFORE_DELETE: old=(id=1, data=2))(AFTER_DELETE: old=(id=1, data=2))(AFTER_INSERT: new=(id=1, data=4))(BEFORE_INSERT: new=(id=3, data=3))(AFTER_INSERT: new=(id=3, data=3)) +drop trigger t1_bd; +drop trigger t1_ad; set @log:= ""; -insert into t1 (id, data) values (1, 5), (3, 3) on duplicate key update data= data + 2; +replace t1 values (1, 5); select @log; @log -(BEFORE_INSERT: new=(id=1, data=5))(BEFORE_UPDATE: old=(id=1, data=4) new=(id=1, data=6))(AFTER_UPDATE: old=(id=1, data=4) new=(id=1, data=6))(BEFORE_INSERT: new=(id=3, data=3))(AFTER_INSERT: new=(id=3, data=3)) +(BEFORE_INSERT: new=(id=1, data=5))(AFTER_INSERT: new=(id=1, data=5)) drop table t1; create table t1 (id int primary key, data varchar(10), fk int); create table t2 (event varchar(100)); @@ -493,15 +494,9 @@ select * from t1; i k 3 13 replace into t1 values (3, 3); -ERROR 42S22: Unknown column 'at' in 'NEW' -select * from t1; -i k -3 3 -alter table t1 add ts timestamp default now(); -replace into t1 (i, k) values (3, 13); ERROR 42S22: Unknown column 'at' in 'OLD' select * from t1; -i k ts +i k drop table t1, t2; create table t1 (i int, bt int, k int, key(k)) engine=myisam; create table t2 (i int); @@ -574,18 +569,11 @@ i k 1 1 2 2 replace into t1 values (2, 4); -ERROR 42S22: Unknown column 'bt' in 'NEW' +ERROR 42S22: Unknown column 'bt' in 'OLD' select * from t1; i k 1 1 2 2 -alter table t1 add ts timestamp default now(); -replace into t1 (i, k) values (2, 11); -ERROR 42S22: Unknown column 'bt' in 'OLD' -select * from t1; -i k ts -1 1 0000-00-00 00:00:00 -2 2 0000-00-00 00:00:00 drop table t1, t2; drop function if exists bug5893; create table t1 (col1 int, col2 int); diff --git a/mysql-test/t/insert.test b/mysql-test/t/insert.test index 0c64dd80bec..ac43d0bc818 100644 --- a/mysql-test/t/insert.test +++ b/mysql-test/t/insert.test @@ -187,3 +187,26 @@ create view v1 as select * from t1; insert delayed into v1 values (1); drop table t1; drop view v1; + +# +# Test for values returned by ROW_COUNT() function +# (and thus for values returned by mysql_affected_rows()) +# for various forms of INSERT +# +create table t1 (id int primary key, data int); +insert into t1 values (1, 1), (2, 2), (3, 3); +select row_count(); +insert ignore into t1 values (1, 1); +select row_count(); +# Reports that 2 rows are affected (1 deleted + 1 inserted) +replace into t1 values (1, 11); +select row_count(); +replace into t1 values (4, 4); +select row_count(); +# Reports that 2 rows are affected. This conforms to documentation. +# (Useful for differentiating inserts from updates). +insert into t1 values (2, 2) on duplicate key update data= data + 10; +select row_count(); +insert into t1 values (5, 5) on duplicate key update data= data + 10; +select row_count(); +drop table t1; diff --git a/mysql-test/t/trigger.test b/mysql-test/t/trigger.test index a5bd2ba0b38..3743d8f5c76 100644 --- a/mysql-test/t/trigger.test +++ b/mysql-test/t/trigger.test @@ -185,24 +185,26 @@ select @log; set @log:= ""; insert ignore t1 values (1, 2); select @log; -# REPLACE: before insert trigger should be called for both records, -# but then for first one update will be executed (and both update -# triggers should fire). For second after insert trigger will be -# called as for usual insert +# INSERT ... ON DUPLICATE KEY UPDATE ... set @log:= ""; -replace t1 values (1, 3), (2, 2); +insert into t1 (id, data) values (1, 3), (2, 2) on duplicate key update data= data + 1; select @log; -# Now let us change table in such way that REPLACE on won't be executed -# using update. -alter table t1 add ts timestamp default now(); +# REPLACE (also test for bug#13479 "REPLACE activates UPDATE trigger, +# not the DELETE and INSERT triggers") +# We define REPLACE as INSERT which DELETEs old rows which conflict with +# row being inserted. So for the first record in statement below we will +# call before insert trigger, then delete will be executed (and both delete +# triggers should fire). Finally after insert trigger will be called. +# For the second record we will just call both on insert triggers. set @log:= ""; -# This REPLACE should be executed via DELETE and INSERT so proper -# triggers should be invoked. -replace t1 (id, data) values (1, 4); +replace t1 values (1, 4), (3, 3); select @log; -# Finally let us test INSERT ... ON DUPLICATE KEY UPDATE ... +# Now we will drop ON DELETE triggers to test REPLACE which is internally +# executed via update +drop trigger t1_bd; +drop trigger t1_ad; set @log:= ""; -insert into t1 (id, data) values (1, 5), (3, 3) on duplicate key update data= data + 2; +replace t1 values (1, 5); select @log; # This also drops associated triggers @@ -531,14 +533,11 @@ alter table t1 add primary key (i); --error 1054 insert into t1 values (3, 4) on duplicate key update k= k + 10; select * from t1; +# The following statement will delete old row and won't +# insert new one since after delete trigger will fail. --error 1054 replace into t1 values (3, 3); select * from t1; -# Change table in such way that REPLACE will delete row -alter table t1 add ts timestamp default now(); ---error 1054 -replace into t1 (i, k) values (3, 13); -select * from t1; # Also drops all triggers drop table t1, t2; @@ -594,11 +593,6 @@ select * from t1; --error 1054 replace into t1 values (2, 4); select * from t1; -# Change table in such way that REPLACE will delete row -alter table t1 add ts timestamp default now(); ---error 1054 -replace into t1 (i, k) values (2, 11); -select * from t1; # Also drops all triggers drop table t1, t2; diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 26f3b6f5faa..87483b17a99 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -1057,16 +1057,19 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info) to convert the latter operation internally to an UPDATE. We also should not perform this conversion if we have timestamp field with ON UPDATE which is different from DEFAULT. + Another case when conversion should not be performed is when + we have ON DELETE trigger on table so user may notice that + we cheat here. Note that it is ok to do such conversion for + tables which have ON UPDATE but have no ON DELETE triggers, + we just should not expose this fact to users by invoking + ON UPDATE triggers. */ if (last_uniq_key(table,key_nr) && !table->file->referenced_by_foreign_key() && (table->timestamp_field_type == TIMESTAMP_NO_AUTO_SET || - table->timestamp_field_type == TIMESTAMP_AUTO_SET_ON_BOTH)) + table->timestamp_field_type == TIMESTAMP_AUTO_SET_ON_BOTH) && + (!table->triggers || !table->triggers->has_delete_triggers())) { - if (table->triggers && - table->triggers->process_triggers(thd, TRG_EVENT_UPDATE, - TRG_ACTION_BEFORE, TRUE)) - goto before_trg_err; if (thd->clear_next_insert_id) { /* Reset auto-increment cacheing if we do an update */ @@ -1077,13 +1080,11 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info) table->record[0]))) goto err; info->deleted++; - trg_error= (table->triggers && - table->triggers->process_triggers(thd, TRG_EVENT_UPDATE, - TRG_ACTION_AFTER, - TRUE)); - /* Update logfile and count */ - info->copied++; - goto ok_or_after_trg_err; + /* + Since we pretend that we have done insert we should call + its after triggers. + */ + goto after_trg_n_copied_inc; } else { @@ -1107,10 +1108,6 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info) } } } - info->copied++; - trg_error= (table->triggers && - table->triggers->process_triggers(thd, TRG_EVENT_INSERT, - TRG_ACTION_AFTER, TRUE)); } else if ((error=table->file->write_row(table->record[0]))) { @@ -1118,14 +1115,14 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info) (error != HA_ERR_FOUND_DUPP_KEY && error != HA_ERR_FOUND_DUPP_UNIQUE)) goto err; table->file->restore_auto_increment(); + goto ok_or_after_trg_err; } - else - { - info->copied++; - trg_error= (table->triggers && - table->triggers->process_triggers(thd, TRG_EVENT_INSERT, - TRG_ACTION_AFTER, TRUE)); - } + +after_trg_n_copied_inc: + info->copied++; + trg_error= (table->triggers && + table->triggers->process_triggers(thd, TRG_EVENT_INSERT, + TRG_ACTION_AFTER, TRUE)); ok_or_after_trg_err: if (key) -- cgit v1.2.1 From 9224719d254ee5eba41a6b9e5e7d35c973a86853 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 16 Jun 2006 15:04:35 -0400 Subject: Fix for broken compile if not compiling with partitioning --- sql/sql_table.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sql/sql_table.cc b/sql/sql_table.cc index d379af3b3eb..bf0535567b4 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -5009,6 +5009,7 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, old_db_type= table->s->db_type; if (!create_info->db_type) { +#ifdef WITH_PARTITION_STORAGE_ENGINE if (table->part_info && create_info->used_fields & HA_CREATE_USED_ENGINE) { @@ -5022,6 +5023,7 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, create_info->db_type= table->part_info->default_engine_type; } else +#endif create_info->db_type= old_db_type; } -- cgit v1.2.1 From ca22a81b1c84ce81e1e9ea2c3ace7be1848027d8 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 16 Jun 2006 23:46:37 +0400 Subject: item_strfunc.cc: Fix for bug#16716 for --ps-protocol mode. item_cmpfunc.cc: Fix for a memory allocation/freeing problem in agg_cmp_type() after fix for bug#16377. Few language corrections. sql/item_cmpfunc.cc: Fix for a memory allocation/freeing problem in agg_cmp_type(). Few language corrections. sql/item_strfunc.cc: Fix for bug#16716 for --ps-protocol mode. --- sql/item_cmpfunc.cc | 32 +++++++++++--------------------- sql/item_strfunc.cc | 3 ++- 2 files changed, 13 insertions(+), 22 deletions(-) diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index e92e1d30ca4..126037a24d8 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -83,21 +83,21 @@ static void agg_result_type(Item_result *type, Item **items, uint nitems) items will be used for aggregation. If there are DATE/TIME fields/functions in the list and no string fields/functions in the list then: - The INT_RESULT type will be used for aggregation instead of orginal + The INT_RESULT type will be used for aggregation instead of original result type of any DATE/TIME field/function in the list All constant items in the list will be converted to a DATE/TIME using found field or result field of found function. Implementation notes: - The code is equvalent to: - 1. Check the list for presense of a STRING field/function. + The code is equivalent to: + 1. Check the list for presence of a STRING field/function. Collect the is_const flag. 2. Get a Field* object to use for type coercion 3. Perform type conversion. 1 and 2 are implemented in 2 loops. The first searches for a DATE/TIME - field/function and checks presense of a STRING field/function. + field/function and checks presence of a STRING field/function. The second loop works only if a DATE/TIME field/function is found. - It checks presense of a STRING field/function in the rest of the list. + It checks presence of a STRING field/function in the rest of the list. TODO 1) The current implementation can produce false comparison results for @@ -120,8 +120,9 @@ static void agg_result_type(Item_result *type, Item **items, uint nitems) static void agg_cmp_type(THD *thd, Item_result *type, Item **items, uint nitems) { uint i; - Item::Type res; - char *buff= NULL; + Item::Type res= (Item::Type)0; + /* Used only for date/time fields, max_length = 19 */ + char buff[20]; uchar null_byte; Field *field= NULL; @@ -147,28 +148,20 @@ static void agg_cmp_type(THD *thd, Item_result *type, Item **items, uint nitems) { field= items[i]->tmp_table_field_from_field_type(0); if (field) - buff= alloc_root(thd->mem_root, field->max_length()); - if (!buff || !field) - { - if (field) - delete field; - if (buff) - my_free(buff, MYF(MY_WME)); - field= 0; - } - else field->move_field(buff, &null_byte, 0); break; } } if (field) { - /* Check the rest of the list for presense of a string field/function. */ + /* Check the rest of the list for presence of a string field/function. */ for (i++ ; i < nitems; i++) { if (!items[i]->const_item() && items[i]->result_type() == STRING_RESULT && !items[i]->result_as_longlong()) { + if (res == Item::FUNC_ITEM) + delete field; field= 0; break; } @@ -205,10 +198,7 @@ static void agg_cmp_type(THD *thd, Item_result *type, Item **items, uint nitems) } if (res == Item::FUNC_ITEM && field) - { delete field; - my_free(buff, MYF(MY_WME)); - } } static void my_coll_agg_error(DTCollation &c1, DTCollation &c2, diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index deb3542f4a5..ee585649f8c 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -274,7 +274,8 @@ String *Item_func_concat::val_str(String *str) if (!(res=args[0]->val_str(str))) goto null; use_as_buff= &tmp_value; - is_const= args[0]->const_item(); + /* Item_subselect in --ps-protocol mode will state it as a non-const */ + is_const= args[0]->const_item() || !args[0]->used_tables(); for (i=1 ; i < arg_count ; i++) { if (res->length() == 0) -- cgit v1.2.1 From e2d3943c6a33870b68f8f1b9384e2869baf99ec3 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 16 Jun 2006 22:29:52 +0200 Subject: .del-mysql_install.def~8da659e7c0f7e571: Delete: netware/mysql_install.def Makefile.am: Removed obsolete "mysql_install.def" netware/Makefile.am: Removed obsolete "mysql_install.def" BitKeeper/deleted/.del-mysql_install.def~8da659e7c0f7e571: Delete: netware/mysql_install.def --- netware/Makefile.am | 4 ++-- netware/mysql_install.def | 10 ---------- 2 files changed, 2 insertions(+), 12 deletions(-) delete mode 100644 netware/mysql_install.def diff --git a/netware/Makefile.am b/netware/Makefile.am index 0588e6b1ade..527425d3207 100644 --- a/netware/Makefile.am +++ b/netware/Makefile.am @@ -29,7 +29,7 @@ netware_build_files = client/mysql.def client/mysqladmin.def \ client/mysqlbinlog.def client/mysqlcheck.def \ client/mysqldump.def client/mysqlimport.def \ client/mysqlshow.def client/mysqltest.def \ - extra/mysql_install.def extra/my_print_defaults.def \ + extra/my_print_defaults.def \ extra/perror.def extra/replace.def \ extra/resolveip.def extra/comp_err.def \ isam/isamchk.def \ @@ -52,7 +52,7 @@ EXTRA_DIST= comp_err.def init_db.sql install_test_db.ncf \ libmysqlmain.c my_manage.c my_manage.h \ my_print_defaults.def myisam_ftdump.def myisamchk.def \ myisamlog.def myisampack.def mysql.def mysql.xdc \ - mysql_fix_privilege_tables.pl mysql_install.def \ + mysql_fix_privilege_tables.pl \ mysql_install_db.c mysql_install_db.def \ mysql_secure_installation.pl mysql_test_run.c \ mysql_test_run.def mysql_waitpid.def mysqladmin.def \ diff --git a/netware/mysql_install.def b/netware/mysql_install.def deleted file mode 100644 index 3392afb7298..00000000000 --- a/netware/mysql_install.def +++ /dev/null @@ -1,10 +0,0 @@ -#------------------------------------------------------------------------------ -# My Print Defaults -#------------------------------------------------------------------------------ -MODULE libc.nlm -COPYRIGHT "(c) 2003-2005 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." -DESCRIPTION "MySQL Install Tool" -VERSION 4, 0 -XDCDATA ../netware/mysql.xdc -#DEBUG - -- cgit v1.2.1 From 91fb831076504e4760eb9bdfb1683d5221e1aeae Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 17 Jun 2006 00:30:02 +0200 Subject: configure.in, net_serv.cc, compile-netware-END: Changes for Netware sql/net_serv.cc: Netware needs configure.in: Call of "comp_err" has moved, changed code for Netware that edits make files to reflect this netware/BUILD/compile-netware-END: After correcting "configure.in" to edit make files correctly, removed obsolete "sed" of "extra/Makefile.am" for Netware --- configure.in | 6 +++--- netware/BUILD/compile-netware-END | 5 ----- sql/net_serv.cc | 4 ++++ 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/configure.in b/configure.in index 3c335089688..fd2cf3baf97 100644 --- a/configure.in +++ b/configure.in @@ -1137,7 +1137,7 @@ dnl Is this the right match for DEC OSF on alpha? # Edit Makefile.in files. # echo -n "configuring Makefile.in files for NetWare... " - for file in sql/Makefile.in libmysql/Makefile.in libmysql_r/Makefile.in sql/share/Makefile.in strings/Makefile.in client/Makefile.in + for file in sql/Makefile.in libmysql/Makefile.in libmysql_r/Makefile.in extra/Makefile.in strings/Makefile.in client/Makefile.in do # echo "#### $file ####" filedir="`dirname $file`" @@ -1163,9 +1163,9 @@ s,\(\./gen_lex_hash\)\$(EXEEXT),\1.linux, s%\(mysqld_DEPENDENCIES = \) %\1$lib_DEPENDENCIES % EOF ;; - sql/share/Makefile.in) + extra/Makefile.in) cat > $filesed << EOF -s,\(extra/comp_err\),\1.linux, +s,\(extra/comp_err\)\$(EXEEXT),\1.linux, EOF ;; libmysql/Makefile.in) diff --git a/netware/BUILD/compile-netware-END b/netware/BUILD/compile-netware-END index f7da0d9596e..c5c08cea908 100755 --- a/netware/BUILD/compile-netware-END +++ b/netware/BUILD/compile-netware-END @@ -21,11 +21,6 @@ rm -rf Makefile.in.bk # run auto tools . $path/compile-AUTOTOOLS -# For NetWare there is no comp_err but comp_err.linux -sed -e "s/comp_err/comp_err.linux/g" extra/Makefile.am > extra/Makefile.am.$$ -sed -e "s/replace comp_err.linux/replace comp_err/g" extra/Makefile.am.$$ > extra/Makefile.am -rm extra/Makefile.am.$$ - # configure ./configure $base_configs $extra_configs diff --git a/sql/net_serv.cc b/sql/net_serv.cc index c80bb8bad9a..cf9dc6e3f60 100644 --- a/sql/net_serv.cc +++ b/sql/net_serv.cc @@ -52,6 +52,10 @@ #include #include +#ifdef __NETWARE__ +#include +#endif + #ifdef EMBEDDED_LIBRARY #undef MYSQL_SERVER #undef MYSQL_CLIENT -- cgit v1.2.1 From 60d55cc5500ad12738ae85e5d302327cda8d89ec Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 17 Jun 2006 02:52:14 +0400 Subject: select.result: After merge fix mysql-test/r/select.result: After merge fix --- mysql-test/r/select.result | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result index dceb0efe199..b385c576f2e 100644 --- a/mysql-test/r/select.result +++ b/mysql-test/r/select.result @@ -2720,6 +2720,16 @@ id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t3 index PRIMARY,a,b PRIMARY 8 NULL 2 Using index 1 SIMPLE t2 ALL PRIMARY NULL NULL NULL 2 Range checked for each record (index map: 0x1) DROP TABLE t1,t2,t3; +CREATE TABLE t1 (a int, INDEX idx(a)); +INSERT INTO t1 VALUES (2), (3), (1); +EXPLAIN SELECT * FROM t1 IGNORE INDEX (idx); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 3 +EXPLAIN SELECT * FROM t1 IGNORE INDEX (a); +ERROR HY000: Key 'a' doesn't exist in table 't1' +EXPLAIN SELECT * FROM t1 FORCE INDEX (a); +ERROR HY000: Key 'a' doesn't exist in table 't1' +DROP TABLE t1; CREATE TABLE t1 ( K2C4 varchar(4) character set latin1 collate latin1_bin NOT NULL default '', K4N4 varchar(4) character set latin1 collate latin1_bin NOT NULL default '0000', -- cgit v1.2.1 From 4a4a82a4a844b7727c3ec3d2b44a801fe2dfcc3f Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 17 Jun 2006 03:04:43 +0200 Subject: make_win_src_distribution.sh: Include "sql_yacc.yy" for completeness (bug#20387) scripts/make_win_src_distribution.sh: Include "sql_yacc.yy" for completeness (bug#20387) Improved error handling Don't list all files packed with tar/zip unless debugging --- scripts/make_win_src_distribution.sh | 49 ++++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/scripts/make_win_src_distribution.sh b/scripts/make_win_src_distribution.sh index b9b39f1b02f..028986b1fe3 100644 --- a/scripts/make_win_src_distribution.sh +++ b/scripts/make_win_src_distribution.sh @@ -1,11 +1,14 @@ #!/bin/sh +# Terminate loudly on error, we don't want partial package +set -e +trap "echo '*** script failed ***'" 0 + # # Script to create a Windows src package # version=@VERSION@ -export version CP="cp -p" DEBUG=0 @@ -199,7 +202,7 @@ copy_dir_files() print_debug "Creating directory '$arg'" mkdir $BASE/$arg fi - for i in *.c *.cpp *.h *.ih *.i *.ic *.asm *.def *.hpp \ + for i in *.c *.cpp *.h *.ih *.i *.ic *.asm *.def *.hpp *.yy \ README INSTALL* LICENSE AUTHORS NEWS ChangeLog \ *.inc *.test *.result *.pem Moscow_leap des_key_file \ *.vcproj *.sln *.dat *.000001 *.require *.opt @@ -260,7 +263,7 @@ done # # Create project files for ndb # -make -C $SOURCE/ndb windoze +make -C $SOURCE/ndb windoze || true # # Input directories to be copied recursively @@ -334,8 +337,17 @@ done # Fix some windows files to avoid compiler warnings # -./extra/replace std:: "" < $BASE/sql/sql_yacc.cpp | sed '/^ *switch (yytype)$/ { N; /\n *{$/ { N; /\n *default:$/ { N; /\n *break;$/ { N; /\n *}$/ d; };};};} ' > $BASE/sql/sql_yacc.cpp-new -mv $BASE/sql/sql_yacc.cpp-new $BASE/sql/sql_yacc.cpp +if [ -x extra/replace ] ; then + ./extra/replace std:: "" < $BASE/sql/sql_yacc.cpp | \ + sed '/^ *switch (yytype)$/ { N; /\n *{$/ { N; /\n *default:$/ { N; /\n *break;$/ { N; /\n *}$/ d; };};};} ' \ + > $BASE/sql/sql_yacc.cpp-new + mv $BASE/sql/sql_yacc.cpp-new $BASE/sql/sql_yacc.cpp +else + if [ "$SILENT" = "0" ] ; then + echo 'WARNING: "extra/replace" not built, can not filter "sql_yacc.ccp"' + echo 'WARNING: to reduce the number of warnings when building' + fi +fi # # Search the tree for plain text files and adapt the line end marker @@ -349,8 +361,6 @@ find $BASE \( -name "*.cnf" -o -name "*.ini" \ do unix_to_dos $v done -# File extension '.txt' matches too many other files, error messages etc. -unix_to_dos $BASE/Docs/*.txt mv $BASE/README $BASE/README.txt @@ -358,19 +368,23 @@ mv $BASE/README $BASE/README.txt # Clean up if we did this from a bk tree # -if [ -d $BASE/SSL/SCCS ] -then - find $BASE/ -type d -name SCCS -printf " \"%p\"" | xargs rm -r -f -fi -find $BASE/ -type d -name .deps -printf " \"%p\"" | xargs rm -r -f -find $BASE/ -type d -name .libs -printf " \"%p\"" | xargs rm -r -f +find $BASE -type d \( -name SCCS -o -name .deps -o -name .libs \) -print0 | \ +xargs -0 rm -r -f rm -r -f "$BASE/mysql-test/var" # # Initialize the initial data directory # -if [ -f scripts/mysql_install_db ]; then +if [ ! -f scripts/mysql_install_db ] ; then + if [ "$SILENT" = "0" ] ; then + echo 'WARNING: "scripts/mysql_install_db" is not built, can not initiate databases' + fi +elif [ ! -f extra/my_print_defaults ]; then + if [ "$SILENT" = "0" ] ; then + echo 'WARNING: "extra/my_print_defaults" is not built, can not initiate databases' + fi +else print_debug "Initializing the 'data' directory" scripts/mysql_install_db --no-defaults --windows --datadir=$BASE/data if test "$?" = 1 @@ -451,7 +465,7 @@ set_tarzip_options() OPT=cvf EXT=".tar" NEED_COMPRESS=1 - if [ "$SILENT" = "1" ] ; then + if [ "$DEBUG" = "0" ] ; then OPT=cf fi else @@ -460,7 +474,7 @@ set_tarzip_options() OPT="-r" EXT=".zip" NEED_COMPRESS=0 - if [ "$SILENT" = "1" ] ; then + if [ "$DEBUG" = "0" ] ; then OPT="$OPT -q" fi fi @@ -523,4 +537,7 @@ fi print_debug "Removing temporary directory" rm -r -f $BASE +# No need to report anything if we got here +trap "" 0 + # End of script -- cgit v1.2.1 From 2aa2db7a87a8c99a7441f5343d023c308691a1eb Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 17 Jun 2006 10:44:52 +0200 Subject: make_win_src_distribution.sh: Don't try copy non existing extra/{sql_state,mysqld_error}.h scripts/make_win_src_distribution.sh: Don't try copy non existing extra/{sql_state,mysqld_error}.h --- scripts/make_win_src_distribution.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/make_win_src_distribution.sh b/scripts/make_win_src_distribution.sh index 9c3aa6c9b4c..6ad8d4f1f9b 100644 --- a/scripts/make_win_src_distribution.sh +++ b/scripts/make_win_src_distribution.sh @@ -301,8 +301,6 @@ do fi done -cp extra/sql_state.h extra/mysqld_error.h $BASE/include - # # support files # -- cgit v1.2.1 From d1e21c2c204c3a5b9106b2041862aa02119b40d1 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 17 Jun 2006 11:33:34 +0200 Subject: make_win_src_distribution.sh: Make output less verbose Make temporary directory name unique Remove temporary directory on interrupt scripts/make_win_src_distribution.sh: Make output less verbose Make temporary directory name unique Remove temporary directory on interrupt --- scripts/make_win_src_distribution.sh | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/scripts/make_win_src_distribution.sh b/scripts/make_win_src_distribution.sh index 028986b1fe3..4e5cc2ada46 100644 --- a/scripts/make_win_src_distribution.sh +++ b/scripts/make_win_src_distribution.sh @@ -77,7 +77,7 @@ show_usage() echo " --tmp Specify the temporary location" echo " --suffix Suffix name for the package" echo " --dirname Directory name to copy files (intermediate)" - echo " --silent Do not list verbosely files processed" + echo " --silent Show no progress information" echo " --tar Create tar.gz package" echo " --zip Create zip package" echo " --help Show this help message" @@ -143,10 +143,11 @@ unix_to_dos() # Create a tmp dest directory to copy files # -BASE=$TMP/my_win_dist$SUFFIX +BASE=$TMP/my_win_dist$SUFFIX.$$ +trap "rm -r -f $BASE; echo '*** interrupted ***'; exit 1" 1 2 3 13 15 if [ -d $BASE ] ; then - print_debug "Destination directory '$BASE' already exists, deleting it" + echo "WARNING: Destination directory '$BASE' already exists, deleting it" rm -r -f $BASE fi @@ -462,21 +463,15 @@ set_tarzip_options() if [ "$arg" = "tar" ]; then ZIPFILE1=gnutar ZIPFILE2=gtar - OPT=cvf + OPT=cf EXT=".tar" NEED_COMPRESS=1 - if [ "$DEBUG" = "0" ] ; then - OPT=cf - fi else ZIPFILE1=zip ZIPFILE2="" - OPT="-r" + OPT="-r -q" EXT=".zip" NEED_COMPRESS=0 - if [ "$DEBUG" = "0" ] ; then - OPT="$OPT -q" - fi fi done } -- cgit v1.2.1 From 76d2eceaf5b74ad71e848356281b908f3366e0eb Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 17 Jun 2006 13:00:17 +0200 Subject: ndb - bug#19285 minor fixes ndb/src/ndbapi/NdbBlob.cpp: bug#19285 minor fixes ndb/src/ndbapi/ndberror.c: bug#19285 minor fixes --- ndb/src/ndbapi/NdbBlob.cpp | 2 +- ndb/src/ndbapi/ndberror.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ndb/src/ndbapi/NdbBlob.cpp b/ndb/src/ndbapi/NdbBlob.cpp index 3440c6416cb..fdee8961337 100644 --- a/ndb/src/ndbapi/NdbBlob.cpp +++ b/ndb/src/ndbapi/NdbBlob.cpp @@ -753,7 +753,7 @@ NdbBlob::writeData(const void* data, Uint32 bytes) } const char* buf = static_cast(data); int ret = writeDataPrivate(buf, bytes); - DBUG_RETURN(0); + DBUG_RETURN(ret); } int diff --git a/ndb/src/ndbapi/ndberror.c b/ndb/src/ndbapi/ndberror.c index 6c9931ba21c..62d920755bd 100644 --- a/ndb/src/ndbapi/ndberror.c +++ b/ndb/src/ndbapi/ndberror.c @@ -521,7 +521,7 @@ ErrorBundle ErrorCodes[] = { { 4270, IE, "Unknown blob error" }, { 4335, AE, "Only one autoincrement column allowed per table. Having a table without primary key uses an autoincremented hidden key, i.e. a table without a primary key can not have an autoincremented column" }, { 4271, AE, "Invalid index object, not retrieved via getIndex()" }, - { 4275, IE, "The blob method is incompatible with operation type or lock mode" } + { 4275, AE, "The blob method is incompatible with operation type or lock mode" } }; static -- cgit v1.2.1 From 4f36bb01b16f3c3b4a4b923dbe6fe9d20ee3a259 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 17 Jun 2006 13:12:38 +0200 Subject: ndb - bug#19285 post merge 5.0->5.1 fix (error codes) storage/ndb/src/ndbapi/ndberror.c: postmerge fix --- storage/ndb/src/ndbapi/ndberror.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/storage/ndb/src/ndbapi/ndberror.c b/storage/ndb/src/ndbapi/ndberror.c index 22252960e21..a867ad7315b 100644 --- a/storage/ndb/src/ndbapi/ndberror.c +++ b/storage/ndb/src/ndbapi/ndberror.c @@ -594,7 +594,7 @@ ErrorBundle ErrorCodes[] = { { 4262, DMEC, UD, "NdbScanFilter: Condition is out of bounds"}, { 4263, DMEC, IE, "Invalid blob attributes or invalid blob parts table" }, { 4264, DMEC, AE, "Invalid usage of blob attribute" }, - { 4265, DMEC, AE, "Method is not valid in current blob state" }, + { 4265, DMEC, AE, "The method is not valid in current blob state" }, { 4266, DMEC, AE, "Invalid blob seek position" }, { 4267, DMEC, IE, "Corrupted blob value" }, { 4268, DMEC, IE, "Error in blob head update forced rollback of transaction" }, @@ -604,7 +604,8 @@ ErrorBundle ErrorCodes[] = { { 4271, DMEC, AE, "Invalid index object, not retrieved via getIndex()" }, { 4272, DMEC, AE, "Table definition has undefined column" }, { 4273, DMEC, IE, "No blob table in dict cache" }, - { 4274, DMEC, IE, "Corrupted main table PK in blob operation" } + { 4274, DMEC, IE, "Corrupted main table PK in blob operation" }, + { 4275, DMEC, AE, "The blob method is incompatible with operation type or lock mode" } }; static -- cgit v1.2.1 From 4d366600b87451881d64b027e6efe849adf29c42 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 17 Jun 2006 15:37:23 +0200 Subject: Makefile.am: Avoid error message trying 'windoze-dsp' in obsolete directory compile-dist: Avoid error message for target 'distclean' and no Makefile BUILD/compile-dist: Avoid error message for target 'distclean' and no Makefile ndb/Makefile.am: Avoid error message trying 'windoze-dsp' in obsolete directory --- BUILD/compile-dist | 2 +- ndb/Makefile.am | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/BUILD/compile-dist b/BUILD/compile-dist index 39095f59ffa..613f2643c56 100755 --- a/BUILD/compile-dist +++ b/BUILD/compile-dist @@ -6,7 +6,7 @@ # tree can then be picked up by "make dist" to create the "pristine source # package" that is used as the basis for all other binary builds. # -make distclean +test -f Makefile && make distclean aclocal autoheader libtoolize --automake --force --copy diff --git a/ndb/Makefile.am b/ndb/Makefile.am index 32c821383e6..7162253f24b 100644 --- a/ndb/Makefile.am +++ b/ndb/Makefile.am @@ -19,7 +19,8 @@ dist-hook: done windoze: - for i in `find . -name 'Makefile.am'`; do make -C `dirname $$i` windoze-dsp; done + for i in `find . -name 'old_dirs' -prune -o -name 'Makefile.am' -print`; \ + do make -C `dirname $$i` windoze-dsp; done windoze-dsp: -- cgit v1.2.1 From d1fb292251fc6ba5a455e39d59dad5f7d0d0023f Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 17 Jun 2006 16:20:39 +0200 Subject: atomic ops: my_atomic_XX_t -> intXX, no implicit locking anymore simplified framework, support for requested cleanups dbug/dbug.c: compiler warning include/atomic/nolock.h: my_atomic_XX_t -> intXX include/atomic/rwlock.h: my_atomic_XX_t -> intXX, no implicit locking anymore include/atomic/x86-gcc.h: my_atomic_XX_t -> intXX, no implicit locking anymore include/atomic/x86-msvc.h: my_atomic_XX_t -> intXX simplified defines support for cleanups include/my_atomic.h: my_atomic_XX_t -> intXX, no implicit locking anymore simplified framework, support for requested cleanups unittest/examples/no_plan-t.c: compiler warning unittest/mysys/Makefile.am: fix for dependencies unittest/mysys/my_atomic-t.c: my_atomic_XX_t -> intXX, no implicit locking anymore unittest/mytap/tap.c: cosmetic fix --- dbug/dbug.c | 2 +- include/atomic/nolock.h | 132 +----------------------------------------- include/atomic/rwlock.h | 126 +++------------------------------------- include/atomic/x86-gcc.h | 42 ++++++-------- include/atomic/x86-msvc.h | 102 ++++++++++++++++++-------------- include/my_atomic.h | 113 +++++++++++++++++++++++++++++++----- unittest/examples/no_plan-t.c | 6 +- unittest/mysys/Makefile.am | 8 +-- unittest/mysys/my_atomic-t.c | 70 +++++++++++++++------- unittest/mytap/tap.c | 4 +- 10 files changed, 243 insertions(+), 362 deletions(-) diff --git a/dbug/dbug.c b/dbug/dbug.c index 07f72a3e758..48b2398e9c6 100644 --- a/dbug/dbug.c +++ b/dbug/dbug.c @@ -1728,7 +1728,7 @@ static void DoPrefix(CODE_STATE *cs, uint _line_) struct tm *tm_p; if (gettimeofday(&tv, NULL) != -1) { - if ((tm_p= localtime(&tv.tv_sec))) + if ((tm_p= localtime((const time_t *)&tv.tv_sec))) { (void) fprintf (cs->stack->out_file, /* "%04d-%02d-%02d " */ diff --git a/include/atomic/nolock.h b/include/atomic/nolock.h index cf21a94c7de..458cb3e4f66 100644 --- a/include/atomic/nolock.h +++ b/include/atomic/nolock.h @@ -27,137 +27,9 @@ #endif #endif -#ifdef make_atomic_add_body8 +#ifdef make_atomic_add_body -#ifdef HAVE_INLINE - -#define make_atomic_add(S) \ -static inline uint ## S _my_atomic_add ## S( \ - my_atomic_ ## S ## _t *a, uint ## S v) \ -{ \ - make_atomic_add_body ## S; \ - return v; \ -} - -#define make_atomic_swap(S) \ -static inline uint ## S _my_atomic_swap ## S( \ - my_atomic_ ## S ## _t *a, uint ## S v) \ -{ \ - make_atomic_swap_body ## S; \ - return v; \ -} - -#define make_atomic_cas(S) \ -static inline uint _my_atomic_cas ## S(my_atomic_ ## S ## _t *a,\ - uint ## S *cmp, uint ## S set) \ -{ \ - uint8 ret; \ - make_atomic_cas_body ## S; \ - return ret; \ -} - -#define make_atomic_load(S) \ -static inline uint ## S _my_atomic_load ## S( \ - my_atomic_ ## S ## _t *a) \ -{ \ - uint ## S ret; \ - make_atomic_load_body ## S; \ - return ret; \ -} - -#define make_atomic_store(S) \ -static inline void _my_atomic_store ## S( \ - my_atomic_ ## S ## _t *a, uint ## S v) \ -{ \ - make_atomic_store_body ## S; \ -} - -#else /* no inline functions */ - -#define make_atomic_add(S) \ -extern uint ## S _my_atomic_add ## S( \ - my_atomic_ ## S ## _t *a, uint ## S v); - -#define make_atomic_swap(S) \ -extern uint ## S _my_atomic_swap ## S( \ - my_atomic_ ## S ## _t *a, uint ## S v); - -#define make_atomic_cas(S) \ -extern uint _my_atomic_cas ## S(my_atomic_ ## S ## _t *a, \ - uint ## S *cmp, uint ## S set); - -#define make_atomic_load(S) \ -extern uint ## S _my_atomic_load ## S( \ - my_atomic_ ## S ## _t *a); - -#define make_atomic_store(S) \ -extern void _my_atomic_store ## S( \ - my_atomic_ ## S ## _t *a, uint ## S v); - -#endif - -make_atomic_add( 8) -make_atomic_add(16) -make_atomic_add(32) - -make_atomic_cas( 8) -make_atomic_cas(16) -make_atomic_cas(32) - -make_atomic_load( 8) -make_atomic_load(16) -make_atomic_load(32) - -make_atomic_store( 8) -make_atomic_store(16) -make_atomic_store(32) - -make_atomic_swap( 8) -make_atomic_swap(16) -make_atomic_swap(32) - -#undef make_atomic_add_body8 -#undef make_atomic_cas_body8 -#undef make_atomic_load_body8 -#undef make_atomic_store_body8 -#undef make_atomic_swap_body8 -#undef make_atomic_add_body16 -#undef make_atomic_cas_body16 -#undef make_atomic_load_body16 -#undef make_atomic_store_body16 -#undef make_atomic_swap_body16 -#undef make_atomic_add_body32 -#undef make_atomic_cas_body32 -#undef make_atomic_load_body32 -#undef make_atomic_store_body32 -#undef make_atomic_swap_body32 -#undef make_atomic_add -#undef make_atomic_cas -#undef make_atomic_load -#undef make_atomic_store -#undef make_atomic_swap - -#define my_atomic_add8(a,v,L) _my_atomic_add8(a,v) -#define my_atomic_add16(a,v,L) _my_atomic_add16(a,v) -#define my_atomic_add32(a,v,L) _my_atomic_add32(a,v) - -#define my_atomic_cas8(a,c,v,L) _my_atomic_cas8(a,c,v) -#define my_atomic_cas16(a,c,v,L) _my_atomic_cas16(a,c,v) -#define my_atomic_cas32(a,c,v,L) _my_atomic_cas32(a,c,v) - -#define my_atomic_load8(a,L) _my_atomic_load8(a) -#define my_atomic_load16(a,L) _my_atomic_load16(a) -#define my_atomic_load32(a,L) _my_atomic_load32(a) - -#define my_atomic_store8(a,v,L) _my_atomic_store8(a,v) -#define my_atomic_store16(a,v,L) _my_atomic_store16(a,v) -#define my_atomic_store32(a,v,L) _my_atomic_store32(a,v) - -#define my_atomic_swap8(a,v,L) _my_atomic_swap8(a,v) -#define my_atomic_swap16(a,v,L) _my_atomic_swap16(a,v) -#define my_atomic_swap32(a,v,L) _my_atomic_swap32(a,v) - -#define my_atomic_rwlock_t typedef int +typedef struct { } my_atomic_rwlock_t; #define my_atomic_rwlock_destroy(name) #define my_atomic_rwlock_init(name) #define my_atomic_rwlock_rdlock(name) diff --git a/include/atomic/rwlock.h b/include/atomic/rwlock.h index ca5be29ab9b..12d0dd3f069 100644 --- a/include/atomic/rwlock.h +++ b/include/atomic/rwlock.h @@ -16,12 +16,6 @@ typedef struct {pthread_rwlock_t rw;} my_atomic_rwlock_t; -#ifdef MY_ATOMIC_EXTRA_DEBUG -#define CHECK_RW if (rw) if (a->rw) assert(rw == a->rw); else a->rw=rw; -#else -#define CHECK_RW -#endif - #ifdef MY_ATOMIC_MODE_DUMMY /* the following can never be enabled by ./configure, one need to put #define in @@ -36,6 +30,7 @@ typedef struct {pthread_rwlock_t rw;} my_atomic_rwlock_t; #define my_atomic_rwlock_wrlock(name) #define my_atomic_rwlock_rdunlock(name) #define my_atomic_rwlock_wrunlock(name) +#define MY_ATOMIC_MODE "dummy (non-atomic)" #else #define my_atomic_rwlock_destroy(name) pthread_rwlock_destroy(& (name)->rw) #define my_atomic_rwlock_init(name) pthread_rwlock_init(& (name)->rw, 0) @@ -43,119 +38,12 @@ typedef struct {pthread_rwlock_t rw;} my_atomic_rwlock_t; #define my_atomic_rwlock_wrlock(name) pthread_rwlock_wrlock(& (name)->rw) #define my_atomic_rwlock_rdunlock(name) pthread_rwlock_unlock(& (name)->rw) #define my_atomic_rwlock_wrunlock(name) pthread_rwlock_unlock(& (name)->rw) +#define MY_ATOMIC_MODE "rwlocks" #endif -#ifdef HAVE_INLINE - -#define make_atomic_add(S) \ -static inline uint ## S my_atomic_add ## S( \ - my_atomic_ ## S ## _t *a, uint ## S v, my_atomic_rwlock_t *rw) \ -{ \ - uint ## S ret; \ - CHECK_RW; \ - if (rw) my_atomic_rwlock_wrlock(rw); \ - ret= a->val; \ - a->val+= v; \ - if (rw) my_atomic_rwlock_wrunlock(rw); \ - return ret; \ -} - -#define make_atomic_swap(S) \ -static inline uint ## S my_atomic_swap ## S( \ - my_atomic_ ## S ## _t *a, uint ## S v, my_atomic_rwlock_t *rw) \ -{ \ - uint ## S ret; \ - CHECK_RW; \ - if (rw) my_atomic_rwlock_wrlock(rw); \ - ret= a->val; \ - a->val= v; \ - if (rw) my_atomic_rwlock_wrunlock(rw); \ - return ret; \ -} - -#define make_atomic_cas(S) \ -static inline uint my_atomic_cas ## S(my_atomic_ ## S ## _t *a, \ - uint ## S *cmp, uint ## S set, my_atomic_rwlock_t *rw) \ -{ \ - uint ret; \ - CHECK_RW; \ - if (rw) my_atomic_rwlock_wrlock(rw); \ - if (ret= (a->val == *cmp)) a->val= set; else *cmp=a->val; \ - if (rw) my_atomic_rwlock_wrunlock(rw); \ - return ret; \ -} - -#define make_atomic_load(S) \ -static inline uint ## S my_atomic_load ## S( \ - my_atomic_ ## S ## _t *a, my_atomic_rwlock_t *rw) \ -{ \ - uint ## S ret; \ - CHECK_RW; \ - if (rw) my_atomic_rwlock_wrlock(rw); \ - ret= a->val; \ - if (rw) my_atomic_rwlock_wrunlock(rw); \ - return ret; \ -} - -#define make_atomic_store(S) \ -static inline void my_atomic_store ## S( \ - my_atomic_ ## S ## _t *a, uint ## S v, my_atomic_rwlock_t *rw) \ -{ \ - CHECK_RW; \ - if (rw) my_atomic_rwlock_rdlock(rw); \ - (a)->val= (v); \ - if (rw) my_atomic_rwlock_rdunlock(rw); \ -} - -#else /* no inline functions */ - -#define make_atomic_add(S) \ -extern uint ## S my_atomic_add ## S( \ - my_atomic_ ## S ## _t *a, uint ## S v, my_atomic_rwlock_t *rw); - -#define make_atomic_swap(S) \ -extern uint ## S my_atomic_swap ## S( \ - my_atomic_ ## S ## _t *a, uint ## S v, my_atomic_rwlock_t *rw); - -#define make_atomic_cas(S) \ -extern uint my_atomic_cas ## S(my_atomic_ ## S ## _t *a, \ - uint ## S *cmp, uint ## S set, my_atomic_rwlock_t *rw); - -#define make_atomic_load(S) \ -extern uint ## S my_atomic_load ## S( \ - my_atomic_ ## S ## _t *a, my_atomic_rwlock_t *rw); - -#define make_atomic_store(S) \ -extern void my_atomic_store ## S( \ - my_atomic_ ## S ## _t *a, uint ## S v, my_atomic_rwlock_t *rw); - -#endif - -make_atomic_add( 8) -make_atomic_add(16) -make_atomic_add(32) -make_atomic_add(64) -make_atomic_cas( 8) -make_atomic_cas(16) -make_atomic_cas(32) -make_atomic_cas(64) -make_atomic_load( 8) -make_atomic_load(16) -make_atomic_load(32) -make_atomic_load(64) -make_atomic_store( 8) -make_atomic_store(16) -make_atomic_store(32) -make_atomic_store(64) -make_atomic_swap( 8) -make_atomic_swap(16) -make_atomic_swap(32) -make_atomic_swap(64) -#undef make_atomic_add -#undef make_atomic_cas -#undef make_atomic_load -#undef make_atomic_store -#undef make_atomic_swap -#undef CHECK_RW - +#define make_atomic_add_body(S) int ## S sav; sav= *a; *a+= v; v=sav; +#define make_atomic_swap_body(S) int ## S sav; sav= *a; *a= v; v=sav; +#define make_atomic_cas_body(S) if ((ret= (*a == *cmp))) *a= set; else *cmp=*a; +#define make_atomic_load_body(S) ret= *a; +#define make_atomic_store_body(S) *a= v; diff --git a/include/atomic/x86-gcc.h b/include/atomic/x86-gcc.h index 7576db54d69..df6fcdc5ad2 100644 --- a/include/atomic/x86-gcc.h +++ b/include/atomic/x86-gcc.h @@ -16,44 +16,38 @@ /* XXX 64-bit atomic operations can be implemented using - cmpxchg8b, if necessary + cmpxchg8b, if necessary. Though I've heard that not all 64-bit + architectures support double-word (128-bit) cas. */ +#define MY_ATOMIC_MODE "gcc-x86" ## LOCK + /* fix -ansi errors while maintaining readability */ +#ifndef asm #define asm __asm__ +#endif -#define make_atomic_add_body8 \ - asm volatile (LOCK "xadd %0, %1;" : "+r" (v) , "+m" (a->val)) -#define make_atomic_swap_body8 \ - asm volatile ("xchg %0, %1;" : "+r" (v) , "+m" (a->val)) -#define make_atomic_cas_body8 \ +#define make_atomic_add_body(S) \ + asm volatile (LOCK "xadd %0, %1;" : "+r" (v) , "+m" (*a)) +#define make_atomic_swap_body(S) \ + asm volatile ("xchg %0, %1;" : "+r" (v) , "+m" (*a)) +#define make_atomic_cas_body(S) \ asm volatile (LOCK "cmpxchg %3, %0; setz %2;" \ - : "+m" (a->val), "+a" (*cmp), "=q" (ret): "r" (set)) + : "+m" (*a), "+a" (*cmp), "=q" (ret): "r" (set)) #ifdef MY_ATOMIC_MODE_DUMMY -#define make_atomic_load_body8 ret=a->val -#define make_atomic_store_body8 a->val=v +#define make_atomic_load_body(S) ret=*a +#define make_atomic_store_body(S) *a=v #else /* Actually 32-bit reads/writes are always atomic on x86 But we add LOCK here anyway to force memory barriers */ -#define make_atomic_load_body8 \ +#define make_atomic_load_body(S) \ ret=0; \ asm volatile (LOCK "cmpxchg %2, %0" \ - : "+m" (a->val), "+a" (ret): "r" (ret)) -#define make_atomic_store_body8 \ - asm volatile ("xchg %0, %1;" : "+m" (a->val) : "r" (v)) + : "+m" (*a), "+a" (ret): "r" (ret)) +#define make_atomic_store_body(S) \ + asm volatile ("xchg %0, %1;" : "+m" (*a) : "r" (v)) #endif -#define make_atomic_add_body16 make_atomic_add_body8 -#define make_atomic_add_body32 make_atomic_add_body8 -#define make_atomic_cas_body16 make_atomic_cas_body8 -#define make_atomic_cas_body32 make_atomic_cas_body8 -#define make_atomic_load_body16 make_atomic_load_body8 -#define make_atomic_load_body32 make_atomic_load_body8 -#define make_atomic_store_body16 make_atomic_store_body8 -#define make_atomic_store_body32 make_atomic_store_body8 -#define make_atomic_swap_body16 make_atomic_swap_body8 -#define make_atomic_swap_body32 make_atomic_swap_body8 - diff --git a/include/atomic/x86-msvc.h b/include/atomic/x86-msvc.h index 19645551196..a7e14d0e926 100644 --- a/include/atomic/x86-msvc.h +++ b/include/atomic/x86-msvc.h @@ -23,63 +23,75 @@ // (InterlockedCompareExchange, InterlockedCompareExchange16 // InterlockedExchangeAdd, InterlockedExchange) -#define make_atomic_add_body(REG) \ - _asm { \ - _asm mov REG, v \ - _asm LOCK xadd a->val, REG \ - _asm movzx v, REG \ +#ifndef _atomic_h_cleanup_ +#define _atomic_h_cleanup_ "atomic/x86-msvc.h" + +#define MY_ATOMIC_MODE "msvc-x86" ## LOCK + +#define make_atomic_add_body(S) \ + _asm { \ + _asm mov reg_ ## S, v \ + _asm LOCK xadd *a, reg_ ## S \ + _asm movzx v, reg_ ## S \ } -#define make_atomic_cas_body(AREG,REG2) \ - _asm { \ - _asm mov AREG, *cmp \ - _asm mov REG2, set \ - _asm LOCK cmpxchg a->val, REG2 \ - _asm mov *cmp, AREG \ - _asm setz al \ - _asm movzx ret, al \ +#define make_atomic_cas_body(S) \ + _asm { \ + _asm mov areg_ ## S, *cmp \ + _asm mov reg2_ ## S, set \ + _asm LOCK cmpxchg *a, reg2_ ## S \ + _asm mov *cmp, areg_ ## S \ + _asm setz al \ + _asm movzx ret, al \ } -#define make_atomic_swap_body(REG) \ - _asm { \ - _asm mov REG, v \ - _asm xchg a->val, REG \ - _asm mov v, REG \ +#define make_atomic_swap_body(S) \ + _asm { \ + _asm mov reg_ ## S, v \ + _asm xchg *a, reg_ ## S \ + _asm mov v, reg_ ## S \ } #ifdef MY_ATOMIC_MODE_DUMMY -#define make_atomic_load_body(AREG,REG) ret=a->val -#define make_atomic_store_body(REG) a->val=v +#define make_atomic_load_body(S) ret=*a +#define make_atomic_store_body(S) *a=v #else /* Actually 32-bit reads/writes are always atomic on x86 But we add LOCK here anyway to force memory barriers */ -#define make_atomic_load_body(AREG,REG2) \ - _asm { \ - _asm mov AREG, 0 \ - _asm mov REG2, AREG \ - _asm LOCK cmpxchg a->val, REG2 \ - _asm mov ret, AREG \ +#define make_atomic_load_body(S) \ + _asm { \ + _asm mov areg_ ## S, 0 \ + _asm mov reg2_ ## S, areg_ ## S \ + _asm LOCK cmpxchg *a, reg2_ ## S \ + _asm mov ret, areg_ ## S \ } -#define make_atomic_store_body(REG) \ - _asm { \ - _asm mov REG, v \ - _asm xchg a->val, REG \ +#define make_atomic_store_body(S) \ + _asm { \ + _asm mov reg_ ## S, v \ + _asm xchg *a, reg_ ## S \ } #endif -#define make_atomic_add_body8 make_atomic_add_body(al) -#define make_atomic_add_body16 make_atomic_add_body(ax) -#define make_atomic_add_body32 make_atomic_add_body(eax) -#define make_atomic_cas_body8 make_atomic_cas_body(al, bl) -#define make_atomic_cas_body16 make_atomic_cas_body(ax, bx) -#define make_atomic_cas_body32 make_atomic_cas_body(eax, ebx) -#define make_atomic_load_body8 make_atomic_load_body(al, bl) -#define make_atomic_load_body16 make_atomic_load_body(ax, bx) -#define make_atomic_load_body32 make_atomic_load_body(eax, ebx) -#define make_atomic_store_body8 make_atomic_store_body(al) -#define make_atomic_store_body16 make_atomic_store_body(ax) -#define make_atomic_store_body32 make_atomic_store_body(eax) -#define make_atomic_swap_body8 make_atomic_swap_body(al) -#define make_atomic_swap_body16 make_atomic_swap_body(ax) -#define make_atomic_swap_body32 make_atomic_swap_body(eax) +#define reg_8 al +#define reg_16 ax +#define reg_32 eax +#define areg_8 al +#define areg_16 ax +#define areg_32 eax +#define reg2_8 bl +#define reg2_16 bx +#define reg2_32 ebx + +#else /* cleanup */ + +#undef reg_8 +#undef reg_16 +#undef reg_32 +#undef areg_8 +#undef areg_16 +#undef areg_32 +#undef reg2_8 +#undef reg2_16 +#undef reg2_32 +#endif diff --git a/include/my_atomic.h b/include/my_atomic.h index 091edc0f57b..877443fe705 100644 --- a/include/my_atomic.h +++ b/include/my_atomic.h @@ -14,21 +14,9 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef atomic_rwlock_init - -#ifdef MY_ATOMIC_EXTRA_DEBUG -#ifndef MY_ATOMIC_MODE_RWLOCKS -#error MY_ATOMIC_EXTRA_DEBUG can be only used with MY_ATOMIC_MODE_RWLOCKS -#endif -#define LOCK_PTR void *rw; -#else -#define LOCK_PTR -#endif +#ifndef my_atomic_rwlock_init -typedef volatile struct {uint8 val; LOCK_PTR} my_atomic_8_t; -typedef volatile struct {uint16 val; LOCK_PTR} my_atomic_16_t; -typedef volatile struct {uint32 val; LOCK_PTR} my_atomic_32_t; -typedef volatile struct {uint64 val; LOCK_PTR} my_atomic_64_t; +#define intptr void * #ifndef MY_ATOMIC_MODE_RWLOCKS #include "atomic/nolock.h" @@ -38,6 +26,103 @@ typedef volatile struct {uint64 val; LOCK_PTR} my_atomic_64_t; #include "atomic/rwlock.h" #endif +#ifdef HAVE_INLINE + +#define make_atomic_add(S) \ +static inline int ## S my_atomic_add ## S( \ + int ## S volatile *a, int ## S v) \ +{ \ + make_atomic_add_body(S); \ + return v; \ +} + +#define make_atomic_swap(S) \ +static inline int ## S my_atomic_swap ## S( \ + int ## S volatile *a, int ## S v) \ +{ \ + make_atomic_swap_body(S); \ + return v; \ +} + +#define make_atomic_cas(S) \ +static inline int my_atomic_cas ## S(int ## S volatile *a, \ + int ## S *cmp, int ## S set) \ +{ \ + int8 ret; \ + make_atomic_cas_body(S); \ + return ret; \ +} + +#define make_atomic_load(S) \ +static inline int ## S my_atomic_load ## S(int ## S volatile *a) \ +{ \ + int ## S ret; \ + make_atomic_load_body(S); \ + return ret; \ +} + +#define make_atomic_store(S) \ +static inline void my_atomic_store ## S( \ + int ## S volatile *a, int ## S v) \ +{ \ + make_atomic_store_body(S); \ +} + +#else /* no inline functions */ + +#define make_atomic_add(S) \ +extern int ## S my_atomic_add ## S(int ## S volatile *a, int ## S v); + +#define make_atomic_swap(S) \ +extern int ## S my_atomic_swap ## S(int ## S volatile *a, int ## S v); + +#define make_atomic_cas(S) \ +extern int my_atomic_cas ## S(int ## S volatile *a, int ## S *cmp, int ## S set); + +#define make_atomic_load(S) \ +extern int ## S my_atomic_load ## S(int ## S volatile *a); + +#define make_atomic_store(S) \ +extern void my_atomic_store ## S(int ## S volatile *a, int ## S v); + +#endif + +make_atomic_add( 8) +make_atomic_add(16) +make_atomic_add(32) + +make_atomic_cas( 8) +make_atomic_cas(16) +make_atomic_cas(32) +make_atomic_cas(ptr) + +make_atomic_load( 8) +make_atomic_load(16) +make_atomic_load(32) +make_atomic_load(ptr) + +make_atomic_store( 8) +make_atomic_store(16) +make_atomic_store(32) +make_atomic_store(ptr) + +make_atomic_swap( 8) +make_atomic_swap(16) +make_atomic_swap(32) +make_atomic_swap(ptr) + +#undef make_atomic_add +#undef make_atomic_cas +#undef make_atomic_load +#undef make_atomic_store +#undef make_atomic_swap +#undef intaptr + +#ifdef _atomic_h_cleanup_ +#include _atomic_h_cleanup_ +#undef _atomic_h_cleanup_ +#endif + #define MY_ATOMIC_OK 0 #define MY_ATOMIC_NOT_1CPU 1 extern int my_atomic_initialize(); diff --git a/unittest/examples/no_plan-t.c b/unittest/examples/no_plan-t.c index 98e4d06def6..a40b46dc278 100644 --- a/unittest/examples/no_plan-t.c +++ b/unittest/examples/no_plan-t.c @@ -14,8 +14,8 @@ tests are skipped for an unknown reason. */ int main() { - ok(1, NULL); - ok(1, NULL); - ok(1, NULL); + ok(1, " "); + ok(1, " "); + ok(1, " "); return exit_status(); } diff --git a/unittest/mysys/Makefile.am b/unittest/mysys/Makefile.am index b1e0356bac6..8e6255b9e68 100644 --- a/unittest/mysys/Makefile.am +++ b/unittest/mysys/Makefile.am @@ -2,10 +2,10 @@ AM_CPPFLAGS = @ZLIB_INCLUDES@ -I$(top_builddir)/include AM_CPPFLAGS += -I$(top_srcdir)/include -I$(top_srcdir)/unittest/mytap -AM_LDFLAGS = -L$(top_builddir)/unittest/mytap -L$(top_builddir)/mysys -AM_LDFLAGS += -L$(top_builddir)/strings -L$(top_builddir)/dbug - -LDADD = -lmytap -lmysys -ldbug -lmystrings +LDADD = $(top_builddir)/unittest/mytap/libmytap.a \ + $(top_builddir)/mysys/libmysys.a \ + $(top_builddir)/dbug/libdbug.a \ + $(top_builddir)/strings/libmystrings.a noinst_PROGRAMS = bitmap-t base64-t my_atomic-t diff --git a/unittest/mysys/my_atomic-t.c b/unittest/mysys/my_atomic-t.c index 8a3fe129b07..71408ce957f 100644 --- a/unittest/mysys/my_atomic-t.c +++ b/unittest/mysys/my_atomic-t.c @@ -14,13 +14,12 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include - #include +#include #include #include -my_atomic_32_t a32,b32,c32; +int32 a32,b32,c32; my_atomic_rwlock_t rwl; pthread_attr_t thr_attr; @@ -36,8 +35,13 @@ pthread_handler_t test_atomic_add_handler(void *arg) for (x=((int)(&m)); m ; m--) { x=x*m+0x87654321; - my_atomic_add32(&a32, x, &rwl); - my_atomic_add32(&a32, -x, &rwl); + my_atomic_rwlock_wrlock(&rwl); + my_atomic_add32(&a32, x); + my_atomic_rwlock_wrunlock(&rwl); + + my_atomic_rwlock_wrlock(&rwl); + my_atomic_add32(&a32, -x); + my_atomic_rwlock_wrunlock(&rwl); } pthread_mutex_lock(&mutex); N--; @@ -57,17 +61,33 @@ pthread_handler_t test_atomic_add_handler(void *arg) pthread_handler_t test_atomic_swap_handler(void *arg) { int m=*(int *)arg; - uint32 x=my_atomic_add32(&b32, 1, &rwl); + int32 x; + + my_atomic_rwlock_wrlock(&rwl); + x=my_atomic_add32(&b32, 1); + my_atomic_rwlock_wrunlock(&rwl); - my_atomic_add32(&a32, x, &rwl); + my_atomic_rwlock_wrlock(&rwl); + my_atomic_add32(&a32, x); + my_atomic_rwlock_wrunlock(&rwl); for (; m ; m--) - x=my_atomic_swap32(&c32, x,&rwl); + { + my_atomic_rwlock_wrlock(&rwl); + x=my_atomic_swap32(&c32, x); + my_atomic_rwlock_wrunlock(&rwl); + } if (!x) - x=my_atomic_swap32(&c32, x,&rwl); + { + my_atomic_rwlock_wrlock(&rwl); + x=my_atomic_swap32(&c32, x); + my_atomic_rwlock_wrunlock(&rwl); + } - my_atomic_add32(&a32, -x, &rwl); + my_atomic_rwlock_wrlock(&rwl); + my_atomic_add32(&a32, -x); + my_atomic_rwlock_wrunlock(&rwl); pthread_mutex_lock(&mutex); N--; @@ -82,14 +102,25 @@ pthread_handler_t test_atomic_swap_handler(void *arg) */ pthread_handler_t test_atomic_cas_handler(void *arg) { - int m=*(int *)arg; - int32 x; + int m=*(int *)arg, ok; + int32 x,y; for (x=((int)(&m)); m ; m--) { - uint32 y=my_atomic_load32(&a32, &rwl); + my_atomic_rwlock_wrlock(&rwl); + y=my_atomic_load32(&a32); + my_atomic_rwlock_wrunlock(&rwl); + x=x*m+0x87654321; - while (!my_atomic_cas32(&a32, &y, y+x, &rwl)) ; - while (!my_atomic_cas32(&a32, &y, y-x, &rwl)) ; + do { + my_atomic_rwlock_wrlock(&rwl); + ok=my_atomic_cas32(&a32, &y, y+x); + my_atomic_rwlock_wrunlock(&rwl); + } while (!ok); + do { + my_atomic_rwlock_wrlock(&rwl); + ok=my_atomic_cas32(&a32, &y, y-x); + my_atomic_rwlock_wrunlock(&rwl); + } while (!ok); } pthread_mutex_lock(&mutex); N--; @@ -103,9 +134,9 @@ void test_atomic(const char *test, pthread_handler handler, int n, int m) pthread_t t; ulonglong now=my_getsystime(); - my_atomic_store32(&a32, 0, &rwl); - my_atomic_store32(&b32, 0, &rwl); - my_atomic_store32(&c32, 0, &rwl); + a32= 0; + b32= 0; + c32= 0; diag("Testing %s with %d threads, %d iterations... ", test, n, m); for (N=n ; n ; n--) @@ -116,8 +147,7 @@ void test_atomic(const char *test, pthread_handler handler, int n, int m) pthread_cond_wait(&cond, &mutex); pthread_mutex_unlock(&mutex); now=my_getsystime()-now; - ok(my_atomic_load32(&a32, &rwl) == 0, - "tested %s in %g secs", test, ((double)now)/1e7); + ok(a32 == 0, "tested %s in %g secs", test, ((double)now)/1e7); } int main() diff --git a/unittest/mytap/tap.c b/unittest/mytap/tap.c index 2b728670cea..d3f5013b4c9 100644 --- a/unittest/mytap/tap.c +++ b/unittest/mytap/tap.c @@ -199,8 +199,8 @@ int exit_status() { if (g_test.plan != g_test.last) { - diag("%d tests planned but only %d executed", - g_test.plan, g_test.last); + diag("%d tests planned but%s %d executed", + g_test.plan, (g_test.plan > g_test.last ? " only" : ""), g_test.last); return EXIT_FAILURE; } -- cgit v1.2.1 From 9f8c532f0c7d8472cb809be6f80bb596d38b336b Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 04:26:27 +0400 Subject: rpl_log.test, rpl_stm_log.result: Fixed failing test case field.cc, item_cmpfunc.cc, select.result: After merge fix mysql-test/r/select.result: After merge fix mysql-test/r/rpl_stm_log.result: Fixed failing test case sql/item_cmpfunc.cc: After merge fix sql/field.cc: After merge fix mysql-test/extra/rpl_tests/rpl_log.test: Fixed failing test case --- mysql-test/extra/rpl_tests/rpl_log.test | 11 ++++-- mysql-test/r/rpl_stm_log.result | 14 +++---- mysql-test/r/select.result | 66 +-------------------------------- sql/field.cc | 4 +- sql/item_cmpfunc.cc | 23 ++++++++++-- 5 files changed, 36 insertions(+), 82 deletions(-) diff --git a/mysql-test/extra/rpl_tests/rpl_log.test b/mysql-test/extra/rpl_tests/rpl_log.test index d87030ba531..cfbc8110d06 100644 --- a/mysql-test/extra/rpl_tests/rpl_log.test +++ b/mysql-test/extra/rpl_tests/rpl_log.test @@ -125,6 +125,12 @@ show slave status; --error 1220 show binlog events in 'slave-bin.000005' from 4; +# The table drops caused Cluster Replication wrapper to fail as event ID would never be the same.# Moving drops here. + +DROP TABLE t1; +DROP TABLE t2; +DROP TABLE t3; + # # Bug #6880: LAST_INSERT_ID() within a statement # @@ -135,13 +141,10 @@ reset master; set insert_id=5; insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); --replace_result $VERSION VERSION +--replace_column 2 # 5 # show binlog events; select * from t1; drop table t1; # End of 4.1 tests -# The table drops caused Cluster Replication wrapper to fail as event ID would never be the same.# Moving drops here. -DROP TABLE t1; -DROP TABLE t2; -DROP TABLE t3; diff --git a/mysql-test/r/rpl_stm_log.result b/mysql-test/r/rpl_stm_log.result index 23639cb7a99..e0b1aa12c9b 100644 --- a/mysql-test/r/rpl_stm_log.result +++ b/mysql-test/r/rpl_stm_log.result @@ -95,6 +95,9 @@ Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File # 127.0.0.1 root MASTER_PORT 1 master-bin.000002 388 # # master-bin.000002 Yes Yes # 0 0 388 # None 0 No # show binlog events in 'slave-bin.000005' from 4; ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log +DROP TABLE t1; +DROP TABLE t2; +DROP TABLE t3; create table t1(a int auto_increment primary key, b int); insert into t1 values (NULL, 1); reset master; @@ -102,16 +105,13 @@ set insert_id=5; insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); show binlog events; Log_name Pos Event_type Server_id End_log_pos Info -slave-bin.000001 4 Format_desc 2 98 Server ver: VERSION, Binlog ver: 4 -slave-bin.000001 98 Intvar 2 126 LAST_INSERT_ID=1 -slave-bin.000001 126 Intvar 2 154 INSERT_ID=5 -slave-bin.000001 154 Query 2 289 use `test`; insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()) +slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 +slave-bin.000001 # Intvar 2 # LAST_INSERT_ID=1 +slave-bin.000001 # Intvar 2 # INSERT_ID=5 +slave-bin.000001 # Query 2 # use `test`; insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()) select * from t1; a b 1 1 5 1 6 1 drop table t1; -DROP TABLE t1; -DROP TABLE t2; -DROP TABLE t3; diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result index 1e72d12ba06..7e54acfae2a 100644 --- a/mysql-test/r/select.result +++ b/mysql-test/r/select.result @@ -2726,74 +2726,10 @@ EXPLAIN SELECT * FROM t1 IGNORE INDEX (idx); id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 3 EXPLAIN SELECT * FROM t1 IGNORE INDEX (a); -ERROR HY000: Key 'a' doesn't exist in table 't1' -EXPLAIN SELECT * FROM t1 FORCE INDEX (a); -ERROR HY000: Key 'a' doesn't exist in table 't1' -DROP TABLE t1; -CREATE TABLE t1 (a int, INDEX idx(a)); -INSERT INTO t1 VALUES (2), (3), (1); -EXPLAIN SELECT * FROM t1 IGNORE INDEX (idx); -id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t1 ALL NULL NULL NULL NULL 3 -EXPLAIN SELECT * FROM t1 IGNORE INDEX (a); ERROR 42000: Key 'a' doesn't exist in table 't1' +EXPLAIN SELECT * FROM t1 FORCE INDEX (a); ERROR 42000: Key 'a' doesn't exist in table 't1' DROP TABLE t1; -CREATE TABLE t1 ( city char(30) ); -INSERT INTO t1 VALUES ('London'); -INSERT INTO t1 VALUES ('Paris'); -SELECT * FROM t1 WHERE city='London'; -city -London -SELECT * FROM t1 WHERE city='london'; -city -London -EXPLAIN SELECT * FROM t1 WHERE city='London' AND city='london'; -id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using where -SELECT * FROM t1 WHERE city='London' AND city='london'; -city -London -EXPLAIN SELECT * FROM t1 WHERE city LIKE '%london%' AND city='London'; -id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using where -SELECT * FROM t1 WHERE city LIKE '%london%' AND city='London'; -city -London -DROP TABLE t1; -create table t1 (a int(11) unsigned, b int(11) unsigned); -insert into t1 values (1,0), (1,1), (1,2); -select a-b from t1 order by 1; -a-b -0 -1 -18446744073709551615 -select a-b , (a-b < 0) from t1 order by 1; -a-b (a-b < 0) -0 0 -1 0 -18446744073709551615 0 -select a-b as d, (a-b >= 0), b from t1 group by b having d >= 0; -d (a-b >= 0) b -1 1 0 -0 1 1 -18446744073709551615 1 2 -select cast((a - b) as unsigned) from t1 order by 1; -cast((a - b) as unsigned) -0 -1 -18446744073709551615 -drop table t1; -create table t1 (a int(11)); -select all all * from t1; -a -select distinct distinct * from t1; -a -select all distinct * from t1; -ERROR HY000: Incorrect usage of ALL and DISTINCT -select distinct all * from t1; -ERROR HY000: Incorrect usage of ALL and DISTINCT -drop table t1; CREATE TABLE t1 ( K2C4 varchar(4) character set latin1 collate latin1_bin NOT NULL default '', K4N4 varchar(4) character set latin1 collate latin1_bin NOT NULL default '0000', diff --git a/sql/field.cc b/sql/field.cc index df735c59e08..af81214adda 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -50,8 +50,8 @@ const char field_separator=','; #define BLOB_PACK_LENGTH_TO_MAX_LENGH(arg) \ ((ulong) ((LL(1) << min(arg, 4) * 8) - LL(1))) -#define ASSERT_COLUMN_MARKED_FOR_READ DBUG_ASSERT(!table->read_set || bitmap_is_set(table->read_set, field_index)) -#define ASSERT_COLUMN_MARKED_FOR_WRITE DBUG_ASSERT(!table->write_set || bitmap_is_set(table->write_set, field_index)) +#define ASSERT_COLUMN_MARKED_FOR_READ DBUG_ASSERT(!table || (!table->read_set || bitmap_is_set(table->read_set, field_index))) +#define ASSERT_COLUMN_MARKED_FOR_WRITE DBUG_ASSERT(!table || (!table->write_set || bitmap_is_set(table->write_set, field_index))) /* Rules for merging different types of fields in UNION diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index a3464c3bc25..3bff7878f02 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -148,7 +148,7 @@ static void agg_cmp_type(THD *thd, Item_result *type, Item **items, uint nitems) } else if (res == Item::FUNC_ITEM) { - field= items[i]->tmp_table_field_from_field_type(0); + field= items[i]->tmp_table_field_from_field_type(0, 0); if (field) field->move_field(buff, &null_byte, 0); break; @@ -354,9 +354,21 @@ longlong Item_func_nop_all::val_int() static bool convert_constant_item(THD *thd, Field *field, Item **item) { int result= 0; + if (!(*item)->with_subselect && (*item)->const_item()) { + TABLE *table= field->table; + ulong orig_sql_mode= thd->variables.sql_mode; + my_bitmap_map *old_write_map; + my_bitmap_map *old_read_map; + + if (table) + { + old_write_map= dbug_tmp_use_all_columns(table, table->write_set); + old_read_map= dbug_tmp_use_all_columns(table, table->read_set); + } /* For comparison purposes allow invalid dates like 2000-01-32 */ + thd->variables.sql_mode|= MODE_INVALID_DATES; if (!(*item)->save_in_field(field, 1) && !((*item)->null_value)) { Item *tmp= new Item_int_with_ref(field->val_int(), *item, @@ -365,9 +377,12 @@ static bool convert_constant_item(THD *thd, Field *field, Item **item) thd->change_item_tree(item, tmp); result= 1; // Item was replaced } - table->in_use->variables.sql_mode= orig_sql_mode; - dbug_tmp_restore_column_map(table->write_set, old_write_map); - dbug_tmp_restore_column_map(table->read_set, old_read_map); + thd->variables.sql_mode= orig_sql_mode; + if (table) + { + dbug_tmp_restore_column_map(table->write_set, old_write_map); + dbug_tmp_restore_column_map(table->read_set, old_read_map); + } } return result; } -- cgit v1.2.1 From c991087c4620b3d29208c390d4afa2613e508b8f Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 09:25:49 +0200 Subject: Replication/Backup Team Tree test fixing. mysql-test/extra/rpl_tests/rpl_truncate_helper.test: Rename: mysql-test/extra/rpl_tests/rpl_truncate_helper.inc -> mysql-test/extra/rpl_tests/rpl_truncate_helper.test mysql-test/extra/rpl_tests/rpl_truncate.test: File included from test changed name. --- mysql-test/extra/rpl_tests/rpl_truncate.test | 12 +++---- mysql-test/extra/rpl_tests/rpl_truncate_helper.inc | 41 ---------------------- .../extra/rpl_tests/rpl_truncate_helper.test | 41 ++++++++++++++++++++++ 3 files changed, 47 insertions(+), 47 deletions(-) delete mode 100644 mysql-test/extra/rpl_tests/rpl_truncate_helper.inc create mode 100644 mysql-test/extra/rpl_tests/rpl_truncate_helper.test diff --git a/mysql-test/extra/rpl_tests/rpl_truncate.test b/mysql-test/extra/rpl_tests/rpl_truncate.test index 982623dfff7..37fd9fbc064 100644 --- a/mysql-test/extra/rpl_tests/rpl_truncate.test +++ b/mysql-test/extra/rpl_tests/rpl_truncate.test @@ -12,25 +12,25 @@ let $format = STATEMENT; let $stmt = TRUNCATE TABLE; ---source extra/rpl_tests/rpl_truncate_helper.inc +--source extra/rpl_tests/rpl_truncate_helper.test let $format = MIXED; let $stmt = TRUNCATE TABLE; ---source extra/rpl_tests/rpl_truncate_helper.inc +--source extra/rpl_tests/rpl_truncate_helper.test let $format = ROW; let $stmt = TRUNCATE TABLE; ---source extra/rpl_tests/rpl_truncate_helper.inc +--source extra/rpl_tests/rpl_truncate_helper.test let $format = STATEMENT; let $stmt = DELETE FROM; ---source extra/rpl_tests/rpl_truncate_helper.inc +--source extra/rpl_tests/rpl_truncate_helper.test let $format = MIXED; let $stmt = DELETE FROM; ---source extra/rpl_tests/rpl_truncate_helper.inc +--source extra/rpl_tests/rpl_truncate_helper.test let $format = ROW; let $stmt = DELETE FROM; ---source extra/rpl_tests/rpl_truncate_helper.inc +--source extra/rpl_tests/rpl_truncate_helper.test diff --git a/mysql-test/extra/rpl_tests/rpl_truncate_helper.inc b/mysql-test/extra/rpl_tests/rpl_truncate_helper.inc deleted file mode 100644 index 1e485baca36..00000000000 --- a/mysql-test/extra/rpl_tests/rpl_truncate_helper.inc +++ /dev/null @@ -1,41 +0,0 @@ - ---disable_query_log ---disable_warnings -connection slave; -STOP SLAVE; -connection master; -DROP TABLE IF EXISTS t1; -RESET MASTER; -connection slave; -DROP TABLE IF EXISTS t1; -RESET SLAVE; -START SLAVE; ---enable_warnings ---enable_query_log - ---echo **** On Master **** -connection master; -eval SET SESSION BINLOG_FORMAT=$format; -eval SET GLOBAL BINLOG_FORMAT=$format; - -eval CREATE TABLE t1 (a INT, b LONG) ENGINE=$engine; -INSERT INTO t1 VALUES (1,1), (2,2); -SELECT * FROM t1; ---echo **** On Slave **** -sync_slave_with_master; -INSERT INTO t1 VALUE (3,3); -SELECT * FROM t1; ---echo **** On Master **** -connection master; -eval $stmt t1; -SELECT * FROM t1; ---echo **** On Slave **** -sync_slave_with_master; -# Should be empty -SELECT * FROM t1; ---echo **** On Master **** -connection master; -DROP TABLE t1; ---replace_result $SERVER_VERSION SERVER_VERSION ---replace_regex /\/\* xid=[0-9]+ \*\//\/* xid= *\// /table_id: [0-9]+/table_id: #/ -SHOW BINLOG EVENTS; diff --git a/mysql-test/extra/rpl_tests/rpl_truncate_helper.test b/mysql-test/extra/rpl_tests/rpl_truncate_helper.test new file mode 100644 index 00000000000..1e485baca36 --- /dev/null +++ b/mysql-test/extra/rpl_tests/rpl_truncate_helper.test @@ -0,0 +1,41 @@ + +--disable_query_log +--disable_warnings +connection slave; +STOP SLAVE; +connection master; +DROP TABLE IF EXISTS t1; +RESET MASTER; +connection slave; +DROP TABLE IF EXISTS t1; +RESET SLAVE; +START SLAVE; +--enable_warnings +--enable_query_log + +--echo **** On Master **** +connection master; +eval SET SESSION BINLOG_FORMAT=$format; +eval SET GLOBAL BINLOG_FORMAT=$format; + +eval CREATE TABLE t1 (a INT, b LONG) ENGINE=$engine; +INSERT INTO t1 VALUES (1,1), (2,2); +SELECT * FROM t1; +--echo **** On Slave **** +sync_slave_with_master; +INSERT INTO t1 VALUE (3,3); +SELECT * FROM t1; +--echo **** On Master **** +connection master; +eval $stmt t1; +SELECT * FROM t1; +--echo **** On Slave **** +sync_slave_with_master; +# Should be empty +SELECT * FROM t1; +--echo **** On Master **** +connection master; +DROP TABLE t1; +--replace_result $SERVER_VERSION SERVER_VERSION +--replace_regex /\/\* xid=[0-9]+ \*\//\/* xid= *\// /table_id: [0-9]+/table_id: #/ +SHOW BINLOG EVENTS; -- cgit v1.2.1 From 95939476ab600f2e19ac6780fc985b0500b60b9c Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 13:03:29 +0500 Subject: Fix for bug #20496: func_time.test failure mysql-test/r/func_time.result: Fix for bug #20496: func_time.test failure - floating point calculations removed. mysql-test/t/func_time.test: Fix for bug #20496: func_time.test failure - floating point calculations removed. --- mysql-test/r/func_time.result | 13 ++++++++++--- mysql-test/t/func_time.test | 6 ++++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/mysql-test/r/func_time.result b/mysql-test/r/func_time.result index e7a00b71961..c90a4258036 100644 --- a/mysql-test/r/func_time.result +++ b/mysql-test/r/func_time.result @@ -671,7 +671,14 @@ select f1 from t1 where makedate(2006,2) between date(f1) and date(f3); f1 2006-01-02 drop table t1; -select now() - now() + 0, curtime() - curtime() + 0, +create table t1 select now() - now(), curtime() - curtime(), sec_to_time(1) + 0, from_unixtime(1) + 0; -now() - now() + 0 curtime() - curtime() + 0 sec_to_time(1) + 0 from_unixtime(1) + 0 -0.000000 0.000000 1.000000 19700101030001.000000 +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `now() - now()` double(23,6) NOT NULL default '0.000000', + `curtime() - curtime()` double(23,6) NOT NULL default '0.000000', + `sec_to_time(1) + 0` double(23,6) default NULL, + `from_unixtime(1) + 0` double(23,6) default NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +drop table t1; diff --git a/mysql-test/t/func_time.test b/mysql-test/t/func_time.test index 23e3b9d982a..d69545712c8 100644 --- a/mysql-test/t/func_time.test +++ b/mysql-test/t/func_time.test @@ -347,7 +347,9 @@ drop table t1; # Bug #16546 # -select now() - now() + 0, curtime() - curtime() + 0, - sec_to_time(1) + 0, from_unixtime(1) + 0; +create table t1 select now() - now(), curtime() - curtime(), + sec_to_time(1) + 0, from_unixtime(1) + 0; +show create table t1; +drop table t1; # End of 4.1 tests -- cgit v1.2.1 From d3d3ba7a33490fce0808b007a86885f51941f88f Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 10:50:23 +0200 Subject: ndb - bug#14935 : Correct error to TUX on node alloc fail. There is more bugs with db full. storage/ndb/src/kernel/blocks/dbtup/DbtupIndex.cpp: set ZMEM_NOMEM_ERROR correctly when TUX fails to alloc node from TUP --- storage/ndb/src/kernel/blocks/dbtup/DbtupIndex.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storage/ndb/src/kernel/blocks/dbtup/DbtupIndex.cpp b/storage/ndb/src/kernel/blocks/dbtup/DbtupIndex.cpp index b51cc02a703..878fe77d998 100644 --- a/storage/ndb/src/kernel/blocks/dbtup/DbtupIndex.cpp +++ b/storage/ndb/src/kernel/blocks/dbtup/DbtupIndex.cpp @@ -63,7 +63,7 @@ Dbtup::tuxAllocNode(Signal* signal, if ((ptr= alloc_fix_rec(fragPtr.p, tablePtr.p, &key, &frag_page_id)) == 0) { ljam(); - ndbrequire(terrorCode != 0); + terrorCode = ZMEM_NOMEM_ERROR; // caller sets error return terrorCode; } pageId= key.m_page_no; -- cgit v1.2.1 From 46cdd39ea68ca4635983a16ecc1d88b5309e43ef Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 14:05:14 +0500 Subject: BUG#18036 - update of table joined to self reports table as crashed Certain updates of table joined to self results in unexpected behavior. The problem was that record cache was mistakenly enabled for self-joined table updates. Normally record cache must be disabled for such updates. Fixed wrong condition in code that determines whether to use record cache for self-joined table updates. Only MyISAM tables were affected. mysql-test/r/myisam.result: Test case for BUG#18036. mysql-test/t/myisam.test: Test case for BUG#18036. sql/sql_update.cc: Fixed wrong condition in code that determines whether to use record cache for self-joined table updates. --- mysql-test/r/myisam.result | 8 ++++++++ mysql-test/t/myisam.test | 9 +++++++++ sql/sql_update.cc | 2 +- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/myisam.result b/mysql-test/r/myisam.result index 3b4519e5444..7aaf3c8f85a 100644 --- a/mysql-test/r/myisam.result +++ b/mysql-test/r/myisam.result @@ -748,3 +748,11 @@ select count(id1) from t1 where id2 = 10; count(id1) 5 drop table t1; +CREATE TABLE t1(a CHAR(9), b VARCHAR(7)) ENGINE=MyISAM; +INSERT INTO t1(a) VALUES('xxxxxxxxx'),('xxxxxxxxx'); +UPDATE t1 AS ta1,t1 AS ta2 SET ta1.b='aaaaaa',ta2.b='bbbbbb'; +SELECT * FROM t1; +a b +xxxxxxxxx bbbbbb +xxxxxxxxx bbbbbb +DROP TABLE t1; diff --git a/mysql-test/t/myisam.test b/mysql-test/t/myisam.test index 7e4cc324b12..5f948973141 100644 --- a/mysql-test/t/myisam.test +++ b/mysql-test/t/myisam.test @@ -705,4 +705,13 @@ select count(*) from t1 where id2 = 10; select count(id1) from t1 where id2 = 10; drop table t1; +# +# BUG#18036 - update of table joined to self reports table as crashed +# +CREATE TABLE t1(a CHAR(9), b VARCHAR(7)) ENGINE=MyISAM; +INSERT INTO t1(a) VALUES('xxxxxxxxx'),('xxxxxxxxx'); +UPDATE t1 AS ta1,t1 AS ta2 SET ta1.b='aaaaaa',ta2.b='bbbbbb'; +SELECT * FROM t1; +DROP TABLE t1; + # End of 4.1 tests diff --git a/sql/sql_update.cc b/sql/sql_update.cc index 48a8cf93917..16423b39786 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -862,7 +862,7 @@ int multi_update::prepare(List ¬_used_values, for (table_ref= all_tables; table_ref; table_ref=table_ref->next) { TABLE *table=table_ref->table; - if (!(tables_to_update & table->map) && + if ((tables_to_update & table->map) && mysql_lock_have_duplicate(thd, table, update_tables)) table->no_cache= 1; // Disable row cache } -- cgit v1.2.1 From fa3c7e99e528b692117aedb31efa73ef635e24fe Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 14:17:04 +0500 Subject: Additional fix for 18201 XML: ExtractValue works even if the xml fragment is not well-formed xml Changing error number --- mysql-test/r/xml.result | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mysql-test/r/xml.result b/mysql-test/r/xml.result index 5ff210106dd..21e8f804192 100644 --- a/mysql-test/r/xml.result +++ b/mysql-test/r/xml.result @@ -640,32 +640,32 @@ select extractValue('a','/a'); extractValue('a','/a') NULL Warnings: -Warning 1504 Incorrect XML value: 'parse error at line 1 pos 5: unexpected END-OF-INPUT' +Warning 1512 Incorrect XML value: 'parse error at line 1 pos 5: unexpected END-OF-INPUT' select extractValue('a<','/a'); extractValue('a<','/a') NULL Warnings: -Warning 1504 Incorrect XML value: 'parse error at line 1 pos 6: END-OF-INPUT unexpected (ident or '/' wanted)' +Warning 1512 Incorrect XML value: 'parse error at line 1 pos 6: END-OF-INPUT unexpected (ident or '/' wanted)' select extractValue('aaaa' wanted)' +Warning 1512 Incorrect XML value: 'parse error at line 1 pos 8: END-OF-INPUT unexpected ('>' wanted)' select extractValue('a','/a'); extractValue('a','/a') NULL Warnings: -Warning 1504 Incorrect XML value: 'parse error at line 1 pos 12: '' unexpected (END-OF-INPUT wanted)' +Warning 1512 Incorrect XML value: 'parse error at line 1 pos 12: '' unexpected (END-OF-INPUT wanted)' select extractValue('a','/a'); extractValue('a','/a') NULL Warnings: -Warning 1504 Incorrect XML value: 'parse error at line 1 pos 7: '>' unexpected (ident or string wanted)' +Warning 1512 Incorrect XML value: 'parse error at line 1 pos 7: '>' unexpected (ident or string wanted)' select extractValue('1','position()'); ERROR HY000: XPATH syntax error: '' select extractValue('1','last()'); -- cgit v1.2.1 From 4b316e6fd68a83421dffa5cf1d2add78bb8c8e65 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 12:45:34 +0300 Subject: unsigned char -> uchar Added missing copyright Indentation and prototype fixes Fixed compiler warning include/my_sys.h: Fix prototype for my_print_open_files. Indentation fixes mysys/mf_keycache.c: Fix that key cache can be compiled without #define THREAD mysys/my_error.c: Indentation cleanups mysys/my_memmem.c: Added missing copyright. Fix include files sql/event.cc: unsigned char -> uchar sql/field.cc: unsigned char -> uchar sql/filesort.cc: Indentation fix sql/ha_ndbcluster.cc: unsigned char -> uchar sql/ha_ndbcluster_binlog.cc: unsigned char -> uchar sql/item_strfunc.cc: unsigned char -> uchar sql/log_event.cc: unsigned char -> uchar sql/opt_range.cc: Indentation fixes sql/sql_crypt.cc: unsigned char -> uchar sql/sql_string.cc: unsigned char -> uchar sql/tztime.cc: unsigned char -> uchar storage/heap/hp_extra.c: Clear also next_block (See heap_scan_init) storage/heap/hp_test2.c: Set required struct memeber max_table_size (Fixes that hp_test2 works again) storage/myisam/mi_rsamepos.c: Fixed bug in mi_rsame_with_pos strings/decimal.c: Fixed compiler warning --- include/my_sys.h | 9 ++-- mysys/mf_keycache.c | 23 ++++++++-- mysys/my_error.c | 4 +- mysys/my_memmem.c | 19 +++++++- sql/event.cc | 4 +- sql/field.cc | 10 ++--- sql/filesort.cc | 104 +++++++++++++++++++++---------------------- sql/ha_ndbcluster.cc | 4 +- sql/ha_ndbcluster_binlog.cc | 10 ++--- sql/item_strfunc.cc | 6 +-- sql/log_event.cc | 6 +-- sql/opt_range.cc | 12 ++--- sql/sql_crypt.cc | 4 +- sql/sql_string.cc | 6 +-- sql/tztime.cc | 14 +++--- storage/heap/hp_extra.c | 2 +- storage/heap/hp_test2.c | 1 + storage/myisam/mi_rsamepos.c | 3 +- strings/decimal.c | 2 +- 19 files changed, 141 insertions(+), 102 deletions(-) diff --git a/include/my_sys.h b/include/my_sys.h index 4ea7cecf0a1..5d155eb20cc 100644 --- a/include/my_sys.h +++ b/include/my_sys.h @@ -547,7 +547,6 @@ extern File my_open(const char *FileName,int Flags,myf MyFlags); extern File my_register_filename(File fd, const char *FileName, enum file_type type_of_file, uint error_message_number, myf MyFlags); -extern void my_print_open_files(void); extern File my_create(const char *FileName,int CreateFlags, int AccessFlags, myf MyFlags); extern int my_close(File Filedes,myf MyFlags); @@ -638,7 +637,7 @@ extern void allow_break(void); #endif #ifdef EXTRA_DEBUG -void my_print_open_files(); +void my_print_open_files(void); #else #define my_print_open_files() #endif @@ -672,13 +671,15 @@ extern my_string my_path(my_string to,const char *progname, const char *own_pathname_part); extern my_string my_load_path(my_string to, const char *path, const char *own_path_prefix); -extern int wild_compare(const char *str,const char *wildstr,pbool str_is_pattern); +extern int wild_compare(const char *str,const char *wildstr, + pbool str_is_pattern); extern WF_PACK *wf_comp(my_string str); extern int wf_test(struct wild_file_pack *wf_pack,const char *name); extern void wf_end(struct wild_file_pack *buffer); extern size_s strip_sp(my_string str); extern void get_date(my_string to,int timeflag,time_t use_time); -extern void soundex(CHARSET_INFO *, my_string out_pntr, my_string in_pntr,pbool remove_garbage); +extern void soundex(CHARSET_INFO *, my_string out_pntr, my_string in_pntr, + pbool remove_garbage); extern int init_record_cache(RECORD_CACHE *info,uint cachesize,File file, uint reclength,enum cache_type type, pbool use_async_io); diff --git a/mysys/mf_keycache.c b/mysys/mf_keycache.c index 71d73048a7b..e6f4348968f 100644 --- a/mysys/mf_keycache.c +++ b/mysys/mf_keycache.c @@ -470,8 +470,10 @@ int resize_key_cache(KEY_CACHE *keycache, uint key_cache_block_size, uint age_threshold) { int blocks; +#ifdef THREAD struct st_my_thread_var *thread; KEYCACHE_WQUEUE *wqueue; +#endif DBUG_ENTER("resize_key_cache"); if (!keycache->key_cache_inited) @@ -1102,8 +1104,12 @@ static void unreg_request(KEY_CACHE *keycache, static inline void remove_reader(BLOCK_LINK *block) { +#ifdef THREAD if (! --block->hash_link->requests && block->condvar) keycache_pthread_cond_signal(block->condvar); +#else + --block->hash_link->requests; +#endif } @@ -1112,7 +1118,8 @@ static inline void remove_reader(BLOCK_LINK *block) signals on its termination */ -static inline void wait_for_readers(KEY_CACHE *keycache, BLOCK_LINK *block) +static inline void wait_for_readers(KEY_CACHE *keycache __attribute__((unused)), + BLOCK_LINK *block) { #ifdef THREAD struct st_my_thread_var *thread= my_thread_var; @@ -1209,7 +1216,6 @@ static HASH_LINK *get_hash_link(KEY_CACHE *keycache, int file, my_off_t filepos) { reg1 HASH_LINK *hash_link, **start; - KEYCACHE_PAGE page; #if defined(KEYCACHE_DEBUG) int cnt; #endif @@ -1264,6 +1270,7 @@ restart: #ifdef THREAD /* Wait for a free hash link */ struct st_my_thread_var *thread= my_thread_var; + KEYCACHE_PAGE page; KEYCACHE_DBUG_PRINT("get_hash_link", ("waiting")); page.file= file; page.filepos= filepos; @@ -1588,8 +1595,10 @@ restart: /* Remove the hash link for this page from the hash table */ unlink_hash(keycache, block->hash_link); /* All pending requests for this page must be resubmitted */ +#ifdef THREAD if (block->wqueue[COND_FOR_SAVED].last_thread) release_queue(&block->wqueue[COND_FOR_SAVED]); +#endif } link_to_file_list(keycache, block, file, (my_bool)(block->hash_link ? 1 : 0)); @@ -1669,7 +1678,7 @@ restart: portion is less than read_length, but not less than min_length. */ -static void read_block(KEY_CACHE *keycache, +static void read_block(KEY_CACHE *keycache __attribute__((unused)), BLOCK_LINK *block, uint read_length, uint min_length, my_bool primary) { @@ -1707,8 +1716,10 @@ static void read_block(KEY_CACHE *keycache, KEYCACHE_DBUG_PRINT("read_block", ("primary request: new page in cache")); /* Signal that all pending requests for this page now can be processed */ +#ifdef THREAD if (block->wqueue[COND_FOR_REQUESTED].last_thread) release_queue(&block->wqueue[COND_FOR_REQUESTED]); +#endif } else { @@ -1973,9 +1984,11 @@ int key_cache_insert(KEY_CACHE *keycache, block->length= read_length+offset; KEYCACHE_DBUG_PRINT("key_cache_insert", ("primary request: new page in cache")); +#ifdef THREAD /* Signal that all pending requests for this now can be processed. */ if (block->wqueue[COND_FOR_REQUESTED].last_thread) release_queue(&block->wqueue[COND_FOR_REQUESTED]); +#endif } remove_reader(block); @@ -2219,9 +2232,11 @@ static void free_block(KEY_CACHE *keycache, BLOCK_LINK *block) /* Keep track of the number of currently unused blocks. */ keycache->blocks_unused++; +#ifdef THREAD /* All pending requests for this page must be resubmitted. */ if (block->wqueue[COND_FOR_SAVED].last_thread) release_queue(&block->wqueue[COND_FOR_SAVED]); +#endif } @@ -2275,12 +2290,14 @@ static int flush_cached_blocks(KEY_CACHE *keycache, if (!last_errno) last_errno= errno ? errno : -1; } + #ifdef THREAD /* Let to proceed for possible waiting requests to write to the block page. It might happen only during an operation to resize the key cache. */ if (block->wqueue[COND_FOR_SAVED].last_thread) release_queue(&block->wqueue[COND_FOR_SAVED]); +#endif /* type will never be FLUSH_IGNORE_CHANGED here */ if (! (type == FLUSH_KEEP || type == FLUSH_FORCE_WRITE)) { diff --git a/mysys/my_error.c b/mysys/my_error.c index d7177e7a047..e60c4eb21d7 100644 --- a/mysys/my_error.c +++ b/mysys/my_error.c @@ -53,8 +53,10 @@ static struct my_err_head int meh_first; /* error number matching array slot 0 */ int meh_last; /* error number matching last slot */ } my_errmsgs_globerrs = {NULL, globerrs, EE_ERROR_FIRST, EE_ERROR_LAST}; + static struct my_err_head *my_errmsgs_list= &my_errmsgs_globerrs; + /* Error message to user @@ -76,7 +78,6 @@ int my_error(int nr, myf MyFlags, ...) va_list args; char ebuff[ERRMSGSIZE + 20]; DBUG_ENTER("my_error"); - DBUG_PRINT("my", ("nr: %d MyFlags: %d errno: %d", nr, MyFlags, errno)); /* Search for the error messages array, which could contain the message. */ @@ -102,6 +103,7 @@ int my_error(int nr, myf MyFlags, ...) DBUG_RETURN((*error_handler_hook)(nr, ebuff, MyFlags)); } + /* Error as printf diff --git a/mysys/my_memmem.c b/mysys/my_memmem.c index 682a1314f09..86916bff860 100644 --- a/mysys/my_memmem.c +++ b/mysys/my_memmem.c @@ -1,4 +1,21 @@ -#include "my_base.h" +/* Copyright (C) 2000 MySQL AB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#include +#include /* my_memmem, port of a GNU extension. diff --git a/sql/event.cc b/sql/event.cc index 9ca5c62fc1c..2e78ef3e3d8 100644 --- a/sql/event.cc +++ b/sql/event.cc @@ -205,8 +205,8 @@ LEX_STRING interval_type_to_name[] = { int sortcmp_lex_string(LEX_STRING s, LEX_STRING t, CHARSET_INFO *cs) { - return cs->coll->strnncollsp(cs, (unsigned char *) s.str,s.length, - (unsigned char *) t.str,t.length, 0); + return cs->coll->strnncollsp(cs, (uchar *) s.str,s.length, + (uchar *) t.str,t.length, 0); } diff --git a/sql/field.cc b/sql/field.cc index 1f65adca2d5..f5b75e6a4cd 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -5211,7 +5211,7 @@ int Field_year::store(const char *from, uint len,CHARSET_INFO *cs) else if (nr > 1900) nr-= 1900; } - *ptr= (char) (unsigned char) nr; + *ptr= (char) (uchar) nr; return error; } @@ -5243,7 +5243,7 @@ int Field_year::store(longlong nr, bool unsigned_val) else if (nr > 1900) nr-= 1900; } - *ptr= (char) (unsigned char) nr; + *ptr= (char) (uchar) nr; return 0; } @@ -6200,9 +6200,9 @@ int Field_string::cmp(const char *a_ptr, const char *b_ptr) void Field_string::sort_string(char *to,uint length) { - uint tmp=my_strnxfrm(field_charset, - (unsigned char *) to, length, - (unsigned char *) ptr, field_length); + uint tmp= my_strnxfrm(field_charset, + (uchar*) to, length, + (uchar*) ptr, field_length); DBUG_ASSERT(tmp == length); } diff --git a/sql/filesort.cc b/sql/filesort.cc index 4e48df5db9f..e712bed9e13 100644 --- a/sql/filesort.cc +++ b/sql/filesort.cc @@ -672,62 +672,62 @@ static void make_sortkey(register SORTPARAM *param, switch (sort_field->result_type) { case STRING_RESULT: { - CHARSET_INFO *cs=item->collation.collation; - char fill_char= ((cs->state & MY_CS_BINSORT) ? (char) 0 : ' '); - int diff; - uint sort_field_length; - - if (maybe_null) - *to++=1; - /* All item->str() to use some extra byte for end null.. */ - String tmp((char*) to,sort_field->length+4,cs); - String *res= item->str_result(&tmp); - if (!res) - { - if (maybe_null) - bzero((char*) to-1,sort_field->length+1); - else - { - DBUG_PRINT("warning", - ("Got null on something that shouldn't be null")); - bzero((char*) to,sort_field->length); // Avoid crash - } - break; - } - length= res->length(); - sort_field_length= sort_field->length - sort_field->suffix_length; - diff=(int) (sort_field_length - length); - if (diff < 0) - { - diff=0; /* purecov: inspected */ - length= sort_field_length; - } - if (sort_field->suffix_length) - { - /* Store length last in result_string */ - store_length(to + sort_field_length, length, - sort_field->suffix_length); - } - if (sort_field->need_strxnfrm) + CHARSET_INFO *cs=item->collation.collation; + char fill_char= ((cs->state & MY_CS_BINSORT) ? (char) 0 : ' '); + int diff; + uint sort_field_length; + + if (maybe_null) + *to++=1; + /* All item->str() to use some extra byte for end null.. */ + String tmp((char*) to,sort_field->length+4,cs); + String *res= item->str_result(&tmp); + if (!res) + { + if (maybe_null) + bzero((char*) to-1,sort_field->length+1); + else { - char *from=(char*) res->ptr(); - uint tmp_length; - if ((unsigned char *)from == to) - { - set_if_smaller(length,sort_field->length); - memcpy(param->tmp_buffer,from,length); - from=param->tmp_buffer; - } - tmp_length= my_strnxfrm(cs,to,sort_field->length, - (unsigned char *) from, length); - DBUG_ASSERT(tmp_length == sort_field->length); + DBUG_PRINT("warning", + ("Got null on something that shouldn't be null")); + bzero((char*) to,sort_field->length); // Avoid crash } - else + break; + } + length= res->length(); + sort_field_length= sort_field->length - sort_field->suffix_length; + diff=(int) (sort_field_length - length); + if (diff < 0) + { + diff=0; /* purecov: inspected */ + length= sort_field_length; + } + if (sort_field->suffix_length) + { + /* Store length last in result_string */ + store_length(to + sort_field_length, length, + sort_field->suffix_length); + } + if (sort_field->need_strxnfrm) + { + char *from=(char*) res->ptr(); + uint tmp_length; + if ((uchar*) from == to) { - my_strnxfrm(cs,(uchar*)to,length,(const uchar*)res->ptr(),length); - cs->cset->fill(cs, (char *)to+length,diff,fill_char); + set_if_smaller(length,sort_field->length); + memcpy(param->tmp_buffer,from,length); + from=param->tmp_buffer; } - break; + tmp_length= my_strnxfrm(cs,to,sort_field->length, + (uchar*) from, length); + DBUG_ASSERT(tmp_length == sort_field->length); + } + else + { + my_strnxfrm(cs,(uchar*)to,length,(const uchar*)res->ptr(),length); + cs->cset->fill(cs, (char *)to+length,diff,fill_char); + } + break; } case INT_RESULT: { diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 8c4d6d18b9b..89d426770ec 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -119,7 +119,7 @@ int ndbcluster_util_inited= 0; static Ndb* g_ndb= NULL; Ndb_cluster_connection* g_ndb_cluster_connection= NULL; -unsigned char g_node_id_map[max_ndb_nodes]; +uchar g_node_id_map[max_ndb_nodes]; // Handler synchronization pthread_mutex_t ndbcluster_mutex; @@ -1005,7 +1005,7 @@ static int fix_unique_index_attr_order(NDB_INDEX_DATA &data, if (data.unique_index_attrid_map) my_free((char*)data.unique_index_attrid_map, MYF(0)); - data.unique_index_attrid_map= (unsigned char*)my_malloc(sz,MYF(MY_WME)); + data.unique_index_attrid_map= (uchar*)my_malloc(sz,MYF(MY_WME)); KEY_PART_INFO* key_part= key_info->key_part; KEY_PART_INFO* end= key_part+key_info->key_parts; diff --git a/sql/ha_ndbcluster_binlog.cc b/sql/ha_ndbcluster_binlog.cc index 3b93eb4b4c9..eeacd568978 100644 --- a/sql/ha_ndbcluster_binlog.cc +++ b/sql/ha_ndbcluster_binlog.cc @@ -138,7 +138,7 @@ static void print_records(TABLE *table, const char *record) for (int i= 0; i < n && pos < 20; i++) { - pos+= sprintf(&buf[pos]," %x", (int) (unsigned char) field_ptr[i]); + pos+= sprintf(&buf[pos]," %x", (int) (uchar) field_ptr[i]); } buf[pos]= 0; DBUG_PRINT("info",("[%u]field_ptr[0->%d]: %s", j, n, buf)); @@ -870,11 +870,11 @@ int ndbcluster_setup_binlog_table_shares(THD *thd) struct Cluster_schema { - unsigned char db_length; + uchar db_length; char db[64]; - unsigned char name_length; + uchar name_length; char name[64]; - unsigned char slock_length; + uchar slock_length; uint32 slock[SCHEMA_SLOCK_SIZE/4]; unsigned short query_length; char *query; @@ -973,7 +973,7 @@ static char *ndb_pack_varchar(const NDBCOL *col, char *buf, memcpy(buf, str, sz); break; case NDBCOL::ArrayTypeShortVar: - *(unsigned char*)buf= (unsigned char)sz; + *(uchar*)buf= (uchar)sz; memcpy(buf + 1, str, sz); break; case NDBCOL::ArrayTypeMediumVar: diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index eb1fbf4855d..0a004047220 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -127,11 +127,11 @@ String *Item_func_md5::val_str(String *str) if (sptr) { my_MD5_CTX context; - unsigned char digest[16]; + uchar digest[16]; null_value=0; my_MD5Init (&context); - my_MD5Update (&context,(unsigned char *) sptr->ptr(), sptr->length()); + my_MD5Update (&context,(uchar *) sptr->ptr(), sptr->length()); my_MD5Final (digest, &context); if (str->alloc(32)) // Ensure that memory is free { @@ -170,7 +170,7 @@ String *Item_func_sha::val_str(String *str) mysql_sha1_reset(&context); /* We do not have to check for error here */ /* No need to check error as the only case would be too long message */ mysql_sha1_input(&context, - (const unsigned char *) sptr->ptr(), sptr->length()); + (const uchar *) sptr->ptr(), sptr->length()); /* Ensure that memory is free and we got result */ if (!( str->alloc(SHA1_HASH_SIZE*2) || (mysql_sha1_result(&context,digest)))) diff --git a/sql/log_event.cc b/sql/log_event.cc index 78ab54aeb79..40afed3ca59 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -5681,7 +5681,7 @@ Table_map_log_event::Table_map_log_event(THD *thd, TABLE *tbl, ulong tid, /* If malloc fails, catched in is_valid() */ if ((m_memory= my_malloc(m_colcnt, MYF(MY_WME)))) { - m_coltype= reinterpret_cast(m_memory); + m_coltype= reinterpret_cast(m_memory); for (unsigned int i= 0 ; i < m_table->s->fields ; ++i) m_coltype[i]= m_table->field[i]->type(); } @@ -5737,11 +5737,11 @@ Table_map_log_event::Table_map_log_event(const char *buf, uint event_len, /* Extract the length of the various parts from the buffer */ byte const* const ptr_dblen= (byte const*)vpart + 0; - m_dblen= *(unsigned char*) ptr_dblen; + m_dblen= *(uchar*) ptr_dblen; /* Length of database name + counter + terminating null */ byte const* const ptr_tbllen= ptr_dblen + m_dblen + 2; - m_tbllen= *(unsigned char*) ptr_tbllen; + m_tbllen= *(uchar*) ptr_tbllen; /* Length of table name + counter + terminating null */ byte const* const ptr_colcnt= ptr_tbllen + m_tbllen + 2; diff --git a/sql/opt_range.cc b/sql/opt_range.cc index c905d8aada7..21d5cb28ea2 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -5157,8 +5157,8 @@ get_mm_parts(RANGE_OPT_PARAM *param, COND *cond_func, Field *field, static SEL_ARG * -get_mm_leaf(RANGE_OPT_PARAM *param, COND *conf_func, Field *field, KEY_PART *key_part, - Item_func::Functype type,Item *value) +get_mm_leaf(RANGE_OPT_PARAM *param, COND *conf_func, Field *field, + KEY_PART *key_part, Item_func::Functype type,Item *value) { uint maybe_null=(uint) field->real_maybe_null(); bool optimize_range; @@ -9119,10 +9119,10 @@ get_constant_key_infix(KEY *index_info, SEL_ARG *index_range_tree, uint field_length= cur_part->store_length; if ((cur_range->maybe_null && - cur_range->min_value[0] && cur_range->max_value[0]) - || - (memcmp(cur_range->min_value, cur_range->max_value, field_length) == 0)) - { /* cur_range specifies 'IS NULL' or an equality condition. */ + cur_range->min_value[0] && cur_range->max_value[0]) || + !memcmp(cur_range->min_value, cur_range->max_value, field_length)) + { + /* cur_range specifies 'IS NULL' or an equality condition. */ memcpy(key_ptr, cur_range->min_value, field_length); key_ptr+= field_length; *key_infix_len+= field_length; diff --git a/sql/sql_crypt.cc b/sql/sql_crypt.cc index f21a109e95d..4e73941fb49 100644 --- a/sql/sql_crypt.cc +++ b/sql/sql_crypt.cc @@ -52,7 +52,7 @@ void SQL_CRYPT::crypt_init(ulong *rand_nr) decode_buff[+i]=a; } for (i=0 ; i <= 255 ; i++) - encode_buff[(unsigned char) decode_buff[i]]=i; + encode_buff[(uchar) decode_buff[i]]=i; org_rand=rand; shift=0; } @@ -75,7 +75,7 @@ void SQL_CRYPT::decode(char *str,uint length) for (uint i=0; i < length; i++) { shift^=(uint) (my_rnd(&rand)*255.0); - uint idx= (uint) ((unsigned char) str[0] ^ shift); + uint idx= (uint) ((uchar) str[0] ^ shift); *str = decode_buff[idx]; shift^= (uint) (uchar) *str++; } diff --git a/sql/sql_string.cc b/sql/sql_string.cc index 19ee9f259dc..596f4edadac 100644 --- a/sql/sql_string.cc +++ b/sql/sql_string.cc @@ -720,8 +720,8 @@ void String::qs_append(uint i) int sortcmp(const String *s,const String *t, CHARSET_INFO *cs) { return cs->coll->strnncollsp(cs, - (unsigned char *) s->ptr(),s->length(), - (unsigned char *) t->ptr(),t->length(), 0); + (uchar *) s->ptr(),s->length(), + (uchar *) t->ptr(),t->length(), 0); } @@ -734,7 +734,7 @@ int sortcmp(const String *s,const String *t, CHARSET_INFO *cs) t Second string NOTE: - Strings are compared as a stream of unsigned chars + Strings are compared as a stream of uchars RETURN < 0 s < t diff --git a/sql/tztime.cc b/sql/tztime.cc index 77d7efdcf7c..f8de9bb48aa 100644 --- a/sql/tztime.cc +++ b/sql/tztime.cc @@ -107,7 +107,7 @@ typedef struct st_time_zone_info uint revcnt; // Number of transition descr. for TIME->my_time_t conversion /* The following are dynamical arrays are allocated in MEM_ROOT */ my_time_t *ats; // Times of transitions between time types - unsigned char *types; // Local time types for transitions + uchar *types; // Local time types for transitions TRAN_TYPE_INFO *ttis; // Local time types descriptions #ifdef ABBR_ARE_USED /* Storage for local time types abbreviations. They are stored as ASCIIZ */ @@ -222,7 +222,7 @@ tz_load(const char *name, TIME_ZONE_INFO *sp, MEM_ROOT *storage) sp->ats= (my_time_t *)tzinfo_buf; tzinfo_buf+= ALIGN_SIZE(sp->timecnt * sizeof(my_time_t)); - sp->types= (unsigned char *)tzinfo_buf; + sp->types= (uchar *)tzinfo_buf; tzinfo_buf+= ALIGN_SIZE(sp->timecnt); sp->ttis= (TRAN_TYPE_INFO *)tzinfo_buf; tzinfo_buf+= ALIGN_SIZE(sp->typecnt * sizeof(TRAN_TYPE_INFO)); @@ -237,7 +237,7 @@ tz_load(const char *name, TIME_ZONE_INFO *sp, MEM_ROOT *storage) for (i= 0; i < sp->timecnt; i++) { - sp->types[i]= (unsigned char) *p++; + sp->types[i]= (uchar) *p++; if (sp->types[i] >= sp->typecnt) return 1; } @@ -248,10 +248,10 @@ tz_load(const char *name, TIME_ZONE_INFO *sp, MEM_ROOT *storage) ttisp= &sp->ttis[i]; ttisp->tt_gmtoff= int4net(p); p+= 4; - ttisp->tt_isdst= (unsigned char) *p++; + ttisp->tt_isdst= (uchar) *p++; if (ttisp->tt_isdst != 0 && ttisp->tt_isdst != 1) return 1; - ttisp->tt_abbrind= (unsigned char) *p++; + ttisp->tt_abbrind= (uchar) *p++; if (ttisp->tt_abbrind > sp->charcnt) return 1; } @@ -1801,7 +1801,7 @@ tz_load_from_open_tables(const String *tz_name, TABLE_LIST *tz_tables) TIME_ZONE_INFO structure */ my_time_t ats[TZ_MAX_TIMES]; - unsigned char types[TZ_MAX_TIMES]; + uchar types[TZ_MAX_TIMES]; TRAN_TYPE_INFO ttis[TZ_MAX_TYPES]; #ifdef ABBR_ARE_USED char chars[max(TZ_MAX_CHARS + 1, (2 * (MY_TZNAME_MAX + 1)))]; @@ -2038,7 +2038,7 @@ tz_load_from_open_tables(const String *tz_name, TABLE_LIST *tz_tables) tz_info->ats= (my_time_t *)alloc_buff; memcpy(tz_info->ats, ats, tz_info->timecnt * sizeof(my_time_t)); alloc_buff+= ALIGN_SIZE(sizeof(my_time_t) * tz_info->timecnt); - tz_info->types= (unsigned char *)alloc_buff; + tz_info->types= (uchar *)alloc_buff; memcpy(tz_info->types, types, tz_info->timecnt); alloc_buff+= ALIGN_SIZE(tz_info->timecnt); #ifdef ABBR_ARE_USED diff --git a/storage/heap/hp_extra.c b/storage/heap/hp_extra.c index abb632707f2..0211177a088 100644 --- a/storage/heap/hp_extra.c +++ b/storage/heap/hp_extra.c @@ -57,6 +57,7 @@ int heap_reset(HP_INFO *info) info->current_record= (ulong) ~0L; info->current_hash_ptr=0; info->update=0; + info->next_block=0; return 0; } @@ -83,4 +84,3 @@ static void heap_extra_keyflag(register HP_INFO *info, } } } - diff --git a/storage/heap/hp_test2.c b/storage/heap/hp_test2.c index 8d2a8bc3da2..c1d987a3b5f 100644 --- a/storage/heap/hp_test2.c +++ b/storage/heap/hp_test2.c @@ -74,6 +74,7 @@ int main(int argc, char *argv[]) get_options(argc,argv); bzero(&hp_create_info, sizeof(hp_create_info)); + hp_create_info.max_table_size= 1024L*1024L; write_count=update=opt_delete=0; key_check=0; diff --git a/storage/myisam/mi_rsamepos.c b/storage/myisam/mi_rsamepos.c index 35cdd41e297..c4bd5fa16fa 100644 --- a/storage/myisam/mi_rsamepos.c +++ b/storage/myisam/mi_rsamepos.c @@ -31,8 +31,9 @@ int mi_rsame_with_pos(MI_INFO *info, byte *record, int inx, my_off_t filepos) { DBUG_ENTER("mi_rsame_with_pos"); + DBUG_PRINT("enter",("index: %d filepos: %ld", inx, (long) filepos)); - if (inx < -1 || ! mi_is_key_active(info->s->state.key_map, inx)) + if (inx < -1 || inx >= 0 && ! mi_is_key_active(info->s->state.key_map, inx)) { DBUG_RETURN(my_errno=HA_ERR_WRONG_INDEX); } diff --git a/strings/decimal.c b/strings/decimal.c index c3ab9f51a99..7ed2d8f53df 100644 --- a/strings/decimal.c +++ b/strings/decimal.c @@ -1353,7 +1353,7 @@ int bin2decimal(char *from, decimal_t *to, int precision, int scale) } from+=i; *buf=x ^ mask; - if (((uint32)*buf) >= powers10[intg0x+1]) + if (((ulonglong)*buf) >= (ulonglong) powers10[intg0x+1]) goto err; if (buf > to->buf || *buf != 0) buf++; -- cgit v1.2.1 From 0ff8d486618ba25549c051146be235faf0868533 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 14:13:34 +0400 Subject: Fix of test suite in scope of fixing BUG#18023: IM: instance can be started several times; monitor interval must be > 2sec mysql-test/r/im_daemon_life_cycle.result: Updated result file. mysql-test/r/im_life_cycle.result: Updated result file. mysql-test/r/im_utils.result: Updated result file. mysql-test/t/im_daemon_life_cycle-im.opt: Set monitoring interval to 1 second in order to: - be consistent with 5.1; - speed up tests; mysql-test/t/im_daemon_life_cycle.imtest: 1. Use wait_for_start.sh script to minimize chance of race condition. 2. Polishing. mysql-test/t/im_life_cycle.imtest: 1. Use wait_for_start.sh and wait_for_stop.sh scripts to minimize chance of race condition; 2. Remove some statements, because there is no way now to stabilize their output. 3. Polishing; mysql-test/t/im_utils.imtest: 1. Use wait_for_start.sh script to minimize chance of race condition. 2. Polishing. mysql-test/t/kill_n_check.sh: 1. Make timeout configurable by command-line argument; 2. Change algorithm of waiting for process to restart to be more robust. mysql-test/t/im_life_cycle-im.opt: Set monitoring interval to 1 second in order to: - be consistent with 5.1; - speed up tests; mysql-test/t/im_utils-im.opt: Set monitoring interval to 1 second in order to: - be consistent with 5.1; - speed up tests; mysql-test/t/wait_for_process.sh: A new helper script, intended to be used instead of dummy "sleep" when waiting for some process to start or stop. --- mysql-test/r/im_daemon_life_cycle.result | 1 + mysql-test/r/im_life_cycle.result | 76 +++++++++-------- mysql-test/r/im_utils.result | 3 + mysql-test/t/im_daemon_life_cycle-im.opt | 1 + mysql-test/t/im_daemon_life_cycle.imtest | 18 +++- mysql-test/t/im_life_cycle-im.opt | 1 + mysql-test/t/im_life_cycle.imtest | 138 +++++++++++++++++++++---------- mysql-test/t/im_utils-im.opt | 1 + mysql-test/t/im_utils.imtest | 16 +++- mysql-test/t/kill_n_check.sh | 109 +++++++++++++++++------- mysql-test/t/wait_for_process.sh | 66 +++++++++++++++ 11 files changed, 319 insertions(+), 111 deletions(-) create mode 100644 mysql-test/t/im_life_cycle-im.opt create mode 100644 mysql-test/t/im_utils-im.opt create mode 100755 mysql-test/t/wait_for_process.sh diff --git a/mysql-test/r/im_daemon_life_cycle.result b/mysql-test/r/im_daemon_life_cycle.result index d0a76b450fe..ea27fcb6db1 100644 --- a/mysql-test/r/im_daemon_life_cycle.result +++ b/mysql-test/r/im_daemon_life_cycle.result @@ -1,3 +1,4 @@ +Success: the process has been started. SHOW INSTANCES; instance_name status mysqld1 online diff --git a/mysql-test/r/im_life_cycle.result b/mysql-test/r/im_life_cycle.result index 36277f6aa28..a9f78aea7d3 100644 --- a/mysql-test/r/im_life_cycle.result +++ b/mysql-test/r/im_life_cycle.result @@ -1,44 +1,45 @@ + +-------------------------------------------------------------------- +-- 1.1.1. +-------------------------------------------------------------------- +Success: the process has been started. SHOW INSTANCES; instance_name status mysqld1 online mysqld2 offline -SHOW INSTANCE STATUS mysqld1; -instance_name status version -mysqld1 online VERSION -SHOW INSTANCE STATUS mysqld2; -instance_name status version -mysqld2 offline VERSION + +-------------------------------------------------------------------- +-- 1.1.2. +-------------------------------------------------------------------- START INSTANCE mysqld2; -SHOW INSTANCES; -instance_name status -mysqld1 online -mysqld2 online -SHOW INSTANCE STATUS mysqld1; -instance_name status version -mysqld1 online VERSION -SHOW INSTANCE STATUS mysqld2; -instance_name status version -mysqld2 online VERSION +Success: the process has been started. SHOW VARIABLES LIKE 'port'; Variable_name Value -port IM_MYSQLD1_PORT +port IM_MYSQLD2_PORT + +-------------------------------------------------------------------- +-- 1.1.3. +-------------------------------------------------------------------- STOP INSTANCE mysqld2; -SHOW INSTANCES; -instance_name status -mysqld1 online -mysqld2 offline -SHOW INSTANCE STATUS mysqld1; -instance_name status version -mysqld1 online VERSION -SHOW INSTANCE STATUS mysqld2; -instance_name status version -mysqld2 offline VERSION +Success: the process has been stopped. + +-------------------------------------------------------------------- +-- 1.1.4. +-------------------------------------------------------------------- START INSTANCE mysqld3; ERROR HY000: Bad instance name. Check that the instance with such a name exists START INSTANCE mysqld1; ERROR HY000: The instance is already started + +-------------------------------------------------------------------- +-- 1.1.5. +-------------------------------------------------------------------- STOP INSTANCE mysqld3; ERROR HY000: Bad instance name. Check that the instance with such a name exists + +-------------------------------------------------------------------- +-- 1.1.6. +-------------------------------------------------------------------- SHOW INSTANCES; instance_name status mysqld1 online @@ -50,20 +51,25 @@ SHOW INSTANCES; instance_name status mysqld1 online mysqld2 offline + +-------------------------------------------------------------------- +-- 1.1.7. +-------------------------------------------------------------------- START INSTANCE mysqld2; -SHOW INSTANCES; -instance_name status -mysqld1 online -mysqld2 online +Success: the process has been started. Killing the process... Sleeping... Success: the process was killed. -SHOW INSTANCES; -instance_name status -mysqld1 online -mysqld2 offline + +-------------------------------------------------------------------- +-- 1.1.8. +-------------------------------------------------------------------- SHOW INSTANCE STATUS; ERROR 42000: You have an error in your command syntax. Check the manual that corresponds to your MySQL Instance Manager version for the right syntax to use + +-------------------------------------------------------------------- +-- BUG#12813 +-------------------------------------------------------------------- START INSTANCE mysqld1,mysqld2,mysqld3; ERROR 42000: You have an error in your command syntax. Check the manual that corresponds to your MySQL Instance Manager version for the right syntax to use STOP INSTANCE mysqld1,mysqld2,mysqld3; diff --git a/mysql-test/r/im_utils.result b/mysql-test/r/im_utils.result index fbfaeaebcac..e6a5e007ed4 100644 --- a/mysql-test/r/im_utils.result +++ b/mysql-test/r/im_utils.result @@ -1,3 +1,4 @@ +Success: the process has been started. SHOW INSTANCES; instance_name status mysqld1 online @@ -42,7 +43,9 @@ skip-innodb VALUE skip-bdb VALUE skip-ndbcluster VALUE START INSTANCE mysqld2; +Success: the process has been started. STOP INSTANCE mysqld2; +Success: the process has been stopped. SHOW mysqld1 LOG FILES; Logfile Path File size ERROR LOG PATH FILE_SIZE diff --git a/mysql-test/t/im_daemon_life_cycle-im.opt b/mysql-test/t/im_daemon_life_cycle-im.opt index 21c01191e4c..3a45c7a41f7 100644 --- a/mysql-test/t/im_daemon_life_cycle-im.opt +++ b/mysql-test/t/im_daemon_life_cycle-im.opt @@ -1,2 +1,3 @@ --run-as-service --log=$MYSQLTEST_VARDIR/log/im.log +--monitoring-interval=1 diff --git a/mysql-test/t/im_daemon_life_cycle.imtest b/mysql-test/t/im_daemon_life_cycle.imtest index 87388d7c1e6..3afc36935f8 100644 --- a/mysql-test/t/im_daemon_life_cycle.imtest +++ b/mysql-test/t/im_daemon_life_cycle.imtest @@ -10,6 +10,22 @@ ########################################################################### +# Wait for mysqld1 (guarded instance) to start. + +--exec $MYSQL_TEST_DIR/t/wait_for_process.sh $IM_MYSQLD1_PATH_PID 30 started + +# Let IM detect that mysqld1 is online. This delay should be longer than +# monitoring interval. + +--sleep 3 + +# Check that start conditions are as expected. + SHOW INSTANCES; ---exec $MYSQL_TEST_DIR/t/kill_n_check.sh $IM_PATH_PID restarted +########################################################################### + +# Kill the IM main process and check that the IM Angel will restart the main +# process. + +--exec $MYSQL_TEST_DIR/t/kill_n_check.sh $IM_PATH_PID restarted 30 diff --git a/mysql-test/t/im_life_cycle-im.opt b/mysql-test/t/im_life_cycle-im.opt new file mode 100644 index 00000000000..34b74ce0c95 --- /dev/null +++ b/mysql-test/t/im_life_cycle-im.opt @@ -0,0 +1 @@ +--monitoring-interval=1 diff --git a/mysql-test/t/im_life_cycle.imtest b/mysql-test/t/im_life_cycle.imtest index 445ae7f72fa..2cbe53a7b28 100644 --- a/mysql-test/t/im_life_cycle.imtest +++ b/mysql-test/t/im_life_cycle.imtest @@ -17,11 +17,23 @@ # ########################################################################### +--echo +--echo -------------------------------------------------------------------- +--echo -- 1.1.1. +--echo -------------------------------------------------------------------- + +# Wait for mysqld1 (guarded instance) to start. + +--exec $MYSQL_TEST_DIR/t/wait_for_process.sh $IM_MYSQLD1_PATH_PID 30 started + +# Let IM detect that mysqld1 is online. This delay should be longer than +# monitoring interval. + +--sleep 3 + +# Check that start conditions are as expected. + SHOW INSTANCES; ---replace_column 3 VERSION -SHOW INSTANCE STATUS mysqld1; ---replace_column 3 VERSION -SHOW INSTANCE STATUS mysqld2; ########################################################################### # @@ -33,20 +45,24 @@ SHOW INSTANCE STATUS mysqld2; # ########################################################################### +--echo +--echo -------------------------------------------------------------------- +--echo -- 1.1.2. +--echo -------------------------------------------------------------------- + START INSTANCE mysqld2; -# FIXME ---sleep 3 +# FIXME: START INSTANCE should be synchronous. +--exec $MYSQL_TEST_DIR/t/wait_for_process.sh $IM_MYSQLD2_PATH_PID 30 started -SHOW INSTANCES; ---replace_column 3 VERSION -SHOW INSTANCE STATUS mysqld1; ---replace_column 3 VERSION -SHOW INSTANCE STATUS mysqld2; +# FIXME: SHOW INSTANCES is not deterministic unless START INSTANCE is +# synchronous. Even waiting for mysqld to start by looking at its pid file is +# not enough, because IM may not detect that mysqld has started. +# SHOW INSTANCES; ---connect (mysql_con,localhost,root,,mysql,$IM_MYSQLD1_PORT,$IM_MYSQLD1_SOCK) +--connect (mysql_con,localhost,root,,mysql,$IM_MYSQLD2_PORT,$IM_MYSQLD2_SOCK) --connection mysql_con ---replace_result $IM_MYSQLD1_PORT IM_MYSQLD1_PORT +--replace_result $IM_MYSQLD2_PORT IM_MYSQLD2_PORT SHOW VARIABLES LIKE 'port'; --connection default @@ -61,15 +77,19 @@ SHOW VARIABLES LIKE 'port'; # ########################################################################### +--echo +--echo -------------------------------------------------------------------- +--echo -- 1.1.3. +--echo -------------------------------------------------------------------- + STOP INSTANCE mysqld2; -# FIXME ---sleep 3 +# FIXME: STOP INSTANCE should be synchronous. +--exec $MYSQL_TEST_DIR/t/wait_for_process.sh $IM_MYSQLD2_PATH_PID 30 stopped -SHOW INSTANCES; ---replace_column 3 VERSION -SHOW INSTANCE STATUS mysqld1; ---replace_column 3 VERSION -SHOW INSTANCE STATUS mysqld2; +# FIXME: SHOW INSTANCES is not deterministic unless START INSTANCE is +# synchronous. Even waiting for mysqld to start by looking at its pid file is +# not enough, because IM may not detect that mysqld has started. +# SHOW INSTANCES; ########################################################################### # @@ -81,16 +101,17 @@ SHOW INSTANCE STATUS mysqld2; # ########################################################################### ---error 3000 +--echo +--echo -------------------------------------------------------------------- +--echo -- 1.1.4. +--echo -------------------------------------------------------------------- + +--error 3000 # ER_BAD_INSTANCE_NAME START INSTANCE mysqld3; ---error 3002 +--error 3002 # ER_INSTANCE_ALREADY_STARTED START INSTANCE mysqld1; -# FIXME TODO -# BUG#12813: START/STOP INSTANCE commands accept a list as argument -# START INSTANCE mysqld1, mysqld2; - ########################################################################### # # 1.1.5. Check that Instance Manager reports correct errors for 'STOP INSTANCE' @@ -101,27 +122,40 @@ START INSTANCE mysqld1; # ########################################################################### ---error 3000 +--echo +--echo -------------------------------------------------------------------- +--echo -- 1.1.5. +--echo -------------------------------------------------------------------- + +--error 3000 # ER_BAD_INSTANCE_NAME STOP INSTANCE mysqld3; # TODO: IM should be fixed. # BUG#12673: Instance Manager allows to stop the instance many times -# --error 3002 +# --error 3002 # ER_INSTANCE_ALREADY_STARTED # STOP INSTANCE mysqld2; -# FIXME TODO -# BUG#12813: START/STOP INSTANCE commands accept a list as argument -# STOP INSTANCE mysqld1, mysqld2; - ########################################################################### # # 1.1.6. Check that Instance Manager is able to restart guarded instances. # ########################################################################### +--echo +--echo -------------------------------------------------------------------- +--echo -- 1.1.6. +--echo -------------------------------------------------------------------- + SHOW INSTANCES; ---exec $MYSQL_TEST_DIR/t/kill_n_check.sh $IM_MYSQLD1_PATH_PID restarted +--exec $MYSQL_TEST_DIR/t/kill_n_check.sh $IM_MYSQLD1_PATH_PID restarted 30 + +# Give some time to IM to detect that mysqld was restarted. It should be longer +# than monitoring interval. + +--sleep 3 + +SHOW INSTANCES; ########################################################################### # @@ -129,17 +163,26 @@ SHOW INSTANCES; # ########################################################################### -SHOW INSTANCES; +--echo +--echo -------------------------------------------------------------------- +--echo -- 1.1.7. +--echo -------------------------------------------------------------------- START INSTANCE mysqld2; -# FIXME ---sleep 3 +# FIXME: START INSTANCE should be synchronous. +--exec $MYSQL_TEST_DIR/t/wait_for_process.sh $IM_MYSQLD2_PATH_PID 30 started -SHOW INSTANCES; +# FIXME: SHOW INSTANCES is not deterministic unless START INSTANCE is +# synchronous. Even waiting for mysqld to start by looking at its pid file is +# not enough, because IM may not detect that mysqld has started. +# SHOW INSTANCES; ---exec $MYSQL_TEST_DIR/t/kill_n_check.sh $IM_MYSQLD2_PATH_PID killed +--exec $MYSQL_TEST_DIR/t/kill_n_check.sh $IM_MYSQLD2_PATH_PID killed 10 -SHOW INSTANCES; +# FIXME: SHOW INSTANCES is not deterministic unless START INSTANCE is +# synchronous. Even waiting for mysqld to start by looking at its pid file is +# not enough, because IM may not detect that mysqld has started. +# SHOW INSTANCES; ########################################################################### # @@ -147,7 +190,13 @@ SHOW INSTANCES; # incomplete SHOW INSTANCE STATUS command. # ########################################################################### ---error 1149 + +--echo +--echo -------------------------------------------------------------------- +--echo -- 1.1.8. +--echo -------------------------------------------------------------------- + +--error ER_SYNTAX_ERROR SHOW INSTANCE STATUS; # @@ -159,8 +208,13 @@ SHOW INSTANCE STATUS; # a list as argument. # ---error 1149 +--echo +--echo -------------------------------------------------------------------- +--echo -- BUG#12813 +--echo -------------------------------------------------------------------- + +--error ER_SYNTAX_ERROR START INSTANCE mysqld1,mysqld2,mysqld3; ---error 1149 +--error ER_SYNTAX_ERROR STOP INSTANCE mysqld1,mysqld2,mysqld3; diff --git a/mysql-test/t/im_utils-im.opt b/mysql-test/t/im_utils-im.opt new file mode 100644 index 00000000000..34b74ce0c95 --- /dev/null +++ b/mysql-test/t/im_utils-im.opt @@ -0,0 +1 @@ +--monitoring-interval=1 diff --git a/mysql-test/t/im_utils.imtest b/mysql-test/t/im_utils.imtest index dc6fb93c4ff..47902eeba52 100644 --- a/mysql-test/t/im_utils.imtest +++ b/mysql-test/t/im_utils.imtest @@ -17,6 +17,17 @@ # - the second instance is offline; # +# Wait for mysqld1 (guarded instance) to start. + +--exec $MYSQL_TEST_DIR/t/wait_for_process.sh $IM_MYSQLD1_PATH_PID 30 started + +# Let IM detect that mysqld1 is online. This delay should be longer than +# monitoring interval. + +--sleep 3 + +# Check that start conditions are as expected. + SHOW INSTANCES; # @@ -40,11 +51,10 @@ SHOW INSTANCE OPTIONS mysqld2; # START INSTANCE mysqld2; - -# FIXME --- sleep 3 +--exec $MYSQL_TEST_DIR/t/wait_for_process.sh $IM_MYSQLD2_PATH_PID 30 started STOP INSTANCE mysqld2; +--exec $MYSQL_TEST_DIR/t/wait_for_process.sh $IM_MYSQLD2_PATH_PID 30 stopped # # Check 'SHOW LOG FILES' command: diff --git a/mysql-test/t/kill_n_check.sh b/mysql-test/t/kill_n_check.sh index e722b3a180d..64cc869d1ec 100755 --- a/mysql-test/t/kill_n_check.sh +++ b/mysql-test/t/kill_n_check.sh @@ -1,66 +1,115 @@ #!/bin/sh -if [ $# -ne 2 ]; then - echo "Usage: kill_n_check.sh killed|restarted" +########################################################################### + +# NOTE: this script returns 0 (success) even in case of failure. This is +# because this script is executed under mysql-test-run[.pl] and it's better to +# examine particular problem in log file, than just having said that the test +# case has failed. + +########################################################################### + +check_restart() +{ + if [ ! -r "$pid_path" ]; then + user_msg='the process was killed' + return 1 + fi + + new_pid=`cat "$pid_path" 2>/dev/null` + + if [ $? -eq 0 -a "$original_pid" = "$new_pid" ]; then + user_msg='the process was not restarted' + return 1 + fi + + user_msg='the process was restarted' + return 0 +} + +########################################################################### + +if [ $# -ne 3 ]; then + echo "Usage: kill_n_check.sh killed|restarted " exit 0 fi pid_path="$1" expected_result="$2" +total_timeout="$3" -if [ -z "$pid_path" -o ! -r "$pid_path" ]; then - echo "Error: invalid PID path ($pid_path) or PID file does not exist." +if [ "$expected_result" != 'killed' -a \ + "$expected_result" != 'restarted' ]; then + echo "Error: invalid second argument ('killed' or 'restarted' expected)." exit 0 fi -if [ "$expected_result" != "killed" -a \ - "$expected_result" != "restarted" ]; then - echo "Error: expected result must be either 'killed' or 'restarted'." +if [ -z "$pid_path" ]; then + echo "Error: invalid PID path ($pid_path)." exit 0 fi -# echo "PID path: '$pid_path'" +if [ $expected_result = 'killed' -a ! -r "$pid_path" ]; then + echo "Error: PID file ($pid_path) does not exist." + exit 0 +fi -original_pid=`cat "$pid_path"` +if [ -z "$total_timeout" ]; then + echo "Error: timeout is not specified." + exit 0 +fi -# echo "Original PID: $original_pid" +########################################################################### + +original_pid=`cat "$pid_path"` echo "Killing the process..." kill -9 $original_pid +########################################################################### + echo "Sleeping..." -sleep 3 +if [ "$expected_result" = "restarted" ]; then -new_pid="" + # Wait for the process to restart. -[ -r "$pid_path" ] && new_pid=`cat "$pid_path"` + cur_attempt=1 -# echo "New PID: $new_pid" + while true; do -if [ "$expected_result" = "restarted" ]; then + if check_restart; then + echo "Success: $user_msg." + exit 0 + fi - if [ -z "$new_pid" ]; then - echo "Error: the process was killed." - exit 0 - fi + [ $cur_attempt -ge $total_timeout ] && break - if [ "$original_pid" -eq "$new_pid" ]; then - echo "Error: the process was not restarted." - exit 0 - fi - - echo "Success: the process was restarted." + sleep 1 + + cur_attempt=`expr $cur_attempt + 1` + + done + + echo "Error: $user_msg." exit 0 - -else # $expected_result = killed - + +else # $expected_result == killed + + # Here we have to sleep for some long time to ensure that the process will + # not be restarted. + + sleep $total_timeout + + new_pid=`cat "$pid_path" 2>/dev/null` + if [ "$new_pid" -a "$new_pid" -ne "$original_pid" ]; then echo "Error: the process was restarted." - exit 0 + else + echo "Success: the process was killed." fi - echo "Success: the process was killed." exit 0 + fi diff --git a/mysql-test/t/wait_for_process.sh b/mysql-test/t/wait_for_process.sh new file mode 100755 index 00000000000..df0f4a17e3a --- /dev/null +++ b/mysql-test/t/wait_for_process.sh @@ -0,0 +1,66 @@ +#!/bin/sh + +########################################################################### + +pid_path="$1" +total_attempts="$2" +event="$3" + +case "$3" in + started) + check_fn='check_started'; + ;; + + stopped) + check_fn='check_stopped'; + ;; + + *) + echo "Error: invalid third argument ('started' or 'stopped' expected)." + exit 0 +esac + +########################################################################### + +check_started() +{ + [ ! -r "$pid_path" ] && return 1 + + new_pid=`cat "$pid_path" 2>/dev/null` + + [ $? -eq 0 -a "$original_pid" = "$new_pid" ] && return 1 + + return 0 +} + +########################################################################### + +check_stopped() +{ + [ -r "$pid_path" ] && return 1 + + return 0 +} + +########################################################################### + +cur_attempt=1 + +while true; do + + if ( eval $check_fn ); then + echo "Success: the process has been $event." + exit 0 + fi + + [ $cur_attempt -ge $total_attempts ] && break + + sleep 1 + + cur_attempt=`expr $cur_attempt + 1` + +done + +echo "Error: the process has not been $event in $total_attempts secs." +exit 0 + -- cgit v1.2.1 From 799c5935f0f10073cd23f037bbb027e11d4c1013 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 14:15:26 +0400 Subject: Small fix for test suite: - fix for IM stopping routine; - polishing. mysql-test/lib/mtr_process.pl: Polishing: make mtr_kill_process() more verbose in debug mode. mysql-test/mysql-test-run.pl: 1. Fix stopping of IM running as a daemon -- after death of the main IM process, we should wait for the IM angel to die. 2. Polishing -- be more verbose in debug mode. --- mysql-test/lib/mtr_process.pl | 17 ++++++++++---- mysql-test/mysql-test-run.pl | 54 ++++++++++++++++++++++++++++++++++++++----- 2 files changed, 61 insertions(+), 10 deletions(-) diff --git a/mysql-test/lib/mtr_process.pl b/mysql-test/lib/mtr_process.pl index 6fa6bc73bdb..0ca16b61fc2 100644 --- a/mysql-test/lib/mtr_process.pl +++ b/mysql-test/lib/mtr_process.pl @@ -890,19 +890,28 @@ sub mtr_kill_processes ($) { sub mtr_kill_process ($$$$) { my $pid= shift; my $signal= shift; - my $retries= shift; + my $total_retries= shift; my $timeout= shift; - while (1) + for (my $cur_attempt= 1; $cur_attempt <= $total_retries; ++$cur_attempt) { + mtr_debug("Sending $signal to $pid..."); + kill($signal, $pid); - last unless kill (0, $pid) and $retries--; + unless (kill (0, $pid)) + { + mtr_debug("Process $pid died."); + return; + } - mtr_debug("Sleep $timeout second waiting for processes to die"); + mtr_debug("Sleeping $timeout second(s) waiting for processes to die..."); sleep($timeout); } + + mtr_debug("Process $pid is still alive after $total_retries " . + "of sending signal $signal."); } ############################################################################## diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 4a9628c0721..24e0cbb6699 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -2843,22 +2843,58 @@ sub im_stop($) { # Try graceful shutdown. + mtr_debug("IM-main pid: $instance_manager->{'pid'}"); + mtr_debug("Stopping IM-main..."); + mtr_kill_process($instance_manager->{'pid'}, 'TERM', 10, 1); + # If necessary, wait for angel process to die. + + if (defined $instance_manager->{'angel_pid'}) + { + mtr_debug("IM-angel pid: $instance_manager->{'angel_pid'}"); + mtr_debug("Waiting for IM-angel to die..."); + + my $total_attempts= 10; + + for (my $cur_attempt=1; $cur_attempt <= $total_attempts; ++$cur_attempt) + { + unless (kill (0, $instance_manager->{'angel_pid'})) + { + mtr_debug("IM-angel died."); + last; + } + + sleep(1); + } + } + # Check that all processes died. my $clean_shutdown= 0; while (1) { - last if kill (0, $instance_manager->{'pid'}); + if (kill (0, $instance_manager->{'pid'})) + { + mtr_debug("IM-main is still alive."); + last; + } - last if (defined $instance_manager->{'angel_pid'}) && - kill (0, $instance_manager->{'angel_pid'}); + if (defined $instance_manager->{'angel_pid'} && + kill (0, $instance_manager->{'angel_pid'})) + { + mtr_debug("IM-angel is still alive."); + last; + } foreach my $pid (@mysqld_pids) { - last if kill (0, $pid); + if (kill (0, $pid)) + { + mtr_debug("Guarded mysqld ($pid) is still alive."); + last; + } } $clean_shutdown= 1; @@ -2869,15 +2905,21 @@ sub im_stop($) { unless ($clean_shutdown) { - mtr_kill_process($instance_manager->{'angel_pid'}, 'KILL', 10, 1) - if defined $instance_manager->{'angel_pid'}; + + if (defined $instance_manager->{'angel_pid'}) + { + mtr_debug("Killing IM-angel..."); + mtr_kill_process($instance_manager->{'angel_pid'}, 'KILL', 10, 1) + } + mtr_debug("Killing IM-main..."); mtr_kill_process($instance_manager->{'pid'}, 'KILL', 10, 1); # Shutdown managed mysqld-processes. Some of them may be nonguarded, so IM # will not stop them on shutdown. So, we should firstly try to end them # legally. + mtr_debug("Killing guarded mysqld(s)..."); mtr_kill_processes(\@mysqld_pids); # Complain in error log so that a warning will be shown. -- cgit v1.2.1 From 645e3135b210a6f3728b2a6c5cfc87ec274419b6 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 14:16:10 +0400 Subject: The second fix for BUG#19391: IM fails to start after two executions. server-tools/instance-manager/guardian.cc: Removed erroneous unlock() in Guardian_thread::init(): instance_map is unlocked in the caller. server-tools/instance-manager/instance_map.cc: Added TODO comment. server-tools/instance-manager/manager.cc: Make initialization of alarm infrustructure before starting Guardian thread, because Guardian uses thr_alarm(). --- server-tools/instance-manager/guardian.cc | 3 -- server-tools/instance-manager/instance_map.cc | 2 +- server-tools/instance-manager/manager.cc | 43 +++++++++++++++++++-------- 3 files changed, 32 insertions(+), 16 deletions(-) diff --git a/server-tools/instance-manager/guardian.cc b/server-tools/instance-manager/guardian.cc index fa9d877fde6..24844e05776 100644 --- a/server-tools/instance-manager/guardian.cc +++ b/server-tools/instance-manager/guardian.cc @@ -271,10 +271,7 @@ int Guardian_thread::init() { if (!(instance->options.nonguarded)) if (guard(instance, TRUE)) /* do not lock guardian */ - { - instance_map->unlock(); return 1; - } } return 0; diff --git a/server-tools/instance-manager/instance_map.cc b/server-tools/instance-manager/instance_map.cc index 543c9c31bfa..3b7f58d8a09 100644 --- a/server-tools/instance-manager/instance_map.cc +++ b/server-tools/instance-manager/instance_map.cc @@ -215,7 +215,7 @@ int Instance_map::flush_instances() hash_init(&hash, default_charset_info, START_HASH_SIZE, 0, 0, get_instance_key, delete_instance, 0); rc= load(); - guardian->init(); + guardian->init(); // TODO: check error status. pthread_mutex_unlock(&LOCK_instance_map); guardian->unlock(); return rc; diff --git a/server-tools/instance-manager/manager.cc b/server-tools/instance-manager/manager.cc index 00ef50a84e1..353dfcf64dc 100644 --- a/server-tools/instance-manager/manager.cc +++ b/server-tools/instance-manager/manager.cc @@ -147,6 +147,25 @@ void manager(const Options &options) if (create_pid_file(options.pid_file_name, manager_pid)) return; + /* + Initialize signals and alarm-infrastructure. + + NOTE: To work nicely with LinuxThreads, the signal thread is the first + thread in the process. + + NOTE: + After init_thr_alarm() call it's possible to call thr_alarm() (from + different threads), that results in sending ALARM signal to the alarm + thread (which can be the main thread). That signal can interrupt + blocking calls. + + In other words, a blocking call can be interrupted in the main thread + after init_thr_alarm(). + */ + + sigset_t mask; + set_signals(&mask); + /* create guardian thread */ { pthread_t guardian_thd_id; @@ -154,9 +173,16 @@ void manager(const Options &options) int rc; /* - NOTE: Guardian should be shutdown first. Only then all other threads - need to be stopped. This should be done, as guardian is responsible for - shutting down the instances, and this is a long operation. + NOTE: Guardian should be shutdown first. Only then all other threads + need to be stopped. This should be done, as guardian is responsible + for shutting down the instances, and this is a long operation. + + NOTE: Guardian uses thr_alarm() when detects current state of + instances (is_running()), but it is not interfere with + flush_instances() later in the code, because until flush_instances() + complete in the main thread, Guardian thread is not permitted to + process instances. And before flush_instances() there is no instances + to proceed. */ pthread_attr_init(&guardian_thd_attr); @@ -172,10 +198,8 @@ void manager(const Options &options) } - /* - To work nicely with LinuxThreads, the signal thread is the first thread - in the process. - */ + /* Load instances. */ + int signo; bool shutdown_complete; @@ -189,11 +213,6 @@ void manager(const Options &options) return; } - /* Initialize signals and alarm-infrastructure. */ - - sigset_t mask; - set_signals(&mask); - /* create the listener */ { pthread_t listener_thd_id; -- cgit v1.2.1 From 124cb126fa65fc1099256be5e269277bde815703 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 13:22:42 +0300 Subject: * Bug #9676: INSERT INTO x SELECT .. FROM x LIMIT 1; slows down with big tables Currently in INSERT ... SELECT ... LIMIT ... the compiler uses a temporary table to store the results of SELECT ... LIMIT .. and then uses that table as a source for INSERT. The problem is that in some cases it actually skips the LIMIT clause in doing that and materializes the whole SELECT result set regardless of the LIMIT. This fix is limiting the process of filling up the temp table with only that much rows that will be actually used by propagating the LIMIT value. mysql-test/r/insert_select.result: * Bug #9676: INSERT INTO x SELECT .. FROM x LIMIT 1; slows down with big tables - a test demonstrating the code path mysql-test/t/insert_select.test: * Bug #9676: INSERT INTO x SELECT .. FROM x LIMIT 1; slows down with big tables - a test demonstrating the code path sql/sql_select.cc: * Bug #9676: INSERT INTO x SELECT .. FROM x LIMIT 1; slows down with big tables - pass through the real LIMIT number if the temp table is created for buffering results. - set the counter for all the cases when the temp table is not used for grouping --- mysql-test/r/insert_select.result | 4 ++++ mysql-test/t/insert_select.test | 13 +++++++++++++ sql/sql_select.cc | 12 ++++++++---- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/mysql-test/r/insert_select.result b/mysql-test/r/insert_select.result index 028b40ac3b6..1d7aef256e1 100644 --- a/mysql-test/r/insert_select.result +++ b/mysql-test/r/insert_select.result @@ -686,3 +686,7 @@ ERROR 42S22: Unknown column 'z' in 'field list' insert into t1(x,y) select x,z from t2 on duplicate key update x=values(t2.x); ERROR 42S02: Unknown table 't2' in field list drop table t1,t2; +CREATE TABLE t1 (a int PRIMARY KEY); +INSERT INTO t1 values (1), (2); +INSERT INTO t1 SELECT a + 2 FROM t1 LIMIT 1; +DROP TABLE t1; diff --git a/mysql-test/t/insert_select.test b/mysql-test/t/insert_select.test index 48acdf1cbc5..fcea489fcff 100644 --- a/mysql-test/t/insert_select.test +++ b/mysql-test/t/insert_select.test @@ -226,4 +226,17 @@ insert into t1(x,y) select x,z from t2 on duplicate key update x=values(z); insert into t1(x,y) select x,z from t2 on duplicate key update x=values(t2.x); drop table t1,t2; +# +# Bug #9676: INSERT INTO x SELECT .. FROM x LIMIT 1; slows down with big +# tables +# + +#Note: not an exsaustive test : just a check of the code path. +CREATE TABLE t1 (a int PRIMARY KEY); +INSERT INTO t1 values (1), (2); + +INSERT INTO t1 SELECT a + 2 FROM t1 LIMIT 1; + +DROP TABLE t1; + # End of 4.1 tests diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 5a7e9e52aed..709ff9726bb 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -888,8 +888,9 @@ JOIN::optimize() group_list ? 0 : select_distinct, group_list && simple_group, select_options, - (order == 0 || skip_sort_order) ? select_limit : - HA_POS_ERROR, + (order == 0 || skip_sort_order || + test(select_options & OPTION_BUFFER_RESULT)) ? + select_limit : HA_POS_ERROR, (char *) ""))) DBUG_RETURN(1); @@ -5530,6 +5531,11 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List &fields, keyinfo->key_length+= key_part_info->length; } } + else + { + set_if_smaller(table->max_rows, rows_limit); + param->end_write_records= rows_limit; + } if (distinct && field_count != param->hidden_field_count) { @@ -5544,8 +5550,6 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List &fields, null_pack_length-=hidden_null_pack_length; keyinfo->key_parts= ((field_count-param->hidden_field_count)+ test(null_pack_length)); - set_if_smaller(table->max_rows, rows_limit); - param->end_write_records= rows_limit; table->distinct=1; table->keys=1; if (blob_count) -- cgit v1.2.1 From 5754a76bbfdf6386217747153832e4a64723e074 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 14:41:29 +0400 Subject: WL#3298: IM: make command-line option names consistent 1. Removed '-P' command line option; 2. Renamed '--passwd' command line option to '--print-password-line'. mysql-test/t/im_cmd_line.imtest: Renamed "--passwd" to "--print-password-line". server-tools/instance-manager/options.cc: 1. Removed '-P' option; 2. Renamed '--passwd' to '--print-password-line'. server-tools/instance-manager/user_management_commands.cc: Renamed class Passwd_cmd to Print_password_line_cmd. server-tools/instance-manager/user_management_commands.h: Renamed class Passwd_cmd to Print_password_line_cmd. --- mysql-test/t/im_cmd_line.imtest | 4 ++-- server-tools/instance-manager/options.cc | 12 ++++++------ server-tools/instance-manager/user_management_commands.cc | 4 ++-- server-tools/instance-manager/user_management_commands.h | 7 ++++--- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/mysql-test/t/im_cmd_line.imtest b/mysql-test/t/im_cmd_line.imtest index 00e8351535e..29ed420439d 100644 --- a/mysql-test/t/im_cmd_line.imtest +++ b/mysql-test/t/im_cmd_line.imtest @@ -26,7 +26,7 @@ --echo --echo --> Printing out line for 'testuser'... ---exec $IM_EXE --defaults-file="$IM_DEFAULTS_PATH" --passwd --username=testuser --password=abc | tail -1 +--exec $IM_EXE --defaults-file="$IM_DEFAULTS_PATH" --print-password-line --username=testuser --password=abc | tail -1 --echo --echo --> Listing users... @@ -45,7 +45,7 @@ --echo --echo --> Printing out line for 'testuser'... ---exec $IM_EXE --defaults-file="$IM_DEFAULTS_PATH" --passwd --username=testuser --password=xyz | tail -1 +--exec $IM_EXE --defaults-file="$IM_DEFAULTS_PATH" --print-password-line --username=testuser --password=xyz | tail -1 --echo --echo --> Listing users... diff --git a/server-tools/instance-manager/options.cc b/server-tools/instance-manager/options.cc index 31ce5b00190..07a1fd3e932 100644 --- a/server-tools/instance-manager/options.cc +++ b/server-tools/instance-manager/options.cc @@ -114,7 +114,6 @@ static const int ANGEL_PID_FILE_SUFFIX_LEN= strlen(ANGEL_PID_FILE_SUFFIX); */ enum options { - OPT_PASSWD= 'P', OPT_USERNAME= 'u', OPT_PASSWORD= 'p', OPT_LOG= 256, @@ -135,6 +134,7 @@ enum options { OPT_PORT, OPT_WAIT_TIMEOUT, OPT_BIND_ADDRESS, + OPT_PRINT_PASSWORD_LINE, OPT_ADD_USER, OPT_DROP_USER, OPT_EDIT_USER, @@ -225,8 +225,8 @@ static struct my_option my_long_options[] = (gptr *) &Options::Main::mysqld_safe_compatible, 0, GET_BOOL, NO_ARG, 0, 0, 1, 0, 0, 0 }, - { "passwd", OPT_PASSWD, - "Prepare an entry for the password file and exit.", + { "print-password-line", OPT_PRINT_PASSWORD_LINE, + "Print out a user entry as a line for the password file and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0 }, { "password", OPT_PASSWORD, "Password to update the password file", @@ -339,7 +339,7 @@ get_one_option(int optid, case 'V': version(); exit(0); - case OPT_PASSWD: + case OPT_PRINT_PASSWORD_LINE: case OPT_ADD_USER: case OPT_DROP_USER: case OPT_EDIT_USER: @@ -354,8 +354,8 @@ get_one_option(int optid, } switch (optid) { - case OPT_PASSWD: - Options::User_management::cmd= new Passwd_cmd(); + case OPT_PRINT_PASSWORD_LINE: + Options::User_management::cmd= new Print_password_line_cmd(); break; case OPT_ADD_USER: Options::User_management::cmd= new Add_user_cmd(); diff --git a/server-tools/instance-manager/user_management_commands.cc b/server-tools/instance-manager/user_management_commands.cc index 03a3f9814e3..20ebeb0d6bf 100644 --- a/server-tools/instance-manager/user_management_commands.cc +++ b/server-tools/instance-manager/user_management_commands.cc @@ -180,10 +180,10 @@ static int save_password_file(User_map *user_map) } /************************************************************************* - Passwd_cmd + Print_password_line_cmd *************************************************************************/ -int Passwd_cmd::execute() +int Print_password_line_cmd::execute() { LEX_STRING user_name; const char *password; diff --git a/server-tools/instance-manager/user_management_commands.h b/server-tools/instance-manager/user_management_commands.h index 4bf3546f0a6..8d820be5ec7 100644 --- a/server-tools/instance-manager/user_management_commands.h +++ b/server-tools/instance-manager/user_management_commands.h @@ -61,13 +61,14 @@ public: /************************************************************************* - Passwd_cmd: support for --passwd command-line option. + Print_password_line_cmd: support for --print-password-line command-line + option. *************************************************************************/ -class Passwd_cmd : public User_management_cmd +class Print_password_line_cmd : public User_management_cmd { public: - Passwd_cmd() + Print_password_line_cmd() { } public: -- cgit v1.2.1 From 7640f5122142125b9ce93c3c85b43224a1fb5ec0 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 15:17:15 +0400 Subject: Polishing: C_STRING_WITH_SIZE() was renamed to C_STRING_WITH_LEN(). --- include/m_string.h | 2 +- server-tools/instance-manager/commands.cc | 6 +++--- server-tools/instance-manager/instance.cc | 2 +- server-tools/instance-manager/instance_options.cc | 6 +++--- server-tools/instance-manager/priv.cc | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/m_string.h b/include/m_string.h index 9f7ec220f2c..e009447c192 100644 --- a/include/m_string.h +++ b/include/m_string.h @@ -256,6 +256,6 @@ typedef struct } LEX_STRING; #define STRING_WITH_LEN(X) (X), ((uint) (sizeof(X) - 1)) -#define C_STRING_WITH_SIZE(X) ((char *) (X)), ((uint) (sizeof(X) - 1)) +#define C_STRING_WITH_LEN(X) ((char *) (X)), ((uint) (sizeof(X) - 1)) #endif diff --git a/server-tools/instance-manager/commands.cc b/server-tools/instance-manager/commands.cc index 07e1e9a18f3..f45b230171e 100644 --- a/server-tools/instance-manager/commands.cc +++ b/server-tools/instance-manager/commands.cc @@ -695,7 +695,7 @@ bool Create_instance::parse_args(const char **text) if (!option_value_str) { - LEX_STRING empty_str= { C_STRING_WITH_SIZE("") }; + LEX_STRING empty_str= { C_STRING_WITH_LEN("") }; if (!(option_value_str= Named_value::alloc_str(&empty_str))) return TRUE; /* out of memory during parsing. */ @@ -1511,7 +1511,7 @@ bool Set_option::parse_args(const char **text) if (!option_value_str) { - LEX_STRING empty_str= { C_STRING_WITH_SIZE("") }; + LEX_STRING empty_str= { C_STRING_WITH_LEN("") }; if (!(option_value_str= Named_value::alloc_str(&empty_str))) return TRUE; /* out of memory during parsing. */ @@ -1650,7 +1650,7 @@ bool Unset_option::parse_args(const char **text) return TRUE; /* out of memory during parsing. */ { - LEX_STRING empty_str= { C_STRING_WITH_SIZE("") }; + LEX_STRING empty_str= { C_STRING_WITH_LEN("") }; if (!(option_value_str= Named_value::alloc_str(&empty_str))) { diff --git a/server-tools/instance-manager/instance.cc b/server-tools/instance-manager/instance.cc index 456052bf7e5..340a2d67353 100644 --- a/server-tools/instance-manager/instance.cc +++ b/server-tools/instance-manager/instance.cc @@ -37,7 +37,7 @@ const LEX_STRING -Instance::DFLT_INSTANCE_NAME= { C_STRING_WITH_SIZE("mysqld") }; +Instance::DFLT_INSTANCE_NAME= { C_STRING_WITH_LEN("mysqld") }; static const char * const INSTANCE_NAME_PREFIX= Instance::DFLT_INSTANCE_NAME.str; static const int INSTANCE_NAME_PREFIX_LEN= Instance::DFLT_INSTANCE_NAME.length; diff --git a/server-tools/instance-manager/instance_options.cc b/server-tools/instance-manager/instance_options.cc index b05e40734b7..7b3f435eae5 100644 --- a/server-tools/instance-manager/instance_options.cc +++ b/server-tools/instance-manager/instance_options.cc @@ -120,7 +120,7 @@ int Instance_options::get_default_option(char *result, size_t result_len, { int rc= 1; LEX_STRING verbose_option= - { C_STRING_WITH_SIZE(" --no-defaults --verbose --help") }; + { C_STRING_WITH_LEN(" --no-defaults --verbose --help") }; /* reserve space for the path + option + final '\0' */ Buffer cmd(mysqld_path.length + verbose_option.length + 1); @@ -155,7 +155,7 @@ int Instance_options::fill_instance_version() { char result[MAX_VERSION_LENGTH]; LEX_STRING version_option= - { C_STRING_WITH_SIZE(" --no-defaults --version") }; + { C_STRING_WITH_LEN(" --no-defaults --version") }; int rc= 1; Buffer cmd(mysqld_path.length + version_option.length + 1); @@ -210,7 +210,7 @@ int Instance_options::fill_mysqld_real_path() { char result[FN_REFLEN]; LEX_STRING help_option= - { C_STRING_WITH_SIZE(" --no-defaults --help") }; + { C_STRING_WITH_LEN(" --no-defaults --help") }; int rc= 1; Buffer cmd(mysqld_path.length + help_option.length); diff --git a/server-tools/instance-manager/priv.cc b/server-tools/instance-manager/priv.cc index d3cc52ec638..3dae900d84b 100644 --- a/server-tools/instance-manager/priv.cc +++ b/server-tools/instance-manager/priv.cc @@ -43,7 +43,7 @@ bool linuxthreads; The following string must be less then 80 characters, as mysql_connection.cc relies on it */ -const LEX_STRING mysqlmanager_version= { C_STRING_WITH_SIZE("1.0-beta") }; +const LEX_STRING mysqlmanager_version= { C_STRING_WITH_LEN("1.0-beta") }; const unsigned char protocol_version= PROTOCOL_VERSION; -- cgit v1.2.1 From d0c58cd83c6dbf1444d018209517559a81bb9341 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 13:23:13 +0200 Subject: BUG#17201 Changed to other database (BUG#20531 hinders usage of 'test' database) mysql-test/r/mysqldump.result: Changed to other database (BUG#20531 hinders usage of 'test' database) mysql-test/t/mysqldump.test: Changed to other database (BUG#20531 hinders usage of 'test' database) --- mysql-test/r/mysqldump.result | 13 +++++++------ mysql-test/t/mysqldump.test | 9 +++++---- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result index ad31b8e2a65..048a60d70e8 100644 --- a/mysql-test/r/mysqldump.result +++ b/mysql-test/r/mysqldump.result @@ -2718,9 +2718,8 @@ p CREATE DEFINER=`root`@`localhost` PROCEDURE `p`() select 42 drop function f; drop procedure p; -drop database if exists test; -create database test; -use test; +create database mysqldump_test_db; +use mysqldump_test_db; create table t1 (id int); create view v1 as select * from t1; insert into t1 values (1232131); @@ -2739,11 +2738,11 @@ insert into t1 values (0815); /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -/*!40000 DROP DATABASE IF EXISTS `test`*/; +/*!40000 DROP DATABASE IF EXISTS `mysqldump_test_db`*/; -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `test` /*!40100 DEFAULT CHARACTER SET latin1 */; +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqldump_test_db` /*!40100 DEFAULT CHARACTER SET latin1 */; -USE `test`; +USE `mysqldump_test_db`; DROP TABLE IF EXISTS `t1`; CREATE TABLE `t1` ( `id` int(11) default NULL @@ -2776,3 +2775,5 @@ DROP TABLE IF EXISTS `v1`; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; drop view v1; +drop table t1; +drop database mysqldump_test_db; diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test index 4113c136e17..f1baa04ad99 100644 --- a/mysql-test/t/mysqldump.test +++ b/mysql-test/t/mysqldump.test @@ -1148,14 +1148,15 @@ drop procedure p; # also confusion between tables and views. # Example code from Markus Popp -drop database if exists test; -create database test; -use test; +create database mysqldump_test_db; +use mysqldump_test_db; create table t1 (id int); create view v1 as select * from t1; insert into t1 values (1232131); insert into t1 values (4711); insert into t1 values (3231); insert into t1 values (0815); ---exec $MYSQL_DUMP --skip-comments --add-drop-database --databases test +--exec $MYSQL_DUMP --skip-comments --add-drop-database --databases mysqldump_test_db drop view v1; +drop table t1; +drop database mysqldump_test_db; -- cgit v1.2.1 From cb28cf8d88bf2a0e99fc37059d05c97dd1a904ec Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 14:31:22 +0200 Subject: Fix a Valgrind leak error report for not freed binlog injector singleton. sql/mysqld.cc: Free the binlog injector singleton during shutdown. sql/rpl_injector.cc: Add free_instance() method. sql/rpl_injector.h: Add free_instance() method. --- sql/mysqld.cc | 7 +++++++ sql/rpl_injector.cc | 10 ++++++++++ sql/rpl_injector.h | 5 +++++ 3 files changed, 22 insertions(+) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index ad6f7401965..87f3cd04605 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -28,6 +28,10 @@ #include "ha_myisam.h" +#ifdef HAVE_ROW_BASED_REPLICATION +#include "rpl_injector.h" +#endif + #ifdef WITH_INNOBASE_STORAGE_ENGINE #define OPT_INNODB_DEFAULT 1 #else @@ -1183,6 +1187,9 @@ void clean_up(bool print_message) what they have that is dependent on the binlog */ ha_binlog_end(current_thd); +#ifdef HAVE_ROW_BASED_REPLICATION + injector::free_instance(); +#endif mysql_bin_log.cleanup(); #ifdef HAVE_REPLICATION diff --git a/sql/rpl_injector.cc b/sql/rpl_injector.cc index 265f5f61213..012ff61e65e 100644 --- a/sql/rpl_injector.cc +++ b/sql/rpl_injector.cc @@ -155,6 +155,16 @@ injector *injector::instance() return s_injector; } +void injector::free_instance() +{ + injector *inj = s_injector; + + if (inj != 0) + { + s_injector= 0; + delete inj; + } +} injector::transaction injector::new_trans(THD *thd) diff --git a/sql/rpl_injector.h b/sql/rpl_injector.h index 14d5cca9b6c..c09e9753df3 100644 --- a/sql/rpl_injector.h +++ b/sql/rpl_injector.h @@ -59,6 +59,11 @@ public: */ static injector *instance(); + /* + Delete the singleton instance (if allocated). Used during server shutdown. + */ + static void free_instance(); + /* A transaction where rows can be added. -- cgit v1.2.1 From 3ec84b1aca4ebdc53b7d4e0416243d80a268e484 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 17:50:52 +0500 Subject: Addition to fix for BUG#18036 - update of table joined to self reports table as crashed Set exclude_from_table_unique_test value back to FALSE. It is needed for further check in multi_update::prepare whether to use record cache. sql/sql_update.cc: Set exclude_from_table_unique_test value back to FALSE. It is needed for further check in multi_update::prepare whether to use record cache. --- sql/sql_update.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sql/sql_update.cc b/sql/sql_update.cc index 9c5e98f4424..c2b7624c9e7 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -859,7 +859,12 @@ reopen_tables: } } } - + /* + Set exclude_from_table_unique_test value back to FALSE. It is needed for + further check in multi_update::prepare whether to use record cache. + */ + lex->select_lex.exclude_from_table_unique_test= FALSE; + if (thd->fill_derived_tables() && mysql_handle_derived(lex, &mysql_derived_filling)) DBUG_RETURN(TRUE); -- cgit v1.2.1 From 0c4e184bdec77d15d055c868aea04d504bd5ae5d Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 18:30:55 +0500 Subject: WL#3015: Logging Improvements - No Restarts(ver N4) Added slow_query_log & general_log global upadatable variables. Added slow-query-log & general-log startup options. Added log_output, general_log_file, slow_query_log_file global updatable variables. mysql-test/r/show_check.result: WL#3015: Logging Improvements - No Restarts result fix sql/log.cc: WL#3015: Logging Improvements - No Restarts added methods to LOGGER class void deactivate_log_handlers(THD* thd, uint log_type); bool activate_log_handlers(THD* thd, uint log_type); added methods to Log_to_file_event_handler: TABLE_LIST *get_mysql_slow_log() TABLE_LIST *get_mysql_log() sql/log.h: WL#3015: Logging Improvements - No Restarts added methods to LOGGER class void deactivate_log_handlers(THD* thd, uint log_type); bool activate_log_handlers(THD* thd, uint log_type); added methods to Log_to_file_event_handler: TABLE_LIST *get_mysql_slow_log() TABLE_LIST *get_mysql_log() sql/mysql_priv.h: WL#3015: Logging Improvements - No Restarts sql/mysqld.cc: WL#3015: Logging Improvements - No Restarts added 'slow-query-log' & 'general-log' options sql/set_var.cc: WL#3015: Logging Improvements - No Restarts added 'slow_query_log' & 'general_log' updatable variables added 'log_output', 'general_log_file', 'slow_query_log_file' updatable variables sql/set_var.h: WL#3015: Logging Improvements - No Restarts new class sys_var_log_state new class sys_var_log_output sql/share/errmsg.txt: WL#3015: Logging Improvements - No Restarts added error message sql/sql_delete.cc: WL#3015: Logging Improvements - No Restarts 'truncate table slow_log|general', keep status of logs --- mysql-test/r/log_state.result | 155 +++++++++++++++++++++++++++ mysql-test/r/show_check.result | 20 ++-- mysql-test/t/log_state-master.opt | 1 + mysql-test/t/log_state.test | 122 +++++++++++++++++++++ sql/log.cc | 193 +++++++++++++++++++++++++++------- sql/log.h | 19 +++- sql/mysql_priv.h | 8 +- sql/mysqld.cc | 38 +++++-- sql/set_var.cc | 216 ++++++++++++++++++++++++++++++++++++++ sql/set_var.h | 36 ++++++- sql/share/errmsg.txt | 2 + sql/sql_delete.cc | 10 +- 12 files changed, 756 insertions(+), 64 deletions(-) create mode 100644 mysql-test/r/log_state.result create mode 100644 mysql-test/t/log_state-master.opt create mode 100644 mysql-test/t/log_state.test diff --git a/mysql-test/r/log_state.result b/mysql-test/r/log_state.result new file mode 100644 index 00000000000..df81f05fea5 --- /dev/null +++ b/mysql-test/r/log_state.result @@ -0,0 +1,155 @@ +set global general_log= OFF; +truncate table mysql.general_log; +truncate table mysql.slow_log; +show global variables +where Variable_name = 'log' or Variable_name = 'log_slow_queries' or +Variable_name = 'general_log' or Variable_name = 'slow_query_log'; +Variable_name Value +general_log OFF +log OFF +log_slow_queries OFF +slow_query_log OFF +flush logs; +set global general_log= ON; +create table t1(f1 int); +select * from mysql.general_log; +event_time user_host thread_id server_id command_type argument +TIMESTAMP root[root] @ localhost [] # 1 Query create table t1(f1 int) +TIMESTAMP root[root] @ localhost [] # 1 Query select * from mysql.general_log +set global general_log= OFF; +drop table t1; +select * from mysql.general_log; +event_time user_host thread_id server_id command_type argument +TIMESTAMP root[root] @ localhost [] # 1 Query create table t1(f1 int) +TIMESTAMP root[root] @ localhost [] # 1 Query select * from mysql.general_log +TIMESTAMP root[root] @ localhost [] # 1 Query set global general_log= OFF +set global general_log= ON; +flush logs; +show global variables +where Variable_name = 'log' or Variable_name = 'log_slow_queries' or +Variable_name = 'general_log' or Variable_name = 'slow_query_log'; +Variable_name Value +general_log ON +log ON +log_slow_queries OFF +slow_query_log OFF +set session long_query_time=1; +select sleep(2); +sleep(2) +0 +select * from mysql.slow_log; +start_time user_host query_time lock_time rows_sent rows_examined db last_insert_id insert_id server_id sql_text +set global slow_query_log= ON; +set session long_query_time=1; +select sleep(2); +sleep(2) +0 +select * from mysql.slow_log; +start_time user_host query_time lock_time rows_sent rows_examined db last_insert_id insert_id server_id sql_text +TIMESTAMP, root[root] @ localhost [] USER_HOST, QUERY_TIME 1 0 test 0 0 1 select sleep(2) +show global variables +where Variable_name = 'log' or Variable_name = 'log_slow_queries' or +Variable_name = 'general_log' or Variable_name = 'slow_query_log'; +Variable_name Value +general_log ON +log ON +log_slow_queries ON +slow_query_log ON +set global general_log= ON; +set global general_log= OFF; +set global general_log= OFF; +set global slow_query_log= ON; +set global slow_query_log= OFF; +set global slow_query_log= OFF; +set global general_log= ON; +truncate table mysql.general_log; +create table t1(f1 int); +drop table t1; +select * from mysql.general_log; +event_time user_host thread_id server_id command_type argument +TIMESTAMP root[root] @ localhost [] # 1 Query create table t1(f1 int) +TIMESTAMP root[root] @ localhost [] # 1 Query drop table t1 +TIMESTAMP root[root] @ localhost [] # 1 Query select * from mysql.general_log +set global general_log= OFF; +truncate table mysql.general_log; +select * from mysql.general_log; +event_time user_host thread_id server_id command_type argument +set global general_log= ON; +show global variables +where Variable_name = 'log' or Variable_name = 'log_slow_queries' or +Variable_name = 'general_log' or Variable_name = 'slow_query_log'; +Variable_name Value +general_log ON +log ON +log_slow_queries OFF +slow_query_log OFF +show variables like 'general_log_file'; +Variable_name Value +general_log_file # +show variables like 'slow_query_log_file'; +Variable_name Value +slow_query_log_file # +show variables like 'log_output'; +Variable_name Value +log_output FILE,TABLE +set global general_log_file='/not exiting path/log.master'; +ERROR 42000: Variable 'general_log_file' can't be set to the value of '/not exiting path/log.master' +set global general_log_file='/tmp'; +ERROR 42000: Variable 'general_log_file' can't be set to the value of '/tmp' +set global general_log_file=''; +ERROR 42000: Variable 'general_log_file' can't be set to the value of '' +show variables like 'general_log_file'; +Variable_name Value +general_log_file # +set global general_log= OFF; +set global general_log_file='/tmp/log.master'; +set global general_log= ON; +create table t1(f1 int); +drop table t1; +set global general_log= OFF; +set global general_log_file=default; +set global general_log= ON; +create table t1(f1 int); +drop table t1; +show variables like 'general_log_file'; +Variable_name Value +general_log_file # +show variables like 'slow_query_log_file'; +Variable_name Value +slow_query_log_file # +set global general_log= default; +set global slow_query_log= default; +set global general_log_file= default; +set global slow_query_log_file= default; +show variables like 'general_log'; +Variable_name Value +general_log OFF +show variables like 'slow_query_log'; +Variable_name Value +slow_query_log OFF +set global general_log=ON; +set global log_output=default; +show variables like 'log_output'; +Variable_name Value +log_output TABLE +set global general_log=OFF; +set global log_output=FILE; +truncate table mysql.general_log; +show variables like 'log_output'; +Variable_name Value +log_output FILE +set global general_log=ON; +create table t1(f1 int); +select * from mysql.general_log; +event_time user_host thread_id server_id command_type argument +set global general_log=OFF; +set global log_output="FILE,TABLE"; +show variables like 'log_output'; +Variable_name Value +log_output FILE,TABLE +set global general_log=ON; +drop table t1; +select * from mysql.general_log; +event_time user_host thread_id server_id command_type argument +TIMESTAMP root[root] @ localhost [] # 1 Query drop table t1 +TIMESTAMP root[root] @ localhost [] # 1 Query select * from mysql.general_log diff --git a/mysql-test/r/show_check.result b/mysql-test/r/show_check.result index 5dcb8b2afd6..154bd99a7f3 100644 --- a/mysql-test/r/show_check.result +++ b/mysql-test/r/show_check.result @@ -148,14 +148,12 @@ flush tables; show open tables; Database Table In_use Name_locked mysql general_log 1 0 -mysql slow_log 1 0 create table t1(n int); insert into t1 values (1); show open tables; Database Table In_use Name_locked -mysql general_log 1 0 -mysql slow_log 1 0 test t1 0 0 +mysql general_log 1 0 drop table t1; create table t1 (a int not null, b VARCHAR(10), INDEX (b) ) AVG_ROW_LENGTH=10 CHECKSUM=1 COMMENT="test" ENGINE=MYISAM MIN_ROWS=10 MAX_ROWS=100 PACK_KEYS=1 DELAY_KEY_WRITE=1 ROW_FORMAT=fixed; show create table t1; @@ -568,23 +566,21 @@ SELECT 1 FROM mysql.db, mysql.proc, mysql.user, mysql.time_zone, mysql.time_zone 1 SHOW OPEN TABLES; Database Table In_use Name_locked -mysql proc 0 0 +mysql db 0 0 test urkunde 0 0 mysql time_zone 0 0 -mysql db 0 0 +mysql general_log 1 0 test txt1 0 0 -mysql slow_log 1 0 +mysql proc 0 0 test tyt2 0 0 -mysql general_log 1 0 mysql user 0 0 mysql time_zone_name 0 0 SHOW OPEN TABLES FROM mysql; Database Table In_use Name_locked -mysql proc 0 0 -mysql time_zone 0 0 mysql db 0 0 -mysql slow_log 1 0 +mysql time_zone 0 0 mysql general_log 1 0 +mysql proc 0 0 mysql user 0 0 mysql time_zone_name 0 0 SHOW OPEN TABLES FROM mysql LIKE 'u%'; @@ -598,16 +594,14 @@ test tyt2 0 0 mysql time_zone_name 0 0 SHOW OPEN TABLES LIKE '%o%'; Database Table In_use Name_locked -mysql proc 0 0 mysql time_zone 0 0 -mysql slow_log 1 0 mysql general_log 1 0 +mysql proc 0 0 mysql time_zone_name 0 0 FLUSH TABLES; SHOW OPEN TABLES; Database Table In_use Name_locked mysql general_log 1 0 -mysql slow_log 1 0 DROP TABLE txt1; DROP TABLE tyt2; DROP TABLE urkunde; diff --git a/mysql-test/t/log_state-master.opt b/mysql-test/t/log_state-master.opt new file mode 100644 index 00000000000..445c6223d47 --- /dev/null +++ b/mysql-test/t/log_state-master.opt @@ -0,0 +1 @@ +--log-output=TABLE,FILE --log --general-log=0 --log-slow-queries --slow-query-log=0 diff --git a/mysql-test/t/log_state.test b/mysql-test/t/log_state.test new file mode 100644 index 00000000000..d3dec841dc1 --- /dev/null +++ b/mysql-test/t/log_state.test @@ -0,0 +1,122 @@ +-- source include/not_embedded.inc +--source include/have_csv.inc + +--disable_ps_protocol +set global general_log= OFF; +truncate table mysql.general_log; +truncate table mysql.slow_log; +show global variables +where Variable_name = 'log' or Variable_name = 'log_slow_queries' or +Variable_name = 'general_log' or Variable_name = 'slow_query_log'; +flush logs; +set global general_log= ON; +create table t1(f1 int); +--replace_column 1 TIMESTAMP 3 # +select * from mysql.general_log; +set global general_log= OFF; +drop table t1; +--replace_column 1 TIMESTAMP 3 # +select * from mysql.general_log; +set global general_log= ON; +flush logs; +show global variables +where Variable_name = 'log' or Variable_name = 'log_slow_queries' or +Variable_name = 'general_log' or Variable_name = 'slow_query_log'; + +connect (con1,localhost,root,,); +connection con1; +set session long_query_time=1; +select sleep(2); +--replace_column 1 TIMESTAMP, 3 USER_HOST, 4 QUERY_TIME +select * from mysql.slow_log; +connection default; + +set global slow_query_log= ON; +connection con1; +set session long_query_time=1; +select sleep(2); +--replace_column 1 TIMESTAMP, 3 USER_HOST, 4 QUERY_TIME +select * from mysql.slow_log; +disconnect con1; +connection default; +show global variables +where Variable_name = 'log' or Variable_name = 'log_slow_queries' or +Variable_name = 'general_log' or Variable_name = 'slow_query_log'; + +set global general_log= ON; +set global general_log= OFF; +set global general_log= OFF; +set global slow_query_log= ON; +set global slow_query_log= OFF; +set global slow_query_log= OFF; + +set global general_log= ON; +truncate table mysql.general_log; +create table t1(f1 int); +drop table t1; +--replace_column 1 TIMESTAMP 3 # +select * from mysql.general_log; +set global general_log= OFF; +truncate table mysql.general_log; +--replace_column 1 TIMESTAMP 3 # +select * from mysql.general_log; +set global general_log= ON; +show global variables +where Variable_name = 'log' or Variable_name = 'log_slow_queries' or +Variable_name = 'general_log' or Variable_name = 'slow_query_log'; + +--replace_column 2 # +show variables like 'general_log_file'; +--replace_column 2 # +show variables like 'slow_query_log_file'; +show variables like 'log_output'; + +--error 1231 +set global general_log_file='/not exiting path/log.master'; +--error 1231 +set global general_log_file='/tmp'; +--error 1231 +set global general_log_file=''; +--replace_column 2 # +show variables like 'general_log_file'; +set global general_log= OFF; +set global general_log_file='/tmp/log.master'; +set global general_log= ON; +create table t1(f1 int); +drop table t1; +set global general_log= OFF; +set global general_log_file=default; +set global general_log= ON; +create table t1(f1 int); +drop table t1; +--replace_column 2 # +show variables like 'general_log_file'; +--replace_column 2 # +show variables like 'slow_query_log_file'; + +set global general_log= default; +set global slow_query_log= default; +set global general_log_file= default; +set global slow_query_log_file= default; +show variables like 'general_log'; +show variables like 'slow_query_log'; +set global general_log=ON; +set global log_output=default; +show variables like 'log_output'; +set global general_log=OFF; +set global log_output=FILE; +truncate table mysql.general_log; +show variables like 'log_output'; +set global general_log=ON; +create table t1(f1 int); +--replace_column 1 TIMESTAMP 3 # +select * from mysql.general_log; +set global general_log=OFF; +set global log_output="FILE,TABLE"; +show variables like 'log_output'; +set global general_log=ON; +drop table t1; +--replace_column 1 TIMESTAMP 3 # +select * from mysql.general_log; + +--enable_ps_protocol diff --git a/sql/log.cc b/sql/log.cc index 5a17ef817d0..c6c63ceb929 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -37,9 +37,6 @@ #define MAX_USER_HOST_SIZE 512 #define MAX_TIME_SIZE 32 -/* we need this for log files intialization */ -extern char *opt_logname, *opt_slow_logname; - LOGGER logger; MYSQL_LOG mysql_bin_log; @@ -63,6 +60,13 @@ sql_print_message_func sql_print_message_handlers[3] = }; +char *make_default_log_name(char *buff,const char* log_ext) +{ + strmake(buff, glob_hostname, FN_REFLEN-5); + return fn_format(buff, buff, mysql_data_home, log_ext, + MYF(MY_UNPACK_FILENAME|MY_APPEND_EXT)); +} + /* This is a POD. Please keep it that way! @@ -250,8 +254,10 @@ bool Log_to_csv_event_handler::reopen_log_table(uint log_type) void Log_to_csv_event_handler::cleanup() { - close_log_table(QUERY_LOG_GENERAL, FALSE); - close_log_table(QUERY_LOG_SLOW, FALSE); + if (opt_log) + close_log_table(QUERY_LOG_GENERAL, FALSE); + if (opt_slow_log) + close_log_table(QUERY_LOG_SLOW, FALSE); logger.is_log_tables_initialized= FALSE; } @@ -505,10 +511,10 @@ bool Log_to_file_event_handler::init() if (!is_initialized) { if (opt_slow_log) - mysql_slow_log.open_slow_log(opt_slow_logname); + mysql_slow_log.open_slow_log(sys_var_slow_log_path.value); if (opt_log) - mysql_log.open_query_log(opt_logname); + mysql_log.open_query_log(sys_var_general_log_path.value); is_initialized= TRUE; } @@ -526,8 +532,10 @@ void Log_to_file_event_handler::cleanup() void Log_to_file_event_handler::flush() { /* reopen log files */ - mysql_log.new_file(1); - mysql_slow_log.new_file(1); + if (opt_log) + mysql_log.new_file(1); + if (opt_slow_log) + mysql_slow_log.new_file(1); } /* @@ -647,10 +655,7 @@ bool LOGGER::flush_logs(THD *thd) close_general_log.db= (char*) "mysql"; close_general_log.db_length= 5; - /* reopen log files */ - file_log_handler->flush(); - - /* flush tables, in the case they are enabled */ + /* lock tables, in the case they are enabled */ if (logger.is_log_tables_initialized) { /* @@ -663,23 +668,29 @@ bool LOGGER::flush_logs(THD *thd) Here we use one of the logger handler THD's. Simply because it seems appropriate. */ - lock_and_wait_for_table_name(table_log_handler->general_log_thd, - &close_slow_log); - lock_and_wait_for_table_name(table_log_handler->general_log_thd, - &close_general_log); + if (opt_slow_log) + lock_and_wait_for_table_name(table_log_handler->general_log_thd, + &close_slow_log); + if (opt_log) + lock_and_wait_for_table_name(table_log_handler->general_log_thd, + &close_general_log); + } - /* - Deny others from logging to general and slow log, - while reopening tables. - */ - logger.lock(); + /* + Deny others from logging to general and slow log, + while reopening tables. + */ + logger.lock(); + + /* reopen log files */ + file_log_handler->flush(); + /* flush tables, in the case they are enabled */ + if (logger.is_log_tables_initialized) table_log_handler->flush(table_log_handler->general_log_thd, &close_slow_log, &close_general_log); - - /* end of log tables flush */ - logger.unlock(); - } + /* end of log flush */ + logger.unlock(); return FALSE; } @@ -727,6 +738,11 @@ bool LOGGER::slow_log_print(THD *thd, const char *query, uint query_length, return 0; lock(); + if (!opt_slow_log) + { + unlock(); + return 0; + } /* fill in user_host value: the format is "%s[%s] @ %s [%s]" */ user_host_len= strxnmov(user_host_buff, MAX_USER_HOST_SIZE, @@ -801,6 +817,11 @@ bool LOGGER::general_log_print(THD *thd, enum enum_server_command command, id=0; /* Log from connect handler */ lock(); + if (!opt_log) + { + unlock(); + return 0; + } time_t current_time= time(NULL); user_host_len= strxnmov(user_host_buff, MAX_USER_HOST_SIZE, @@ -904,26 +925,126 @@ void LOGGER::init_general_log(uint general_log_printer) } +bool LOGGER::activate_log_handler(THD* thd, uint log_type) +{ + bool res= 0; + lock(); + switch (log_type) { + case QUERY_LOG_SLOW: + if (!opt_slow_log) + { + if ((res= reopen_log_table(log_type))) + goto err; + file_log_handler->get_mysql_slow_log()-> + open_query_log(sys_var_slow_log_path.value); + init_slow_log(log_output_options); + opt_slow_log= TRUE; + } + break; + case QUERY_LOG_GENERAL: + if (!opt_log) + { + if ((res= reopen_log_table(log_type))) + goto err; + file_log_handler->get_mysql_log()-> + open_query_log(sys_var_general_log_path.value); + init_general_log(log_output_options); + opt_log= TRUE; + } + break; + default: + DBUG_ASSERT(0); + } +err: + unlock(); + return res; +} + + +void LOGGER::deactivate_log_handler(THD *thd, uint log_type) +{ + TABLE_LIST *table_list; + my_bool *tmp_opt= 0; + MYSQL_LOG *file_log; + THD *log_thd; + + switch (log_type) { + case QUERY_LOG_SLOW: + table_list= &table_log_handler->slow_log; + tmp_opt= &opt_slow_log; + file_log= file_log_handler->get_mysql_slow_log(); + log_thd= table_log_handler->slow_log_thd; + break; + case QUERY_LOG_GENERAL: + table_list= &table_log_handler->general_log; + tmp_opt= &opt_log; + file_log= file_log_handler->get_mysql_log(); + log_thd= table_log_handler->general_log_thd; + break; + default: + DBUG_ASSERT(0); + } + + if (!(*tmp_opt)) + return; + + if (is_log_tables_initialized) + lock_and_wait_for_table_name(log_thd, table_list); + lock(); + + if (is_log_tables_initialized) + { + VOID(pthread_mutex_lock(&LOCK_open)); + close_log_table(log_type, TRUE); + table_list->table= 0; + query_cache_invalidate3(log_thd, table_list, 0); + unlock_table_name(log_thd, table_list); + VOID(pthread_mutex_unlock(&LOCK_open)); + } + file_log->close(0); + *tmp_opt= FALSE; + unlock(); +} + + bool Log_to_csv_event_handler::flush(THD *thd, TABLE_LIST *close_slow_log, TABLE_LIST *close_general_log) { VOID(pthread_mutex_lock(&LOCK_open)); - close_log_table(QUERY_LOG_GENERAL, TRUE); - close_log_table(QUERY_LOG_SLOW, TRUE); - close_general_log->next_local= close_slow_log; - query_cache_invalidate3(thd, close_general_log, 0); - unlock_table_name(thd, close_slow_log); - unlock_table_name(thd, close_general_log); + if (opt_log) + { + close_log_table(QUERY_LOG_GENERAL, TRUE); + query_cache_invalidate3(thd, close_general_log, 0); + unlock_table_name(thd, close_general_log); + } + if (opt_slow_log) + { + close_log_table(QUERY_LOG_SLOW, TRUE); + query_cache_invalidate3(thd, close_slow_log, 0); + unlock_table_name(thd, close_slow_log); + } VOID(pthread_mutex_unlock(&LOCK_open)); - return reopen_log_table(QUERY_LOG_SLOW) || - reopen_log_table(QUERY_LOG_GENERAL); + /* + we use | and not || here, to ensure that both reopen_log_table + are called, even if the first one fails + */ + if ((opt_slow_log && reopen_log_table(QUERY_LOG_SLOW)) | + (opt_log && reopen_log_table(QUERY_LOG_GENERAL))) + return 1; + return 0; } /* the parameters are unused for the log tables */ bool Log_to_csv_event_handler::init() { - /* we always open log tables. even if the logging is disabled */ - return (open_log_table(QUERY_LOG_GENERAL) || open_log_table(QUERY_LOG_SLOW)); + /* + we use | and not || here, to ensure that both open_log_table + are called, even if the first one fails + */ + if ((opt_log && open_log_table(QUERY_LOG_GENERAL)) | + (opt_slow_log && open_log_table(QUERY_LOG_SLOW))) + return 1; + return 0; } int LOGGER::set_handlers(uint error_log_printer, diff --git a/sql/log.h b/sql/log.h index 03d5466e549..49aae15feee 100644 --- a/sql/log.h +++ b/sql/log.h @@ -438,6 +438,8 @@ public: CHARSET_INFO *client_cs); void flush(); void init_pthread_objects(); + MYSQL_LOG *get_mysql_slow_log() { return &mysql_slow_log; } + MYSQL_LOG *get_mysql_log() { return &mysql_log; } }; @@ -510,8 +512,21 @@ public: void init_error_log(uint error_log_printer); void init_slow_log(uint slow_log_printer); void init_general_log(uint general_log_printer); - }; - + void deactivate_log_handler(THD* thd, uint log_type); + bool activate_log_handler(THD* thd, uint log_type); + MYSQL_LOG *get_slow_log_file_handler() + { + if (file_log_handler) + return file_log_handler->get_mysql_slow_log(); + return NULL; + } + MYSQL_LOG *get_log_file_handler() + { + if (file_log_handler) + return file_log_handler->get_mysql_log(); + return NULL; + } +}; enum enum_binlog_format { BINLOG_FORMAT_STMT= 0, // statement-based diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 3d499b67519..83cbb383aef 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -1167,6 +1167,7 @@ bool rename_temporary_table(THD* thd, TABLE *table, const char *new_db, void remove_db_from_cache(const char *db); void flush_tables(); bool is_equal(const LEX_STRING *a, const LEX_STRING *b); +char *make_default_log_name(char *buff,const char* log_ext); #ifdef WITH_PARTITION_STORAGE_ENGINE uint fast_alter_partition_table(THD *thd, TABLE *table, @@ -1514,7 +1515,9 @@ extern bool opt_endinfo, using_udf_functions; extern my_bool locked_in_memory; extern bool opt_using_transactions, mysqld_embedded; extern bool using_update_log, opt_large_files, server_id_supplied; -extern bool opt_log, opt_update_log, opt_bin_log, opt_slow_log, opt_error_log; +extern bool opt_update_log, opt_bin_log, opt_error_log; +extern my_bool opt_log, opt_slow_log; +extern uint log_output_options; extern my_bool opt_log_queries_not_using_indexes; extern bool opt_disable_networking, opt_skip_show_db; extern my_bool opt_character_set_client_handshake; @@ -1536,6 +1539,8 @@ extern my_bool opt_enable_shared_memory; extern char *default_tz_name; extern my_bool opt_large_pages; extern uint opt_large_page_size; +extern char *opt_logname, *opt_slow_logname; +extern const char *log_output_str; extern MYSQL_LOG mysql_bin_log; extern LOGGER logger; @@ -1582,6 +1587,7 @@ extern TABLE *unused_tables; extern const char* any_db; extern struct my_option my_long_options[]; extern const LEX_STRING view_type; +extern TYPELIB log_output_typelib; /* optional things, have_* variables */ diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 56c3b1857a8..2ec62e741b9 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -302,16 +302,15 @@ arg_cmp_func Arg_comparator::comparator_matrix[5][2] = {&Arg_comparator::compare_row, &Arg_comparator::compare_e_row}, {&Arg_comparator::compare_decimal, &Arg_comparator::compare_e_decimal}}; -const char *log_output_names[] = -{ "NONE", "FILE", "TABLE", NullS}; +const char *log_output_names[] = { "NONE", "FILE", "TABLE", NullS}; +static const unsigned int log_output_names_len[]= { 4, 4, 5, 0 }; TYPELIB log_output_typelib= {array_elements(log_output_names)-1,"", - log_output_names, NULL}; + log_output_names, + (unsigned int *) log_output_names_len}; /* static variables */ /* the default log output is log tables */ -static const char *log_output_str= "TABLE"; -static ulong log_output_options= LOG_TABLE; static bool lower_case_table_names_used= 0; static bool volatile select_thread_in_use, signal_thread_in_use; static bool volatile ready_to_exit; @@ -342,7 +341,9 @@ static my_bool opt_sync_bdb_logs; /* Global variables */ -bool opt_log, opt_update_log, opt_bin_log, opt_slow_log; +bool opt_update_log, opt_bin_log; +my_bool opt_log, opt_slow_log; +uint log_output_options; my_bool opt_log_queries_not_using_indexes= 0; bool opt_error_log= IF_WIN(1,0); bool opt_disable_networking=0, opt_skip_show_db=0; @@ -520,6 +521,7 @@ ulong thread_id=1L,current_pid; ulong slow_launch_threads = 0, sync_binlog_period; ulong expire_logs_days = 0; ulong rpl_recovery_rank=0; +const char *log_output_str= "TABLE"; double log_10[32]; /* 10 potences */ time_t start_time; @@ -1229,6 +1231,8 @@ void clean_up(bool print_message) free_defaults(defaults_argv); my_free(sys_init_connect.value, MYF(MY_ALLOW_ZERO_PTR)); my_free(sys_init_slave.value, MYF(MY_ALLOW_ZERO_PTR)); + my_free(sys_var_general_log_path.value, MYF(MY_ALLOW_ZERO_PTR)); + my_free(sys_var_slow_log_path.value, MYF(MY_ALLOW_ZERO_PTR)); free_tmpdir(&mysql_tmpdir_list); #ifdef HAVE_REPLICATION my_free(slave_load_tmpdir,MYF(MY_ALLOW_ZERO_PTR)); @@ -2607,6 +2611,7 @@ static bool init_global_datetime_format(timestamp_type format_type, static int init_common_variables(const char *conf_file_name, int argc, char **argv, const char **groups) { + char buff[FN_REFLEN]; umask(((~my_umask) & 0666)); my_decimal_set_zero(&decimal_zero); // set decimal_zero constant; tzset(); // Set tzname @@ -2763,6 +2768,16 @@ static int init_common_variables(const char *conf_file_name, int argc, else sys_init_slave.value=my_strdup("",MYF(0)); + if (!opt_logname) + opt_logname= make_default_log_name(buff, ".log"); + sys_var_general_log_path.value= my_strdup(opt_logname, MYF(0)); + sys_var_general_log_path.value_length= strlen(opt_logname); + + if (!opt_slow_logname) + opt_slow_logname= make_default_log_name(buff, "-slow.log"); + sys_var_slow_log_path.value= my_strdup(opt_slow_logname, MYF(0)); + sys_var_slow_log_path.value_length= strlen(opt_slow_logname); + if (use_temp_pool && bitmap_init(&temp_pool,0,1024,1)) return 1; if (my_database_names_init()) @@ -4815,7 +4830,9 @@ enum options_mysqld OPT_TABLE_LOCK_WAIT_TIMEOUT, OPT_PLUGIN_DIR, OPT_LOG_OUTPUT, - OPT_PORT_OPEN_TIMEOUT + OPT_PORT_OPEN_TIMEOUT, + OPT_GENERAL_LOG, + OPT_SLOW_LOG }; @@ -5044,6 +5061,9 @@ Disable with --skip-bdb (will save memory).", "Set up signals usable for debugging", (gptr*) &opt_debugging, (gptr*) &opt_debugging, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"general-log", OPT_GENERAL_LOG, + "Enable|disable general log", (gptr*) &opt_log, + (gptr*) &opt_log, 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0}, #ifdef HAVE_LARGE_PAGES {"large-pages", OPT_ENABLE_LARGE_PAGES, "Enable support for large pages. \ Disable with --skip-large-pages.", @@ -5613,6 +5633,9 @@ replicating a LOAD DATA INFILE command.", "Tells the slave thread to continue replication when a query returns an error from the provided list.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif + {"slow-query-log", OPT_SLOW_LOG, + "Enable|disable slow query log", (gptr*) &opt_slow_log, + (gptr*) &opt_slow_log, 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"socket", OPT_SOCKET, "Socket file to use for connection.", (gptr*) &mysqld_unix_port, (gptr*) &mysqld_unix_port, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, @@ -6922,6 +6945,7 @@ static void mysql_init_variables(void) opt_skip_slave_start= opt_reckless_slave = 0; mysql_home[0]= pidfile_name[0]= log_error_file[0]= 0; opt_log= opt_update_log= opt_slow_log= 0; + log_output_options= find_bit_type(log_output_str, &log_output_typelib); opt_bin_log= 0; opt_disable_networking= opt_skip_show_db=0; opt_logname= opt_update_logname= opt_binlog_index_name= opt_slow_logname= 0; diff --git a/sql/set_var.cc b/sql/set_var.cc index 53b4b395c37..79de4dd7c16 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -55,6 +55,7 @@ #include #include #include +#include #include "event_scheduler.h" @@ -164,6 +165,11 @@ static byte *get_error_count(THD *thd); static byte *get_warning_count(THD *thd); static byte *get_prepared_stmt_count(THD *thd); static byte *get_tmpdir(THD *thd); +static int sys_check_log_path(THD *thd, set_var *var); +static bool sys_update_general_log_path(THD *thd, set_var * var); +static void sys_default_general_log_path(THD *thd, enum_var_type type); +static bool sys_update_slow_log_path(THD *thd, set_var * var); +static void sys_default_slow_log_path(THD *thd, enum_var_type type); /* Variable definition list @@ -679,6 +685,22 @@ sys_var_have_variable sys_have_row_based_replication("have_row_based_replication /* Global read-only variable describing server license */ sys_var_const_str sys_license("license", STRINGIFY_ARG(LICENSE)); +/* Global variables which enable|disable logging */ +sys_var_log_state sys_var_general_log("general_log", &opt_log, + QUERY_LOG_GENERAL); +sys_var_log_state sys_var_slow_query_log("slow_query_log", &opt_slow_log, + QUERY_LOG_SLOW); +sys_var_str sys_var_general_log_path("general_log_file", sys_check_log_path, + sys_update_general_log_path, + sys_default_general_log_path, + opt_logname); +sys_var_str sys_var_slow_log_path("slow_query_log_file", sys_check_log_path, + sys_update_slow_log_path, + sys_default_slow_log_path, + opt_slow_logname); +sys_var_log_output sys_var_log_output_state("log_output", &log_output_options, + &log_output_typelib, 0); + #ifdef HAVE_REPLICATION static int show_slave_skip_errors(THD *thd, SHOW_VAR *var, char *buff) { @@ -777,6 +799,8 @@ SHOW_VAR init_vars[]= { {"ft_min_word_len", (char*) &ft_min_word_len, SHOW_LONG}, {"ft_query_expansion_limit",(char*) &ft_query_expansion_limit, SHOW_LONG}, {"ft_stopword_file", (char*) &ft_stopword_file, SHOW_CHAR_PTR}, + {sys_var_general_log.name, (char*) &opt_log, SHOW_MY_BOOL}, + {sys_var_general_log_path.name, (char*) &sys_var_general_log_path, SHOW_SYS}, {sys_group_concat_max_len.name, (char*) &sys_group_concat_max_len, SHOW_SYS}, {sys_have_archive_db.name, (char*) &have_archive_db, SHOW_HAVE}, {sys_have_berkeley_db.name, (char*) &have_berkeley_db, SHOW_HAVE}, @@ -854,6 +878,7 @@ SHOW_VAR init_vars[]= { {"log_bin", (char*) &opt_bin_log, SHOW_BOOL}, {sys_trust_function_creators.name,(char*) &sys_trust_function_creators, SHOW_SYS}, {"log_error", (char*) log_error_file, SHOW_CHAR}, + {sys_var_log_output_state.name, (char*) &sys_var_log_output_state, SHOW_SYS}, {sys_log_queries_not_using_indexes.name, (char*) &sys_log_queries_not_using_indexes, SHOW_SYS}, #ifdef HAVE_REPLICATION @@ -977,6 +1002,8 @@ SHOW_VAR init_vars[]= { {sys_slave_trans_retries.name,(char*) &sys_slave_trans_retries, SHOW_SYS}, #endif {sys_slow_launch_time.name, (char*) &sys_slow_launch_time, SHOW_SYS}, + {sys_var_slow_query_log.name, (char*) &opt_slow_log, SHOW_MY_BOOL}, + {sys_var_slow_log_path.name, (char*) &sys_var_slow_log_path, SHOW_SYS}, #ifdef HAVE_SYS_UN_H {"socket", (char*) &mysqld_unix_port, SHOW_CHAR_PTR}, #endif @@ -2509,6 +2536,195 @@ end: } +bool sys_var_log_state::update(THD *thd, set_var *var) +{ + bool res= 0; + pthread_mutex_lock(&LOCK_global_system_variables); + if (!var->save_result.ulong_value) + logger.deactivate_log_handler(thd, log_type); + else + { + if ((res= logger.activate_log_handler(thd, log_type))) + { + my_error(ER_CANT_ACTIVATE_LOG, MYF(0), + log_type == QUERY_LOG_GENERAL ? "general" : + "slow query"); + goto err; + } + } +err: + pthread_mutex_unlock(&LOCK_global_system_variables); + return res; +} + +void sys_var_log_state::set_default(THD *thd, enum_var_type type) +{ + pthread_mutex_lock(&LOCK_global_system_variables); + logger.deactivate_log_handler(thd, log_type); + pthread_mutex_unlock(&LOCK_global_system_variables); +} + + +static int sys_check_log_path(THD *thd, set_var *var) +{ + char path[FN_REFLEN]; + MY_STAT f_stat; + const char *var_path= var->value->str_value.ptr(); + bzero(&f_stat, sizeof(MY_STAT)); + + (void) unpack_filename(path, var_path); + if (my_stat(path, &f_stat, MYF(0))) + { + /* Check if argument is a file and we have 'write' permission */ + if (!MY_S_ISREG(f_stat.st_mode) || + !(f_stat.st_mode & MY_S_IWRITE)) + return -1; + } + else + { + /* + Check if directory exists and + we have permission to create file & write to file + */ + (void) dirname_part(path, var_path); + if (my_access(path, (F_OK|W_OK))) + return -1; + } + return 0; +} + + +bool update_sys_var_str_path(THD *thd, sys_var_str *var_str, + set_var *var, const char *log_ext, + bool log_state, uint log_type) +{ + MYSQL_LOG *file_log; + char buff[FN_REFLEN]; + char *res= 0, *old_value=(char *)(var ? var->value->str_value.ptr() : 0); + bool result= 0; + uint str_length= (var ? var->value->str_value.length() : 0); + + switch (log_type) { + case QUERY_LOG_SLOW: + file_log= logger.get_slow_log_file_handler(); + break; + case QUERY_LOG_GENERAL: + file_log= logger.get_log_file_handler(); + break; + default: + DBUG_ASSERT(0); + } + + if (!old_value) + { + old_value= make_default_log_name(buff, log_ext); + str_length= strlen(old_value); + } + if (!(res= my_strndup((byte*)old_value, str_length, MYF(MY_FAE+MY_WME)))) + { + result= 1; + goto err; + } + + pthread_mutex_lock(&LOCK_global_system_variables); + logger.lock(); + + if (file_log && log_state) + file_log->close(0); + old_value= var_str->value; + var_str->value= res; + var_str->value_length= str_length; + my_free(old_value, MYF(MY_ALLOW_ZERO_PTR)); + if (file_log && log_state) + file_log->open_query_log(sys_var_general_log_path.value); + + logger.unlock(); + pthread_mutex_unlock(&LOCK_global_system_variables); + +err: + return result; +} + + +static bool sys_update_general_log_path(THD *thd, set_var * var) +{ + return update_sys_var_str_path(thd, &sys_var_general_log_path, + var, ".log", opt_log, QUERY_LOG_GENERAL); +} + + +static void sys_default_general_log_path(THD *thd, enum_var_type type) +{ + (void) update_sys_var_str_path(thd, &sys_var_general_log_path, + 0, ".log", opt_log, QUERY_LOG_GENERAL); +} + + +static bool sys_update_slow_log_path(THD *thd, set_var * var) +{ + return update_sys_var_str_path(thd, &sys_var_slow_log_path, + var, "-slow.log", opt_slow_log, + QUERY_LOG_SLOW); +} + + +static void sys_default_slow_log_path(THD *thd, enum_var_type type) +{ + (void) update_sys_var_str_path(thd, &sys_var_slow_log_path, + 0, "-slow.log", opt_slow_log, + QUERY_LOG_SLOW); +} + + +bool sys_var_log_output::update(THD *thd, set_var *var) +{ + pthread_mutex_lock(&LOCK_global_system_variables); + logger.lock(); + logger.init_slow_log(var->save_result.ulong_value); + logger.init_general_log(var->save_result.ulong_value); + *value= var->save_result.ulong_value; + logger.unlock(); + pthread_mutex_unlock(&LOCK_global_system_variables); + return 0; +} + + +void sys_var_log_output::set_default(THD *thd, enum_var_type type) +{ + pthread_mutex_lock(&LOCK_global_system_variables); + logger.lock(); + logger.init_slow_log(LOG_TABLE); + logger.init_general_log(LOG_TABLE); + *value= LOG_TABLE; + logger.unlock(); + pthread_mutex_unlock(&LOCK_global_system_variables); +} + + +byte *sys_var_log_output::value_ptr(THD *thd, enum_var_type type, LEX_STRING *base) +{ + char buff[256]; + String tmp(buff, sizeof(buff), &my_charset_latin1); + ulong length; + ulong val= *value; + + tmp.length(0); + for (uint i= 0; val; val>>= 1, i++) + { + if (val & 1) + { + tmp.append(log_output_typelib.type_names[i], + log_output_typelib.type_lengths[i]); + tmp.append(','); + } + } + + if ((length= tmp.length())) + length--; + return (byte*) thd->strmake(tmp.ptr(), length); +} + + /***************************************************************************** Functions to handle SET NAMES and SET CHARACTER SET *****************************************************************************/ diff --git a/sql/set_var.h b/sql/set_var.h index 1049b154d47..2793f60f763 100644 --- a/sql/set_var.h +++ b/sql/set_var.h @@ -262,7 +262,7 @@ public: class sys_var_enum :public sys_var { - uint *value; + uint *value; TYPELIB *enum_names; public: sys_var_enum(const char *name_arg, uint *value_arg, @@ -772,6 +772,38 @@ public: }; +class sys_var_log_state :public sys_var_bool_ptr +{ + uint log_type; +public: + sys_var_log_state(const char *name_arg, my_bool *value_arg, uint log_type_arg) + :sys_var_bool_ptr(name_arg, value_arg), log_type(log_type_arg) {} + bool update(THD *thd, set_var *var); + void set_default(THD *thd, enum_var_type type); +}; + + +class sys_var_log_output :public sys_var +{ + uint *value; + TYPELIB *enum_names; +public: + sys_var_log_output(const char *name_arg, uint *value_arg, + TYPELIB *typelib, sys_after_update_func func) + :sys_var(name_arg,func), value(value_arg), enum_names(typelib) + {} + bool check(THD *thd, set_var *var) + { + return check_set(thd, var, enum_names); + } + bool update(THD *thd, set_var *var); + byte *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base); + bool check_update_type(Item_result type) { return 0; } + void set_default(THD *thd, enum_var_type type); + SHOW_TYPE type() { return SHOW_CHAR; } +}; + + /* Variable that you can only read from */ class sys_var_readonly: public sys_var @@ -1068,6 +1100,8 @@ CHARSET_INFO *get_old_charset_by_name(const char *old_name); gptr find_named(I_List *list, const char *name, uint length, NAMED_LIST **found); +extern sys_var_str sys_var_general_log_path, sys_var_slow_log_path; + /* key_cache functions */ KEY_CACHE *get_key_cache(LEX_STRING *cache_name); KEY_CACHE *get_or_create_key_cache(const char *name, uint length); diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt index ae5ddd31475..317ec5fc420 100644 --- a/sql/share/errmsg.txt +++ b/sql/share/errmsg.txt @@ -5832,3 +5832,5 @@ ER_EVENT_SET_VAR_ERROR ER_PARTITION_MERGE_ERROR eng "MyISAM Merge handler cannot be used in partitioned tables" swe "MyISAM Merge kan inte anändas i en partitionerad tabell" +ER_CANT_ACTIVATE_LOG + eng "Cannot activate '%-.64s' log." diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index dd4748bc15c..7609c0eb495 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -931,7 +931,8 @@ bool mysql_truncate(THD *thd, TABLE_LIST *table_list, bool dont_send_ok) /* close log tables in use */ if (!my_strcasecmp(system_charset_info, table_list->db, "mysql")) { - if (!my_strcasecmp(system_charset_info, table_list->table_name, + if (opt_log && + !my_strcasecmp(system_charset_info, table_list->table_name, "general_log")) { lock_logger= 1; @@ -940,7 +941,8 @@ bool mysql_truncate(THD *thd, TABLE_LIST *table_list, bool dont_send_ok) closed_log_tables= closed_log_tables | QUERY_LOG_GENERAL; } else - if (!my_strcasecmp(system_charset_info, table_list->table_name, + if (opt_slow_log && + !my_strcasecmp(system_charset_info, table_list->table_name, "slow_log")) { lock_logger= 1; @@ -981,10 +983,10 @@ end: unlock_table_name(thd, table_list); VOID(pthread_mutex_unlock(&LOCK_open)); - if (closed_log_tables & QUERY_LOG_SLOW) + if (opt_slow_log && (closed_log_tables & QUERY_LOG_SLOW)) logger.reopen_log_table(QUERY_LOG_SLOW); - if (closed_log_tables & QUERY_LOG_GENERAL) + if (opt_log && (closed_log_tables & QUERY_LOG_GENERAL)) logger.reopen_log_table(QUERY_LOG_GENERAL); if (lock_logger) logger.unlock(); -- cgit v1.2.1 From b7aa1c23d843b65eb37beaeaa7e5ac25a688a21f Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 00:30:19 +1000 Subject: BUG#20073 information_schema.FILES for UNDO LOG give incorrect EXTENT_SIZE, FREE_EXTENTS, sql/ha_ndbcluster.cc: fix total extents display for FILES table. fix extra field to also contain UNDO_BUFFER_SIZE --- sql/ha_ndbcluster.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 2d623702670..6c66ba620c9 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -10364,7 +10364,7 @@ static int ndbcluster_fill_files_table(THD *thd, TABLE_LIST *tables, table->field[c++]->set_null(); // DELETED_ROWS table->field[c++]->set_null(); // UPDATE_COUNT table->field[c++]->store(lfg.getUndoFreeWords()); // FREE_EXTENTS - table->field[c++]->store(lfg.getUndoBufferSize()); // TOTAL_EXTENTS + table->field[c++]->store(uf.getSize()/4); // TOTAL_EXTENTS table->field[c++]->store(4); // EXTENT_SIZE table->field[c++]->store(uf.getSize()); // INITIAL_SIZE @@ -10394,8 +10394,8 @@ static int ndbcluster_fill_files_table(THD *thd, TABLE_LIST *tables, table->field[c++]->store("NORMAL", 6, system_charset_info); - char extra[30]; - int len= my_snprintf(extra,sizeof(extra),"CLUSTER_NODE=%u",id); + char extra[100]; + int len= my_snprintf(extra,sizeof(extra),"CLUSTER_NODE=%u;UNDO_BUFFER_SIZE=%lu",id,lfg.getUndoBufferSize()); table->field[c]->store(extra, len, system_charset_info); schema_table_store_record(thd, table); } -- cgit v1.2.1 From b7e27e80d9dc065d2ecc49aad371a71ad3a824a4 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 17:34:12 +0300 Subject: Bug #18080: INSERT ... SELECT ... JOIN results in ambiguous field list error There was an incomplete reset of the name resolution context, that caused INSERT ... SELECT ... JOIN statements to resolve not by joint row type calculated for the join. Removed the redundant re-initialization of the context, because mysql_insert_select_prepare() now correctly saves/restores the context. mysql-test/r/insert_select.result: Bug #18080: INSERT ... SELECT ... JOIN results in ambiguous field list error - testsuite for the bug mysql-test/t/insert_select.test: Bug #18080: INSERT ... SELECT ... JOIN results in ambiguous field list error - testsuite for the bug sql/sql_parse.cc: Bug #18080: INSERT ... SELECT ... JOIN results in ambiguous field list error - remove an incomplete reset of the context because the mentioned function correctly saves/restores the context. --- mysql-test/r/insert_select.result | 5 +++++ mysql-test/t/insert_select.test | 9 +++++++++ sql/sql_parse.cc | 9 --------- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/mysql-test/r/insert_select.result b/mysql-test/r/insert_select.result index 434dddb3049..62450997260 100644 --- a/mysql-test/r/insert_select.result +++ b/mysql-test/r/insert_select.result @@ -686,3 +686,8 @@ ERROR 42S22: Unknown column 'z' in 'field list' insert into t1(x,y) select x,z from t2 on duplicate key update x=values(t2.x); ERROR 42S22: Unknown column 't2.x' in 'field list' drop table t1,t2; +CREATE TABLE t1 (x int, y int); +CREATE TABLE t2 (z int, y int); +CREATE TABLE t3 (a int, b int); +INSERT INTO t3 (SELECT x, y FROM t1 JOIN t2 USING (y) WHERE z = 1); +DROP TABLE IF EXISTS t1,t2,t3; diff --git a/mysql-test/t/insert_select.test b/mysql-test/t/insert_select.test index 5dd6f338865..0e1d48fe9f5 100644 --- a/mysql-test/t/insert_select.test +++ b/mysql-test/t/insert_select.test @@ -225,3 +225,12 @@ insert into t1(x,y) select x,z from t2 on duplicate key update x=values(t2.x); drop table t1,t2; # End of 4.1 tests + +# +# Bug #18080: INSERT ... SELECT ... JOIN results in ambiguous field list error +# +CREATE TABLE t1 (x int, y int); +CREATE TABLE t2 (z int, y int); +CREATE TABLE t3 (a int, b int); +INSERT INTO t3 (SELECT x, y FROM t1 JOIN t2 USING (y) WHERE z = 1); +DROP TABLE IF EXISTS t1,t2,t3; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index ba5c2ebf484..28b2abfc883 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -3333,15 +3333,6 @@ end_with_restore_list: &lex->value_list, lex->duplicates, lex->ignore))) { - /* - Skip first table, which is the table we are inserting in. - Below we set context.table_list again because the call above to - mysql_insert_select_prepare() calls resolve_in_table_list_only(), - which in turn resets context.table_list and - context.first_name_resolution_table. - */ - select_lex->context.table_list= - select_lex->context.first_name_resolution_table= second_table; res= handle_select(thd, lex, result, OPTION_SETUP_TABLES_DONE); /* Invalidate the table in the query cache if something changed -- cgit v1.2.1 From 795e1f71c3f1b5574a1cb689c42eda6084d5e132 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 20:21:00 +0400 Subject: rpl_row_log.result, rpl_row_log_innodb.result: Fixed failing test case mysql-test/r/rpl_row_log_innodb.result: Fixed failing test case mysql-test/r/rpl_row_log.result: Fixed failing test case --- mysql-test/r/rpl_row_log.result | 16 ++++++++++++++++ mysql-test/r/rpl_row_log_innodb.result | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/mysql-test/r/rpl_row_log.result b/mysql-test/r/rpl_row_log.result index 65e9ee9fb9f..609f9376efd 100644 --- a/mysql-test/r/rpl_row_log.result +++ b/mysql-test/r/rpl_row_log.result @@ -100,3 +100,19 @@ ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find tar DROP TABLE t1; DROP TABLE t2; DROP TABLE t3; +create table t1(a int auto_increment primary key, b int); +insert into t1 values (NULL, 1); +reset master; +set insert_id=5; +insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); +show binlog events; +Log_name Pos Event_type Server_id End_log_pos Info +slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 +slave-bin.000001 # Table_map 2 # table_id: 21 (test.t1) +slave-bin.000001 # Write_rows 2 # table_id: 21 flags: STMT_END_F +select * from t1; +a b +1 1 +5 1 +6 1 +drop table t1; diff --git a/mysql-test/r/rpl_row_log_innodb.result b/mysql-test/r/rpl_row_log_innodb.result index 2c89ca5f8ff..b47dff40454 100644 --- a/mysql-test/r/rpl_row_log_innodb.result +++ b/mysql-test/r/rpl_row_log_innodb.result @@ -108,3 +108,19 @@ ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find tar DROP TABLE t1; DROP TABLE t2; DROP TABLE t3; +create table t1(a int auto_increment primary key, b int); +insert into t1 values (NULL, 1); +reset master; +set insert_id=5; +insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); +show binlog events; +Log_name Pos Event_type Server_id End_log_pos Info +slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 +slave-bin.000001 # Table_map 2 # table_id: 21 (test.t1) +slave-bin.000001 # Write_rows 2 # table_id: 21 flags: STMT_END_F +select * from t1; +a b +1 1 +5 1 +6 1 +drop table t1; -- cgit v1.2.1 From 9534b8f1ec974e289a7c9d039098686cfdaa3260 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 20:14:14 +0300 Subject: Bug#19881: slave cores at close_temporary_tables under shutdown The bug was found in rpl_stm_000001 testing. In essence the following happens SLAVE thread receives what happens start init THD and its temp_table (tt0) stop storing tt0 pointer to rli->save... start restoring temp_tables - new pointer tt1 executing regular binlog event DROP temp_table at the end of which tt1-refered list must be empty (slave_open_temp_tables == 0) but the pointer refers to tt0 location! shutdown end_slave calls cleaning of temp_tables and crashes. The reason of the crash is that tt1 values is not zero upon DROPing the single temp table. This is due to alg of removing links from temp_tables list which "adapted" 5.0 code but w/o accounting that thd->temporary_tables in slave thread in prone to freeing. Upon freeing there is no more original '0' value available to denote empty list. temporary_tables must not refer to any "external" location, one of which thd->temporary_tables represents (since belong to THD instance). The fix done in sql_base.cc for two functions, look at there for details. sql/sql_base.cc: refining prepend and remove link operation to thd->temporary_tables. The list turns to be "flat" double-linked, i.e "prev" accessor refers to an item instead of pointer to one as it was previously with "open_prev". On removal an invariant involving slave_open_temp_tables counter is checked. When it is zero thd->temporary_tables is set to zero explicitly. This can not be done, for what previous code hoped, because thd object changes when slave stop/start while slave's temporary_tables are maintained all the time, until reset/shutdow --- sql/sql_base.cc | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 8ea53747b40..61ae91396ef 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -1533,17 +1533,37 @@ bool close_temporary_table(THD *thd, TABLE_LIST *table_list) } /* - Close temporary table and unlink from thd->temporary tables + unlink from thd->temporary tables and close temporary table */ void close_temporary_table(THD *thd, TABLE *table, bool free_share, bool delete_table) { - TABLE **prev= table->open_prev; - if ((*table->open_prev= table->next)) - table->next->open_prev= prev; + if (table->prev) + { + table->prev->next= table->next; + if (table->prev->next) + table->next->prev= table->prev; + } + else + { + /* removing the item from the list */ + DBUG_ASSERT(table == thd->temporary_tables); + /* + slave must reset its temporary list pointer to zero to exclude + passing non-zero value to end_slave via rli->save_temporary_tables + when no temp tables opened, see an invariant below. + */ + thd->temporary_tables= table->next; + if (thd->temporary_tables) + table->next->prev= 0; + } if (thd->slave_thread) + { + /* natural invariant of temporary_tables */ + DBUG_ASSERT(slave_open_temp_tables || !thd->temporary_tables); slave_open_temp_tables--; + } close_temporary(table, free_share, delete_table); } @@ -3500,10 +3520,12 @@ TABLE *open_temporary_table(THD *thd, const char *path, const char *db, if (link_in_list) { - tmp_table->open_prev= &thd->temporary_tables; - if ((tmp_table->next= thd->temporary_tables)) - thd->temporary_tables->open_prev= &tmp_table->next; + /* growing temp list at the head */ + tmp_table->next= thd->temporary_tables; + if (tmp_table->next) + tmp_table->next->prev= tmp_table; thd->temporary_tables= tmp_table; + thd->temporary_tables->prev= 0; if (thd->slave_thread) slave_open_temp_tables++; } -- cgit v1.2.1 From 028fa1e454459e0732b00fc4adc1c0fb7fe6632f Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 00:50:09 +0400 Subject: item_cmpfunc.cc, func_in.result, func_in.test: Reverted fix for bug#18360 mysql-test/t/func_in.test: Reverted fix for bug#18360 mysql-test/r/func_in.result: Reverted fix for bug#18360 sql/item_cmpfunc.cc: Reverted fix for bug#18360 --- mysql-test/r/func_in.result | 21 --------------------- mysql-test/t/func_in.test | 12 ------------ sql/item_cmpfunc.cc | 28 ++++++++-------------------- 3 files changed, 8 insertions(+), 53 deletions(-) diff --git a/mysql-test/r/func_in.result b/mysql-test/r/func_in.result index 0632dddb87e..3cf2afc83d1 100644 --- a/mysql-test/r/func_in.result +++ b/mysql-test/r/func_in.result @@ -202,24 +202,3 @@ select count(*) from t1 where id not in (1,2); count(*) 1 drop table t1; -create table t1 (f1 char(1), f2 int); -insert into t1 values (1,0),('a',1),('z',2); -select f1 from t1 where f1 in (1,'z'); -f1 -1 -z -select f2 from t1 where f2 in (1,'z'); -f2 -0 -1 -select f1 from t1 where 'z' in (1,f1); -f1 -z -select * from t1 where 'z' in (f2,f1); -f1 f2 -z 2 -select * from t1 where 1 in (f2,f1); -f1 f2 -1 0 -a 1 -drop table t1; diff --git a/mysql-test/t/func_in.test b/mysql-test/t/func_in.test index 3481f2c7b11..2ffe5a2d5f7 100644 --- a/mysql-test/t/func_in.test +++ b/mysql-test/t/func_in.test @@ -109,16 +109,4 @@ select count(*) from t1 where id not in (1); select count(*) from t1 where id not in (1,2); drop table t1; -# -# Bug#18360 Incorrect type coercion in IN() results in false comparison -# -create table t1 (f1 char(1), f2 int); -insert into t1 values (1,0),('a',1),('z',2); -select f1 from t1 where f1 in (1,'z'); -select f2 from t1 where f2 in (1,'z'); -select f1 from t1 where 'z' in (1,f1); -select * from t1 where 'z' in (f2,f1); -select * from t1 where 1 in (f2,f1); -drop table t1; - # End of 4.1 tests diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 126037a24d8..5055b5f4197 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -78,9 +78,6 @@ static void agg_result_type(Item_result *type, Item **items, uint nitems) NOTES Aggregation rules: - If all items are constants the type will be aggregated from all items. - If there are some non-constant items then only types of non-constant - items will be used for aggregation. If there are DATE/TIME fields/functions in the list and no string fields/functions in the list then: The INT_RESULT type will be used for aggregation instead of original @@ -167,34 +164,25 @@ static void agg_cmp_type(THD *thd, Item_result *type, Item **items, uint nitems) } } } - /* Reset to 0 on first occurence of non-const item. 1 otherwise */ - bool is_const= items[0]->const_item(); /* If the first item is a date/time function then its result should be compared as int */ if (field) - { - /* Suppose we are comparing dates and some non-constant items are present. */ + /* Suppose we are comparing dates */ type[0]= INT_RESULT; - is_const= 0; - } else type[0]= items[0]->result_type(); for (i= 0; i < nitems ; i++) { - if (!items[i]->const_item()) - { - Item_result result= field && items[i]->result_as_longlong() ? - INT_RESULT : items[i]->result_type(); - type[0]= is_const ? result : item_cmp_type(type[0], result); - is_const= 0; - } - else if (is_const) - type[0]= item_cmp_type(type[0], items[i]->result_type()); - else if (field) - convert_constant_item(thd, field, &items[i]); + Item_result result= items[i]->result_type(); + if (field && + ((!items[i]->const_item() && items[i]->result_as_longlong()) || + (items[i]->const_item() && convert_constant_item(thd, field, + &items[i])))) + result= INT_RESULT; + type[0]= item_cmp_type(type[0], result); } if (res == Item::FUNC_ITEM && field) -- cgit v1.2.1 From d90d673daf4e1ed86e0701a35509f14d750ab9ca Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 20:56:50 -0400 Subject: BUG#17138: Error in stored procedure due to fatal error when not really a fatal error. New handling of ignore error in place. mysql-test/t/partition.test: New test case sql/ha_ndbcluster.h: New handler method to check if error can be ignored sql/ha_partition.h: New handler method to check if error can be ignored sql/handler.h: New handler method to check if error can be ignored sql/sql_acl.cc: Use new handler method sql/sql_insert.cc: Use new handler method sql/sql_table.cc: Use new handler method sql/sql_union.cc: Use new handler method sql/sql_update.cc: Use new handler method --- mysql-test/t/partition.test | 23 +++++++++++++++++++++++ sql/ha_ndbcluster.h | 8 ++++++++ sql/ha_partition.h | 8 ++++++++ sql/handler.h | 25 +++++++++++++++++++++++-- sql/sql_acl.cc | 9 ++++----- sql/sql_insert.cc | 8 ++++++-- sql/sql_table.cc | 6 ++---- sql/sql_union.cc | 2 +- sql/sql_update.cc | 20 +++++++++++--------- 9 files changed, 86 insertions(+), 23 deletions(-) diff --git a/mysql-test/t/partition.test b/mysql-test/t/partition.test index 05adb6866db..3037c409165 100644 --- a/mysql-test/t/partition.test +++ b/mysql-test/t/partition.test @@ -1135,4 +1135,27 @@ alter table t1 drop partition p2; use test; drop database db99; +# +#BUG 17138 Problem with stored procedure and analyze partition +# +create table t1 (a int) +partition by list (a) +(partition p0 values in (0)); + +insert into t1 values (0); +delimiter //; + +create procedure po () +begin + begin + declare continue handler for sqlexception begin end; + update ignore t1 set a = 1 where a = 0; + end; + prepare stmt1 from 'alter table t1'; + execute stmt1; +end// + +call po()// +delimiter ;// +drop table t1; --echo End of 5.1 tests diff --git a/sql/ha_ndbcluster.h b/sql/ha_ndbcluster.h index 9bcc549cb60..a994931843b 100644 --- a/sql/ha_ndbcluster.h +++ b/sql/ha_ndbcluster.h @@ -654,6 +654,14 @@ class ha_ndbcluster: public handler int get_default_no_partitions(ulonglong max_rows); bool get_no_parts(const char *name, uint *no_parts); void set_auto_partitions(partition_info *part_info); + virtual bool cannot_ignore_error(int error, uint flags) + { + if (!handler::cannot_ignore_error(error, flags)) + return FALSE; + if (error == HA_ERR_NO_PARTITION_FOUND) + return FALSE; + return TRUE; + } THR_LOCK_DATA **store_lock(THD *thd, THR_LOCK_DATA **to, diff --git a/sql/ha_partition.h b/sql/ha_partition.h index b52c8d92164..2bf9811827f 100644 --- a/sql/ha_partition.h +++ b/sql/ha_partition.h @@ -302,6 +302,14 @@ public: virtual void start_bulk_insert(ha_rows rows); virtual int end_bulk_insert(); + virtual bool cannot_ignore_error(int error, uint flags) + { + if (!handler::cannot_ignore_error(error, flags)) + return FALSE; + if (error == HA_ERR_NO_PARTITION_FOUND) + return FALSE; + return TRUE; + } /* ------------------------------------------------------------------------- MODULE full table scan diff --git a/sql/handler.h b/sql/handler.h index f459d52fdeb..771eeea948f 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -974,7 +974,28 @@ public: bool has_transactions() { return (ha_table_flags() & HA_NO_TRANSACTIONS) == 0; } virtual uint extra_rec_buf_length() const { return 0; } - + + /* + This method is used to analyse the error to see whether the error + is ignorable or not, certain handlers can have more error that are + ignorable than others. E.g. the partition handler can get inserts + into a range where there is no partition and this is an ignorable + error. + */ +#define HA_CHECK_DUPP_KEY 1 +#define HA_CHECK_DUPP_UNIQUE 2 +#define HA_CHECK_DUPP (CHECK_DUPP_KEY + CHECK_DUPP_UNIQUE) + virtual bool cannot_ignore_error(int error, uint flags) + { + if (!error || + ((flags & HA_CHECK_DUPP_KEY) && + error == HA_ERR_FOUND_DUPP_KEY) || + ((flags & HA_CHECK_DUPP_UNIQUE) && + error == HA_ERR_FOUND_DUPP_UNIQUE)) + return FALSE; + return TRUE; + } + /* Number of rows in table. It will only be called if (table_flags() & (HA_HAS_RECORDS | HA_STATS_RECORDS_IS_EXACT)) != 0 @@ -1026,7 +1047,7 @@ public: DBUG_RETURN(rnd_end()); } int ha_reset(); - + /* this is necessary in many places, e.g. in HANDLER command */ int ha_index_or_rnd_end() { diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 4c2dfac6b8b..a656115711e 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -2049,8 +2049,7 @@ static int replace_user_table(THD *thd, TABLE *table, const LEX_USER &combo, } else if ((error=table->file->ha_write_row(table->record[0]))) // insert { // This should never happen - if (error && error != HA_ERR_FOUND_DUPP_KEY && - error != HA_ERR_FOUND_DUPP_UNIQUE) /* purecov: inspected */ + if (table->file->cannot_ignore_error(error, HA_CHECK_DUPP)) { table->file->print_error(error,MYF(0)); /* purecov: deadcode */ error= -1; /* purecov: deadcode */ @@ -2172,7 +2171,7 @@ static int replace_db_table(TABLE *table, const char *db, } else if (rights && (error= table->file->ha_write_row(table->record[0]))) { - if (error && error != HA_ERR_FOUND_DUPP_KEY) /* purecov: inspected */ + if (table->file->cannot_ignore_error(error, HA_CHECK_DUPP_KEY)) goto table_error; /* purecov: deadcode */ } @@ -2744,7 +2743,7 @@ static int replace_table_table(THD *thd, GRANT_TABLE *grant_table, else { error=table->file->ha_write_row(table->record[0]); - if (error && error != HA_ERR_FOUND_DUPP_KEY) + if (table->file->cannot_ignore_error(error, HA_CHECK_DUPP_KEY)) goto table_error; /* purecov: deadcode */ } @@ -2862,7 +2861,7 @@ static int replace_routine_table(THD *thd, GRANT_NAME *grant_name, else { error=table->file->ha_write_row(table->record[0]); - if (error && error != HA_ERR_FOUND_DUPP_KEY) + if (table->file->cannot_ignore_error(error, HA_CHECK_DUPP_KEY)) goto table_error; } diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 0dae2b8f37b..9370c47c22e 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -979,6 +979,9 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info) if (error != HA_WRITE_SKIP) goto err; table->file->restore_auto_increment(); // it's too early here! BUG#20188 + if (info->ignore && + !table->file->cannot_ignore_error(error, 0)) + goto ok_or_after_trg_err; if ((int) (key_nr = table->file->get_dup_key(error)) < 0) { error=HA_WRITE_SKIP; /* Database can't find key */ @@ -1062,7 +1065,8 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info) if ((error=table->file->ha_update_row(table->record[1], table->record[0]))) { - if ((error == HA_ERR_FOUND_DUPP_KEY) && info->ignore) + if (info->ignore && + !table->file->cannot_ignore_error(error, HA_CHECK_DUPP_KEY)) goto ok_or_after_trg_err; goto err; } @@ -1148,7 +1152,7 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info) else if ((error=table->file->ha_write_row(table->record[0]))) { if (!info->ignore || - (error != HA_ERR_FOUND_DUPP_KEY && error != HA_ERR_FOUND_DUPP_UNIQUE)) + table->file->cannot_ignore_error(error, HA_CHECK_DUPP)) goto err; table->file->restore_auto_increment(); } diff --git a/sql/sql_table.cc b/sql/sql_table.cc index a49b7a2cc42..25c5918dbe7 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -6235,10 +6235,8 @@ copy_data_between_tables(TABLE *from,TABLE *to, } if ((error=to->file->ha_write_row((byte*) to->record[0]))) { - if ((!ignore && - handle_duplicates != DUP_REPLACE) || - (error != HA_ERR_FOUND_DUPP_KEY && - error != HA_ERR_FOUND_DUPP_UNIQUE)) + if (!ignore || + to->file->cannot_ignore_error(error, HA_CHECK_DUPP)) { if (error == HA_ERR_FOUND_DUPP_KEY) { diff --git a/sql/sql_union.cc b/sql/sql_union.cc index bf93f0d3bea..5ad5ecc6556 100644 --- a/sql/sql_union.cc +++ b/sql/sql_union.cc @@ -65,7 +65,7 @@ bool select_union::send_data(List &values) if ((error= table->file->ha_write_row(table->record[0]))) { /* create_myisam_from_heap will generate error if needed */ - if (error != HA_ERR_FOUND_DUPP_KEY && error != HA_ERR_FOUND_DUPP_UNIQUE && + if (table->file->cannot_ignore_error(error, HA_CHECK_DUPP) && create_myisam_from_heap(thd, table, &tmp_table_param, error, 1)) return 1; } diff --git a/sql/sql_update.cc b/sql/sql_update.cc index e917c1358ef..c84492b9726 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -541,13 +541,14 @@ int mysql_update(THD *thd, break; } } - else if (!ignore || error != HA_ERR_FOUND_DUPP_KEY) + else if (!ignore || + table->file->cannot_ignore_error(error, HA_CHECK_DUPP_KEY)) { /* - If (ignore && error == HA_ERR_FOUND_DUPP_KEY) we don't have to + If (ignore && error is ignorable) we don't have to do anything; otherwise... */ - if (error != HA_ERR_FOUND_DUPP_KEY) + if (table->file->cannot_ignore_error(error, HA_CHECK_DUPP_KEY)) thd->fatal_error(); /* Other handler errors are fatal */ table->file->print_error(error,MYF(0)); error= 1; @@ -1417,13 +1418,14 @@ bool multi_update::send_data(List ¬_used_values) table->record[0]))) { updated--; - if (!ignore || error != HA_ERR_FOUND_DUPP_KEY) + if (!ignore || + table->file->cannot_ignore_error(error, HA_CHECK_DUPP_KEY)) { /* - If (ignore && error == HA_ERR_FOUND_DUPP_KEY) we don't have to + If (ignore && error == is ignorable) we don't have to do anything; otherwise... */ - if (error != HA_ERR_FOUND_DUPP_KEY) + if (table->file->cannot_ignore_error(error, HA_CHECK_DUPP_KEY)) thd->fatal_error(); /* Other handler errors are fatal */ table->file->print_error(error,MYF(0)); DBUG_RETURN(1); @@ -1452,8 +1454,7 @@ bool multi_update::send_data(List ¬_used_values) /* Write row, ignoring duplicated updates to a row */ if ((error= tmp_table->file->ha_write_row(tmp_table->record[0]))) { - if (error != HA_ERR_FOUND_DUPP_KEY && - error != HA_ERR_FOUND_DUPP_UNIQUE && + if (tmp_table->file->cannot_ignore_error(error, HA_CHECK_DUPP) && create_myisam_from_heap(thd, tmp_table, tmp_table_param + offset, error, 1)) { @@ -1576,7 +1577,8 @@ int multi_update::do_updates(bool from_send_error) if ((local_error=table->file->ha_update_row(table->record[1], table->record[0]))) { - if (!ignore || local_error != HA_ERR_FOUND_DUPP_KEY) + if (!ignore || + table->file->cannot_ignore_error(local_error, HA_CHECK_DUPP_KEY)) goto err; } updated++; -- cgit v1.2.1 From c21f2373b0f2f92512f3d59ec4618a6790760e6b Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 22:19:05 -0400 Subject: Bug#19407 Test 'func_regexp' fails on Windows x64 regex/regexec.c: The Win64 pre-processor evaluates state1 at the end of the chain at replace-time not at definition-time. This causes states1 to be defined as char *. --- regex/regexec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/regex/regexec.c b/regex/regexec.c index b7ad83ba883..88bcc02323d 100644 --- a/regex/regexec.c +++ b/regex/regexec.c @@ -19,7 +19,7 @@ static int nope = 0; /* for use in asserts; shuts lint up */ /* macros for manipulating states, small version */ #define states long -#define states1 states /* for later use in regexec() decision */ +#define states1 long /* for later use in regexec() decision. Ensure Win64 definition is correct.*/ #define CLEAR(v) ((v) = 0) #define SET0(v, n) ((v) &= ~((states) 1 << (n))) #define SET1(v, n) ((v) |= (states) 1 << (n)) -- cgit v1.2.1 From 7ac2e509cc8dedfd2dbdc8684e7b502bea5e7038 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 22:49:00 -0400 Subject: Fixes --- sql/handler.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/handler.h b/sql/handler.h index 771eeea948f..ef2f08a036c 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -984,7 +984,7 @@ public: */ #define HA_CHECK_DUPP_KEY 1 #define HA_CHECK_DUPP_UNIQUE 2 -#define HA_CHECK_DUPP (CHECK_DUPP_KEY + CHECK_DUPP_UNIQUE) +#define HA_CHECK_DUPP (HA_CHECK_DUPP_KEY + HA_CHECK_DUPP_UNIQUE) virtual bool cannot_ignore_error(int error, uint flags) { if (!error || -- cgit v1.2.1 From 7dd728c8ce00d80b736aa52bab84e2ad826ea3f6 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 23:13:42 -0400 Subject: New test case --- mysql-test/r/partition.result | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/mysql-test/r/partition.result b/mysql-test/r/partition.result index fa1baaec07e..b51436e6747 100644 --- a/mysql-test/r/partition.result +++ b/mysql-test/r/partition.result @@ -1043,4 +1043,19 @@ alter table t1 add partition (partition p2 values in (3)); alter table t1 drop partition p2; use test; drop database db99; +create table t1 (a int) +partition by list (a) +(partition p0 values in (0)); +insert into t1 values (0); +create procedure po () +begin +begin +declare continue handler for sqlexception begin end; +update ignore t1 set a = 1 where a = 0; +end; +prepare stmt1 from 'alter table t1'; +execute stmt1; +end// +call po()// +drop table t1; End of 5.1 tests -- cgit v1.2.1 From e978c8eb9c18832765bc4b9c1c1c17a184ab2b77 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 14:24:52 +1000 Subject: fix test result after BUG#20073 fix mysql-test/r/ndb_dd_dump.result: fix test result --- mysql-test/r/ndb_dd_dump.result | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql-test/r/ndb_dd_dump.result b/mysql-test/r/ndb_dd_dump.result index 6572f0228d0..52e88b7db86 100644 --- a/mysql-test/r/ndb_dd_dump.result +++ b/mysql-test/r/ndb_dd_dump.result @@ -172,7 +172,7 @@ INITIAL_SIZE, ENGINE FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE="UNDO LOG" ORDER BY FILE_NAME; LOGFILE_GROUP_NAME FILE_NAME TOTAL_EXTENTS INITIAL_SIZE ENGINE -lg1 undofile_lg1_01.dat 1048576 2097152 ndbcluster +lg1 undofile_lg1_01.dat 524288 2097152 ndbcluster lg1 undofile_lg1_02.dat 1048576 4194304 ndbcluster SELECT DISTINCT TABLESPACE_NAME, -- cgit v1.2.1 From 773e91d5133b0be1be41a412d6036e2735c77d70 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 17:29:02 +1000 Subject: BUG#20333 valgrind: mgmd event reporting dep on uninit value ndb/src/mgmsrv/MgmtSrvr.cpp: user correct pointer --- ndb/src/mgmsrv/MgmtSrvr.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ndb/src/mgmsrv/MgmtSrvr.cpp b/ndb/src/mgmsrv/MgmtSrvr.cpp index 9b518ba938b..d480c564987 100644 --- a/ndb/src/mgmsrv/MgmtSrvr.cpp +++ b/ndb/src/mgmsrv/MgmtSrvr.cpp @@ -1797,7 +1797,7 @@ MgmtSrvr::handleReceivedSignal(NdbApiSignal* signal) break; case GSN_EVENT_REP: { - EventReport *rep = CAST_PTR(EventReport, signal->getDataPtrSend()); + EventReport *rep = (EventReport*) signal->getDataPtr(); if (rep->getNodeId() == 0) rep->setNodeId(refToNode(signal->theSendersBlockRef)); eventReport(signal->getDataPtr()); -- cgit v1.2.1 From 7751eeaf3c928cc799f5ce3f4766e44367a70910 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 11:28:59 +0300 Subject: wrong merge of bug9676 from 4.1 to 5.0 corrected --- sql/sql_select.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/sql_select.cc b/sql/sql_select.cc index a243f22e7ee..fe4993fddbf 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -8817,7 +8817,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List &fields, } else { - set_if_smaller(table->max_rows, rows_limit); + set_if_smaller(table->s->max_rows, rows_limit); param->end_write_records= rows_limit; } -- cgit v1.2.1 From f3a56a17daafb67599f667bc621abd336d04190a Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 13:20:32 +0300 Subject: SHOW STATUS does not anymore change local status variables (except com_show_status). Global status variables are still updated. SHOW STATUS are not anymore put in slow query log because of no index usage. Implemntation done by removing orig_sql_command and moving logic of SHOW STATUS to mysql_excute_command() This simplifies code and allows us to remove some if statements all over the code. Upgraded uc_update_queries[] to sql_command_flags and added more bitmaps to better categorize commands. This allowed some overall simplifaction when testing sql_command. Fixes bugs: Bug#10210: running SHOW STATUS increments counters it shouldn't Bug#19764: SHOW commands end up in the slow log as table scans mysql-test/r/grant_cache.result: Fixed results after SHOW STATUS doesn't anymore affect status variables mysql-test/r/information_schema.result: Added extra test to cover more code mysql-test/r/query_cache.result: Remove resuts from previous tests mysql-test/r/status.result: Added more tests for testing of last_query_cost and how SHOW STATUS affects status variables. (Bug#10210) mysql-test/r/temp_table.result: Fixed results after SHOW STATUS doesn't anymore affect status variables mysql-test/r/union.result: Fixed results after SHOW STATUS is not logged to slow query log (Bug#19764) mysql-test/t/events_microsec.test: Disable warnings at init mysql-test/t/information_schema.test: Added extra test to cover more code mysql-test/t/query_cache.test: Remove resuts from previous tests mysql-test/t/status.test: Added more tests for testing of last_query_cost and how SHOW STATUS affects status variables. (Bug #10210) sql/mysql_priv.h: Added 'sql_command_flags' sql/sql_class.cc: New function add_diff_to_status(), used to update global status variables when using SHOW STATUS sql/sql_class.h: New function 'fill_information_schema_tables()' (One could not anymore use fill_derived_tables() for this as only_view_structures() is not relevant for information schema tables) Added defines for bit flags in sql_command_flags[] sql/sql_lex.cc: Remove orig_sql_command sql/sql_lex.h: Remove orig_sql_command sql/sql_parse.cc: Rename uc_update_queries -> sql_command_flags. Enhanced 'sql_command_flags' to better classify SQL commands uc_update_queries[] != 0 is changed to (sql_command_flags[] & CF_CHANGES_DATA) lex->orig_sql_command == SQLCOM_END is changed to (sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND) == 0) Simplify incrementing of thd->status_var.com_stat[] as we don't have to do special handling for SHOW commands. Split SQLCOM_SELECT handling in mysql_execute_command() to a separate function. Added special handling of SHOW STATUS commands in mysql_execute_command() and call common SQLCOM_SELECT handling. These changes allows us to easily fix that we save and restore status variables during execution of a SHOW STATUS command. Don't log SHOW STATUS commands to slow query log. This fixes Bug#10210 and Bug#19764 without adding additional 'if' code. (The new code is faster than the original as we now have fewer if's than before) sql/sql_prepare.cc: Clean up prepare-check handling of SQLCOM commands by using sql_command_flags[] This simplifes code and ensures that code works even if someone forgets to put a new status commands into the switch statement. sql/sql_select.cc: Remove special handling of SHOW STATUS. (This is now done in SQLCOM_SHOW_STATUS part in mysql_execute_command()) sql/sql_show.cc: Remove orig_sql_command Only change sql_command during 'open_normal_and_derived_tables()' (for views) and not for the full duration of generating data. Changed 'show status' to use thd->initial_status_var to ensure that the current statement is not affecting the to-be-used values. Use thd->fill_information_schema_tables() instead of 'thd->fill_derived_tables()' as the later wrongly checks the value of sql_command. sql/sql_yacc.yy: Remove usage of orig_sql_command. One side effect of this is that we need to test for cursors if the current command is a SELECT or a SHOW command. sql/structs.h: Updated comment --- mysql-test/r/grant_cache.result | 16 +- mysql-test/r/information_schema.result | 2 + mysql-test/r/query_cache.result | 1 + mysql-test/r/status.result | 50 ++++++ mysql-test/r/temp_table.result | 2 +- mysql-test/r/union.result | 8 +- mysql-test/t/events_microsec.test | 3 + mysql-test/t/information_schema.test | 2 + mysql-test/t/query_cache.test | 3 + mysql-test/t/status.test | 34 ++++ sql/mysql_priv.h | 1 + sql/sql_class.cc | 25 +++ sql/sql_class.h | 16 +- sql/sql_lex.cc | 2 +- sql/sql_lex.h | 2 +- sql/sql_parse.cc | 286 ++++++++++++++++++++------------- sql/sql_prepare.cc | 27 ++-- sql/sql_select.cc | 7 +- sql/sql_show.cc | 72 +++++---- sql/sql_yacc.yy | 65 +++----- sql/structs.h | 2 +- 21 files changed, 406 insertions(+), 220 deletions(-) diff --git a/mysql-test/r/grant_cache.result b/mysql-test/r/grant_cache.result index 925a5918c1b..2c6840d77d0 100644 --- a/mysql-test/r/grant_cache.result +++ b/mysql-test/r/grant_cache.result @@ -60,7 +60,7 @@ Variable_name Value Qcache_hits 0 show status like "Qcache_not_cached"; Variable_name Value -Qcache_not_cached 5 +Qcache_not_cached 0 select "user1"; user1 user1 @@ -72,7 +72,7 @@ Variable_name Value Qcache_hits 0 show status like "Qcache_not_cached"; Variable_name Value -Qcache_not_cached 9 +Qcache_not_cached 1 select * from t1; a b c 1 1 1 @@ -85,7 +85,7 @@ Variable_name Value Qcache_hits 1 show status like "Qcache_not_cached"; Variable_name Value -Qcache_not_cached 12 +Qcache_not_cached 1 select a from t1 ; a 1 @@ -98,7 +98,7 @@ Variable_name Value Qcache_hits 2 show status like "Qcache_not_cached"; Variable_name Value -Qcache_not_cached 15 +Qcache_not_cached 1 select c from t1; c 1 @@ -111,7 +111,7 @@ Variable_name Value Qcache_hits 3 show status like "Qcache_not_cached"; Variable_name Value -Qcache_not_cached 18 +Qcache_not_cached 1 show grants for current_user(); Grants for @localhost GRANT USAGE ON *.* TO ''@'localhost' @@ -144,7 +144,7 @@ Variable_name Value Qcache_hits 7 show status like "Qcache_not_cached"; Variable_name Value -Qcache_not_cached 22 +Qcache_not_cached 2 select "user3"; user3 user3 @@ -168,7 +168,7 @@ Variable_name Value Qcache_hits 7 show status like "Qcache_not_cached"; Variable_name Value -Qcache_not_cached 30 +Qcache_not_cached 7 select "user4"; user4 user4 @@ -198,7 +198,7 @@ Variable_name Value Qcache_hits 8 show status like "Qcache_not_cached"; Variable_name Value -Qcache_not_cached 34 +Qcache_not_cached 8 set names binary; delete from mysql.user where user in ("mysqltest_1","mysqltest_2","mysqltest_3"); delete from mysql.db where user in ("mysqltest_1","mysqltest_2","mysqltest_3"); diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result index 070049b303a..94e0a5ffd2a 100644 --- a/mysql-test/r/information_schema.result +++ b/mysql-test/r/information_schema.result @@ -199,6 +199,8 @@ select table_name, column_name, privileges from information_schema.columns where table_schema = 'mysqltest' and table_name = 'v1'; table_name column_name privileges v1 c select +explain select * from v1; +ERROR HY000: EXPLAIN/SHOW can not be issued; lacking privileges for underlying table drop view v1, mysqltest.v1; drop tables mysqltest.t4, mysqltest.t1, t2, t3, t5; drop database mysqltest; diff --git a/mysql-test/r/query_cache.result b/mysql-test/r/query_cache.result index 40aa88439b9..5f72b229ab5 100644 --- a/mysql-test/r/query_cache.result +++ b/mysql-test/r/query_cache.result @@ -1050,6 +1050,7 @@ Qcache_hits 1 drop table t1; create table t1 (a int); insert into t1 values (1),(2); +drop procedure if exists p1; CREATE PROCEDURE `p1`() begin Declare c1 cursor for select a from t1; diff --git a/mysql-test/r/status.result b/mysql-test/r/status.result index e83ade78cf6..83c6a6f5288 100644 --- a/mysql-test/r/status.result +++ b/mysql-test/r/status.result @@ -23,6 +23,32 @@ select 1; show status like 'last_query_cost'; Variable_name Value Last_query_cost 0.000000 +create table t1 (a int); +insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); +insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); +insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); +insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); +insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); +select * from t1 where a=6; +a +6 +6 +6 +6 +6 +show status like 'last_query_cost'; +Variable_name Value +Last_query_cost 12.084449 +show status like 'last_query_cost'; +Variable_name Value +Last_query_cost 12.084449 +select 1; +1 +1 +show status like 'last_query_cost'; +Variable_name Value +Last_query_cost 0.000000 +drop table t1; FLUSH STATUS; SHOW STATUS LIKE 'max_used_connections'; Variable_name Value @@ -43,3 +69,27 @@ SHOW STATUS LIKE 'max_used_connections'; Variable_name Value Max_used_connections 5 SET GLOBAL thread_cache_size=@save_thread_cache_size; +show status like 'com_show_status'; +Variable_name Value +Com_show_status 3 +show status like 'hand%write%'; +Variable_name Value +Handler_write 0 +show status like '%tmp%'; +Variable_name Value +Created_tmp_disk_tables 0 +Created_tmp_files 0 +Created_tmp_tables 0 +show status like 'hand%write%'; +Variable_name Value +Handler_write 0 +show status like '%tmp%'; +Variable_name Value +Created_tmp_disk_tables 0 +Created_tmp_files 0 +Created_tmp_tables 0 +show status like 'com_show_status'; +Variable_name Value +Com_show_status 8 +rnd_diff tmp_table_diff +20 8 diff --git a/mysql-test/r/temp_table.result b/mysql-test/r/temp_table.result index 2b3e9087cf7..637f74a1d50 100644 --- a/mysql-test/r/temp_table.result +++ b/mysql-test/r/temp_table.result @@ -98,7 +98,7 @@ d show status like "created_tmp%tables"; Variable_name Value Created_tmp_disk_tables 0 -Created_tmp_tables 2 +Created_tmp_tables 1 drop table t1; create temporary table v1 as select 'This is temp. table' A; create view v1 as select 'This is view' A; diff --git a/mysql-test/r/union.result b/mysql-test/r/union.result index 4280ae28e3c..43598caa86f 100644 --- a/mysql-test/r/union.result +++ b/mysql-test/r/union.result @@ -836,27 +836,27 @@ count(*) 26 show status like 'Slow_queries'; Variable_name Value -Slow_queries 1 +Slow_queries 0 select count(*) from t1 where b=13; count(*) 10 show status like 'Slow_queries'; Variable_name Value -Slow_queries 3 +Slow_queries 1 select count(*) from t1 where b=13 union select count(*) from t1 where a=7; count(*) 10 26 show status like 'Slow_queries'; Variable_name Value -Slow_queries 5 +Slow_queries 2 select count(*) from t1 where a=7 union select count(*) from t1 where b=13; count(*) 26 10 show status like 'Slow_queries'; Variable_name Value -Slow_queries 7 +Slow_queries 3 flush status; select a from t1 where b not in (1,2,3) union select a from t1 where b not in (4,5,6); a diff --git a/mysql-test/t/events_microsec.test b/mysql-test/t/events_microsec.test index e01120a0756..e4d57bf4ae1 100644 --- a/mysql-test/t/events_microsec.test +++ b/mysql-test/t/events_microsec.test @@ -1,4 +1,7 @@ +--disable_warnings create database if not exists events_test; +--enable_warnings + use events_test; --error ER_NOT_SUPPORTED_YET diff --git a/mysql-test/t/information_schema.test b/mysql-test/t/information_schema.test index 19e3ef97f1e..73aea01dfa2 100644 --- a/mysql-test/t/information_schema.test +++ b/mysql-test/t/information_schema.test @@ -80,6 +80,8 @@ connect (user4,localhost,mysqltest_3,,mysqltest); connection user4; select table_name, column_name, privileges from information_schema.columns where table_schema = 'mysqltest' and table_name = 'v1'; +--error 1345 +explain select * from v1; connection default; drop view v1, mysqltest.v1; diff --git a/mysql-test/t/query_cache.test b/mysql-test/t/query_cache.test index e2ff20e6ecc..2c94fe63c04 100644 --- a/mysql-test/t/query_cache.test +++ b/mysql-test/t/query_cache.test @@ -765,6 +765,9 @@ drop table t1; create table t1 (a int); insert into t1 values (1),(2); +--disable_warnings +drop procedure if exists p1; +--enable_warnings delimiter //; CREATE PROCEDURE `p1`() begin diff --git a/mysql-test/t/status.test b/mysql-test/t/status.test index 1a71425d2a7..55f9d95adc5 100644 --- a/mysql-test/t/status.test +++ b/mysql-test/t/status.test @@ -48,6 +48,19 @@ connection default; select 1; show status like 'last_query_cost'; +create table t1 (a int); +insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); +insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); +insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); +insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); +insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); +select * from t1 where a=6; +show status like 'last_query_cost'; +# Ensure value dosn't change by second status call +show status like 'last_query_cost'; +select 1; +show status like 'last_query_cost'; +drop table t1; # # Test for Bug #15933 max_used_connections is wrong after FLUSH STATUS @@ -144,3 +157,24 @@ disconnect con2; disconnect con1; # End of 5.0 tests + +# +# Ensure that SHOW STATUS only changes global status variables +# + +connect (con1,localhost,root,,); +let $rnd_next = `show global status like 'handler_read_rnd_next'`; +let $tmp_table = `show global status like 'Created_tmp_tables'`; +show status like 'com_show_status'; +show status like 'hand%write%'; +show status like '%tmp%'; +show status like 'hand%write%'; +show status like '%tmp%'; +show status like 'com_show_status'; +let $rnd_next2 = `show global status like 'handler_read_rnd_next'`; +let $tmp_table2 = `show global status like 'Created_tmp_tables'`; +--disable_query_log +eval select substring_index('$rnd_next2',0x9,-1)-substring_index('$rnd_next',0x9,-1) as rnd_diff, substring_index('$tmp_table2',0x9,-1)-substring_index('$tmp_table',0x9,-1) as tmp_table_diff; +--enable_query_log + +# End of 5.1 tests diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 6f10e812f3e..089275aec05 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -1582,6 +1582,7 @@ extern TABLE *unused_tables; extern const char* any_db; extern struct my_option my_long_options[]; extern const LEX_STRING view_type; +extern uint sql_command_flags[]; /* optional things, have_* variables */ diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 0a9e6472d9f..077ea4ff0ff 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -516,6 +516,31 @@ void add_to_status(STATUS_VAR *to_var, STATUS_VAR *from_var) /* it doesn't make sense to add last_query_cost values */ } +/* + Add the difference between two status variable arrays to another one. + + SYNOPSIS + add_diff_to_status + to_var add to this array + from_var from this array + dec_var minus this array + + NOTE + This function assumes that all variables are long/ulong. +*/ + +void add_diff_to_status(STATUS_VAR *to_var, STATUS_VAR *from_var, + STATUS_VAR *dec_var) +{ + ulong *end= (ulong*) ((byte*) to_var + offsetof(STATUS_VAR, + last_system_status_var) + + sizeof(ulong)); + ulong *to= (ulong*) to_var, *from= (ulong*) from_var, *dec= (ulong*) dec_var; + + while (to != end) + *(to++)+= *(from++) - *(dec++); +} + void THD::awake(THD::killed_state state_to_set) { diff --git a/sql/sql_class.h b/sql/sql_class.h index 723dad715bd..b416ffb0ceb 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -343,7 +343,6 @@ typedef struct system_status_var #define last_system_status_var com_stmt_close - #ifdef MYSQL_SERVER void free_tmp_table(THD *thd, TABLE *entry); @@ -833,6 +832,7 @@ public: struct rand_struct rand; // used for authentication struct system_variables variables; // Changeable local variables struct system_status_var status_var; // Per thread statistic vars + struct system_status_var *initial_status_var; /* used by show status */ THR_LOCK_INFO lock_info; // Locking info of this thread THR_LOCK_OWNER main_lock_id; // To use for conventional queries THR_LOCK_OWNER *lock_id; // If not main_lock_id, points to @@ -1306,6 +1306,10 @@ public: { return !stmt_arena->is_stmt_prepare() && !lex->only_view_structure(); } + inline bool fill_information_schema_tables() + { + return !stmt_arena->is_stmt_prepare(); + } inline gptr trans_alloc(unsigned int size) { return alloc_root(&transaction.mem_root,size); @@ -1952,8 +1956,16 @@ public: void cleanup(); }; +/* Bits in sql_command_flags */ + +#define CF_CHANGES_DATA 1 +#define CF_HAS_ROW_COUNT 2 +#define CF_STATUS_COMMAND 4 +#define CF_SHOW_TABLE_COMMAND 8 + /* Functions in sql_class.cc */ void add_to_status(STATUS_VAR *to_var, STATUS_VAR *from_var); - +void add_diff_to_status(STATUS_VAR *to_var, STATUS_VAR *from_var, + STATUS_VAR *dec_var); #endif /* MYSQL_SERVER */ diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index d45f4369095..2ede5a7ce22 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -168,7 +168,7 @@ void lex_start(THD *thd, const uchar *buf, uint length) lex->select_lex.group_list.empty(); lex->select_lex.order_list.empty(); lex->ignore_space=test(thd->variables.sql_mode & MODE_IGNORE_SPACE); - lex->sql_command= lex->orig_sql_command= SQLCOM_END; + lex->sql_command= SQLCOM_END; lex->duplicates= DUP_ERROR; lex->ignore= 0; lex->sphead= NULL; diff --git a/sql/sql_lex.h b/sql/sql_lex.h index 15a94041d24..a46aaa0bab7 100644 --- a/sql/sql_lex.h +++ b/sql/sql_lex.h @@ -934,7 +934,7 @@ typedef struct st_lex : public Query_tables_list the variable can contain 0 or 1 for each nest level. */ nesting_map allow_sum_func; - enum_sql_command sql_command, orig_sql_command; + enum_sql_command sql_command; thr_lock_type lock_option; enum SSL_type ssl_type; /* defined in violite.h */ enum my_lex_states next_state; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 00aacd7b67b..680e0dc977f 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -68,6 +68,7 @@ static void decrease_user_connections(USER_CONN *uc); static bool check_db_used(THD *thd,TABLE_LIST *tables); static bool check_multi_update_lock(THD *thd); static void remove_escape(char *name); +static bool execute_sqlcom_select(THD *thd, TABLE_LIST *all_tables); const char *any_db="*any*"; // Special symbol for check_access @@ -626,50 +627,79 @@ void free_max_user_conn(void) sql_command is actually set to SQLCOM_END sometimes so we need the +1 to include it in the array. - numbers are: - 0 - read-only query - != 0 - query that may change a table + See COMMAND_FLAG_xxx for different type of commands 2 - query that returns meaningful ROW_COUNT() - a number of modified rows */ -char uc_update_queries[SQLCOM_END+1]; +uint sql_command_flags[SQLCOM_END+1]; void init_update_queries(void) { - bzero((gptr) &uc_update_queries, sizeof(uc_update_queries)); - - uc_update_queries[SQLCOM_CREATE_TABLE]=1; - uc_update_queries[SQLCOM_CREATE_INDEX]=1; - uc_update_queries[SQLCOM_ALTER_TABLE]=1; - uc_update_queries[SQLCOM_UPDATE]=2; - uc_update_queries[SQLCOM_UPDATE_MULTI]=2; - uc_update_queries[SQLCOM_INSERT]=2; - uc_update_queries[SQLCOM_INSERT_SELECT]=2; - uc_update_queries[SQLCOM_DELETE]=2; - uc_update_queries[SQLCOM_DELETE_MULTI]=2; - uc_update_queries[SQLCOM_TRUNCATE]=1; - uc_update_queries[SQLCOM_DROP_TABLE]=1; - uc_update_queries[SQLCOM_LOAD]=1; - uc_update_queries[SQLCOM_CREATE_DB]=1; - uc_update_queries[SQLCOM_DROP_DB]=1; - uc_update_queries[SQLCOM_REPLACE]=2; - uc_update_queries[SQLCOM_REPLACE_SELECT]=2; - uc_update_queries[SQLCOM_RENAME_TABLE]=1; - uc_update_queries[SQLCOM_BACKUP_TABLE]=1; - uc_update_queries[SQLCOM_RESTORE_TABLE]=1; - 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; + bzero((gptr) &sql_command_flags, sizeof(sql_command_flags)); + + sql_command_flags[SQLCOM_CREATE_TABLE]= CF_CHANGES_DATA; + sql_command_flags[SQLCOM_CREATE_INDEX]= CF_CHANGES_DATA; + sql_command_flags[SQLCOM_ALTER_TABLE]= CF_CHANGES_DATA; + sql_command_flags[SQLCOM_TRUNCATE]= CF_CHANGES_DATA; + sql_command_flags[SQLCOM_DROP_TABLE]= CF_CHANGES_DATA; + sql_command_flags[SQLCOM_LOAD]= CF_CHANGES_DATA; + sql_command_flags[SQLCOM_CREATE_DB]= CF_CHANGES_DATA; + sql_command_flags[SQLCOM_DROP_DB]= CF_CHANGES_DATA; + sql_command_flags[SQLCOM_RENAME_TABLE]= CF_CHANGES_DATA; + sql_command_flags[SQLCOM_BACKUP_TABLE]= CF_CHANGES_DATA; + sql_command_flags[SQLCOM_RESTORE_TABLE]= CF_CHANGES_DATA; + sql_command_flags[SQLCOM_DROP_INDEX]= CF_CHANGES_DATA; + sql_command_flags[SQLCOM_CREATE_VIEW]= CF_CHANGES_DATA; + sql_command_flags[SQLCOM_DROP_VIEW]= CF_CHANGES_DATA; + sql_command_flags[SQLCOM_CREATE_EVENT]= CF_CHANGES_DATA; + sql_command_flags[SQLCOM_ALTER_EVENT]= CF_CHANGES_DATA; + sql_command_flags[SQLCOM_DROP_EVENT]= CF_CHANGES_DATA; + + sql_command_flags[SQLCOM_UPDATE]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT; + sql_command_flags[SQLCOM_UPDATE_MULTI]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT; + sql_command_flags[SQLCOM_INSERT]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT; + sql_command_flags[SQLCOM_INSERT_SELECT]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT; + sql_command_flags[SQLCOM_DELETE]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT; + sql_command_flags[SQLCOM_DELETE_MULTI]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT; + sql_command_flags[SQLCOM_REPLACE]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT; + sql_command_flags[SQLCOM_REPLACE_SELECT]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT; + + sql_command_flags[SQLCOM_SHOW_STATUS_PROC]= CF_STATUS_COMMAND; + sql_command_flags[SQLCOM_SHOW_STATUS_FUNC]= CF_STATUS_COMMAND; + sql_command_flags[SQLCOM_SHOW_STATUS]= CF_STATUS_COMMAND; + sql_command_flags[SQLCOM_SHOW_DATABASES]= CF_STATUS_COMMAND; + sql_command_flags[SQLCOM_SHOW_TRIGGERS]= CF_STATUS_COMMAND; + sql_command_flags[SQLCOM_SHOW_EVENTS]= CF_STATUS_COMMAND; + sql_command_flags[SQLCOM_SHOW_OPEN_TABLES]= CF_STATUS_COMMAND; + sql_command_flags[SQLCOM_SHOW_PLUGINS]= CF_STATUS_COMMAND; + sql_command_flags[SQLCOM_SHOW_FIELDS]= CF_STATUS_COMMAND; + sql_command_flags[SQLCOM_SHOW_KEYS]= CF_STATUS_COMMAND; + sql_command_flags[SQLCOM_SHOW_VARIABLES]= CF_STATUS_COMMAND; + sql_command_flags[SQLCOM_SHOW_CHARSETS]= CF_STATUS_COMMAND; + sql_command_flags[SQLCOM_SHOW_COLLATIONS]= CF_STATUS_COMMAND; + sql_command_flags[SQLCOM_SHOW_STATUS_PROC]= CF_STATUS_COMMAND; + + sql_command_flags[SQLCOM_SHOW_TABLES]= (CF_STATUS_COMMAND | + CF_SHOW_TABLE_COMMAND); + sql_command_flags[SQLCOM_SHOW_TABLE_STATUS]= (CF_STATUS_COMMAND | + CF_SHOW_TABLE_COMMAND); + + /* + The following is used to preserver CF_ROW_COUNT during the + a CALL or EXECUTE statement, so the value generated by the + last called (or executed) statement is preserved. + See mysql_execute_command() for how CF_ROW_COUNT is used. + */ + sql_command_flags[SQLCOM_CALL]= CF_HAS_ROW_COUNT; + sql_command_flags[SQLCOM_EXECUTE]= CF_HAS_ROW_COUNT; } + bool is_update_query(enum enum_sql_command command) { DBUG_ASSERT(command >= 0 && command <= SQLCOM_END); - return uc_update_queries[command] != 0; + return (sql_command_flags[command] & CF_CHANGES_DATA) == 0; } /* @@ -733,7 +763,8 @@ static bool check_mqh(THD *thd, uint check_command) if (check_command < (uint) SQLCOM_END) { /* Check that we have not done too many updates / hour */ - if (uc->user_resources.updates && uc_update_queries[check_command] && + if (uc->user_resources.updates && + (sql_command_flags[check_command] & CF_CHANGES_DATA) && uc->updates++ >= uc->user_resources.updates) { net_printf_error(thd, ER_USER_LIMIT_REACHED, uc->user, "max_updates", @@ -2290,8 +2321,6 @@ int prepare_schema_table(THD *thd, LEX *lex, Table_ident *table_ident, TABLE_LIST *table_list= (TABLE_LIST*) select_lex->table_list.first; table_list->schema_select_lex= sel; table_list->schema_table_reformed= 1; - statistic_increment(thd->status_var.com_stat[lex->orig_sql_command], - &LOCK_status); DBUG_RETURN(0); } @@ -2458,7 +2487,7 @@ mysql_execute_command(THD *thd) */ if (opt_readonly && !(thd->security_ctx->master_access & SUPER_ACL) && - uc_update_queries[lex->sql_command] && + (sql_command_flags[lex->sql_command] & CF_CHANGES_DATA) && !((lex->sql_command == SQLCOM_CREATE_TABLE) && (lex->create_info.options & HA_LEX_CREATE_TMP_TABLE)) && ((lex->sql_command != SQLCOM_UPDATE_MULTI) && @@ -2470,9 +2499,8 @@ mysql_execute_command(THD *thd) #ifdef HAVE_REPLICATION } /* endif unlikely slave */ #endif - if(lex->orig_sql_command == SQLCOM_END) - statistic_increment(thd->status_var.com_stat[lex->sql_command], - &LOCK_status); + statistic_increment(thd->status_var.com_stat[lex->sql_command], + &LOCK_status); #ifdef HAVE_ROW_BASED_REPLICATION if (lex->binlog_row_based_if_mixed) @@ -2480,77 +2508,61 @@ mysql_execute_command(THD *thd) #endif /*HAVE_ROW_BASED_REPLICATION*/ switch (lex->sql_command) { + case SQLCOM_SHOW_EVENTS: + if ((res= check_access(thd, EVENT_ACL, thd->lex->select_lex.db, 0, 0, 0, + is_schema_db(thd->lex->select_lex.db)))) + break; + /* fall through */ + case SQLCOM_SHOW_STATUS_PROC: + case SQLCOM_SHOW_STATUS_FUNC: + res= execute_sqlcom_select(thd, all_tables); + break; + case SQLCOM_SHOW_STATUS: + { + system_status_var old_status_var= thd->status_var; + thd->initial_status_var= &old_status_var; + res= execute_sqlcom_select(thd, all_tables); + /* Don't log SHOW STATUS commands to slow query log */ + thd->server_status&= ~(SERVER_QUERY_NO_INDEX_USED | + SERVER_QUERY_NO_GOOD_INDEX_USED); + /* + restore status variables, as we don't want 'show status' to cause + changes + */ + pthread_mutex_lock(&LOCK_status); + add_diff_to_status(&global_status_var, &thd->status_var, + &old_status_var); + thd->status_var= old_status_var; + pthread_mutex_unlock(&LOCK_status); + break; + } + case SQLCOM_SHOW_DATABASES: + case SQLCOM_SHOW_TABLES: + case SQLCOM_SHOW_TRIGGERS: + case SQLCOM_SHOW_TABLE_STATUS: + case SQLCOM_SHOW_OPEN_TABLES: + case SQLCOM_SHOW_PLUGINS: + case SQLCOM_SHOW_FIELDS: + case SQLCOM_SHOW_KEYS: + case SQLCOM_SHOW_VARIABLES: + case SQLCOM_SHOW_CHARSETS: + case SQLCOM_SHOW_COLLATIONS: case SQLCOM_SELECT: - { - /* assign global limit variable if limit is not given */ - { - SELECT_LEX *param= lex->unit.global_parameters; - if (!param->explicit_limit) - param->select_limit= - new Item_int((ulonglong)thd->variables.select_limit); - } - - select_result *result=lex->result; + thd->status_var.last_query_cost= 0.0; if (all_tables) { - if (lex->orig_sql_command != SQLCOM_SHOW_STATUS_PROC && - lex->orig_sql_command != SQLCOM_SHOW_STATUS_FUNC && - lex->orig_sql_command != SQLCOM_SHOW_EVENTS) - res= check_table_access(thd, - lex->exchange ? SELECT_ACL | FILE_ACL : - SELECT_ACL, - all_tables, 0); - else if (lex->orig_sql_command == SQLCOM_SHOW_EVENTS) - res= check_access(thd, EVENT_ACL, thd->lex->select_lex.db, 0, 0, 0, - is_schema_db(thd->lex->select_lex.db)); + res= check_table_access(thd, + lex->exchange ? SELECT_ACL | FILE_ACL : + SELECT_ACL, + all_tables, 0); } else res= check_access(thd, - lex->exchange ? SELECT_ACL | FILE_ACL : SELECT_ACL, - any_db, 0, 0, 0, 0); - if (res) - goto error; - - if (!(res= open_and_lock_tables(thd, all_tables))) - { - if (lex->describe) - { - /* - We always use select_send for EXPLAIN, even if it's an EXPLAIN - for SELECT ... INTO OUTFILE: a user application should be able - to prepend EXPLAIN to any query and receive output for it, - even if the query itself redirects the output. - */ - if (!(result= new select_send())) - goto error; - else - thd->send_explain_fields(result); - res= mysql_explain_union(thd, &thd->lex->unit, result); - if (lex->describe & DESCRIBE_EXTENDED) - { - char buff[1024]; - String str(buff,(uint32) sizeof(buff), system_charset_info); - str.length(0); - thd->lex->unit.print(&str); - str.append('\0'); - push_warning(thd, MYSQL_ERROR::WARN_LEVEL_NOTE, - ER_YES, str.ptr()); - } - result->send_eof(); - delete result; - } - else - { - if (!result && !(result= new select_send())) - goto error; - query_cache_store_query(thd, all_tables); - res= handle_select(thd, lex, result, 0); - if (result != lex->result) - delete result; - } - } + lex->exchange ? SELECT_ACL | FILE_ACL : SELECT_ACL, + any_db, 0, 0, 0, 0); + if (!res) + res= execute_sqlcom_select(thd, all_tables); break; - } case SQLCOM_PREPARE: { mysql_sql_stmt_prepare(thd); @@ -4826,6 +4838,7 @@ end_with_restore_list: } break; } +#ifdef NOT_USED case SQLCOM_SHOW_STATUS_PROC: { res= sp_show_status_procedure(thd, (lex->wild ? @@ -4838,6 +4851,7 @@ end_with_restore_list: lex->wild->ptr() : NullS)); break; } +#endif #ifndef DBUG_OFF case SQLCOM_SHOW_PROC_CODE: case SQLCOM_SHOW_FUNC_CODE: @@ -5162,13 +5176,10 @@ end: /* The return value for ROW_COUNT() is "implementation dependent" if the statement is not DELETE, INSERT or UPDATE, but -1 is what JDBC and ODBC - wants. - - We do not change the value for a CALL or EXECUTE statement, so the value - generated by the last called (or executed) statement is preserved. - */ - if (lex->sql_command != SQLCOM_CALL && lex->sql_command != SQLCOM_EXECUTE && - uc_update_queries[lex->sql_command]<2) + wants. We also keep the last value in case of SQLCOM_CALL or + SQLCOM_EXECUTE. + */ + if (!(sql_command_flags[lex->sql_command] & CF_HAS_ROW_COUNT)) thd->row_count_func= -1; DBUG_RETURN(res || thd->net.report_error); @@ -5178,6 +5189,59 @@ error: } +static bool execute_sqlcom_select(THD *thd, TABLE_LIST *all_tables) +{ + LEX *lex= thd->lex; + select_result *result=lex->result; + bool res; + /* assign global limit variable if limit is not given */ + { + SELECT_LEX *param= lex->unit.global_parameters; + if (!param->explicit_limit) + param->select_limit= + new Item_int((ulonglong) thd->variables.select_limit); + } + if (!(res= open_and_lock_tables(thd, all_tables))) + { + if (lex->describe) + { + /* + We always use select_send for EXPLAIN, even if it's an EXPLAIN + for SELECT ... INTO OUTFILE: a user application should be able + to prepend EXPLAIN to any query and receive output for it, + even if the query itself redirects the output. + */ + if (!(result= new select_send())) + return 1; + thd->send_explain_fields(result); + res= mysql_explain_union(thd, &thd->lex->unit, result); + if (lex->describe & DESCRIBE_EXTENDED) + { + char buff[1024]; + String str(buff,(uint32) sizeof(buff), system_charset_info); + str.length(0); + thd->lex->unit.print(&str); + str.append('\0'); + push_warning(thd, MYSQL_ERROR::WARN_LEVEL_NOTE, + ER_YES, str.ptr()); + } + result->send_eof(); + delete result; + } + else + { + if (!result && !(result= new select_send())) + return 1; + query_cache_store_query(thd, all_tables); + res= handle_select(thd, lex, result, 0); + if (result != lex->result) + delete result; + } + } + return res; +} + + /* Check grants for commands which work only with one table and all other tables belonging to subselects or implicitly opened tables. @@ -6283,7 +6347,7 @@ TABLE_LIST *st_select_lex::add_table_to_list(THD *thd, ST_SCHEMA_TABLE *schema_table= find_schema_table(thd, ptr->table_name); if (!schema_table || (schema_table->hidden && - lex->orig_sql_command == SQLCOM_END)) // not a 'show' command + (sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND) == 0)) { my_error(ER_UNKNOWN_TABLE, MYF(0), ptr->table_name, information_schema_name.str); diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index 078c7e01d5a..ca56c39204b 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -1727,22 +1727,17 @@ static bool check_prepared_statement(Prepared_statement *stmt, res= mysql_test_insert_select(stmt, tables); break; - case SQLCOM_SHOW_DATABASES: + /* + Note that we don't need to have cases in this list if they are + marked with CF_STATUS_COMMAND in sql_command_flags + */ case SQLCOM_SHOW_PROCESSLIST: case SQLCOM_SHOW_STORAGE_ENGINES: case SQLCOM_SHOW_PRIVILEGES: case SQLCOM_SHOW_COLUMN_TYPES: - case SQLCOM_SHOW_STATUS: - case SQLCOM_SHOW_VARIABLES: case SQLCOM_SHOW_ENGINE_LOGS: case SQLCOM_SHOW_ENGINE_STATUS: case SQLCOM_SHOW_ENGINE_MUTEX: - case SQLCOM_SHOW_TABLES: - case SQLCOM_SHOW_OPEN_TABLES: - case SQLCOM_SHOW_CHARSETS: - case SQLCOM_SHOW_COLLATIONS: - case SQLCOM_SHOW_FIELDS: - case SQLCOM_SHOW_KEYS: case SQLCOM_SHOW_CREATE_DB: case SQLCOM_SHOW_GRANTS: case SQLCOM_DROP_TABLE: @@ -1762,9 +1757,17 @@ static bool check_prepared_statement(Prepared_statement *stmt, break; default: - /* All other statements are not supported yet. */ - my_message(ER_UNSUPPORTED_PS, ER(ER_UNSUPPORTED_PS), MYF(0)); - goto error; + /* + Trivial check of all status commands. This is easier than having + things in the above case list, as it's less chance for mistakes. + */ + if (!(sql_command_flags[sql_command] & CF_STATUS_COMMAND)) + { + /* All other statements are not supported yet. */ + my_message(ER_UNSUPPORTED_PS, ER(ER_UNSUPPORTED_PS), MYF(0)); + goto error; + } + break; } if (res == 0) DBUG_RETURN(text_protocol? FALSE : (send_prep_stmt(stmt, 0) || diff --git a/sql/sql_select.cc b/sql/sql_select.cc index e9e2a4ed1e0..a765be0650f 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -551,9 +551,6 @@ JOIN::optimize() DBUG_RETURN(0); optimized= 1; - if (thd->lex->orig_sql_command != SQLCOM_SHOW_STATUS) - thd->status_var.last_query_cost= 0.0; - row_limit= ((select_distinct || order || group_list) ? HA_POS_ERROR : unit->select_limit_cnt); /* select_limit is used to decide if we are likely to scan the whole table */ @@ -3875,10 +3872,8 @@ choose_plan(JOIN *join, table_map join_tables) /* Store the cost of this query into a user variable - Don't update last_query_cost for 'show status' command */ - if (join->thd->lex->orig_sql_command != SQLCOM_SHOW_STATUS) - join->thd->status_var.last_query_cost= join->best_read; + join->thd->status_var.last_query_cost= join->best_read; DBUG_VOID_RETURN; } diff --git a/sql/sql_show.cc b/sql/sql_show.cc index dc598b786d5..73d1ad796f1 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -2143,7 +2143,7 @@ bool schema_table_store_record(THD *thd, TABLE *table) void get_index_field_values(LEX *lex, INDEX_FIELD_VALUES *index_field_values) { const char *wild= lex->wild ? lex->wild->ptr() : NullS; - switch (lex->orig_sql_command) { + switch (lex->sql_command) { case SQLCOM_SHOW_DATABASES: index_field_values->db_value= wild; break; @@ -2332,10 +2332,9 @@ int make_db_list(THD *thd, List *files, /* This part of code is for SHOW TABLES, SHOW TABLE STATUS commands. idx_field_vals->db_value can't be 0 (see get_index_field_values() - function). lex->orig_sql_command can be not equal to SQLCOM_END - only in case of executing of SHOW commands. + function). */ - if (lex->orig_sql_command != SQLCOM_END) + if (sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND) { if (!my_strcasecmp(system_charset_info, information_schema_name.str, idx_field_vals->db_value)) @@ -2414,12 +2413,6 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond) LINT_INIT(end); LINT_INIT(len); - /* - Let us set fake sql_command so views won't try to merge - themselves into main statement. - */ - lex->sql_command= SQLCOM_SHOW_FIELDS; - lex->reset_n_backup_query_tables_list(&query_tables_list_backup); /* @@ -2442,8 +2435,16 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond) I_S tables will be done. */ thd->temporary_tables= open_tables_state_backup.temporary_tables; + /* + Let us set fake sql_command so views won't try to merge + themselves into main statement. If we don't do this, + SELECT * from information_schema.xxxx will cause problems. + SQLCOM_SHOW_FIELDS is used because it satisfies 'only_view_structure()' + */ + lex->sql_command= SQLCOM_SHOW_FIELDS; res= open_normal_and_derived_tables(thd, show_table_list, MYSQL_LOCK_IGNORE_FLUSH); + lex->sql_command= save_sql_command; /* get_all_tables() returns 1 on failure and 0 on success thus return only these and not the result code of ::process_table() @@ -2474,13 +2475,13 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond) partial_cond= make_cond_for_info_schema(cond, tables); it.rewind(); /* To get access to new elements in basis list */ + + /* + Below we generate error for non existing database. + (to save old behaviour for SHOW TABLES FROM db) + */ while ((orig_base_name= base_name= it++) || - /* - generate error for non existing database. - (to save old behaviour for SHOW TABLES FROM db) - */ - ((lex->orig_sql_command == SQLCOM_SHOW_TABLES || - lex->orig_sql_command == SQLCOM_SHOW_TABLE_STATUS) && + ((sql_command_flags[save_sql_command] & CF_SHOW_TABLE_COMMAND) && (base_name= select_lex->db) && !bases.elements)) { #ifndef NO_EMBEDDED_ACCESS_CHECKS @@ -2521,7 +2522,8 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond) { if (schema_table_idx == SCH_TABLE_NAMES) { - if (lex->verbose || lex->orig_sql_command == SQLCOM_END) + if (lex->verbose || + (sql_command_flags[save_sql_command] & CF_STATUS_COMMAND) == 0) { if (with_i_schema) { @@ -2565,8 +2567,10 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond) TABLE_LIST *show_table_list= (TABLE_LIST*) sel.table_list.first; lex->all_selects_list= &sel; lex->derived_tables= 0; + lex->sql_command= SQLCOM_SHOW_FIELDS; res= open_normal_and_derived_tables(thd, show_table_list, MYSQL_LOCK_IGNORE_FLUSH); + lex->sql_command= save_sql_command; /* We should use show_table_list->alias instead of show_table_list->table_name because table_name @@ -2876,7 +2880,7 @@ static int get_schema_column_record(THD *thd, struct st_table_list *tables, if (res) { - if (lex->orig_sql_command != SQLCOM_SHOW_FIELDS) + if (lex->sql_command != SQLCOM_SHOW_FIELDS) { /* I.e. we are in SELECT FROM INFORMATION_SCHEMA.COLUMS @@ -2927,7 +2931,7 @@ static int get_schema_column_record(THD *thd, struct st_table_list *tables, col_access= get_column_grant(thd, &tables->grant, base_name, file_name, field->field_name) & COL_ACLS; - if (lex->orig_sql_command != SQLCOM_SHOW_FIELDS && + if (lex->sql_command != SQLCOM_SHOW_FIELDS && !tables->schema_table && !col_access) continue; end= tmp; @@ -2972,7 +2976,7 @@ static int get_schema_column_record(THD *thd, struct st_table_list *tables, table->field[5]->set_notnull(); } else if (field->unireg_check == Field::NEXT_NUMBER || - lex->orig_sql_command != SQLCOM_SHOW_FIELDS || + lex->sql_command != SQLCOM_SHOW_FIELDS || field->maybe_null()) table->field[5]->set_null(); // Null as default else @@ -3242,16 +3246,18 @@ bool store_schema_proc(THD *thd, TABLE *table, TABLE *proc_table, get_field(thd->mem_root, proc_table->field[11], &definer); if (!full_access) full_access= !strcmp(sp_user, definer.ptr()); - if (!full_access && check_some_routine_access(thd, sp_db.ptr(), sp_name.ptr(), - proc_table->field[2]->val_int() == + if (!full_access && check_some_routine_access(thd, sp_db.ptr(), + sp_name.ptr(), + proc_table->field[2]-> + val_int() == TYPE_ENUM_PROCEDURE)) return 0; - if (lex->orig_sql_command == SQLCOM_SHOW_STATUS_PROC && + if (lex->sql_command == SQLCOM_SHOW_STATUS_PROC && proc_table->field[2]->val_int() == TYPE_ENUM_PROCEDURE || - lex->orig_sql_command == SQLCOM_SHOW_STATUS_FUNC && + lex->sql_command == SQLCOM_SHOW_STATUS_FUNC && proc_table->field[2]->val_int() == TYPE_ENUM_FUNCTION || - lex->orig_sql_command == SQLCOM_END) + (sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND) == 0) { restore_record(table, s->default_values); if (!wild || !wild[0] || !wild_compare(sp_name.ptr(), wild, 0)) @@ -3362,7 +3368,7 @@ static int get_schema_stat_record(THD *thd, struct st_table_list *tables, DBUG_ENTER("get_schema_stat_record"); if (res) { - if (thd->lex->orig_sql_command != SQLCOM_SHOW_KEYS) + if (thd->lex->sql_command != SQLCOM_SHOW_KEYS) { /* I.e. we are in SELECT FROM INFORMATION_SCHEMA.STATISTICS @@ -4153,7 +4159,7 @@ copy_event_to_schema_table(THD *thd, TABLE *sch_table, TABLE *event_table) optimized. It's guaranteed in case of SHOW EVENTS that the user has access. */ - if (thd->lex->orig_sql_command != SQLCOM_SHOW_EVENTS && + if (thd->lex->sql_command != SQLCOM_SHOW_EVENTS && check_access(thd, EVENT_ACL, et.dbname.str, 0, 0, 1, is_schema_db(et.dbname.str))) DBUG_RETURN(0); @@ -4383,7 +4389,7 @@ int fill_schema_events(THD *thd, TABLE_LIST *tables, COND * /* cond */) If it's SHOW EVENTS then thd->lex->select_lex.db is guaranteed not to be NULL. Let's do an assert anyway. */ - if (thd->lex->orig_sql_command == SQLCOM_SHOW_EVENTS) + if (thd->lex->sql_command == SQLCOM_SHOW_EVENTS) { DBUG_ASSERT(thd->lex->select_lex.db); if (check_access(thd, EVENT_ACL, thd->lex->select_lex.db, 0, 0, 0, @@ -4411,7 +4417,7 @@ int fill_schema_events(THD *thd, TABLE_LIST *tables, COND * /* cond */) will save use from doing a table scan and comparing every single row's `db` with the schema which we show. */ - if (thd->lex->orig_sql_command == SQLCOM_SHOW_EVENTS) + if (thd->lex->sql_command == SQLCOM_SHOW_EVENTS) ret= events_table_index_read_for_db(thd, schema_table, event_table); else ret= events_table_scan_all(thd, schema_table, event_table); @@ -4477,7 +4483,7 @@ int fill_status(THD *thd, TABLE_LIST *tables, COND *cond) (SHOW_VAR *)all_status_vars.buffer, OPT_GLOBAL, (lex->option_type == OPT_GLOBAL ? - &tmp: &thd->status_var), "",tables->table); + &tmp: thd->initial_status_var), "",tables->table); pthread_mutex_unlock(&LOCK_status); DBUG_RETURN(res); } @@ -4670,8 +4676,8 @@ TABLE *create_schema_table(THD *thd, TABLE_LIST *table_list) schema_table pointer to 'schema_tables' element RETURN - -1 errror - 0 success + 1 error + 0 success */ int make_old_format(THD *thd, ST_SCHEMA_TABLE *schema_table) @@ -4994,7 +5000,7 @@ bool get_schema_tables_result(JOIN *join) break; TABLE_LIST *table_list= tab->table->pos_in_table_list; - if (table_list->schema_table && thd->fill_derived_tables()) + if (table_list->schema_table && thd->fill_information_schema_tables()) { bool is_subselect= (&lex->unit != lex->current_select->master_unit() && lex->current_select->master_unit()->item); diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 32fdcfe45bd..277078580a8 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -2058,16 +2058,19 @@ sp_cursor_stmt: { Lex->sphead->reset_lex(YYTHD); - /* We use statement here just be able to get a better - error message. Using 'select' works too, but will then - result in a generic "syntax error" if a non-select - statement is given. */ + /* + We use statement here just be able to get a better + error message. Using 'select' works too, but will then + result in a generic "syntax error" if a non-select + statement is given. + */ } statement { LEX *lex= Lex; - if (lex->sql_command != SQLCOM_SELECT) + if (lex->sql_command != SQLCOM_SELECT && + !(sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND)) { my_message(ER_SP_BAD_CURSOR_QUERY, ER(ER_SP_BAD_CURSOR_QUERY), MYF(0)); @@ -8062,16 +8065,14 @@ show_param: DATABASES wild_and_where { LEX *lex= Lex; - lex->sql_command= SQLCOM_SELECT; - lex->orig_sql_command= SQLCOM_SHOW_DATABASES; + lex->sql_command= SQLCOM_SHOW_DATABASES; if (prepare_schema_table(YYTHD, lex, 0, SCH_SCHEMATA)) YYABORT; } | opt_full TABLES opt_db wild_and_where { LEX *lex= Lex; - lex->sql_command= SQLCOM_SELECT; - lex->orig_sql_command= SQLCOM_SHOW_TABLES; + lex->sql_command= SQLCOM_SHOW_TABLES; lex->select_lex.db= $3; if (prepare_schema_table(YYTHD, lex, 0, SCH_TABLE_NAMES)) YYABORT; @@ -8079,8 +8080,7 @@ show_param: | opt_full TRIGGERS_SYM opt_db wild_and_where { LEX *lex= Lex; - lex->sql_command= SQLCOM_SELECT; - lex->orig_sql_command= SQLCOM_SHOW_TRIGGERS; + lex->sql_command= SQLCOM_SHOW_TRIGGERS; lex->select_lex.db= $3; if (prepare_schema_table(YYTHD, lex, 0, SCH_TRIGGERS)) YYABORT; @@ -8088,8 +8088,7 @@ show_param: | EVENTS_SYM opt_db wild_and_where { LEX *lex= Lex; - lex->sql_command= SQLCOM_SELECT; - lex->orig_sql_command= SQLCOM_SHOW_EVENTS; + lex->sql_command= SQLCOM_SHOW_EVENTS; lex->select_lex.db= $2; if (prepare_schema_table(YYTHD, lex, 0, SCH_EVENTS)) YYABORT; @@ -8106,8 +8105,7 @@ show_param: | TABLE_SYM STATUS_SYM opt_db wild_and_where { LEX *lex= Lex; - lex->sql_command= SQLCOM_SELECT; - lex->orig_sql_command= SQLCOM_SHOW_TABLE_STATUS; + lex->sql_command= SQLCOM_SHOW_TABLE_STATUS; lex->select_lex.db= $3; if (prepare_schema_table(YYTHD, lex, 0, SCH_TABLES)) YYABORT; @@ -8115,8 +8113,7 @@ show_param: | OPEN_SYM TABLES opt_db wild_and_where { LEX *lex= Lex; - lex->sql_command= SQLCOM_SELECT; - lex->orig_sql_command= SQLCOM_SHOW_OPEN_TABLES; + lex->sql_command= SQLCOM_SHOW_OPEN_TABLES; lex->select_lex.db= $3; if (prepare_schema_table(YYTHD, lex, 0, SCH_OPEN_TABLES)) YYABORT; @@ -8125,16 +8122,14 @@ show_param: { LEX *lex= Lex; WARN_DEPRECATED(yythd, "5.2", "SHOW PLUGIN", "'SHOW PLUGINS'"); - lex->sql_command= SQLCOM_SELECT; - lex->orig_sql_command= SQLCOM_SHOW_PLUGINS; + lex->sql_command= SQLCOM_SHOW_PLUGINS; if (prepare_schema_table(YYTHD, lex, 0, SCH_PLUGINS)) YYABORT; } | PLUGINS_SYM { LEX *lex= Lex; - lex->sql_command= SQLCOM_SELECT; - lex->orig_sql_command= SQLCOM_SHOW_PLUGINS; + lex->sql_command= SQLCOM_SHOW_PLUGINS; if (prepare_schema_table(YYTHD, lex, 0, SCH_PLUGINS)) YYABORT; } @@ -8147,8 +8142,7 @@ show_param: | opt_full COLUMNS from_or_in table_ident opt_db wild_and_where { LEX *lex= Lex; - lex->sql_command= SQLCOM_SELECT; - lex->orig_sql_command= SQLCOM_SHOW_FIELDS; + lex->sql_command= SQLCOM_SHOW_FIELDS; if ($5) $4->change_db($5); if (prepare_schema_table(YYTHD, lex, $4, SCH_COLUMNS)) @@ -8180,8 +8174,7 @@ show_param: | keys_or_index from_or_in table_ident opt_db where_clause { LEX *lex= Lex; - lex->sql_command= SQLCOM_SELECT; - lex->orig_sql_command= SQLCOM_SHOW_KEYS; + lex->sql_command= SQLCOM_SHOW_KEYS; if ($4) $3->change_db($4); if (prepare_schema_table(YYTHD, lex, $3, SCH_STATISTICS)) @@ -8202,7 +8195,6 @@ show_param: { LEX *lex=Lex; lex->sql_command= SQLCOM_SHOW_STORAGE_ENGINES; - lex->orig_sql_command= SQLCOM_SHOW_AUTHORS; if (prepare_schema_table(YYTHD, lex, 0, SCH_ENGINES)) YYABORT; } @@ -8232,8 +8224,7 @@ show_param: | opt_var_type STATUS_SYM wild_and_where { LEX *lex= Lex; - lex->sql_command= SQLCOM_SELECT; - lex->orig_sql_command= SQLCOM_SHOW_STATUS; + lex->sql_command= SQLCOM_SHOW_STATUS; lex->option_type= $1; if (prepare_schema_table(YYTHD, lex, 0, SCH_STATUS)) YYABORT; @@ -8267,8 +8258,7 @@ show_param: | opt_var_type VARIABLES wild_and_where { LEX *lex= Lex; - lex->sql_command= SQLCOM_SELECT; - lex->orig_sql_command= SQLCOM_SHOW_VARIABLES; + lex->sql_command= SQLCOM_SHOW_VARIABLES; lex->option_type= $1; if (prepare_schema_table(YYTHD, lex, 0, SCH_VARIABLES)) YYABORT; @@ -8276,16 +8266,14 @@ show_param: | charset wild_and_where { LEX *lex= Lex; - lex->sql_command= SQLCOM_SELECT; - lex->orig_sql_command= SQLCOM_SHOW_CHARSETS; + lex->sql_command= SQLCOM_SHOW_CHARSETS; if (prepare_schema_table(YYTHD, lex, 0, SCH_CHARSETS)) YYABORT; } | COLLATION_SYM wild_and_where { LEX *lex= Lex; - lex->sql_command= SQLCOM_SELECT; - lex->orig_sql_command= SQLCOM_SHOW_COLLATIONS; + lex->sql_command= SQLCOM_SHOW_COLLATIONS; if (prepare_schema_table(YYTHD, lex, 0, SCH_COLLATIONS)) YYABORT; } @@ -8391,8 +8379,7 @@ show_param: | PROCEDURE STATUS_SYM wild_and_where { LEX *lex= Lex; - lex->sql_command= SQLCOM_SELECT; - lex->orig_sql_command= SQLCOM_SHOW_STATUS_PROC; + lex->sql_command= SQLCOM_SHOW_STATUS_PROC; if (!sp_add_to_query_tables(YYTHD, lex, "mysql", "proc", TL_READ)) YYABORT; if (prepare_schema_table(YYTHD, lex, 0, SCH_PROCEDURES)) @@ -8401,8 +8388,7 @@ show_param: | FUNCTION_SYM STATUS_SYM wild_and_where { LEX *lex= Lex; - lex->sql_command= SQLCOM_SELECT; - lex->orig_sql_command= SQLCOM_SHOW_STATUS_FUNC; + lex->sql_command= SQLCOM_SHOW_STATUS_FUNC; if (!sp_add_to_query_tables(YYTHD, lex, "mysql", "proc", TL_READ)) YYABORT; if (prepare_schema_table(YYTHD, lex, 0, SCH_PROCEDURES)) @@ -8497,8 +8483,7 @@ describe: lex->lock_option= TL_READ; mysql_init_select(lex); lex->current_select->parsing_place= SELECT_LIST; - lex->sql_command= SQLCOM_SELECT; - lex->orig_sql_command= SQLCOM_SHOW_FIELDS; + lex->sql_command= SQLCOM_SHOW_FIELDS; lex->select_lex.db= 0; lex->verbose= 0; if (prepare_schema_table(YYTHD, lex, $2, SCH_COLUMNS)) diff --git a/sql/structs.h b/sql/structs.h index 506b37eb31a..38bb441fc03 100644 --- a/sql/structs.h +++ b/sql/structs.h @@ -180,7 +180,7 @@ typedef struct user_resources { uint questions; /* Maximum number of updating statements per hour (which statements are - updating is defined by uc_update_queries array). + updating is defined by sql_command_flags array). */ uint updates; /* Maximum number of connections established per hour. */ -- cgit v1.2.1 From d556631bffc7ff40d8cd304727f5bec3bfe0d9fa Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 12:24:12 +0200 Subject: make_win_src_distribution.sh: Removed reference to missing "tools" directory mysql.spec.sh: Changed flag --with-yassl => --with-ssl Reverted accidental removal of the "make" call :-) Configure --with-embedded-server Corrected path to "libtool" command Corrected path to "libmysqld.a" Removed references to "safe_mysqld" support-files/mysql.spec.sh: Changed flag --with-yassl => --with-ssl Reverted accidental removal of the "make" call :-) Configure --with-embedded-server Corrected path to "libtool" command Corrected path to "libmysqld.a" Removed references to "safe_mysqld" scripts/make_win_src_distribution.sh: Removed reference to missing "tools" directory --- scripts/make_win_src_distribution.sh | 2 +- support-files/mysql.spec.sh | 18 +++++++----------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/scripts/make_win_src_distribution.sh b/scripts/make_win_src_distribution.sh index f7c1f19ebc9..27c8b6b7e91 100644 --- a/scripts/make_win_src_distribution.sh +++ b/scripts/make_win_src_distribution.sh @@ -256,7 +256,7 @@ copy_dir_dirs() { for i in client dbug extra storage/heap include storage/archive storage/csv \ include/mysql libmysql libmysqld storage/myisam storage/example \ storage/myisammrg mysys regex sql strings sql-common \ - tools vio zlib + vio zlib do copy_dir_files $i done diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 01746d3156e..4fb271c6c02 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -221,7 +221,7 @@ sh -c "PATH=\"${MYSQL_BUILD_PATH:-$PATH}\" \ --prefix=/ \ --with-extra-charsets=all \ %if %{YASSL_BUILD} - --with-yassl \ + --with-ssl \ %endif --exec-prefix=%{_exec_prefix} \ --libexecdir=%{_sbindir} \ @@ -235,6 +235,7 @@ sh -c "PATH=\"${MYSQL_BUILD_PATH:-$PATH}\" \ --enable-thread-safe-client \ --with-readline \ " + make } # Use our own copy of glibc @@ -350,6 +351,7 @@ BuildMySQL "--enable-shared \ --with-example-storage-engine \ --with-blackhole-storage-engine \ --with-federated-storage-engine \ + --with-embedded-server \ --with-big-tables \ --with-comment=\"MySQL Community Server (GPL)\"") @@ -389,10 +391,10 @@ install -d $RBR%{_sbindir} mv $RBR/%{_libdir}/mysql/*.so* $RBR/%{_libdir}/ # install "mysqld-debug" and "mysqld-max" -./libtool --mode=execute install -m 755 \ +$MBD/libtool --mode=execute install -m 755 \ $RPM_BUILD_DIR/mysql-%{mysql_version}/mysql-debug-%{mysql_version}/sql/mysqld \ $RBR%{_sbindir}/mysqld-debug -./libtool --mode=execute install -m 755 \ +$MBD/libtool --mode=execute install -m 755 \ $RPM_BUILD_DIR/mysql-%{mysql_version}/mysql-max-%{mysql_version}/sql/mysqld \ $RBR%{_sbindir}/mysqld-max @@ -404,16 +406,12 @@ install -m 644 $MBD/support-files/mysql-log-rotate $RBR%{_sysconfdir}/logrotate. install -m 755 $MBD/support-files/mysql.server $RBR%{_sysconfdir}/init.d/mysql # Install embedded server library in the build root -install -m 644 libmysqld/libmysqld.a $RBR%{_libdir}/mysql/ +install -m 644 $MBD/libmysqld/libmysqld.a $RBR%{_libdir}/mysql/ # Create a symlink "rcmysql", pointing to the init.script. SuSE users # will appreciate that, as all services usually offer this. ln -s %{_sysconfdir}/init.d/mysql $RPM_BUILD_ROOT%{_sbindir}/rcmysql -# Create symbolic compatibility link safe_mysqld -> mysqld_safe -# (safe_mysqld will be gone in MySQL 4.1) -ln -sf ./mysqld_safe $RBR%{_bindir}/safe_mysqld - # Touch the place where the my.cnf config file and mysqlmanager.passwd # (MySQL Instance Manager password file) might be located # Just to make sure it's in the file list and marked as a config file @@ -480,7 +478,7 @@ chmod -R og-rw $mysql_datadir/mysql # Restart in the same way that mysqld will be started normally. %{_sysconfdir}/init.d/mysql start -# Allow safe_mysqld to start mysqld and print a message before we exit +# Allow mysqld_safe to start mysqld and print a message before we exit sleep 2 @@ -542,7 +540,6 @@ fi %doc %attr(644, root, man) %{_mandir}/man1/mysql_zap.1* %doc %attr(644, root, man) %{_mandir}/man1/perror.1* %doc %attr(644, root, man) %{_mandir}/man1/replace.1* -%doc %attr(644, root, man) %{_mandir}/man1/safe_mysqld.1* %ghost %config(noreplace,missingok) %{_sysconfdir}/my.cnf %ghost %config(noreplace,missingok) %{_sysconfdir}/mysqlmanager.passwd @@ -571,7 +568,6 @@ fi %attr(755, root, root) %{_bindir}/replace %attr(755, root, root) %{_bindir}/resolve_stack_dump %attr(755, root, root) %{_bindir}/resolveip -%attr(755, root, root) %{_bindir}/safe_mysqld %attr(755, root, root) %{_sbindir}/mysqld %attr(755, root, root) %{_sbindir}/mysqld-debug -- cgit v1.2.1 From ac2c480f26d88c35f8a527ea8ce3640e827fc0d1 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 15:35:54 +0400 Subject: func_time.result: After merge fix mysql-test/r/func_time.result: After merge fix --- mysql-test/r/func_time.result | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/func_time.result b/mysql-test/r/func_time.result index f1da903ae98..5b24480f2e9 100644 --- a/mysql-test/r/func_time.result +++ b/mysql-test/r/func_time.result @@ -785,8 +785,8 @@ select f1 from t1 where "2006-1-1" between f1 and 'zzz'; f1 Warnings: Warning 1292 Incorrect date value: 'zzz' for column 'f1' at row 1 -Warning 1292 Truncated incorrect INTEGER value: 'zzz' -Warning 1292 Truncated incorrect INTEGER value: 'zzz' +Warning 1292 Truncated incorrect DOUBLE value: 'zzz' +Warning 1292 Truncated incorrect DOUBLE value: 'zzz' select f1 from t1 where makedate(2006,1) between date(f1) and date(f3); f1 2006-01-01 -- cgit v1.2.1 From 739248f9c7d4257eb81658d4c6499186d5347e16 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 15:40:10 +0400 Subject: item_cmpfunc.cc: After merge fix sql/item_cmpfunc.cc: After merge fix --- sql/item_cmpfunc.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 165dab5e43a..6a27d08611e 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -179,6 +179,10 @@ static void agg_cmp_type(THD *thd, Item_result *type, Item **items, uint nitems) for (i= 0; i < nitems ; i++) { Item_result result= items[i]->result_type(); + /* + Use INT_RESULT as result type for DATE/TIME fields/functions and + for constants successfully converted to DATE/TIME + */ if (field && ((!items[i]->const_item() && items[i]->result_as_longlong()) || (items[i]->const_item() && convert_constant_item(thd, field, -- cgit v1.2.1 From c072416c4710bd94bbce02dbdba2e637a884747e Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 17:06:35 +0500 Subject: bug #19672 (paths in embedded server are trucated in error messages) It fact, filenames are truncated in normal server as well, just we get bigger filenames in embedded server tests, but that can potentially get some problems in both cases. I modified file-related error messages to allow longer filenames sql/share/errmsg.txt: error messages fixed to keep longer filenames uncut --- sql/share/errmsg.txt | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt index 4e7b9200d88..598417f9a3a 100644 --- a/sql/share/errmsg.txt +++ b/sql/share/errmsg.txt @@ -54,7 +54,7 @@ ER_CANT_CREATE_FILE cze "Nemohu vytvo-Bøit soubor '%-.64s' (chybový kód: %d)" dan "Kan ikke oprette filen '%-.64s' (Fejlkode: %d)" nla "Kan file '%-.64s' niet aanmaken (Errcode: %d)" - eng "Can't create file '%-.64s' (errno: %d)" + eng "Can't create file '%-.200s' (errno: %d)" est "Ei suuda luua faili '%-.64s' (veakood: %d)" fre "Ne peut créer le fichier '%-.64s' (Errcode: %d)" ger "Kann Datei '%-.64s' nicht erzeugen (Fehler: %d)" @@ -278,7 +278,7 @@ ER_CANT_GET_STAT cze "Nemohu z-Bískat stav '%-.64s' (chybový kód: %d)" dan "Kan ikke læse status af '%-.64s' (Fejlkode: %d)" nla "Kan de status niet krijgen van '%-.64s' (Errcode: %d)" - eng "Can't get status of '%-.64s' (errno: %d)" + eng "Can't get status of '%-.200s' (errno: %d)" jps "'%-.64s' ‚̃XƒeƒCƒ^ƒX‚ª“¾‚ç‚ê‚Ü‚¹‚ñ. (errno: %d)", est "Ei suuda lugeda '%-.64s' olekut (veakood: %d)" fre "Ne peut obtenir le status de '%-.64s' (Errcode: %d)" @@ -353,7 +353,7 @@ ER_CANT_OPEN_FILE cze "Nemohu otev-Bøít soubor '%-.64s' (chybový kód: %d)" dan "Kan ikke åbne fil: '%-.64s' (Fejlkode: %d)" nla "Kan de file '%-.64s' niet openen (Errcode: %d)" - eng "Can't open file: '%-.64s' (errno: %d)" + eng "Can't open file: '%-.200s' (errno: %d)" jps "'%-.64s' ƒtƒ@ƒCƒ‹‚ðŠJ‚­Ž–‚ª‚Å‚«‚Ü‚¹‚ñ (errno: %d)", est "Ei suuda avada faili '%-.64s' (veakood: %d)" fre "Ne peut ouvrir le fichier: '%-.64s' (Errcode: %d)" @@ -378,7 +378,7 @@ ER_FILE_NOT_FOUND cze "Nemohu naj-Bít soubor '%-.64s' (chybový kód: %d)" dan "Kan ikke finde fila: '%-.64s' (Fejlkode: %d)" nla "Kan de file: '%-.64s' niet vinden (Errcode: %d)" - eng "Can't find file: '%-.64s' (errno: %d)" + eng "Can't find file: '%-.200s' (errno: %d)" jps "'%-.64s' ƒtƒ@ƒCƒ‹‚ðŒ©•t‚¯‚鎖‚ª‚Å‚«‚Ü‚¹‚ñ.(errno: %d)", est "Ei suuda leida faili '%-.64s' (veakood: %d)" fre "Ne peut trouver le fichier: '%-.64s' (Errcode: %d)" @@ -549,7 +549,7 @@ ER_ERROR_ON_READ cze "Chyba p-Bøi ètení souboru '%-.64s' (chybový kód: %d)" dan "Fejl ved læsning af '%-.64s' (Fejlkode: %d)" nla "Fout bij het lezen van file '%-.64s' (Errcode: %d)" - eng "Error reading file '%-.64s' (errno: %d)" + eng "Error reading file '%-.200s' (errno: %d)" jps "'%-.64s' ƒtƒ@ƒCƒ‹‚Ì“Ç‚Ýž‚݃Gƒ‰[ (errno: %d)", est "Viga faili '%-.64s' lugemisel (veakood: %d)" fre "Erreur en lecture du fichier '%-.64s' (Errcode: %d)" @@ -599,7 +599,7 @@ ER_ERROR_ON_WRITE cze "Chyba p-Bøi zápisu do souboru '%-.64s' (chybový kód: %d)" dan "Fejl ved skriving av filen '%-.64s' (Fejlkode: %d)" nla "Fout bij het wegschrijven van file '%-.64s' (Errcode: %d)" - eng "Error writing file '%-.64s' (errno: %d)" + eng "Error writing file '%-.200s' (errno: %d)" jps "'%-.64s' ƒtƒ@ƒCƒ‹‚ð‘‚­Ž–‚ª‚Å‚«‚Ü‚¹‚ñ (errno: %d)", est "Viga faili '%-.64s' kirjutamisel (veakood: %d)" fre "Erreur d'écriture du fichier '%-.64s' (Errcode: %d)" @@ -772,7 +772,7 @@ ER_NOT_FORM_FILE cze "Nespr-Bávná informace v souboru '%-.64s'" dan "Forkert indhold i: '%-.64s'" nla "Verkeerde info in file: '%-.64s'" - eng "Incorrect information in file: '%-.64s'" + eng "Incorrect information in file: '%-.200s'" jps "ƒtƒ@ƒCƒ‹ '%-.64s' ‚Ì info ‚ªŠÔˆá‚Á‚Ä‚¢‚é‚悤‚Å‚·", est "Vigane informatsioon failis '%-.64s'" fre "Information erronnée dans le fichier: '%-.64s'" @@ -797,7 +797,7 @@ ER_NOT_KEYFILE cze "Nespr-Bávný klíè pro tabulku '%-.64s'; pokuste se ho opravit" dan "Fejl i indeksfilen til tabellen '%-.64s'; prøv at reparere den" nla "Verkeerde zoeksleutel file voor tabel: '%-.64s'; probeer het te repareren" - eng "Incorrect key file for table '%-.64s'; try to repair it" + eng "Incorrect key file for table '%-.200s'; try to repair it" jps "'%-.64s' ƒe[ƒuƒ‹‚Ì key file ‚ªŠÔˆá‚Á‚Ä‚¢‚é‚悤‚Å‚·. C•œ‚ð‚µ‚Ä‚­‚¾‚³‚¢", est "Tabeli '%-.64s' võtmefail on vigane; proovi seda parandada" fre "Index corrompu dans la table: '%-.64s'; essayez de le réparer" @@ -2044,7 +2044,7 @@ ER_TEXTFILE_NOT_READABLE cze "Soubor '%-.64s' mus-Bí být v adresáøi databáze nebo èitelný pro v¹echny" dan "Filen '%-.64s' skal være i database-folderen og kunne læses af alle" nla "Het bestand '%-.64s' dient in de database directory voor the komen of leesbaar voor iedereen te zijn." - eng "The file '%-.64s' must be in the database directory or be readable by all" + eng "The file '%-.128s' must be in the database directory or be readable by all" jps "ƒtƒ@ƒCƒ‹ '%-.64s' ‚Í databse ‚Ì directory ‚É‚ ‚é‚©‘S‚Ẵ†[ƒU[‚ª“Ç‚ß‚é‚悤‚É‹–‰Â‚³‚ê‚Ä‚¢‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñ.", est "Fail '%-.64s' peab asuma andmebaasi kataloogis või olema kõigile loetav" fre "Le fichier '%-.64s' doit être dans le répertoire de la base et lisible par tous" @@ -2069,7 +2069,7 @@ ER_FILE_EXISTS_ERROR cze "Soubor '%-.64s' ji-B¾ existuje" dan "Filen '%-.64s' eksisterer allerede" nla "Het bestand '%-.64s' bestaat reeds" - eng "File '%-.80s' already exists" + eng "File '%-.200s' already exists" jps "File '%-.64s' ‚ÍŠù‚É‘¶Ý‚µ‚Ü‚·", est "Fail '%-.80s' juba eksisteerib" fre "Le fichier '%-.64s' existe déjà" @@ -2345,7 +2345,7 @@ ER_NO_UNIQUE_LOGFILE cze "Nemohu vytvo-Bøit jednoznaèné jméno logovacího souboru %s.(1-999)\n" dan "Kan ikke lave unikt log-filnavn %s.(1-999)\n" nla "Het is niet mogelijk een unieke naam te maken voor de logfile %s.(1-999)\n" - eng "Can't generate a unique log-filename %-.64s.(1-999)\n" + eng "Can't generate a unique log-filename %-.200s.(1-999)\n" est "Ei suuda luua unikaalset logifaili nime %-.64s.(1-999)\n" fre "Ne peut générer un unique nom de journal %s.(1-999)\n" ger "Kann keinen eindeutigen Dateinamen für die Logdatei %-.64s(1-999) erzeugen\n" @@ -5218,7 +5218,7 @@ ER_FPARSER_BAD_HEADER rus "îÅ×ÅÒÎÙÊ ÚÁÇÏÌÏ×ÏË ÔÉÐÁ ÆÁÊÌÁ '%-.64s'" ukr "îÅצÒÎÉÊ ÚÁÇÏÌÏ×ÏË ÔÉÐÕ Õ ÆÁÊ̦ '%-.64s'" ER_FPARSER_EOF_IN_COMMENT - eng "Unexpected end of file while parsing comment '%-.64s'" + eng "Unexpected end of file while parsing comment '%-.200s'" ger "Unerwartetes Dateiende beim Parsen des Kommentars '%-.64s'" rus "îÅÏÖÉÄÁÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ × ËÏÍÅÎÔÁÒÉÉ '%-.64s'" ukr "îÅÓÐÏĦ×ÁÎÎÉÊ Ë¦ÎÅÃØ ÆÁÊÌÕ Õ ËÏÍÅÎÔÁÒ¦ '%-.64s'" @@ -5387,7 +5387,7 @@ ER_LOGGING_PROHIBIT_CHANGING_OF eng "Binary logging and replication forbid changing the global server %s" ger "Binärlogs und Replikation verhindern Wechsel des globalen Servers %s" ER_NO_FILE_MAPPING - eng "Can't map file: %-.64s, errno: %d" + eng "Can't map file: %-.200s, errno: %d" ger "Kann Datei nicht abbilden: %-.64s, Fehler: %d" ER_WRONG_MAGIC eng "Wrong magic in %-.64s" -- cgit v1.2.1 From c782aadd122b23947de52232ecfc4f475108f9c8 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 15:45:17 +0200 Subject: Bug #19543 Out REDO log on subscription creation during startup, missing error message - add error message --- storage/ndb/src/kernel/blocks/suma/Suma.cpp | 15 +++++++++++++++ storage/ndb/src/kernel/error/ndbd_exit_codes.c | 4 ++++ 2 files changed, 19 insertions(+) diff --git a/storage/ndb/src/kernel/blocks/suma/Suma.cpp b/storage/ndb/src/kernel/blocks/suma/Suma.cpp index 91f0fab06f8..686ae476879 100644 --- a/storage/ndb/src/kernel/blocks/suma/Suma.cpp +++ b/storage/ndb/src/kernel/blocks/suma/Suma.cpp @@ -410,7 +410,22 @@ Suma::createSequenceReply(Signal* signal, jam(); if (ref != NULL) + { + switch ((UtilSequenceRef::ErrorCode)ref->errorCode) + { + case UtilSequenceRef::NoSuchSequence: + ndbrequire(false); + case UtilSequenceRef::TCError: + { + char buf[128]; + snprintf(buf, sizeof(buf), + "Startup failed during sequence creation. TC error %d", + ref->TCErrorCode); + progError(__LINE__, NDBD_EXIT_RESOURCE_ALLOC_ERROR, buf); + } + } ndbrequire(false); + } sendSTTORRY(signal); } diff --git a/storage/ndb/src/kernel/error/ndbd_exit_codes.c b/storage/ndb/src/kernel/error/ndbd_exit_codes.c index 6a14d8b7ffd..005bf830a69 100644 --- a/storage/ndb/src/kernel/error/ndbd_exit_codes.c +++ b/storage/ndb/src/kernel/error/ndbd_exit_codes.c @@ -80,6 +80,10 @@ static const ErrStruct errArray[] = /* this error message is complemented by additional info when generated */ {NDBD_EXIT_INVALID_CONFIG, XCE, "Invalid configuration received from Management Server"}, + + {NDBD_EXIT_RESOURCE_ALLOC_ERROR, XCE, + "Resource allocation error, please review the configuration"}, + /* this error message is complemented by additional info when generated, such as signal, and text */ -- cgit v1.2.1 From a365c9b1bdc47be8c8d159c6c740ea24209a58a8 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 10:16:08 -0400 Subject: Fixed test case --- mysql-test/t/partition_innodb.test | 2 +- mysql-test/t/partition_mgm.test | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/mysql-test/t/partition_innodb.test b/mysql-test/t/partition_innodb.test index 6a95dd7c8b0..a31d0793565 100644 --- a/mysql-test/t/partition_innodb.test +++ b/mysql-test/t/partition_innodb.test @@ -1,5 +1,5 @@ -- source include/have_innodb.inc - +-- source include/have_partition.inc SET @max_row = 20; let $engine= 'InnoDB'; let $MAX_VALUE= (2147483646); diff --git a/mysql-test/t/partition_mgm.test b/mysql-test/t/partition_mgm.test index 67c0619f28c..afc3b85ea4d 100644 --- a/mysql-test/t/partition_mgm.test +++ b/mysql-test/t/partition_mgm.test @@ -1,3 +1,4 @@ +-- source include/have_partition.inc --disable_warnings DROP TABLE IF EXISTS t1; --enable_warnings -- cgit v1.2.1 From 7daf362e2436cc3a300c47d33fcb43e00774f3a8 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 17:05:41 +0200 Subject: forgot to event_timed.h STRING_WITH_LEN -> C_STRING_WITH_LEN sql/time.cc: use C_STRING_WITH_LEN --- sql/event_timed.h | 217 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ sql/time.cc | 42 +++++------ 2 files changed, 238 insertions(+), 21 deletions(-) create mode 100644 sql/event_timed.h diff --git a/sql/event_timed.h b/sql/event_timed.h new file mode 100644 index 00000000000..0652cece361 --- /dev/null +++ b/sql/event_timed.h @@ -0,0 +1,217 @@ +#ifndef _EVENT_TIMED_H_ +#define _EVENT_TIMED_H_ +/* Copyright (C) 2004-2006 MySQL AB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + + +#define EVEX_OK 0 +#define EVEX_KEY_NOT_FOUND -1 +#define EVEX_OPEN_TABLE_FAILED -2 +#define EVEX_WRITE_ROW_FAILED -3 +#define EVEX_DELETE_ROW_FAILED -4 +#define EVEX_GET_FIELD_FAILED -5 +#define EVEX_PARSE_ERROR -6 +#define EVEX_INTERNAL_ERROR -7 +#define EVEX_NO_DB_ERROR -8 +#define EVEX_COMPILE_ERROR -19 +#define EVEX_GENERAL_ERROR -20 +#define EVEX_BAD_IDENTIFIER -21 +#define EVEX_BODY_TOO_LONG -22 +#define EVEX_BAD_PARAMS -23 +#define EVEX_NOT_RUNNING -24 +#define EVEX_MICROSECOND_UNSUP -25 +#define EVEX_CANT_KILL -26 + +#define EVENT_EXEC_NO_MORE (1L << 0) +#define EVENT_NOT_USED (1L << 1) +#define EVENT_FREE_WHEN_FINISHED (1L << 2) + + +class sp_head; + +class Event_timed +{ + Event_timed(const Event_timed &); /* Prevent use of these */ + void operator=(Event_timed &); + my_bool in_spawned_thread; + ulong locked_by_thread_id; + my_bool running; + ulong thread_id; + pthread_mutex_t LOCK_running; + pthread_cond_t COND_finished; + + bool status_changed; + bool last_executed_changed; + +public: + enum enum_status + { + ENABLED = 1, + DISABLED + }; + + enum enum_on_completion + { + ON_COMPLETION_DROP = 1, + ON_COMPLETION_PRESERVE + }; + + TIME last_executed; + + LEX_STRING dbname; + LEX_STRING name; + LEX_STRING body; + + LEX_STRING definer_user; + LEX_STRING definer_host; + LEX_STRING definer;// combination of user and host + + LEX_STRING comment; + TIME starts; + TIME ends; + TIME execute_at; + my_bool starts_null; + my_bool ends_null; + my_bool execute_at_null; + + longlong expression; + interval_type interval; + + ulonglong created; + ulonglong modified; + enum enum_on_completion on_completion; + enum enum_status status; + sp_head *sphead; + ulong sql_mode; + const uchar *body_begin; + + bool dropped; + bool free_sphead_on_delete; + uint flags;//all kind of purposes + + static void *operator new(size_t size) + { + void *p; + DBUG_ENTER("Event_timed::new(size)"); + p= my_malloc(size, MYF(0)); + DBUG_PRINT("info", ("alloc_ptr=0x%lx", p)); + DBUG_RETURN(p); + } + + static void *operator new(size_t size, MEM_ROOT *mem_root) + { return (void*) alloc_root(mem_root, (uint) size); } + + static void operator delete(void *ptr, size_t size) + { + DBUG_ENTER("Event_timed::delete(ptr,size)"); + DBUG_PRINT("enter", ("free_ptr=0x%lx", ptr)); + TRASH(ptr, size); + my_free((gptr) ptr, MYF(0)); + DBUG_VOID_RETURN; + } + + static void operator delete(void *ptr, MEM_ROOT *mem_root) + { + /* + Don't free the memory it will be done by the mem_root but + we need to call the destructor because we free other resources + which are not allocated on the root but on the heap, or we + deinit mutexes. + */ + DBUG_ASSERT(0); + } + + Event_timed(); + + ~Event_timed(); + + void + init(); + + void + deinit_mutexes(); + + int + init_definer(THD *thd); + + int + init_execute_at(THD *thd, Item *expr); + + int + init_interval(THD *thd, Item *expr, interval_type new_interval); + + void + init_name(THD *thd, sp_name *spn); + + int + init_starts(THD *thd, Item *starts); + + int + init_ends(THD *thd, Item *ends); + + void + init_body(THD *thd); + + void + init_comment(THD *thd, LEX_STRING *set_comment); + + int + load_from_row(MEM_ROOT *mem_root, TABLE *table); + + bool + compute_next_execution_time(); + + int + drop(THD *thd); + + void + mark_last_executed(THD *thd); + + bool + update_fields(THD *thd); + + int + get_create_event(THD *thd, String *buf); + + int + execute(THD *thd, MEM_ROOT *mem_root); + + int + compile(THD *thd, MEM_ROOT *mem_root); + + bool + is_running(); + + int + spawn_now(void * (*thread_func)(void*), void *arg); + + bool + spawn_thread_finish(THD *thd); + + void + free_sp(); + + bool + has_equal_db(Event_timed *etn); + + int + kill_thread(THD *thd); + + void + set_thread_id(ulong tid) { thread_id= tid; } +}; + +#endif /* _EVENT_H_ */ diff --git a/sql/time.cc b/sql/time.cc index 5b12aacf84a..b3164818f75 100644 --- a/sql/time.cc +++ b/sql/time.cc @@ -26,26 +26,26 @@ #ifndef TESTTIME LEX_STRING interval_type_to_name[INTERVAL_LAST] = { - {(char *) STRING_WITH_LEN("YEAR")}, - {(char *) STRING_WITH_LEN("QUARTER")}, - {(char *) STRING_WITH_LEN("MONTH")}, - {(char *) STRING_WITH_LEN("DAY")}, - {(char *) STRING_WITH_LEN("HOUR")}, - {(char *) STRING_WITH_LEN("MINUTE")}, - {(char *) STRING_WITH_LEN("WEEK")}, - {(char *) STRING_WITH_LEN("SECOND")}, - {(char *) STRING_WITH_LEN("MICROSECOND")}, - {(char *) STRING_WITH_LEN("YEAR_MONTH")}, - {(char *) STRING_WITH_LEN("DAY_HOUR")}, - {(char *) STRING_WITH_LEN("DAY_MINUTE")}, - {(char *) STRING_WITH_LEN("DAY_SECOND")}, - {(char *) STRING_WITH_LEN("HOUR_MINUTE")}, - {(char *) STRING_WITH_LEN("HOUR_SECOND")}, - {(char *) STRING_WITH_LEN("MINUTE_SECOND")}, - {(char *) STRING_WITH_LEN("DAY_MICROSECOND")}, - {(char *) STRING_WITH_LEN("HOUR_MICROSECOND")}, - {(char *) STRING_WITH_LEN("MINUTE_MICROSECOND")}, - {(char *) STRING_WITH_LEN("SECOND_MICROSECOND")} + { C_STRING_WITH_LEN("YEAR")}, + { C_STRING_WITH_LEN("QUARTER")}, + { C_STRING_WITH_LEN("MONTH")}, + { C_STRING_WITH_LEN("DAY")}, + { C_STRING_WITH_LEN("HOUR")}, + { C_STRING_WITH_LEN("MINUTE")}, + { C_STRING_WITH_LEN("WEEK")}, + { C_STRING_WITH_LEN("SECOND")}, + { C_STRING_WITH_LEN("MICROSECOND")}, + { C_STRING_WITH_LEN("YEAR_MONTH")}, + { C_STRING_WITH_LEN("DAY_HOUR")}, + { C_STRING_WITH_LEN("DAY_MINUTE")}, + { C_STRING_WITH_LEN("DAY_SECOND")}, + { C_STRING_WITH_LEN("HOUR_MINUTE")}, + { C_STRING_WITH_LEN("HOUR_SECOND")}, + { C_STRING_WITH_LEN("MINUTE_SECOND")}, + { C_STRING_WITH_LEN("DAY_MICROSECOND")}, + { C_STRING_WITH_LEN("HOUR_MICROSECOND")}, + { C_STRING_WITH_LEN("MINUTE_MICROSECOND")}, + { C_STRING_WITH_LEN("SECOND_MICROSECOND")} }; /* Calc weekday from daynr */ @@ -939,7 +939,7 @@ calc_time_diff(TIME *l_time1, TIME *l_time2, int l_sign, longlong *seconds_out, SYNOPSIS my_time_compare() - a - first TIME + a - first time b - second time RETURN VALUE -- cgit v1.2.1 From 6c2a6b47b06bd1d8d763b6037f96093e09bf5855 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 20:11:08 +0400 Subject: rpl_ndb_log.result: Fixed failing test case mysql-test/r/rpl_ndb_log.result: Fixed failing test case --- mysql-test/r/rpl_ndb_log.result | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/mysql-test/r/rpl_ndb_log.result b/mysql-test/r/rpl_ndb_log.result index c435fb37531..74ecd8e7879 100644 --- a/mysql-test/r/rpl_ndb_log.result +++ b/mysql-test/r/rpl_ndb_log.result @@ -132,3 +132,19 @@ ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find tar DROP TABLE t1; DROP TABLE t2; DROP TABLE t3; +create table t1(a int auto_increment primary key, b int); +insert into t1 values (NULL, 1); +reset master; +set insert_id=5; +insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); +show binlog events; +Log_name Pos Event_type Server_id End_log_pos Info +slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 +slave-bin.000001 # Table_map 2 # table_id: 29 (test.t1) +slave-bin.000001 # Write_rows 2 # table_id: 29 flags: STMT_END_F +select * from t1; +a b +1 1 +5 1 +6 1 +drop table t1; -- cgit v1.2.1 From c2620e1fabd699eae0b8b70e8a03ab9bdafe20b9 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 19:13:46 +0200 Subject: Bug #17297 Fix error messages --- ndb/src/common/transporter/TransporterRegistry.cpp | 2 +- ndb/src/kernel/blocks/dbdih/DbdihMain.cpp | 2 +- ndb/src/kernel/blocks/dblqh/DblqhMain.cpp | 3 ++- ndb/src/kernel/error/ndbd_exit_codes.c | 7 ++++--- ndb/src/ndbapi/ndberror.c | 1 + 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/ndb/src/common/transporter/TransporterRegistry.cpp b/ndb/src/common/transporter/TransporterRegistry.cpp index f0e50729f8d..cd78bc52027 100644 --- a/ndb/src/common/transporter/TransporterRegistry.cpp +++ b/ndb/src/common/transporter/TransporterRegistry.cpp @@ -1322,7 +1322,7 @@ TransporterRegistry::start_clients_thread() else { ndbout_c("Management server closed connection early. " - "It is probably being shut down (or has crashed). " + "It is probably being shut down (or has problems). " "We will retry the connection."); } } diff --git a/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp b/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp index c8254052a56..b2390a37985 100644 --- a/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp +++ b/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp @@ -8330,7 +8330,7 @@ Dbdih::resetReplicaSr(TabRecordPtr tabPtr){ *--------_----------------------------------------------------- */ const Uint32 nextCrashed = noCrashedReplicas + 1; replicaPtr.p->noCrashedReplicas = nextCrashed; - arrGuard(nextCrashed, 8); + arrGuardErr(nextCrashed, 8, NDBD_EXIT_MAX_CRASHED_REPLICAS); replicaPtr.p->createGci[nextCrashed] = newestRestorableGCI + 1; ndbrequire(newestRestorableGCI + 1 != 0xF1F1F1F1); replicaPtr.p->replicaLastGci[nextCrashed] = (Uint32)-1; diff --git a/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp b/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp index 19a003f00fc..56e93e6ee01 100644 --- a/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp +++ b/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp @@ -17989,7 +17989,8 @@ void Dblqh::stepAhead(Signal* signal, Uint32 stepAheadWords) logFilePtr.p->currentLogpage = logPagePtr.p->logPageWord[ZNEXT_PAGE]; logPagePtr.i = logPagePtr.p->logPageWord[ZNEXT_PAGE]; logFilePtr.p->currentFilepage++; - ptrCheckGuard(logPagePtr, clogPageFileSize, logPageRecord); + ptrCheckGuardErr(logPagePtr, clogPageFileSize, logPageRecord, + NDBD_EXIT_SR_REDOLOG); logPagePtr.p->logPageWord[ZCURR_PAGE_INDEX] = ZPAGE_HEADER_SIZE; logPartPtr.p->execSrPagesRead--; logPartPtr.p->execSrPagesExecuted++; diff --git a/ndb/src/kernel/error/ndbd_exit_codes.c b/ndb/src/kernel/error/ndbd_exit_codes.c index 6a14d8b7ffd..257af4c5b1b 100644 --- a/ndb/src/kernel/error/ndbd_exit_codes.c +++ b/ndb/src/kernel/error/ndbd_exit_codes.c @@ -51,8 +51,9 @@ static const ErrStruct errArray[] = {NDBD_EXIT_SYSTEM_ERROR, XIE, "System error, node killed during node restart by other node"}, {NDBD_EXIT_INDEX_NOTINRANGE, XIE, "Array index out of range"}, - {NDBD_EXIT_ARBIT_SHUTDOWN, XAE, "Arbitrator shutdown, " - "please investigate error(s) on other node(s)"}, + {NDBD_EXIT_ARBIT_SHUTDOWN, XAE, "Node lost connection to other nodes and " + "can not form a unpartitioned cluster, please investigate if there are " + "error(s) on other node(s)"}, {NDBD_EXIT_POINTER_NOTINRANGE, XIE, "Pointer too large"}, {NDBD_EXIT_SR_OTHERNODEFAILED, XRE, "Another node failed during system " "restart, please investigate error(s) on other node(s)"}, @@ -94,7 +95,7 @@ static const ErrStruct errArray[] = {NDBD_EXIT_WATCHDOG_TERMINATE, XIE, "WatchDog terminate, internal error " "or massive overload on the machine running this node"}, {NDBD_EXIT_SIGNAL_LOST_SEND_BUFFER_FULL, XCR, - "Signal lost, out of send buffer memory, please increase SendBufferMemory"}, + "Signal lost, out of send buffer memory, please increase SendBufferMemory or lower the load"}, {NDBD_EXIT_SIGNAL_LOST, XIE, "Signal lost (unknown reason)"}, {NDBD_EXIT_ILLEGAL_SIGNAL, XIE, "Illegal signal (version mismatch a possibility)"}, diff --git a/ndb/src/ndbapi/ndberror.c b/ndb/src/ndbapi/ndberror.c index 5ca8ad7be60..3653db95e08 100644 --- a/ndb/src/ndbapi/ndberror.c +++ b/ndb/src/ndbapi/ndberror.c @@ -266,6 +266,7 @@ ErrorBundle ErrorCodes[] = { /** * Application error */ + { 763, AE, "Alter table requires cluster nodes to have exact same version" }, { 823, AE, "Too much attrinfo from application in tuple manager" }, { 831, AE, "Too many nullable/bitfields in table definition" }, { 876, AE, "876" }, -- cgit v1.2.1 From fa2673f119a4f834cb4d783771110dff60dd26a7 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 19:17:07 +0200 Subject: Bug #17297 Fix error messages --- storage/ndb/include/mgmapi/ndbd_exit_codes.h | 4 ++++ storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp | 5 +++-- storage/ndb/src/kernel/error/ndbd_exit_codes.c | 1 + storage/ndb/src/ndbapi/ndberror.c | 1 + 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/storage/ndb/include/mgmapi/ndbd_exit_codes.h b/storage/ndb/include/mgmapi/ndbd_exit_codes.h index 686641ebef5..b16f1a63a8d 100644 --- a/storage/ndb/include/mgmapi/ndbd_exit_codes.h +++ b/storage/ndb/include/mgmapi/ndbd_exit_codes.h @@ -77,6 +77,7 @@ typedef ndbd_exit_classification_enum ndbd_exit_classification; #define NDBD_EXIT_SR_RESTARTCONFLICT 2311 #define NDBD_EXIT_NO_MORE_UNDOLOG 2312 #define NDBD_EXIT_SR_UNDOLOG 2313 +#define NDBD_EXIT_SR_SCHEMAFILE 2310 #define NDBD_EXIT_MEMALLOC 2327 #define NDBD_EXIT_BLOCK_JBUFCONGESTION 2334 #define NDBD_EXIT_TIME_QUEUE_SHORT 2335 @@ -91,6 +92,9 @@ typedef ndbd_exit_classification_enum ndbd_exit_classification; #define NDBD_EXIT_INVALID_CONFIG 2350 #define NDBD_EXIT_OUT_OF_LONG_SIGNAL_MEMORY 2351 +/* Errorcodes for fatal resource errors */ +#define NDBD_EXIT_RESOURCE_ALLOC_ERROR 2500 + #define NDBD_EXIT_OS_SIGNAL_RECEIVED 6000 /* VM 6050-> */ diff --git a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp index ef08c06822f..e9d2fce5e18 100644 --- a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp +++ b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp @@ -1355,10 +1355,11 @@ void Dbdict::readSchemaConf(Signal* signal, sf->FileSize == sf0->FileSize && sf->PageNumber == n && computeChecksum((Uint32*)sf, NDB_SF_PAGE_SIZE_IN_WORDS) == 0; - ndbrequire(ok || !crashInd); + ndbrequireErr(ok || !crashInd, NDBD_EXIT_SR_SCHEMAFILE); if (! ok) { jam(); - ndbrequire(fsPtr.p->fsState == FsConnectRecord::READ_SCHEMA1); + ndbrequireErr(fsPtr.p->fsState == FsConnectRecord::READ_SCHEMA1, + NDBD_EXIT_SR_SCHEMAFILE); readSchemaRef(signal, fsPtr); return; } diff --git a/storage/ndb/src/kernel/error/ndbd_exit_codes.c b/storage/ndb/src/kernel/error/ndbd_exit_codes.c index 005bf830a69..cc60edf9509 100644 --- a/storage/ndb/src/kernel/error/ndbd_exit_codes.c +++ b/storage/ndb/src/kernel/error/ndbd_exit_codes.c @@ -59,6 +59,7 @@ static const ErrStruct errArray[] = {NDBD_EXIT_NODE_NOT_DEAD, XRE, "Internal node state conflict, " "most probably resolved by restarting node again"}, {NDBD_EXIT_SR_REDOLOG, XFI, "Error while reading the REDO log"}, + {NDBD_EXIT_SR_SCHEMAFILE, XFI, "Error while reading the schema file"}, /* Currently unused? */ {2311, XIE, "Conflict when selecting restart type"}, {NDBD_EXIT_NO_MORE_UNDOLOG, XCR, diff --git a/storage/ndb/src/ndbapi/ndberror.c b/storage/ndb/src/ndbapi/ndberror.c index 22252960e21..d3b18898b21 100644 --- a/storage/ndb/src/ndbapi/ndberror.c +++ b/storage/ndb/src/ndbapi/ndberror.c @@ -344,6 +344,7 @@ ErrorBundle ErrorCodes[] = { /** * SchemaError */ + { 311, DMEC, IE, "Undefined fragment" }, { 703, DMEC, SE, "Invalid table format" }, { 704, DMEC, SE, "Attribute name too long" }, { 705, DMEC, SE, "Table name too long" }, -- cgit v1.2.1 From 3d0497297422d7305e24874d084b9d9fd4677154 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 13:24:30 -0400 Subject: BUG#16000: .par file not removed plus errors to error log for normal errors sql/table.cc: Remove error printouts when error occurs during open frm as part of CREATE/ALTER TABLE sql/unireg.cc: Ensure .par file is removed after error --- sql/table.cc | 11 +++++++++++ sql/unireg.cc | 1 + 2 files changed, 12 insertions(+) diff --git a/sql/table.cc b/sql/table.cc index ab1bd49ba48..a96ca0da881 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -1484,7 +1484,18 @@ int open_table_from_share(THD *thd, TABLE_SHARE *share, const char *alias, tmp= fix_partition_func(thd, outparam, is_create_table); *root_ptr= old_root; if (tmp) + { + if (is_create_table) + { + /* + During CREATE/ALTER TABLE it is ok to receive errors here. + It is not ok if it happens during the opening of an frm + file as part of a normal query. + */ + error_reported= TRUE; + } goto err; + } } #endif diff --git a/sql/unireg.cc b/sql/unireg.cc index 11aa73bb502..42518e7b9b7 100644 --- a/sql/unireg.cc +++ b/sql/unireg.cc @@ -339,6 +339,7 @@ int rea_create_table(THD *thd, const char *path, DBUG_RETURN(0); err_handler: + VOID(file->create_handler_files(path, NULL, CHF_DELETE_FLAG, create_info)); my_delete(frm_name, MYF(0)); DBUG_RETURN(1); } /* rea_create_table */ -- cgit v1.2.1 From b250722087ea2e99916c2b5bdfadbd51965f37cc Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 13:43:13 -0400 Subject: Applying patch from SergeyV Fixes bug#17264, for alter table on win32 for successfull operation completion it is used TL_WRITE(=10) lock instead of TL_WRITE_ALLOW_READ(=6), however here in innodb handler TL_WRTIE is lifted to TL_WRITE_ALLOW_WRITE, which causes race condition when several clients do alter table simultaneously. mysql-test/r/lock_multi.result: Test case for bug#17264. mysql-test/t/lock_multi.test: Test case for bug#17264 --- mysql-test/r/lock_multi.result | 6 ++++++ mysql-test/t/lock_multi.test | 26 ++++++++++++++++++++++++++ sql/ha_innodb.cc | 11 +++++++++++ 3 files changed, 43 insertions(+) diff --git a/mysql-test/r/lock_multi.result b/mysql-test/r/lock_multi.result index 2cb122fb988..2188d58e526 100644 --- a/mysql-test/r/lock_multi.result +++ b/mysql-test/r/lock_multi.result @@ -67,3 +67,9 @@ Select_priv N use test; use test; +create table t1 (f1 int(12) unsigned not null auto_increment, primary key(f1)) engine=innodb; +lock tables t1 write; + alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; // + alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; // +unlock tables; +drop table t1; diff --git a/mysql-test/t/lock_multi.test b/mysql-test/t/lock_multi.test index ee03088b8c3..905d0699e6a 100644 --- a/mysql-test/t/lock_multi.test +++ b/mysql-test/t/lock_multi.test @@ -171,4 +171,30 @@ use test; # connection default; +# +# Bug #17264: MySQL Server freeze +# +connection locker; +create table t1 (f1 int(12) unsigned not null auto_increment, primary key(f1)) engine=innodb; +lock tables t1 write; +connection writer; +--sleep 2 +delimiter //; +send alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; // +delimiter ;// +connection reader; +--sleep 2 +delimiter //; +send alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; // +delimiter ;// +connection locker; +--sleep 2 +unlock tables; +connection writer; +reap; +connection reader; +reap; +connection locker; +drop table t1; + # End of 5.0 tests diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc index 28cdfd23b6a..6aadce0191a 100644 --- a/sql/ha_innodb.cc +++ b/sql/ha_innodb.cc @@ -6684,6 +6684,17 @@ ha_innobase::store_lock( && !thd->tablespace_op && thd->lex->sql_command != SQLCOM_TRUNCATE && thd->lex->sql_command != SQLCOM_OPTIMIZE +#ifdef __WIN__ + /* + for alter table on win32 for succesfull operation + completion it is used TL_WRITE(=10) lock instead of + TL_WRITE_ALLOW_READ(=6), however here in innodb handler + TL_WRITE is lifted to TL_WRITE_ALLOW_WRITE, which causes + race condition when several clients do alter table + simultaneously (bug #17264). This fix avoids the problem. + */ + && thd->lex->sql_command != SQLCOM_ALTER_TABLE +#endif && thd->lex->sql_command != SQLCOM_CREATE_TABLE) { lock_type = TL_WRITE_ALLOW_WRITE; -- cgit v1.2.1 From dad508ea1a23aff53a9c9edde80c2caa1b9cf460 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 20:46:45 +0200 Subject: Bug#19437 (Connection refused by server: "2002 Can't connect... /master.sock"): Clearing active VIO before calling mysql_close() in the slave I/O thread. sql/slave.cc: Clearing active VIO before calling mysql_close() in the slave I/O thread. --- sql/slave.cc | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/sql/slave.cc b/sql/slave.cc index caeefc1ad3c..2b31d722f26 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -1653,6 +1653,15 @@ int fetch_master_table(THD *thd, const char *db_name, const char *table_name, if (connect_to_master(thd, mysql, mi)) { my_error(ER_CONNECT_TO_MASTER, MYF(0), mysql_error(mysql)); + /* + We need to clear the active VIO since, theoretically, somebody + might issue an awake() on this thread. If we are then in the + middle of closing and destroying the VIO inside the + mysql_close(), we will have a problem. + */ +#ifdef SIGNAL_WITH_VIO_CLOSE + thd->clear_active_vio(); +#endif mysql_close(mysql); DBUG_RETURN(1); } @@ -3709,6 +3718,17 @@ err: VOID(pthread_mutex_unlock(&LOCK_thread_count)); if (mysql) { + /* + Here we need to clear the active VIO before closing the + connection with the master. The reason is that THD::awake() + might be called from terminate_slave_thread() because somebody + issued a STOP SLAVE. If that happends, the close_active_vio() + can be called in the middle of closing the VIO associated with + the 'mysql' object, causing a crash. + */ +#ifdef SIGNAL_WITH_VIO_CLOSE + thd->clear_active_vio(); +#endif mysql_close(mysql); mi->mysql=0; } -- cgit v1.2.1 From 3e7d68b11cd65dac087e2a634a8f007a295c6528 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 23:05:55 +0400 Subject: select.result: Added test case for bug#18759 Incorrect string to numeric conversion. select.test: Added test case for bug#18759 Incorrect string to numeric conversion. item_cmpfunc.cc: Cleanup after fix for bug#18360 removal sql/item_cmpfunc.cc: Cleanup after fix for bug#18360 removal mysql-test/t/select.test: Added test case for bug#18759 Incorrect string to numeric conversion. mysql-test/r/select.result: Added test case for bug#18759 Incorrect string to numeric conversion. --- mysql-test/r/select.result | 6 ++++++ mysql-test/t/select.test | 19 +++++++++++++++++++ sql/item_cmpfunc.cc | 3 ++- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result index 7808e787e39..c7df11ab018 100644 --- a/mysql-test/r/select.result +++ b/mysql-test/r/select.result @@ -2738,3 +2738,9 @@ ERROR HY000: Key 'a' doesn't exist in table 't1' EXPLAIN SELECT * FROM t1 FORCE INDEX (a); ERROR HY000: Key 'a' doesn't exist in table 't1' DROP TABLE t1; +CREATE TABLE t1 (i BIGINT UNSIGNED NOT NULL); +INSERT INTO t1 VALUES (10); +SELECT i='1e+01',i=1e+01, i in (1e+01), i in ('1e+01') FROM t1; +i='1e+01' i=1e+01 i in (1e+01) i in ('1e+01') +0 1 1 1 +DROP TABLE t1; diff --git a/mysql-test/t/select.test b/mysql-test/t/select.test index f7b5a2fbcb6..4cdfc220350 100644 --- a/mysql-test/t/select.test +++ b/mysql-test/t/select.test @@ -2278,4 +2278,23 @@ EXPLAIN SELECT * FROM t1 FORCE INDEX (a); DROP TABLE t1; +# +# Bug #18759 "Incorrect string to numeric conversion" +# +# This test is here so that the behavior will not be changed to 4.1 +# and not to 5.0 either. In 4.1 and 5.0 sending an integer as a string +# will be converted internally to real (double) value and it is not +# as accurate as bigint (longlong) for integers. Thus the results may +# vary. In 5.1 internally it is decimal, which is a string type and +# will be more accurate. Due to rather big changes needed to fix this +# in 4.1 or 5.0 it is not desired to do it in the stable versions. +# +# This test is here only to make sure that behavior is not changed in +# 4.1 and 5.0 +# +CREATE TABLE t1 (i BIGINT UNSIGNED NOT NULL); +INSERT INTO t1 VALUES (10); +SELECT i='1e+01',i=1e+01, i in (1e+01), i in ('1e+01') FROM t1; +DROP TABLE t1; + # End of 4.1 tests diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 5055b5f4197..f14efc7187b 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -136,7 +136,8 @@ static void agg_cmp_type(THD *thd, Item_result *type, Item **items, uint nitems) } continue; } - if ((res= items[i]->real_item()->type()) == Item::FIELD_ITEM) + if ((res= items[i]->real_item()->type()) == Item::FIELD_ITEM && + items[i]->result_type() != INT_RESULT) { field= ((Item_field *)items[i]->real_item())->field; break; -- cgit v1.2.1 From ed7dd45ffcf412545497a33a534858014fe73e19 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 16:38:42 -0400 Subject: BUG#16000: .par file left behind plus unnecessary messages to error.log New test cases mysql-test/r/partition_error.result: New test cases mysql-test/r/partition_mgm.result: New test cases mysql-test/t/partition_error.test: New test cases mysql-test/t/partition_mgm.test: New test cases --- mysql-test/r/partition_error.result | 39 +++++++++++++++++++++++++++++++++++++ mysql-test/r/partition_mgm.result | 10 ++++++++++ mysql-test/t/partition_error.test | 14 +++++++++++++ mysql-test/t/partition_mgm.test | 6 ++++-- 4 files changed, 67 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/partition_error.result b/mysql-test/r/partition_error.result index 39f0cf9ca55..f6134c08221 100644 --- a/mysql-test/r/partition_error.result +++ b/mysql-test/r/partition_error.result @@ -89,6 +89,9 @@ partitions 3 partition x2 tablespace ts2, partition x3 tablespace ts3); ERROR HY000: Field in list of fields for partition function not found in table +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); +load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') +NULL CREATE TABLE t1 ( a int not null, b int not null, @@ -163,6 +166,9 @@ partitions 2 (partition x1 values less than (4), partition x2 values less than (5)); ERROR HY000: Only RANGE PARTITIONING can use VALUES LESS THAN in partition definition +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); +load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') +NULL CREATE TABLE t1 ( a int not null, b int not null, @@ -173,6 +179,9 @@ partitions 2 (partition x1 values in (4), partition x2 values in (5)); ERROR HY000: Only LIST PARTITIONING can use VALUES IN in partition definition +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); +load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') +NULL CREATE TABLE t1 ( a int not null, b int not null, @@ -183,6 +192,9 @@ partitions 2 (partition x1 values in (4,6), partition x2 values in (5,7)); ERROR HY000: Only LIST PARTITIONING can use VALUES IN in partition definition +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); +load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') +NULL CREATE TABLE t1 ( a int not null, b int not null, @@ -191,6 +203,9 @@ primary key (a,b)) partition by key (a) subpartition by key (b); ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); +load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') +NULL CREATE TABLE t1 ( a int not null, b int not null, @@ -199,6 +214,9 @@ primary key (a,b)) partition by key (a) subpartition by key (a, b); ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); +load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') +NULL CREATE TABLE t1 ( a int not null, b int not null, @@ -207,6 +225,9 @@ primary key (a,b)) partition by key (a) subpartition by hash (a+b); ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); +load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') +NULL CREATE TABLE t1 ( a int not null, b int not null, @@ -215,6 +236,9 @@ primary key (a,b)) partition by key (a) subpartition by key (b); ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); +load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') +NULL CREATE TABLE t1 ( a int not null, b int not null, @@ -223,6 +247,9 @@ primary key (a,b)) partition by key (a) subpartition by key (a, b); ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); +load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') +NULL CREATE TABLE t1 ( a int not null, b int not null, @@ -231,6 +258,9 @@ primary key (a,b)) partition by key (a) subpartition by hash (a+b); ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); +load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') +NULL CREATE TABLE t1 ( a int not null, b int not null, @@ -249,6 +279,9 @@ subpartition by hash (sin(a+b)) (partition x1 (subpartition x11, subpartition x12), partition x2 (subpartition x21, subpartition x22)); ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); +load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') +NULL CREATE TABLE t1 ( a int not null, b int not null, @@ -271,6 +304,9 @@ subpartition by key (a,d) (partition x1 values less than (1) (subpartition x11, subpartition x12), partition x2 values less than (2) (subpartition x21, subpartition x22)); ERROR HY000: Field in list of fields for partition function not found in table +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); +load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') +NULL CREATE TABLE t1 ( a int not null, b int not null, @@ -296,6 +332,9 @@ c int not null, primary key(a,b)) partition by range (a); ERROR HY000: For RANGE partitions each partition must be defined +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); +load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') +NULL CREATE TABLE t1 ( a int not null, b int not null, diff --git a/mysql-test/r/partition_mgm.result b/mysql-test/r/partition_mgm.result index 48bbdf57b93..5b815f52cbe 100644 --- a/mysql-test/r/partition_mgm.result +++ b/mysql-test/r/partition_mgm.result @@ -7,6 +7,12 @@ t1 CREATE TABLE `t1` ( `f_date` date DEFAULT NULL, `f_varchar` varchar(30) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 2 +hello/master-data/test/t1#P#p0.MYD +hello/master-data/test/t1#P#p0.MYI +hello/master-data/test/t1#P#p1.MYD +hello/master-data/test/t1#P#p1.MYI +hello/master-data/test/t1.frm +hello/master-data/test/t1.par ALTER TABLE t1 COALESCE PARTITION 1; SHOW CREATE TABLE t1; Table Create Table @@ -14,3 +20,7 @@ t1 CREATE TABLE `t1` ( `f_date` date DEFAULT NULL, `f_varchar` varchar(30) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 1 +hello/master-data/test/t1#P#p0.MYD +hello/master-data/test/t1#P#p0.MYI +hello/master-data/test/t1.frm +hello/master-data/test/t1.par diff --git a/mysql-test/t/partition_error.test b/mysql-test/t/partition_error.test index 076c5c5773b..d0e3f355292 100644 --- a/mysql-test/t/partition_error.test +++ b/mysql-test/t/partition_error.test @@ -107,6 +107,8 @@ partitions 3 (partition x1 tablespace ts1, partition x2 tablespace ts2, partition x3 tablespace ts3); + +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); # # Partition by hash, invalid field in function # @@ -202,6 +204,7 @@ partition by hash (a) partitions 2 (partition x1 values less than (4), partition x2 values less than (5)); +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); # # Partition by hash, values in error @@ -216,6 +219,7 @@ partition by hash (a) partitions 2 (partition x1 values in (4), partition x2 values in (5)); +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); # # Partition by hash, values in error @@ -230,6 +234,7 @@ partition by hash (a) partitions 2 (partition x1 values in (4,6), partition x2 values in (5,7)); +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); # # Subpartition by key, no partitions defined, single field @@ -242,6 +247,7 @@ c int not null, primary key (a,b)) partition by key (a) subpartition by key (b); +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); # # Subpartition by key, no partitions defined, list of fields @@ -254,6 +260,7 @@ c int not null, primary key (a,b)) partition by key (a) subpartition by key (a, b); +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); # # Subpartition by hash, no partitions defined @@ -266,6 +273,7 @@ c int not null, primary key (a,b)) partition by key (a) subpartition by hash (a+b); +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); # # Subpartition by key, no partitions defined, single field @@ -278,6 +286,7 @@ c int not null, primary key (a,b)) partition by key (a) subpartition by key (b); +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); # # Subpartition by key, no partitions defined, list of fields @@ -290,6 +299,7 @@ c int not null, primary key (a,b)) partition by key (a) subpartition by key (a, b); +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); # # Subpartition by hash, no partitions defined @@ -302,6 +312,7 @@ c int not null, primary key (a,b)) partition by key (a) subpartition by hash (a+b); +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); # # Subpartition by hash, no partitions defined, wrong subpartition function @@ -328,6 +339,7 @@ partition by key (a) subpartition by hash (sin(a+b)) (partition x1 (subpartition x11, subpartition x12), partition x2 (subpartition x21, subpartition x22)); +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); # # Subpartition by hash, no partitions defined, wrong subpartition function @@ -356,6 +368,7 @@ partition by range (a) subpartition by key (a,d) (partition x1 values less than (1) (subpartition x11, subpartition x12), partition x2 values less than (2) (subpartition x21, subpartition x22)); +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); # # Subpartition by hash, no partitions defined, wrong subpartition function @@ -393,6 +406,7 @@ b int not null, c int not null, primary key(a,b)) partition by range (a); +select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); # # Partition by range, invalid field in function diff --git a/mysql-test/t/partition_mgm.test b/mysql-test/t/partition_mgm.test index 67c0619f28c..dd9290a97a0 100644 --- a/mysql-test/t/partition_mgm.test +++ b/mysql-test/t/partition_mgm.test @@ -5,10 +5,12 @@ CREATE TABLE t1 (f_date DATE, f_varchar VARCHAR(30)) PARTITION BY HASH(CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 2; SHOW CREATE TABLE t1; -#--exec ls $MYSQLTEST_VARDIR/master-data/test/t1* +--replace_result $MYSQLTEST_VARDIR "hello" +--exec ls $MYSQLTEST_VARDIR/master-data/test/t1* ALTER TABLE t1 COALESCE PARTITION 1; SHOW CREATE TABLE t1; -#--exec ls $MYSQLTEST_VARDIR/master-data/test/t1* +--replace_result $MYSQLTEST_VARDIR "hello" +--exec ls $MYSQLTEST_VARDIR/master-data/test/t1* -- cgit v1.2.1 From 99740b3fb07780d1e6e04af4c56144ed3f363ebc Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 22:40:46 +0200 Subject: Fix for bug#18516 (also #19353, reported for 5.1): In addition to include "mysql_upgrade" in a RPM, it should also be called when the RPM is upgraded. support-files/mysql.server.sh: Support getting additional arguments, which need to be passed on to the server. This works only if the server is started through "mysqld_safe", as the IM will not pass such arguments. So if the IM would be used, additional arguments cause the start to fail (voluntarily). This feature is needed so that tools like RPM can start the server in an "isolated" way, see the patch to the RPM spec file (also in this changeset) to call "mysql_upgrade". support-files/mysql.spec.sh: Call "mysql_upgrade" during an RPM upgrade. "mysql_upgrade" needs a server to run, as it issues SQL commands. (This had been neglected previously.) It also needs to connect as "root", but in an RPM upgrade the password is unknown. To allow this, the server is started "--skip-grant-tables". Normally, this would open big security holes, so it is also started "--skip-networking", and access to the socket is limited to "mysql" + "root" by temporarily setting mode 700. --- support-files/mysql.server.sh | 18 ++++++++++++++---- support-files/mysql.spec.sh | 16 +++++++++++++++- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/support-files/mysql.server.sh b/support-files/mysql.server.sh index 27a1b85a354..d5041f30c0a 100644 --- a/support-files/mysql.server.sh +++ b/support-files/mysql.server.sh @@ -98,6 +98,11 @@ PATH=/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin export PATH mode=$1 # start or stop +shift +other_args="$*" # uncommon, but needed when called from an RPM upgrade action + # Expected: "--skip-networking --skip-grant-tables" + # They are not checked here, intentionally, as it is the resposibility + # of the "spec" file author to give correct arguments only. case `echo "testing\c"`,`echo -n testing` in *c*,-n*) echo_n= echo_c= ;; @@ -264,6 +269,11 @@ case "$mode" in echo $echo_n "Starting MySQL" if test -x $manager -a "$use_mysqld_safe" = "0" then + if test -n "$other_args" + then + log_failure_msg "MySQL manager does not support options '$other_args'" + exit 1 + fi # Give extra arguments to mysqld with the my.cnf file. This script may # be overwritten at next upgrade. $manager --user=$user --pid-file=$pid_file >/dev/null 2>&1 & @@ -279,7 +289,7 @@ case "$mode" in # Give extra arguments to mysqld with the my.cnf file. This script # may be overwritten at next upgrade. pid_file=$server_pid_file - $bindir/mysqld_safe --datadir=$datadir --pid-file=$server_pid_file >/dev/null 2>&1 & + $bindir/mysqld_safe --datadir=$datadir --pid-file=$server_pid_file $other_args >/dev/null 2>&1 & wait_for_pid created # Make lock for RedHat / SuSE @@ -327,8 +337,8 @@ case "$mode" in 'restart') # Stop the service and regardless of whether it was # running or not, start it again. - $0 stop - $0 start + $0 stop $other_args + $0 start $other_args ;; 'reload') @@ -343,7 +353,7 @@ case "$mode" in *) # usage - echo "Usage: $0 start|stop|restart|reload" + echo "Usage: $0 {start|stop|restart|reload} [ MySQL server options ]" exit 1 ;; esac diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 202910f44e4..abd29b6014a 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -485,7 +485,16 @@ chown -R %{mysqld_user}:%{mysqld_group} $mysql_datadir %{_bindir}/mysql_install_db --rpm --user=%{mysqld_user} # Upgrade databases if needed -%{_bindir}/mysql_upgrade --user=%{mysqld_user} +# This must be done as database user "root", who should be password-protected, +# but this password is not available here. +# So ensure the server is isolated as much as possible, and start it so that +# passwords are not checked. +# See the related change in the start script "/etc/init.d/mysql". +chmod 700 $mysql_datadir +%{_sysconfdir}/init.d/mysql start --skip-networking --skip-grant-tables +%{_bindir}/mysql_upgrade +%{_sysconfdir}/init.d/mysql stop --skip-networking --skip-grant-tables +chmod 755 $mysql_datadir # Change permissions again to fix any new files. chown -R %{mysqld_user}:%{mysqld_group} $mysql_datadir @@ -723,6 +732,11 @@ fi # itself - note that they must be ordered by date (important when # merging BK trees) %changelog +* Tue Jun 20 2006 Joerg Bruehe + +- To run "mysql_upgrade", we need a running server; + start it in isolation and skip password checks. + * Sat May 20 2006 Kent Boortz - Always compile for PIC, position independent code. -- cgit v1.2.1 From 73d86f3206e69d14ca635e211d54daaa19e8d142 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 00:45:01 +0400 Subject: rpl_ndb_log.result: Corrected test case result mysql-test/r/rpl_ndb_log.result: Corrected test case result --- mysql-test/r/rpl_ndb_log.result | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/rpl_ndb_log.result b/mysql-test/r/rpl_ndb_log.result index 74ecd8e7879..b88af325397 100644 --- a/mysql-test/r/rpl_ndb_log.result +++ b/mysql-test/r/rpl_ndb_log.result @@ -140,8 +140,8 @@ insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); show binlog events; Log_name Pos Event_type Server_id End_log_pos Info slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 -slave-bin.000001 # Table_map 2 # table_id: 29 (test.t1) -slave-bin.000001 # Write_rows 2 # table_id: 29 flags: STMT_END_F +slave-bin.000001 # Table_map 2 # table_id: 30 (test.t1) +slave-bin.000001 # Write_rows 2 # table_id: 30 flags: STMT_END_F select * from t1; a b 1 1 -- cgit v1.2.1 From 897810e961d9b9a3916332fee878369f703c38c7 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 16:52:40 -0400 Subject: BUG#17138: Crash in stored procedure after fatal error that wasn't a real fatal error sql/handler.h: Handle HA_ERR_FOUND_DUPP_KEY and HA_ERR_FOUND_DUPP_UNIQUE similarly sql/item_sum.cc: fix sql/sql_select.cc: fix --- sql/handler.h | 8 +++++--- sql/item_sum.cc | 3 +-- sql/sql_select.cc | 9 ++++----- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/sql/handler.h b/sql/handler.h index b53c0a9c101..048657e419b 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -977,6 +977,9 @@ public: ignorable than others. E.g. the partition handler can get inserts into a range where there is no partition and this is an ignorable error. + HA_ERR_FOUND_DUPP_UNIQUE is a special case in MyISAM that means the + same thing as HA_ERR_FOUND_DUPP_KEY but can in some cases lead to + a slightly different error message. */ #define HA_CHECK_DUPP_KEY 1 #define HA_CHECK_DUPP_UNIQUE 2 @@ -985,9 +988,8 @@ public: { if (!error || ((flags & HA_CHECK_DUPP_KEY) && - error == HA_ERR_FOUND_DUPP_KEY) || - ((flags & HA_CHECK_DUPP_UNIQUE) && - error == HA_ERR_FOUND_DUPP_UNIQUE)) + (error == HA_ERR_FOUND_DUPP_KEY || + error == HA_ERR_FOUND_DUPP_UNIQUE))) return FALSE; return TRUE; } diff --git a/sql/item_sum.cc b/sql/item_sum.cc index d6bc2c326d6..ff37ceaa6fe 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -2663,8 +2663,7 @@ bool Item_sum_count_distinct::add() return tree->unique_add(table->record[0] + table->s->null_bytes); } if ((error= table->file->ha_write_row(table->record[0])) && - error != HA_ERR_FOUND_DUPP_KEY && - error != HA_ERR_FOUND_DUPP_UNIQUE) + table->file->cannot_ignore_error(error, HA_CHECK_DUPP)) return TRUE; return FALSE; } diff --git a/sql/sql_select.cc b/sql/sql_select.cc index e9e2a4ed1e0..add4746c819 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -9354,9 +9354,9 @@ bool create_myisam_from_heap(THD *thd, TABLE *table, TMP_TABLE_PARAM *param, /* copy row that filled HEAP table */ if ((write_err=new_table.file->write_row(table->record[0]))) { - if (write_err != HA_ERR_FOUND_DUPP_KEY && - write_err != HA_ERR_FOUND_DUPP_UNIQUE || !ignore_last_dupp_key_error) - goto err; + if (new_table.file->cannot_ignore_error(write_err, HA_CHECK_DUPP) || + !ignore_last_dupp_key_error) + goto err; } /* remove heap table and change to use myisam table */ @@ -10777,8 +10777,7 @@ end_write(JOIN *join, JOIN_TAB *join_tab __attribute__((unused)), join->found_records++; if ((error=table->file->write_row(table->record[0]))) { - if (error == HA_ERR_FOUND_DUPP_KEY || - error == HA_ERR_FOUND_DUPP_UNIQUE) + if (table->file->cannot_ignore_error(error, HA_CHECK_DUPP)) goto end; if (create_myisam_from_heap(join->thd, table, &join->tmp_table_param, error,1)) -- cgit v1.2.1 From 406a7ba99209dd65a6974f2689fc92541ccf4450 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 01:14:53 +0400 Subject: field.cc, field.h: Additional fix for #16377 for bigendian platforms sql_select.cc, select.result, select.test: After merge fix mysql-test/t/select.test: After merge fix mysql-test/r/select.result: After merge fix sql/sql_select.cc: After merge fix sql/field.h: Additional fix for #16377 for bigendian platforms sql/field.cc: Additional fix for #16377 for bigendian platforms --- mysql-test/r/select.result | 12 ++++++------ mysql-test/t/select.test | 2 +- sql/field.cc | 44 ++++++++++++++++++++++---------------------- sql/field.h | 2 +- sql/sql_select.cc | 2 +- 5 files changed, 31 insertions(+), 31 deletions(-) diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result index a9381f7c942..e6c590489a0 100644 --- a/mysql-test/r/select.result +++ b/mysql-test/r/select.result @@ -2730,6 +2730,12 @@ ERROR HY000: Key 'a' doesn't exist in table 't1' EXPLAIN SELECT * FROM t1 FORCE INDEX (a); ERROR HY000: Key 'a' doesn't exist in table 't1' DROP TABLE t1; +CREATE TABLE t1 (i BIGINT UNSIGNED NOT NULL); +INSERT INTO t1 VALUES (10); +SELECT i='1e+01',i=1e+01, i in (1e+01,1e+01), i in ('1e+01','1e+01') FROM t1; +i='1e+01' i=1e+01 i in (1e+01,1e+01) i in ('1e+01','1e+01') +0 1 1 1 +DROP TABLE t1; CREATE TABLE t1 ( K2C4 varchar(4) character set latin1 collate latin1_bin NOT NULL default '', K4N4 varchar(4) character set latin1 collate latin1_bin NOT NULL default '0000', @@ -3389,9 +3395,3 @@ a t1.b + 0 t1.c + 0 a t2.b + 0 c d 1 0 1 1 0 1 NULL 2 0 1 NULL NULL NULL NULL drop table t1,t2; -CREATE TABLE t1 (i BIGINT UNSIGNED NOT NULL); -INSERT INTO t1 VALUES (10); -SELECT i='1e+01',i=1e+01, i in (1e+01), i in ('1e+01') FROM t1; -i='1e+01' i=1e+01 i in (1e+01) i in ('1e+01') -0 1 1 1 -DROP TABLE t1; diff --git a/mysql-test/t/select.test b/mysql-test/t/select.test index 707892a5b16..b75d0dd8bb6 100644 --- a/mysql-test/t/select.test +++ b/mysql-test/t/select.test @@ -2301,7 +2301,7 @@ DROP TABLE t1; # CREATE TABLE t1 (i BIGINT UNSIGNED NOT NULL); INSERT INTO t1 VALUES (10); -SELECT i='1e+01',i=1e+01, i in (1e+01), i in ('1e+01') FROM t1; +SELECT i='1e+01',i=1e+01, i in (1e+01,1e+01), i in ('1e+01','1e+01') FROM t1; DROP TABLE t1; # End of 4.1 tests diff --git a/sql/field.cc b/sql/field.cc index 33fc5ab3128..7c25e4ad9f7 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -4566,7 +4566,7 @@ int Field_timestamp::store(const char *from,uint len,CHARSET_INFO *cs) } #ifdef WORDS_BIGENDIAN - if (table->s->db_low_byte_first) + if (table && table->s->db_low_byte_first) { int4store(ptr,tmp); } @@ -4632,7 +4632,7 @@ int Field_timestamp::store(longlong nr, bool unsigned_val) nr, MYSQL_TIMESTAMP_DATETIME, 1); #ifdef WORDS_BIGENDIAN - if (table->s->db_low_byte_first) + if (table && table->s->db_low_byte_first) { int4store(ptr,timestamp); } @@ -4656,7 +4656,7 @@ longlong Field_timestamp::val_int(void) THD *thd= table ? table->in_use : current_thd; #ifdef WORDS_BIGENDIAN - if (table->s->db_low_byte_first) + if (table && table->s->db_low_byte_first) temp=uint4korr(ptr); else #endif @@ -4686,7 +4686,7 @@ String *Field_timestamp::val_str(String *val_buffer, String *val_ptr) val_buffer->length(field_length); #ifdef WORDS_BIGENDIAN - if (table->s->db_low_byte_first) + if (table && table->s->db_low_byte_first) temp=uint4korr(ptr); else #endif @@ -4751,7 +4751,7 @@ bool Field_timestamp::get_date(TIME *ltime, uint fuzzydate) long temp; THD *thd= table ? table->in_use : current_thd; #ifdef WORDS_BIGENDIAN - if (table->s->db_low_byte_first) + if (table && table->s->db_low_byte_first) temp=uint4korr(ptr); else #endif @@ -4788,7 +4788,7 @@ int Field_timestamp::cmp(const char *a_ptr, const char *b_ptr) { int32 a,b; #ifdef WORDS_BIGENDIAN - if (table->s->db_low_byte_first) + if (table && table->s->db_low_byte_first) { a=sint4korr(a_ptr); b=sint4korr(b_ptr); @@ -4806,7 +4806,7 @@ int Field_timestamp::cmp(const char *a_ptr, const char *b_ptr) void Field_timestamp::sort_string(char *to,uint length __attribute__((unused))) { #ifdef WORDS_BIGENDIAN - if (!table->s->db_low_byte_first) + if (!table || !table->s->db_low_byte_first) { to[0] = ptr[0]; to[1] = ptr[1]; @@ -4836,7 +4836,7 @@ void Field_timestamp::set_time() long tmp= (long) thd->query_start(); set_notnull(); #ifdef WORDS_BIGENDIAN - if (table->s->db_low_byte_first) + if (table && table->s->db_low_byte_first) { int4store(ptr,tmp); } @@ -5238,7 +5238,7 @@ int Field_date::store(const char *from, uint len,CHARSET_INFO *cs) from, len, MYSQL_TIMESTAMP_DATE, 1); #ifdef WORDS_BIGENDIAN - if (table->s->db_low_byte_first) + if (table && table->s->db_low_byte_first) { int4store(ptr,tmp); } @@ -5299,7 +5299,7 @@ int Field_date::store(longlong nr, bool unsigned_val) MYSQL_TIMESTAMP_DATETIME, 1); #ifdef WORDS_BIGENDIAN - if (table->s->db_low_byte_first) + if (table && table->s->db_low_byte_first) { int4store(ptr, nr); } @@ -5325,7 +5325,7 @@ double Field_date::val_real(void) { int32 j; #ifdef WORDS_BIGENDIAN - if (table->s->db_low_byte_first) + if (table && table->s->db_low_byte_first) j=sint4korr(ptr); else #endif @@ -5338,7 +5338,7 @@ longlong Field_date::val_int(void) { int32 j; #ifdef WORDS_BIGENDIAN - if (table->s->db_low_byte_first) + if (table && table->s->db_low_byte_first) j=sint4korr(ptr); else #endif @@ -5354,7 +5354,7 @@ String *Field_date::val_str(String *val_buffer, val_buffer->alloc(field_length); int32 tmp; #ifdef WORDS_BIGENDIAN - if (table->s->db_low_byte_first) + if (table && table->s->db_low_byte_first) tmp=sint4korr(ptr); else #endif @@ -5372,7 +5372,7 @@ int Field_date::cmp(const char *a_ptr, const char *b_ptr) { int32 a,b; #ifdef WORDS_BIGENDIAN - if (table->s->db_low_byte_first) + if (table && table->s->db_low_byte_first) { a=sint4korr(a_ptr); b=sint4korr(b_ptr); @@ -5390,7 +5390,7 @@ int Field_date::cmp(const char *a_ptr, const char *b_ptr) void Field_date::sort_string(char *to,uint length __attribute__((unused))) { #ifdef WORDS_BIGENDIAN - if (!table->s->db_low_byte_first) + if (!table || !table->s->db_low_byte_first) { to[0] = ptr[0]; to[1] = ptr[1]; @@ -5630,7 +5630,7 @@ int Field_datetime::store(const char *from,uint len,CHARSET_INFO *cs) from, len, MYSQL_TIMESTAMP_DATETIME, 1); #ifdef WORDS_BIGENDIAN - if (table->s->db_low_byte_first) + if (table && table->s->db_low_byte_first) { int8store(ptr,tmp); } @@ -5683,7 +5683,7 @@ int Field_datetime::store(longlong nr, bool unsigned_val) MYSQL_TIMESTAMP_DATETIME, 1); #ifdef WORDS_BIGENDIAN - if (table->s->db_low_byte_first) + if (table && table->s->db_low_byte_first) { int8store(ptr,nr); } @@ -5712,7 +5712,7 @@ int Field_datetime::store_time(TIME *ltime,timestamp_type type) set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, WARN_DATA_TRUNCATED, 1); } #ifdef WORDS_BIGENDIAN - if (table->s->db_low_byte_first) + if (table && table->s->db_low_byte_first) { int8store(ptr,tmp); } @@ -5739,7 +5739,7 @@ longlong Field_datetime::val_int(void) { longlong j; #ifdef WORDS_BIGENDIAN - if (table->s->db_low_byte_first) + if (table && table->s->db_low_byte_first) j=sint8korr(ptr); else #endif @@ -5759,7 +5759,7 @@ String *Field_datetime::val_str(String *val_buffer, int part3; #ifdef WORDS_BIGENDIAN - if (table->s->db_low_byte_first) + if (table && table->s->db_low_byte_first) tmp=sint8korr(ptr); else #endif @@ -5824,7 +5824,7 @@ int Field_datetime::cmp(const char *a_ptr, const char *b_ptr) { longlong a,b; #ifdef WORDS_BIGENDIAN - if (table->s->db_low_byte_first) + if (table && table->s->db_low_byte_first) { a=sint8korr(a_ptr); b=sint8korr(b_ptr); @@ -5842,7 +5842,7 @@ int Field_datetime::cmp(const char *a_ptr, const char *b_ptr) void Field_datetime::sort_string(char *to,uint length __attribute__((unused))) { #ifdef WORDS_BIGENDIAN - if (!table->s->db_low_byte_first) + if (!table || !table->s->db_low_byte_first) { to[0] = ptr[0]; to[1] = ptr[1]; diff --git a/sql/field.h b/sql/field.h index e7b7aa45c27..ed13372df71 100644 --- a/sql/field.h +++ b/sql/field.h @@ -813,7 +813,7 @@ public: if ((*null_value= is_null())) return 0; #ifdef WORDS_BIGENDIAN - if (table->s->db_low_byte_first) + if (table && table->s->db_low_byte_first) return sint4korr(ptr); #endif long tmp; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 7d7975436a5..9f317842d98 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -8817,7 +8817,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List &fields, } else { - set_if_smaller(table->max_rows, rows_limit); + set_if_smaller(table->s->max_rows, rows_limit); param->end_write_records= rows_limit; } -- cgit v1.2.1 From e9452db1c1b7fb534a44590312d6608640675350 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 01:50:20 +0400 Subject: Fix for bug#19634 "Re-execution of multi-delete which involve trigger/stored function crashes server". Attempts to execute prepared multi-delete statement which involved trigger or stored function caused server crashes (the same happened for such statements included in stored procedures in cases when one tried to execute them more than once). The problem was caused by yet another incorrect usage of check_table_access() routine (the latter assumes that table list which it gets as argument corresponds to value LEX::query_tables_own_last). We solve this problem by juggling with LEX::query_tables_own_last value when we call check_table_access() for LEX::auxilliary_table_list (better solution is too intrusive and should be done in 5.1). mysql-test/r/sp-prelocking.result: Added test for bug#19634 "Re-execution of multi-delete which involve trigger/ stored function crashes server". mysql-test/t/sp-prelocking.test: Added test for bug#19634 "Re-execution of multi-delete which involve trigger/ stored function crashes server". sql/sql_parse.cc: To call safely check_table_access() for LEX::auxilliary_table_list we have to juggle with LEX::query_tables_own_last value. --- mysql-test/r/sp-prelocking.result | 18 ++++++++++++++++++ mysql-test/t/sp-prelocking.test | 31 ++++++++++++++++++++++++++++++ sql/sql_parse.cc | 40 +++++++++++++++++++++++++++++++++++---- 3 files changed, 85 insertions(+), 4 deletions(-) diff --git a/mysql-test/r/sp-prelocking.result b/mysql-test/r/sp-prelocking.result index 2335513b28a..7d8dd862748 100644 --- a/mysql-test/r/sp-prelocking.result +++ b/mysql-test/r/sp-prelocking.result @@ -237,3 +237,21 @@ deallocate prepare stmt; drop table t1; drop view v1, v2, v3; drop function bug15683; +drop table if exists t1, t2, t3; +drop function if exists bug19634; +create table t1 (id int, data int); +create table t2 (id int); +create table t3 (data int); +create function bug19634() returns int return (select count(*) from t3); +prepare stmt from "delete t1 from t1, t2 where t1.id = t2.id and bug19634()"; +execute stmt; +execute stmt; +deallocate prepare stmt; +create trigger t1_bi before delete on t1 for each row insert into t3 values (old.data); +prepare stmt from "delete t1 from t1, t2 where t1.id = t2.id"; +execute stmt; +execute stmt; +deallocate prepare stmt; +drop function bug19634; +drop table t1, t2, t3; +End of 5.0 tests diff --git a/mysql-test/t/sp-prelocking.test b/mysql-test/t/sp-prelocking.test index a7215462afb..b94de6236d3 100644 --- a/mysql-test/t/sp-prelocking.test +++ b/mysql-test/t/sp-prelocking.test @@ -272,3 +272,34 @@ drop table t1; drop view v1, v2, v3; drop function bug15683; + +# +# Bug#19634 "Re-execution of multi-delete which involve trigger/stored +# function crashes server" +# +--disable_warnings +drop table if exists t1, t2, t3; +drop function if exists bug19634; +--enable_warnings +create table t1 (id int, data int); +create table t2 (id int); +create table t3 (data int); +create function bug19634() returns int return (select count(*) from t3); +prepare stmt from "delete t1 from t1, t2 where t1.id = t2.id and bug19634()"; +# This should not crash server +execute stmt; +execute stmt; +deallocate prepare stmt; + +create trigger t1_bi before delete on t1 for each row insert into t3 values (old.data); +prepare stmt from "delete t1 from t1, t2 where t1.id = t2.id"; + +execute stmt; +execute stmt; +deallocate prepare stmt; + +drop function bug19634; +drop table t1, t2, t3; + + +--echo End of 5.0 tests diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index ba5c2ebf484..7ed96250240 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -5202,8 +5202,26 @@ bool check_global_access(THD *thd, ulong want_access) /* - Check the privilege for all used tables. Table privileges are cached - in the table list for GRANT checking + Check the privilege for all used tables. + + SYNOPSYS + check_table_access() + thd Thread context + want_access Privileges requested + tables List of tables to be checked + no_errors FALSE/TRUE - report/don't report error to + the client (using my_error() call). + + NOTES + Table privileges are cached in the table list for GRANT checking. + This functions assumes that table list used and + thd->lex->query_tables_own_last value correspond to each other + (the latter should be either 0 or point to next_global member + of one of elements of this table list). + + RETURN VALUE + FALSE - OK + TRUE - Access denied */ bool @@ -7068,14 +7086,28 @@ bool multi_delete_precheck(THD *thd, TABLE_LIST *tables) SELECT_LEX *select_lex= &thd->lex->select_lex; TABLE_LIST *aux_tables= (TABLE_LIST *)thd->lex->auxilliary_table_list.first; + TABLE_LIST **save_query_tables_own_last= thd->lex->query_tables_own_last; DBUG_ENTER("multi_delete_precheck"); /* sql_yacc guarantees that tables and aux_tables are not zero */ DBUG_ASSERT(aux_tables != 0); if (check_db_used(thd, tables) || check_db_used(thd,aux_tables) || - check_table_access(thd,SELECT_ACL, tables,0) || - check_table_access(thd,DELETE_ACL, aux_tables,0)) + check_table_access(thd, SELECT_ACL, tables, 0)) + DBUG_RETURN(TRUE); + + /* + Since aux_tables list is not part of LEX::query_tables list we + have to juggle with LEX::query_tables_own_last value to be able + call check_table_access() safely. + */ + thd->lex->query_tables_own_last= 0; + if (check_table_access(thd, DELETE_ACL, aux_tables, 0)) + { + thd->lex->query_tables_own_last= save_query_tables_own_last; DBUG_RETURN(TRUE); + } + thd->lex->query_tables_own_last= save_query_tables_own_last; + if ((thd->options & OPTION_SAFE_UPDATES) && !select_lex->where) { my_message(ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE, -- cgit v1.2.1 From a28e7eb4206d74d43eb476360eaa67a6b64b0164 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 02:16:38 +0400 Subject: Fix merge 5.0 -> 5.1. mysql-test/r/im_life_cycle.result: Fix manual merge. --- mysql-test/r/im_life_cycle.result | 4 ---- 1 file changed, 4 deletions(-) diff --git a/mysql-test/r/im_life_cycle.result b/mysql-test/r/im_life_cycle.result index aa26b355aff..b6d3bb8361c 100644 --- a/mysql-test/r/im_life_cycle.result +++ b/mysql-test/r/im_life_cycle.result @@ -47,10 +47,6 @@ mysqld2 offline Killing the process... Sleeping... Success: the process was restarted. - --------------------------------------------------------------------- --- 1.1.7. --------------------------------------------------------------------- SHOW INSTANCES; instance_name state mysqld1 online -- cgit v1.2.1 From fb074e3891cf5bf7dcd7b4cdca61c7f4e3fc58f6 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 02:17:39 +0400 Subject: Re-enable IM tests. --- mysql-test/t/disabled.def | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index 96f31133e65..b4bd53fb1bc 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -13,9 +13,9 @@ #events_stress : BUG#17619 2006-02-21 andrey Race conditions #events : BUG#17619 2006-02-21 andrey Race conditions #events_scheduling : BUG#19170 2006-04-26 andrey Test case of 19170 fails on some platforms. Has to be checked. -im_instance_conf : Bug#20294 2006-06-06 monty Instance manager test im_instance_conf fails randomly -im_options : Bug#20294 2006-06-06 monty Instance manager test im_instance_conf fails randomly -im_life_cycle : Bug#20368 2006-06-10 alik im_life_cycle test fails +#im_instance_conf : Bug#20294 2006-06-06 monty Instance manager test im_instance_conf fails randomly +#im_options : Bug#20294 2006-06-06 monty Instance manager test im_instance_conf fails randomly +#im_life_cycle : Bug#20368 2006-06-10 alik im_life_cycle test fails ndb_autodiscover : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog ndb_autodiscover2 : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog #ndb_binlog_discover : BUG#19395 2006-04-28 tomas/knielsen mysqld does not always detect cluster shutdown -- cgit v1.2.1 From 0baf2087a2bdc87aca5c64be8097f978e5228c10 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 02:21:10 +0400 Subject: Remove deadcode in select_dumpvar::send_data() --- sql/sql_class.cc | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 678048226af..06082a57964 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -1853,15 +1853,10 @@ bool select_dumpvar::send_data(List &items) Item_func_set_user_var *xx; Item_splocal *yy; my_var *zz; - DBUG_ENTER("send_data"); - if (unit->offset_limit_cnt) - { // using limit offset,count - unit->offset_limit_cnt--; - DBUG_RETURN(0); - } + DBUG_ENTER("select_dumpvar::send_data"); if (unit->offset_limit_cnt) - { // Using limit offset,count + { // using limit offset,count unit->offset_limit_cnt--; DBUG_RETURN(0); } -- cgit v1.2.1 From 72cb1d5049c781ed82f0f0859df74383d0d62824 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 02:23:18 +0300 Subject: Fix for Bug#18246 "compilation error with tcp_wrapper" sql/mysqld.cc: Fix for Bug#18246 "compilation error with tcp_wrapper" Added wrapper functions. --- include/Makefile.am | 2 +- include/my_libwrap.h | 19 +++++++++++++++++++ mysys/Makefile.am | 2 +- mysys/my_libwrap.c | 39 +++++++++++++++++++++++++++++++++++++++ sql/mysqld.cc | 6 +++--- 5 files changed, 63 insertions(+), 5 deletions(-) create mode 100644 include/my_libwrap.h create mode 100644 mysys/my_libwrap.c diff --git a/include/Makefile.am b/include/Makefile.am index 07c32e3127b..2dbea3fe07f 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -31,7 +31,7 @@ noinst_HEADERS = config-win.h config-os2.h config-netware.h \ my_aes.h my_tree.h hash.h thr_alarm.h \ thr_lock.h t_ctype.h violite.h md5.h base64.h \ mysql_version.h.in my_handler.h my_time.h decimal.h \ - my_user.h + my_user.h my_libwrap.h # mysql_version.h are generated CLEANFILES = mysql_version.h my_config.h readline openssl diff --git a/include/my_libwrap.h b/include/my_libwrap.h new file mode 100644 index 00000000000..a5cc9879e4f --- /dev/null +++ b/include/my_libwrap.h @@ -0,0 +1,19 @@ +/* Copyright (C) 2000 MySQL AB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +extern void my_fromhost(struct request_info *req); +extern int my_hosts_access(struct request_info *req); +extern char *my_eval_client(struct request_info *req); diff --git a/mysys/Makefile.am b/mysys/Makefile.am index d046b2fa3f8..bc84f44cd29 100644 --- a/mysys/Makefile.am +++ b/mysys/Makefile.am @@ -56,7 +56,7 @@ libmysys_a_SOURCES = my_init.c my_getwd.c mf_getdate.c my_mmap.c \ my_gethostbyname.c rijndael.c my_aes.c sha1.c \ my_handler.c my_netware.c my_largepage.c \ my_memmem.c \ - my_windac.c my_access.c base64.c + my_windac.c my_access.c base64.c my_libwrap.c EXTRA_DIST = thr_alarm.c thr_lock.c my_pthread.c my_thr_init.c \ thr_mutex.c thr_rwlock.c libmysys_a_LIBADD = @THREAD_LOBJECTS@ diff --git a/mysys/my_libwrap.c b/mysys/my_libwrap.c new file mode 100644 index 00000000000..29a0ecf3fc6 --- /dev/null +++ b/mysys/my_libwrap.c @@ -0,0 +1,39 @@ +/* Copyright (C) 2003 MySQL AB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#include +#ifdef HAVE_LIBWRAP +#include +#include +#ifdef NEED_SYS_SYSLOG_H +#include +#endif /* NEED_SYS_SYSLOG_H */ +#endif + +void my_fromhost(struct request_info *req) +{ + fromhost(req); +} + +int my_hosts_access(struct request_info *req) +{ + hosts_access(req); +} + +char *my_eval_client(struct request_info *req) +{ + eval_client(req); +} diff --git a/sql/mysqld.cc b/sql/mysqld.cc index d7a38d6b715..262a5352ed9 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -4072,8 +4072,8 @@ pthread_handler_t handle_connections_sockets(void *arg __attribute__((unused))) struct request_info req; signal(SIGCHLD, SIG_DFL); request_init(&req, RQ_DAEMON, libwrapName, RQ_FILE, new_sock, NULL); - fromhost(&req); - if (!hosts_access(&req)) + my_fromhost(&req); + if (!my_hosts_access(&req)) { /* This may be stupid but refuse() includes an exit(0) @@ -4081,7 +4081,7 @@ pthread_handler_t handle_connections_sockets(void *arg __attribute__((unused))) clean_exit() - same stupid thing ... */ syslog(deny_severity, "refused connect from %s", - eval_client(&req)); + my_eval_client(&req)); /* C++ sucks (the gibberish in front just translates the supplied -- cgit v1.2.1 From 69977fa50b5718106828c70a2d93e7c93579b2ac Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Jun 2006 19:57:21 -0700 Subject: Fixed bug #16674. The length of the prefix of the pattern string in the LIKE predicate that determined the index range to be scanned was calculated incorrectly for multi-byte character sets. As a result of this in 4. 1 the the scanned range was wider then necessary if the prefix contained not only one-byte characters. In 5.0 additionally it caused missing some rows from the result set. mysql-test/r/ctype_utf8.result: Added test cases for bug #16674. mysql-test/t/ctype_utf8.test: Added test cases for bug #16674. strings/ctype-mb.c: Fixed bug #16674. The length of the prefix of the pattern string in the LIKE predicate that determined the index range to be scanned was calculated incorrectly for multi-byte character sets. As a result of this in 4. 1 the the scanned range was wider then necessary if the prefix contained not only one-byte characters. In 5.0 additionally it caused missing some rows from the result set. The function my_like_range_mb was fixed to calculate the length of the prefix in a pattern string correctly in all cases. --- mysql-test/r/ctype_utf8.result | 67 ++++++++++++++++++++++++++++++++++++++++++ mysql-test/t/ctype_utf8.test | 55 ++++++++++++++++++++++++++++++++++ strings/ctype-mb.c | 25 ++++++++++------ 3 files changed, 138 insertions(+), 9 deletions(-) diff --git a/mysql-test/r/ctype_utf8.result b/mysql-test/r/ctype_utf8.result index 69d7577ee77..dff4476993c 100644 --- a/mysql-test/r/ctype_utf8.result +++ b/mysql-test/r/ctype_utf8.result @@ -1124,3 +1124,70 @@ check table t1; Table Op Msg_type Msg_text test.t1 check status OK drop table t1; +SET NAMES utf8; +CREATE TABLE t1 ( +a CHAR(13) DEFAULT '', +INDEX(a) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; +INSERT INTO t1 VALUES +('Käli Käli 2-4'), ('Käli Käli 2-4'), +('Käli Käli 2+4'), ('Käli Käli 2+4'), +('Käli Käli 2-6'), ('Käli Käli 2-6'); +CREATE TABLE t2 ( +a CHAR(13) DEFAULT '', +INDEX(a) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; +INSERT INTO t2 VALUES +('Kali Kali 2-4'), ('Kali Kali 2-4'), +('Kali Kali 2+4'), ('Kali Kali 2+4'), +('Kali Kali 2-6'), ('Kali Kali 2-6'); +SELECT a FROM t1 WHERE a LIKE 'Käli Käli 2+4'; +a +Käli Käli 2+4 +Käli Käli 2+4 +SELECT a FROM t2 WHERE a LIKE 'Kali Kali 2+4'; +a +Kali Kali 2+4 +Kali Kali 2+4 +EXPLAIN SELECT a FROM t1 WHERE a LIKE 'Käli Käli 2+4'; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 range a a 40 NULL 2 Using where; Using index +EXPLAIN SELECT a FROM t1 WHERE a = 'Käli Käli 2+4'; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ref a a 40 const 2 Using where; Using index +EXPLAIN SELECT a FROM t2 WHERE a LIKE 'Kali Kali 2+4'; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 range a a 14 NULL 2 Using where; Using index +EXPLAIN SELECT a FROM t2 WHERE a = 'Kali Kali 2+4'; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 ref a a 14 const 2 Using where; Using index +DROP TABLE t1,t2; +CREATE TABLE t1 ( +a char(255) DEFAULT '', +KEY(a(10)) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; +INSERT INTO t1 VALUES ('Käli Käli 2-4'); +SELECT * FROM t1 WHERE a LIKE 'Käli Käli 2%'; +a +Käli Käli 2-4 +INSERT INTO t1 VALUES ('Käli Käli 2-4'); +SELECT * FROM t1 WHERE a LIKE 'Käli Käli 2%'; +a +Käli Käli 2-4 +Käli Käli 2-4 +DROP TABLE t1; +CREATE TABLE t1 ( +a char(255) DEFAULT '' +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; +INSERT INTO t1 VALUES ('Käli Käli 2-4'); +INSERT INTO t1 VALUES ('Käli Käli 2-4'); +SELECT * FROM t1 WHERE a LIKE 'Käli Käli 2%'; +a +Käli Käli 2-4 +Käli Käli 2-4 +ALTER TABLE t1 ADD KEY (a(10)); +SELECT * FROM t1 WHERE a LIKE 'Käli Käli 2%'; +a +Käli Käli 2-4 +Käli Käli 2-4 +DROP TABLE t1; diff --git a/mysql-test/t/ctype_utf8.test b/mysql-test/t/ctype_utf8.test index 5044f7979f1..47436956354 100644 --- a/mysql-test/t/ctype_utf8.test +++ b/mysql-test/t/ctype_utf8.test @@ -926,4 +926,59 @@ INSERT INTO t1 VALUES('uUABCDEFGHIGKLMNOPRSTUVWXYZ̈bbbbbbbbbbbbbbbbbbbbbbbbbbbb check table t1; drop table t1; +# +# Bug#16674: LIKE predicate for a utf8 character set column +# + +SET NAMES utf8; + +CREATE TABLE t1 ( + a CHAR(13) DEFAULT '', + INDEX(a) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; +INSERT INTO t1 VALUES + ('Käli Käli 2-4'), ('Käli Käli 2-4'), + ('Käli Käli 2+4'), ('Käli Käli 2+4'), + ('Käli Käli 2-6'), ('Käli Käli 2-6'); + +CREATE TABLE t2 ( + a CHAR(13) DEFAULT '', + INDEX(a) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; + +INSERT INTO t2 VALUES + ('Kali Kali 2-4'), ('Kali Kali 2-4'), + ('Kali Kali 2+4'), ('Kali Kali 2+4'), + ('Kali Kali 2-6'), ('Kali Kali 2-6'); + +SELECT a FROM t1 WHERE a LIKE 'Käli Käli 2+4'; +SELECT a FROM t2 WHERE a LIKE 'Kali Kali 2+4'; + +EXPLAIN SELECT a FROM t1 WHERE a LIKE 'Käli Käli 2+4'; +EXPLAIN SELECT a FROM t1 WHERE a = 'Käli Käli 2+4'; +EXPLAIN SELECT a FROM t2 WHERE a LIKE 'Kali Kali 2+4'; +EXPLAIN SELECT a FROM t2 WHERE a = 'Kali Kali 2+4'; + +DROP TABLE t1,t2; + +CREATE TABLE t1 ( + a char(255) DEFAULT '', + KEY(a(10)) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; +INSERT INTO t1 VALUES ('Käli Käli 2-4'); +SELECT * FROM t1 WHERE a LIKE 'Käli Käli 2%'; +INSERT INTO t1 VALUES ('Käli Käli 2-4'); +SELECT * FROM t1 WHERE a LIKE 'Käli Käli 2%'; +DROP TABLE t1; + +CREATE TABLE t1 ( + a char(255) DEFAULT '' +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; +INSERT INTO t1 VALUES ('Käli Käli 2-4'); +INSERT INTO t1 VALUES ('Käli Käli 2-4'); +SELECT * FROM t1 WHERE a LIKE 'Käli Käli 2%'; +ALTER TABLE t1 ADD KEY (a(10)); +SELECT * FROM t1 WHERE a LIKE 'Käli Käli 2%'; +DROP TABLE t1; + # End of 4.1 tests diff --git a/strings/ctype-mb.c b/strings/ctype-mb.c index eb032759d25..4f57f7c78e4 100644 --- a/strings/ctype-mb.c +++ b/strings/ctype-mb.c @@ -502,21 +502,19 @@ my_bool my_like_range_mb(CHARSET_INFO *cs, char *min_str,char *max_str, uint *min_length,uint *max_length) { + uint mblen; const char *end= ptr + ptr_length; char *min_org= min_str; char *min_end= min_str + res_length; char *max_end= max_str + res_length; - uint charlen= res_length / cs->mbmaxlen; + uint maxcharlen= res_length / cs->mbmaxlen; - for (; ptr != end && min_str != min_end && charlen > 0 ; ptr++, charlen--) + for (; ptr != end && min_str != min_end && maxcharlen ; maxcharlen--) { + /* We assume here that escape, w_any, w_namy are one-byte characters */ if (*ptr == escape && ptr+1 != end) - { - ptr++; /* Skip escape */ - *min_str++= *max_str++ = *ptr; - continue; - } - if (*ptr == w_one || *ptr == w_many) /* '_' and '%' in SQL */ + ptr++; /* Skip escape */ + else if (*ptr == w_one || *ptr == w_many) /* '_' and '%' in SQL */ { /* Write min key */ *min_length= (uint) (min_str - min_org); @@ -534,7 +532,16 @@ my_bool my_like_range_mb(CHARSET_INFO *cs, pad_max_char(cs, max_str, max_end); return 0; } - *min_str++= *max_str++ = *ptr; + if ((mblen= my_ismbchar(cs, ptr, end)) > 1) + { + if (ptr+mblen > end || min_str+mblen > min_end) + break; + while (mblen--) + *min_str++= *max_str++= *ptr++; + } + else + *min_str++= *max_str++= *ptr++; + } *min_length= *max_length = (uint) (min_str - min_org); -- cgit v1.2.1 From 7d3f1e7a239b52c71db58c7e460e8d3b56ca7d2a Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 08:58:56 +0200 Subject: add event_timed.h also to the distribution --- sql/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/Makefile.am b/sql/Makefile.am index e3b2447341d..387f18c2ae9 100644 --- a/sql/Makefile.am +++ b/sql/Makefile.am @@ -65,7 +65,7 @@ noinst_HEADERS = item.h item_func.h item_sum.h item_cmpfunc.h \ sp_head.h sp_pcontext.h sp_rcontext.h sp.h sp_cache.h \ parse_file.h sql_view.h sql_trigger.h \ sql_array.h sql_cursor.h events.h events_priv.h \ - sql_plugin.h authors.h sql_partition.h \ + sql_plugin.h authors.h sql_partition.h event_timed.h \ partition_info.h partition_element.h event_scheduler.h \ contributors.h mysqld_SOURCES = sql_lex.cc sql_handler.cc sql_partition.cc \ -- cgit v1.2.1 From 0feec183b27838bf2fb0b8fc3abcc6bd0097dcc6 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 09:20:55 +0200 Subject: ndb autotest - add BUILD/compile-ndb-autotest to simplify building autotest on different mysql versions BUILD/compile-ndb-autotest: New BitKeeper file ``BUILD/compile-ndb-autotest'' --- BUILD/compile-ndb-autotest | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100755 BUILD/compile-ndb-autotest diff --git a/BUILD/compile-ndb-autotest b/BUILD/compile-ndb-autotest new file mode 100755 index 00000000000..3ef0091c155 --- /dev/null +++ b/BUILD/compile-ndb-autotest @@ -0,0 +1,9 @@ +#! /bin/sh + +path=`dirname $0` +. "$path/SETUP.sh" + +extra_flags="$fast_cflags $max_cflags -g" +extra_configs="$max_configs --with-ndb-test --with-ndb-ccflags="-DERROR_INSERT"" + +. "$path/FINISH.sh" -- cgit v1.2.1 From aedbb330c8243867cbb95c6cf31096811ba5d8f3 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 09:36:50 +0200 Subject: Fix for Bug #19906 REPLACE doesn't update TEXT fields correctly --- mysql-test/r/ndb_replace.result | 23 ++++++++++++++++++++++- mysql-test/t/ndb_replace.test | 30 ++++++++++++++++++++++++++++-- sql/ha_ndbcluster.cc | 10 ++++++++-- sql/ha_ndbcluster.h | 3 ++- 4 files changed, 60 insertions(+), 6 deletions(-) diff --git a/mysql-test/r/ndb_replace.result b/mysql-test/r/ndb_replace.result index 5d772620b2c..cdfcd6a7a43 100644 --- a/mysql-test/r/ndb_replace.result +++ b/mysql-test/r/ndb_replace.result @@ -1,4 +1,4 @@ -drop table if exists t1; +drop table if exists t1,t2; CREATE TABLE t1 ( gesuchnr int(11) DEFAULT '0' NOT NULL, benutzer_id int(11) DEFAULT '0' NOT NULL, @@ -31,3 +31,24 @@ SELECT * from t1 ORDER BY i; i j k 3 1 42 17 2 24 +CREATE TABLE t2 (a INT(11) NOT NULL, +b INT(11) NOT NULL, +c INT(11) NOT NULL, +x TEXT, +y TEXT, +z TEXT, +id INT(10) unsigned NOT NULL AUTO_INCREMENT, +i INT(11) DEFAULT NULL, +PRIMARY KEY (id), +UNIQUE KEY a (a,b,c) +) ENGINE=ndbcluster; +REPLACE INTO t2 (a,b,c,x,y,z,i) VALUES (1,1,1,'a','a','a',1),(1,1,1,'b','b','b',2), (1,1,1,'c','c','c',3); +SELECT * FROM t2 ORDER BY id; +a b c x y z id i +1 1 1 c c c 3 3 +REPLACE INTO t2(a,b,c,x,y,z,i) values (1,1,1,'a','a','a',1); +REPLACE INTO t2(a,b,c,x,y,z,i) values (1,1,1,'b','b','b',2); +SELECT * FROM t2 ORDER BY id; +a b c x y z id i +1 1 1 b b b 5 2 +DROP TABLE t2; diff --git a/mysql-test/t/ndb_replace.test b/mysql-test/t/ndb_replace.test index 6cad80ef8ea..94a11f7dfb2 100644 --- a/mysql-test/t/ndb_replace.test +++ b/mysql-test/t/ndb_replace.test @@ -6,7 +6,7 @@ # --disable_warnings -drop table if exists t1; +drop table if exists t1,t2; --enable_warnings CREATE TABLE t1 ( @@ -27,6 +27,8 @@ replace into t1 (gesuchnr,benutzer_id) values (1,1); select * from t1 order by gesuchnr; drop table t1; +# End of 4.1 tests + # bug#17431 CREATE TABLE t1(i INT PRIMARY KEY AUTO_INCREMENT, j INT, @@ -38,4 +40,28 @@ REPLACE INTO t1 (j,k) VALUES (1,42); REPLACE INTO t1 (i,j) VALUES (17,2); SELECT * from t1 ORDER BY i; -# End of 4.1 tests +# bug#19906 +CREATE TABLE t2 (a INT(11) NOT NULL, + b INT(11) NOT NULL, + c INT(11) NOT NULL, + x TEXT, + y TEXT, + z TEXT, + id INT(10) unsigned NOT NULL AUTO_INCREMENT, + i INT(11) DEFAULT NULL, + PRIMARY KEY (id), + UNIQUE KEY a (a,b,c) +) ENGINE=ndbcluster; + +REPLACE INTO t2 (a,b,c,x,y,z,i) VALUES (1,1,1,'a','a','a',1),(1,1,1,'b','b','b',2), (1,1,1,'c','c','c',3); + +SELECT * FROM t2 ORDER BY id; + +REPLACE INTO t2(a,b,c,x,y,z,i) values (1,1,1,'a','a','a',1); +REPLACE INTO t2(a,b,c,x,y,z,i) values (1,1,1,'b','b','b',2); + +SELECT * FROM t2 ORDER BY id; + +DROP TABLE t2; + + diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index e2d82d9f559..e57a060f59b 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -771,10 +771,11 @@ int g_get_ndb_blobs_value(NdbBlob *ndb_blob, void *arg) if (ndb_blob->blobsNextBlob() != NULL) DBUG_RETURN(0); ha_ndbcluster *ha= (ha_ndbcluster *)arg; - DBUG_RETURN(ha->get_ndb_blobs_value(ndb_blob)); + DBUG_RETURN(ha->get_ndb_blobs_value(ndb_blob, ha->m_blobs_offset)); } -int ha_ndbcluster::get_ndb_blobs_value(NdbBlob *last_ndb_blob) +int ha_ndbcluster::get_ndb_blobs_value(NdbBlob *last_ndb_blob, + my_ptrdiff_t ptrdiff) { DBUG_ENTER("get_ndb_blobs_value"); @@ -807,7 +808,10 @@ int ha_ndbcluster::get_ndb_blobs_value(NdbBlob *last_ndb_blob) if (ndb_blob->readData(buf, len) != 0) DBUG_RETURN(-1); DBUG_ASSERT(len == blob_len); + // Ugly hack assumes only ptr needs to be changed + field_blob->ptr+= ptrdiff; field_blob->set_ptr(len, buf); + field_blob->ptr-= ptrdiff; } offset+= blob_size; } @@ -870,6 +874,7 @@ int ha_ndbcluster::get_ndb_value(NdbOperation *ndb_op, Field *field, if (ndb_blob != NULL) { // Set callback + m_blobs_offset= buf - (byte*) table->record[0]; void *arg= (void *)this; DBUG_RETURN(ndb_blob->setActiveHook(g_get_ndb_blobs_value, arg) != 0); } @@ -4552,6 +4557,7 @@ ha_ndbcluster::ha_ndbcluster(TABLE *table_arg): m_ops_pending(0), m_skip_auto_increment(TRUE), m_blobs_pending(0), + m_blobs_offset(0), m_blobs_buffer(0), m_blobs_buffer_size(0), m_dupkey((uint) -1), diff --git a/sql/ha_ndbcluster.h b/sql/ha_ndbcluster.h index e417996a5d9..01950c2b00f 100644 --- a/sql/ha_ndbcluster.h +++ b/sql/ha_ndbcluster.h @@ -629,7 +629,7 @@ private: int set_ndb_value(NdbOperation*, Field *field, uint fieldnr, bool *set_blob_value= 0); int get_ndb_value(NdbOperation*, Field *field, uint fieldnr, byte*); friend int g_get_ndb_blobs_value(NdbBlob *ndb_blob, void *arg); - int get_ndb_blobs_value(NdbBlob *last_ndb_blob); + int get_ndb_blobs_value(NdbBlob *last_ndb_blob, my_ptrdiff_t ptrdiff); int set_primary_key(NdbOperation *op, const byte *key); int set_primary_key_from_record(NdbOperation *op, const byte *record); int set_index_key_from_record(NdbOperation *op, const byte *record, @@ -706,6 +706,7 @@ private: ha_rows m_ops_pending; bool m_skip_auto_increment; bool m_blobs_pending; + my_ptrdiff_t m_blobs_offset; // memory for blobs in one tuple char *m_blobs_buffer; uint32 m_blobs_buffer_size; -- cgit v1.2.1 From a57fa1e2fe71be26aad95cd6a6dabb005692ea2b Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 11:44:54 +0400 Subject: Disable IM tests. --- mysql-test/t/disabled.def | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index b4bd53fb1bc..6c3df50011c 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -13,9 +13,9 @@ #events_stress : BUG#17619 2006-02-21 andrey Race conditions #events : BUG#17619 2006-02-21 andrey Race conditions #events_scheduling : BUG#19170 2006-04-26 andrey Test case of 19170 fails on some platforms. Has to be checked. -#im_instance_conf : Bug#20294 2006-06-06 monty Instance manager test im_instance_conf fails randomly -#im_options : Bug#20294 2006-06-06 monty Instance manager test im_instance_conf fails randomly -#im_life_cycle : Bug#20368 2006-06-10 alik im_life_cycle test fails +im_instance_conf : Bug#20294 2006-06-06 monty Instance manager test im_instance_conf fails randomly +im_options : Bug#20294 2006-06-06 monty Instance manager test im_instance_conf fails randomly +im_life_cycle : Bug#20368 2006-06-10 alik im_life_cycle test fails ndb_autodiscover : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog ndb_autodiscover2 : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog #ndb_binlog_discover : BUG#19395 2006-04-28 tomas/knielsen mysqld does not always detect cluster shutdown -- cgit v1.2.1 From 4891ddc977d80aec3ccefae3b89a0999400a173c Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 09:51:08 +0200 Subject: Fixed failed automerge --- sql/ha_ndbcluster.h | 1 - 1 file changed, 1 deletion(-) diff --git a/sql/ha_ndbcluster.h b/sql/ha_ndbcluster.h index c5f441f8959..df3c5791713 100644 --- a/sql/ha_ndbcluster.h +++ b/sql/ha_ndbcluster.h @@ -798,7 +798,6 @@ private: int get_ndb_value(NdbOperation*, Field *field, uint fieldnr, byte*); int get_ndb_partition_id(NdbOperation *); friend int g_get_ndb_blobs_value(NdbBlob *ndb_blob, void *arg); - int get_ndb_blobs_value(NdbBlob *last_ndb_blob, my_ptrdiff_t ptrdiff); int set_primary_key(NdbOperation *op, const byte *key); int set_primary_key_from_record(NdbOperation *op, const byte *record); int set_index_key_from_record(NdbOperation *op, const byte *record, -- cgit v1.2.1 From 4e138572a01afc7e88f1b3040d3c4a81012e298f Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 13:00:19 +0500 Subject: Bug#20086: Can't get data from key partitioned tables with VARCHAR key The problem appeared because the same values produced different hash during INSERT and SELECT for VARCHAR data type. Fix: VARCHAR required special treatment to avoid hashing of length bytes (leftmost one or two bytes) as well as trailing bytes beyond real length, which could contain garbage. Fix is done by introducing hash() - new method in the Field class. mysql-test/r/partition_innodb.result: Adding test case mysql-test/r/partition_pruning.result: Fixing test results (results differ due to changes in hash function) mysql-test/t/partition_innodb.test: Adding test case sql/field.cc: Adding generic hash() method, and a special method for VARCHAR. sql/field.h: Adding prototypes for new methods sql/key.cc: Mark columns for write before executinf of set_key_image(). Thanks for Mikael for suggesting this fix. sql/sql_partition.cc: Removing old hash code. Using new methid field->hash() instead. --- mysql-test/r/partition_innodb.result | 15 +++++++++++++++ mysql-test/r/partition_pruning.result | 2 +- mysql-test/t/partition_innodb.test | 12 ++++++++++++ sql/field.cc | 30 ++++++++++++++++++++++++++++++ sql/field.h | 3 +++ sql/key.cc | 4 ++++ sql/sql_partition.cc | 17 +++-------------- 7 files changed, 68 insertions(+), 15 deletions(-) diff --git a/mysql-test/r/partition_innodb.result b/mysql-test/r/partition_innodb.result index 5b1221dd64c..5e5931fdbf8 100644 --- a/mysql-test/r/partition_innodb.result +++ b/mysql-test/r/partition_innodb.result @@ -92,3 +92,18 @@ DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t0_aux; DROP TABLE IF EXISTS t0_definition; DROP TABLE IF EXISTS t0_template; +create table t1 (id varchar(64) primary key) engine=innodb +partition by key(id) partitions 5; +insert into t1 values ('a'); +insert into t1 values ('aa'); +insert into t1 values ('aaa'); +select * from t1 where id = 'a'; +id +a +select * from t1 where id = 'aa'; +id +aa +select * from t1 where id = 'aaa'; +id +aaa +drop table t1; diff --git a/mysql-test/r/partition_pruning.result b/mysql-test/r/partition_pruning.result index 950a83c6d4f..ee294242bf7 100644 --- a/mysql-test/r/partition_pruning.result +++ b/mysql-test/r/partition_pruning.result @@ -31,7 +31,7 @@ id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t2 p0,p1 ALL NULL NULL NULL NULL 3 Using where explain partitions select * from t2 where a=1 and b=1; id select_type table partitions type possible_keys key key_len ref rows Extra -1 SIMPLE t2 p0 ALL NULL NULL NULL NULL 3 Using where +1 SIMPLE t2 p0 ALL NULL NULL NULL NULL 2 Using where create table t3 ( a int ) diff --git a/mysql-test/t/partition_innodb.test b/mysql-test/t/partition_innodb.test index 6a95dd7c8b0..fb20f573a79 100644 --- a/mysql-test/t/partition_innodb.test +++ b/mysql-test/t/partition_innodb.test @@ -66,3 +66,15 @@ DROP TABLE IF EXISTS t0_definition; DROP TABLE IF EXISTS t0_template; --enable_warnings +# +# Bug#20086: Can't get data from key partitioned tables with VARCHAR key +# +create table t1 (id varchar(64) primary key) engine=innodb +partition by key(id) partitions 5; +insert into t1 values ('a'); +insert into t1 values ('aa'); +insert into t1 values ('aaa'); +select * from t1 where id = 'a'; +select * from t1 where id = 'aa'; +select * from t1 where id = 'aaa'; +drop table t1; diff --git a/sql/field.cc b/sql/field.cc index b51e5b63779..0105c780d12 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -1243,6 +1243,21 @@ uint Field::offset() } +void Field::hash(ulong *nr, ulong *nr2) +{ + if (is_null()) + { + *nr^= (*nr << 1) | 1; + } + else + { + uint len= pack_length(); + CHARSET_INFO *cs= charset(); + cs->coll->hash_sort(cs, (uchar*) ptr, len, nr, nr2); + } +} + + void Field::copy_from_tmp(int row_offset) { memcpy(ptr,ptr+row_offset,pack_length()); @@ -6923,6 +6938,21 @@ uint Field_varstring::is_equal(create_field *new_field) } +void Field_varstring::hash(ulong *nr, ulong *nr2) +{ + if (is_null()) + { + *nr^= (*nr << 1) | 1; + } + else + { + uint len= length_bytes == 1 ? (uint) (uchar) *ptr : uint2korr(ptr); + CHARSET_INFO *cs= charset(); + cs->coll->hash_sort(cs, (uchar*) ptr + length_bytes, len, nr, nr2); + } +} + + /**************************************************************************** ** blob type ** A blob is saved as a length and a pointer. The length is stored in the diff --git a/sql/field.h b/sql/field.h index 2ac7ec2c69d..6012e6cdd70 100644 --- a/sql/field.h +++ b/sql/field.h @@ -351,6 +351,8 @@ public: return field_length / charset()->mbmaxlen; } + /* Hash value */ + virtual void hash(ulong *nr, ulong *nr2); friend bool reopen_table(THD *,struct st_table *,bool); friend int cre_myisam(my_string name, register TABLE *form, uint options, ulonglong auto_increment_value); @@ -1120,6 +1122,7 @@ public: char *new_ptr, uchar *new_null_ptr, uint new_null_bit); uint is_equal(create_field *new_field); + void hash(ulong *nr, ulong *nr2); }; diff --git a/sql/key.cc b/sql/key.cc index 11dd267875f..69557d971e8 100644 --- a/sql/key.cc +++ b/sql/key.cc @@ -210,9 +210,13 @@ void key_restore(byte *to_record, byte *from_key, KEY *key_info, } else if (key_part->key_part_flag & HA_VAR_LENGTH_PART) { + my_bitmap_map *old_map; key_length-= HA_KEY_BLOB_LENGTH; length= min(key_length, key_part->length); + old_map= dbug_tmp_use_all_columns(key_part->field->table, + key_part->field->table->write_set); key_part->field->set_key_image((char *) from_key, length); + dbug_tmp_restore_column_map(key_part->field->table->write_set, old_map); from_key+= HA_KEY_BLOB_LENGTH; } else diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index 00c15c2dbca..8eb9bfa1782 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -2103,26 +2103,15 @@ static inline longlong part_val_int(Item *item_expr) static uint32 calculate_key_value(Field **field_array) { - uint32 hashnr= 0; + ulong nr1= 1; ulong nr2= 4; do { Field *field= *field_array; - if (field->is_null()) - { - hashnr^= (hashnr << 1) | 1; - } - else - { - uint len= field->pack_length(); - ulong nr1= 1; - CHARSET_INFO *cs= field->charset(); - cs->coll->hash_sort(cs, (uchar*)field->ptr, len, &nr1, &nr2); - hashnr^= (uint32)nr1; - } + field->hash(&nr1, &nr2); } while (*(++field_array)); - return hashnr; + return (uint32) nr1; } -- cgit v1.2.1 From 6c787151613ad1d443b43389d534861b8bf757e4 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 12:12:46 +0300 Subject: Bug #20482: failure on Create join view with sources views/tables in different schemas The function check_one_table_access() called to check access to tables in SELECT/INSERT/UPDATE was doing additional checks/modifications that don't hold in the context of setup_tables_and_check_access(). That's why the check_one_table() was split into two : the functionality needed by setup_tables_and_check_access() into check_single_table_access() and the rest of the functionality stays in check_one_table_access() that is made to call the new check_single_table_access() function. mysql-test/r/view_grant.result: Bug #20482: failure on Create join view with sources views/tables in different schemas - test suite for the bug mysql-test/t/view_grant.test: Bug #20482: failure on Create join view with sources views/tables in different schemas - test suite for the bug sql/mysql_priv.h: Bug #20482: failure on Create join view with sources views/tables in different schemas - check_one_table_access split into 2 sql/sql_base.cc: Bug #20482: failure on Create join view with sources views/tables in different schemas - the new sub-function called sql/sql_parse.cc: Bug #20482: failure on Create join view with sources views/tables in different schemas - check_one_table_access() split into two : check_single_table_access() to actually check access to the table(ro) and check_one_table_access() that calls check_single_table_access() and checks also the tables belonging to sub selects or implicitly opened tables. --- mysql-test/r/view_grant.result | 12 ++++++++++++ mysql-test/t/view_grant.test | 21 +++++++++++++++++++++ sql/mysql_priv.h | 2 ++ sql/sql_base.cc | 2 +- sql/sql_parse.cc | 40 +++++++++++++++++++++++++++++++--------- 5 files changed, 67 insertions(+), 10 deletions(-) diff --git a/mysql-test/r/view_grant.result b/mysql-test/r/view_grant.result index f6559e6f838..11161d0c844 100644 --- a/mysql-test/r/view_grant.result +++ b/mysql-test/r/view_grant.result @@ -618,3 +618,15 @@ ERROR HY000: There is no 'no-such-user'@'localhost' registered DROP VIEW v; DROP TABLE t1; USE test; +CREATE DATABASE test1; +CREATE DATABASE test2; +CREATE TABLE test1.t0 (a VARCHAR(20)); +CREATE TABLE test2.t1 (a VARCHAR(20)); +CREATE VIEW test2.t3 AS SELECT * FROM test1.t0; +CREATE OR REPLACE VIEW test.v1 AS +SELECT ta.a AS col1, tb.a AS col2 FROM test2.t3 ta, test2.t1 tb; +DROP VIEW test.v1; +DROP VIEW test2.t3; +DROP TABLE test2.t1, test1.t0; +DROP DATABASE test2; +DROP DATABASE test1; diff --git a/mysql-test/t/view_grant.test b/mysql-test/t/view_grant.test index 4663a667d25..9d23bfa6197 100644 --- a/mysql-test/t/view_grant.test +++ b/mysql-test/t/view_grant.test @@ -807,3 +807,24 @@ SELECT * FROM v; DROP VIEW v; DROP TABLE t1; USE test; + +# +# BUG#20482: failure on Create join view with sources views/tables +# in different schemas +# +--disable_warnings +CREATE DATABASE test1; +CREATE DATABASE test2; +--enable_warnings + +CREATE TABLE test1.t0 (a VARCHAR(20)); +CREATE TABLE test2.t1 (a VARCHAR(20)); +CREATE VIEW test2.t3 AS SELECT * FROM test1.t0; +CREATE OR REPLACE VIEW test.v1 AS + SELECT ta.a AS col1, tb.a AS col2 FROM test2.t3 ta, test2.t1 tb; + +DROP VIEW test.v1; +DROP VIEW test2.t3; +DROP TABLE test2.t1, test1.t0; +DROP DATABASE test2; +DROP DATABASE test1; diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 6d39f2f7440..3bb371b6004 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -513,6 +513,8 @@ class THD; void close_thread_tables(THD *thd, bool locked=0, bool skip_derived=0); bool check_one_table_access(THD *thd, ulong privilege, TABLE_LIST *tables); +bool check_single_table_access(THD *thd, ulong privilege, + TABLE_LIST *tables); bool check_routine_access(THD *thd,ulong want_access,char *db,char *name, bool is_proc, bool no_errors); bool check_some_access(THD *thd, ulong want_access, TABLE_LIST *table); diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 7fe626c8f2d..f01ab4cf74f 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -4545,7 +4545,7 @@ bool setup_tables_and_check_access(THD *thd, for (; leaves_tmp; leaves_tmp= leaves_tmp->next_leaf) if (leaves_tmp->belong_to_view && - check_one_table_access(thd, want_access, leaves_tmp)) + check_single_table_access(thd, want_access, leaves_tmp)) { tables->hide_view_error(thd); return TRUE; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 37e45e999b3..6ec8bd65a90 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -4978,11 +4978,10 @@ error: /* - Check grants for commands which work only with one table and all other - tables belonging to subselects or implicitly opened tables. + Check grants for commands which work only with one table. SYNOPSIS - check_one_table_access() + check_single_table_access() thd Thread handler privilege requested privilege all_tables global table list of query @@ -4992,7 +4991,8 @@ error: 1 - access denied, error is sent to client */ -bool check_one_table_access(THD *thd, ulong privilege, TABLE_LIST *all_tables) +bool check_single_table_access(THD *thd, ulong privilege, + TABLE_LIST *all_tables) { Security_context * backup_ctx= thd->security_ctx; @@ -5010,19 +5010,41 @@ bool check_one_table_access(THD *thd, ulong privilege, TABLE_LIST *all_tables) goto deny; thd->security_ctx= backup_ctx; + return 0; + +deny: + thd->security_ctx= backup_ctx; + return 1; +} + +/* + Check grants for commands which work only with one table and all other + tables belonging to subselects or implicitly opened tables. + + SYNOPSIS + check_one_table_access() + thd Thread handler + privilege requested privilege + all_tables global table list of query + + RETURN + 0 - OK + 1 - access denied, error is sent to client +*/ + +bool check_one_table_access(THD *thd, ulong privilege, TABLE_LIST *all_tables) +{ + if (check_single_table_access (thd,privilege,all_tables)) + return 1; /* Check rights on tables of subselects and implictly opened tables */ TABLE_LIST *subselects_tables; if ((subselects_tables= all_tables->next_global)) { if ((check_table_access(thd, SELECT_ACL, subselects_tables, 0))) - goto deny; + return 1; } return 0; - -deny: - thd->security_ctx= backup_ctx; - return 1; } -- cgit v1.2.1 From f4e2516a1a010b95b437f89f0b0c6cb4256ca733 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 14:53:40 +0500 Subject: after merge fixes mysql-test/r/partition_error.result: result fix sql/log.cc: use open_slow_log() instead of open_query_log() for slow query log sql/log.h: after merge fix sql/set_var.cc: after merge fix use open_slow_log() instead of open_query_log() for slow query log --- mysql-test/r/partition_error.result | 4 ++-- sql/log.cc | 2 +- sql/log.h | 8 ++++---- sql/set_var.cc | 15 +++++++++++++-- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/mysql-test/r/partition_error.result b/mysql-test/r/partition_error.result index 39f0cf9ca55..3abd39c3d8c 100644 --- a/mysql-test/r/partition_error.result +++ b/mysql-test/r/partition_error.result @@ -8,7 +8,7 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY (a) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) */ drop table t1; create table t1 (a int) engine = innodb @@ -21,7 +21,7 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1 PARTITION BY LIST (a) (PARTITION p0 VALUES IN (0) ENGINE = InnoDB) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION p0 VALUES IN (0) ENGINE = InnoDB) */ drop table t1; partition by list (a) partitions 3 diff --git a/sql/log.cc b/sql/log.cc index b6b1eb721bb..9fe529f1456 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -936,7 +936,7 @@ bool LOGGER::activate_log_handler(THD* thd, uint log_type) if ((res= reopen_log_table(log_type))) goto err; file_log_handler->get_mysql_slow_log()-> - open_query_log(sys_var_slow_log_path.value); + open_slow_log(sys_var_slow_log_path.value); init_slow_log(log_output_options); opt_slow_log= TRUE; } diff --git a/sql/log.h b/sql/log.h index 80992a7910a..b4818a370d7 100644 --- a/sql/log.h +++ b/sql/log.h @@ -467,8 +467,8 @@ public: CHARSET_INFO *client_cs); void flush(); void init_pthread_objects(); - MYSQL_LOG *get_mysql_slow_log() { return &mysql_slow_log; } - MYSQL_LOG *get_mysql_log() { return &mysql_log; } + MYSQL_QUERY_LOG *get_mysql_slow_log() { return &mysql_slow_log; } + MYSQL_QUERY_LOG *get_mysql_log() { return &mysql_log; } }; @@ -543,13 +543,13 @@ public: void init_general_log(uint general_log_printer); void deactivate_log_handler(THD* thd, uint log_type); bool activate_log_handler(THD* thd, uint log_type); - MYSQL_LOG *get_slow_log_file_handler() + MYSQL_QUERY_LOG *get_slow_log_file_handler() { if (file_log_handler) return file_log_handler->get_mysql_slow_log(); return NULL; } - MYSQL_LOG *get_log_file_handler() + MYSQL_QUERY_LOG *get_log_file_handler() { if (file_log_handler) return file_log_handler->get_mysql_log(); diff --git a/sql/set_var.cc b/sql/set_var.cc index 33bff8cc1f1..ce4994d2706 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -2602,7 +2602,7 @@ bool update_sys_var_str_path(THD *thd, sys_var_str *var_str, set_var *var, const char *log_ext, bool log_state, uint log_type) { - MYSQL_LOG *file_log; + MYSQL_QUERY_LOG *file_log; char buff[FN_REFLEN]; char *res= 0, *old_value=(char *)(var ? var->value->str_value.ptr() : 0); bool result= 0; @@ -2640,7 +2640,18 @@ bool update_sys_var_str_path(THD *thd, sys_var_str *var_str, var_str->value_length= str_length; my_free(old_value, MYF(MY_ALLOW_ZERO_PTR)); if (file_log && log_state) - file_log->open_query_log(sys_var_general_log_path.value); + { + switch (log_type) { + case QUERY_LOG_SLOW: + file_log->open_slow_log(sys_var_general_log_path.value); + break; + case QUERY_LOG_GENERAL: + file_log->open_query_log(sys_var_general_log_path.value); + break; + default: + DBUG_ASSERT(0); + } + } logger.unlock(); pthread_mutex_unlock(&LOCK_global_system_variables); -- cgit v1.2.1 From ea3392fb976298d4e4451daaeab6d064c77df741 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 13:01:00 +0300 Subject: manual merge mysql-test/r/view_grant.result: merged mysql-test/t/view_grant.test: merged --- mysql-test/r/view_grant.result | 29 +++++++++++++++++++++++++++++ mysql-test/t/view_grant.test | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) diff --git a/mysql-test/r/view_grant.result b/mysql-test/r/view_grant.result index 11161d0c844..0431957f602 100644 --- a/mysql-test/r/view_grant.result +++ b/mysql-test/r/view_grant.result @@ -618,6 +618,35 @@ ERROR HY000: There is no 'no-such-user'@'localhost' registered DROP VIEW v; DROP TABLE t1; USE test; +CREATE USER mysqltest_db1@localhost identified by 'PWD'; +GRANT ALL ON mysqltest_db1.* TO mysqltest_db1@localhost WITH GRANT OPTION; +CREATE SCHEMA mysqltest_db1 ; +USE mysqltest_db1 ; +CREATE TABLE t1 (f1 INTEGER); +CREATE VIEW view1 AS +SELECT * FROM t1; +SHOW CREATE VIEW view1; +View Create View +view1 CREATE ALGORITHM=UNDEFINED DEFINER=`mysqltest_db1`@`localhost` SQL SECURITY DEFINER VIEW `view1` AS select `t1`.`f1` AS `f1` from `t1` +CREATE VIEW view2 AS +SELECT * FROM view1; +# Here comes a suspicious warning +SHOW CREATE VIEW view2; +View Create View +view2 CREATE ALGORITHM=UNDEFINED DEFINER=`mysqltest_db1`@`localhost` SQL SECURITY DEFINER VIEW `view2` AS select `view1`.`f1` AS `f1` from `view1` +# But the view view2 is usable +SELECT * FROM view2; +f1 +CREATE VIEW view3 AS +SELECT * FROM view2; +SELECT * from view3; +f1 +DROP VIEW mysqltest_db1.view3; +DROP VIEW mysqltest_db1.view2; +DROP VIEW mysqltest_db1.view1; +DROP TABLE mysqltest_db1.t1; +DROP SCHEMA mysqltest_db1; +DROP USER mysqltest_db1@localhost; CREATE DATABASE test1; CREATE DATABASE test2; CREATE TABLE test1.t0 (a VARCHAR(20)); diff --git a/mysql-test/t/view_grant.test b/mysql-test/t/view_grant.test index 9d23bfa6197..429a2af6bac 100644 --- a/mysql-test/t/view_grant.test +++ b/mysql-test/t/view_grant.test @@ -808,6 +808,44 @@ DROP VIEW v; DROP TABLE t1; USE test; +# +# Bug#20363: Create view on just created view is now denied +# +eval CREATE USER mysqltest_db1@localhost identified by 'PWD'; +eval GRANT ALL ON mysqltest_db1.* TO mysqltest_db1@localhost WITH GRANT OPTION; + +# The session with the non root user is needed. +--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK +connect (session1,localhost,mysqltest_db1,PWD,test); + +CREATE SCHEMA mysqltest_db1 ; +USE mysqltest_db1 ; + +CREATE TABLE t1 (f1 INTEGER); + +CREATE VIEW view1 AS +SELECT * FROM t1; +SHOW CREATE VIEW view1; + +CREATE VIEW view2 AS +SELECT * FROM view1; +--echo # Here comes a suspicious warning +SHOW CREATE VIEW view2; +--echo # But the view view2 is usable +SELECT * FROM view2; + +CREATE VIEW view3 AS +SELECT * FROM view2; + +SELECT * from view3; + +connection default; +DROP VIEW mysqltest_db1.view3; +DROP VIEW mysqltest_db1.view2; +DROP VIEW mysqltest_db1.view1; +DROP TABLE mysqltest_db1.t1; +DROP SCHEMA mysqltest_db1; +DROP USER mysqltest_db1@localhost; # # BUG#20482: failure on Create join view with sources views/tables # in different schemas -- cgit v1.2.1 From 8103b543e70ffee8423587ac8d75be403ed05605 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 13:24:06 +0300 Subject: Fixed typo that was forgot in last changeset. --- sql/sql_parse.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 680e0dc977f..d5397cbbac2 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -699,7 +699,7 @@ void init_update_queries(void) bool is_update_query(enum enum_sql_command command) { DBUG_ASSERT(command >= 0 && command <= SQLCOM_END); - return (sql_command_flags[command] & CF_CHANGES_DATA) == 0; + return (sql_command_flags[command] & CF_CHANGES_DATA) != 0; } /* -- cgit v1.2.1 From 860c104d87424cb140d937fa2a19a5d406e264e9 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 12:27:24 +0200 Subject: BUG#20598 Fix race between cleanup and thread kill at server shutdown that would sometimes prevent proper cleanup, leading to Valgrind warnings. sql/mysqld.cc: Move logger cleanup to avoid races with thread kill. --- sql/mysqld.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 87f3cd04605..fb0ef81bda5 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -1266,13 +1266,13 @@ void clean_up(bool print_message) MYF(MY_WME | MY_FAE | MY_ALLOW_ZERO_PTR)); DBUG_PRINT("quit", ("Error messages freed")); /* Tell main we are ready */ + logger.cleanup_end(); (void) pthread_mutex_lock(&LOCK_thread_count); DBUG_PRINT("quit", ("got thread count lock")); ready_to_exit=1; /* do the broadcast inside the lock to ensure that my_end() is not called */ (void) pthread_cond_broadcast(&COND_thread_count); (void) pthread_mutex_unlock(&LOCK_thread_count); - logger.cleanup_end(); /* The following lines may never be executed as the main thread may have -- cgit v1.2.1 From dce98ec42d7cc4f3a38773b10f9a320e89221ce1 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 12:52:59 +0200 Subject: BUG#20578 Backport Valgrind suppression from mysql-5.1: D 1.4 05/11/23 22:44:54+02:00 monty@mysql.com 5 4 12/0/154 P mysql-test/valgrind.supp C Remove warning that may happens becasue threads dies in different order mysql-test/valgrind.supp: Add suppression for Valgrind warning. --- mysql-test/valgrind.supp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/mysql-test/valgrind.supp b/mysql-test/valgrind.supp index 65c5a82db36..24426727968 100644 --- a/mysql-test/valgrind.supp +++ b/mysql-test/valgrind.supp @@ -133,6 +133,18 @@ fun:gzflush } +# +# Warning from my_thread_init becasue mysqld dies before kill thread exists +# + +{ + my_thread_init kill thread memory loss second + Memcheck:Leak + fun:calloc + fun:my_thread_init + fun:kill_server_thread +} + # # Leaks reported in _dl_* internal functions on Linux amd64 / glibc2.3.2. # -- cgit v1.2.1 From 73c0d7c061ac6bef9effe98a5492de42d38c2382 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 13:39:04 +0200 Subject: ndb - bug#20007 varpages did not get freed on drop table storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp: Add continueb for freeing varpages storage/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp: Add continueb for freeing varpages storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp: add dropping of varpages storage/ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp: Add continueb for freeing varpages storage/ndb/src/kernel/blocks/dbtup/DbtupVarAlloc.cpp: Add list of varpage chunks storage/ndb/src/kernel/blocks/dbtup/tuppage.hpp: Add list of varpage chunks --- storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp | 3 ++ storage/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp | 6 ++++ storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp | 41 +++++++++++++++++++++- .../ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp | 5 +++ .../ndb/src/kernel/blocks/dbtup/DbtupVarAlloc.cpp | 7 ++++ storage/ndb/src/kernel/blocks/dbtup/tuppage.hpp | 10 ++++-- 6 files changed, 69 insertions(+), 3 deletions(-) diff --git a/storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp b/storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp index 4ff6e069963..09e7809de99 100644 --- a/storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp +++ b/storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp @@ -246,6 +246,7 @@ inline const Uint32* ALIGN_WORD(const void* ptr) #define ZTUP_SCAN 10 #define ZFREE_EXTENT 11 #define ZUNMAP_PAGES 12 +#define ZFREE_VAR_PAGES 13 #define ZSCAN_PROCEDURE 0 #define ZCOPY_PROCEDURE 2 @@ -620,6 +621,7 @@ struct Fragrecord { Uint32 m_tablespace_id; Uint32 m_logfile_group_id; Disk_alloc_info m_disk_alloc_info; + Uint32 m_var_page_chunks; }; typedef Ptr FragrecordPtr; @@ -2335,6 +2337,7 @@ private: void releaseFragment(Signal* signal, Uint32 tableId); + void drop_fragment_free_var_pages(Signal*); void drop_fragment_free_exent(Signal*, TablerecPtr, FragrecordPtr, Uint32); void drop_fragment_unmap_pages(Signal*, TablerecPtr, FragrecordPtr, Uint32); void drop_fragment_unmap_page_callback(Signal* signal, Uint32, Uint32); diff --git a/storage/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp b/storage/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp index 8a68905cef9..c59cf4015af 100644 --- a/storage/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp +++ b/storage/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp @@ -227,6 +227,12 @@ void Dbtup::execCONTINUEB(Signal* signal) drop_fragment_unmap_pages(signal, tabPtr, fragPtr, signal->theData[3]); return; } + case ZFREE_VAR_PAGES: + { + ljam(); + drop_fragment_free_var_pages(signal); + return; + } default: ndbrequire(false); break; diff --git a/storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp b/storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp index 5cfd1f8cb77..f779c93ec94 100644 --- a/storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp +++ b/storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp @@ -140,6 +140,7 @@ void Dbtup::execTUPFRAGREQ(Signal* signal) regFragPtr.p->m_undo_complete= false; regFragPtr.p->m_lcp_scan_op = RNIL; regFragPtr.p->m_lcp_keep_list = RNIL; + regFragPtr.p->m_var_page_chunks = RNIL; Uint32 noAllocatedPages= allocFragPages(regFragPtr.p, pages); @@ -970,7 +971,7 @@ Dbtup::drop_fragment_unmap_pages(Signal *signal, case -1: break; default: - ndbrequire(res == pagePtr.i); + ndbrequire((Uint32)res == pagePtr.i); drop_fragment_unmap_page_callback(signal, pos, res); } return; @@ -1052,6 +1053,44 @@ Dbtup::drop_fragment_free_exent(Signal *signal, } } + signal->theData[0] = ZFREE_VAR_PAGES; + signal->theData[1] = tabPtr.i; + signal->theData[2] = fragPtr.i; + sendSignal(reference(), GSN_CONTINUEB, signal, 3, JBB); +} + +void +Dbtup::drop_fragment_free_var_pages(Signal* signal) +{ + ljam(); + Uint32 tableId = signal->theData[1]; + Uint32 fragPtrI = signal->theData[2]; + + TablerecPtr tabPtr; + tabPtr.i= tableId; + ptrCheckGuard(tabPtr, cnoOfTablerec, tablerec); + + FragrecordPtr fragPtr; + fragPtr.i = fragPtrI; + ptrCheckGuard(fragPtr, cnoOfFragrec, fragrecord); + + PagePtr pagePtr; + if ((pagePtr.i = fragPtr.p->m_var_page_chunks) != RNIL) + { + c_page_pool.getPtr(pagePtr); + Var_page* page = (Var_page*)pagePtr.p; + fragPtr.p->m_var_page_chunks = page->next_chunk; + + Uint32 sz = page->chunk_size; + returnCommonArea(pagePtr.i, sz); + + signal->theData[0] = ZFREE_VAR_PAGES; + signal->theData[1] = tabPtr.i; + signal->theData[2] = fragPtr.i; + sendSignal(cownref, GSN_CONTINUEB, signal, 3, JBB); + return; + } + releaseFragPages(fragPtr.p); Uint32 i; diff --git a/storage/ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp b/storage/ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp index db6f5e3b185..ef90462cfb2 100644 --- a/storage/ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp +++ b/storage/ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp @@ -299,6 +299,11 @@ void Dbtup::releaseFragPages(Fragrecord* regFragPtr) LocalDLList tmp(c_page_pool, regFragPtr->thFreeFirst); tmp.remove(); } + + { + LocalSLList tmp(c_page_pool, regFragPtr->m_empty_pages); + tmp.remove(); + } return; } else { diff --git a/storage/ndb/src/kernel/blocks/dbtup/DbtupVarAlloc.cpp b/storage/ndb/src/kernel/blocks/dbtup/DbtupVarAlloc.cpp index 94bd75108a4..52ab66b5c0e 100644 --- a/storage/ndb/src/kernel/blocks/dbtup/DbtupVarAlloc.cpp +++ b/storage/ndb/src/kernel/blocks/dbtup/DbtupVarAlloc.cpp @@ -323,6 +323,13 @@ Dbtup::get_empty_var_page(Fragrecord* fragPtr) ptr.p->nextList = RNIL; list.add(ret.i + 1, ptr); } + + c_page_pool.getPtr(ret); + + Var_page* page = (Var_page*)ret.p; + page->chunk_size = cnt; + page->next_chunk = fragPtr->m_var_page_chunks; + fragPtr->m_var_page_chunks = ret.i; return ret.i; } diff --git a/storage/ndb/src/kernel/blocks/dbtup/tuppage.hpp b/storage/ndb/src/kernel/blocks/dbtup/tuppage.hpp index 04ed18da58d..4b4df909061 100644 --- a/storage/ndb/src/kernel/blocks/dbtup/tuppage.hpp +++ b/storage/ndb/src/kernel/blocks/dbtup/tuppage.hpp @@ -107,8 +107,14 @@ struct Tup_varsize_page Uint32 page_state; Uint32 next_page; Uint32 prev_page; - Uint32 first_cluster_page; - Uint32 last_cluster_page; + union { + Uint32 first_cluster_page; + Uint32 chunk_size; + }; + union { + Uint32 last_cluster_page; + Uint32 next_chunk; + }; Uint32 next_cluster_page; Uint32 prev_cluster_page; Uint32 frag_page_id; -- cgit v1.2.1 From e7e9cc25025250bd886ca75ff1f34ed05d8fe912 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 14:00:26 +0200 Subject: ndb - bug#20197 also close scan which are in "delivered" state, as it's impossible to release locks afterwards backport from 5.1 ndb/src/kernel/blocks/dbtc/DbtcMain.cpp: ndb - bug#20197 also close scan which are in "delivered" state, as it's impossible to release locks afterwards --- ndb/src/kernel/blocks/dbtc/DbtcMain.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp b/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp index 2bd61296554..a71942f5cc8 100644 --- a/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp +++ b/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp @@ -6978,6 +6978,18 @@ void Dbtc::checkScanActiveInFailedLqh(Signal* signal, found = true; } } + + ScanFragList deliv(c_scan_frag_pool, scanptr.p->m_delivered_scan_frags); + for(deliv.first(ptr); !ptr.isNull(); deliv.next(ptr)) + { + jam(); + if (refToNode(ptr.p->lqhBlockref) == failedNodeId) + { + jam(); + found = true; + break; + } + } } if(found){ jam(); -- cgit v1.2.1 From 0cb8f6958cfcd386caca79839369d8c8df115f7c Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 16:02:51 +0400 Subject: Fix for BUG#20294: Instance manager test im_instance_conf fails randomly. The problem is that the test was affected by other running test-suites on the same box. The fix affects the test only, no code touched. mysql-test/r/im_instance_conf.result: Updated result file. mysql-test/t/disabled.def: Enable IM tests. mysql-test/t/im_instance_conf.imtest: Modify the test so that it does not depend on running test-suites on the same box. --- mysql-test/r/im_instance_conf.result | 83 ++++++++++++++++++++++++------------ mysql-test/t/disabled.def | 6 +-- mysql-test/t/im_instance_conf.imtest | 46 ++++++++++++++++---- 3 files changed, 96 insertions(+), 39 deletions(-) diff --git a/mysql-test/r/im_instance_conf.result b/mysql-test/r/im_instance_conf.result index efda9439f38..f68fcca25a3 100644 --- a/mysql-test/r/im_instance_conf.result +++ b/mysql-test/r/im_instance_conf.result @@ -13,7 +13,9 @@ Variable_name Value server_id 1 ---> connection: default -CREATE INSTANCE mysqld3; +CREATE INSTANCE mysqld3 +server_id = 3, +socket = "$MYSQL_TMP_DIR/mysqld_3.sock"; SHOW INSTANCES; instance_name state mysqld3 offline @@ -22,6 +24,7 @@ mysqld1 online -------------------------------------------------------------------- server_id = 1 server_id = 2 +server_id=3 -------------------------------------------------------------------- CREATE INSTANCE mysqld1; ERROR HY000: Instance already exists @@ -32,7 +35,10 @@ ERROR HY000: Instance already exists -------------------------------------------------------------------- nonguarded -------------------------------------------------------------------- -CREATE INSTANCE mysqld4 nonguarded; +CREATE INSTANCE mysqld4 +nonguarded, +server_id = 4, +socket = "$MYSQL_TMP_DIR/mysqld_4.sock"; SHOW INSTANCES; instance_name state mysqld3 offline @@ -46,7 +52,11 @@ nonguarded -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -CREATE INSTANCE mysqld5 test-A = 000, test-B = test; +CREATE INSTANCE mysqld5 +test-A = 000, +test-B = test, +server_id = 5, +socket = "$MYSQL_TMP_DIR/mysqld_5.sock"; SHOW INSTANCES; instance_name state mysqld1 online @@ -61,7 +71,11 @@ test-B=test -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -CREATE INSTANCE mysqld6 test-C1 = 10 , test-C2 = 02 ; +CREATE INSTANCE mysqld6 +test-C1 = 10 , +test-C2 = 02 , +server_id = 6, +socket = "$MYSQL_TMP_DIR/mysqld_6.sock"; SHOW INSTANCES; instance_name state mysqld1 online @@ -116,7 +130,11 @@ mysqld4 offline -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -CREATE INSTANCE mysqld9 test-1=" hello world ", test-2=' '; +CREATE INSTANCE mysqld9 +test-1=" hello world ", +test-2=' ', +server_id = 9, +socket = "$MYSQL_TMP_DIR/mysqld_9.sock"; SHOW INSTANCES; instance_name state mysqld1 online @@ -126,56 +144,67 @@ mysqld6 offline mysqld3 offline mysqld4 offline mysqld9 offline -CREATE INSTANCE mysqld9a test-3='\b\babc\sdef'; +CREATE INSTANCE mysqld10 +test-3='\b\babc\sdef', +server_id = 10, +socket = "$MYSQL_TMP_DIR/mysqld_10.sock"; SHOW INSTANCES; instance_name state mysqld1 online -mysqld9a offline +mysqld9 offline mysqld5 offline mysqld6 offline mysqld3 offline mysqld4 offline -mysqld9 offline +mysqld10 offline mysqld2 offline -CREATE INSTANCE mysqld9b test-4='abc\tdef', test-5='abc\ndef'; +CREATE INSTANCE mysqld11 +test-4='abc\tdef', +test-5='abc\ndef', +server_id = 11, +socket = "$MYSQL_TMP_DIR/mysqld_11.sock"; SHOW INSTANCES; instance_name state -mysqld9b offline -mysqld9a offline +mysqld1 online +mysqld11 offline mysqld5 offline mysqld6 offline mysqld3 offline mysqld4 offline -mysqld9 offline +mysqld10 offline mysqld2 offline -mysqld1 online -CREATE INSTANCE mysqld9c test-6="abc\rdef", test-7="abc\\def"; +mysqld9 offline +CREATE INSTANCE mysqld12 +test-6="abc\rdef", +test-7="abc\\def", +server_id = 12, +socket = "$MYSQL_TMP_DIR/mysqld_12.sock"; SHOW INSTANCES; instance_name state -mysqld9b offline -mysqld6 offline +mysqld1 online +mysqld9 offline mysqld5 offline -mysqld9c offline +mysqld6 offline mysqld3 offline mysqld4 offline -mysqld9 offline +mysqld10 offline mysqld2 offline -mysqld1 online -mysqld9a offline -CREATE INSTANCE mysqld10 test-bad=' \ '; +mysqld12 offline +mysqld11 offline +CREATE INSTANCE mysqld13 test-bad=' \ '; ERROR 42000: You have an error in your command syntax. Check the manual that corresponds to your MySQL Instance Manager version for the right syntax to use SHOW INSTANCES; instance_name state -mysqld9b offline -mysqld6 offline +mysqld1 online +mysqld9 offline mysqld5 offline -mysqld9c offline +mysqld6 offline mysqld3 offline mysqld4 offline -mysqld9 offline +mysqld10 offline mysqld2 offline -mysqld1 online -mysqld9a offline +mysqld12 offline +mysqld11 offline -------------------------------------------------------------------- test-1= hello world -------------------------------------------------------------------- diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index 96f31133e65..d0087568b58 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -13,9 +13,9 @@ #events_stress : BUG#17619 2006-02-21 andrey Race conditions #events : BUG#17619 2006-02-21 andrey Race conditions #events_scheduling : BUG#19170 2006-04-26 andrey Test case of 19170 fails on some platforms. Has to be checked. -im_instance_conf : Bug#20294 2006-06-06 monty Instance manager test im_instance_conf fails randomly -im_options : Bug#20294 2006-06-06 monty Instance manager test im_instance_conf fails randomly -im_life_cycle : Bug#20368 2006-06-10 alik im_life_cycle test fails +#im_instance_conf : Bug#20294 2006-06-06 monty Instance manager test im_instance_conf fails randomly +#im_options : Bug#20294 2006-06-06 monty Instance manager test im_instance_conf fails randomly +#im_life_cycle : Bug#20368 2006-06-10 alik im_life_cycle test fails ndb_autodiscover : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog ndb_autodiscover2 : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog #ndb_binlog_discover : BUG#19395 2006-04-28 tomas/knielsen mysqld does not always detect cluster shutdown diff --git a/mysql-test/t/im_instance_conf.imtest b/mysql-test/t/im_instance_conf.imtest index 17703fdd303..2cd7b955978 100644 --- a/mysql-test/t/im_instance_conf.imtest +++ b/mysql-test/t/im_instance_conf.imtest @@ -69,7 +69,9 @@ SHOW VARIABLES LIKE 'server_id'; # Check that CREATE INSTANCE succeeds for non-existing instance and also check # that both config file and internal configuration cache have been updated. -CREATE INSTANCE mysqld3; +CREATE INSTANCE mysqld3 + server_id = 3, + socket = "$MYSQL_TMP_DIR/mysqld_3.sock"; SHOW INSTANCES; @@ -99,7 +101,10 @@ CREATE INSTANCE mysqld3; --exec grep nonguarded $MYSQLTEST_VARDIR/im.cnf; --echo -------------------------------------------------------------------- -CREATE INSTANCE mysqld4 nonguarded; +CREATE INSTANCE mysqld4 + nonguarded, + server_id = 4, + socket = "$MYSQL_TMP_DIR/mysqld_4.sock"; SHOW INSTANCES; @@ -115,7 +120,11 @@ SHOW INSTANCES; --exec grep test-B $MYSQLTEST_VARDIR/im.cnf || true; --echo -------------------------------------------------------------------- -CREATE INSTANCE mysqld5 test-A = 000, test-B = test; +CREATE INSTANCE mysqld5 + test-A = 000, + test-B = test, + server_id = 5, + socket = "$MYSQL_TMP_DIR/mysqld_5.sock"; SHOW INSTANCES; @@ -135,7 +144,11 @@ SHOW INSTANCES; --exec grep test-C $MYSQLTEST_VARDIR/im.cnf || true; --echo -------------------------------------------------------------------- -CREATE INSTANCE mysqld6 test-C1 = 10 , test-C2 = 02 ; +CREATE INSTANCE mysqld6 + test-C1 = 10 , + test-C2 = 02 , + server_id = 6, + socket = "$MYSQL_TMP_DIR/mysqld_6.sock"; SHOW INSTANCES; @@ -183,22 +196,37 @@ SHOW INSTANCES; --exec grep test-4 $MYSQLTEST_VARDIR/im.cnf || true; --echo -------------------------------------------------------------------- -CREATE INSTANCE mysqld9 test-1=" hello world ", test-2=' '; +CREATE INSTANCE mysqld9 + test-1=" hello world ", + test-2=' ', + server_id = 9, + socket = "$MYSQL_TMP_DIR/mysqld_9.sock"; SHOW INSTANCES; -CREATE INSTANCE mysqld9a test-3='\b\babc\sdef'; +CREATE INSTANCE mysqld10 + test-3='\b\babc\sdef', + server_id = 10, + socket = "$MYSQL_TMP_DIR/mysqld_10.sock"; # test-3='abc def' SHOW INSTANCES; -CREATE INSTANCE mysqld9b test-4='abc\tdef', test-5='abc\ndef'; +CREATE INSTANCE mysqld11 + test-4='abc\tdef', + test-5='abc\ndef', + server_id = 11, + socket = "$MYSQL_TMP_DIR/mysqld_11.sock"; SHOW INSTANCES; -CREATE INSTANCE mysqld9c test-6="abc\rdef", test-7="abc\\def"; +CREATE INSTANCE mysqld12 + test-6="abc\rdef", + test-7="abc\\def", + server_id = 12, + socket = "$MYSQL_TMP_DIR/mysqld_12.sock"; # test-6=abc SHOW INSTANCES; --error ER_SYNTAX_ERROR -CREATE INSTANCE mysqld10 test-bad=' \ '; +CREATE INSTANCE mysqld13 test-bad=' \ '; SHOW INSTANCES; --echo -------------------------------------------------------------------- -- cgit v1.2.1 From 5c0cdea62341da75f0560216af1b363b156ed1ab Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 17:30:59 +0500 Subject: BUG#20357 - Got error 124 from storage engine using MIN and MAX functions in queries Using MAX()/MIN() on table with disabled indexes (by ALTER TABLE) results in error 124 (wrong index) from storage engine. The problem was that optimizer use disabled index to optimize MAX()/MIN(). Normally it must skip disabled index and perform table scan. This patch skips disabled indexes for min/max optimization. mysql-test/r/myisam.result: Test case for BUG#20357. mysql-test/t/myisam.test: Test case for BUG#20357. sql/opt_sum.cc: Skip disabled/ignored indexes for min/max optimization. --- mysql-test/r/myisam.result | 13 +++++++++++++ mysql-test/t/myisam.test | 12 ++++++++++++ sql/opt_sum.cc | 6 ++++++ 3 files changed, 31 insertions(+) diff --git a/mysql-test/r/myisam.result b/mysql-test/r/myisam.result index 3b4519e5444..91a5bb08c0f 100644 --- a/mysql-test/r/myisam.result +++ b/mysql-test/r/myisam.result @@ -748,3 +748,16 @@ select count(id1) from t1 where id2 = 10; count(id1) 5 drop table t1; +CREATE TABLE t1(a TINYINT, KEY(a)) ENGINE=MyISAM; +INSERT INTO t1 VALUES(1); +SELECT MAX(a) FROM t1 IGNORE INDEX(a); +MAX(a) +1 +ALTER TABLE t1 DISABLE KEYS; +SELECT MAX(a) FROM t1; +MAX(a) +1 +SELECT MAX(a) FROM t1 IGNORE INDEX(a); +MAX(a) +1 +DROP TABLE t1; diff --git a/mysql-test/t/myisam.test b/mysql-test/t/myisam.test index 7e4cc324b12..06f913111d3 100644 --- a/mysql-test/t/myisam.test +++ b/mysql-test/t/myisam.test @@ -705,4 +705,16 @@ select count(*) from t1 where id2 = 10; select count(id1) from t1 where id2 = 10; drop table t1; +# +# BUG##20357 - Got error 124 from storage engine using MIN and MAX functions +# in queries +# +CREATE TABLE t1(a TINYINT, KEY(a)) ENGINE=MyISAM; +INSERT INTO t1 VALUES(1); +SELECT MAX(a) FROM t1 IGNORE INDEX(a); +ALTER TABLE t1 DISABLE KEYS; +SELECT MAX(a) FROM t1; +SELECT MAX(a) FROM t1 IGNORE INDEX(a); +DROP TABLE t1; + # End of 4.1 tests diff --git a/sql/opt_sum.cc b/sql/opt_sum.cc index cfb5b3695a3..63373a8579a 100644 --- a/sql/opt_sum.cc +++ b/sql/opt_sum.cc @@ -673,6 +673,12 @@ static bool find_key_for_maxmin(bool max_fl, TABLE_REF *ref, { KEY_PART_INFO *part,*part_end; key_part_map key_part_to_use= 0; + /* + Perform a check if index is not disabled by ALTER TABLE + or IGNORE INDEX. + */ + if (!table->keys_in_use_for_query.is_set(idx)) + continue; uint jdx= 0; *prefix_len= 0; for (part= keyinfo->key_part, part_end= part+keyinfo->key_parts ; -- cgit v1.2.1 From d14f4cccf2119ee7355cdc9a773021937ac6d75c Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 18:16:07 +0500 Subject: Fix for bug #20601: rpl_ndb_log.test failure mysql-test/extra/rpl_tests/rpl_log.test: Fix for bug #20601: rpl_ndb_log.test failure - replace insignificant columns to make tests repeatable mysql-test/r/rpl_ndb_log.result: Fix for bug #20601: rpl_ndb_log.test failure - result adjusted mysql-test/r/rpl_row_log.result: Fix for bug #20601: rpl_ndb_log.test failure - result adjusted mysql-test/r/rpl_row_log_innodb.result: Fix for bug #20601: rpl_ndb_log.test failure - result adjusted --- mysql-test/extra/rpl_tests/rpl_log.test | 1 + mysql-test/r/rpl_ndb_log.result | 4 ++-- mysql-test/r/rpl_row_log.result | 4 ++-- mysql-test/r/rpl_row_log_innodb.result | 4 ++-- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/mysql-test/extra/rpl_tests/rpl_log.test b/mysql-test/extra/rpl_tests/rpl_log.test index cfbc8110d06..cc3a9b4ffb5 100644 --- a/mysql-test/extra/rpl_tests/rpl_log.test +++ b/mysql-test/extra/rpl_tests/rpl_log.test @@ -142,6 +142,7 @@ set insert_id=5; insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); --replace_result $VERSION VERSION --replace_column 2 # 5 # +--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ show binlog events; select * from t1; drop table t1; diff --git a/mysql-test/r/rpl_ndb_log.result b/mysql-test/r/rpl_ndb_log.result index b88af325397..e0135a94c63 100644 --- a/mysql-test/r/rpl_ndb_log.result +++ b/mysql-test/r/rpl_ndb_log.result @@ -140,8 +140,8 @@ insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); show binlog events; Log_name Pos Event_type Server_id End_log_pos Info slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 -slave-bin.000001 # Table_map 2 # table_id: 30 (test.t1) -slave-bin.000001 # Write_rows 2 # table_id: 30 flags: STMT_END_F +slave-bin.000001 # Table_map 2 # table_id: # (test.t1) +slave-bin.000001 # Write_rows 2 # table_id: # flags: STMT_END_F select * from t1; a b 1 1 diff --git a/mysql-test/r/rpl_row_log.result b/mysql-test/r/rpl_row_log.result index 609f9376efd..89163e1e37b 100644 --- a/mysql-test/r/rpl_row_log.result +++ b/mysql-test/r/rpl_row_log.result @@ -108,8 +108,8 @@ insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); show binlog events; Log_name Pos Event_type Server_id End_log_pos Info slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 -slave-bin.000001 # Table_map 2 # table_id: 21 (test.t1) -slave-bin.000001 # Write_rows 2 # table_id: 21 flags: STMT_END_F +slave-bin.000001 # Table_map 2 # table_id: # (test.t1) +slave-bin.000001 # Write_rows 2 # table_id: # flags: STMT_END_F select * from t1; a b 1 1 diff --git a/mysql-test/r/rpl_row_log_innodb.result b/mysql-test/r/rpl_row_log_innodb.result index b47dff40454..3bcd8a6a0fb 100644 --- a/mysql-test/r/rpl_row_log_innodb.result +++ b/mysql-test/r/rpl_row_log_innodb.result @@ -116,8 +116,8 @@ insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); show binlog events; Log_name Pos Event_type Server_id End_log_pos Info slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 -slave-bin.000001 # Table_map 2 # table_id: 21 (test.t1) -slave-bin.000001 # Write_rows 2 # table_id: 21 flags: STMT_END_F +slave-bin.000001 # Table_map 2 # table_id: # (test.t1) +slave-bin.000001 # Write_rows 2 # table_id: # flags: STMT_END_F select * from t1; a b 1 1 -- cgit v1.2.1 From 9a353ee19536307ec102f069b716d72201b83643 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 15:30:26 +0200 Subject: After merge fix --- mysql-test/r/mysqldump.result | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result index f9a30061642..bf43ad4eff1 100644 --- a/mysql-test/r/mysqldump.result +++ b/mysql-test/r/mysqldump.result @@ -3035,7 +3035,7 @@ CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqldump_test_db` /*!40100 DEFAULT CH USE `mysqldump_test_db`; DROP TABLE IF EXISTS `t1`; CREATE TABLE `t1` ( - `id` int(11) default NULL + `id` int(11) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- cgit v1.2.1 From cd58d39138fb43e365ffccc7f7c1b0ca30e11129 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 16:01:23 +0200 Subject: ndb - bug#19275 make sure tablename is release in case of alter table storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp: make sure tablename is release in case of alter table --- storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp | 35 +++++++++++++++++++------ 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp index ef08c06822f..ed6b94fd2e8 100644 --- a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp +++ b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp @@ -4695,11 +4695,6 @@ Dbdict::alterTab_writeTableConf(Signal* signal, SegmentedSectionPtr tabInfoPtr; getSection(tabInfoPtr, alterTabPtr.p->m_tabInfoPtrI); signal->setSection(tabInfoPtr, AlterTabReq::DICT_TAB_INFO); -#ifndef DBUG_OFF - ndbout_c("DICT_TAB_INFO in DICT"); - SimplePropertiesSectionReader reader(tabInfoPtr, getSectionSegmentPool()); - reader.printAll(ndbout); -#endif EXECUTE_DIRECT(SUMA, GSN_ALTER_TAB_REQ, signal, AlterTabReq::SignalLength); releaseSections(signal); @@ -6960,13 +6955,37 @@ void Dbdict::releaseTableObject(Uint32 tableId, bool removeFromHash) { TableRecordPtr tablePtr; c_tableRecordPool.getPtr(tablePtr, tableId); - if (removeFromHash){ + if (removeFromHash) + { jam(); release_object(tablePtr.p->m_obj_ptr_i); } + else + { + Rope tmp(c_rope_pool, tablePtr.p->tableName); + tmp.erase(); + } - Rope frm(c_rope_pool, tablePtr.p->frmData); - frm.erase(); + { + Rope tmp(c_rope_pool, tablePtr.p->frmData); + tmp.erase(); + } + + { + Rope tmp(c_rope_pool, tablePtr.p->tsData); + tmp.erase(); + } + + { + Rope tmp(c_rope_pool, tablePtr.p->ngData); + tmp.erase(); + } + + { + Rope tmp(c_rope_pool, tablePtr.p->rangeData); + tmp.erase(); + } + tablePtr.p->tabState = TableRecord::NOT_DEFINED; LocalDLFifoList list(c_attributeRecordPool, -- cgit v1.2.1 From 5f0eba6f87ddf8e961d8a125416bacb19e024d7e Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 16:15:04 +0200 Subject: ndb - bug#18102: fixes on NDB API level storage/ndb/test/ndbapi/test_event_merge.cpp: test multiple tables and getGCIEventOperations storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp: fix getGCIEventOperations when merge events is on storage/ndb/src/ndbapi/NdbEventOperationImpl.hpp: fix getGCIEventOperations when merge events is on --- storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp | 44 +- storage/ndb/src/ndbapi/NdbEventOperationImpl.hpp | 4 +- storage/ndb/test/ndbapi/test_event_merge.cpp | 1081 +++++++++++++++------- 3 files changed, 776 insertions(+), 353 deletions(-) diff --git a/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp b/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp index e0b8043a8ff..271c317fcb4 100644 --- a/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp +++ b/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp @@ -1159,7 +1159,10 @@ NdbEventBuffer::nextEvent() NdbEventOperationImpl *op= data->m_event_op; DBUG_PRINT_EVENT("info", ("available data=%p op=%p", data, op)); - // blob table ops must not be seen at this level + /* + * If merge is on, blob part sub-events must not be seen on this level. + * If merge is not on, there are no blob part sub-events. + */ assert(op->theMainOp == NULL); // set NdbEventOperation data @@ -1175,13 +1178,6 @@ NdbEventBuffer::nextEvent() op->m_data_done_count++; #endif - // NUL event is not returned - if (data->sdata->operation == NdbDictionary::Event::_TE_NUL) - { - DBUG_PRINT_EVENT("info", ("skip _TE_NUL")); - continue; - } - int r= op->receive_event(); if (r > 0) { @@ -1203,6 +1199,12 @@ NdbEventBuffer::nextEvent() gci_ops = m_available_data.next_gci_ops(); } assert(gci_ops && (op->getGCI() == gci_ops->m_gci)); + // to return TE_NUL it should be made into data event + if (data->sdata->operation == NdbDictionary::Event::_TE_NUL) + { + DBUG_PRINT_EVENT("info", ("skip _TE_NUL")); + continue; + } DBUG_RETURN_EVENT(op->m_facade); } // the next event belonged to an event op that is no @@ -1800,19 +1802,19 @@ NdbEventBuffer::insertDataL(NdbEventOperationImpl *op, else { // event with same op, PK found, merge into old buffer - Uint32 old_op = data->sdata->operation; if (unlikely(merge_data(sdata, ptr, data))) { op->m_has_error = 3; DBUG_RETURN_EVENT(-1); } - Uint32 new_op = data->sdata->operation; - - // make Gci_ops reflect the merge by delete old and add new - EventBufData_list::Gci_op g = { op, (1 << old_op) }; - // bucket->m_data.del_gci_op(g); // XXX whats wrong? fix later - g.event_types = (1 << new_op); - bucket->m_data.add_gci_op(g); + // merge is on so we do not report blob part events + if (! is_blob_event) { + // report actual operation, not composite + // there is no way to "fix" the flags for a composite op + // since the flags represent multiple ops on multiple PKs + EventBufData_list::Gci_op g = { op, (1 << sdata->operation) }; + bucket->m_data.add_gci_op(g); + } } DBUG_RETURN_EVENT(0); } @@ -2381,21 +2383,18 @@ void EventBufData_list::append_list(EventBufData_list *list, Uint64 gci) } void -EventBufData_list::add_gci_op(Gci_op g, bool del) +EventBufData_list::add_gci_op(Gci_op g) { DBUG_ENTER_EVENT("EventBufData_list::add_gci_op"); DBUG_PRINT_EVENT("info", ("p.op: %p g.event_types: %x", g.op, g.event_types)); - assert(g.op != NULL); + assert(g.op != NULL && g.op->theMainOp == NULL); // as in nextEvent Uint32 i; for (i = 0; i < m_gci_op_count; i++) { if (m_gci_op_list[i].op == g.op) break; } if (i < m_gci_op_count) { - if (! del) - m_gci_op_list[i].event_types |= g.event_types; - else - m_gci_op_list[i].event_types &= ~ g.event_types; + m_gci_op_list[i].event_types |= g.event_types; } else { if (m_gci_op_count == m_gci_op_alloc) { Uint32 n = 1 + 2 * m_gci_op_alloc; @@ -2413,7 +2412,6 @@ EventBufData_list::add_gci_op(Gci_op g, bool del) m_gci_op_alloc = n; } assert(m_gci_op_count < m_gci_op_alloc); - assert(! del); #ifndef DBUG_OFF i = m_gci_op_count; #endif diff --git a/storage/ndb/src/ndbapi/NdbEventOperationImpl.hpp b/storage/ndb/src/ndbapi/NdbEventOperationImpl.hpp index bcae650bf44..c14ca83128f 100644 --- a/storage/ndb/src/ndbapi/NdbEventOperationImpl.hpp +++ b/storage/ndb/src/ndbapi/NdbEventOperationImpl.hpp @@ -145,9 +145,7 @@ public: Gci_ops *first_gci_ops(); Gci_ops *next_gci_ops(); // case 1 above; add Gci_op to single list - void add_gci_op(Gci_op g, bool del = false); - // delete bit from existing flags - void del_gci_op(Gci_op g) { add_gci_op(g, true); } + void add_gci_op(Gci_op g); private: // case 2 above; move single list or multi list from // one list to another diff --git a/storage/ndb/test/ndbapi/test_event_merge.cpp b/storage/ndb/test/ndbapi/test_event_merge.cpp index ea1ec43da1a..7a9a1986793 100644 --- a/storage/ndb/test/ndbapi/test_event_merge.cpp +++ b/storage/ndb/test/ndbapi/test_event_merge.cpp @@ -36,7 +36,9 @@ * operation and its post/pre data * * 2) In event API version >= 5.1 separate commits within same GCI are - * by default merged. This is required to read blob data via NdbBlob. + * optionally merged. This is required to read blob data via NdbBlob. + * + * In this test merge is on by default. * * Option --separate-events disables GCI merge and implies --no-blobs. * This is used to test basic events functionality. @@ -56,6 +58,10 @@ * DEL o INS = UPD * UPD o DEL = DEL * UPD o UPD = UPD + * + * Event merge in NDB API handles idempotent INS o INS and DEL o DEL + * which are possible on NF (node failure). This test does not handle + * them when --separate-events is used. */ struct Opts { @@ -72,6 +78,7 @@ struct Opts { my_bool one_blob; const char* opstring; uint seed; + int maxtab; my_bool separate_events; uint tweak; // whatever's useful my_bool use_table; @@ -79,6 +86,7 @@ struct Opts { static Opts g_opts; static const uint g_maxpk = 1000; +static const uint g_maxtab = 100; static const uint g_maxopstringpart = 100; static const char* g_opstringpart[g_maxopstringpart]; static uint g_opstringparts = 0; @@ -91,8 +99,6 @@ static NdbTransaction* g_con = 0; static NdbOperation* g_op = 0; static NdbScanOperation* g_scan_op = 0; -static const char* g_tabname = "tem1"; -static const char* g_evtname = "tem1ev1"; static const uint g_charlen = 5; static const char* g_charval = "abcdefgh"; static const char* g_csname = "latin1_swedish_ci"; @@ -102,9 +108,6 @@ static uint g_blobpartsize = 2000; static uint g_blobstripesize = 2; static const uint g_maxblobsize = 100000; -static const NdbDictionary::Table* g_tab = 0; -static const NdbDictionary::Event* g_evt = 0; - static NdbEventOperation* g_evt_op = 0; static NdbBlob* g_bh = 0; @@ -151,6 +154,9 @@ static int& g_loglevel = g_opts.loglevel; // default log level #define ll2(x) \ do { if (g_loglevel < 2) break; ndbout << x << endl; } while (0) +#define ll3(x) \ + do { if (g_loglevel < 3) break; ndbout << x << endl; } while (0) + static void errdb() { @@ -188,7 +194,7 @@ errdb() if (g_bh != 0) { const NdbError& e = g_bh->getNdbError(); if (e.code != 0) - ll0(++any << " evt_op: error " << e); + ll0(++any << " bh: error " << e); } if (! any) ll0("unknown db error"); @@ -209,7 +215,7 @@ struct Col { } }; -static Col g_col[] = { +static const Col g_col[] = { { 0, "pk1", NdbDictionary::Column::Unsigned, true, false, 1, 4 }, { 1, "pk2", NdbDictionary::Column::Char, true, false, g_charlen, g_charlen }, { 2, "seq", NdbDictionary::Column::Unsigned, false, false, 1, 4 }, @@ -229,7 +235,7 @@ ncol() if (g_opts.no_blobs) n -= g_blobcols; else if (g_opts.one_blob) - n -= (g_blobcols - 1); + n -= (g_blobcols - 2); return n; } @@ -252,17 +258,49 @@ getcol(const char* name) return getcol(i); } +struct Tab { + char tabname[20]; + const Col* col; + const NdbDictionary::Table* tab; + char evtname[20]; + const NdbDictionary::Event* evt; + Tab(uint idx) : + col(g_col), + tab(0), + evt(0) + { + sprintf(tabname, "tem%d", idx); + sprintf(evtname, "tem%dev", idx); + } +}; + +static Tab* g_tablst[g_maxtab]; + +static uint +maxtab() +{ + return g_opts.maxtab; +} + +static Tab& +tab(uint i) +{ + assert(i < maxtab() && g_tablst[i] != 0); + return *g_tablst[i]; +} + static int -createtable() +createtable(Tab& t) { - g_tab = 0; - NdbDictionary::Table tab(g_tabname); + ll2("createtable: " << t.tabname); + t.tab = 0; + NdbDictionary::Table tab(t.tabname); tab.setLogging(false); CHARSET_INFO* cs; chkrc((cs = get_charset_by_name(g_csname, MYF(0))) != 0); uint i; for (i = 0; i < ncol(); i++) { - const Col& c = g_col[i]; + const Col& c = t.col[i]; NdbDictionary::Column col(c.name); col.setType(c.type); col.setPrimaryKey(c.pk); @@ -295,16 +333,16 @@ createtable() } g_dic = g_ndb->getDictionary(); if (! g_opts.use_table) { - if (g_dic->getTable(g_tabname) != 0) - chkdb(g_dic->dropTable(g_tabname) == 0); + if (g_dic->getTable(t.tabname) != 0) + chkdb(g_dic->dropTable(t.tabname) == 0); chkdb(g_dic->createTable(tab) == 0); } - chkdb((g_tab = g_dic->getTable(g_tabname)) != 0); + chkdb((t.tab = g_dic->getTable(t.tabname)) != 0); g_dic = 0; if (! g_opts.use_table) { // extra row for GCI probe chkdb((g_con = g_ndb->startTransaction()) != 0); - chkdb((g_op = g_con->getNdbOperation(g_tabname)) != 0); + chkdb((g_op = g_con->getNdbOperation(t.tabname)) != 0); chkdb(g_op->insertTuple() == 0); Uint32 pk1; char pk2[g_charlen + 1]; @@ -321,17 +359,94 @@ createtable() } static int -droptable() +createtable() { + ll1("createtable"); + for (uint i = 0; i < maxtab(); i++) + chkrc(createtable(tab(i)) == 0); + return 0; +} + +static int +droptable(Tab& t) +{ + ll2("droptable: " << t.tabname); if (! g_opts.use_table) { g_dic = g_ndb->getDictionary(); - chkdb(g_dic->dropTable(g_tab->getName()) == 0); - g_tab = 0; + chkdb(g_dic->dropTable(t.tabname) == 0); + t.tab = 0; g_dic = 0; } return 0; } +static int +droptable() +{ + ll1("droptable"); + for (uint i = 0; i < maxtab(); i++) + chkrc(droptable(tab(i)) == 0); + return 0; +} + +static int +createevent(Tab& t) +{ + ll2("createevent: " << t.evtname); + t.evt = 0; + g_dic = g_ndb->getDictionary(); + NdbDictionary::Event evt(t.evtname); + assert(t.tab != 0); + evt.setTable(*t.tab); + evt.addTableEvent(NdbDictionary::Event::TE_ALL); + uint i; + for (i = 0; i < ncol(); i++) { + const Col& c = g_col[i]; + evt.addEventColumn(c.name); + } + evt.setReport(NdbDictionary::Event::ER_UPDATED); + evt.mergeEvents(! g_opts.separate_events); +#if 0 // XXX random bugs + if (g_dic->getEvent(t.evtname) != 0) + chkdb(g_dic->dropEvent(t.evtname) == 0); +#else + (void)g_dic->dropEvent(t.evtname); + chkdb(g_dic->createEvent(evt) == 0); +#endif + chkdb((t.evt = g_dic->getEvent(t.evtname)) != 0); + g_dic = 0; + return 0; +} + +static int +createevent() +{ + ll1("createevent"); + for (uint i = 0; i < maxtab(); i++) + chkrc(createevent(tab(i)) == 0); + return 0; +} + +static int +dropevent(Tab& t, bool force = false) +{ + ll2("dropevent: " << t.evtname); + g_dic = g_ndb->getDictionary(); + chkdb(g_dic->dropEvent(t.evtname) == 0 || force); + t.evt = 0; + g_dic = 0; + return 0; +} + +static int +dropevent(bool force = false) +{ + ll1("dropevent"); + for (uint i = 0; i < maxtab(); i++) + chkrc(dropevent(tab(i), force) == 0 || force); + return 0; +} + struct Data { struct Txt { char* val; uint len; }; union Ptr { Uint32* u32; char* ch; Txt* txt; void* v; }; @@ -445,15 +560,15 @@ operator<<(NdbOut& out, const Data& d) case NdbDictionary::Column::Text: case NdbDictionary::Column::Blob: { - Data::Txt& t = *d.ptr[i].txt; + Data::Txt& txt = *d.ptr[i].txt; bool first = true; uint j = 0; - while (j < t.len) { + while (j < txt.len) { char c[2]; - c[0] = t.val[j++]; + c[0] = txt.val[j++]; c[1] = 0; uint m = 1; - while (j < t.len && t.val[j] == c[0]) + while (j < txt.len && txt.val[j] == c[0]) j++, m++; if (! first) out << "+"; @@ -471,10 +586,11 @@ operator<<(NdbOut& out, const Data& d) } // some random os may define these -#undef NUL +#undef UNDEF #undef INS #undef DEL #undef UPD +#undef NUL static const uint g_optypes = 3; // real ops 0-2 @@ -485,7 +601,7 @@ static const uint g_optypes = 3; // real ops 0-2 */ struct Op { // single or composite enum Kind { OP = 1, EV = 2 }; - enum Type { NUL = -1, INS, DEL, UPD }; + enum Type { UNDEF = -1, INS, DEL, UPD, NUL }; Kind kind; Type type; Op* next_op; // within one commit @@ -499,10 +615,10 @@ struct Op { // single or composite Data data[2]; // 0-post 1-pre bool match; // matched to event Uint32 gci; // defined for com op and event - void init(Kind a_kind) { + void init(Kind a_kind, Type a_type = UNDEF) { kind = a_kind; assert(kind == OP || kind == EV); - type = NUL; + type = a_type; next_op = next_com = next_gci = next_ev = next_free = 0; free = false; num_op = num_com = 0; @@ -518,12 +634,9 @@ struct Op { // single or composite }; static NdbOut& -operator<<(NdbOut& out, Op::Type t) +operator<<(NdbOut& out, Op::Type optype) { - switch (t) { - case Op::NUL: - out << "NUL"; - break; + switch (optype) { case Op::INS: out << "INS"; break; @@ -533,8 +646,11 @@ operator<<(NdbOut& out, Op::Type t) case Op::UPD: out << "UPD"; break; + case Op::NUL: + out << "NUL"; + break; default: - out << (int)t; + out << (int)optype; break; } return out; @@ -554,41 +670,149 @@ operator<<(NdbOut& out, const Op& op) static int seteventtype(Op* ev, NdbDictionary::Event::TableEvent te) { - Op::Type t = Op::NUL; + Op::Type optype = Op::UNDEF; switch (te) { case NdbDictionary::Event::TE_INSERT: - t = Op::INS; + optype = Op::INS; break; case NdbDictionary::Event::TE_DELETE: - t = Op::DEL; + optype = Op::DEL; break; case NdbDictionary::Event::TE_UPDATE: - t = Op::UPD; + optype = Op::UPD; break; default: - ll0("EVT: " << *ev << ": bad event type" << (int)te); + ll0("EVT: " << *ev << ": bad event type " << hex << (uint)te); return -1; } - ev->type = t; + ev->type = optype; return 0; } +struct Counter { // debug aid + const char* name; + uint count; + Counter(const char* a_name) : name(a_name), count(0) { + } + friend class NdbOut& operator<<(NdbOut& out, const Counter& counter) { + out << counter.name << "(" << counter.count << ")"; + return out; + } + operator uint() { + return count; + } + Counter operator ++(int) { + ll3(*this << "++"); + Counter tmp = *this; + count++; + return tmp; + } + Counter operator --(int) { + ll3(*this << "--"); + assert(count != 0); + Counter tmp = *this; + count--; + return tmp; + } +}; + static Op* g_opfree = 0; static uint g_freeops = 0; static uint g_usedops = 0; +static uint g_gciops = 0; static uint g_maxcom = 10; // max ops per commit -static Op* g_pk_op[g_maxpk]; -static Op* g_pk_ev[g_maxpk]; static uint g_seq = 0; -static NdbRecAttr* g_ev_ra[2][g_maxcol]; // 0-post 1-pre -static NdbBlob* g_ev_bh[2][g_maxcol]; // 0-post 1-pre static Op* g_rec_ev; -static uint g_ev_pos[g_maxpk]; -static uint g_num_gci = 0; static uint g_num_ev = 0; +static const uint g_maxgcis = 500; // max GCIs seen during 1 loop + +// operation data per table and each loop +struct Run : public Tab { + bool skip; // no ops in current loop + NdbEventOperation* evt_op; + uint gcicnt; // number of CGIs seen in current loop + Uint64 gcinum[g_maxgcis]; + Uint32 gcievtypes[g_maxgcis][2]; // 0-getGCIEventOperations 1-nextEvent + uint tableops; // real table ops in this loop + uint blobops; // approx blob part ops in this loop + uint gciops; // commit chains or (after mergeops) gci chains + Op* pk_op[g_maxpk]; // GCI chain of ops per PK + Op* pk_ev[g_maxpk]; // events per PK + uint ev_pos[g_maxpk]; // counts events + NdbRecAttr* ev_ra[2][g_maxcol]; // 0-post 1-pre + NdbBlob* ev_bh[2][g_maxcol]; // 0-post 1-pre + Run(uint idx) : + Tab(idx) + { + reset(); + } + void reset() + { + int i, j; + skip = false; + evt_op = 0; + gcicnt = 0; + for (i = 0; i < g_maxgcis; i++) { + gcinum[i] = (Uint64)0; + gcievtypes[i][0] = gcievtypes[i][1] = (Uint32)0; + } + tableops = 0; + blobops = 0; + gciops = 0; + for (i = 0; i < g_maxpk; i++) { + pk_op[i] = 0; + pk_ev[i] = 0; + ev_pos[i] = 0; + } + for (j = 0; i < 2; j ++) { + for (i = 0; i < g_maxcol; i++) { + ev_ra[j][i] = 0; + ev_bh[j][i] = 0; + } + } + } + int addgci(Uint64 gci) + { + assert(gcicnt < g_maxgcis); + chkrc(gcicnt == 0 || gcinum[gcicnt - 1] < gci); + gcinum[gcicnt++] = gci; + return 0; + } + void addevtypes(Uint64 gci, Uint32 evtypes, uint i) + { + assert(gcicnt != 0 && gci == gcinum[gcicnt - 1]); + assert(evtypes != 0); + assert(i < 2); + gcievtypes[gcicnt - 1][i] |= evtypes; + } +}; + +static Run* g_runlst[g_maxtab]; + +static uint +maxrun() +{ + return maxtab(); +} + +static Run& +run(uint i) +{ + assert(i < maxrun() && g_runlst[i] != 0); + return *g_runlst[i]; +} + +static void +initrun() +{ + uint i; + for (i = 0; i < maxrun(); i++) + g_tablst[i] = g_runlst[i] = new Run(i); +} + static Op* -getop(Op::Kind a_kind) +getop(Op::Kind a_kind, Op::Type a_type = Op::UNDEF) { if (g_opfree == 0) { assert(g_freeops == 0); @@ -604,14 +828,16 @@ getop(Op::Kind a_kind) assert(g_freeops != 0); g_freeops--; g_usedops++; - op->init(a_kind); + op->init(a_kind, a_type); op->free = false; + ll3("getop: " << op); return op; } static void freeop(Op* op) { + ll3("freeop: " << op); assert(! op->free); op->freemem(); op->free = true; @@ -623,26 +849,16 @@ freeop(Op* op) } static void -resetmem() +resetmem(Run& r) { - int i, j; - for (j = 0; j < 2; j++) { - for (i = 0; i < g_maxcol; i++) { - g_ev_ra[j][i] = 0; - g_ev_bh[j][i] = 0; - } - } - if (g_rec_ev != 0) { - freeop(g_rec_ev); - g_rec_ev = 0; - } + ll2("resetmem"); Uint32 pk1; for (pk1 = 0; pk1 < g_opts.maxpk; pk1++) - g_ev_pos[pk1] = 0; + r.ev_pos[pk1] = 0; // leave g_seq for (pk1 = 0; pk1 < g_opts.maxpk; pk1++) { - if (g_pk_op[pk1] != 0) { - Op* tot_op = g_pk_op[pk1]; + if (r.pk_op[pk1] != 0) { + Op* tot_op = r.pk_op[pk1]; while (tot_op->next_gci != 0) { Op* gci_op = tot_op->next_gci; while (gci_op->next_com != 0) { @@ -659,21 +875,33 @@ resetmem() freeop(gci_op); } freeop(tot_op); - g_pk_op[pk1] = 0; + r.pk_op[pk1] = 0; } - if (g_pk_ev[pk1] != 0) { - Op* tot_op = g_pk_ev[pk1]; + if (r.pk_ev[pk1] != 0) { + Op* tot_op = r.pk_ev[pk1]; while (tot_op->next_ev != 0) { Op* ev = tot_op->next_ev; tot_op->next_ev = ev->next_ev; freeop(ev); } freeop(tot_op); - g_pk_ev[pk1] = 0; + r.pk_ev[pk1] = 0; } } + r.reset(); +} + +static void +resetmem() +{ + if (g_rec_ev != 0) { + freeop(g_rec_ev); + g_rec_ev = 0; + } + for (uint i = 0; i < maxrun(); i++) + resetmem(run(i)); assert(g_usedops == 0); - g_num_gci = g_num_ev = 0; + g_gciops = g_num_ev = 0; } static void @@ -706,10 +934,11 @@ static const uint g_ncomp = sizeof(g_comp)/sizeof(g_comp[0]); static int checkop(const Op* op, Uint32& pk1) { - Op::Type t = op->type; - if (t == Op::NUL) + Op::Type optype = op->type; + assert(optype != Op::UNDEF); + if (optype == Op::NUL) return 0; - chkrc(t == Op::INS || t == Op::DEL || t == Op::UPD); + chkrc(optype == Op::INS || optype == Op::DEL || optype == Op::UPD); const Data& d0 = op->data[0]; const Data& d1 = op->data[1]; { @@ -726,19 +955,19 @@ checkop(const Op* op, Uint32& pk1) // the rules are the rules.. if (c.pk) { chkrc(ind0 == 0); // always PK in post data - if (t == Op::INS) + if (optype == Op::INS) chkrc(ind1 == -1); - if (t == Op::DEL) + if (optype == Op::DEL) chkrc(ind1 == -1); // no PK in pre data - if (t == Op::UPD) + if (optype == Op::UPD) chkrc(ind1 == 0); } if (! c.pk) { - if (t == Op::INS) + if (optype == Op::INS) chkrc(ind0 >= 0 && ind1 == -1); - if (t == Op::DEL) + if (optype == Op::DEL) chkrc(ind0 == -1 && ind1 >= 0); // always non-PK in pre data - if (t == Op::UPD) + if (optype == Op::UPD) chkrc(ind0 == -1 || ind1 >= 0); // update must have pre data } if (! c.nullable) { @@ -750,10 +979,10 @@ checkop(const Op* op, Uint32& pk1) for (j = 0; j < 2; j++) { const Data& d = op->data[j]; if (d.ind[i] == 0) { - const Data::Txt& t = *d.ptr[i].txt; + const Data::Txt& txt = *d.ptr[i].txt; int k; - for (k = 0; k < t.len; k++) { - chkrc(strchr(g_charval, t.val[k]) != 0); + for (k = 0; k < txt.len; k++) { + chkrc(strchr(g_charval, txt.val[k]) != 0); } } } @@ -837,6 +1066,7 @@ copyop(const Op* op1, Op* op3) static int compop(const Op* op1, const Op* op2, Op* op3) // op1 o op2 = op3 { + assert(op1->type != Op::UNDEF && op2->type != Op::UNDEF); Comp* comp; if (op2->type == Op::NUL) { copyop(op1, op3); @@ -882,67 +1112,69 @@ compop(const Op* op1, const Op* op2, Op* op3) // op1 o op2 = op3 } static int -createevent() +createeventop(Run& r) { - ll1("createevent"); - g_evt = 0; - g_dic = g_ndb->getDictionary(); - NdbDictionary::Event evt(g_evtname); - evt.setTable(*g_tab); - evt.addTableEvent(NdbDictionary::Event::TE_ALL); + ll2("createeventop: " << r.tabname); + chkdb((r.evt_op = g_ndb->createEventOperation(r.evtname)) != 0); + r.evt_op->mergeEvents(! g_opts.separate_events); // not yet inherited uint i; for (i = 0; i < ncol(); i++) { const Col& c = g_col[i]; - evt.addEventColumn(c.name); + Data (&d)[2] = g_rec_ev->data; + if (! c.isblob()) { + chkdb((r.ev_ra[0][i] = r.evt_op->getValue(c.name, (char*)d[0].ptr[i].v)) != 0); + chkdb((r.ev_ra[1][i] = r.evt_op->getPreValue(c.name, (char*)d[1].ptr[i].v)) != 0); + } else { + chkdb((r.ev_bh[0][i] = r.evt_op->getBlobHandle(c.name)) != 0); + chkdb((r.ev_bh[1][i] = r.evt_op->getPreBlobHandle(c.name)) != 0); + } } - evt.setReport(NdbDictionary::Event::ER_UPDATED); - evt.mergeEvents(! g_opts.separate_events); - if (g_dic->getEvent(evt.getName()) != 0) - chkdb(g_dic->dropEvent(evt.getName()) == 0); - chkdb(g_dic->createEvent(evt) == 0); - chkdb((g_evt = g_dic->getEvent(evt.getName())) != 0); - g_dic = 0; return 0; } static int -dropevent() +createeventop() { - ll1("dropevent"); - g_dic = g_ndb->getDictionary(); - chkdb(g_dic->dropEvent(g_evt->getName()) == 0); - g_evt = 0; - g_dic = 0; + ll1("createeventop"); + for (uint i = 0; i < maxrun(); i++) + chkrc(createeventop(run(i)) == 0); return 0; } static int -createeventop() +executeeventop(Run& r) { - ll1("createeventop"); - chkdb((g_evt_op = g_ndb->createEventOperation(g_evt->getName())) != 0); - g_evt_op->mergeEvents(! g_opts.separate_events); // not yet inherited - uint i; - for (i = 0; i < ncol(); i++) { - const Col& c = g_col[i]; - Data (&d)[2] = g_rec_ev->data; - if (! c.isblob()) { - chkdb((g_ev_ra[0][i] = g_evt_op->getValue(c.name, (char*)d[0].ptr[i].v)) != 0); - chkdb((g_ev_ra[1][i] = g_evt_op->getPreValue(c.name, (char*)d[1].ptr[i].v)) != 0); - } else { - chkdb((g_ev_bh[0][i] = g_evt_op->getBlobHandle(c.name)) != 0); - chkdb((g_ev_bh[1][i] = g_evt_op->getPreBlobHandle(c.name)) != 0); - } + ll2("executeeventop: " << r.tabname); + chkdb(r.evt_op->execute() == 0); + return 0; +} + +static int +executeeventop() +{ + ll1("executeeventop"); + for (uint i = 0; i < maxrun(); i++) + chkrc(executeeventop(run(i)) == 0); + return 0; +} + +static int +dropeventop(Run& r, bool force = false) +{ + ll2("dropeventop: " << r.tabname); + if (r.evt_op != 0) { + chkdb(g_ndb->dropEventOperation(r.evt_op) == 0 || force); + r.evt_op = 0; } return 0; } static int -dropeventop() +dropeventops(bool force = false) { - ll1("dropeventop"); - chkdb(g_ndb->dropEventOperation(g_evt_op) == 0); - g_evt_op = 0; + ll1("dropeventops"); + for (uint i = 0; i < maxrun(); i++) + chkrc(dropeventop(run(i), force) == 0 || force); return 0; } @@ -956,11 +1188,12 @@ waitgci(uint ngci) while (1) { chkdb((g_con = g_ndb->startTransaction()) != 0); { // forced to exec a dummy op + Tab& t = tab(0); // use first table Uint32 pk1; char pk2[g_charlen + 1]; pk1 = g_maxpk; sprintf(pk2, "%-*u", g_charlen, pk1); - chkdb((g_op = g_con->getNdbOperation(g_tabname)) != 0); + chkdb((g_op = g_con->getNdbOperation(t.tabname)) != 0); chkdb(g_op->readTuple() == 0); chkdb(g_op->equal("pk1", (char*)&pk1) == 0); chkdb(g_op->equal("pk2", (char*)&pk2[0]) == 0); @@ -982,14 +1215,15 @@ waitgci(uint ngci) // scan table and set current tot_op for each pk1 static int -scantab() +scantable(Run& r) { + ll2("scantable: " << r.tabname); NdbRecAttr* ra[g_maxcol]; NdbBlob* bh[g_maxcol]; Op* rec_op = getop(Op::OP); Data& d0 = rec_op->data[0]; chkdb((g_con = g_ndb->startTransaction()) != 0); - chkdb((g_scan_op = g_con->getNdbScanOperation(g_tabname)) != 0); + chkdb((g_scan_op = g_con->getNdbScanOperation(r.tabname)) != 0); chkdb(g_scan_op->readTuples() == 0); uint i; for (i = 0; i < ncol(); i++) { @@ -1017,27 +1251,27 @@ scantab() ret = bh[i]->getDefined(ind); assert(ret == 0); if (ind == 0) { - Data::Txt& t = *d0.ptr[i].txt; + Data::Txt& txt = *d0.ptr[i].txt; Uint64 len64; ret = bh[i]->getLength(len64); assert(ret == 0); - t.len = (uint)len64; - delete [] t.val; - t.val = new char [t.len]; - memset(t.val, 'X', t.len); - Uint32 len = t.len; - ret = bh[i]->readData(t.val, len); - assert(ret == 0 && len == t.len); + txt.len = (uint)len64; + delete [] txt.val; + txt.val = new char [txt.len]; + memset(txt.val, 'X', txt.len); + Uint32 len = txt.len; + ret = bh[i]->readData(txt.val, len); + assert(ret == 0 && len == txt.len); // to see the data, have to execute... chkdb(g_con->execute(NoCommit) == 0); - assert(memchr(t.val, 'X', t.len) == 0); + assert(memchr(txt.val, 'X', txt.len) == 0); } } assert(ind >= 0); d0.ind[i] = ind; } - assert(g_pk_op[pk1] == 0); - Op* tot_op = g_pk_op[pk1] = getop(Op::OP); + assert(r.pk_op[pk1] == 0); + Op* tot_op = r.pk_op[pk1] = getop(Op::OP); copyop(rec_op, tot_op); tot_op->type = Op::INS; } @@ -1049,8 +1283,17 @@ scantab() return 0; } +static int +scantable() +{ + ll1("scantable"); + for (uint i = 0; i < maxrun(); i++) + chkrc(scantable(run(i)) == 0); + return 0; +} + static void -makedata(const Col& c, Data& d, Uint32 pk1, Op::Type t) +makedata(const Col& c, Data& d, Uint32 pk1, Op::Type optype) { uint i = c.no; if (c.pk) { @@ -1072,15 +1315,15 @@ makedata(const Col& c, Data& d, Uint32 pk1, Op::Type t) break; } d.ind[i] = 0; - } else if (t == Op::DEL) { + } else if (optype == Op::DEL) { ; } else if (i == getcol("seq").no) { d.seq = g_seq++; d.ind[i] = 0; - } else if (t == Op::INS && ! g_opts.no_implicit_nulls && c.nullable && urandom(10, 100)) { + } else if (optype == Op::INS && ! g_opts.no_implicit_nulls && c.nullable && urandom(10, 100)) { d.noop |= (1 << i); d.ind[i] = 1; // implicit NULL value is known - } else if (t == Op::UPD && ! g_opts.no_missing_update && urandom(10, 100)) { + } else if (optype == Op::UPD && ! g_opts.no_missing_update && urandom(10, 100)) { d.noop |= (1 << i); d.ind[i] = -1; // fixed up in caller } else if (! g_opts.no_nulls && c.nullable && urandom(10, 100)) { @@ -1111,22 +1354,22 @@ makedata(const Col& c, Data& d, Uint32 pk1, Op::Type t) case NdbDictionary::Column::Blob: { const bool tinyblob = (c.type == NdbDictionary::Column::Blob); - Data::Txt& t = *d.ptr[i].txt; - delete [] t.val; - t.val = 0; + Data::Txt& txt = *d.ptr[i].txt; + delete [] txt.val; + txt.val = 0; if (g_opts.tweak & 1) { uint u = g_blobinlinesize + (tinyblob ? 0 : g_blobpartsize); uint v = (g_opts.tweak & 2) ? 0 : urandom(strlen(g_charval)); - t.val = new char [u]; - t.len = u; - memset(t.val, g_charval[v], u); + txt.val = new char [u]; + txt.len = u; + memset(txt.val, g_charval[v], u); break; } uint u = urandom(tinyblob ? g_blobinlinesize : g_maxblobsize); u = urandom(u); // 4x bias for smaller blobs u = urandom(u); - t.val = new char [u]; - t.len = u; + txt.val = new char [u]; + txt.len = u; uint j = 0; while (j < u) { assert(u > 0); @@ -1134,7 +1377,7 @@ makedata(const Col& c, Data& d, Uint32 pk1, Op::Type t) if (k > u - j) k = u - j; uint v = urandom(strlen(g_charval)); - memset(&t.val[j], g_charval[v], k); + memset(&txt.val[j], g_charval[v], k); j += k; } } @@ -1148,25 +1391,25 @@ makedata(const Col& c, Data& d, Uint32 pk1, Op::Type t) } static void -makeop(const Op* prev_op, Op* op, Uint32 pk1, Op::Type t) +makeop(const Op* prev_op, Op* op, Uint32 pk1, Op::Type optype) { - op->type = t; + op->type = optype; const Data& dp = prev_op->data[0]; Data& d0 = op->data[0]; Data& d1 = op->data[1]; uint i; for (i = 0; i < ncol(); i++) { const Col& c = getcol(i); - makedata(c, d0, pk1, t); - if (t == Op::INS) { + makedata(c, d0, pk1, optype); + if (optype == Op::INS) { d1.ind[i] = -1; - } else if (t == Op::DEL) { + } else if (optype == Op::DEL) { assert(dp.ind[i] >= 0); if (c.pk) d1.ind[i] = -1; else copycol(c, dp, d1); - } else if (t == Op::UPD) { + } else if (optype == Op::UPD) { assert(dp.ind[i] >= 0); if (d0.ind[i] == -1) // not updating this col copycol(c, dp, d0); // must keep track of data @@ -1180,14 +1423,30 @@ makeop(const Op* prev_op, Op* op, Uint32 pk1, Op::Type t) reqrc(pk1 == pk1_tmp); } +static uint +approxblobops(Op* op) +{ + uint avg_blob_size = g_maxblobsize / 4; // see makedata() + uint avg_blob_ops = avg_blob_size / 2000; + uint n = 0; + if (! g_opts.no_blobs) { + n += avg_blob_ops; + if (! g_opts.one_blob) + n += avg_blob_ops; + if (op->type == Op::UPD) + n *= 2; + } + return n; +} + static void -makeops() +makeops(Run& r) { - ll1("makeops"); + ll1("makeops: " << r.tabname); Uint32 pk1 = 0; while (1) { if (g_opts.opstring == 0) { - if (g_usedops >= g_opts.maxops) // use up ops + if (r.tableops + r.blobops >= g_opts.maxops) // use up ops break; pk1 = urandom(g_opts.maxpk); } else { @@ -1197,17 +1456,17 @@ makeops() ll2("makeops: pk1=" << pk1); // total op on the pk so far // optype either NUL=initial/deleted or INS=created - Op* tot_op = g_pk_op[pk1]; + Op* tot_op = r.pk_op[pk1]; if (tot_op == 0) - tot_op = g_pk_op[pk1] = getop(Op::OP); + tot_op = r.pk_op[pk1] = getop(Op::OP, Op::NUL); assert(tot_op->type == Op::NUL || tot_op->type == Op::INS); // add new commit chain to end Op* last_gci = tot_op; while (last_gci->next_gci != 0) last_gci = last_gci->next_gci; - Op* gci_op = getop(Op::OP); + Op* gci_op = getop(Op::OP, Op::NUL); last_gci->next_gci = gci_op; - Op* com_op = getop(Op::OP); + Op* com_op = getop(Op::OP, Op::NUL); gci_op->next_com = com_op; // length of random chain uint len = ~0; @@ -1215,18 +1474,18 @@ makeops() len = 1 + urandom(g_maxcom - 1); len = 1 + urandom(len - 1); // 2x bias for short chain } - ll2("makeops: com chain"); uint n = 0; while (1) { // random or from current g_opts.opstring part - Op::Type t; + Op::Type optype; if (g_opts.opstring == 0) { if (n == len) break; do { - t = (Op::Type)urandom(g_optypes); - } while (tot_op->type == Op::NUL && (t == Op::DEL || t == Op::UPD) || - tot_op->type == Op::INS && t == Op::INS); + optype = (Op::Type)urandom(g_optypes); + } while (tot_op->type == Op::NUL && + (optype == Op::DEL || optype == Op::UPD) || + tot_op->type == Op::INS && optype == Op::INS); } else { const char* str = g_opstringpart[g_loop % g_opstringparts]; uint m = strlen(str); @@ -1241,10 +1500,12 @@ makeops() const char* p = "idu"; const char* q = strchr(p, c); assert(q != 0); - t = (Op::Type)(q - p); + optype = (Op::Type)(q - p); } Op* op = getop(Op::OP); - makeop(tot_op, op, pk1, t); + makeop(tot_op, op, pk1, optype); + r.tableops++; + r.blobops += approxblobops(op); // add to end Op* last_op = com_op; while (last_op->next_op != 0) @@ -1262,15 +1523,40 @@ makeops() // copy to gci level copyop(com_op, gci_op); tot_op->num_com += 1; - g_num_gci += 1; + r.gciops += 1; + g_gciops += 1; } - ll1("makeops: used ops = " << g_usedops << " com ops = " << g_num_gci); + ll1("makeops: " << r.tabname << ": com recs = " << r.gciops); +} + +static void +selecttables() +{ + uint i; + for (i = 0; i < maxrun(); i++) + run(i).skip = false; + for (i = 0; i + 1 < maxrun(); i++) + run(urandom(maxrun())).skip = true; + uint cnt = 0; + for (i = 0; i < maxrun(); i++) + cnt += ! run(i).skip; + ll1("use " << cnt << "/" << maxrun() << " tables in this loop"); +} + +static void +makeops() +{ + selecttables(); + for (uint i = 0; i < maxrun(); i++) + if (! run(i).skip) + makeops(run(i)); + ll1("makeops: used recs = " << g_usedops << " com recs = " << g_gciops); } static int -addndbop(Op* op) +addndbop(Run& r, Op* op) { - chkdb((g_op = g_con->getNdbOperation(g_tabname)) != 0); + chkdb((g_op = g_con->getNdbOperation(r.tabname)) != 0); switch (op->type) { case Op::INS: chkdb(g_op->insertTuple() == 0); @@ -1308,10 +1594,10 @@ addndbop(Op* op) else chkdb(g_op->setValue(c.name, (const char*)0) == 0); } else { - const Data::Txt& t = *d.ptr[i].txt; + const Data::Txt& txt = *d.ptr[i].txt; g_bh = g_op->getBlobHandle(c.name); if (d.ind[i] == 0) - chkdb(g_bh->setValue(t.val, t.len) == 0); + chkdb(g_bh->setValue(txt.val, txt.len) == 0); else chkdb(g_bh->setValue(0, 0) == 0); g_bh = 0; @@ -1326,48 +1612,54 @@ static int runops() { ll1("runops"); + Op* gci_op[g_maxtab][g_maxpk]; + uint left = 0; // number of table pks with ops + int i; Uint32 pk1; - Op* gci_op[g_maxpk]; - uint left = 0; // number of pks with ops - for (pk1 = 0; pk1 < g_opts.maxpk; pk1++) { - gci_op[pk1] = 0; - // total op on the pk - Op* tot_op = g_pk_op[pk1]; - if (tot_op == 0) - continue; - if (tot_op->next_gci == 0) { - assert(g_loop != 0 && tot_op->type == Op::INS); - continue; + for (i = 0; i < maxrun(); i++) { + Run& r = run(i); + for (pk1 = 0; pk1 < g_opts.maxpk; pk1++) { + gci_op[i][pk1] = 0; + // total op on the pk + Op* tot_op = r.pk_op[pk1]; + if (tot_op == 0) + continue; + if (tot_op->next_gci == 0) { + assert(g_loop != 0 && tot_op->type == Op::INS); + continue; + } + // first commit chain + assert(tot_op->next_gci != 0); + gci_op[i][pk1] = tot_op->next_gci; + left++; } - // first commit chain - assert(tot_op->next_gci != 0); - gci_op[pk1] = tot_op->next_gci; - left++; } while (left != 0) { + i = urandom(maxrun()); pk1 = urandom(g_opts.maxpk); - if (gci_op[pk1] == 0) + if (gci_op[i][pk1] == 0) continue; + Run& r = run(i); // do the ops in one transaction chkdb((g_con = g_ndb->startTransaction()) != 0); - Op* com_op = gci_op[pk1]->next_com; + Op* com_op = gci_op[i][pk1]->next_com; assert(com_op != 0); // first op in chain Op* op = com_op->next_op; assert(op != 0); while (op != 0) { ll2("runops:" << *op); - chkrc(addndbop(op) == 0); + chkrc(addndbop(r, op) == 0); op = op->next_op; } chkdb(g_con->execute(Commit) == 0); - gci_op[pk1]->gci = com_op->gci = g_con->getGCI(); - ll2("commit: gci=" << com_op->gci); + gci_op[i][pk1]->gci = com_op->gci = g_con->getGCI(); + ll2("commit: " << run(i).tabname << " gci=" << com_op->gci); g_ndb->closeTransaction(g_con); g_con = 0; // next chain - gci_op[pk1] = gci_op[pk1]->next_gci; - if (gci_op[pk1] == 0) { + gci_op[i][pk1] = gci_op[i][pk1]->next_gci; + if (gci_op[i][pk1] == 0) { assert(left != 0); left--; } @@ -1377,14 +1669,14 @@ runops() } // move com chains with same gci under same gci entry -static int -mergeops() +static void +mergeops(Run& r) { - ll1("mergeops"); + ll2("mergeops: " << r.tabname); uint mergecnt = 0; Uint32 pk1; for (pk1 = 0; pk1 < g_opts.maxpk; pk1++) { - Op* tot_op = g_pk_op[pk1]; + Op* tot_op = r.pk_op[pk1]; if (tot_op == 0) continue; Op* gci_op = tot_op->next_gci; @@ -1408,24 +1700,32 @@ mergeops() gci_op2 = gci_op2->next_gci; freeop(tmp_op); mergecnt++; - assert(g_num_gci != 0); - g_num_gci--; + assert(r.gciops != 0 && g_gciops != 0); + r.gciops--; + g_gciops--; } gci_op = gci_op->next_gci = gci_op2; } } - ll1("mergeops: used ops = " << g_usedops << " gci ops = " << g_num_gci); - return 0; + ll1("mergeops: " << r.tabname << ": gci recs = " << r.gciops); +} + +static void +mergeops() +{ + for (uint i = 0; i < maxrun(); i++) + mergeops(run(i)); + ll1("mergeops: used recs = " << g_usedops << " gci recs = " << g_gciops); } // set bit for equal post/pre data in UPD, for use in event match static void -cmppostpre() +cmppostpre(Run& r) { - ll1("cmppostpre"); + ll2("cmppostpre: " << r.tabname); Uint32 pk1; for (pk1 = 0; pk1 < g_opts.maxpk; pk1++) { - Op* tot_op = g_pk_op[pk1]; + Op* tot_op = r.pk_op[pk1]; Op* gci_op = tot_op ? tot_op->next_gci : 0; while (gci_op != 0) { if (gci_op->type == Op::UPD) { @@ -1446,6 +1746,148 @@ cmppostpre() } } } + +static void +cmppostpre() +{ + ll1("cmppostpre"); + for (uint i = 0; i < maxrun(); i++) + cmppostpre(run(i)); +} + +static int +findevent(const NdbEventOperation* evt_op) +{ + uint i; + for (i = 0; i < maxrun(); i++) { + if (run(i).evt_op == evt_op) + break; + } + chkrc(i < maxrun()); + return i; +} + +static void +geteventdata(Run& r) +{ + Data (&d)[2] = g_rec_ev->data; + int i, j; + for (j = 0; j < 2; j++) { + for (i = 0; i < ncol(); i++) { + const Col& c = getcol(i); + int ind, ret; + if (! c.isblob()) { + NdbRecAttr* ra = r.ev_ra[j][i]; + ind = ra->isNULL(); + } else { + NdbBlob* bh = r.ev_bh[j][i]; + ret = bh->getDefined(ind); + assert(ret == 0); + if (ind == 0) { // value was returned and is not NULL + Data::Txt& txt = *d[j].ptr[i].txt; + Uint64 len64; + ret = bh->getLength(len64); + assert(ret == 0); + txt.len = (uint)len64; + delete [] txt.val; + txt.val = new char [txt.len]; + memset(txt.val, 'X', txt.len); + Uint32 len = txt.len; + ret = bh->readData(txt.val, len); + assert(ret == 0 && len == txt.len); + } + } + d[j].ind[i] = ind; + } + } +} + +static int +addgcievents(Uint64 gci) +{ + ll1("getgcieventops"); + uint count = 0; + uint seen_current = 0; + Uint32 iter = 0; + while (1) { + Uint32 evtypes = 0; + const NdbEventOperation* evt_op = + g_ndb->getGCIEventOperations(&iter, &evtypes); + if (evt_op == 0) + break; + // evt_op->getGCI() is not defined yet + int i; + chkrc((i = findevent(evt_op)) != -1); + run(i).addevtypes(gci, evtypes, 0); + seen_current += (g_evt_op == evt_op); + count++; + } + chkrc(seen_current == 1); + ll1("addgcievents: " << count); + return 0; +} + +static int +runevents() +{ + ll1("runevents"); + uint mspoll = 1000; + uint npoll = 6; // strangely long delay + ll1("poll " << npoll); + Uint64 gci = (Uint64)0; + while (npoll != 0) { + npoll--; + int ret; + ret = g_ndb->pollEvents(mspoll); + if (ret <= 0) + continue; + while (1) { + g_rec_ev->init(Op::EV); + g_evt_op = g_ndb->nextEvent(); + if (g_evt_op == 0) + break; + Uint64 newgci = g_evt_op->getGCI(); + assert(newgci != 0); + g_rec_ev->gci = newgci; + if (gci != newgci) { + ll1("new gci: " << gci << " -> " << newgci); + gci = newgci; + // add slot in each tab|e + uint i; + for (i = 0; i < maxtab(); i++) + chkrc(run(i).addgci(gci) == 0); + chkrc(addgcievents(gci) == 0); + } + int i; + chkrc((i = findevent(g_evt_op)) != -1); + Run& r = run(i); + NdbDictionary::Event::TableEvent evtype = g_evt_op->getEventType(); + chkrc(seteventtype(g_rec_ev, evtype) == 0); + r.addevtypes(gci, (Uint32)evtype, 1); + geteventdata(r); + ll2("runevents: EVT: " << *g_rec_ev); + // check basic sanity + Uint32 pk1 = ~(Uint32)0; + chkrc(checkop(g_rec_ev, pk1) == 0); + // add to events + Op* tot_ev = r.pk_ev[pk1]; + if (tot_ev == 0) + tot_ev = r.pk_ev[pk1] = getop(Op::EV); + Op* last_ev = tot_ev; + while (last_ev->next_ev != 0) + last_ev = last_ev->next_ev; + // copy and add + Op* ev = getop(Op::EV); + copyop(g_rec_ev, ev); + g_rec_ev->freemem(); + last_ev->next_ev = ev; + g_num_ev++; + } + } + ll1("runevents: used ops = " << g_usedops << " events = " << g_num_ev); + return 0; +} + static int cmpopevdata(const Data& d1, const Data& d2) { @@ -1474,9 +1916,8 @@ cmpopevdata(const Data (&d1)[2], const Data (&d2)[2]) } static int -matchevent(Op* ev) +matchevent(Run& r, Op* ev) { - Op::Type t = ev->type; Data (&d2)[2] = ev->data; // get PK Uint32 pk1 = d2[0].pk1; @@ -1484,10 +1925,10 @@ matchevent(Op* ev) // on error repeat and print details uint loop = 0; while (loop <= 1) { - uint g_loglevel = loop == 0 ? g_opts.loglevel : 2; - ll1("matchevent: pk1=" << pk1 << " type=" << t); + int g_loglevel = loop == 0 ? g_opts.loglevel : 2; + ll1("matchevent: " << r.tabname << ": pk1=" << pk1 << " type=" << ev->type); ll2("EVT: " << *ev); - Op* tot_op = g_pk_op[pk1]; + Op* tot_op = r.pk_op[pk1]; Op* gci_op = tot_op ? tot_op->next_gci : 0; uint pos = 0; bool ok = false; @@ -1506,21 +1947,21 @@ matchevent(Op* ev) } com_op = com_op->next_com; } - // match agains GCI op + // match against GCI op if (gci_op->type != Op::NUL) { const Data (&d1)[2] = gci_op->data; if (cmpopevdata(d1, d2) == 0) { bool tmpok = true; - if (gci_op->type != t) { - ll2("***: wrong type " << gci_op->type << " != " << t); + if (gci_op->type != ev->type) { + ll2("***: wrong type " << gci_op->type << " != " << ev->type); tmpok = false; } if (gci_op->match) { ll2("***: duplicate match"); tmpok = false; } - if (pos != g_ev_pos[pk1]) { - ll2("***: wrong pos " << pos << " != " << g_ev_pos[pk1]); + if (pos != r.ev_pos[pk1]) { + ll2("***: wrong pos " << pos << " != " << r.ev_pos[pk1]); tmpok = false; } if (gci_op->gci != ev->gci) { @@ -1537,10 +1978,10 @@ matchevent(Op* ev) gci_op = gci_op->next_gci; } if (ok) { - ll1("matchevent: match"); + ll2("matchevent: match"); return 0; } - ll1("matchevent: ERROR: no match"); + ll0("matchevent: ERROR: no match"); if (g_loglevel >= 2) return -1; loop++; @@ -1549,19 +1990,20 @@ matchevent(Op* ev) } static int -matchevents() +matchevents(Run& r) { + ll1("matchevents: " << r.tabname); uint nomatch = 0; Uint32 pk1; for (pk1 = 0; pk1 < g_opts.maxpk; pk1++) { - Op* tot_ev = g_pk_ev[pk1]; + Op* tot_ev = r.pk_ev[pk1]; if (tot_ev == 0) continue; Op* ev = tot_ev->next_ev; while (ev != 0) { - if (matchevent(ev) < 0) + if (matchevent(r, ev) < 0) nomatch++; - g_ev_pos[pk1]++; + r.ev_pos[pk1]++; ev = ev->next_ev; } } @@ -1570,13 +2012,22 @@ matchevents() } static int -matchops() +matchevents() { - ll1("matchops"); + ll1("matchevents"); + for (uint i = 0; i < maxrun(); i++) + chkrc(matchevents(run(i)) == 0); + return 0; +} + +static int +matchops(Run& r) +{ + ll1("matchops: " << r.tabname); uint nomatch = 0; Uint32 pk1; for (pk1 = 0; pk1 < g_opts.maxpk; pk1++) { - Op* tot_op = g_pk_op[pk1]; + Op* tot_op = r.pk_op[pk1]; if (tot_op == 0) continue; Op* gci_op = tot_op->next_gci; @@ -1606,84 +2057,52 @@ matchops() return 0; } -static void -geteventdata() +static int +matchops() { - Data (&d)[2] = g_rec_ev->data; - int i, j; - for (j = 0; j < 2; j++) { - for (i = 0; i < ncol(); i++) { - const Col& c = getcol(i); - int ind, ret; - if (! c.isblob()) { - NdbRecAttr* ra = g_ev_ra[j][i]; - ind = ra->isNULL(); - } else { - NdbBlob* bh = g_ev_bh[j][i]; - ret = bh->getDefined(ind); - assert(ret == 0); - if (ind == 0) { // value was returned and is not NULL - Data::Txt& t = *d[j].ptr[i].txt; - Uint64 len64; - ret = bh->getLength(len64); - assert(ret == 0); - t.len = (uint)len64; - delete [] t.val; - t.val = new char [t.len]; - memset(t.val, 'X', t.len); - Uint32 len = t.len; - ret = bh->readData(t.val, len); - assert(ret == 0 && len == t.len); - } - } - d[j].ind[i] = ind; - } - } + ll1("matchops"); + for (uint i = 0; i < maxrun(); i++) + chkrc(matchops(run(i)) == 0); + return 0; } static int -runevents() +matchgcievents(Run& r) { - ll1("runevents"); - uint mspoll = 1000; - uint npoll = 6; // strangely long delay - ll1("poll " << npoll); - while (npoll != 0) { - npoll--; - int ret; - ret = g_ndb->pollEvents(mspoll); - if (ret <= 0) + ll1("matchgcievents: " << r.tabname); + uint i; + for (i = 0; i < r.gcicnt; i++) { + Uint32 t0 = r.gcievtypes[i][0]; + Uint32 t1 = r.gcievtypes[i][1]; + ll1("gci: " << r.gcinum[i] << hex << " report: " << t0 << " seen: " << t1); + + if (r.skip) + chkrc(t0 == 0 && t1 == 0); + if (t0 == 0 && t1 == 0) continue; - while (1) { - g_rec_ev->init(Op::EV); - NdbEventOperation* tmp_op = g_ndb->nextEvent(); - if (tmp_op == 0) - break; - reqrc(g_evt_op == tmp_op); - chkrc(seteventtype(g_rec_ev, g_evt_op->getEventType()) == 0); - geteventdata(); - g_rec_ev->gci = g_evt_op->getGCI(); - // get indicators and blob value - ll2("runevents: EVT: " << *g_rec_ev); - // check basic sanity - Uint32 pk1 = ~(Uint32)0; - chkrc(checkop(g_rec_ev, pk1) == 0); - // add to events - Op* tot_ev = g_pk_ev[pk1]; - if (tot_ev == 0) - tot_ev = g_pk_ev[pk1] = getop(Op::EV); - Op* last_ev = tot_ev; - while (last_ev->next_ev != 0) - last_ev = last_ev->next_ev; - // copy and add - Op* ev = getop(Op::EV); - copyop(g_rec_ev, ev); - g_rec_ev->freemem(); - last_ev->next_ev = ev; - g_num_ev++; + + // check if not reported event op seen + chkrc(t0 != 0); + // check if not reported event type seen + chkrc((~t0 & t1) == 0); + + // the other way does not work under merge + if (g_opts.separate_events) { + // check if reported event op not seen + chkrc(t1 != 0); + // check if reported event type not seen + chkrc((t0 & ~t1) == 0); } } - ll1("runevents: used ops = " << g_usedops << " events = " << g_num_ev); + return 0; +} + +static int +matchgcievents() +{ + ll1("matchgcievents"); + for (uint i = 0; i < maxrun(); i++) + chkrc(matchgcievents(run(i)) == 0); return 0; } @@ -1711,27 +2130,29 @@ static int runtest() { setseed(-1); + initrun(); chkrc(createtable() == 0); chkrc(createevent() == 0); for (g_loop = 0; g_opts.loop == 0 || g_loop < g_opts.loop; g_loop++) { ll0("=== loop " << g_loop << " ==="); setseed(g_loop); resetmem(); - chkrc(scantab() == 0); // alternative: save tot_op for loop > 0 + chkrc(scantable() == 0); // alternative: save tot_op for loop > 0 makeops(); g_rec_ev = getop(Op::EV); chkrc(createeventop() == 0); - chkdb(g_evt_op->execute() == 0); + chkrc(executeeventop() == 0); chkrc(waitgci(3) == 0); chkrc(runops() == 0); if (! g_opts.separate_events) - chkrc(mergeops() == 0); + mergeops(); cmppostpre(); chkrc(runevents() == 0); - ll0("counts: gci = " << g_num_gci << " ev = " << g_num_ev); + ll0("counts: gci ops = " << g_gciops << " ev ops = " << g_num_ev); chkrc(matchevents() == 0); chkrc(matchops() == 0); - chkrc(dropeventop() == 0); + chkrc(matchgcievents() == 0); + chkrc(dropeventops() == 0); // time erases everything.. chkrc(waitgci(1) == 0); } @@ -1751,51 +2172,54 @@ my_long_options[] = { "abort-on-error", 1001, "Do abort() on any error", (gptr*)&g_opts.abort_on_error, (gptr*)&g_opts.abort_on_error, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 }, - { "loglevel", 1002, "Logging level in this program (default 0)", + { "loglevel", 1002, "Logging level in this program 0-3 (default 0)", (gptr*)&g_opts.loglevel, (gptr*)&g_opts.loglevel, 0, GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, - { "loop", 1003, "Number of test loops (default 3, 0=forever)", + { "loop", 1003, "Number of test loops (default 5, 0=forever)", (gptr*)&g_opts.loop, (gptr*)&g_opts.loop, 0, - GET_INT, REQUIRED_ARG, 3, 0, 0, 0, 0, 0 }, - { "maxops", 1004, "Approx number of PK operations (default 1000)", + GET_INT, REQUIRED_ARG, 5, 0, 0, 0, 0, 0 }, + { "maxops", 1004, "Approx number of PK operations per table (default 1000)", (gptr*)&g_opts.maxops, (gptr*)&g_opts.maxops, 0, GET_UINT, REQUIRED_ARG, 1000, 0, 0, 0, 0, 0 }, - { "maxpk", 1005, "Number of different PK values (default 10)", + { "maxpk", 1005, "Number of different PK values (default 10, max 1000)", (gptr*)&g_opts.maxpk, (gptr*)&g_opts.maxpk, 0, GET_UINT, REQUIRED_ARG, 10, 0, 0, 0, 0, 0 }, - { "no-blobs", 1006, "Omit blob attributes (5.0: true)", + { "maxtab", 1006, "Number of tables (default 10, max 100)", + (gptr*)&g_opts.maxtab, (gptr*)&g_opts.maxtab, 0, + GET_INT, REQUIRED_ARG, 10, 0, 0, 0, 0, 0 }, + { "no-blobs", 1007, "Omit blob attributes (5.0: true)", (gptr*)&g_opts.no_blobs, (gptr*)&g_opts.no_blobs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 }, - { "no-implicit-nulls", 1007, "Insert must include all attrs" + { "no-implicit-nulls", 1008, "Insert must include all attrs" " i.e. no implicit NULLs", (gptr*)&g_opts.no_implicit_nulls, (gptr*)&g_opts.no_implicit_nulls, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 }, - { "no-missing-update", 1008, "Update must include all non-PK attrs", + { "no-missing-update", 1009, "Update must include all non-PK attrs", (gptr*)&g_opts.no_missing_update, (gptr*)&g_opts.no_missing_update, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 }, - { "no-multiops", 1009, "Allow only 1 operation per commit", + { "no-multiops", 1010, "Allow only 1 operation per commit", (gptr*)&g_opts.no_multiops, (gptr*)&g_opts.no_multiops, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 }, - { "no-nulls", 1010, "Create no NULL values", + { "no-nulls", 1011, "Create no NULL values", (gptr*)&g_opts.no_nulls, (gptr*)&g_opts.no_nulls, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 }, - { "one-blob", 1011, "Only one blob attribute (default 2)", + { "one-blob", 1012, "Only one blob attribute (default 2)", (gptr*)&g_opts.one_blob, (gptr*)&g_opts.one_blob, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 }, - { "opstring", 1012, "Operations to run e.g. idiucdc (c is commit) or" + { "opstring", 1013, "Operations to run e.g. idiucdc (c is commit) or" " iuuc:uudc (the : separates loops)", (gptr*)&g_opts.opstring, (gptr*)&g_opts.opstring, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, - { "seed", 1013, "Random seed (0=loop number, default -1=random)", + { "seed", 1014, "Random seed (0=loop number, default -1=random)", (gptr*)&g_opts.seed, (gptr*)&g_opts.seed, 0, GET_INT, REQUIRED_ARG, -1, 0, 0, 0, 0, 0 }, - { "separate-events", 1014, "Do not combine events per GCI (5.0: true)", + { "separate-events", 1015, "Do not combine events per GCI (5.0: true)", (gptr*)&g_opts.separate_events, (gptr*)&g_opts.separate_events, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 }, - { "tweak", 1015, "Whatever the source says", + { "tweak", 1016, "Whatever the source says", (gptr*)&g_opts.tweak, (gptr*)&g_opts.tweak, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, - { "use-table", 1016, "Use existing table 'tem1'", + { "use-table", 1017, "Use existing tables", (gptr*)&g_opts.use_table, (gptr*)&g_opts.use_table, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, @@ -1812,10 +2236,6 @@ usage() static int checkopts() { - if (g_opts.maxpk > g_maxpk) { - ll0("setting maxpk to " << g_maxpk); - g_opts.maxpk = g_maxpk; - } if (g_opts.separate_events) { g_opts.no_blobs = true; } @@ -1837,16 +2257,25 @@ checkopts() uint i; for (i = 0; i < g_opstringparts; i++) { const char* s = g_opstringpart[i]; - while (*s != 0) - if (strchr("iduc", *s++) == 0) + while (*s != 0) { + if (strchr("iduc", *s++) == 0) { + ll0("opstring chars are i,d,u,c"); return -1; - if (s == g_opstringpart[i] || s[-1] != 'c') + } + } + if (s == g_opstringpart[i] || s[-1] != 'c') { + ll0("opstring chain must end in 'c'"); return -1; + } } } if (g_opts.no_nulls) { g_opts.no_implicit_nulls = true; } + if (g_opts.maxpk > g_maxpk || + g_opts.maxtab > g_maxtab) { + return -1; + } return 0; } @@ -1876,10 +2305,8 @@ main(int argc, char** argv) } } } - if (g_evt_op != 0) { - (void)dropeventop(); - g_evt_op = 0; - } + dropeventops(true); + dropevent(true); delete g_ndb; delete g_ncc; return NDBT_ProgramExit(NDBT_FAILED); -- cgit v1.2.1 From fa83f8baa094ed45330afa0e2516eeb31e803b27 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 16:41:07 +0200 Subject: added missing MYSQLTEST_VARDIR declaration --- mysql-test/mysql-test-run.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index fb3484c212e..93f741aecff 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -171,7 +171,8 @@ BASEDIR=`pwd` cd $CWD MYSQL_TEST_DIR=$BASEDIR/mysql-test MYSQL_TEST_WINDIR=$MYSQL_TEST_DIR -export MYSQL_TEST_DIR MYSQL_TEST_WINDIR +MYSQLTEST_VARDIR=$MYSQL_TEST_DIR/var +export MYSQL_TEST_DIR MYSQL_TEST_WINDIR MYSQLTEST_VARDIR STD_DATA=$MYSQL_TEST_DIR/std_data hostname=`hostname` # Installed in the mysql privilege table -- cgit v1.2.1 From 2b5995479a69d7f138f06aca4b8e1a2de12db689 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 10:57:30 -0400 Subject: BUG#19309: Problem with calling proecdures twice Need to flag when a copy is needed to not overwrite a create_info object connected to the lex structure sql/mysql_priv.h: Need to flag when a copy is needed to not overwrite a create_info object connected to the lex structure sql/sql_insert.cc: Need to flag when a copy is needed to not overwrite a create_info object connected to the lex structure sql/sql_parse.cc: Need to flag when a copy is needed to not overwrite a create_info object connected to the lex structure sql/sql_table.cc: Need to flag when a copy is needed to not overwrite a create_info object connected to the lex structure --- sql/mysql_priv.h | 3 ++- sql/sql_insert.cc | 2 +- sql/sql_parse.cc | 2 +- sql/sql_table.cc | 35 +++++++++++++++++++++++++++-------- 4 files changed, 31 insertions(+), 11 deletions(-) diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 6f10e812f3e..36d72505076 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -862,7 +862,8 @@ int prepare_create_field(create_field *sql_field, bool mysql_create_table(THD *thd,const char *db, const char *table_name, HA_CREATE_INFO *create_info, List &fields, List &keys, - bool tmp_table, uint select_field_count); + bool tmp_table, uint select_field_count, + bool use_copy_create_info); bool mysql_alter_table(THD *thd, char *new_db, char *new_name, HA_CREATE_INFO *create_info, diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index f1f97400283..8863d138568 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -2657,7 +2657,7 @@ static TABLE *create_table_from_items(THD *thd, HA_CREATE_INFO *create_info, tmp_disable_binlog(thd); if (!mysql_create_table(thd, create_table->db, create_table->table_name, create_info, *extra_fields, *keys, 0, - select_field_count)) + select_field_count, 0)) { /* If we are here in prelocked mode we either create temporary table diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 00aacd7b67b..a77f321a437 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -2943,7 +2943,7 @@ mysql_execute_command(THD *thd) res= mysql_create_table(thd, create_table->db, create_table->table_name, &lex->create_info, lex->create_list, - lex->key_list, 0, 0); + lex->key_list, 0, 0, 1); } if (!res) send_ok(thd); diff --git a/sql/sql_table.cc b/sql/sql_table.cc index a746e91d318..2ecbc94541a 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -3034,11 +3034,15 @@ static HA_CREATE_INFO *copy_create_info(HA_CREATE_INFO *lex_create_info) thd Thread object db Database table_name Table name - create_info Create information (like MAX_ROWS) + lex_create_info Create information (like MAX_ROWS) fields List of fields to create keys List of keys to create internal_tmp_table Set to 1 if this is an internal temporary table (From ALTER TABLE) + select_field_count + use_copy_create_info Should we make a copy of create info (we do this + when this is called from sql_parse.cc where we + want to ensure lex object isn't manipulated. DESCRIPTION If one creates a temporary table, this is automatically opened @@ -3058,7 +3062,8 @@ bool mysql_create_table_internal(THD *thd, HA_CREATE_INFO *lex_create_info, List &fields, List &keys,bool internal_tmp_table, - uint select_field_count) + uint select_field_count, + bool use_copy_create_info) { char path[FN_REFLEN]; uint path_length; @@ -3070,10 +3075,16 @@ bool mysql_create_table_internal(THD *thd, bool error= TRUE; DBUG_ENTER("mysql_create_table_internal"); - if (!(create_info= copy_create_info(lex_create_info))) + if (use_copy_create_info) { - DBUG_RETURN(TRUE); + if (!(create_info= copy_create_info(lex_create_info))) + { + DBUG_RETURN(TRUE); + } } + else + create_info= lex_create_info; + /* Check for duplicate fields and check type of table to create */ if (!fields.elements) { @@ -3388,7 +3399,8 @@ bool mysql_create_table(THD *thd, const char *db, const char *table_name, HA_CREATE_INFO *create_info, List &fields, List &keys,bool internal_tmp_table, - uint select_field_count) + uint select_field_count, + bool use_copy_create_info) { bool result; DBUG_ENTER("mysql_create_table"); @@ -3412,7 +3424,8 @@ bool mysql_create_table(THD *thd, const char *db, const char *table_name, result= mysql_create_table_internal(thd, db, table_name, create_info, fields, keys, internal_tmp_table, - select_field_count); + select_field_count, + use_copy_create_info); pthread_mutex_lock(&LOCK_lock_db); if (!--creating_table && creating_database) @@ -4358,7 +4371,7 @@ bool mysql_preload_keys(THD* thd, TABLE_LIST* tables) */ bool mysql_create_like_table(THD* thd, TABLE_LIST* table, - HA_CREATE_INFO *create_info, + HA_CREATE_INFO *lex_create_info, Table_ident *table_ident) { TABLE *tmp_table; @@ -4371,9 +4384,15 @@ bool mysql_create_like_table(THD* thd, TABLE_LIST* table, int err; bool res= TRUE; enum legacy_db_type not_used; + HA_CREATE_INFO *create_info; TABLE_LIST src_tables_list; DBUG_ENTER("mysql_create_like_table"); + + if (!(create_info= copy_create_info(lex_create_info))) + { + DBUG_RETURN(TRUE); + } src_db= table_ident->db.str ? table_ident->db.str : thd->db; /* @@ -5721,7 +5740,7 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, */ tmp_disable_binlog(thd); error= mysql_create_table(thd, new_db, tmp_name, - create_info,create_list,key_list,1,0); + create_info,create_list,key_list,1,0,0); reenable_binlog(thd); if (error) DBUG_RETURN(error); -- cgit v1.2.1 From 1cd8b43f9e8bfafc90af79a72716eaa85a6a1648 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 17:17:12 +0200 Subject: ndb - add test_event_merge to daily-devel-tests.txt storage/ndb/test/run-test/daily-devel-tests.txt: test_event_merge --- storage/ndb/test/run-test/daily-devel-tests.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/storage/ndb/test/run-test/daily-devel-tests.txt b/storage/ndb/test/run-test/daily-devel-tests.txt index 75b85ebb1d2..8c1fa491cb9 100644 --- a/storage/ndb/test/run-test/daily-devel-tests.txt +++ b/storage/ndb/test/run-test/daily-devel-tests.txt @@ -228,6 +228,16 @@ max-time: 2500 cmd: test_event args: -n CreateDropNR -l 2 +# +max-time: 600 +cmd: test_event_merge +args: --no-implicit-nulls --separate-events --maxops 10000 + +# +max-time: 600 +cmd: test_event_merge +args: --no-implicit-nulls --no-multiops + max-time: 600 cmd: testBasic args: -n PkRead T1 -- cgit v1.2.1 From 962ae921ba3a36693f7b916356ff33901221d7ea Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 18:27:45 +0300 Subject: Change table_id's to # to make tests portable mysql-test/extra/rpl_tests/rpl_log.test: Change table_id's to # to make test portable mysql-test/r/rpl_ndb_log.result: Update test result to use table_id: # mysql-test/r/rpl_row_log.result: Update test result to use table_id: # mysql-test/r/rpl_row_log_innodb.result: Update test result to use table_id: # --- mysql-test/extra/rpl_tests/rpl_log.test | 1 + mysql-test/r/rpl_ndb_log.result | 4 ++-- mysql-test/r/rpl_row_log.result | 4 ++-- mysql-test/r/rpl_row_log_innodb.result | 4 ++-- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/mysql-test/extra/rpl_tests/rpl_log.test b/mysql-test/extra/rpl_tests/rpl_log.test index cfbc8110d06..cc3a9b4ffb5 100644 --- a/mysql-test/extra/rpl_tests/rpl_log.test +++ b/mysql-test/extra/rpl_tests/rpl_log.test @@ -142,6 +142,7 @@ set insert_id=5; insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); --replace_result $VERSION VERSION --replace_column 2 # 5 # +--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ show binlog events; select * from t1; drop table t1; diff --git a/mysql-test/r/rpl_ndb_log.result b/mysql-test/r/rpl_ndb_log.result index b88af325397..e0135a94c63 100644 --- a/mysql-test/r/rpl_ndb_log.result +++ b/mysql-test/r/rpl_ndb_log.result @@ -140,8 +140,8 @@ insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); show binlog events; Log_name Pos Event_type Server_id End_log_pos Info slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 -slave-bin.000001 # Table_map 2 # table_id: 30 (test.t1) -slave-bin.000001 # Write_rows 2 # table_id: 30 flags: STMT_END_F +slave-bin.000001 # Table_map 2 # table_id: # (test.t1) +slave-bin.000001 # Write_rows 2 # table_id: # flags: STMT_END_F select * from t1; a b 1 1 diff --git a/mysql-test/r/rpl_row_log.result b/mysql-test/r/rpl_row_log.result index 609f9376efd..89163e1e37b 100644 --- a/mysql-test/r/rpl_row_log.result +++ b/mysql-test/r/rpl_row_log.result @@ -108,8 +108,8 @@ insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); show binlog events; Log_name Pos Event_type Server_id End_log_pos Info slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 -slave-bin.000001 # Table_map 2 # table_id: 21 (test.t1) -slave-bin.000001 # Write_rows 2 # table_id: 21 flags: STMT_END_F +slave-bin.000001 # Table_map 2 # table_id: # (test.t1) +slave-bin.000001 # Write_rows 2 # table_id: # flags: STMT_END_F select * from t1; a b 1 1 diff --git a/mysql-test/r/rpl_row_log_innodb.result b/mysql-test/r/rpl_row_log_innodb.result index b47dff40454..3bcd8a6a0fb 100644 --- a/mysql-test/r/rpl_row_log_innodb.result +++ b/mysql-test/r/rpl_row_log_innodb.result @@ -116,8 +116,8 @@ insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); show binlog events; Log_name Pos Event_type Server_id End_log_pos Info slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 -slave-bin.000001 # Table_map 2 # table_id: 21 (test.t1) -slave-bin.000001 # Write_rows 2 # table_id: 21 flags: STMT_END_F +slave-bin.000001 # Table_map 2 # table_id: # (test.t1) +slave-bin.000001 # Write_rows 2 # table_id: # flags: STMT_END_F select * from t1; a b 1 1 -- cgit v1.2.1 From e8e52a6a2557f3a6e6e3d50841eb545c9cf8d0cc Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 18:35:19 +0300 Subject: Cleanup to patch for Bug#18246, "compilation error with tcp_wrapper" include/my_libwrap.h: Changed includes to the header file. mysys/my_libwrap.c: Added comment and .c file now takes needed includes from the corresponding .h file. sql/mysqld.cc: Include this block from my_libwra.h now. Moved two variables out of the otherwise same block. --- include/my_libwrap.h | 9 +++++++++ mysys/my_libwrap.c | 15 +++++++++------ sql/mysqld.cc | 13 +++---------- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/include/my_libwrap.h b/include/my_libwrap.h index a5cc9879e4f..6437cbaed84 100644 --- a/include/my_libwrap.h +++ b/include/my_libwrap.h @@ -14,6 +14,15 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#ifdef HAVE_LIBWRAP +#include +#include +#ifdef NEED_SYS_SYSLOG_H +#include +#endif /* NEED_SYS_SYSLOG_H */ + extern void my_fromhost(struct request_info *req); extern int my_hosts_access(struct request_info *req); extern char *my_eval_client(struct request_info *req); + +#endif /* HAVE_LIBWRAP */ diff --git a/mysys/my_libwrap.c b/mysys/my_libwrap.c index 29a0ecf3fc6..be8adbab0a1 100644 --- a/mysys/my_libwrap.c +++ b/mysys/my_libwrap.c @@ -14,14 +14,15 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* + This is needed to be able to compile with original libwrap header + files that don't have the prototypes +*/ + #include +#include + #ifdef HAVE_LIBWRAP -#include -#include -#ifdef NEED_SYS_SYSLOG_H -#include -#endif /* NEED_SYS_SYSLOG_H */ -#endif void my_fromhost(struct request_info *req) { @@ -37,3 +38,5 @@ char *my_eval_client(struct request_info *req) { eval_client(req); } + +#endif /* HAVE_LIBWRAP */ diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 262a5352ed9..b73cd350012 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -120,16 +120,7 @@ extern "C" { // Because of SCO 3.2V4.2 #include #endif /* __WIN__ */ -#ifdef HAVE_LIBWRAP -#include -#include -#ifdef NEED_SYS_SYSLOG_H -#include -#endif /* NEED_SYS_SYSLOG_H */ -int allow_severity = LOG_INFO; -int deny_severity = LOG_WARNING; - -#endif /* HAVE_LIBWRAP */ +#include #ifdef HAVE_SYS_MMAN_H #include @@ -591,6 +582,8 @@ static const char* default_dbug_option; #endif #ifdef HAVE_LIBWRAP const char *libwrapName= NULL; +int allow_severity = LOG_INFO; +int deny_severity = LOG_WARNING; #endif #ifdef HAVE_QUERY_CACHE static ulong query_cache_limit= 0; -- cgit v1.2.1 From 822e8866c7009d8d7bd25300f1cc4c09c110c640 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 00:29:04 +0400 Subject: Fixed bug #14896. This bug in Field_string::cmp resulted in a wrong comparison with keys in partial indexes over multi-byte character fields. Given field a is declared as a varchar(16) collate utf8_unicode_ci INDEX(a(4)) gives us an example of such an index. Wrong key comparisons could lead to wrong result sets if the selected query execution plan used a range scan by a partial index over a utf8 character field. This also caused wrong results in many other cases. mysql-test/t/ctype_utf8.test: Added test cases for bug #14896. mysql-test/r/ctype_utf8.result: Added test cases for bug #14896. sql/field.cc: Fixed bug #14896. This bug in Field_string::cmp resulted in a wrong comparison with keys in partial indexes over multi-byte character fields. Given field a is declared as a varchar(16) collate utf8_unicode_ci INDEX(a(4)) gives us an example of such an index. Wrong key comparisons could lead to wrong result sets if the selected query execution plan used a range scan by a partial index over a utf8 character field. This also caused wrong results in many other cases. --- mysql-test/r/ctype_utf8.result | 40 ++++++++++++++++++++++++++++++++++++++++ mysql-test/t/ctype_utf8.test | 26 ++++++++++++++++++++++++++ sql/field.cc | 20 +++++++------------- 3 files changed, 73 insertions(+), 13 deletions(-) diff --git a/mysql-test/r/ctype_utf8.result b/mysql-test/r/ctype_utf8.result index 69d7577ee77..cc271176dfc 100644 --- a/mysql-test/r/ctype_utf8.result +++ b/mysql-test/r/ctype_utf8.result @@ -1124,3 +1124,43 @@ check table t1; Table Op Msg_type Msg_text test.t1 check status OK drop table t1; +SET NAMES utf8; +CREATE TABLE t1 (id int PRIMARY KEY, +a varchar(16) collate utf8_unicode_ci NOT NULL default '', +b int, +f varchar(128) default 'XXX', +INDEX (a(4)) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +INSERT INTO t1(id, a, b) VALUES +(1, 'cccc', 50), (2, 'cccc', 70), (3, 'cccc', 30), +(4, 'cccc', 30), (5, 'cccc', 20), (6, 'bbbbbb', 40), +(7, 'dddd', 30), (8, 'aaaa', 10), (9, 'aaaa', 50), +(10, 'eeeee', 40), (11, 'bbbbbb', 60); +SELECT id, a, b FROM t1; +id a b +1 cccc 50 +2 cccc 70 +3 cccc 30 +4 cccc 30 +5 cccc 20 +6 bbbbbb 40 +7 dddd 30 +8 aaaa 10 +9 aaaa 50 +10 eeeee 40 +11 bbbbbb 60 +SELECT id, a, b FROM t1 WHERE a BETWEEN 'aaaa' AND 'bbbbbb'; +id a b +8 aaaa 10 +9 aaaa 50 +6 bbbbbb 40 +11 bbbbbb 60 +SELECT id, a FROM t1 WHERE a='bbbbbb'; +id a +6 bbbbbb +11 bbbbbb +SELECT id, a FROM t1 WHERE a='bbbbbb' ORDER BY b; +id a +6 bbbbbb +11 bbbbbb +DROP TABLE t1; diff --git a/mysql-test/t/ctype_utf8.test b/mysql-test/t/ctype_utf8.test index 5044f7979f1..9b8e6590999 100644 --- a/mysql-test/t/ctype_utf8.test +++ b/mysql-test/t/ctype_utf8.test @@ -926,4 +926,30 @@ INSERT INTO t1 VALUES('uUABCDEFGHIGKLMNOPRSTUVWXYZ̈bbbbbbbbbbbbbbbbbbbbbbbbbbbb check table t1; drop table t1; +# +# Bug#14896: Comparison with a key in a partial index over mb chararacter field +# + +SET NAMES utf8; +CREATE TABLE t1 (id int PRIMARY KEY, + a varchar(16) collate utf8_unicode_ci NOT NULL default '', + b int, + f varchar(128) default 'XXX', + INDEX (a(4)) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +INSERT INTO t1(id, a, b) VALUES + (1, 'cccc', 50), (2, 'cccc', 70), (3, 'cccc', 30), + (4, 'cccc', 30), (5, 'cccc', 20), (6, 'bbbbbb', 40), + (7, 'dddd', 30), (8, 'aaaa', 10), (9, 'aaaa', 50), + (10, 'eeeee', 40), (11, 'bbbbbb', 60); + +SELECT id, a, b FROM t1; + +SELECT id, a, b FROM t1 WHERE a BETWEEN 'aaaa' AND 'bbbbbb'; + +SELECT id, a FROM t1 WHERE a='bbbbbb'; +SELECT id, a FROM t1 WHERE a='bbbbbb' ORDER BY b; + +DROP TABLE t1; + # End of 4.1 tests diff --git a/sql/field.cc b/sql/field.cc index ec4d4b4e4f5..3cb0c0d3a7c 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -5072,17 +5072,6 @@ int Field_string::cmp(const char *a_ptr, const char *b_ptr) { uint a_len, b_len; - if (field_charset->strxfrm_multiply > 1) - { - /* - We have to remove end space to be able to compare multi-byte-characters - like in latin_de 'ae' and 0xe4 - */ - return field_charset->coll->strnncollsp(field_charset, - (const uchar*) a_ptr, field_length, - (const uchar*) b_ptr, - field_length); - } if (field_charset->mbmaxlen != 1) { uint char_len= field_length/field_charset->mbmaxlen; @@ -5091,8 +5080,13 @@ int Field_string::cmp(const char *a_ptr, const char *b_ptr) } else a_len= b_len= field_length; - return my_strnncoll(field_charset,(const uchar*) a_ptr, a_len, - (const uchar*) b_ptr, b_len); + /* + We have to remove end space to be able to compare multi-byte-characters + like in latin_de 'ae' and 0xe4 + */ + return field_charset->coll->strnncollsp(field_charset, + (const uchar*) a_ptr, a_len, + (const uchar*) b_ptr, b_len); } -- cgit v1.2.1 From 33e3a59d236ccca6fa1ae2bd99a173a41cf74eda Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 19:08:30 -0400 Subject: mmanual merge --- mysql-test/r/partition.result | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mysql-test/r/partition.result b/mysql-test/r/partition.result index 63abaf6eda4..7bea0de80b8 100644 --- a/mysql-test/r/partition.result +++ b/mysql-test/r/partition.result @@ -6,6 +6,13 @@ create procedure pz() alter table t1 engine = myisam; call pz(); call pz(); +drop procedure pz; +drop table t1; +create table t1 (a int) +engine = csv +partition by list (a) +(partition p0 values in (null)); +ERROR HY000: CSV handler cannot be used in partitioned tables create table t1 (a bigint) partition by range (a) (partition p0 values less than (0xFFFFFFFFFFFFFFFF), -- cgit v1.2.1 From 532915484940221bc3c9a3090667c0b441183517 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 20:55:33 -0400 Subject: BUG#17138: Error in stored procedure Review comments mysql-test/t/partition.test: Changed procedure names ensured procedures were dropped sql/ha_ndbcluster.h: Improved name of method sql/ha_partition.h: Improved name of method sql/handler.h: Improved name of method Removed deprecated constants sql/item_sum.cc: Improved name of method sql/sql_acl.cc: Improved name of method sql/sql_insert.cc: Removed use of HA_WRITE_SKIP and introduced is_fatal_error instead sql/sql_select.cc: Improved name of method sql/sql_table.cc: Improved name of method Reintroduced dead code for future possible use sql/sql_union.cc: Improved name of method sql/sql_update.cc: Improved name of method --- mysql-test/t/partition.test | 8 ++++++-- sql/ha_ndbcluster.h | 4 ++-- sql/ha_partition.h | 4 ++-- sql/handler.h | 7 +------ sql/item_sum.cc | 2 +- sql/sql_acl.cc | 8 ++++---- sql/sql_insert.cc | 13 +++++++------ sql/sql_select.cc | 4 ++-- sql/sql_table.cc | 5 +++-- sql/sql_union.cc | 2 +- sql/sql_update.cc | 12 ++++++------ 11 files changed, 35 insertions(+), 34 deletions(-) diff --git a/mysql-test/t/partition.test b/mysql-test/t/partition.test index d5ce7c5b797..8cfcc059920 100644 --- a/mysql-test/t/partition.test +++ b/mysql-test/t/partition.test @@ -1202,6 +1202,8 @@ drop database db99; # #BUG 17138 Problem with stored procedure and analyze partition # +drop procedure mysqltest_1 if exists; + create table t1 (a int) partition by list (a) (partition p0 values in (0)); @@ -1209,7 +1211,7 @@ partition by list (a) insert into t1 values (0); delimiter //; -create procedure po () +create procedure mysqltest_1 () begin begin declare continue handler for sqlexception begin end; @@ -1219,7 +1221,9 @@ begin execute stmt1; end// -call po()// +call mysqltest_1()// delimiter ;// drop table t1; +drop procedure mysqltest_1; + --echo End of 5.1 tests diff --git a/sql/ha_ndbcluster.h b/sql/ha_ndbcluster.h index a994931843b..4261e9604b5 100644 --- a/sql/ha_ndbcluster.h +++ b/sql/ha_ndbcluster.h @@ -654,9 +654,9 @@ class ha_ndbcluster: public handler int get_default_no_partitions(ulonglong max_rows); bool get_no_parts(const char *name, uint *no_parts); void set_auto_partitions(partition_info *part_info); - virtual bool cannot_ignore_error(int error, uint flags) + virtual bool is_fatal_error(int error, uint flags) { - if (!handler::cannot_ignore_error(error, flags)) + if (!handler::is_fatal_error(error, flags)) return FALSE; if (error == HA_ERR_NO_PARTITION_FOUND) return FALSE; diff --git a/sql/ha_partition.h b/sql/ha_partition.h index 2bf9811827f..4b85ddd2def 100644 --- a/sql/ha_partition.h +++ b/sql/ha_partition.h @@ -302,9 +302,9 @@ public: virtual void start_bulk_insert(ha_rows rows); virtual int end_bulk_insert(); - virtual bool cannot_ignore_error(int error, uint flags) + virtual bool is_fatal_error(int error, uint flags) { - if (!handler::cannot_ignore_error(error, flags)) + if (!handler::is_fatal_error(error, flags)) return FALSE; if (error == HA_ERR_NO_PARTITION_FOUND) return FALSE; diff --git a/sql/handler.h b/sql/handler.h index 048657e419b..3e42938b5a3 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -216,11 +216,6 @@ #define HA_BLOCK_LOCK 256 /* unlock when reading some records */ #define HA_OPEN_TEMPORARY 512 - /* Errors on write which is recoverable (Key exist) */ -#define HA_WRITE_SKIP 121 /* Duplicate key on write */ -#define HA_READ_CHECK 123 /* Update with is recoverable */ -#define HA_CANT_DO_THAT 131 /* Databasehandler can't do it */ - /* Some key definitions */ #define HA_KEY_NULL_LENGTH 1 #define HA_KEY_BLOB_LENGTH 2 @@ -984,7 +979,7 @@ public: #define HA_CHECK_DUPP_KEY 1 #define HA_CHECK_DUPP_UNIQUE 2 #define HA_CHECK_DUPP (HA_CHECK_DUPP_KEY + HA_CHECK_DUPP_UNIQUE) - virtual bool cannot_ignore_error(int error, uint flags) + virtual bool is_fatal_error(int error, uint flags) { if (!error || ((flags & HA_CHECK_DUPP_KEY) && diff --git a/sql/item_sum.cc b/sql/item_sum.cc index ff37ceaa6fe..caaa111645a 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -2663,7 +2663,7 @@ bool Item_sum_count_distinct::add() return tree->unique_add(table->record[0] + table->s->null_bytes); } if ((error= table->file->ha_write_row(table->record[0])) && - table->file->cannot_ignore_error(error, HA_CHECK_DUPP)) + table->file->is_fatal_error(error, HA_CHECK_DUPP)) return TRUE; return FALSE; } diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index e231c00c678..18591052a1f 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -2049,7 +2049,7 @@ static int replace_user_table(THD *thd, TABLE *table, const LEX_USER &combo, } else if ((error=table->file->ha_write_row(table->record[0]))) // insert { // This should never happen - if (table->file->cannot_ignore_error(error, HA_CHECK_DUPP)) + if (table->file->is_fatal_error(error, HA_CHECK_DUPP)) { table->file->print_error(error,MYF(0)); /* purecov: deadcode */ error= -1; /* purecov: deadcode */ @@ -2171,7 +2171,7 @@ static int replace_db_table(TABLE *table, const char *db, } else if (rights && (error= table->file->ha_write_row(table->record[0]))) { - if (table->file->cannot_ignore_error(error, HA_CHECK_DUPP_KEY)) + if (table->file->is_fatal_error(error, HA_CHECK_DUPP_KEY)) goto table_error; /* purecov: deadcode */ } @@ -2743,7 +2743,7 @@ static int replace_table_table(THD *thd, GRANT_TABLE *grant_table, else { error=table->file->ha_write_row(table->record[0]); - if (table->file->cannot_ignore_error(error, HA_CHECK_DUPP_KEY)) + if (table->file->is_fatal_error(error, HA_CHECK_DUPP_KEY)) goto table_error; /* purecov: deadcode */ } @@ -2861,7 +2861,7 @@ static int replace_routine_table(THD *thd, GRANT_NAME *grant_name, else { error=table->file->ha_write_row(table->record[0]); - if (table->file->cannot_ignore_error(error, HA_CHECK_DUPP_KEY)) + if (table->file->is_fatal_error(error, HA_CHECK_DUPP_KEY)) goto table_error; } diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 0e43eba4dcc..bb6378eece9 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -976,15 +976,16 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info) while ((error=table->file->ha_write_row(table->record[0]))) { uint key_nr; - if (error != HA_WRITE_SKIP) + bool is_duplicate_key_error; + if (table->file->is_fatal_error(error, HA_CHECK_DUPP)) goto err; table->file->restore_auto_increment(); // it's too early here! BUG#20188 - if (info->ignore && - !table->file->cannot_ignore_error(error, 0)) + is_duplicate_key_error= table->file->is_fatal_error(error, 0); + if (info->ignore && !is_duplicate_key_error) goto ok_or_after_trg_err; if ((int) (key_nr = table->file->get_dup_key(error)) < 0) { - error=HA_WRITE_SKIP; /* Database can't find key */ + error=HA_ERR_FOUND_DUPP_KEY; /* Database can't find key */ goto err; } /* Read all columns for the row we are going to replace */ @@ -1066,7 +1067,7 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info) table->record[0]))) { if (info->ignore && - !table->file->cannot_ignore_error(error, HA_CHECK_DUPP_KEY)) + !table->file->is_fatal_error(error, HA_CHECK_DUPP_KEY)) goto ok_or_after_trg_err; goto err; } @@ -1152,7 +1153,7 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info) else if ((error=table->file->ha_write_row(table->record[0]))) { if (!info->ignore || - table->file->cannot_ignore_error(error, HA_CHECK_DUPP)) + table->file->is_fatal_error(error, HA_CHECK_DUPP)) goto err; table->file->restore_auto_increment(); } diff --git a/sql/sql_select.cc b/sql/sql_select.cc index add4746c819..89ca6c7dc6c 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -9354,7 +9354,7 @@ bool create_myisam_from_heap(THD *thd, TABLE *table, TMP_TABLE_PARAM *param, /* copy row that filled HEAP table */ if ((write_err=new_table.file->write_row(table->record[0]))) { - if (new_table.file->cannot_ignore_error(write_err, HA_CHECK_DUPP) || + if (new_table.file->is_fatal_error(write_err, HA_CHECK_DUPP) || !ignore_last_dupp_key_error) goto err; } @@ -10777,7 +10777,7 @@ end_write(JOIN *join, JOIN_TAB *join_tab __attribute__((unused)), join->found_records++; if ((error=table->file->write_row(table->record[0]))) { - if (table->file->cannot_ignore_error(error, HA_CHECK_DUPP)) + if (table->file->is_fatal_error(error, HA_CHECK_DUPP)) goto end; if (create_myisam_from_heap(join->thd, table, &join->tmp_table_param, error,1)) diff --git a/sql/sql_table.cc b/sql/sql_table.cc index e6ccaa2d9f2..3bf4c0bd99b 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -6269,9 +6269,10 @@ copy_data_between_tables(TABLE *from,TABLE *to, if ((error=to->file->ha_write_row((byte*) to->record[0]))) { if (!ignore || - to->file->cannot_ignore_error(error, HA_CHECK_DUPP)) + handle_duplicates != DUP_REPLACE || /* Currently always false */ + to->file->is_fatal_error(error, HA_CHECK_DUPP)) { - if (error == HA_ERR_FOUND_DUPP_KEY) + if (!to->file->is_fatal_error(error, HA_CHECK_DUPP)) { uint key_nr= to->file->get_dup_key(error); if ((int) key_nr >= 0) diff --git a/sql/sql_union.cc b/sql/sql_union.cc index 5ad5ecc6556..fd4529090d4 100644 --- a/sql/sql_union.cc +++ b/sql/sql_union.cc @@ -65,7 +65,7 @@ bool select_union::send_data(List &values) if ((error= table->file->ha_write_row(table->record[0]))) { /* create_myisam_from_heap will generate error if needed */ - if (table->file->cannot_ignore_error(error, HA_CHECK_DUPP) && + if (table->file->is_fatal_error(error, HA_CHECK_DUPP) && create_myisam_from_heap(thd, table, &tmp_table_param, error, 1)) return 1; } diff --git a/sql/sql_update.cc b/sql/sql_update.cc index 0fb221b25a7..414c2b353b3 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -542,13 +542,13 @@ int mysql_update(THD *thd, } } else if (!ignore || - table->file->cannot_ignore_error(error, HA_CHECK_DUPP_KEY)) + table->file->is_fatal_error(error, HA_CHECK_DUPP_KEY)) { /* If (ignore && error is ignorable) we don't have to do anything; otherwise... */ - if (table->file->cannot_ignore_error(error, HA_CHECK_DUPP_KEY)) + if (table->file->is_fatal_error(error, HA_CHECK_DUPP_KEY)) thd->fatal_error(); /* Other handler errors are fatal */ table->file->print_error(error,MYF(0)); error= 1; @@ -1424,13 +1424,13 @@ bool multi_update::send_data(List ¬_used_values) { updated--; if (!ignore || - table->file->cannot_ignore_error(error, HA_CHECK_DUPP_KEY)) + table->file->is_fatal_error(error, HA_CHECK_DUPP_KEY)) { /* If (ignore && error == is ignorable) we don't have to do anything; otherwise... */ - if (table->file->cannot_ignore_error(error, HA_CHECK_DUPP_KEY)) + if (table->file->is_fatal_error(error, HA_CHECK_DUPP_KEY)) thd->fatal_error(); /* Other handler errors are fatal */ table->file->print_error(error,MYF(0)); DBUG_RETURN(1); @@ -1459,7 +1459,7 @@ bool multi_update::send_data(List ¬_used_values) /* Write row, ignoring duplicated updates to a row */ if ((error= tmp_table->file->ha_write_row(tmp_table->record[0]))) { - if (tmp_table->file->cannot_ignore_error(error, HA_CHECK_DUPP) && + if (tmp_table->file->is_fatal_error(error, HA_CHECK_DUPP) && create_myisam_from_heap(thd, tmp_table, tmp_table_param + offset, error, 1)) { @@ -1583,7 +1583,7 @@ int multi_update::do_updates(bool from_send_error) table->record[0]))) { if (!ignore || - table->file->cannot_ignore_error(local_error, HA_CHECK_DUPP_KEY)) + table->file->is_fatal_error(local_error, HA_CHECK_DUPP_KEY)) goto err; } updated++; -- cgit v1.2.1 From edcba74415fc7a2ead3d65628d22efab598a61b8 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 20:27:52 -0700 Subject: traditional grep does not have -q option --- config/ac-macros/compiler_flag.m4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/ac-macros/compiler_flag.m4 b/config/ac-macros/compiler_flag.m4 index 9dda6da72fa..88097c7a62e 100644 --- a/config/ac-macros/compiler_flag.m4 +++ b/config/ac-macros/compiler_flag.m4 @@ -47,7 +47,7 @@ void foo (void) { } EOF if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \ - && grep -q .note.GNU-stack conftest.s \ + && grep .note.GNU-stack conftest.s >/dev/null \ && AC_TRY_COMMAND([${CC-cc} $CCASFLAGS $CPPFLAGS -Wa,--noexecstack -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD]) then -- cgit v1.2.1 From af3c76631cfbc506478483c0d6a5e54fc091af09 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2006 22:39:48 -0700 Subject: Modified the test case for bug 16674 to have the same execution plans in 4.1 and 5.0. --- mysql-test/r/ctype_utf8.result | 14 ++++++++++---- mysql-test/t/ctype_utf8.test | 2 ++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/mysql-test/r/ctype_utf8.result b/mysql-test/r/ctype_utf8.result index c2f4dce0175..fc5645ae10b 100644 --- a/mysql-test/r/ctype_utf8.result +++ b/mysql-test/r/ctype_utf8.result @@ -1173,6 +1173,7 @@ INSERT INTO t1 VALUES ('Käli Käli 2-4'), ('Käli Käli 2-4'), ('Käli Käli 2+4'), ('Käli Käli 2+4'), ('Käli Käli 2-6'), ('Käli Käli 2-6'); +INSERT INTO t1 SELECT * FROM t1; CREATE TABLE t2 ( a CHAR(13) DEFAULT '', INDEX(a) @@ -1181,26 +1182,31 @@ INSERT INTO t2 VALUES ('Kali Kali 2-4'), ('Kali Kali 2-4'), ('Kali Kali 2+4'), ('Kali Kali 2+4'), ('Kali Kali 2-6'), ('Kali Kali 2-6'); +INSERT INTO t2 SELECT * FROM t2; SELECT a FROM t1 WHERE a LIKE 'Käli Käli 2+4'; a Käli Käli 2+4 Käli Käli 2+4 +Käli Käli 2+4 +Käli Käli 2+4 SELECT a FROM t2 WHERE a LIKE 'Kali Kali 2+4'; a Kali Kali 2+4 Kali Kali 2+4 +Kali Kali 2+4 +Kali Kali 2+4 EXPLAIN SELECT a FROM t1 WHERE a LIKE 'Käli Käli 2+4'; id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t1 range a a 40 NULL 2 Using where; Using index +1 SIMPLE t1 range a a 40 NULL 4 Using where; Using index EXPLAIN SELECT a FROM t1 WHERE a = 'Käli Käli 2+4'; id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t1 ref a a 40 const 2 Using where; Using index +1 SIMPLE t1 ref a a 40 const 4 Using where; Using index EXPLAIN SELECT a FROM t2 WHERE a LIKE 'Kali Kali 2+4'; id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t2 range a a 14 NULL 2 Using where; Using index +1 SIMPLE t2 range a a 14 NULL 4 Using where; Using index EXPLAIN SELECT a FROM t2 WHERE a = 'Kali Kali 2+4'; id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t2 ref a a 14 const 2 Using where; Using index +1 SIMPLE t2 ref a a 14 const 4 Using where; Using index DROP TABLE t1,t2; CREATE TABLE t1 ( a char(255) DEFAULT '', diff --git a/mysql-test/t/ctype_utf8.test b/mysql-test/t/ctype_utf8.test index f646142de67..de9bb4687b1 100644 --- a/mysql-test/t/ctype_utf8.test +++ b/mysql-test/t/ctype_utf8.test @@ -966,6 +966,7 @@ INSERT INTO t1 VALUES ('Käli Käli 2-4'), ('Käli Käli 2-4'), ('Käli Käli 2+4'), ('Käli Käli 2+4'), ('Käli Käli 2-6'), ('Käli Käli 2-6'); +INSERT INTO t1 SELECT * FROM t1; CREATE TABLE t2 ( a CHAR(13) DEFAULT '', @@ -976,6 +977,7 @@ INSERT INTO t2 VALUES ('Kali Kali 2-4'), ('Kali Kali 2-4'), ('Kali Kali 2+4'), ('Kali Kali 2+4'), ('Kali Kali 2-6'), ('Kali Kali 2-6'); +INSERT INTO t2 SELECT * FROM t2; SELECT a FROM t1 WHERE a LIKE 'Käli Käli 2+4'; SELECT a FROM t2 WHERE a LIKE 'Kali Kali 2+4'; -- cgit v1.2.1 From 2cec841b4c28c645599e48e9e8e9fad58c03173b Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 00:08:32 -0700 Subject: Post-merge fix. --- strings/ctype-mb.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/strings/ctype-mb.c b/strings/ctype-mb.c index 9d7aad0ca05..36b52826486 100644 --- a/strings/ctype-mb.c +++ b/strings/ctype-mb.c @@ -536,12 +536,7 @@ my_bool my_like_range_mb(CHARSET_INFO *cs, if (*ptr == escape && ptr+1 != end) ptr++; /* Skip escape */ else if (*ptr == w_one || *ptr == w_many) /* '_' and '%' in SQL */ - { - charlen= my_charpos(cs, min_org, min_str, res_length/cs->mbmaxlen); - - if (charlen < (uint) (min_str - min_org)) - min_str= min_org + charlen; - + { /* Calculate length of keys: 'a\0\0... is the smallest possible string when we have space expand -- cgit v1.2.1 From 8751d63e3aceeb90d3d8874e3766a0f11aa769ce Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 10:24:44 +0200 Subject: ndb - bug#16341 create tablespace/logfile group should "back out changes" mysql-test/r/ndb_dd_ddl.result: add testcase for bug#16341 mysql-test/t/ndb_dd_ddl.test: add testcase for bug#16341 sql/ha_ndbcluster.cc: If create data/undo file fails, check if filegroup is same version, and if it is drop it (wo/ checking error) storage/ndb/include/kernel/signaldata/CreateFilegroup.hpp: add version to createfileconf storage/ndb/include/ndbapi/NdbDictionary.hpp: Add NdbDictionary::ObjectId, that can be used to get [ id, version ] during create (only for DD object so far) storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp: add version to createfileconf storage/ndb/src/ndbapi/NdbDictionary.cpp: Add NdbDictionary::ObjectId, that can be used to get [ id, version ] during create (only for DD object so far) storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp: Add NdbDictionary::ObjectId, that can be used to get [ id, version ] during create (only for DD object so far) storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp: Add NdbDictionary::ObjectId, that can be used to get [ id, version ] during create (only for DD object so far) --- mysql-test/r/ndb_dd_ddl.result | 58 +++++++---- mysql-test/t/ndb_dd_ddl.test | 69 ++++++++----- sql/ha_ndbcluster.cc | 33 +++++-- .../include/kernel/signaldata/CreateFilegroup.hpp | 1 + storage/ndb/include/ndbapi/NdbDictionary.hpp | 33 ++++++- storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp | 3 +- storage/ndb/src/ndbapi/NdbDictionary.cpp | 85 ++++++++++++---- storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp | 109 +++++++++++++++------ storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp | 17 ++-- 9 files changed, 301 insertions(+), 107 deletions(-) diff --git a/mysql-test/r/ndb_dd_ddl.result b/mysql-test/r/ndb_dd_ddl.result index 47b95214024..71f42974929 100644 --- a/mysql-test/r/ndb_dd_ddl.result +++ b/mysql-test/r/ndb_dd_ddl.result @@ -4,12 +4,12 @@ CREATE DATABASE mysqltest; **** Begin Duplicate Statement Testing **** CREATE LOGFILE GROUP lg1 ADD UNDOFILE 'undofile.dat' -INITIAL_SIZE 16M +INITIAL_SIZE 1M UNDO_BUFFER_SIZE = 1M ENGINE=NDB; CREATE LOGFILE GROUP lg2 ADD UNDOFILE 'undofile2.dat' -INITIAL_SIZE 16M +INITIAL_SIZE 1M UNDO_BUFFER_SIZE 1M ENGINE NDB; ERROR HY000: Failed to create LOGFILE GROUP @@ -19,35 +19,35 @@ Error 1296 Got error 1514 'Currently there is a limit of one logfile group' from Error 1515 Failed to create LOGFILE GROUP CREATE LOGFILE GROUP lg1 ADD UNDOFILE 'undofile.dat' -INITIAL_SIZE 16M +INITIAL_SIZE 1M UNDO_BUFFER_SIZE = 1M ENGINE=NDB; ERROR HY000: Failed to create LOGFILE GROUP ALTER LOGFILE GROUP lg1 ADD UNDOFILE 'undofile02.dat' -INITIAL_SIZE 4M ENGINE NDB; +INITIAL_SIZE 1M ENGINE NDB; ALTER LOGFILE GROUP lg1 ADD UNDOFILE 'undofile02.dat' -INITIAL_SIZE 4M ENGINE=NDB; +INITIAL_SIZE 1M ENGINE=NDB; ERROR HY000: Failed to alter: CREATE UNDOFILE CREATE TABLESPACE ts1 ADD DATAFILE 'datafile.dat' USE LOGFILE GROUP lg1 -INITIAL_SIZE 12M +INITIAL_SIZE 1M ENGINE NDB; CREATE TABLESPACE ts1 ADD DATAFILE 'datafile.dat' USE LOGFILE GROUP lg1 -INITIAL_SIZE 12M +INITIAL_SIZE 1M ENGINE NDB; ERROR HY000: Failed to create TABLESPACE ALTER TABLESPACE ts1 ADD DATAFILE 'datafile2.dat' -INITIAL_SIZE 12M +INITIAL_SIZE 1M ENGINE=NDB; ALTER TABLESPACE ts1 ADD DATAFILE 'datafile2.dat' -INITIAL_SIZE 12M +INITIAL_SIZE 1M ENGINE=NDB; ERROR HY000: Failed to alter: CREATE DATAFILE CREATE TABLE mysqltest.t1 @@ -94,20 +94,20 @@ DROP DATABASE IF EXISTS mysqltest; **** Begin Statment CaSe Testing **** creaTE LOgfilE GrOuP lg1 adD undoFILE 'undofile.dat' -initiAL_siZE 16M +initiAL_siZE 1M UnDo_BuFfEr_SiZe = 1M ENGInE=NDb; altER LOgFiLE GrOUp lg1 AdD UnDOfILe 'uNdOfiLe02.daT' -INItIAl_SIzE 4M ENgINE nDB; +INItIAl_SIzE 1M ENgINE nDB; CrEAtE TABLEspaCE ts1 ADD DATAfilE 'datafile.dat' UsE LoGFiLE GRoUP lg1 -INITiaL_SizE 12M +INITiaL_SizE 1M ENGiNe NDb; AlTeR tAbLeSpAcE ts1 AdD DaTaFiLe 'dAtAfiLe2.daT' -InItIaL_SiZe 12M +InItIaL_SiZe 1M EnGiNe=NDB; CREATE TABLE t1 (pk1 int not null primary key, b int not null, c int not null) @@ -129,21 +129,21 @@ EnGiNe=nDb; **** Begin = And No = Testing **** CREATE LOGFILE GROUP lg1 ADD UNDOFILE 'undofile.dat' -INITIAL_SIZE=16M +INITIAL_SIZE=1M UNDO_BUFFER_SIZE=1M ENGINE=NDB; ALTER LOGFILE GROUP lg1 ADD UNDOFILE 'undofile02.dat' -INITIAL_SIZE=4M +INITIAL_SIZE=1M ENGINE=NDB; CREATE TABLESPACE ts1 ADD DATAFILE 'datafile.dat' USE LOGFILE GROUP lg1 -INITIAL_SIZE=12M +INITIAL_SIZE=1M ENGINE=NDB; ALTER TABLESPACE ts1 ADD DATAFILE 'datafile2.dat' -INITIAL_SIZE=12M +INITIAL_SIZE=1M ENGINE=NDB; CREATE TABLE t1 (pk1 INT NOT NULL PRIMARY KEY, b INT NOT NULL, c INT NOT NULL) @@ -165,21 +165,21 @@ ENGINE=NDB; CREATE LOGFILE GROUP lg1 ADD UNDOFILE 'undofile.dat' -INITIAL_SIZE 16M +INITIAL_SIZE 1M UNDO_BUFFER_SIZE 1M ENGINE NDB; ALTER LOGFILE GROUP lg1 ADD UNDOFILE 'undofile02.dat' -INITIAL_SIZE 4M +INITIAL_SIZE 1M ENGINE NDB; CREATE TABLESPACE ts1 ADD DATAFILE 'datafile.dat' USE LOGFILE GROUP lg1 -INITIAL_SIZE 12M +INITIAL_SIZE 1M ENGINE NDB; ALTER TABLESPACE ts1 ADD DATAFILE 'datafile2.dat' -INITIAL_SIZE 12M +INITIAL_SIZE 1M ENGINE NDB; CREATE TABLE t1 (pk1 INT NOT NULL PRIMARY KEY, b INT NOT NULL, c INT NOT NULL) @@ -199,3 +199,19 @@ ENGINE NDB; DROP LOGFILE GROUP lg1 ENGINE NDB; **** End = And No = **** +create table t1 (a int primary key) engine = myisam; +create logfile group lg1 add undofile '/home/jonas/src/51-work/mysql-test/var/master-data/test/t1.frm' initial_size 1M undo_buffer_size = 1M engine=ndb;; +ERROR HY000: Failed to create UNDOFILE +create logfile group lg1 +add undofile 'undofile.dat' +initial_size 1M +undo_buffer_size = 1M +engine=ndb; +create tablespace ts1 add datafile '/home/jonas/src/51-work/mysql-test/var/master-data/test/t1.frm' use logfile group lg1 initial_size 1M engine ndb;; +ERROR HY000: Failed to create DATAFILE +drop tablespace ts1 +engine ndb; +ERROR HY000: Failed to drop TABLESPACE +drop logfile group lg1 +engine ndb; +drop table t1; diff --git a/mysql-test/t/ndb_dd_ddl.test b/mysql-test/t/ndb_dd_ddl.test index 339f7bc2f22..2a0755c2748 100644 --- a/mysql-test/t/ndb_dd_ddl.test +++ b/mysql-test/t/ndb_dd_ddl.test @@ -40,7 +40,7 @@ CREATE DATABASE mysqltest; CREATE LOGFILE GROUP lg1 ADD UNDOFILE 'undofile.dat' -INITIAL_SIZE 16M +INITIAL_SIZE 1M UNDO_BUFFER_SIZE = 1M ENGINE=NDB; @@ -48,7 +48,7 @@ ENGINE=NDB; --error ER_CREATE_FILEGROUP_FAILED CREATE LOGFILE GROUP lg2 ADD UNDOFILE 'undofile2.dat' -INITIAL_SIZE 16M +INITIAL_SIZE 1M UNDO_BUFFER_SIZE 1M ENGINE NDB; SHOW WARNINGS; @@ -56,42 +56,42 @@ SHOW WARNINGS; --error ER_CREATE_FILEGROUP_FAILED CREATE LOGFILE GROUP lg1 ADD UNDOFILE 'undofile.dat' -INITIAL_SIZE 16M +INITIAL_SIZE 1M UNDO_BUFFER_SIZE = 1M ENGINE=NDB; ALTER LOGFILE GROUP lg1 ADD UNDOFILE 'undofile02.dat' -INITIAL_SIZE 4M ENGINE NDB; +INITIAL_SIZE 1M ENGINE NDB; --error ER_ALTER_FILEGROUP_FAILED ALTER LOGFILE GROUP lg1 ADD UNDOFILE 'undofile02.dat' -INITIAL_SIZE 4M ENGINE=NDB; +INITIAL_SIZE 1M ENGINE=NDB; CREATE TABLESPACE ts1 ADD DATAFILE 'datafile.dat' USE LOGFILE GROUP lg1 -INITIAL_SIZE 12M +INITIAL_SIZE 1M ENGINE NDB; --error ER_CREATE_FILEGROUP_FAILED CREATE TABLESPACE ts1 ADD DATAFILE 'datafile.dat' USE LOGFILE GROUP lg1 -INITIAL_SIZE 12M +INITIAL_SIZE 1M ENGINE NDB; ALTER TABLESPACE ts1 ADD DATAFILE 'datafile2.dat' -INITIAL_SIZE 12M +INITIAL_SIZE 1M ENGINE=NDB; --error ER_ALTER_FILEGROUP_FAILED ALTER TABLESPACE ts1 ADD DATAFILE 'datafile2.dat' -INITIAL_SIZE 12M +INITIAL_SIZE 1M ENGINE=NDB; CREATE TABLE mysqltest.t1 @@ -155,23 +155,23 @@ DROP DATABASE IF EXISTS mysqltest; creaTE LOgfilE GrOuP lg1 adD undoFILE 'undofile.dat' -initiAL_siZE 16M +initiAL_siZE 1M UnDo_BuFfEr_SiZe = 1M ENGInE=NDb; altER LOgFiLE GrOUp lg1 AdD UnDOfILe 'uNdOfiLe02.daT' -INItIAl_SIzE 4M ENgINE nDB; +INItIAl_SIzE 1M ENgINE nDB; CrEAtE TABLEspaCE ts1 ADD DATAfilE 'datafile.dat' UsE LoGFiLE GRoUP lg1 -INITiaL_SizE 12M +INITiaL_SizE 1M ENGiNe NDb; AlTeR tAbLeSpAcE ts1 AdD DaTaFiLe 'dAtAfiLe2.daT' -InItIaL_SiZe 12M +InItIaL_SiZe 1M EnGiNe=NDB; CREATE TABLE t1 @@ -203,24 +203,24 @@ EnGiNe=nDb; CREATE LOGFILE GROUP lg1 ADD UNDOFILE 'undofile.dat' -INITIAL_SIZE=16M +INITIAL_SIZE=1M UNDO_BUFFER_SIZE=1M ENGINE=NDB; ALTER LOGFILE GROUP lg1 ADD UNDOFILE 'undofile02.dat' -INITIAL_SIZE=4M +INITIAL_SIZE=1M ENGINE=NDB; CREATE TABLESPACE ts1 ADD DATAFILE 'datafile.dat' USE LOGFILE GROUP lg1 -INITIAL_SIZE=12M +INITIAL_SIZE=1M ENGINE=NDB; ALTER TABLESPACE ts1 ADD DATAFILE 'datafile2.dat' -INITIAL_SIZE=12M +INITIAL_SIZE=1M ENGINE=NDB; CREATE TABLE t1 @@ -250,24 +250,24 @@ ENGINE=NDB; CREATE LOGFILE GROUP lg1 ADD UNDOFILE 'undofile.dat' -INITIAL_SIZE 16M +INITIAL_SIZE 1M UNDO_BUFFER_SIZE 1M ENGINE NDB; ALTER LOGFILE GROUP lg1 ADD UNDOFILE 'undofile02.dat' -INITIAL_SIZE 4M +INITIAL_SIZE 1M ENGINE NDB; CREATE TABLESPACE ts1 ADD DATAFILE 'datafile.dat' USE LOGFILE GROUP lg1 -INITIAL_SIZE 12M +INITIAL_SIZE 1M ENGINE NDB; ALTER TABLESPACE ts1 ADD DATAFILE 'datafile2.dat' -INITIAL_SIZE 12M +INITIAL_SIZE 1M ENGINE NDB; CREATE TABLE t1 @@ -297,5 +297,30 @@ ENGINE NDB; --echo **** End = And No = **** ############ End = And No = ################## -# End 5.1 test +### +# +# bug#16341 +create table t1 (a int primary key) engine = myisam; + +--error ER_CREATE_FILEGROUP_FAILED +--eval create logfile group lg1 add undofile '$MYSQLTEST_VARDIR/master-data/test/t1.frm' initial_size 1M undo_buffer_size = 1M engine=ndb; + +create logfile group lg1 +add undofile 'undofile.dat' +initial_size 1M +undo_buffer_size = 1M +engine=ndb; + +--error ER_CREATE_FILEGROUP_FAILED +--eval create tablespace ts1 add datafile '$MYSQLTEST_VARDIR/master-data/test/t1.frm' use logfile group lg1 initial_size 1M engine ndb; + +--error ER_DROP_FILEGROUP_FAILED +drop tablespace ts1 +engine ndb; +drop logfile group lg1 +engine ndb; + +drop table t1; + +# End 5.1 test diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 27fe2e889af..986014a36d1 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -9947,7 +9947,8 @@ int ndbcluster_alter_tablespace(THD* thd, st_alter_tablespace *info) { DBUG_RETURN(HA_ERR_NO_CONNECTION); } - + + NdbError err; NDBDICT *dict = ndb->getDictionary(); int error; const char * errmsg; @@ -9960,6 +9961,7 @@ int ndbcluster_alter_tablespace(THD* thd, st_alter_tablespace *info) NdbDictionary::Tablespace ndb_ts; NdbDictionary::Datafile ndb_df; + NdbDictionary::ObjectId objid; if (set_up_tablespace(info, &ndb_ts)) { DBUG_RETURN(1); @@ -9969,7 +9971,7 @@ int ndbcluster_alter_tablespace(THD* thd, st_alter_tablespace *info) DBUG_RETURN(1); } errmsg= "TABLESPACE"; - if (dict->createTablespace(ndb_ts)) + if (dict->createTablespace(ndb_ts, &objid)) { DBUG_PRINT("error", ("createTablespace returned %d", error)); goto ndberror; @@ -9978,8 +9980,17 @@ int ndbcluster_alter_tablespace(THD* thd, st_alter_tablespace *info) errmsg= "DATAFILE"; if (dict->createDatafile(ndb_df)) { + err= dict->getNdbError(); + NdbDictionary::Tablespace tmp= dict->getTablespace(ndb_ts.getName()); + if (dict->getNdbError().code == 0 && + tmp.getObjectId() == objid.getObjectId() && + tmp.getObjectVersion() == objid.getObjectVersion()) + { + dict->dropTablespace(tmp); + } + DBUG_PRINT("error", ("createDatafile returned %d", error)); - goto ndberror; + goto ndberror2; } is_tablespace= 1; break; @@ -10033,6 +10044,7 @@ int ndbcluster_alter_tablespace(THD* thd, st_alter_tablespace *info) error= ER_CREATE_FILEGROUP_FAILED; NdbDictionary::LogfileGroup ndb_lg; NdbDictionary::Undofile ndb_uf; + NdbDictionary::ObjectId objid; if (info->undo_file_name == NULL) { /* @@ -10045,7 +10057,7 @@ int ndbcluster_alter_tablespace(THD* thd, st_alter_tablespace *info) DBUG_RETURN(1); } errmsg= "LOGFILE GROUP"; - if (dict->createLogfileGroup(ndb_lg)) + if (dict->createLogfileGroup(ndb_lg, &objid)) { goto ndberror; } @@ -10057,7 +10069,15 @@ int ndbcluster_alter_tablespace(THD* thd, st_alter_tablespace *info) errmsg= "UNDOFILE"; if (dict->createUndofile(ndb_uf)) { - goto ndberror; + err= dict->getNdbError(); + NdbDictionary::LogfileGroup tmp= dict->getLogfileGroup(ndb_lg.getName()); + if (dict->getNdbError().code == 0 && + tmp.getObjectId() == objid.getObjectId() && + tmp.getObjectVersion() == objid.getObjectVersion()) + { + dict->dropLogfileGroup(tmp); + } + goto ndberror2; } break; } @@ -10134,7 +10154,8 @@ int ndbcluster_alter_tablespace(THD* thd, st_alter_tablespace *info) DBUG_RETURN(FALSE); ndberror: - const NdbError err= dict->getNdbError(); + err= dict->getNdbError(); +ndberror2: ERR_PRINT(err); ndb_to_mysql_error(&err); diff --git a/storage/ndb/include/kernel/signaldata/CreateFilegroup.hpp b/storage/ndb/include/kernel/signaldata/CreateFilegroup.hpp index 810f9cdfd03..78216249a72 100644 --- a/storage/ndb/include/kernel/signaldata/CreateFilegroup.hpp +++ b/storage/ndb/include/kernel/signaldata/CreateFilegroup.hpp @@ -193,6 +193,7 @@ struct CreateFileConf { Uint32 senderData; Uint32 senderRef; Uint32 fileId; + Uint32 fileVersion; }; #endif diff --git a/storage/ndb/include/ndbapi/NdbDictionary.hpp b/storage/ndb/include/ndbapi/NdbDictionary.hpp index 27e0aede36d..a9fd107c06e 100644 --- a/storage/ndb/include/ndbapi/NdbDictionary.hpp +++ b/storage/ndb/include/ndbapi/NdbDictionary.hpp @@ -163,6 +163,31 @@ public: }; }; + class Dictionary; // Forward declaration + + class ObjectId : public Object + { + public: + ObjectId(); + virtual ~ObjectId(); + + /** + * Get status of object + */ + virtual Status getObjectStatus() const; + + /** + * Get version of object + */ + virtual int getObjectVersion() const; + + virtual int getObjectId() const; + + private: + friend class Dictionary; + class NdbDictObjectImpl & m_impl; + }; + class Table; // forward declaration class Tablespace; // forward declaration // class NdbEventOperation; // forward declaration @@ -1781,20 +1806,20 @@ public: * @{ */ - int createLogfileGroup(const LogfileGroup &); + int createLogfileGroup(const LogfileGroup &, ObjectId* = 0); int dropLogfileGroup(const LogfileGroup&); LogfileGroup getLogfileGroup(const char * name); - int createTablespace(const Tablespace &); + int createTablespace(const Tablespace &, ObjectId* = 0); int dropTablespace(const Tablespace&); Tablespace getTablespace(const char * name); Tablespace getTablespace(Uint32 tablespaceId); - int createDatafile(const Datafile &, bool overwrite_existing = false); + int createDatafile(const Datafile &, bool overwrite_existing = false, ObjectId* = 0); int dropDatafile(const Datafile&); Datafile getDatafile(Uint32 node, const char * path); - int createUndofile(const Undofile &, bool overwrite_existing = false); + int createUndofile(const Undofile &, bool overwrite_existing = false, ObjectId * = 0); int dropUndofile(const Undofile&); Undofile getUndofile(Uint32 node, const char * path); diff --git a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp index ed6b94fd2e8..908c116988d 100644 --- a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp +++ b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp @@ -13985,7 +13985,8 @@ Dbdict::trans_commit_complete_done(Signal* signal, conf->senderRef = reference(); conf->senderData = trans_ptr.p->m_senderData; conf->fileId = f_ptr.p->key; - + conf->fileVersion = f_ptr.p->m_version; + //@todo check api failed sendSignal(trans_ptr.p->m_senderRef, GSN_CREATE_FILE_CONF, signal, CreateFileConf::SignalLength, JBB); diff --git a/storage/ndb/src/ndbapi/NdbDictionary.cpp b/storage/ndb/src/ndbapi/NdbDictionary.cpp index c71689d2e81..7d888456888 100644 --- a/storage/ndb/src/ndbapi/NdbDictionary.cpp +++ b/storage/ndb/src/ndbapi/NdbDictionary.cpp @@ -18,6 +18,32 @@ #include "NdbDictionaryImpl.hpp" #include +NdbDictionary::ObjectId::ObjectId() + : m_impl(* new NdbDictObjectImpl(NdbDictionary::Object::TypeUndefined)) +{ +} + +NdbDictionary::ObjectId::~ObjectId() +{ + NdbDictObjectImpl * tmp = &m_impl; + delete tmp; +} + +NdbDictionary::Object::Status +NdbDictionary::ObjectId::getObjectStatus() const { + return m_impl.m_status; +} + +int +NdbDictionary::ObjectId::getObjectVersion() const { + return m_impl.m_version; +} + +int +NdbDictionary::ObjectId::getObjectId() const { + return m_impl.m_id; +} + /***************************************************************** * Column facade */ @@ -1799,17 +1825,22 @@ operator<<(NdbOut& out, const NdbDictionary::Column& col) } int -NdbDictionary::Dictionary::createLogfileGroup(const LogfileGroup & lg){ - return m_impl.createLogfileGroup(NdbLogfileGroupImpl::getImpl(lg)); +NdbDictionary::Dictionary::createLogfileGroup(const LogfileGroup & lg, + ObjectId * obj) +{ + return m_impl.createLogfileGroup(NdbLogfileGroupImpl::getImpl(lg), + obj ? &obj->m_impl : 0); } int -NdbDictionary::Dictionary::dropLogfileGroup(const LogfileGroup & lg){ +NdbDictionary::Dictionary::dropLogfileGroup(const LogfileGroup & lg) +{ return m_impl.dropLogfileGroup(NdbLogfileGroupImpl::getImpl(lg)); } NdbDictionary::LogfileGroup -NdbDictionary::Dictionary::getLogfileGroup(const char * name){ +NdbDictionary::Dictionary::getLogfileGroup(const char * name) +{ NdbDictionary::LogfileGroup tmp; m_impl.m_receiver.get_filegroup(NdbLogfileGroupImpl::getImpl(tmp), NdbDictionary::Object::LogfileGroup, name); @@ -1817,17 +1848,22 @@ NdbDictionary::Dictionary::getLogfileGroup(const char * name){ } int -NdbDictionary::Dictionary::createTablespace(const Tablespace & lg){ - return m_impl.createTablespace(NdbTablespaceImpl::getImpl(lg)); +NdbDictionary::Dictionary::createTablespace(const Tablespace & lg, + ObjectId * obj) +{ + return m_impl.createTablespace(NdbTablespaceImpl::getImpl(lg), + obj ? &obj->m_impl : 0); } int -NdbDictionary::Dictionary::dropTablespace(const Tablespace & lg){ +NdbDictionary::Dictionary::dropTablespace(const Tablespace & lg) +{ return m_impl.dropTablespace(NdbTablespaceImpl::getImpl(lg)); } NdbDictionary::Tablespace -NdbDictionary::Dictionary::getTablespace(const char * name){ +NdbDictionary::Dictionary::getTablespace(const char * name) +{ NdbDictionary::Tablespace tmp; m_impl.m_receiver.get_filegroup(NdbTablespaceImpl::getImpl(tmp), NdbDictionary::Object::Tablespace, name); @@ -1835,7 +1871,8 @@ NdbDictionary::Dictionary::getTablespace(const char * name){ } NdbDictionary::Tablespace -NdbDictionary::Dictionary::getTablespace(Uint32 tablespaceId){ +NdbDictionary::Dictionary::getTablespace(Uint32 tablespaceId) +{ NdbDictionary::Tablespace tmp; m_impl.m_receiver.get_filegroup(NdbTablespaceImpl::getImpl(tmp), NdbDictionary::Object::Tablespace, @@ -1844,17 +1881,24 @@ NdbDictionary::Dictionary::getTablespace(Uint32 tablespaceId){ } int -NdbDictionary::Dictionary::createDatafile(const Datafile & df, bool force){ - return m_impl.createDatafile(NdbDatafileImpl::getImpl(df), force); +NdbDictionary::Dictionary::createDatafile(const Datafile & df, + bool force, + ObjectId * obj) +{ + return m_impl.createDatafile(NdbDatafileImpl::getImpl(df), + force, + obj ? &obj->m_impl : 0); } int -NdbDictionary::Dictionary::dropDatafile(const Datafile& df){ +NdbDictionary::Dictionary::dropDatafile(const Datafile& df) +{ return m_impl.dropDatafile(NdbDatafileImpl::getImpl(df)); } NdbDictionary::Datafile -NdbDictionary::Dictionary::getDatafile(Uint32 node, const char * path){ +NdbDictionary::Dictionary::getDatafile(Uint32 node, const char * path) +{ NdbDictionary::Datafile tmp; m_impl.m_receiver.get_file(NdbDatafileImpl::getImpl(tmp), NdbDictionary::Object::Datafile, @@ -1863,17 +1907,24 @@ NdbDictionary::Dictionary::getDatafile(Uint32 node, const char * path){ } int -NdbDictionary::Dictionary::createUndofile(const Undofile & df, bool force){ - return m_impl.createUndofile(NdbUndofileImpl::getImpl(df), force); +NdbDictionary::Dictionary::createUndofile(const Undofile & df, + bool force, + ObjectId * obj) +{ + return m_impl.createUndofile(NdbUndofileImpl::getImpl(df), + force, + obj ? &obj->m_impl : 0); } int -NdbDictionary::Dictionary::dropUndofile(const Undofile& df){ +NdbDictionary::Dictionary::dropUndofile(const Undofile& df) +{ return m_impl.dropUndofile(NdbUndofileImpl::getImpl(df)); } NdbDictionary::Undofile -NdbDictionary::Dictionary::getUndofile(Uint32 node, const char * path){ +NdbDictionary::Dictionary::getUndofile(Uint32 node, const char * path) +{ NdbDictionary::Undofile tmp; m_impl.m_receiver.get_file(NdbUndofileImpl::getImpl(tmp), NdbDictionary::Object::Undofile, diff --git a/storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp b/storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp index 22a5d2f20a5..06a2741cc4f 100644 --- a/storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp +++ b/storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp @@ -4391,19 +4391,23 @@ NdbUndofileImpl::assign(const NdbUndofileImpl& org) } int -NdbDictionaryImpl::createDatafile(const NdbDatafileImpl & file, bool force){ +NdbDictionaryImpl::createDatafile(const NdbDatafileImpl & file, + bool force, + NdbDictObjectImpl* obj) + +{ DBUG_ENTER("NdbDictionaryImpl::createDatafile"); NdbFilegroupImpl tmp(NdbDictionary::Object::Tablespace); if(file.m_filegroup_version != ~(Uint32)0){ tmp.m_id = file.m_filegroup_id; tmp.m_version = file.m_filegroup_version; - DBUG_RETURN(m_receiver.create_file(file, tmp)); + DBUG_RETURN(m_receiver.create_file(file, tmp, force, obj)); } if(m_receiver.get_filegroup(tmp, NdbDictionary::Object::Tablespace, file.m_filegroup_name.c_str()) == 0){ - DBUG_RETURN(m_receiver.create_file(file, tmp, force)); + DBUG_RETURN(m_receiver.create_file(file, tmp, force, obj)); } DBUG_RETURN(-1); } @@ -4414,53 +4418,65 @@ NdbDictionaryImpl::dropDatafile(const NdbDatafileImpl & file){ } int -NdbDictionaryImpl::createUndofile(const NdbUndofileImpl & file, bool force){ +NdbDictionaryImpl::createUndofile(const NdbUndofileImpl & file, + bool force, + NdbDictObjectImpl* obj) +{ DBUG_ENTER("NdbDictionaryImpl::createUndofile"); NdbFilegroupImpl tmp(NdbDictionary::Object::LogfileGroup); if(file.m_filegroup_version != ~(Uint32)0){ tmp.m_id = file.m_filegroup_id; tmp.m_version = file.m_filegroup_version; - DBUG_RETURN(m_receiver.create_file(file, tmp)); + DBUG_RETURN(m_receiver.create_file(file, tmp, force, obj)); } if(m_receiver.get_filegroup(tmp, NdbDictionary::Object::LogfileGroup, file.m_filegroup_name.c_str()) == 0){ - DBUG_RETURN(m_receiver.create_file(file, tmp, force)); + DBUG_RETURN(m_receiver.create_file(file, tmp, force, obj)); } DBUG_PRINT("info", ("Failed to find filegroup")); DBUG_RETURN(-1); } int -NdbDictionaryImpl::dropUndofile(const NdbUndofileImpl & file){ +NdbDictionaryImpl::dropUndofile(const NdbUndofileImpl & file) +{ return m_receiver.drop_file(file); } int -NdbDictionaryImpl::createTablespace(const NdbTablespaceImpl & fg){ - return m_receiver.create_filegroup(fg); +NdbDictionaryImpl::createTablespace(const NdbTablespaceImpl & fg, + NdbDictObjectImpl* obj) +{ + return m_receiver.create_filegroup(fg, obj); } int -NdbDictionaryImpl::dropTablespace(const NdbTablespaceImpl & fg){ +NdbDictionaryImpl::dropTablespace(const NdbTablespaceImpl & fg) +{ return m_receiver.drop_filegroup(fg); } int -NdbDictionaryImpl::createLogfileGroup(const NdbLogfileGroupImpl & fg){ - return m_receiver.create_filegroup(fg); +NdbDictionaryImpl::createLogfileGroup(const NdbLogfileGroupImpl & fg, + NdbDictObjectImpl* obj) +{ + return m_receiver.create_filegroup(fg, obj); } int -NdbDictionaryImpl::dropLogfileGroup(const NdbLogfileGroupImpl & fg){ +NdbDictionaryImpl::dropLogfileGroup(const NdbLogfileGroupImpl & fg) +{ return m_receiver.drop_filegroup(fg); } int NdbDictInterface::create_file(const NdbFileImpl & file, const NdbFilegroupImpl & group, - bool overwrite){ + bool overwrite, + NdbDictObjectImpl* obj) +{ DBUG_ENTER("NdbDictInterface::create_file"); UtilBufferWriter w(m_buffer); DictFilegroupInfo::File f; f.init(); @@ -4503,23 +4519,39 @@ NdbDictInterface::create_file(const NdbFileImpl & file, Send signal without time-out since creating files can take a very long time if the file is very big. */ - DBUG_RETURN(dictSignal(&tSignal, ptr, 1, - 0, // master - WAIT_CREATE_INDX_REQ, - -1, 100, - err)); + int ret = dictSignal(&tSignal, ptr, 1, + 0, // master + WAIT_CREATE_INDX_REQ, + -1, 100, + err); + + if (ret == 0 && obj) + { + Uint32* data = (Uint32*)m_buffer.get_data(); + obj->m_id = data[0]; + obj->m_version = data[1]; + } + + DBUG_RETURN(ret); } void NdbDictInterface::execCREATE_FILE_CONF(NdbApiSignal * signal, - LinearSectionPtr ptr[3]) + LinearSectionPtr ptr[3]) { + const CreateFileConf* conf= + CAST_CONSTPTR(CreateFileConf, signal->getDataPtr()); + m_buffer.grow(4 * 2); // 2 words + Uint32* data = (Uint32*)m_buffer.get_data(); + data[0] = conf->fileId; + data[1] = conf->fileVersion; + m_waiter.signal(NO_WAIT); } void NdbDictInterface::execCREATE_FILE_REF(NdbApiSignal * signal, - LinearSectionPtr ptr[3]) + LinearSectionPtr ptr[3]) { const CreateFileRef* ref = CAST_CONSTPTR(CreateFileRef, signal->getDataPtr()); @@ -4529,7 +4561,8 @@ NdbDictInterface::execCREATE_FILE_REF(NdbApiSignal * signal, } int -NdbDictInterface::drop_file(const NdbFileImpl & file){ +NdbDictInterface::drop_file(const NdbFileImpl & file) +{ DBUG_ENTER("NdbDictInterface::drop_file"); NdbApiSignal tSignal(m_reference); tSignal.theReceiversBlockNumber = DBDICT; @@ -4569,7 +4602,9 @@ NdbDictInterface::execDROP_FILE_REF(NdbApiSignal * signal, } int -NdbDictInterface::create_filegroup(const NdbFilegroupImpl & group){ +NdbDictInterface::create_filegroup(const NdbFilegroupImpl & group, + NdbDictObjectImpl* obj) +{ DBUG_ENTER("NdbDictInterface::create_filegroup"); UtilBufferWriter w(m_buffer); DictFilegroupInfo::Filegroup fg; fg.init(); @@ -4638,17 +4673,32 @@ NdbDictInterface::create_filegroup(const NdbFilegroupImpl & group){ ptr[0].sz = m_buffer.length() / 4; int err[] = { CreateFilegroupRef::Busy, CreateFilegroupRef::NotMaster, 0}; - DBUG_RETURN(dictSignal(&tSignal, ptr, 1, - 0, // master - WAIT_CREATE_INDX_REQ, - DICT_WAITFOR_TIMEOUT, 100, - err)); + int ret = dictSignal(&tSignal, ptr, 1, + 0, // master + WAIT_CREATE_INDX_REQ, + DICT_WAITFOR_TIMEOUT, 100, + err); + + if (ret == 0 && obj) + { + Uint32* data = (Uint32*)m_buffer.get_data(); + obj->m_id = data[0]; + obj->m_version = data[1]; + } + + DBUG_RETURN(ret); } void NdbDictInterface::execCREATE_FILEGROUP_CONF(NdbApiSignal * signal, LinearSectionPtr ptr[3]) { + const CreateFilegroupConf* conf= + CAST_CONSTPTR(CreateFilegroupConf, signal->getDataPtr()); + m_buffer.grow(4 * 2); // 2 words + Uint32* data = (Uint32*)m_buffer.get_data(); + data[0] = conf->filegroupId; + data[1] = conf->filegroupVersion; m_waiter.signal(NO_WAIT); } @@ -4664,7 +4714,8 @@ NdbDictInterface::execCREATE_FILEGROUP_REF(NdbApiSignal * signal, } int -NdbDictInterface::drop_filegroup(const NdbFilegroupImpl & group){ +NdbDictInterface::drop_filegroup(const NdbFilegroupImpl & group) +{ DBUG_ENTER("NdbDictInterface::drop_filegroup"); NdbApiSignal tSignal(m_reference); tSignal.theReceiversBlockNumber = DBDICT; diff --git a/storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp b/storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp index b6961edd019..35e8027cdec 100644 --- a/storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp +++ b/storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp @@ -52,6 +52,8 @@ protected: m_status(NdbDictionary::Object::New) { m_id = -1; } + + friend class NdbDictionary::ObjectId; }; /** @@ -468,9 +470,10 @@ public: static int parseFilegroupInfo(NdbFilegroupImpl &dst, const Uint32 * data, Uint32 len); - int create_file(const NdbFileImpl &, const NdbFilegroupImpl&, bool overwrite = false); + int create_file(const NdbFileImpl &, const NdbFilegroupImpl&, + bool overwrite, NdbDictObjectImpl*); int drop_file(const NdbFileImpl &); - int create_filegroup(const NdbFilegroupImpl &); + int create_filegroup(const NdbFilegroupImpl &, NdbDictObjectImpl*); int drop_filegroup(const NdbFilegroupImpl &); int get_filegroup(NdbFilegroupImpl&, NdbDictionary::Object::Type, Uint32); @@ -622,17 +625,17 @@ public: NdbEventImpl * getBlobEvent(const NdbEventImpl& ev, uint col_no); NdbEventImpl * getEventImpl(const char * internalName); - int createDatafile(const NdbDatafileImpl &, bool force = false); + int createDatafile(const NdbDatafileImpl &, bool force, NdbDictObjectImpl*); int dropDatafile(const NdbDatafileImpl &); - int createUndofile(const NdbUndofileImpl &, bool force = false); + int createUndofile(const NdbUndofileImpl &, bool force, NdbDictObjectImpl*); int dropUndofile(const NdbUndofileImpl &); - int createTablespace(const NdbTablespaceImpl &); + int createTablespace(const NdbTablespaceImpl &, NdbDictObjectImpl*); int dropTablespace(const NdbTablespaceImpl &); - int createLogfileGroup(const NdbLogfileGroupImpl &); + int createLogfileGroup(const NdbLogfileGroupImpl &, NdbDictObjectImpl*); int dropLogfileGroup(const NdbLogfileGroupImpl &); - + const NdbError & getNdbError() const; NdbError m_error; Uint32 m_local_table_data_size; -- cgit v1.2.1 From 505c2b3d5f0178aa9bdb9f97da707104489250a5 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 12:03:28 +0200 Subject: ndb - bug#19164 set max value on ports ndb/src/mgmsrv/ConfigInfo.cpp: set max vlue on ports --- ndb/src/mgmsrv/ConfigInfo.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/ndb/src/mgmsrv/ConfigInfo.cpp b/ndb/src/mgmsrv/ConfigInfo.cpp index 66a400a3e22..54c4863b969 100644 --- a/ndb/src/mgmsrv/ConfigInfo.cpp +++ b/ndb/src/mgmsrv/ConfigInfo.cpp @@ -30,6 +30,7 @@ extern my_bool opt_core; #define MAX_LINE_LENGTH 255 #define KEY_INTERNAL 0 #define MAX_INT_RNIL 0xfffffeff +#define MAX_PORT_NO 65535 #define _STR_VALUE(x) #x #define STR_VALUE(x) _STR_VALUE(x) @@ -426,7 +427,7 @@ const ConfigInfo::ParamInfo ConfigInfo::m_ParamInfo[] = { ConfigInfo::CI_INT, UNDEFINED, "1", - STR_VALUE(MAX_INT_RNIL) }, + STR_VALUE(MAX_PORT_NO) }, { CFG_DB_NO_REPLICAS, @@ -1430,7 +1431,7 @@ const ConfigInfo::ParamInfo ConfigInfo::m_ParamInfo[] = { ConfigInfo::CI_INT, NDB_PORT, "0", - STR_VALUE(MAX_INT_RNIL) }, + STR_VALUE(MAX_PORT_NO) }, { KEY_INTERNAL, @@ -1442,7 +1443,7 @@ const ConfigInfo::ParamInfo ConfigInfo::m_ParamInfo[] = { ConfigInfo::CI_INT, UNDEFINED, "0", - STR_VALUE(MAX_INT_RNIL) }, + STR_VALUE(MAX_PORT_NO) }, { CFG_NODE_ARBIT_RANK, @@ -1573,7 +1574,7 @@ const ConfigInfo::ParamInfo ConfigInfo::m_ParamInfo[] = { ConfigInfo::CI_INT, MANDATORY, "0", - STR_VALUE(MAX_INT_RNIL) }, + STR_VALUE(MAX_PORT_NO) }, { CFG_TCP_SEND_BUFFER_SIZE, @@ -1679,7 +1680,7 @@ const ConfigInfo::ParamInfo ConfigInfo::m_ParamInfo[] = { ConfigInfo::CI_INT, MANDATORY, "0", - STR_VALUE(MAX_INT_RNIL) }, + STR_VALUE(MAX_PORT_NO) }, { CFG_SHM_SIGNUM, @@ -1879,7 +1880,7 @@ const ConfigInfo::ParamInfo ConfigInfo::m_ParamInfo[] = { ConfigInfo::CI_INT, MANDATORY, "0", - STR_VALUE(MAX_INT_RNIL) }, + STR_VALUE(MAX_PORT_NO) }, { CFG_SCI_HOST1_ID_0, -- cgit v1.2.1 From a80014be66296ecc1ceed2c575b0d637a0403d69 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 13:01:08 +0200 Subject: fix for bug#16992 (Events: Information_schema troubles) Introduced EVENTS.EVENT_DEFINITION, like ROUTINES.ROUTINE_DEFINITION Hence, the contents of the current EVENTS.EVENT_BODY become the contents of EVENT_DEFINITION. EVENT_BODY will contain always, for now, "SQL" (wo quotes). mysql-test/r/events.result: update result event_body -> event_definition event_body -> SQL mysql-test/r/events_grant.result: update result event_body -> event_definition event_body -> SQL mysql-test/r/information_schema.result: update result event_body -> event_definition mysql-test/t/events.test: update result event_body -> event_definition event_body -> SQL mysql-test/t/events_grant.test: update result event_body -> event_definition event_body -> SQL sql/sql_show.cc: Introduce enum_i_s_events_fields, because I hate recounting all the time a field is changed. Rename EVENT_BODY to EVENT_DEFINITION Introduce EVENT_BODY after that to be "SQL" (final fix for bug#16992 Events: Information schema troubles ) ? --- mysql-test/r/events.result | 12 ++-- mysql-test/r/events_grant.result | 78 ++++++++++++------------ mysql-test/r/information_schema.result | 2 +- mysql-test/t/events.test | 6 +- mysql-test/t/events_grant.test | 18 +++--- sql/sql_show.cc | 107 +++++++++++++++++++++++---------- 6 files changed, 133 insertions(+), 90 deletions(-) diff --git a/mysql-test/r/events.result b/mysql-test/r/events.result index 77280f99b7c..e115e077535 100644 --- a/mysql-test/r/events.result +++ b/mysql-test/r/events.result @@ -365,19 +365,19 @@ on schedule every 10 hour disable do select 1; -select event_schema, event_name, definer, event_body from information_schema.events where event_name='white_space'; -event_schema event_name definer event_body +select event_schema, event_name, definer, event_definition from information_schema.events where event_name='white_space'; +event_schema event_name definer event_definition events_test white_space root@localhost select 1 drop event white_space; create event white_space on schedule every 10 hour disable do select 2; -select event_schema, event_name, definer, event_body from information_schema.events where event_name='white_space'; -event_schema event_name definer event_body +select event_schema, event_name, definer, event_definition from information_schema.events where event_name='white_space'; +event_schema event_name definer event_definition events_test white_space root@localhost select 2 drop event white_space; create event white_space on schedule every 10 hour disable do select 3; -select event_schema, event_name, definer, event_body from information_schema.events where event_name='white_space'; -event_schema event_name definer event_body +select event_schema, event_name, definer, event_definition from information_schema.events where event_name='white_space'; +event_schema event_name definer event_definition events_test white_space root@localhost select 3 drop event white_space; create event e1 on schedule every 1 year do set @a = 5; diff --git a/mysql-test/r/events_grant.result b/mysql-test/r/events_grant.result index 6c140f91eaa..eda0759d518 100644 --- a/mysql-test/r/events_grant.result +++ b/mysql-test/r/events_grant.result @@ -4,9 +4,9 @@ CREATE EVENT one_event ON SCHEDULE EVERY 10 SECOND DO SELECT 123; SHOW EVENTS; Db Name Definer Type Execute at Interval value Interval field Starts Ends Status events_test one_event root@localhost RECURRING NULL 10 SECOND # # ENABLED -SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT from information_schema.events; -EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT -NULL events_test one_event root@localhost SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE +SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT from information_schema.events; +EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT +NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE CREATE DATABASE events_test2; CREATE USER ev_test@localhost; GRANT ALL ON events_test.* to ev_test@localhost; @@ -57,65 +57,65 @@ USE events_test2; CREATE EVENT four_event ON SCHEDULE EVERY 20 SECOND DO SELECT 42; USE events_test; "We should see 4 events : one_event, two_event, three_event & four_event" -SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS; -EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT -NULL events_test one_event root@localhost SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE -NULL events_test two_event ev_test@localhost SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event -NULL events_test three_event ev_test@localhost SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event -NULL events_test2 four_event ev_test@localhost SELECT 42 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE +SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS; +EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT +NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE +NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event +NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event +NULL events_test2 four_event ev_test@localhost SQL SELECT 42 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE DROP DATABASE events_test2; "We should see 3 events : one_event, two_event, three_event" -SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS; -EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT -NULL events_test one_event root@localhost SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE -NULL events_test two_event ev_test@localhost SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event -NULL events_test three_event ev_test@localhost SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event +SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS; +EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT +NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE +NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event +NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event CREATE DATABASE events_test2; USE events_test2; CREATE EVENT five_event ON SCHEDULE EVERY 20 SECOND DO SELECT 42; "Should see 4 events - one, two, three & five" -SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS; -EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT -NULL events_test one_event root@localhost SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE -NULL events_test two_event ev_test@localhost SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event -NULL events_test three_event ev_test@localhost SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event -NULL events_test2 five_event root@localhost SELECT 42 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE +SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS; +EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT +NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE +NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event +NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event +NULL events_test2 five_event root@localhost SQL SELECT 42 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE REVOKE EVENT ON events_test2.* FROM ev_test@localhost; USE test; "Should see 3 events - one, two & three" -SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS; -EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT -NULL events_test one_event root@localhost SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE -NULL events_test two_event ev_test@localhost SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event -NULL events_test three_event ev_test@localhost SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event +SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS; +EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT +NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE +NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event +NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event "Let's test ALTER EVENT which changes the definer" USE events_test; ALTER EVENT one_event ON SCHEDULE EVERY 10 SECOND; "The definer should be ev_test@localhost" -SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='one_event'; -EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT -NULL events_test one_event ev_test@localhost SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE +SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='one_event'; +EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT +NULL events_test one_event ev_test@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE USE events_test; ALTER EVENT one_event COMMENT "comment"; "The definer should be root@localhost" -SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='one_event'; -EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT -NULL events_test one_event root@localhost SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE comment +SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='one_event'; +EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT +NULL events_test one_event root@localhost SQL SELECT 123 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE comment ALTER EVENT one_event DO SELECT 12; "The definer should be ev_test@localhost" -SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='one_event'; -EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT -NULL events_test one_event ev_test@localhost SELECT 12 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE comment +SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='one_event'; +EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT +NULL events_test one_event ev_test@localhost SQL SELECT 12 RECURRING NULL 10 SECOND ENABLED NOT PRESERVE comment "make the definer again root@localhost" ALTER EVENT one_event COMMENT "new comment"; "test DROP by another user" DROP EVENT one_event; "One event should not be there" -SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS; -EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT -NULL events_test two_event ev_test@localhost SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event -NULL events_test three_event ev_test@localhost SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event -NULL events_test2 five_event root@localhost SELECT 42 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE +SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS; +EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD STATUS ON_COMPLETION EVENT_COMMENT +NULL events_test two_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE two event +NULL events_test three_event ev_test@localhost SQL SELECT 123 RECURRING NULL 20 SECOND ENABLED PRESERVE three event +NULL events_test2 five_event root@localhost SQL SELECT 42 RECURRING NULL 20 SECOND ENABLED NOT PRESERVE DROP USER ev_test@localhost; DROP DATABASE events_test2; DROP DATABASE events_test; diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result index 070049b303a..7157175a60f 100644 --- a/mysql-test/r/information_schema.result +++ b/mysql-test/r/information_schema.result @@ -754,7 +754,7 @@ information_schema.columns where data_type = 'longtext'; table_schema table_name column_name information_schema COLUMNS COLUMN_TYPE -information_schema EVENTS EVENT_BODY +information_schema EVENTS EVENT_DEFINITION information_schema EVENTS SQL_MODE information_schema PARTITIONS PARTITION_EXPRESSION information_schema PARTITIONS SUBPARTITION_EXPRESSION diff --git a/mysql-test/t/events.test b/mysql-test/t/events.test index a3e2bbc0998..f8dc5dd804b 100644 --- a/mysql-test/t/events.test +++ b/mysql-test/t/events.test @@ -327,15 +327,15 @@ on schedule every 10 hour disable do select 1; -select event_schema, event_name, definer, event_body from information_schema.events where event_name='white_space'; +select event_schema, event_name, definer, event_definition from information_schema.events where event_name='white_space'; drop event white_space; create event white_space on schedule every 10 hour disable do select 2; -select event_schema, event_name, definer, event_body from information_schema.events where event_name='white_space'; +select event_schema, event_name, definer, event_definition from information_schema.events where event_name='white_space'; drop event white_space; create event white_space on schedule every 10 hour disable do select 3; -select event_schema, event_name, definer, event_body from information_schema.events where event_name='white_space'; +select event_schema, event_name, definer, event_definition from information_schema.events where event_name='white_space'; drop event white_space; # # END: BUG #17453: Creating Event crash the server diff --git a/mysql-test/t/events_grant.test b/mysql-test/t/events_grant.test index ba94944a3cf..8a3ef3a19de 100644 --- a/mysql-test/t/events_grant.test +++ b/mysql-test/t/events_grant.test @@ -6,7 +6,7 @@ use events_test; CREATE EVENT one_event ON SCHEDULE EVERY 10 SECOND DO SELECT 123; --replace_column 8 # 9 # SHOW EVENTS; -SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT from information_schema.events; +SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT from information_schema.events; CREATE DATABASE events_test2; CREATE USER ev_test@localhost; GRANT ALL ON events_test.* to ev_test@localhost; @@ -52,10 +52,10 @@ CREATE EVENT four_event ON SCHEDULE EVERY 20 SECOND DO SELECT 42; connection default; USE events_test; --echo "We should see 4 events : one_event, two_event, three_event & four_event" -SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS; +SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS; DROP DATABASE events_test2; --echo "We should see 3 events : one_event, two_event, three_event" -SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS; +SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS; connection default; CREATE DATABASE events_test2; @@ -64,27 +64,27 @@ CREATE EVENT five_event ON SCHEDULE EVERY 20 SECOND DO SELECT 42; connection ev_con1; --echo "Should see 4 events - one, two, three & five" -SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS; +SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS; connection default; REVOKE EVENT ON events_test2.* FROM ev_test@localhost; connection ev_con1; USE test; --echo "Should see 3 events - one, two & three" -SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS; +SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS; --echo "Let's test ALTER EVENT which changes the definer" USE events_test; ALTER EVENT one_event ON SCHEDULE EVERY 10 SECOND; --echo "The definer should be ev_test@localhost" -SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='one_event'; +SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='one_event'; connection default; USE events_test; ALTER EVENT one_event COMMENT "comment"; connection ev_con1; --echo "The definer should be root@localhost" -SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='one_event'; +SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='one_event'; ALTER EVENT one_event DO SELECT 12; --echo "The definer should be ev_test@localhost" -SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='one_event'; +SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='one_event'; connection default; --echo "make the definer again root@localhost" ALTER EVENT one_event COMMENT "new comment"; @@ -93,7 +93,7 @@ connection ev_con1; DROP EVENT one_event; connection default; --echo "One event should not be there" -SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS; +SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS; disconnect ev_con1; connection default; DROP USER ev_test@localhost; diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 940b157e8b7..ca0ca50eae0 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -34,6 +34,30 @@ #include "ha_partition.h" #endif +enum enum_i_s_events_fields +{ + ISE_EVENT_CATALOG= 0, + ISE_EVENT_SCHEMA, + ISE_EVENT_NAME, + ISE_DEFINER, + ISE_EVENT_BODY, + ISE_EVENT_DEFINITION, + ISE_EVENT_TYPE, + ISE_EXECUTE_AT, + ISE_INTERVAL_VALUE, + ISE_INTERVAL_FIELD, + ISE_SQL_MODE, + ISE_STARTS, + ISE_ENDS, + ISE_STATUS, + ISE_ON_COMPLETION, + ISE_CREATED, + ISE_LAST_ALTERED, + ISE_LAST_EXECUTED, + ISE_EVENT_COMMENT +}; + + static const char *grant_names[]={ "select","insert","update","delete","create","drop","reload","shutdown", "process","file","grant","references","index","alter"}; @@ -4109,6 +4133,8 @@ static interval_type get_real_interval_type(interval_type i_type) case INTERVAL_SECOND_MICROSECOND: case INTERVAL_MICROSECOND: return INTERVAL_MICROSECOND; + case INTERVAL_LAST: + DBUG_ASSERT(0); } DBUG_ASSERT(0); return INTERVAL_SECOND; @@ -4164,85 +4190,101 @@ copy_event_to_schema_table(THD *thd, TABLE *sch_table, TABLE *event_table) /* ->field[0] is EVENT_CATALOG and is by default NULL */ - sch_table->field[1]->store(et.dbname.str, et.dbname.length, scs); - sch_table->field[2]->store(et.name.str, et.name.length, scs); - sch_table->field[3]->store(et.definer.str, et.definer.length, scs); - sch_table->field[4]->store(et.body.str, et.body.length, scs); - - /* [9] is SQL_MODE */ + sch_table->field[ISE_EVENT_SCHEMA]-> + store(et.dbname.str, et.dbname.length,scs); + sch_table->field[ISE_EVENT_NAME]-> + store(et.name.str, et.name.length, scs); + sch_table->field[ISE_DEFINER]-> + store(et.definer.str, et.definer.length, scs); + sch_table->field[ISE_EVENT_BODY]-> + store(STRING_WITH_LEN("SQL"), scs); + sch_table->field[ISE_EVENT_DEFINITION]-> + store(et.body.str, et.body.length, scs); + + /* SQL_MODE */ { byte *sql_mode_str; - ulong sql_mode_len=0; + ulong sql_mode_len= 0; sql_mode_str= sys_var_thd_sql_mode::symbolic_mode_representation(thd, et.sql_mode, &sql_mode_len); - sch_table->field[9]->store((const char*)sql_mode_str, sql_mode_len, scs); + sch_table->field[ISE_SQL_MODE]-> + store((const char*)sql_mode_str, sql_mode_len, scs); } if (et.expression) { String show_str; /* type */ - sch_table->field[5]->store(STRING_WITH_LEN("RECURRING"), scs); + sch_table->field[ISE_EVENT_TYPE]->store(STRING_WITH_LEN("RECURRING"), scs); if (Events::reconstruct_interval_expression(&show_str, et.interval, et.expression)) DBUG_RETURN(1); - sch_table->field[7]->set_notnull(); - sch_table->field[7]->store(show_str.ptr(), show_str.length(), scs); + sch_table->field[ISE_INTERVAL_VALUE]->set_notnull(); + sch_table->field[ISE_INTERVAL_VALUE]-> + store(show_str.ptr(), show_str.length(), scs); LEX_STRING *ival= &interval_type_to_name[et.interval]; - sch_table->field[8]->set_notnull(); - sch_table->field[8]->store(ival->str, ival->length, scs); + sch_table->field[ISE_INTERVAL_FIELD]->set_notnull(); + sch_table->field[ISE_INTERVAL_FIELD]->store(ival->str, ival->length, scs); - /* starts & ends */ - sch_table->field[10]->set_notnull(); - sch_table->field[10]->store_time(&et.starts, MYSQL_TIMESTAMP_DATETIME); + /* starts & ends . STARTS is always set - see sql_yacc.yy */ + sch_table->field[ISE_STARTS]->set_notnull(); + sch_table->field[ISE_STARTS]-> + store_time(&et.starts, MYSQL_TIMESTAMP_DATETIME); if (!et.ends_null) { - sch_table->field[11]->set_notnull(); - sch_table->field[11]->store_time(&et.ends, MYSQL_TIMESTAMP_DATETIME); + sch_table->field[ISE_ENDS]->set_notnull(); + sch_table->field[ISE_ENDS]-> + store_time(&et.ends, MYSQL_TIMESTAMP_DATETIME); } } else { - //type - sch_table->field[5]->store(STRING_WITH_LEN("ONE TIME"), scs); + /* type */ + sch_table->field[ISE_EVENT_TYPE]->store(STRING_WITH_LEN("ONE TIME"), scs); - sch_table->field[6]->set_notnull(); - sch_table->field[6]->store_time(&et.execute_at, MYSQL_TIMESTAMP_DATETIME); + sch_table->field[ISE_EXECUTE_AT]->set_notnull(); + sch_table->field[ISE_EXECUTE_AT]-> + store_time(&et.execute_at, MYSQL_TIMESTAMP_DATETIME); } /* status */ if (et.status == Event_timed::ENABLED) - sch_table->field[12]->store(STRING_WITH_LEN("ENABLED"), scs); + sch_table->field[ISE_STATUS]->store(STRING_WITH_LEN("ENABLED"), scs); else - sch_table->field[12]->store(STRING_WITH_LEN("DISABLED"), scs); + sch_table->field[ISE_STATUS]->store(STRING_WITH_LEN("DISABLED"), scs); /* on_completion */ if (et.on_completion == Event_timed::ON_COMPLETION_DROP) - sch_table->field[13]->store(STRING_WITH_LEN("NOT PRESERVE"), scs); + sch_table->field[ISE_ON_COMPLETION]-> + store(STRING_WITH_LEN("NOT PRESERVE"), scs); else - sch_table->field[13]->store(STRING_WITH_LEN("PRESERVE"), scs); + sch_table->field[ISE_ON_COMPLETION]-> + store(STRING_WITH_LEN("PRESERVE"), scs); int not_used=0; number_to_datetime(et.created, &time, 0, ¬_used); DBUG_ASSERT(not_used==0); - sch_table->field[14]->store_time(&time, MYSQL_TIMESTAMP_DATETIME); + sch_table->field[ISE_CREATED]->store_time(&time, MYSQL_TIMESTAMP_DATETIME); number_to_datetime(et.modified, &time, 0, ¬_used); DBUG_ASSERT(not_used==0); - sch_table->field[15]->store_time(&time, MYSQL_TIMESTAMP_DATETIME); + sch_table->field[ISE_LAST_ALTERED]-> + store_time(&time, MYSQL_TIMESTAMP_DATETIME); if (et.last_executed.year) { - sch_table->field[16]->set_notnull(); - sch_table->field[16]->store_time(&et.last_executed,MYSQL_TIMESTAMP_DATETIME); + sch_table->field[ISE_LAST_EXECUTED]->set_notnull(); + sch_table->field[ISE_LAST_EXECUTED]-> + store_time(&et.last_executed, MYSQL_TIMESTAMP_DATETIME); } - sch_table->field[17]->store(et.comment.str, et.comment.length, scs); + sch_table->field[ISE_EVENT_COMMENT]-> + store(et.comment.str, et.comment.length, scs); if (schema_table_store_record(thd, sch_table)) DBUG_RETURN(1); @@ -5166,7 +5208,8 @@ ST_FIELD_INFO events_fields_info[]= {"EVENT_SCHEMA", NAME_LEN, MYSQL_TYPE_STRING, 0, 0, "Db"}, {"EVENT_NAME", NAME_LEN, MYSQL_TYPE_STRING, 0, 0, "Name"}, {"DEFINER", 77, MYSQL_TYPE_STRING, 0, 0, "Definer"}, - {"EVENT_BODY", 65535, MYSQL_TYPE_STRING, 0, 0, 0}, + {"EVENT_BODY", 8, MYSQL_TYPE_STRING, 0, 0, 0}, + {"EVENT_DEFINITION", 65535, MYSQL_TYPE_STRING, 0, 0, 0}, {"EVENT_TYPE", 9, MYSQL_TYPE_STRING, 0, 0, "Type"}, {"EXECUTE_AT", 0, MYSQL_TYPE_TIMESTAMP, 0, 1, "Execute at"}, {"INTERVAL_VALUE", 256, MYSQL_TYPE_STRING, 0, 1, "Interval value"}, -- cgit v1.2.1 From ab28aa9ce067d2e520b8cec5bebb2f6ff171a68b Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 13:28:04 +0200 Subject: Patch to handle some bad situations resulting from the fix for BUG#19995. sql/handler.cc: Generating table maps from all locks that can be available: THD::extra_lock, THD::lock, and THD::locked_tables. sql/sql_class.h: Adding member Open_tables:state::extra_lock to hold the extra lock used by select_create. Removing select_insert::lock. sql/sql_insert.cc: Adding member Open_tables:state::extra_lock to hold the extra lock used by select_create. Removing select_insert::lock. --- sql/handler.cc | 54 ++++++++++++++++++++++++++++-------------------------- sql/sql_class.h | 13 +++++++++---- sql/sql_insert.cc | 44 +++++++++----------------------------------- 3 files changed, 46 insertions(+), 65 deletions(-) diff --git a/sql/handler.cc b/sql/handler.cc index 0895c6cf454..e4e7fd1e6d3 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -3263,37 +3263,39 @@ namespace int write_locked_table_maps(THD *thd) { DBUG_ENTER("write_locked_table_maps"); - DBUG_PRINT("enter", ("thd=%p, thd->lock=%p, thd->locked_tables=%p", - thd, thd->lock, thd->locked_tables)); + DBUG_PRINT("enter", ("thd=%p, thd->lock=%p, thd->locked_tables=%p, thd->extra_lock", + thd, thd->lock, thd->locked_tables, thd->extra_lock)); if (thd->get_binlog_table_maps() == 0) { - /* - Exactly one table has to be locked, otherwise this code is not - guaranteed to work. - */ - DBUG_ASSERT((thd->lock != NULL) + (thd->locked_tables != NULL) == 1); - - MYSQL_LOCK *lock= thd->lock ? thd->lock : thd->locked_tables; - DBUG_ASSERT(lock->table_count > 0); - TABLE **const end_ptr= lock->table + lock->table_count; - for (TABLE **table_ptr= lock->table ; - table_ptr != end_ptr ; - ++table_ptr) + MYSQL_LOCK *const locks[] = { + thd->extra_lock, thd->lock, thd->locked_tables + }; + for (my_ptrdiff_t i= 0 ; i < sizeof(locks)/sizeof(*locks) ; ++i ) { - TABLE *const table= *table_ptr; - DBUG_PRINT("info", ("Checking table %s", table->s->table_name)); - if (table->current_lock == F_WRLCK && - check_table_binlog_row_based(thd, table)) + MYSQL_LOCK const *const lock= locks[i]; + if (lock == NULL) + continue; + + TABLE **const end_ptr= lock->table + lock->table_count; + for (TABLE **table_ptr= lock->table ; + table_ptr != end_ptr ; + ++table_ptr) { - int const has_trans= table->file->has_transactions(); - int const error= thd->binlog_write_table_map(table, has_trans); - /* - If an error occurs, it is the responsibility of the caller to - roll back the transaction. - */ - if (unlikely(error)) - DBUG_RETURN(1); + TABLE *const table= *table_ptr; + DBUG_PRINT("info", ("Checking table %s", table->s->table_name)); + if (table->current_lock == F_WRLCK && + check_table_binlog_row_based(thd, table)) + { + int const has_trans= table->file->has_transactions(); + int const error= thd->binlog_write_table_map(table, has_trans); + /* + If an error occurs, it is the responsibility of the caller to + roll back the transaction. + */ + if (unlikely(error)) + DBUG_RETURN(1); + } } } } diff --git a/sql/sql_class.h b/sql/sql_class.h index b6283b6d174..fa4a29ff112 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -693,6 +693,14 @@ public: THD::prelocked_mode for more info.) */ MYSQL_LOCK *locked_tables; + + /* + CREATE-SELECT keeps an extra lock for the table being + created. This field is used to keep the extra lock available for + lower level routines, which would otherwise miss that lock. + */ + MYSQL_LOCK *extra_lock; + /* prelocked_mode_type enum and prelocked_mode member are used for indicating whenever "prelocked mode" is on, and what type of @@ -745,7 +753,7 @@ public: void reset_open_tables_state() { open_tables= temporary_tables= handler_tables= derived_tables= 0; - lock= locked_tables= 0; + extra_lock= lock= locked_tables= 0; prelocked_mode= NON_PRELOCKED; state_flags= 0U; } @@ -1591,9 +1599,6 @@ class select_insert :public select_result_interceptor { bool send_eof(); /* not implemented: select_insert is never re-used in prepared statements */ void cleanup(); - -protected: - MYSQL_LOCK *lock; }; diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 4c2c0099908..954b49f9efa 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -2188,7 +2188,6 @@ select_insert::select_insert(TABLE_LIST *table_list_par, TABLE *table_par, bool ignore_check_option_errors) :table_list(table_list_par), table(table_par), fields(fields_par), last_insert_id(0), - lock(0), insert_into_view(table_list_par && table_list_par->view != 0) { bzero((char*) &info,sizeof(info)); @@ -2356,6 +2355,7 @@ bool select_insert::send_data(List &values) { DBUG_ENTER("select_insert::send_data"); bool error=0; + if (unit->offset_limit_cnt) { // using limit offset,count unit->offset_limit_cnt--; @@ -2377,34 +2377,8 @@ bool select_insert::send_data(List &values) } } - /* - The thd->lock lock contain the locks for the select part of the - statement and the 'lock' variable contain the write lock for the - currently locked table that is being created or inserted - into. However, the row-based replication will investigate the - thd->lock to decide what table maps are to be written, so this one - has to contain the tables locked for writing. To be able to write - table map for the table being created, we temporarily set - THD::lock to select_insert::lock while writing the record to the - storage engine. We cannot set this elsewhere, since the execution - of a stored function inside the select expression might cause the - lock structures to be NULL. - */ - - { - MYSQL_LOCK *saved_lock= NULL; - if (lock) - { - saved_lock= thd->lock; - thd->lock= lock; - } - - error= write_record(thd, table, &info); + error= write_record(thd, table, &info); - if (lock) - thd->lock= saved_lock; - } - if (!error) { if (table->triggers || info.handle_duplicates == DUP_UPDATE) @@ -2776,8 +2750,8 @@ select_create::prepare(List &values, SELECT_LEX_UNIT *u) unit= u; if (!(table= create_table_from_items(thd, create_info, create_table, - extra_fields, keys, &values, &lock, - hook_ptr))) + extra_fields, keys, &values, + &thd->extra_lock, hook_ptr))) DBUG_RETURN(-1); // abort() deletes table if (table->s->fields < values.elements) @@ -2884,13 +2858,13 @@ bool select_create::send_eof() { table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY); VOID(pthread_mutex_lock(&LOCK_open)); - mysql_unlock_tables(thd, lock); + mysql_unlock_tables(thd, thd->extra_lock); if (!table->s->tmp_table) { if (close_thread_table(thd, &table)) VOID(pthread_cond_broadcast(&COND_refresh)); } - lock=0; + thd->extra_lock=0; table=0; VOID(pthread_mutex_unlock(&LOCK_open)); } @@ -2900,10 +2874,10 @@ bool select_create::send_eof() void select_create::abort() { VOID(pthread_mutex_lock(&LOCK_open)); - if (lock) + if (thd->extra_lock) { - mysql_unlock_tables(thd, lock); - lock=0; + mysql_unlock_tables(thd, thd->extra_lock); + thd->extra_lock=0; } if (table) { -- cgit v1.2.1 From c56f8803306412a2768cf3363bbdc903a3e4bd31 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 13:53:02 +0200 Subject: fix result file for ndb_dd_ddl mysql-test/r/ndb_dd_ddl.result: fix so that result file is not dependant on local filesystem mysql-test/t/ndb_dd_ddl.test: fix so that result file is not dependant on local filesystem --- mysql-test/r/ndb_dd_ddl.result | 4 ++-- mysql-test/t/ndb_dd_ddl.test | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/ndb_dd_ddl.result b/mysql-test/r/ndb_dd_ddl.result index 71f42974929..9fff9f06f2a 100644 --- a/mysql-test/r/ndb_dd_ddl.result +++ b/mysql-test/r/ndb_dd_ddl.result @@ -200,14 +200,14 @@ DROP LOGFILE GROUP lg1 ENGINE NDB; **** End = And No = **** create table t1 (a int primary key) engine = myisam; -create logfile group lg1 add undofile '/home/jonas/src/51-work/mysql-test/var/master-data/test/t1.frm' initial_size 1M undo_buffer_size = 1M engine=ndb;; +create logfile group lg1 add undofile 'MYSQLTEST_VARDIR/master-data/test/t1.frm' initial_size 1M undo_buffer_size = 1M engine=ndb;; ERROR HY000: Failed to create UNDOFILE create logfile group lg1 add undofile 'undofile.dat' initial_size 1M undo_buffer_size = 1M engine=ndb; -create tablespace ts1 add datafile '/home/jonas/src/51-work/mysql-test/var/master-data/test/t1.frm' use logfile group lg1 initial_size 1M engine ndb;; +create tablespace ts1 add datafile 'MYSQLTEST_VARDIR/master-data/test/t1.frm' use logfile group lg1 initial_size 1M engine ndb;; ERROR HY000: Failed to create DATAFILE drop tablespace ts1 engine ndb; diff --git a/mysql-test/t/ndb_dd_ddl.test b/mysql-test/t/ndb_dd_ddl.test index 2a0755c2748..95ad7f0d152 100644 --- a/mysql-test/t/ndb_dd_ddl.test +++ b/mysql-test/t/ndb_dd_ddl.test @@ -302,6 +302,7 @@ ENGINE NDB; # bug#16341 create table t1 (a int primary key) engine = myisam; +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR --error ER_CREATE_FILEGROUP_FAILED --eval create logfile group lg1 add undofile '$MYSQLTEST_VARDIR/master-data/test/t1.frm' initial_size 1M undo_buffer_size = 1M engine=ndb; @@ -311,6 +312,7 @@ initial_size 1M undo_buffer_size = 1M engine=ndb; +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR --error ER_CREATE_FILEGROUP_FAILED --eval create tablespace ts1 add datafile '$MYSQLTEST_VARDIR/master-data/test/t1.frm' use logfile group lg1 initial_size 1M engine ndb; -- cgit v1.2.1 From 8dc9ca833366e4844ac0a46de568c95bdc3572ee Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 14:57:43 +0200 Subject: ndb - bug#20008 no DD when diskless storage/ndb/include/kernel/signaldata/CreateFilegroup.hpp: New error code for create file when diskless storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp: New error code for create file when diskless storage/ndb/src/ndbapi/ndberror.c: New error code for create file when diskless --- storage/ndb/include/kernel/signaldata/CreateFilegroup.hpp | 3 ++- storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp | 11 +++++++++++ storage/ndb/src/ndbapi/ndberror.c | 1 + 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/storage/ndb/include/kernel/signaldata/CreateFilegroup.hpp b/storage/ndb/include/kernel/signaldata/CreateFilegroup.hpp index 78216249a72..59e4a33b89d 100644 --- a/storage/ndb/include/kernel/signaldata/CreateFilegroup.hpp +++ b/storage/ndb/include/kernel/signaldata/CreateFilegroup.hpp @@ -159,7 +159,8 @@ struct CreateFileRef { InvalidFilegroupVersion = 754, FilenameAlreadyExists = 760, OutOfFileRecords = 751, - InvalidFileType = 750 + InvalidFileType = 750, + NotSupportedWhenDiskless = 775 }; Uint32 senderData; diff --git a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp index 908c116988d..20132be1261 100644 --- a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp +++ b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp @@ -15153,6 +15153,17 @@ Dbdict::create_file_prepare_start(Signal* signal, SchemaOp* op){ break; } + { + Uint32 dl; + const ndb_mgm_configuration_iterator * p = + m_ctx.m_config.getOwnConfigIterator(); + if(!ndb_mgm_get_int_parameter(p, CFG_DB_DISCLESS, &dl) && dl) + { + op->m_errorCode = CreateFileRef::NotSupportedWhenDiskless; + break; + } + } + // Loop through all filenames... if(!c_obj_pool.seize(obj_ptr)){ op->m_errorCode = CreateTableRef::NoMoreTableRecords; diff --git a/storage/ndb/src/ndbapi/ndberror.c b/storage/ndb/src/ndbapi/ndberror.c index 22252960e21..71291aa39cc 100644 --- a/storage/ndb/src/ndbapi/ndberror.c +++ b/storage/ndb/src/ndbapi/ndberror.c @@ -417,6 +417,7 @@ ErrorBundle ErrorCodes[] = { { 1514, DMEC, SE, "Currently there is a limit of one logfile group" }, { 773, DMEC, SE, "Out of string memory, please modify StringMemory config parameter" }, + { 775, DMEC, SE, "Create file is not supported when Diskless=1" }, /** * FunctionNotImplemented -- cgit v1.2.1 From a5ea8cb0d8d6fe1ae8c8de3fde280a57413788f4 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 15:16:33 +0200 Subject: ndb - bug#18782 crash correct node in case of START_FRAGREF storage/ndb/include/kernel/signaldata/SystemError.hpp: Add error code storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp: Add error code storage/ndb/src/kernel/blocks/dbdih/DbdihInit.cpp: Add error code storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp: Add error code storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp: Add error code --- .../ndb/include/kernel/signaldata/SystemError.hpp | 3 ++- storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp | 1 + storage/ndb/src/kernel/blocks/dbdih/DbdihInit.cpp | 3 +++ storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp | 20 ++++++++++++++++++++ .../ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp | 7 +++++++ 5 files changed, 33 insertions(+), 1 deletion(-) diff --git a/storage/ndb/include/kernel/signaldata/SystemError.hpp b/storage/ndb/include/kernel/signaldata/SystemError.hpp index b3646a858f6..afc25fb004f 100644 --- a/storage/ndb/include/kernel/signaldata/SystemError.hpp +++ b/storage/ndb/include/kernel/signaldata/SystemError.hpp @@ -45,7 +45,8 @@ public: CopyFragRefError = 5, TestStopOnError = 6, CopySubscriptionRef = 7, - CopySubscriberRef = 8 + CopySubscriberRef = 8, + StartFragRefError = 9 }; Uint32 errorRef; diff --git a/storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp b/storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp index f98df82ea7d..77dedc46f0a 100644 --- a/storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp +++ b/storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp @@ -683,6 +683,7 @@ private: void execGETGCIREQ(Signal *); void execDIH_RESTARTREQ(Signal *); void execSTART_RECCONF(Signal *); + void execSTART_FRAGREF(Signal *); void execSTART_FRAGCONF(Signal *); void execADD_FRAGCONF(Signal *); void execADD_FRAGREF(Signal *); diff --git a/storage/ndb/src/kernel/blocks/dbdih/DbdihInit.cpp b/storage/ndb/src/kernel/blocks/dbdih/DbdihInit.cpp index a6ec3749606..0e2fd3869be 100644 --- a/storage/ndb/src/kernel/blocks/dbdih/DbdihInit.cpp +++ b/storage/ndb/src/kernel/blocks/dbdih/DbdihInit.cpp @@ -251,6 +251,9 @@ Dbdih::Dbdih(Block_context& ctx): addRecSignal(GSN_CREATE_FRAGMENTATION_REQ, &Dbdih::execCREATE_FRAGMENTATION_REQ); + addRecSignal(GSN_START_FRAGREF, + &Dbdih::execSTART_FRAGREF); + apiConnectRecord = 0; connectRecord = 0; fileRecord = 0; diff --git a/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp b/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp index bb4c2ed197e..97006de1c5d 100644 --- a/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp +++ b/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp @@ -1106,6 +1106,26 @@ void Dbdih::execSTART_FRAGCONF(Signal* signal) return; }//Dbdih::execSTART_FRAGCONF() +void Dbdih::execSTART_FRAGREF(Signal* signal) +{ + jamEntry(); + + /** + * Kill starting node + */ + Uint32 errCode = signal->theData[1]; + Uint32 nodeId = signal->theData[2]; + + SystemError * const sysErr = (SystemError*)&signal->theData[0]; + sysErr->errorCode = SystemError::StartFragRefError; + sysErr->errorRef = reference(); + sysErr->data1 = errCode; + sysErr->data2 = 0; + sendSignal(calcNdbCntrBlockRef(nodeId), GSN_SYSTEM_ERROR, signal, + SystemError::SignalLength, JBB); + return; +}//Dbdih::execSTART_FRAGCONF() + void Dbdih::execSTART_MEREF(Signal* signal) { jamEntry(); diff --git a/storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp b/storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp index 7c48ebb5e8b..c3140bea25b 100644 --- a/storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp +++ b/storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp @@ -205,6 +205,13 @@ void Ndbcntr::execSYSTEM_ERROR(Signal* signal) killingNode, data1); break; + case SystemError::StartFragRefError: + BaseString::snprintf(buf, sizeof(buf), + "Node %d killed this node because " + "it replied StartFragRef error code: %u.", + killingNode, data1); + break; + case SystemError::CopySubscriptionRef: BaseString::snprintf(buf, sizeof(buf), "Node %d killed this node because " -- cgit v1.2.1 From d65b4af29aacac5a3224640c8b187d96d9ccaa24 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 10:01:30 -0400 Subject: BUG#17138: Stored procedure error Review fixes mysql-test/r/partition.result: Review fixes mysql-test/t/partition.test: Review fixes sql/sql_insert.cc: Fixed a bug --- mysql-test/r/partition.result | 6 ++++-- mysql-test/t/partition.test | 4 +++- sql/sql_insert.cc | 9 +++++++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/mysql-test/r/partition.result b/mysql-test/r/partition.result index b51436e6747..7b1fdab9ec2 100644 --- a/mysql-test/r/partition.result +++ b/mysql-test/r/partition.result @@ -1043,11 +1043,12 @@ alter table t1 add partition (partition p2 values in (3)); alter table t1 drop partition p2; use test; drop database db99; +drop procedure if exists mysqltest_1; create table t1 (a int) partition by list (a) (partition p0 values in (0)); insert into t1 values (0); -create procedure po () +create procedure mysqltest_1 () begin begin declare continue handler for sqlexception begin end; @@ -1056,6 +1057,7 @@ end; prepare stmt1 from 'alter table t1'; execute stmt1; end// -call po()// +call mysqltest_1()// drop table t1; +drop procedure mysqltest_1; End of 5.1 tests diff --git a/mysql-test/t/partition.test b/mysql-test/t/partition.test index 8cfcc059920..e82f0d184bf 100644 --- a/mysql-test/t/partition.test +++ b/mysql-test/t/partition.test @@ -1202,7 +1202,9 @@ drop database db99; # #BUG 17138 Problem with stored procedure and analyze partition # -drop procedure mysqltest_1 if exists; +--disable_warnings +drop procedure if exists mysqltest_1; +--enable_warnings create table t1 (a int) partition by list (a) diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 8b0bd655360..21a8da05ad9 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -981,8 +981,13 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info) goto err; table->file->restore_auto_increment(); // it's too early here! BUG#20188 is_duplicate_key_error= table->file->is_fatal_error(error, 0); - if (info->ignore && !is_duplicate_key_error) - goto ok_or_after_trg_err; + if (!is_duplicate_key_error) + { + if (info->ignore) + goto ok_or_after_trg_err; + else + goto err; + } if ((int) (key_nr = table->file->get_dup_key(error)) < 0) { error=HA_ERR_FOUND_DUPP_KEY; /* Database can't find key */ -- cgit v1.2.1 From 729a54cccf8fd9b52e87eb7a74104346fcfe7d78 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 16:13:18 +0200 Subject: fix for bug#20624: events_logs_tests.test fails randomly (this is a change to a faulty test file) mysql-test/r/events_logs_tests.result: update result mysql-test/t/events_logs_tests.test: fix the test file, so TRUNCATE should not land into the slow_log This happens on loaded machines, for example when running few suites in parallel. fix for bug #20624: events_logs_tests.test fails randomly --- mysql-test/r/events_logs_tests.result | 13 ++++++++++--- mysql-test/t/events_logs_tests.test | 13 ++++++++++--- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/mysql-test/r/events_logs_tests.result b/mysql-test/r/events_logs_tests.result index ce58e0ec059..9202d63fd2c 100644 --- a/mysql-test/r/events_logs_tests.result +++ b/mysql-test/r/events_logs_tests.result @@ -31,6 +31,8 @@ SHOW VARIABLES LIKE 'log_slow_queries'; Variable_name Value log_slow_queries ON DROP FUNCTION get_value; +"Make it quite long" +SET SESSION long_query_time=300; TRUNCATE mysql.slow_log; SELECT user_host, query_time, db, sql_text FROM mysql.slow_log; user_host query_time db sql_text @@ -44,7 +46,10 @@ SLEEP(2) SELECT user_host, query_time, db, sql_text FROM mysql.slow_log; user_host query_time db sql_text USER_HOST SLEEPVAL events_test SELECT SLEEP(2) +SET SESSION long_query_time=300; +"Make it quite long" TRUNCATE mysql.slow_log; +SET SESSION long_query_time=1; CREATE TABLE slow_event_test (slo_val tinyint, val tinyint); "This won't go to the slow log" CREATE EVENT long_event ON SCHEDULE EVERY 1 MINUTE DO INSERT INTO slow_event_test SELECT @@long_query_time, SLEEP(3); @@ -63,9 +68,9 @@ slo_val val SELECT user_host, query_time, db, sql_text FROM mysql.slow_log; user_host query_time db sql_text "This should go to the slow log" +DROP EVENT long_event; SET SESSION long_query_time=10; SET GLOBAL long_query_time=1; -DROP EVENT long_event; CREATE EVENT long_event2 ON SCHEDULE EVERY 1 MINUTE DO INSERT INTO slow_event_test SELECT @@long_query_time, SLEEP(2); "Sleep some more time than the actual event run will take" "Check our table. Should see 2 rows" @@ -78,8 +83,10 @@ SELECT user_host, query_time, db, sql_text FROM mysql.slow_log; user_host query_time db sql_text USER_HOST SLEEPVAL events_test INSERT INTO slow_event_test SELECT @@long_query_time, SLEEP(2) DROP EVENT long_event2; -SET GLOBAL long_query_time =@old_global_long_query_time; -SET SESSION long_query_time =@old_session_long_query_time; +"Make it quite long" +SET SESSION long_query_time=300; TRUNCATE mysql.slow_log; DROP TABLE slow_event_test; +SET GLOBAL long_query_time =@old_global_long_query_time; +SET SESSION long_query_time =@old_session_long_query_time; drop database events_test; diff --git a/mysql-test/t/events_logs_tests.test b/mysql-test/t/events_logs_tests.test index 6d3b3292630..8ee34e2d32c 100644 --- a/mysql-test/t/events_logs_tests.test +++ b/mysql-test/t/events_logs_tests.test @@ -51,6 +51,8 @@ SET @old_global_long_query_time:=(select get_value()); SET @old_session_long_query_time:=@@long_query_time; SHOW VARIABLES LIKE 'log_slow_queries'; DROP FUNCTION get_value; +--echo "Make it quite long" +SET SESSION long_query_time=300; TRUNCATE mysql.slow_log; --replace_column 1 USER_HOST SELECT user_host, query_time, db, sql_text FROM mysql.slow_log; @@ -61,7 +63,10 @@ SET SESSION long_query_time=1; SELECT SLEEP(2); --replace_column 1 USER_HOST 2 SLEEPVAL SELECT user_host, query_time, db, sql_text FROM mysql.slow_log; +SET SESSION long_query_time=300; +--echo "Make it quite long" TRUNCATE mysql.slow_log; +SET SESSION long_query_time=1; CREATE TABLE slow_event_test (slo_val tinyint, val tinyint); --echo "This won't go to the slow log" CREATE EVENT long_event ON SCHEDULE EVERY 1 MINUTE DO INSERT INTO slow_event_test SELECT @@long_query_time, SLEEP(3); @@ -75,9 +80,9 @@ SELECT * FROM slow_event_test; --echo "Check slow log. Should not see anything because 3 is under the threshold of 4 for GLOBAL, though over SESSION which is 2" SELECT user_host, query_time, db, sql_text FROM mysql.slow_log; --echo "This should go to the slow log" +DROP EVENT long_event; SET SESSION long_query_time=10; SET GLOBAL long_query_time=1; -DROP EVENT long_event; CREATE EVENT long_event2 ON SCHEDULE EVERY 1 MINUTE DO INSERT INTO slow_event_test SELECT @@long_query_time, SLEEP(2); --echo "Sleep some more time than the actual event run will take" --sleep 3 @@ -87,9 +92,11 @@ SELECT * FROM slow_event_test; --replace_column 1 USER_HOST 2 SLEEPVAL SELECT user_host, query_time, db, sql_text FROM mysql.slow_log; DROP EVENT long_event2; -SET GLOBAL long_query_time =@old_global_long_query_time; -SET SESSION long_query_time =@old_session_long_query_time; +--echo "Make it quite long" +SET SESSION long_query_time=300; TRUNCATE mysql.slow_log; DROP TABLE slow_event_test; +SET GLOBAL long_query_time =@old_global_long_query_time; +SET SESSION long_query_time =@old_session_long_query_time; drop database events_test; -- cgit v1.2.1 From dcd384ba83bc120337d11c9baae6deb5f391e076 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 19:20:29 +0500 Subject: test fix(to satisfy Win) mysql-test/r/log_state.result: result fix(to satisfy Win) --- mysql-test/r/log_state.result | 22 +++++++++++----------- mysql-test/t/log_state.test | 16 ++++++++-------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/mysql-test/r/log_state.result b/mysql-test/r/log_state.result index df81f05fea5..43735243787 100644 --- a/mysql-test/r/log_state.result +++ b/mysql-test/r/log_state.result @@ -14,15 +14,15 @@ set global general_log= ON; create table t1(f1 int); select * from mysql.general_log; event_time user_host thread_id server_id command_type argument -TIMESTAMP root[root] @ localhost [] # 1 Query create table t1(f1 int) -TIMESTAMP root[root] @ localhost [] # 1 Query select * from mysql.general_log +TIMESTAMP USER_HOST # 1 Query create table t1(f1 int) +TIMESTAMP USER_HOST # 1 Query select * from mysql.general_log set global general_log= OFF; drop table t1; select * from mysql.general_log; event_time user_host thread_id server_id command_type argument -TIMESTAMP root[root] @ localhost [] # 1 Query create table t1(f1 int) -TIMESTAMP root[root] @ localhost [] # 1 Query select * from mysql.general_log -TIMESTAMP root[root] @ localhost [] # 1 Query set global general_log= OFF +TIMESTAMP USER_HOST # 1 Query create table t1(f1 int) +TIMESTAMP USER_HOST # 1 Query select * from mysql.general_log +TIMESTAMP USER_HOST # 1 Query set global general_log= OFF set global general_log= ON; flush logs; show global variables @@ -46,7 +46,7 @@ sleep(2) 0 select * from mysql.slow_log; start_time user_host query_time lock_time rows_sent rows_examined db last_insert_id insert_id server_id sql_text -TIMESTAMP, root[root] @ localhost [] USER_HOST, QUERY_TIME 1 0 test 0 0 1 select sleep(2) +TIMESTAMP USER_HOST QUERY_TIME 00:00:00 1 0 test 0 0 1 select sleep(2) show global variables where Variable_name = 'log' or Variable_name = 'log_slow_queries' or Variable_name = 'general_log' or Variable_name = 'slow_query_log'; @@ -67,9 +67,9 @@ create table t1(f1 int); drop table t1; select * from mysql.general_log; event_time user_host thread_id server_id command_type argument -TIMESTAMP root[root] @ localhost [] # 1 Query create table t1(f1 int) -TIMESTAMP root[root] @ localhost [] # 1 Query drop table t1 -TIMESTAMP root[root] @ localhost [] # 1 Query select * from mysql.general_log +TIMESTAMP USER_HOST # 1 Query create table t1(f1 int) +TIMESTAMP USER_HOST # 1 Query drop table t1 +TIMESTAMP USER_HOST # 1 Query select * from mysql.general_log set global general_log= OFF; truncate table mysql.general_log; select * from mysql.general_log; @@ -151,5 +151,5 @@ set global general_log=ON; drop table t1; select * from mysql.general_log; event_time user_host thread_id server_id command_type argument -TIMESTAMP root[root] @ localhost [] # 1 Query drop table t1 -TIMESTAMP root[root] @ localhost [] # 1 Query select * from mysql.general_log +TIMESTAMP USER_HOST # 1 Query drop table t1 +TIMESTAMP USER_HOST # 1 Query select * from mysql.general_log diff --git a/mysql-test/t/log_state.test b/mysql-test/t/log_state.test index d3dec841dc1..41fbd068dce 100644 --- a/mysql-test/t/log_state.test +++ b/mysql-test/t/log_state.test @@ -11,11 +11,11 @@ Variable_name = 'general_log' or Variable_name = 'slow_query_log'; flush logs; set global general_log= ON; create table t1(f1 int); ---replace_column 1 TIMESTAMP 3 # +--replace_column 1 TIMESTAMP 2 USER_HOST 3 # select * from mysql.general_log; set global general_log= OFF; drop table t1; ---replace_column 1 TIMESTAMP 3 # +--replace_column 1 TIMESTAMP 2 USER_HOST 3 # select * from mysql.general_log; set global general_log= ON; flush logs; @@ -27,7 +27,7 @@ connect (con1,localhost,root,,); connection con1; set session long_query_time=1; select sleep(2); ---replace_column 1 TIMESTAMP, 3 USER_HOST, 4 QUERY_TIME +--replace_column 1 TIMESTAMP 2 USER_HOST 3 QUERY_TIME select * from mysql.slow_log; connection default; @@ -35,7 +35,7 @@ set global slow_query_log= ON; connection con1; set session long_query_time=1; select sleep(2); ---replace_column 1 TIMESTAMP, 3 USER_HOST, 4 QUERY_TIME +--replace_column 1 TIMESTAMP 2 USER_HOST 3 QUERY_TIME select * from mysql.slow_log; disconnect con1; connection default; @@ -54,11 +54,11 @@ set global general_log= ON; truncate table mysql.general_log; create table t1(f1 int); drop table t1; ---replace_column 1 TIMESTAMP 3 # +--replace_column 1 TIMESTAMP 2 USER_HOST 3 # select * from mysql.general_log; set global general_log= OFF; truncate table mysql.general_log; ---replace_column 1 TIMESTAMP 3 # +--replace_column 1 TIMESTAMP 2 USER_HOST 3 # select * from mysql.general_log; set global general_log= ON; show global variables @@ -109,14 +109,14 @@ truncate table mysql.general_log; show variables like 'log_output'; set global general_log=ON; create table t1(f1 int); ---replace_column 1 TIMESTAMP 3 # +--replace_column 1 TIMESTAMP 2 USER_HOST 3 # select * from mysql.general_log; set global general_log=OFF; set global log_output="FILE,TABLE"; show variables like 'log_output'; set global general_log=ON; drop table t1; ---replace_column 1 TIMESTAMP 3 # +--replace_column 1 TIMESTAMP 2 USER_HOST 3 # select * from mysql.general_log; --enable_ps_protocol -- cgit v1.2.1 From 3c6d0b6ae8f766d78e08505909d6de73833cb971 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 16:42:50 +0200 Subject: BUG#20549: Fix missing memory initialization. Some values were not initialized, causing Valgrind errors (and potential random bugs): - NDB binlog thread thd->variables.pseudo_thread_id. - Table null bits. - Field bytes for columns with NULL values. sql/ha_ndbcluster_binlog.cc: Fix initialization of thd->variables.pseudo_thread_id. Change double alloc_root() call to multi_alloc_root(). Fix missing initialization of null bits. sql/sql_class.cc: Do not read from the supplied record for NULL values, use the default value record instead. Otherwise we will get Valgrind errors about uninitialised values written to binlog, as NDB does not initialize the memory in records for NULL fields. --- sql/ha_ndbcluster_binlog.cc | 21 ++++++++++++++++++--- sql/sql_class.cc | 8 ++++++-- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/sql/ha_ndbcluster_binlog.cc b/sql/ha_ndbcluster_binlog.cc index 022c8a021cb..dac6419b198 100644 --- a/sql/ha_ndbcluster_binlog.cc +++ b/sql/ha_ndbcluster_binlog.cc @@ -311,8 +311,10 @@ ndbcluster_binlog_open_table(THD *thd, NDB_SHARE *share, if (!reopen) { // allocate memory on ndb share so it can be reused after online alter table - share->record[0]= (byte*) alloc_root(&share->mem_root, table->s->rec_buff_length); - share->record[1]= (byte*) alloc_root(&share->mem_root, table->s->rec_buff_length); + (void)multi_alloc_root(&share->mem_root, + &(share->record[0]), table->s->rec_buff_length, + &(share->record[1]), table->s->rec_buff_length, + NULL); } { my_ptrdiff_t row_offset= share->record[0] - table->record[0]; @@ -2159,6 +2161,9 @@ int ndb_add_binlog_index(THD *thd, void *_row) break; } + // Set all fields non-null. + if(binlog_index->s->null_bytes > 0) + bzero(binlog_index->record[0], binlog_index->s->null_bytes); binlog_index->field[0]->store(row.master_log_pos); binlog_index->field[1]->store(row.master_log_file, strlen(row.master_log_file), @@ -3275,6 +3280,13 @@ pthread_handler_t ndb_binlog_thread_func(void *arg) thd= new THD; /* note that contructor of THD uses DBUG_ */ THD_CHECK_SENTRY(thd); + /* We need to set thd->thread_id before thd->store_globals, or it will + set an invalid value for thd->variables.pseudo_thread_id. + */ + pthread_mutex_lock(&LOCK_thread_count); + thd->thread_id= thread_id++; + pthread_mutex_unlock(&LOCK_thread_count); + thd->thread_stack= (char*) &thd; /* remember where our stack is */ if (thd->store_globals()) { @@ -3307,7 +3319,6 @@ pthread_handler_t ndb_binlog_thread_func(void *arg) pthread_detach_this_thread(); thd->real_id= pthread_self(); pthread_mutex_lock(&LOCK_thread_count); - thd->thread_id= thread_id++; threads.append(thd); pthread_mutex_unlock(&LOCK_thread_count); thd->lex->start_transaction_opt= 0; @@ -3641,6 +3652,10 @@ restart: injector::transaction::table tbl(table, TRUE); int ret= trans.use_table(::server_id, tbl); DBUG_ASSERT(ret == 0); + + // Set all fields non-null. + if(table->s->null_bytes > 0) + bzero(table->record[0], table->s->null_bytes); table->field[0]->store((longlong)::server_id); table->field[1]->store((longlong)gci); trans.write_row(::server_id, diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 0ede042da17..1c7d00a5fe1 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -2475,15 +2475,19 @@ my_size_t THD::pack_row(TABLE *table, MY_BITMAP const* cols, byte *row_data, int n_null_bytes= table->s->null_bytes; byte *ptr; uint i; - my_ptrdiff_t const offset= (my_ptrdiff_t) (record - (byte*) - table->record[0]); + my_ptrdiff_t const rec_offset= record - table->record[0]; + my_ptrdiff_t const def_offset= table->s->default_values - table->record[0]; memcpy(row_data, record, n_null_bytes); ptr= row_data+n_null_bytes; for (i= 0 ; (field= *p_field) ; i++, p_field++) { if (bitmap_is_set(cols,i)) + { + my_ptrdiff_t const offset= + field->is_null(rec_offset) ? def_offset : rec_offset; ptr= (byte*)field->pack((char *) ptr, field->ptr + offset); + } } return (static_cast(ptr - row_data)); } -- cgit v1.2.1 From aa475d48a43094d984cb45c52807de0eab979a82 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 10:46:02 -0400 Subject: BUG#20583: index_last causes crash when performed on single partition mysql-test/r/partition.result: New test case mysql-test/t/partition.test: New test case sql/ha_partition.cc: Ensure index_last always uses ordered index scan --- mysql-test/r/partition.result | 8 ++++++++ mysql-test/t/partition.test | 9 +++++++++ sql/ha_partition.cc | 3 ++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/partition.result b/mysql-test/r/partition.result index fa1baaec07e..f6f5073f241 100644 --- a/mysql-test/r/partition.result +++ b/mysql-test/r/partition.result @@ -1043,4 +1043,12 @@ alter table t1 add partition (partition p2 values in (3)); alter table t1 drop partition p2; use test; drop database db99; +create table t1 (a int, index(a)) +partition by hash(a); +insert into t1 values (1),(2); +select * from t1 ORDER BY a DESC; +a +2 +1 +drop table t1; End of 5.1 tests diff --git a/mysql-test/t/partition.test b/mysql-test/t/partition.test index f62bb2dcd01..758a551cc95 100644 --- a/mysql-test/t/partition.test +++ b/mysql-test/t/partition.test @@ -1199,4 +1199,13 @@ alter table t1 drop partition p2; use test; drop database db99; +# +# Bug 20583 Partitions: Crash using index_last +# +create table t1 (a int, index(a)) +partition by hash(a); +insert into t1 values (1),(2); +select * from t1 ORDER BY a DESC; +drop table t1; + --echo End of 5.1 tests diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index 93fb6409f9f..293085a2630 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -3399,7 +3399,8 @@ int ha_partition::common_first_last(byte *buf) if ((error= partition_scan_set_up(buf, FALSE))) return error; - if (!m_ordered_scan_ongoing) + if (!m_ordered_scan_ongoing && + m_index_scan_type != partition_index_last) return handle_unordered_scan_next_partition(buf); return handle_ordered_index_scan(buf); } -- cgit v1.2.1 From bd6f56a798efcac209dc4bcf1c83cb2eeffe1b5c Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 18:56:22 +0400 Subject: Additional fix for BUG#20294: Instance manager test im_instance_conf fails randomly. mysql-test/r/im_options.result: Updated result file. mysql-test/t/im_instance_conf.imtest: Added a note about specific of CREATE INSTANCE usage in IM-tests. mysql-test/t/im_options.imtest: 1. Specify socket-file-name for new instance so that the test does not depend on another running test-suite on the same box. 2. Added a note about specific of CREATE INSTANCE usage in IM-tests. --- mysql-test/r/im_options.result | 7 ++++++- mysql-test/t/im_instance_conf.imtest | 3 +++ mysql-test/t/im_options.imtest | 10 ++++++++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/im_options.result b/mysql-test/r/im_options.result index 8039333b7d9..cb678581533 100644 --- a/mysql-test/r/im_options.result +++ b/mysql-test/r/im_options.result @@ -13,7 +13,10 @@ UNSET mysqld1.server_id; ERROR HY000: The instance is active. Stop the instance first SET mysqld1.server_id = 11; ERROR HY000: The instance is active. Stop the instance first -CREATE INSTANCE mysqld3 datadir = '/'; +CREATE INSTANCE mysqld3 +datadir = '/', +server_id = 3, +socket = "$MYSQL_TMP_DIR/mysqld_3.sock"; START INSTANCE mysqld3; UNSET mysqld3.server_id; ERROR HY000: The instance is active. Stop the instance first @@ -101,12 +104,14 @@ ERROR HY000: Bad instance name. Check that the instance with such a name exists -------------------------------------------------------------------- server_id = 1 server_id=2 +server_id=3 -------------------------------------------------------------------- UNSET mysqld2.server_id, mysqld3.server_id, mysqld1.ccc; ERROR HY000: The instance is active. Stop the instance first -------------------------------------------------------------------- server_id = 1 server_id=2 +server_id=3 -------------------------------------------------------------------- DROP INSTANCE mysqld3; SET mysqld2.server_id=222; diff --git a/mysql-test/t/im_instance_conf.imtest b/mysql-test/t/im_instance_conf.imtest index 2cd7b955978..3d254b16ca5 100644 --- a/mysql-test/t/im_instance_conf.imtest +++ b/mysql-test/t/im_instance_conf.imtest @@ -21,6 +21,9 @@ # - DROP INSTANCE fails for active instance. # - DROP INSTANCE updates both config file and internal configuration cache; # +# NOTE: each CREATE INSTANCE statement must specify socket-file-name, otherwise +# this results of the test can be affected by another running test suite. +# ########################################################################### --source include/im_check_os.inc diff --git a/mysql-test/t/im_options.imtest b/mysql-test/t/im_options.imtest index cd905416cda..55bd29c9ee1 100644 --- a/mysql-test/t/im_options.imtest +++ b/mysql-test/t/im_options.imtest @@ -21,12 +21,15 @@ # - server_id # - port # - nonguarded - +# # Let's test SET statement on the option 'server_id'. It's expected that # originally the instances have the following server ids and states: # - mysqld1: server_id: 1; running (online) # - mysqld2: server_id: 2; stopped (offline) # +# NOTE: each CREATE INSTANCE statement must specify socket-file-name, otherwise +# this results of the test can be affected by another running test suite. +# ########################################################################### --source include/im_check_os.inc @@ -76,7 +79,10 @@ SET mysqld1.server_id = 11; # - start it; # - try to set/unset options; -CREATE INSTANCE mysqld3 datadir = '/'; +CREATE INSTANCE mysqld3 + datadir = '/', + server_id = 3, + socket = "$MYSQL_TMP_DIR/mysqld_3.sock"; START INSTANCE mysqld3; # FIXME: START INSTANCE should be synchronous. -- cgit v1.2.1 From 15ac64063197f00a7343fb99613554788cca10b0 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 19:15:03 +0400 Subject: Bug#15811: extremely long time for mysql client to execute long INSERT The problem was in redundant calls to strlen() in string functions, where we may then return after checking only the small number of characters. No test case is provided since it's a performance fix. strings/ctype-mb.c: Do not use strlen() where arbitrary horizon of at least CHARSET_INFO::mbmaxlen character is sufficient. --- strings/ctype-mb.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/strings/ctype-mb.c b/strings/ctype-mb.c index a3e10ba7650..0d73c7d1e51 100644 --- a/strings/ctype-mb.c +++ b/strings/ctype-mb.c @@ -24,12 +24,12 @@ void my_caseup_str_mb(CHARSET_INFO * cs, char *str) { register uint32 l; - register char *end=str+strlen(str); /* BAR TODO: remove strlen() call */ register uchar *map=cs->to_upper; while (*str) { - if ((l=my_ismbchar(cs, str,end))) + /* Pointing after the '\0' is safe here. */ + if ((l=my_ismbchar(cs, str, str + cs->mbmaxlen))) str+=l; else { @@ -42,12 +42,12 @@ void my_caseup_str_mb(CHARSET_INFO * cs, char *str) void my_casedn_str_mb(CHARSET_INFO * cs, char *str) { register uint32 l; - register char *end=str+strlen(str); register uchar *map=cs->to_lower; while (*str) { - if ((l=my_ismbchar(cs, str,end))) + /* Pointing after the '\0' is safe here. */ + if ((l=my_ismbchar(cs, str, str + cs->mbmaxlen))) str+=l; else { @@ -101,15 +101,18 @@ uint my_casedn_mb(CHARSET_INFO * cs, char *src, uint srclen, return srclen; } +/* + my_strcasecmp_mb() returns 0 if strings are equal, non-zero otherwise. + */ int my_strcasecmp_mb(CHARSET_INFO * cs,const char *s, const char *t) { register uint32 l; - register const char *end=s+strlen(s); register uchar *map=cs->to_upper; - while (smbmaxlen))) { while (l--) if (*s++ != *t++) @@ -120,7 +123,8 @@ int my_strcasecmp_mb(CHARSET_INFO * cs,const char *s, const char *t) else if (map[(uchar) *s++] != map[(uchar) *t++]) return 1; } - return *t; + /* At least one of '*s' and '*t' is zero here. */ + return (*t != *s); } -- cgit v1.2.1 From 67fd3c4a53f585f8e33b5094822cf639a27483de Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 19:29:48 +0400 Subject: A fix and a test case for Bug#15217 "Using a SP cursor on a table created with PREPARE fails with weird error". More generally, re-executing a stored procedure with a complex SP cursor query could lead to a crash. The cause of the problem was that SP cursor queries were not optimized properly at first execution: their parse tree belongs to sp_instr_cpush, not sp_instr_copen, and thus the tree was tagged "EXECUTED" when the cursor was declared, not when it was opened. This led to loss of optimization transformations performed at first execution, as sp_instr_copen saw that the query is already "EXECUTED" and therefore either not ran first-execution related blocks or wrongly rolled back the transformations caused by first-execution code. The fix is to update the state of the parsed tree only when the tree is executed, as opposed to when the instruction containing the tree is executed. Assignment if i->state is moved to reset_lex_and_exec_core. mysql-test/r/sp.result: Test results fixed (Bug#15217) mysql-test/t/sp.test: Add a test case for Bug#15217 sql/sp_head.cc: Move assignment of stmt_arena->state to reset_lex_and_exec_core --- mysql-test/r/sp.result | 21 +++++++++++++++++++++ mysql-test/t/sp.test | 27 +++++++++++++++++++++++++++ sql/sp_head.cc | 4 +++- 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/sp.result b/mysql-test/r/sp.result index ff378f1f43b..d3874c769fa 100644 --- a/mysql-test/r/sp.result +++ b/mysql-test/r/sp.result @@ -4990,4 +4990,25 @@ CALL bug18037_p2()| DROP FUNCTION bug18037_f1| DROP PROCEDURE bug18037_p1| DROP PROCEDURE bug18037_p2| +drop table if exists t3| +drop procedure if exists bug15217| +create table t3 as select 1| +create procedure bug15217() +begin +declare var1 char(255); +declare cur1 cursor for select * from t3; +open cur1; +fetch cur1 into var1; +select concat('data was: /', var1, '/'); +close cur1; +end | +call bug15217()| +concat('data was: /', var1, '/') +data was: /1/ +flush tables | +call bug15217()| +concat('data was: /', var1, '/') +data was: /1/ +drop table t3| +drop procedure bug15217| drop table t1,t2; diff --git a/mysql-test/t/sp.test b/mysql-test/t/sp.test index 1d21a5da187..66498198157 100644 --- a/mysql-test/t/sp.test +++ b/mysql-test/t/sp.test @@ -5888,6 +5888,33 @@ DROP FUNCTION bug18037_f1| DROP PROCEDURE bug18037_p1| DROP PROCEDURE bug18037_p2| +# +# Bug#15217 "Using a SP cursor on a table created with PREPARE fails with +# weird error". Check that the code that is supposed to work at +# the first execution of a stored procedure actually works for +# sp_instr_copen. + +--disable_warnings +drop table if exists t3| +drop procedure if exists bug15217| +--enable_warnings +create table t3 as select 1| +create procedure bug15217() +begin + declare var1 char(255); + declare cur1 cursor for select * from t3; + open cur1; + fetch cur1 into var1; + select concat('data was: /', var1, '/'); + close cur1; +end | +# Returns expected result +call bug15217()| +flush tables | +# Returns error with garbage as column name +call bug15217()| +drop table t3| +drop procedure bug15217| # # BUG#NNNN: New bug synopsis diff --git a/sql/sp_head.cc b/sql/sp_head.cc index 3b29a841966..ef2f895c8b2 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -1075,7 +1075,6 @@ sp_head::execute(THD *thd) thd->net.no_send_error= 0; if (i->free_list) cleanup_items(i->free_list); - i->state= Query_arena::EXECUTED; /* If we've set thd->user_var_events_alloc to mem_root of this SP @@ -2210,6 +2209,9 @@ sp_lex_keeper::reset_lex_and_exec_core(THD *thd, uint *nextp, m_lex->mark_as_requiring_prelocking(NULL); } thd->rollback_item_tree_changes(); + /* Update the state of the active arena. */ + thd->stmt_arena->state= Query_arena::EXECUTED; + /* Unlike for PS we should not call Item's destructors for newly created -- cgit v1.2.1 From 5aaba8297c5ea5447a53a54b73f73e6f0623f7f3 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 19:26:15 +0200 Subject: ndb - bug#18781 post-merge 5.0->5.1 fixes (one more to come) have to push this to be able to push 5.0 storage/ndb/include/kernel/signaldata/DictLock.hpp: Rename: ndb/include/kernel/signaldata/DictLock.hpp -> storage/ndb/include/kernel/signaldata/DictLock.hpp storage/ndb/src/kernel/blocks/dbdict/DictLock.txt: Rename: ndb/src/kernel/blocks/dbdict/DictLock.txt -> storage/ndb/src/kernel/blocks/dbdict/DictLock.txt storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp: debug storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp: bug#18781 post-merge 5.0->5.1 fixes (one more to come) storage/ndb/src/ndbapi/ndberror.c: bug#18781 post-merge 5.0->5.1 fixes (one more to come) storage/ndb/test/ndbapi/testDict.cpp: bug#18781 post-merge 5.0->5.1 fixes (one more to come) storage/ndb/test/src/NdbRestarter.cpp: bug#18781 post-merge 5.0->5.1 fixes (one more to come) --- ndb/include/kernel/signaldata/DictLock.hpp | 78 ------------------ ndb/src/kernel/blocks/dbdict/DictLock.txt | 94 ---------------------- storage/ndb/include/kernel/signaldata/DictLock.hpp | 78 ++++++++++++++++++ storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp | 1 + storage/ndb/src/kernel/blocks/dbdict/DictLock.txt | 94 ++++++++++++++++++++++ storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp | 18 +++-- storage/ndb/src/ndbapi/ndberror.c | 1 + storage/ndb/test/ndbapi/testDict.cpp | 9 ++- storage/ndb/test/src/NdbRestarter.cpp | 5 +- 9 files changed, 195 insertions(+), 183 deletions(-) delete mode 100644 ndb/include/kernel/signaldata/DictLock.hpp delete mode 100644 ndb/src/kernel/blocks/dbdict/DictLock.txt create mode 100644 storage/ndb/include/kernel/signaldata/DictLock.hpp create mode 100644 storage/ndb/src/kernel/blocks/dbdict/DictLock.txt diff --git a/ndb/include/kernel/signaldata/DictLock.hpp b/ndb/include/kernel/signaldata/DictLock.hpp deleted file mode 100644 index 3e29d762962..00000000000 --- a/ndb/include/kernel/signaldata/DictLock.hpp +++ /dev/null @@ -1,78 +0,0 @@ -/* Copyright (C) 2003 MySQL AB - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - -#ifndef DICT_LOCK_HPP -#define DICT_LOCK_HPP - -#include "SignalData.hpp" - -// see comments in Dbdict.hpp - -class DictLockReq { - friend class Dbdict; - friend class Dbdih; -public: - STATIC_CONST( SignalLength = 3 ); - enum LockType { - NoLock = 0, - NodeRestartLock = 1 - }; -private: - Uint32 userPtr; - Uint32 lockType; - Uint32 userRef; -}; - -class DictLockConf { - friend class Dbdict; - friend class Dbdih; -public: - STATIC_CONST( SignalLength = 3 ); -private: - Uint32 userPtr; - Uint32 lockType; - Uint32 lockPtr; -}; - -class DictLockRef { - friend class Dbdict; - friend class Dbdih; -public: - STATIC_CONST( SignalLength = 3 ); - enum ErrorCode { - NotMaster = 1, - InvalidLockType = 2, - BadUserRef = 3, - TooLate = 4, - TooManyRequests = 5 - }; -private: - Uint32 userPtr; - Uint32 lockType; - Uint32 errorCode; -}; - -class DictUnlockOrd { - friend class Dbdict; - friend class Dbdih; -public: - STATIC_CONST( SignalLength = 2 ); -private: - Uint32 lockPtr; - Uint32 lockType; -}; - -#endif diff --git a/ndb/src/kernel/blocks/dbdict/DictLock.txt b/ndb/src/kernel/blocks/dbdict/DictLock.txt deleted file mode 100644 index 17f24119e9d..00000000000 --- a/ndb/src/kernel/blocks/dbdict/DictLock.txt +++ /dev/null @@ -1,94 +0,0 @@ -Lock master DICT against schema operations - -Implementation --------------- - -[ see comments in Dbdict.hpp ] - -Use case: Node startup INR / NR -------------------------------- - -Master DICT (like any block) keeps list of alive nodes (c_aliveNodes). -These are participants in schema ops. - -(1) c_aliveNodes is initialized when DICT starts - in sp3 in READ_NODESCONF from CNTR - -(2) when slave node fails (in any sp of the slave node) - it is removed from c_aliveNodes in NODE_FAILREP - -(3) when slave starts, it is added to c_aliveNodes - in sp4 of the starting node in INCL_NODEREQ - -Slave DIH locks master DICT in sp2 and releases the lock when started. -Based on the constraints: - -- the lock is taken when master DICT is known - DIH reads this in sp2 in READ_NODESCONF - -- the lock is taken before (3) - -- the lock is taken before copying starts and held until it is done - in sp4 DIH meta, DICT meta, tuple data - -- on INR in sp2 in START_PERMREQ the LCP info of the slave is erased - in all DIH in invalidateNodeLCP() - not safe under schema ops - -Signals: - -All but DICT_LOCK are standard v5.0 signals. -s=starting node, m=master, a=all participants, l=local block. - -* sp2 - DICT_LOCK and START_PERM - -DIH/s - DICT_LOCK_REQ - DICT/m - DICT_LOCK_CONF -DIH/s - START_PERMREQ - DIH/m - START_INFOREQ - DIH/a - invalidateNodeLCP() if INR - DIH/a - START_INFOCONF - DIH/m - START_PERMCONF -DIH/s - -* sp4 - START_ME (copy metadata, no changes) - -DIH/s - START_MEREQ - DIH/m - COPY_TABREQ - DIH/s - COPY_TABCONF - DIH/m - DICTSTARTREQ - DICT/s - GET_SCHEMA_INFOREQ - DICT/m - SCHEMA_INFO - DICT/s - DICTSTARTCONF - DIH/m - INCL_NODEREQ - DIH/a - INCL_NODEREQ - ANY/l - INCL_NODECONF - DIH/a - INCL_NODECONF - DIH/m - START_MECONF -DIH/s - -* sp7 - release DICT lock - -DIH/s - DICT_UNLOCK_ORD - DICT/m - -# vim: set et sw=4: diff --git a/storage/ndb/include/kernel/signaldata/DictLock.hpp b/storage/ndb/include/kernel/signaldata/DictLock.hpp new file mode 100644 index 00000000000..3e29d762962 --- /dev/null +++ b/storage/ndb/include/kernel/signaldata/DictLock.hpp @@ -0,0 +1,78 @@ +/* Copyright (C) 2003 MySQL AB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#ifndef DICT_LOCK_HPP +#define DICT_LOCK_HPP + +#include "SignalData.hpp" + +// see comments in Dbdict.hpp + +class DictLockReq { + friend class Dbdict; + friend class Dbdih; +public: + STATIC_CONST( SignalLength = 3 ); + enum LockType { + NoLock = 0, + NodeRestartLock = 1 + }; +private: + Uint32 userPtr; + Uint32 lockType; + Uint32 userRef; +}; + +class DictLockConf { + friend class Dbdict; + friend class Dbdih; +public: + STATIC_CONST( SignalLength = 3 ); +private: + Uint32 userPtr; + Uint32 lockType; + Uint32 lockPtr; +}; + +class DictLockRef { + friend class Dbdict; + friend class Dbdih; +public: + STATIC_CONST( SignalLength = 3 ); + enum ErrorCode { + NotMaster = 1, + InvalidLockType = 2, + BadUserRef = 3, + TooLate = 4, + TooManyRequests = 5 + }; +private: + Uint32 userPtr; + Uint32 lockType; + Uint32 errorCode; +}; + +class DictUnlockOrd { + friend class Dbdict; + friend class Dbdih; +public: + STATIC_CONST( SignalLength = 2 ); +private: + Uint32 lockPtr; + Uint32 lockType; +}; + +#endif diff --git a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp index f3243683d76..58656023e4e 100644 --- a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp +++ b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp @@ -1082,6 +1082,7 @@ private: BlockState& operator=(const BlockState& bs) { Dbdict* dict = (Dbdict*)globalData.getBlock(DBDICT); dict->infoEvent("DICT: bs %d->%d", m_value, bs.m_value); + globalSignalLoggers.log(DBDICT, "bs %d->%d", m_value, bs.m_value); m_value = bs.m_value; return *this; } diff --git a/storage/ndb/src/kernel/blocks/dbdict/DictLock.txt b/storage/ndb/src/kernel/blocks/dbdict/DictLock.txt new file mode 100644 index 00000000000..17f24119e9d --- /dev/null +++ b/storage/ndb/src/kernel/blocks/dbdict/DictLock.txt @@ -0,0 +1,94 @@ +Lock master DICT against schema operations + +Implementation +-------------- + +[ see comments in Dbdict.hpp ] + +Use case: Node startup INR / NR +------------------------------- + +Master DICT (like any block) keeps list of alive nodes (c_aliveNodes). +These are participants in schema ops. + +(1) c_aliveNodes is initialized when DICT starts + in sp3 in READ_NODESCONF from CNTR + +(2) when slave node fails (in any sp of the slave node) + it is removed from c_aliveNodes in NODE_FAILREP + +(3) when slave starts, it is added to c_aliveNodes + in sp4 of the starting node in INCL_NODEREQ + +Slave DIH locks master DICT in sp2 and releases the lock when started. +Based on the constraints: + +- the lock is taken when master DICT is known + DIH reads this in sp2 in READ_NODESCONF + +- the lock is taken before (3) + +- the lock is taken before copying starts and held until it is done + in sp4 DIH meta, DICT meta, tuple data + +- on INR in sp2 in START_PERMREQ the LCP info of the slave is erased + in all DIH in invalidateNodeLCP() - not safe under schema ops + +Signals: + +All but DICT_LOCK are standard v5.0 signals. +s=starting node, m=master, a=all participants, l=local block. + +* sp2 - DICT_LOCK and START_PERM + +DIH/s + DICT_LOCK_REQ + DICT/m + DICT_LOCK_CONF +DIH/s + START_PERMREQ + DIH/m + START_INFOREQ + DIH/a + invalidateNodeLCP() if INR + DIH/a + START_INFOCONF + DIH/m + START_PERMCONF +DIH/s + +* sp4 - START_ME (copy metadata, no changes) + +DIH/s + START_MEREQ + DIH/m + COPY_TABREQ + DIH/s + COPY_TABCONF + DIH/m + DICTSTARTREQ + DICT/s + GET_SCHEMA_INFOREQ + DICT/m + SCHEMA_INFO + DICT/s + DICTSTARTCONF + DIH/m + INCL_NODEREQ + DIH/a + INCL_NODEREQ + ANY/l + INCL_NODECONF + DIH/a + INCL_NODECONF + DIH/m + START_MECONF +DIH/s + +* sp7 - release DICT lock + +DIH/s + DICT_UNLOCK_ORD + DICT/m + +# vim: set et sw=4: diff --git a/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp b/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp index 4d9a28f32d4..f55bb3fadd8 100644 --- a/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp +++ b/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp @@ -15055,13 +15055,14 @@ Dbdih::sendDictLockReq(Signal* signal, Uint32 lockType, Callback c) { Uint32 masterVersion = getNodeInfo(cmasterNodeId).m_version; - unsigned int get_major = getMajor(masterVersion); - unsigned int get_minor = getMinor(masterVersion); - unsigned int get_build = getBuild(masterVersion); - - ndbrequire(get_major == 4 || get_major == 5); + const unsigned int get_major = getMajor(masterVersion); + const unsigned int get_minor = getMinor(masterVersion); + const unsigned int get_build = getBuild(masterVersion); + ndbrequire(get_major >= 4); if (masterVersion < NDBD_DICT_LOCK_VERSION_5 || + masterVersion < NDBD_DICT_LOCK_VERSION_5_1 && + get_major == 5 && get_minor == 1 || ERROR_INSERTED(7176)) { jam(); @@ -15132,10 +15133,13 @@ Dbdih::sendDictUnlockOrd(Signal* signal, Uint32 lockSlavePtrI) { Uint32 masterVersion = getNodeInfo(cmasterNodeId).m_version; - unsigned int get_major = getMajor(masterVersion); - ndbrequire(get_major == 4 || get_major == 5); + const unsigned int get_major = getMajor(masterVersion); + const unsigned int get_minor = getMinor(masterVersion); + ndbrequire(get_major >= 4); if (masterVersion < NDBD_DICT_LOCK_VERSION_5 || + masterVersion < NDBD_DICT_LOCK_VERSION_5_1 && + get_major == 5 && get_minor == 1 || ERROR_INSERTED(7176)) { return; } diff --git a/storage/ndb/src/ndbapi/ndberror.c b/storage/ndb/src/ndbapi/ndberror.c index 22252960e21..a2a25e73ec4 100644 --- a/storage/ndb/src/ndbapi/ndberror.c +++ b/storage/ndb/src/ndbapi/ndberror.c @@ -214,6 +214,7 @@ ErrorBundle ErrorCodes[] = { * OverloadError */ { 701, DMEC, OL, "System busy with other schema operation" }, + { 711, DMEC, OL, "System busy with node restart, schema operations not allowed" }, { 410, DMEC, OL, "REDO log files overloaded, consult online manual (decrease TimeBetweenLocalCheckpoints, and|or increase NoOfFragmentLogFiles)" }, { 677, DMEC, OL, "Index UNDO buffers overloaded (increase UndoIndexBuffer)" }, { 891, DMEC, OL, "Data UNDO buffers overloaded (increase UndoDataBuffer)" }, diff --git a/storage/ndb/test/ndbapi/testDict.cpp b/storage/ndb/test/ndbapi/testDict.cpp index 6eb2ac3fba7..f6277484b04 100644 --- a/storage/ndb/test/ndbapi/testDict.cpp +++ b/storage/ndb/test/ndbapi/testDict.cpp @@ -1852,7 +1852,9 @@ runDictOps(NDBT_Context* ctx, NDBT_Step* step) Ndb* pNdb = GETNDB(step); NdbDictionary::Dictionary* pDic = pNdb->getDictionary(); const NdbDictionary::Table* pTab = ctx->getTab(); - const char* tabName = pTab->getName(); + //const char* tabName = pTab->getName(); //XXX what goes on? + char tabName[40]; + strcpy(tabName, pTab->getName()); const unsigned long maxsleep = 100; //ms @@ -1888,7 +1890,7 @@ runDictOps(NDBT_Context* ctx, NDBT_Step* step) // replace by the Retrieved table pTab = pTab2; - int records = myRandom48(ctx->getNumRecords()); + int records = ctx->getNumRecords(); g_info << "2: load " << records << " records" << endl; HugoTransactions hugoTrans(*pTab); if (hugoTrans.loadTable(pNdb, records) != 0) { @@ -1925,7 +1927,8 @@ runDictOps(NDBT_Context* ctx, NDBT_Step* step) result = NDBT_FAILED; break; } - if (pDic->getNdbError().code != 709) { + if (pDic->getNdbError().code != 709 && + pDic->getNdbError().code != 723) { const NdbError err = pDic->getNdbError(); g_err << "2: " << tabName << ": verify drop: " << err << endl; result = NDBT_FAILED; diff --git a/storage/ndb/test/src/NdbRestarter.cpp b/storage/ndb/test/src/NdbRestarter.cpp index 2c16a05240d..b25c42ec18e 100644 --- a/storage/ndb/test/src/NdbRestarter.cpp +++ b/storage/ndb/test/src/NdbRestarter.cpp @@ -329,7 +329,10 @@ NdbRestarter::waitNodesState(int * _nodes, int _num_nodes, } g_info << "State node " << ndbNode->node_id << " " - << ndb_mgm_get_node_status_string(ndbNode->node_status)<< endl; + << ndb_mgm_get_node_status_string(ndbNode->node_status); + if (ndbNode->node_status == NDB_MGM_NODE_STATUS_STARTING) + g_info<< ", start_phase=" << ndbNode->start_phase; + g_info << endl; assert(ndbNode != NULL); -- cgit v1.2.1 From e8beb72cc6bc1ad72e341b2b8f20ccaba95dfb38 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 20:23:22 +0200 Subject: Bug#19408 Test 'func_time' fails on Windows x64 - The setting of "ENV{'TZ'}" doesn't affect the timezone used by MySQL Server on Windows. - Explicitly set timezone to "+03:00" in test case before doing the calculatiosn to check that there is three hours difference between utc and local time. (Magnus' fix) mysql-test/r/func_time.result: Update test results mysql-test/t/func_time.test: Set timezone to GMT-3, to make it possible to use "interval 3 hour" --- mysql-test/r/func_time.result | 2 ++ mysql-test/t/func_time.test | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/mysql-test/r/func_time.result b/mysql-test/r/func_time.result index 593ce7b26c8..aaa86378626 100644 --- a/mysql-test/r/func_time.result +++ b/mysql-test/r/func_time.result @@ -1,4 +1,5 @@ drop table if exists t1,t2,t3; +set time_zone="+03:00"; select from_days(to_days("960101")),to_days(960201)-to_days("19960101"),to_days(date_add(curdate(), interval 1 day))-to_days(curdate()),weekday("1997-11-29"); from_days(to_days("960101")) to_days(960201)-to_days("19960101") to_days(date_add(curdate(), interval 1 day))-to_days(curdate()) weekday("1997-11-29") 1996-01-01 31 1 5 @@ -945,3 +946,4 @@ id day id day 1 2005-06-01 3 2005-07-15 3 2005-07-01 3 2005-07-15 DROP TABLE t1,t2; +set time_zone= @@global.time_zone; diff --git a/mysql-test/t/func_time.test b/mysql-test/t/func_time.test index d817d016881..05c033f2b22 100644 --- a/mysql-test/t/func_time.test +++ b/mysql-test/t/func_time.test @@ -5,6 +5,9 @@ drop table if exists t1,t2,t3; --enable_warnings +# Set timezone to GMT-3, to make it possible to use "interval 3 hour" +set time_zone="+03:00"; + select from_days(to_days("960101")),to_days(960201)-to_days("19960101"),to_days(date_add(curdate(), interval 1 day))-to_days(curdate()),weekday("1997-11-29"); select period_add("9602",-12),period_diff(199505,"9404") ; @@ -335,6 +338,7 @@ select last_day("1997-12-1")+0.0; # Test SAPDB UTC_% functions. This part is TZ dependant (It is supposed that # TZ variable set to GMT-3 + select strcmp(date_sub(localtimestamp(), interval 3 hour), utc_timestamp())=0; select strcmp(date_format(date_sub(localtimestamp(), interval 3 hour),"%T"), utc_time())=0; select strcmp(date_format(date_sub(localtimestamp(), interval 3 hour),"%Y-%m-%d"), utc_date())=0; @@ -513,3 +517,6 @@ SELECT * FROM t1, t2 DROP TABLE t1,t2; # End of 5.0 tests + +# Restore timezone to default +set time_zone= @@global.time_zone; -- cgit v1.2.1 From 0271faa8c2c56d4a589980927bb91c657e28fbfe Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 20:50:38 +0200 Subject: #19409: Test 'func_timestamp' fails on Windows x64 - The setting of "ENV{'TZ'}" doesn't affect the timezone used by MySQL Server on Windows. - Explicitly set timezone in test cases before doing UTC/localtime conversions so tests produce deterministic results mysql-test/r/func_timestamp.result: Update test results mysql-test/r/type_timestamp.result: Update test results mysql-test/t/func_timestamp.test: Specifically set timezone to make tests that do localtime/UTC conversions deterministic mysql-test/t/type_timestamp.test: Specifically set timezone to make tests that do localtime/UTC conversions deterministic --- mysql-test/r/func_timestamp.result | 2 ++ mysql-test/r/type_timestamp.result | 2 ++ mysql-test/t/func_timestamp.test | 6 ++++++ mysql-test/t/type_timestamp.test | 6 ++++++ 4 files changed, 16 insertions(+) diff --git a/mysql-test/r/func_timestamp.result b/mysql-test/r/func_timestamp.result index d9912f08b72..495fedea9e6 100644 --- a/mysql-test/r/func_timestamp.result +++ b/mysql-test/r/func_timestamp.result @@ -1,4 +1,5 @@ drop table if exists t1; +set time_zone="+03:00"; create table t1 (Zeit time, Tag tinyint not null, Monat tinyint not null, Jahr smallint not null, index(Tag), index(Monat), index(Jahr) ); insert into t1 values ("09:26:00",16,9,1998),("09:26:00",16,9,1998); @@ -9,3 +10,4 @@ Date Unix 1998-9-16 09:26:00 905927160 1998-9-16 09:26:00 905927160 drop table t1; +set time_zone= @@global.time_zone; diff --git a/mysql-test/r/type_timestamp.result b/mysql-test/r/type_timestamp.result index 61ed6bbabf3..0817cc3b6c7 100644 --- a/mysql-test/r/type_timestamp.result +++ b/mysql-test/r/type_timestamp.result @@ -1,4 +1,5 @@ drop table if exists t1,t2; +set time_zone="+03:00"; CREATE TABLE t1 (a int, t timestamp); CREATE TABLE t2 (a int, t datetime); SET TIMESTAMP=1234; @@ -491,3 +492,4 @@ a b c 5 NULL 2001-09-09 04:46:59 6 NULL 2006-06-06 06:06:06 drop table t1; +set time_zone= @@global.time_zone; diff --git a/mysql-test/t/func_timestamp.test b/mysql-test/t/func_timestamp.test index e1bb7e878ee..05a91b06d28 100644 --- a/mysql-test/t/func_timestamp.test +++ b/mysql-test/t/func_timestamp.test @@ -6,6 +6,9 @@ drop table if exists t1; --enable_warnings +# Set timezone to GMT-3, to make it possible to use "interval 3 hour" +set time_zone="+03:00"; + create table t1 (Zeit time, Tag tinyint not null, Monat tinyint not null, Jahr smallint not null, index(Tag), index(Monat), index(Jahr) ); insert into t1 values ("09:26:00",16,9,1998),("09:26:00",16,9,1998); @@ -15,3 +18,6 @@ FROM t1; drop table t1; # End of 4.1 tests + +# Restore timezone to default +set time_zone= @@global.time_zone; diff --git a/mysql-test/t/type_timestamp.test b/mysql-test/t/type_timestamp.test index f96beedbebc..ddfc3f11665 100644 --- a/mysql-test/t/type_timestamp.test +++ b/mysql-test/t/type_timestamp.test @@ -6,6 +6,9 @@ drop table if exists t1,t2; --enable_warnings +# Set timezone to GMT-3, to make it possible to use "interval 3 hour" +set time_zone="+03:00"; + CREATE TABLE t1 (a int, t timestamp); CREATE TABLE t2 (a int, t datetime); SET TIMESTAMP=1234; @@ -322,3 +325,6 @@ select * from t1; drop table t1; # End of 4.1 tests + +# Restore timezone to default +set time_zone= @@global.time_zone; -- cgit v1.2.1 From b58e990c748d77637f127a819b41f440e60e1d7d Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 22:44:21 +0300 Subject: Fixed failure with rpl_truncate_7ndb.test when using statement based replication. is_injective -> table_flag() HA_HAS_OWN_BINLOGGING (Faster and easier to understand) Allow cluster_binlogging also in mixed replication mode. mysql-test/t/rpl_truncate_7ndb.test: Ensure that test is only run with mixed or row based replication sql/ha_ndbcluster.cc: Enforce row based replication if a cluster table is used sql/ha_ndbcluster.h: Remove is_injective() (Is now a table flag) sql/ha_ndbcluster_binlog.cc: Use cluster binlogging also in mixed binary logging (Using a cluster table will enforce row based replication in mixed mode, so this should be ok) sql/handler.cc: is_injective -> HA_HAS_OWN_BINLOGGING sql/handler.h: is_injective -> HA_HAS_OWN_BINLOGGING mysql-test/include/have_binlog_format_mixed_or_row.inc: New BitKeeper file ``mysql-test/include/have_binlog_format_mixed_or_row.inc'' mysql-test/r/rpl_truncate_7ndb_2.result: New BitKeeper file ``mysql-test/r/rpl_truncate_7ndb_2.result'' mysql-test/t/rpl_truncate_7ndb_2-master.opt: New BitKeeper file ``mysql-test/t/rpl_truncate_7ndb_2-master.opt'' mysql-test/t/rpl_truncate_7ndb_2.test: New BitKeeper file ``mysql-test/t/rpl_truncate_7ndb_2.test'' --- .../include/have_binlog_format_mixed_or_row.inc | 5 ++ mysql-test/r/rpl_truncate_7ndb_2.result | 91 ++++++++++++++++++++++ mysql-test/t/rpl_truncate_7ndb.test | 1 + mysql-test/t/rpl_truncate_7ndb_2-master.opt | 1 + mysql-test/t/rpl_truncate_7ndb_2.test | 6 ++ sql/ha_ndbcluster.cc | 8 +- sql/ha_ndbcluster.h | 2 - sql/ha_ndbcluster_binlog.cc | 4 +- sql/handler.cc | 2 +- sql/handler.h | 8 +- 10 files changed, 116 insertions(+), 12 deletions(-) create mode 100644 mysql-test/include/have_binlog_format_mixed_or_row.inc create mode 100644 mysql-test/r/rpl_truncate_7ndb_2.result create mode 100644 mysql-test/t/rpl_truncate_7ndb_2-master.opt create mode 100644 mysql-test/t/rpl_truncate_7ndb_2.test diff --git a/mysql-test/include/have_binlog_format_mixed_or_row.inc b/mysql-test/include/have_binlog_format_mixed_or_row.inc new file mode 100644 index 00000000000..c38b8f3d601 --- /dev/null +++ b/mysql-test/include/have_binlog_format_mixed_or_row.inc @@ -0,0 +1,5 @@ +--require r/have_binlog_format_row.require +--disable_query_log +--replace_result MIXED ROW +show variables like "binlog_format"; +--enable_query_log diff --git a/mysql-test/r/rpl_truncate_7ndb_2.result b/mysql-test/r/rpl_truncate_7ndb_2.result new file mode 100644 index 00000000000..0e1b21d31aa --- /dev/null +++ b/mysql-test/r/rpl_truncate_7ndb_2.result @@ -0,0 +1,91 @@ +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +**** On Master **** +CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB; +INSERT INTO t1 VALUES (1,1), (2,2); +SELECT * FROM t1 ORDER BY a,b; +a b +1 1 +2 2 +**** On Slave **** +INSERT INTO t1 VALUE (3,3); +SELECT * FROM t1 ORDER BY a,b; +a b +1 1 +2 2 +3 3 +**** On Master **** +TRUNCATE TABLE t1; +SELECT * FROM t1 ORDER BY a,b; +a b +**** On Slave **** +SELECT * FROM t1 ORDER BY a,b; +a b +**** On Master **** +DROP TABLE t1; +SHOW BINLOG EVENTS; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 102 Server ver: SERVER_VERSION, Binlog ver: 4 +master-bin.000001 102 Query 1 219 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB +master-bin.000001 219 Query 1 283 BEGIN +master-bin.000001 283 Table_map 1 40 table_id: # (test.t1) +master-bin.000001 323 Table_map 1 93 table_id: # (cluster.apply_status) +master-bin.000001 376 Write_rows 1 135 table_id: # +master-bin.000001 418 Write_rows 1 182 table_id: # flags: STMT_END_F +master-bin.000001 465 Query 1 530 COMMIT +master-bin.000001 530 Query 1 610 use `test`; TRUNCATE TABLE t1 +master-bin.000001 610 Query 1 686 use `test`; DROP TABLE t1 +**** On Master **** +CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB; +INSERT INTO t1 VALUES (1,1), (2,2); +SELECT * FROM t1 ORDER BY a,b; +a b +1 1 +2 2 +**** On Slave **** +INSERT INTO t1 VALUE (3,3); +SELECT * FROM t1 ORDER BY a,b; +a b +1 1 +2 2 +3 3 +**** On Master **** +DELETE FROM t1; +SELECT * FROM t1 ORDER BY a,b; +a b +**** On Slave **** +SELECT * FROM t1 ORDER BY a,b; +a b +3 3 +**** On Master **** +DROP TABLE t1; +SHOW BINLOG EVENTS; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 102 Server ver: SERVER_VERSION, Binlog ver: 4 +master-bin.000001 102 Query 1 219 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB +master-bin.000001 219 Query 1 283 BEGIN +master-bin.000001 283 Table_map 1 40 table_id: # (test.t1) +master-bin.000001 323 Table_map 1 93 table_id: # (cluster.apply_status) +master-bin.000001 376 Write_rows 1 135 table_id: # +master-bin.000001 418 Write_rows 1 182 table_id: # flags: STMT_END_F +master-bin.000001 465 Query 1 530 COMMIT +master-bin.000001 530 Query 1 610 use `test`; TRUNCATE TABLE t1 +master-bin.000001 610 Query 1 686 use `test`; DROP TABLE t1 +master-bin.000001 686 Query 1 803 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB +master-bin.000001 803 Query 1 867 BEGIN +master-bin.000001 867 Table_map 1 40 table_id: # (test.t1) +master-bin.000001 907 Table_map 1 93 table_id: # (cluster.apply_status) +master-bin.000001 960 Write_rows 1 135 table_id: # +master-bin.000001 1002 Write_rows 1 182 table_id: # flags: STMT_END_F +master-bin.000001 1049 Query 1 1114 COMMIT +master-bin.000001 1114 Query 1 1178 BEGIN +master-bin.000001 1178 Table_map 1 40 table_id: # (test.t1) +master-bin.000001 1218 Table_map 1 93 table_id: # (cluster.apply_status) +master-bin.000001 1271 Write_rows 1 135 table_id: # +master-bin.000001 1313 Delete_rows 1 174 table_id: # flags: STMT_END_F +master-bin.000001 1352 Query 1 1417 COMMIT +master-bin.000001 1417 Query 1 1493 use `test`; DROP TABLE t1 diff --git a/mysql-test/t/rpl_truncate_7ndb.test b/mysql-test/t/rpl_truncate_7ndb.test index f4bbadbf718..2921e7df45a 100644 --- a/mysql-test/t/rpl_truncate_7ndb.test +++ b/mysql-test/t/rpl_truncate_7ndb.test @@ -1,6 +1,7 @@ --source include/have_ndb.inc --source include/master-slave.inc +--source include/have_binlog_format_mixed_or_row.inc --disable_query_log --disable_warnings diff --git a/mysql-test/t/rpl_truncate_7ndb_2-master.opt b/mysql-test/t/rpl_truncate_7ndb_2-master.opt new file mode 100644 index 00000000000..01cf3e0520f --- /dev/null +++ b/mysql-test/t/rpl_truncate_7ndb_2-master.opt @@ -0,0 +1 @@ +--binlog-format=mixed diff --git a/mysql-test/t/rpl_truncate_7ndb_2.test b/mysql-test/t/rpl_truncate_7ndb_2.test new file mode 100644 index 00000000000..4ee6c98d463 --- /dev/null +++ b/mysql-test/t/rpl_truncate_7ndb_2.test @@ -0,0 +1,6 @@ +# Same test as rpl_truncate_7ndb.test, but with mixed mode +# This is marked with 'big_test' just because the rpl_truncate_7ndb test is +# so slow... + +--source include/big_test.inc +--source t/rpl_truncate_7ndb.test diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index f45320bf51a..0004234edd3 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -4056,6 +4056,7 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type) DBUG_PRINT("warning", ("ops_pending != 0L")); m_ops_pending= 0; } + thd->set_current_stmt_binlog_row_based_if_mixed(); DBUG_RETURN(error); } @@ -4105,7 +4106,8 @@ int ha_ndbcluster::start_stmt(THD *thd, thr_lock_type lock_type) // Start of statement m_ops_pending= 0; - + thd->set_current_stmt_binlog_row_based_if_mixed(); + DBUG_RETURN(error); } @@ -5452,7 +5454,8 @@ void ha_ndbcluster::get_auto_increment(ulonglong offset, ulonglong increment, HA_CAN_BIT_FIELD | \ HA_PRIMARY_KEY_REQUIRED_FOR_POSITION | \ HA_PRIMARY_KEY_REQUIRED_FOR_DELETE | \ - HA_PARTIAL_COLUMN_READ + HA_PARTIAL_COLUMN_READ | \ + HA_HAS_OWN_BINLOGGING ha_ndbcluster::ha_ndbcluster(TABLE_SHARE *table_arg): handler(&ndbcluster_hton, table_arg), @@ -7954,6 +7957,7 @@ pthread_handler_t ndb_util_thread_func(void *arg __attribute__((unused))) my_net_init(&thd->net, 0); thd->main_security_ctx.master_access= ~0; thd->main_security_ctx.priv_user = 0; + thd->current_stmt_binlog_row_based= TRUE; // If in mixed mode /* wait for mysql server to start diff --git a/sql/ha_ndbcluster.h b/sql/ha_ndbcluster.h index df3c5791713..f2e2ff9ddc2 100644 --- a/sql/ha_ndbcluster.h +++ b/sql/ha_ndbcluster.h @@ -661,8 +661,6 @@ class ha_ndbcluster: public handler bool low_byte_first() const; - virtual bool is_injective() const { return true; } - const char* index_type(uint key_number); double scan_time(); diff --git a/sql/ha_ndbcluster_binlog.cc b/sql/ha_ndbcluster_binlog.cc index b4ea5fb0e80..516446d4c22 100644 --- a/sql/ha_ndbcluster_binlog.cc +++ b/sql/ha_ndbcluster_binlog.cc @@ -3347,9 +3347,11 @@ pthread_handler_t ndb_binlog_thread_func(void *arg) ndb_binlog_thread_running= 1; if (opt_bin_log) { - if (global_system_variables.binlog_format == BINLOG_FORMAT_ROW) + if (global_system_variables.binlog_format == BINLOG_FORMAT_ROW || + global_system_variables.binlog_format == BINLOG_FORMAT_MIXED) { ndb_binlog_running= TRUE; + thd->current_stmt_binlog_row_based= TRUE; // If in mixed mode } else { diff --git a/sql/handler.cc b/sql/handler.cc index 0895c6cf454..a160315dbe9 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -3305,7 +3305,7 @@ namespace const byte *before_record, const byte *after_record) { - if (table->file->is_injective()) + if (table->file->ha_table_flags() & HA_HAS_OWN_BINLOGGING) return 0; bool error= 0; THD *const thd= table->in_use; diff --git a/sql/handler.h b/sql/handler.h index 52843b78266..1e16ab35261 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -116,6 +116,8 @@ #define HA_ANY_INDEX_MAY_BE_UNIQUE (1 << 30) #define HA_NO_COPY_ON_ALTER (LL(1) << 31) #define HA_HAS_RECORDS (LL(1) << 32) /* records() gives exact count*/ +/* Has it's own method of binlog logging */ +#define HA_HAS_OWN_BINLOGGING (LL(1) << 33) /* bits in index_flags(index_number) for what you can do with index */ #define HA_READ_NEXT 1 /* TODO really use this flag */ @@ -1053,12 +1055,6 @@ public: int ha_update_row(const byte * old_data, byte * new_data); int ha_delete_row(const byte * buf); - /* - If the handler does it's own injection of the rows, this member function - should return 'true'. - */ - virtual bool is_injective() const { return false; } - /* SYNOPSIS start_bulk_update() -- cgit v1.2.1 From 911982ff3a57a067b08d4da1e880b13cb8b2e9d7 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 23:42:11 +0200 Subject: disabled.def: Enabled rpl_ndb_auto_inc per Tomas and Lars mysql-test/t/disabled.def: Enabled rpl_ndb_auto_inc per Tomas and Lars --- mysql-test/t/disabled.def | 1 - 1 file changed, 1 deletion(-) diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index 20462ad62cb..740d69cc849 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -26,7 +26,6 @@ partition_03ndb : BUG#16385 2006-03-24 mikael Partitions: crash when up ps_7ndb : BUG#18950 2006-02-16 jmiller create table like does not obtain LOCK_open rpl_ndb_2innodb : BUG#19227 2006-04-20 pekka pk delete apparently not replicated rpl_ndb_2myisam : BUG#19227 Seems to pass currently -rpl_ndb_auto_inc : BUG#17086 2006-02-16 jmiller CR: auto_increment_increment and auto_increment_offset produce duplicate key er #rpl_ndb_commit_afterflush : BUG#19328 2006-05-04 tomas Slave timeout with COM_REGISTER_SLAVE error causing stop rpl_ndb_dd_partitions : BUG#19259 2006-04-21 rpl_ndb_dd_partitions fails on s/AMD rpl_ndb_ddl : BUG#18946 result file needs update + test needs to checked -- cgit v1.2.1 From 92ad3d5bd7fbfc64b083824f28470eebca5cd199 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 23 Jun 2006 00:37:31 +0200 Subject: mysql.spec.sh: Disable the simplistic auto dependency scan for test/bench (bug#20078) support-files/mysql.spec.sh: Disable the simplistic auto dependency scan for test/bench (bug#20078) --- support-files/mysql.spec.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 9656851dc9c..854ad2e7ce7 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -148,6 +148,7 @@ Summary: MySQL - Benchmarks and test system Group: Applications/Databases Provides: mysql-bench Obsoletes: mysql-bench +AutoReqProv: no %description bench This package contains MySQL benchmark scripts and data. -- cgit v1.2.1 From e8adb499107c182ad5737cda5b726f8d8e924ecf Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 15:50:15 -0700 Subject: Fixed bug #20076. Server crashed in some cases when a query required a MIN/MAX agrregation for a 'ucs2' field. In these cases the aggregation caused calls of the function update_tmptable_sum_func that indirectly invoked the method Item_sum_hybrid::min_max_update_str_field() containing a call to strip_sp for a ucs2 character set. The latter led directly to the crash as it used my_isspace undefined for the ucs2 character set. Actually the call of strip_sp is not needed at all in this situation and has been removed by the fix. mysql-test/r/ctype_ucs.result: Added a test case for bug #20076. mysql-test/t/ctype_ucs.test: Added a test case for bug #20076. --- mysql-test/r/ctype_ucs.result | 7 +++++++ mysql-test/t/ctype_ucs.test | 12 ++++++++++++ sql/item_sum.cc | 1 - 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/ctype_ucs.result b/mysql-test/r/ctype_ucs.result index 8869604b128..bcf9cc77519 100644 --- a/mysql-test/r/ctype_ucs.result +++ b/mysql-test/r/ctype_ucs.result @@ -715,3 +715,10 @@ lily river drop table t1; deallocate prepare stmt; +CREATE TABLE t1 (id int, s char(5) CHARACTER SET ucs2 COLLATE ucs2_unicode_ci); +INSERT INTO t1 VALUES (1, 'ZZZZZ'), (1, 'ZZZ'), (2, 'ZZZ'), (2, 'ZZZZZ'); +SELECT id, MIN(s) FROM t1 GROUP BY id; +id MIN(s) +1 ZZZ +2 ZZZ +DROP TABLE t1; diff --git a/mysql-test/t/ctype_ucs.test b/mysql-test/t/ctype_ucs.test index 2cbabf88ee0..a4d4d1846a7 100644 --- a/mysql-test/t/ctype_ucs.test +++ b/mysql-test/t/ctype_ucs.test @@ -451,4 +451,16 @@ execute stmt using @param1; select utext from t1 where utext like '%%'; drop table t1; deallocate prepare stmt; + +# +# Bug #20076: server crashes for a query with GROUP BY if MIN/MAX aggregation +# over a 'ucs2' field uses a temporary table +# + +CREATE TABLE t1 (id int, s char(5) CHARACTER SET ucs2 COLLATE ucs2_unicode_ci); +INSERT INTO t1 VALUES (1, 'ZZZZZ'), (1, 'ZZZ'), (2, 'ZZZ'), (2, 'ZZZZZ'); + +SELECT id, MIN(s) FROM t1 GROUP BY id; + +DROP TABLE t1; # End of 4.1 tests diff --git a/sql/item_sum.cc b/sql/item_sum.cc index 4b522cf06fa..0b9b10d05d4 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -930,7 +930,6 @@ Item_sum_hybrid::min_max_update_str_field() if (!args[0]->null_value) { - res_str->strip_sp(); result_field->val_str(&tmp_value); if (result_field->is_null() || -- cgit v1.2.1 From e03f8ef25aa521dd698f185d4500e5eaab5766cb Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 23 Jun 2006 02:49:19 +0300 Subject: Remove compiler warnings Fixed wrong table flags type in ndbcluster that caused previous commit to fail client/mysqltest.c: Portability fix mysys/my_bitmap.c: Remove compiler warning mysys/my_handler.c: Remove compiler warning mysys/thr_lock.c: Remove compiler warning plugin/fulltext/plugin_example.c: Remove compiler warning sql/ha_ndbcluster.h: Fixed wrong of handler flags (caused previous commit to fail) sql/ha_ndbcluster_binlog.cc: Remove compiler warning sql/handler.cc: Indentation cleanups sql/mysql_priv.h: Changed log_output_options to ulong to remove compiler warning (and wrong test on 64 bit machines) sql/mysqld.cc: Changed log_output_options to ulong to remove compiler warning (and wrong test on 64 bit machines) Split initialization of variables of different types to remove compiler warning sql/set_var.cc: Fixed indentation sql/set_var.h: sys_var_log_output now takes a pointer to ulong storage/archive/archive_test.c: Remove compiler warning --- client/mysqltest.c | 4 ++-- mysys/my_bitmap.c | 2 +- mysys/my_handler.c | 6 ++++++ mysys/thr_lock.c | 7 +++++-- plugin/fulltext/plugin_example.c | 6 ++++-- sql/ha_ndbcluster.h | 2 +- sql/ha_ndbcluster_binlog.cc | 21 +++++++++++---------- sql/handler.cc | 8 +++++--- sql/mysql_priv.h | 2 +- sql/mysqld.cc | 7 ++++--- sql/set_var.cc | 3 ++- sql/set_var.h | 4 ++-- storage/archive/archive_test.c | 2 +- 13 files changed, 45 insertions(+), 29 deletions(-) diff --git a/client/mysqltest.c b/client/mysqltest.c index 11e2cc0048e..b21e3883631 100644 --- a/client/mysqltest.c +++ b/client/mysqltest.c @@ -4095,8 +4095,8 @@ static void append_metadata(DYNAMIC_STRING *ds, static void append_info(DYNAMIC_STRING *ds, ulonglong affected_rows, const char *info) { - char buf[40]; - sprintf(buf,"affected rows: %llu\n", affected_rows); + char buf[40], buff2[21]; + sprintf(buf,"affected rows: %s\n", llstr(affected_rows, buff2)); dynstr_append(ds, buf); if (info) { diff --git a/mysys/my_bitmap.c b/mysys/my_bitmap.c index 92b0cbb1371..2c85ce0bf04 100644 --- a/mysys/my_bitmap.c +++ b/mysys/my_bitmap.c @@ -101,7 +101,7 @@ static inline void bitmap_unlock(MY_BITMAP *map __attribute__((unused))) my_bool bitmap_init(MY_BITMAP *map, my_bitmap_map *buf, uint n_bits, - my_bool thread_safe) + my_bool thread_safe __attribute__((unused))) { DBUG_ENTER("bitmap_init"); if (!buf) diff --git a/mysys/my_handler.c b/mysys/my_handler.c index 56f2298a9f0..da619a49ffd 100644 --- a/mysys/my_handler.c +++ b/mysys/my_handler.c @@ -504,6 +504,7 @@ HA_KEYSEG *ha_find_null(HA_KEYSEG *keyseg, uchar *a) switch ((enum ha_base_keytype) keyseg->type) { case HA_KEYTYPE_TEXT: case HA_KEYTYPE_BINARY: + case HA_KEYTYPE_BIT: if (keyseg->flag & HA_SPACE_PACK) { int a_length; @@ -515,7 +516,9 @@ HA_KEYSEG *ha_find_null(HA_KEYSEG *keyseg, uchar *a) a= end; break; case HA_KEYTYPE_VARTEXT1: + case HA_KEYTYPE_VARTEXT2: case HA_KEYTYPE_VARBINARY1: + case HA_KEYTYPE_VARBINARY2: { int a_length; get_key_length(a_length, a); @@ -545,6 +548,9 @@ HA_KEYSEG *ha_find_null(HA_KEYSEG *keyseg, uchar *a) case HA_KEYTYPE_DOUBLE: a= end; break; + case HA_KEYTYPE_END: + DBUG_ASSERT(0); + break; } } return keyseg; diff --git a/mysys/thr_lock.c b/mysys/thr_lock.c index b4de57229bf..74d6f7431a8 100644 --- a/mysys/thr_lock.c +++ b/mysys/thr_lock.c @@ -1123,10 +1123,12 @@ void thr_downgrade_write_lock(THR_LOCK_DATA *in_data, enum thr_lock_type new_lock_type) { THR_LOCK *lock=in_data->lock; - THR_LOCK_DATA *data, *next; enum thr_lock_type old_lock_type= in_data->type; +#ifdef TO_BE_REMOVED + THR_LOCK_DATA *data, *next; bool start_writers= FALSE; bool start_readers= FALSE; +#endif DBUG_ENTER("thr_downgrade_write_only_lock"); pthread_mutex_lock(&lock->mutex); @@ -1134,7 +1136,8 @@ void thr_downgrade_write_lock(THR_LOCK_DATA *in_data, DBUG_ASSERT(old_lock_type > new_lock_type); in_data->type= new_lock_type; check_locks(lock,"after downgrading lock",0); -#if 0 + +#if TO_BE_REMOVED switch (old_lock_type) { case TL_WRITE_ONLY: diff --git a/plugin/fulltext/plugin_example.c b/plugin/fulltext/plugin_example.c index eefb10bd26b..beb02128774 100644 --- a/plugin/fulltext/plugin_example.c +++ b/plugin/fulltext/plugin_example.c @@ -97,7 +97,8 @@ static int simple_parser_plugin_deinit(void) 1 failure (cannot happen) */ -static int simple_parser_init(MYSQL_FTPARSER_PARAM *param) +static int simple_parser_init(MYSQL_FTPARSER_PARAM *param + __attribute__((unused))) { return(0); } @@ -117,7 +118,8 @@ static int simple_parser_init(MYSQL_FTPARSER_PARAM *param) 1 failure (cannot happen) */ -static int simple_parser_deinit(MYSQL_FTPARSER_PARAM *param) +static int simple_parser_deinit(MYSQL_FTPARSER_PARAM *param + __attribute__((unused))) { return(0); } diff --git a/sql/ha_ndbcluster.h b/sql/ha_ndbcluster.h index f2e2ff9ddc2..2e78a00ef94 100644 --- a/sql/ha_ndbcluster.h +++ b/sql/ha_ndbcluster.h @@ -851,7 +851,7 @@ private: char m_dbname[FN_HEADLEN]; //char m_schemaname[FN_HEADLEN]; char m_tabname[FN_HEADLEN]; - ulong m_table_flags; + ulonglong m_table_flags; THR_LOCK_DATA m_lock; bool m_lock_tuple; NDB_SHARE *m_share; diff --git a/sql/ha_ndbcluster_binlog.cc b/sql/ha_ndbcluster_binlog.cc index 516446d4c22..3afba85248e 100644 --- a/sql/ha_ndbcluster_binlog.cc +++ b/sql/ha_ndbcluster_binlog.cc @@ -3882,21 +3882,22 @@ ndbcluster_show_status_binlog(THD* thd, stat_print_fn *stat_print, pthread_mutex_lock(&injector_mutex); if (injector_ndb) { + char buff1[22],buff2[22],buff3[22],buff4[22],buff5[22]; ndb_latest_epoch= injector_ndb->getLatestGCI(); pthread_mutex_unlock(&injector_mutex); buflen= snprintf(buf, sizeof(buf), - "latest_epoch=%llu, " - "latest_trans_epoch=%llu, " - "latest_received_binlog_epoch=%llu, " - "latest_handled_binlog_epoch=%llu, " - "latest_applied_binlog_epoch=%llu", - ndb_latest_epoch, - g_latest_trans_gci, - ndb_latest_received_binlog_epoch, - ndb_latest_handled_binlog_epoch, - ndb_latest_applied_binlog_epoch); + "latest_epoch=%s, " + "latest_trans_epoch=%s, " + "latest_received_binlog_epoch=%s, " + "latest_handled_binlog_epoch=%s, " + "latest_applied_binlog_epoch=%s", + llstr(ndb_latest_epoch, buff1), + llstr(g_latest_trans_gci, buff2), + llstr(ndb_latest_received_binlog_epoch, buff3), + llstr(ndb_latest_handled_binlog_epoch, buff4), + llstr(ndb_latest_applied_binlog_epoch, buff5)); if (stat_print(thd, ndbcluster_hton_name, ndbcluster_hton_name_length, "binlog", strlen("binlog"), buf, buflen)) diff --git a/sql/handler.cc b/sql/handler.cc index a160315dbe9..3331e014001 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -3326,16 +3326,18 @@ namespace if (likely(!(error= bitmap_init(&cols, use_bitbuf ? bitbuf : NULL, (n_fields + 7) & ~7UL, - false)))) + FALSE)))) { bitmap_set_all(&cols); if (likely(!(error= write_locked_table_maps(thd)))) { error= RowsEventT::binlog_row_logging_function(thd, table, - table->file->has_transactions(), + table->file-> + has_transactions(), &cols, table->s->fields, - before_record, after_record); + before_record, + after_record); } if (!use_bitbuf) bitmap_free(&cols); diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index cb9ae481987..e3d28a23c15 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -1518,7 +1518,7 @@ extern bool opt_using_transactions, mysqld_embedded; extern bool using_update_log, opt_large_files, server_id_supplied; extern bool opt_update_log, opt_bin_log, opt_error_log; extern my_bool opt_log, opt_slow_log; -extern uint log_output_options; +extern ulong log_output_options; extern my_bool opt_log_queries_not_using_indexes; extern bool opt_disable_networking, opt_skip_show_db; extern my_bool opt_character_set_client_handshake; diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 67c25e65b66..73ccecf45df 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -343,7 +343,7 @@ static my_bool opt_sync_bdb_logs; bool opt_update_log, opt_bin_log; my_bool opt_log, opt_slow_log; -uint log_output_options; +ulong log_output_options; my_bool opt_log_queries_not_using_indexes= 0; bool opt_error_log= IF_WIN(1,0); bool opt_disable_networking=0, opt_skip_show_db=0; @@ -3225,7 +3225,7 @@ server."); { sql_print_error("CSV engine is not present, falling back to the " "log files"); - log_output_options= log_output_options & ~LOG_TABLE | LOG_FILE; + log_output_options= (log_output_options & ~LOG_TABLE) | LOG_FILE; } logger.set_handlers(LOG_FILE, opt_slow_log ? log_output_options:LOG_NONE, @@ -6953,7 +6953,8 @@ static void mysql_init_variables(void) /* Things reset to zero */ opt_skip_slave_start= opt_reckless_slave = 0; mysql_home[0]= pidfile_name[0]= log_error_file[0]= 0; - opt_log= opt_update_log= opt_slow_log= 0; + opt_log= opt_slow_log= 0; + opt_update_log= 0; log_output_options= find_bit_type(log_output_str, &log_output_typelib); opt_bin_log= 0; opt_disable_networking= opt_skip_show_db=0; diff --git a/sql/set_var.cc b/sql/set_var.cc index e6b0625f097..b0ecc7eccef 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -2724,7 +2724,8 @@ void sys_var_log_output::set_default(THD *thd, enum_var_type type) } -byte *sys_var_log_output::value_ptr(THD *thd, enum_var_type type, LEX_STRING *base) +byte *sys_var_log_output::value_ptr(THD *thd, enum_var_type type, + LEX_STRING *base) { char buff[256]; String tmp(buff, sizeof(buff), &my_charset_latin1); diff --git a/sql/set_var.h b/sql/set_var.h index 719a47906d7..d01ce833d14 100644 --- a/sql/set_var.h +++ b/sql/set_var.h @@ -785,10 +785,10 @@ public: class sys_var_log_output :public sys_var { - uint *value; + ulong *value; TYPELIB *enum_names; public: - sys_var_log_output(const char *name_arg, uint *value_arg, + sys_var_log_output(const char *name_arg, ulong *value_arg, TYPELIB *typelib, sys_after_update_func func) :sys_var(name_arg,func), value(value_arg), enum_names(typelib) {} diff --git a/storage/archive/archive_test.c b/storage/archive/archive_test.c index 043d743f1c9..fd4b8385069 100644 --- a/storage/archive/archive_test.c +++ b/storage/archive/archive_test.c @@ -4,7 +4,7 @@ #define TEST_STRING "This is a test" #define BUFFER_LEN 1024 -int main(int argc, char *argv[]) +int main(int argc __attribute__((unused)), char *argv[]) { int ret; azio_stream foo, foo1; -- cgit v1.2.1 From feb578bebd40ba4696d43ee2970c1218074450fc Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 23 Jun 2006 03:21:12 +0300 Subject: Fixed problem when compiling libmysqld (without replication) This change allows us to use the stmt_binlog function in the code without ifdefs (We should avoid having ifdefs in the .cc and .c files) sql/handler.h: Removed compiler warnings --- sql/handler.h | 12 ++++++------ sql/sql_class.h | 8 ++++++-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/sql/handler.h b/sql/handler.h index 1e16ab35261..fb5f0f4ba05 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -1646,10 +1646,10 @@ void ha_binlog_log_query(THD *thd, const handlerton *db_type, void ha_binlog_wait(THD *thd); int ha_binlog_end(THD *thd); #else -#define ha_reset_logs(a) 0 -#define ha_binlog_index_purge_file(a,b) 0 -#define ha_reset_slave(a) -#define ha_binlog_log_query(a,b,c,d,e,f,g); -#define ha_binlog_wait(a) -#define ha_binlog_end(a) 0 +#define ha_reset_logs(a) do {} while (0) +#define ha_binlog_index_purge_file(a,b) do {} while (0) +#define ha_reset_slave(a) do {} while (0) +#define ha_binlog_log_query(a,b,c,d,e,f,g) do {} while (0) +#define ha_binlog_wait(a) do {} while (0) +#define ha_binlog_end(a) do {} while (0) #endif diff --git a/sql/sql_class.h b/sql/sql_class.h index b8491892330..5222e75f309 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -1415,21 +1415,25 @@ public: void restore_sub_statement_state(Sub_statement_state *backup); void set_n_backup_active_arena(Query_arena *set, Query_arena *backup); void restore_active_arena(Query_arena *set, Query_arena *backup); -#ifdef HAVE_ROW_BASED_REPLICATION inline void set_current_stmt_binlog_row_based_if_mixed() { +#ifdef HAVE_ROW_BASED_REPLICATION if (variables.binlog_format == BINLOG_FORMAT_MIXED) current_stmt_binlog_row_based= TRUE; +#endif } inline void set_current_stmt_binlog_row_based() { +#ifdef HAVE_ROW_BASED_REPLICATION current_stmt_binlog_row_based= TRUE; +#endif } inline void clear_current_stmt_binlog_row_based() { +#ifdef HAVE_ROW_BASED_REPLICATION current_stmt_binlog_row_based= FALSE; - } #endif + } inline void reset_current_stmt_binlog_row_based() { #ifdef HAVE_ROW_BASED_REPLICATION -- cgit v1.2.1 From d62551af39fc05b3c7184fbf20d949376a801052 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jun 2006 20:39:46 -0700 Subject: Added a test case for bug #18359. This was another manifestation of the problems fixed in the patch for bug 16674. Wrong calculation of length of the search prefix in the pattern string led here to a wrong result set for a query in 4.1. The bug could be demonstrated for any multi-byte character set. mysql-test/r/ctype_utf8.result: Added a test case for bug #18359. mysql-test/t/ctype_utf8.test: Added a test case for bug #18359. --- mysql-test/r/ctype_utf8.result | 56 ++++++++++++++++++++++++++++++++++++++++++ mysql-test/t/ctype_utf8.test | 31 +++++++++++++++++++++++ 2 files changed, 87 insertions(+) diff --git a/mysql-test/r/ctype_utf8.result b/mysql-test/r/ctype_utf8.result index fc5645ae10b..4ceacaffcbb 100644 --- a/mysql-test/r/ctype_utf8.result +++ b/mysql-test/r/ctype_utf8.result @@ -1237,3 +1237,59 @@ a Käli Käli 2-4 Käli Käli 2-4 DROP TABLE t1; +SET NAMES latin2; +CREATE TABLE t1 ( +id int(11) NOT NULL default '0', +tid int(11) NOT NULL default '0', +val text NOT NULL, +INDEX idx(tid, val(10)) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +INSERT INTO t1 VALUES +(40988,72,'VOLNÝ ADSL'),(41009,72,'VOLNÝ ADSL'), +(41032,72,'VOLNÝ ADSL'),(41038,72,'VOLNÝ ADSL'), +(41063,72,'VOLNÝ ADSL'),(41537,72,'VOLNÝ ADSL Office'), +(42141,72,'VOLNÝ ADSL'),(42565,72,'VOLNÝ ADSL Combi'), +(42749,72,'VOLNÝ ADSL'),(44205,72,'VOLNÝ ADSL'); +SELECT * FROM t1 WHERE tid=72 and val LIKE 'VOLNY ADSL'; +id tid val +40988 72 VOLNÝ ADSL +41009 72 VOLNÝ ADSL +41032 72 VOLNÝ ADSL +41038 72 VOLNÝ ADSL +41063 72 VOLNÝ ADSL +42141 72 VOLNÝ ADSL +42749 72 VOLNÝ ADSL +44205 72 VOLNÝ ADSL +SELECT * FROM t1 WHERE tid=72 and val LIKE 'VOLNÝ ADSL'; +id tid val +40988 72 VOLNÝ ADSL +41009 72 VOLNÝ ADSL +41032 72 VOLNÝ ADSL +41038 72 VOLNÝ ADSL +41063 72 VOLNÝ ADSL +42141 72 VOLNÝ ADSL +42749 72 VOLNÝ ADSL +44205 72 VOLNÝ ADSL +SELECT * FROM t1 WHERE tid=72 and val LIKE '%VOLNÝ ADSL'; +id tid val +40988 72 VOLNÝ ADSL +41009 72 VOLNÝ ADSL +41032 72 VOLNÝ ADSL +41038 72 VOLNÝ ADSL +41063 72 VOLNÝ ADSL +42141 72 VOLNÝ ADSL +42749 72 VOLNÝ ADSL +44205 72 VOLNÝ ADSL +ALTER TABLE t1 DROP KEY idx; +ALTER TABLE t1 ADD KEY idx (tid,val(11)); +SELECT * FROM t1 WHERE tid=72 and val LIKE 'VOLNÝ ADSL'; +id tid val +40988 72 VOLNÝ ADSL +41009 72 VOLNÝ ADSL +41032 72 VOLNÝ ADSL +41038 72 VOLNÝ ADSL +41063 72 VOLNÝ ADSL +42141 72 VOLNÝ ADSL +42749 72 VOLNÝ ADSL +44205 72 VOLNÝ ADSL +DROP TABLE t1; diff --git a/mysql-test/t/ctype_utf8.test b/mysql-test/t/ctype_utf8.test index de9bb4687b1..b1d485ad1ce 100644 --- a/mysql-test/t/ctype_utf8.test +++ b/mysql-test/t/ctype_utf8.test @@ -1009,4 +1009,35 @@ ALTER TABLE t1 ADD KEY (a(10)); SELECT * FROM t1 WHERE a LIKE 'Käli Käli 2%'; DROP TABLE t1; +# +# Bug#18359: LIKE predicate for a 'utf8' text column with a partial index +# (see bug #16674 as well) +# + +SET NAMES latin2; + +CREATE TABLE t1 ( + id int(11) NOT NULL default '0', + tid int(11) NOT NULL default '0', + val text NOT NULL, + INDEX idx(tid, val(10)) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +INSERT INTO t1 VALUES + (40988,72,'VOLNÝ ADSL'),(41009,72,'VOLNÝ ADSL'), + (41032,72,'VOLNÝ ADSL'),(41038,72,'VOLNÝ ADSL'), + (41063,72,'VOLNÝ ADSL'),(41537,72,'VOLNÝ ADSL Office'), + (42141,72,'VOLNÝ ADSL'),(42565,72,'VOLNÝ ADSL Combi'), + (42749,72,'VOLNÝ ADSL'),(44205,72,'VOLNÝ ADSL'); + +SELECT * FROM t1 WHERE tid=72 and val LIKE 'VOLNY ADSL'; +SELECT * FROM t1 WHERE tid=72 and val LIKE 'VOLNÝ ADSL'; +SELECT * FROM t1 WHERE tid=72 and val LIKE '%VOLNÝ ADSL'; + +ALTER TABLE t1 DROP KEY idx; +ALTER TABLE t1 ADD KEY idx (tid,val(11)); + +SELECT * FROM t1 WHERE tid=72 and val LIKE 'VOLNÝ ADSL'; + +DROP TABLE t1; # End of 4.1 tests -- cgit v1.2.1 From 1e4d1f9b29ce3d6f31cd60fa260454e3fa705919 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 23 Jun 2006 10:35:45 +0300 Subject: Fixed memory leak (found by rpl_row_inexist_tbl) sql/handler.cc: Made code more portable --- sql/handler.cc | 9 +++++---- sql/log_event.cc | 18 ++++++++++-------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/sql/handler.cc b/sql/handler.cc index a98618172be..0dfb31fba8c 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -3268,10 +3268,11 @@ namespace if (thd->get_binlog_table_maps() == 0) { - MYSQL_LOCK *const locks[] = { - thd->extra_lock, thd->lock, thd->locked_tables - }; - for (my_ptrdiff_t i= 0 ; i < sizeof(locks)/sizeof(*locks) ; ++i ) + MYSQL_LOCK *locks[3]; + locks[0]= thd->extra_lock; + locks[1]= thd->lock; + locks[2]= thd->locked_tables; + for (uint i= 0 ; i < sizeof(locks)/sizeof(*locks) ; ++i ) { MYSQL_LOCK const *const lock= locks[i]; if (lock == NULL) diff --git a/sql/log_event.cc b/sql/log_event.cc index 05217758906..7cffa552954 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -5871,7 +5871,7 @@ int Table_map_log_event::exec_event(st_relay_log_info *rli) table_list->db, table_list->table_name); thd->query_error= 1; } - DBUG_RETURN(error); + goto err; } m_table= table_list->table; @@ -5948,7 +5948,8 @@ int Table_map_log_event::exec_event(st_relay_log_info *rli) } thd->query_error= 1; - DBUG_RETURN(ERR_BAD_TABLE_DEF); + error= ERR_BAD_TABLE_DEF; + goto err; } /* @@ -5956,12 +5957,10 @@ int Table_map_log_event::exec_event(st_relay_log_info *rli) locked by linking the table into the list of tables to lock, and tell the RLI that we are touching a table. */ - if (!error) - { - table_list->next_global= table_list->next_local= rli->tables_to_lock; - rli->tables_to_lock= table_list; - rli->tables_to_lock_count++; - } + table_list->next_global= table_list->next_local= rli->tables_to_lock; + rli->tables_to_lock= table_list; + rli->tables_to_lock_count++; + /* 'memory' is freed in clear_tables_to_lock */ } /* @@ -5976,7 +5975,10 @@ int Table_map_log_event::exec_event(st_relay_log_info *rli) if (likely(!error)) rli->inc_event_relay_log_pos(); + DBUG_RETURN(error); +err: + my_free((gptr) memory, MYF(MY_WME)); DBUG_RETURN(error); } #endif /* !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION) */ -- cgit v1.2.1 From d0a603e35cade2695753735e2445dfe0e0b1c62c Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 23 Jun 2006 09:40:06 +0200 Subject: disable events tests in embedded (fix for bug#20290 Event mechanism incompatible with embedded server, but tests tried) mysql-test/t/events.test: disable test in embedded mysql-test/t/events_bugs.test: disable test in embedded mysql-test/t/events_grant.test: disable test in embedded mysql-test/t/events_logs_tests.test: disable test in embedded mysql-test/t/events_microsec.test: disable test in embedded mysql-test/t/events_scheduling.test: disable test in embedded mysql-test/t/events_stress.test: disable test in embedded --- mysql-test/t/events.test | 3 +++ mysql-test/t/events_bugs.test | 3 +++ mysql-test/t/events_grant.test | 3 +++ mysql-test/t/events_logs_tests.test | 3 +++ mysql-test/t/events_microsec.test | 3 +++ mysql-test/t/events_scheduling.test | 3 +++ mysql-test/t/events_stress.test | 3 +++ 7 files changed, 21 insertions(+) diff --git a/mysql-test/t/events.test b/mysql-test/t/events.test index a3e2bbc0998..da4a1cdda05 100644 --- a/mysql-test/t/events.test +++ b/mysql-test/t/events.test @@ -1,3 +1,6 @@ +# Can't test with embedded server that doesn't support grants +-- source include/not_embedded.inc + create database if not exists events_test; use events_test; diff --git a/mysql-test/t/events_bugs.test b/mysql-test/t/events_bugs.test index e3b79a6bd13..28d5acc69e6 100644 --- a/mysql-test/t/events_bugs.test +++ b/mysql-test/t/events_bugs.test @@ -1,3 +1,6 @@ +# Can't test with embedded server that doesn't support grants +-- source include/not_embedded.inc + create database if not exists events_test; use events_test; diff --git a/mysql-test/t/events_grant.test b/mysql-test/t/events_grant.test index ba94944a3cf..4957a4ca44a 100644 --- a/mysql-test/t/events_grant.test +++ b/mysql-test/t/events_grant.test @@ -1,3 +1,6 @@ +# Can't test with embedded server that doesn't support grants +-- source include/not_embedded.inc + CREATE DATABASE IF NOT EXISTS events_test; use events_test; # diff --git a/mysql-test/t/events_logs_tests.test b/mysql-test/t/events_logs_tests.test index 8ee34e2d32c..5f4ec852cd3 100644 --- a/mysql-test/t/events_logs_tests.test +++ b/mysql-test/t/events_logs_tests.test @@ -1,3 +1,6 @@ +# Can't test with embedded server that doesn't support grants +-- source include/not_embedded.inc + create database if not exists events_test; use events_test; --echo "We use procedure here because its statements won't be logged into the general log" diff --git a/mysql-test/t/events_microsec.test b/mysql-test/t/events_microsec.test index e01120a0756..b2164c7eaa6 100644 --- a/mysql-test/t/events_microsec.test +++ b/mysql-test/t/events_microsec.test @@ -1,3 +1,6 @@ +# Can't test with embedded server that doesn't support grants +-- source include/not_embedded.inc + create database if not exists events_test; use events_test; diff --git a/mysql-test/t/events_scheduling.test b/mysql-test/t/events_scheduling.test index c688864a1e6..987939bc162 100644 --- a/mysql-test/t/events_scheduling.test +++ b/mysql-test/t/events_scheduling.test @@ -1,3 +1,6 @@ +# Can't test with embedded server that doesn't support grants +-- source include/not_embedded.inc + CREATE DATABASE IF NOT EXISTS events_test; USE events_test; CREATE TABLE table_1(a int); diff --git a/mysql-test/t/events_stress.test b/mysql-test/t/events_stress.test index 8d0034c232e..cf6cc73df8a 100644 --- a/mysql-test/t/events_stress.test +++ b/mysql-test/t/events_stress.test @@ -1,3 +1,6 @@ +# Can't test with embedded server that doesn't support grants +-- source include/not_embedded.inc + CREATE DATABASE IF NOT EXISTS events_test; # # DROP DATABASE test start (bug #16406) -- cgit v1.2.1 From caf21245cc5c44580407919f7acef4683a7a21dd Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 23 Jun 2006 10:46:16 +0300 Subject: Suppress memory leak from 'kill_server' (Happens if main thread exists before kill_server thread, which is ok) --- mysql-test/valgrind.supp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/mysql-test/valgrind.supp b/mysql-test/valgrind.supp index dc0f6bf1977..c30d5c8f43e 100644 --- a/mysql-test/valgrind.supp +++ b/mysql-test/valgrind.supp @@ -446,3 +446,13 @@ fun:ListAdd fun:_db_set_ } + +{ + dbug initialization by kill_server + Memcheck:Leak + fun:malloc + fun:DbugMalloc + fun:code_state + fun:_db_enter_ + fun:kill_server +} -- cgit v1.2.1 From 89e415950cf3b40b15e493cb72784f6ad3dc2b64 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 23 Jun 2006 13:19:30 +0500 Subject: Bug#11228: DESC shows arbitrary column as "PRI" An UNIQUE KEY consisting of NOT NULL columns was displayed as PRIMARY KEY in "DESC t1". According to the code, that was intentional behaviour for some reasons unknown to me. This code was written before bitkeeper time, so I cannot check who and why made this. After discussing on dev-public, a decision was made to remove this code mysql-test/r/key.result: Adding test case. mysql-test/t/key.test: Adding test case. sql/table.cc: Removing old wrong code --- mysql-test/r/key.result | 10 ++++++++++ mysql-test/t/key.test | 11 +++++++++++ sql/table.cc | 21 --------------------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/mysql-test/r/key.result b/mysql-test/r/key.result index f0a7afa239f..0bc241c0d19 100644 --- a/mysql-test/r/key.result +++ b/mysql-test/r/key.result @@ -326,6 +326,16 @@ alter table t1 add key (c1,c1,c2); ERROR 42S21: Duplicate column name 'c1' drop table t1; create table t1 ( +i1 INT NOT NULL, +i2 INT NOT NULL, +UNIQUE i1idx (i1), +UNIQUE i2idx (i2)); +desc t1; +Field Type Null Key Default Extra +i1 int(11) UNI 0 +i2 int(11) UNI 0 +drop table t1; +create table t1 ( c1 int, c2 varchar(20) not null, primary key (c1), diff --git a/mysql-test/t/key.test b/mysql-test/t/key.test index 85728582c75..796e36cb608 100644 --- a/mysql-test/t/key.test +++ b/mysql-test/t/key.test @@ -321,6 +321,17 @@ alter table t1 add key (c1,c2,c1); alter table t1 add key (c1,c1,c2); drop table t1; +# +# Bug#11228: DESC shows arbitrary column as "PRI" +# +create table t1 ( + i1 INT NOT NULL, + i2 INT NOT NULL, + UNIQUE i1idx (i1), + UNIQUE i2idx (i2)); +desc t1; +drop table t1; + # # Bug#12565 - ERROR 1034 when running simple UPDATE or DELETE # on large MyISAM table diff --git a/sql/table.cc b/sql/table.cc index 8ac64ac198d..513f42665a6 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -567,27 +567,6 @@ int openfrm(const char *name, const char *alias, uint db_stat, uint prgflag, if (outparam->key_info[key].flags & HA_FULLTEXT) outparam->key_info[key].algorithm= HA_KEY_ALG_FULLTEXT; - if (primary_key >= MAX_KEY && (keyinfo->flags & HA_NOSAME)) - { - /* - If the UNIQUE key doesn't have NULL columns and is not a part key - declare this as a primary key. - */ - primary_key=key; - for (i=0 ; i < keyinfo->key_parts ;i++) - { - uint fieldnr= key_part[i].fieldnr; - if (!fieldnr || - outparam->field[fieldnr-1]->null_ptr || - outparam->field[fieldnr-1]->key_length() != - key_part[i].length) - { - primary_key=MAX_KEY; // Can't be used - break; - } - } - } - for (i=0 ; i < keyinfo->key_parts ; key_part++,i++) { if (new_field_pack_flag <= 1) -- cgit v1.2.1 From 0f3cc95bf1523754d21cc3a4c59c0d107adc1c16 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 23 Jun 2006 14:50:02 +0200 Subject: BUG#20622: Fix one-byte buffer overrun in IM directory string handling. The problem was a call to convert_dirname() with a destination buffer that did not have room for the trailing slash added by that function. This could cause the instance manager to crash in some cases. mysys/mf_dirname.c: Clarify in comments that convert_dirname destination must be larger than source to accomodate a trailing slash. server-tools/instance-manager/instance_options.cc: Fix buffer overrun. --- mysys/mf_dirname.c | 4 +++- server-tools/instance-manager/instance_options.cc | 9 +++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/mysys/mf_dirname.c b/mysys/mf_dirname.c index 9206aa28078..4d78f039799 100644 --- a/mysys/mf_dirname.c +++ b/mysys/mf_dirname.c @@ -72,7 +72,9 @@ uint dirname_part(my_string to, const char *name) SYNPOSIS convert_dirname() - to Store result here + to Store result here. Must be at least of size + min(FN_REFLEN, strlen(from) + 1) to make room + for adding FN_LIBCHAR at the end. from Original filename from_end Pointer at end of filename (normally end \0) diff --git a/server-tools/instance-manager/instance_options.cc b/server-tools/instance-manager/instance_options.cc index 9389694822a..72621ed1662 100644 --- a/server-tools/instance-manager/instance_options.cc +++ b/server-tools/instance-manager/instance_options.cc @@ -391,8 +391,13 @@ int Instance_options::complete_initialization(const char *default_path, const char *tmp; char *end; - if (!mysqld_path && !(mysqld_path= strdup_root(&alloc, default_path))) - goto err; + if (!mysqld_path) + { + // Need one extra byte, as convert_dirname() adds a slash at the end. + if (!(mysqld_path= alloc_root(&alloc, strlen(default_path) + 2))) + goto err; + strcpy((char *)mysqld_path, default_path); + } // it's safe to cast this to char* since this is a buffer we are allocating end= convert_dirname((char*)mysqld_path, mysqld_path, NullS); -- cgit v1.2.1 -- cgit v1.2.1 From 95239e1d1c1ab062173ae59acc5fe02bef9897ed Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 23 Jun 2006 11:21:57 -0400 Subject: BUG#20528 Added missing parenthesis to DBUG_PRINT statement --- mysys/my_lib.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysys/my_lib.c b/mysys/my_lib.c index 03f2d91916d..1c5630ad14e 100644 --- a/mysys/my_lib.c +++ b/mysys/my_lib.c @@ -501,7 +501,7 @@ MY_DIR *my_dir(const char *path, myf MyFlags) if (!(MyFlags & MY_DONT_SORT)) qsort((void *) result->dir_entry, result->number_off_files, sizeof(FILEINFO), (qsort_cmp) comp_names); - DBUG_PRINT(exit, ("found %d files", result->number_off_files)); + DBUG_PRINT("exit", ("found %d files", result->number_off_files)); DBUG_RETURN(result); error: my_errno=errno; -- cgit v1.2.1 From d6cf50ca8b6fa7d4ddec56f2403ee8ada2e0c9ab Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 23 Jun 2006 17:29:01 +0200 Subject: Fix for bug #18897 "Events: unauthorized action possible with alter event rename". ALTER EVENT ... RENAME statement hasn't checked privileges for the target database. It also caused server crashes when target database was not specified explicitly and there was no current database. This fix adds missing privilege check and check for the case when target database is not specified explicitly or implicitly. mysql-test/r/events_bugs.result: update result mysql-test/t/events_bugs.test: add test case for bug 18897 Events: unauthorized action possible with alter event rename: - test rename to db the user does not have access to - test rename when there is no selected db sql/sql_parse.cc: Additional check for the situation when no db is selected. CREATE EVENT abc and ALTER EVENT db.abc RENAME TO xyz, and DROP EVENT abc won't work if there is no selected DB. --- mysql-test/r/events_bugs.result | 23 +++++++++++++++++++++++ mysql-test/t/events_bugs.test | 34 ++++++++++++++++++++++++++++++++++ sql/sql_parse.cc | 9 +++++++-- 3 files changed, 64 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/events_bugs.result b/mysql-test/r/events_bugs.result index bc89c692f9a..a7c2964a253 100644 --- a/mysql-test/r/events_bugs.result +++ b/mysql-test/r/events_bugs.result @@ -178,4 +178,27 @@ drop procedure ee_16407_6_pendant; set global event_scheduler= 2; drop table events_smode_test; set sql_mode=@old_sql_mode; +set global event_scheduler=2; +delete from mysql.user where User like 'mysqltest_%'; +delete from mysql.db where User like 'mysqltest_%'; +flush privileges; +drop database if exists mysqltest_db1; +create user mysqltest_user1@localhost; +create database mysqltest_db1; +grant event on events_test.* to mysqltest_user1@localhost; +create event mysqltest_user1 on schedule every 10 second do select 42; +alter event mysqltest_user1 rename to mysqltest_db1.mysqltest_user1; +ERROR 42000: Access denied for user 'mysqltest_user1'@'localhost' to database 'mysqltest_db1' +"Let's test now rename when there is no select DB" +select database(); +database() +NULL +alter event events_test.mysqltest_user1 rename to mysqltest_user1; +ERROR 3D000: No database selected +select event_schema, event_name, definer, event_type, status from information_schema.events; +event_schema event_name definer event_type status +events_test mysqltest_user1 mysqltest_user1@localhost RECURRING ENABLED +drop event events_test.mysqltest_user1; +drop user mysqltest_user1@localhost; +drop database mysqltest_db1; drop database events_test; diff --git a/mysql-test/t/events_bugs.test b/mysql-test/t/events_bugs.test index e3b79a6bd13..12d75fede5c 100644 --- a/mysql-test/t/events_bugs.test +++ b/mysql-test/t/events_bugs.test @@ -172,4 +172,38 @@ set sql_mode=@old_sql_mode; # # End - 16407: Events: Changes in sql_mode won't be taken into account # + +# +# START - 18897: Events: unauthorized action possible with alter event rename +# +set global event_scheduler=2; +--disable_warnings +delete from mysql.user where User like 'mysqltest_%'; +delete from mysql.db where User like 'mysqltest_%'; +flush privileges; +drop database if exists mysqltest_db1; +--enable_warnings +create user mysqltest_user1@localhost; +create database mysqltest_db1; +grant event on events_test.* to mysqltest_user1@localhost; +connect (conn2,localhost,mysqltest_user1,,events_test); +create event mysqltest_user1 on schedule every 10 second do select 42; +--error ER_DBACCESS_DENIED_ERROR +alter event mysqltest_user1 rename to mysqltest_db1.mysqltest_user1; +--echo "Let's test now rename when there is no select DB" +disconnect conn2; +connect (conn2,localhost,mysqltest_user1,,*NO-ONE*); +select database(); +--error ER_NO_DB_ERROR +alter event events_test.mysqltest_user1 rename to mysqltest_user1; +select event_schema, event_name, definer, event_type, status from information_schema.events; +drop event events_test.mysqltest_user1; +disconnect conn2; +connection default; +drop user mysqltest_user1@localhost; +drop database mysqltest_db1; +# +# END - 18897: Events: unauthorized action possible with alter event rename +# + drop database events_test; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 14847a9906d..2c92c98db5f 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -3823,7 +3823,9 @@ end_with_restore_list: uint rows_affected= 1; DBUG_ASSERT(lex->et); do { - if (! lex->et->dbname.str) + if (! lex->et->dbname.str || + (lex->sql_command == SQLCOM_ALTER_EVENT && lex->spname && + !lex->spname->m_db.str)) { my_message(ER_NO_DB_ERROR, ER(ER_NO_DB_ERROR), MYF(0)); res= true; @@ -3831,7 +3833,10 @@ end_with_restore_list: } if (check_access(thd, EVENT_ACL, lex->et->dbname.str, 0, 0, 0, - is_schema_db(lex->et->dbname.str))) + is_schema_db(lex->et->dbname.str)) || + (lex->sql_command == SQLCOM_ALTER_EVENT && lex->spname && + (check_access(thd, EVENT_ACL, lex->spname->m_db.str, 0, 0, 0, + is_schema_db(lex->spname->m_db.str))))) break; if (end_active_trans(thd)) -- cgit v1.2.1 From 907acc785da95878f0ff7eb6a5b88b5b18e713a8 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 23 Jun 2006 19:36:54 +0400 Subject: key.result: After merge fix mysql-test/r/key.result: After merge fix --- mysql-test/r/key.result | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/key.result b/mysql-test/r/key.result index 6c05a3dde8b..a6f05143b3e 100644 --- a/mysql-test/r/key.result +++ b/mysql-test/r/key.result @@ -336,8 +336,8 @@ UNIQUE i1idx (i1), UNIQUE i2idx (i2)); desc t1; Field Type Null Key Default Extra -i1 int(11) UNI 0 -i2 int(11) UNI 0 +i1 int(11) NO UNI +i2 int(11) NO UNI drop table t1; create table t1 ( c1 int, -- cgit v1.2.1 From a4c1111af260181a84898231746e045d161f9da2 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 23 Jun 2006 12:15:39 -0400 Subject: Bug#20616: drop_temp_table test fails on Windows platform sql/sql_table.cc: Check for FN_DEVCHAR in the table name just before file creation. This allows for temporary tables to contain FN_DEVCHAR in the name. sql/table.cc: Removed the check for FN_DEVCHAR is done at this level because it prevents Windows from creating any table with FN_DEVCHAR in the name. --- sql/sql_table.cc | 17 ++++++++++++++++- sql/table.cc | 8 -------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 275cfbaa088..77c681d4a48 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -1656,8 +1656,23 @@ bool mysql_create_table(THD *thd,const char *db, const char *table_name, my_casedn_str(files_charset_info, path); create_info->table_options|=HA_CREATE_DELAY_KEY_WRITE; } - else + else + { + #ifdef FN_DEVCHAR + /* check if the table name contains FN_DEVCHAR when defined */ + const char *start= alias; + while (*start != '\0') + { + if (*start == FN_DEVCHAR) + { + my_error(ER_WRONG_TABLE_NAME, MYF(0), alias); + DBUG_RETURN(TRUE); + } + start++; + } + #endif build_table_path(path, sizeof(path), db, alias, reg_ext); + } /* Check if table already exists */ if ((create_info->options & HA_LEX_CREATE_TMP_TABLE) diff --git a/sql/table.cc b/sql/table.cc index 711f250c271..cfdb9bd93aa 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -1614,10 +1614,6 @@ bool check_db_name(char *name) if (*name == '/' || *name == '\\' || *name == FN_LIBCHAR || *name == FN_EXTCHAR) return 1; -#ifdef FN_DEVCHAR - if (*name == FN_DEVCHAR) - return 1; -#endif name++; } return last_char_is_space || (uint) (name - start) > NAME_LEN; @@ -1660,10 +1656,6 @@ bool check_table_name(const char *name, uint length) #endif if (*name == '/' || *name == '\\' || *name == FN_EXTCHAR) return 1; -#ifdef FN_DEVCHAR - if (*name == FN_DEVCHAR) - return 1; -#endif name++; } #if defined(USE_MB) && defined(USE_MB_IDENT) -- cgit v1.2.1 From 3d4632b80fb7fc545794444cc9e1b233d97213fe Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 23 Jun 2006 17:59:24 -0400 Subject: Post merge fix. --- mysql-test/r/lock_multi.result | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/mysql-test/r/lock_multi.result b/mysql-test/r/lock_multi.result index b9500d1d4f9..f8cf539bd02 100644 --- a/mysql-test/r/lock_multi.result +++ b/mysql-test/r/lock_multi.result @@ -80,3 +80,19 @@ lock tables t1 write; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; // unlock tables; drop table t1; +use mysql; +LOCK TABLES columns_priv WRITE, db WRITE, host WRITE, user WRITE; +FLUSH TABLES; +use mysql; + SELECT user.Select_priv FROM user, db WHERE user.user = db.user LIMIT 1; +OPTIMIZE TABLES columns_priv, db, host, user; +Table Op Msg_type Msg_text +mysql.columns_priv optimize status OK +mysql.db optimize status OK +mysql.host optimize status OK +mysql.user optimize status OK +UNLOCK TABLES; +Select_priv +N +use test; +use test; -- cgit v1.2.1 From 52914641a44f8094c779492863399bee5316db75 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 24 Jun 2006 07:45:23 +0200 Subject: Build fixes for Windows, Solaris, HPUX, AIX. include/mysql/plugin.h: Fix compilation on non-GCC compilers. sql/CMakeLists.txt: Add missing file. --- include/mysql/plugin.h | 4 ++++ sql/CMakeLists.txt | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/include/mysql/plugin.h b/include/mysql/plugin.h index 0cee54bffde..156c3312c53 100644 --- a/include/mysql/plugin.h +++ b/include/mysql/plugin.h @@ -31,6 +31,10 @@ #define MYSQL_FTPARSER_PLUGIN 2 /* Full-text parser plugin */ #define MYSQL_MAX_PLUGIN_TYPE_NUM 3 /* The number of plugin types */ +#if !defined(__attribute__) && (defined(__cplusplus) || !defined(__GNUC__) || __GNUC__ == 2 && __GNUC_MINOR__ < 8) +#define __attribute__(A) +#endif + /* Macros for beginning and ending plugin declarations. Between mysql_declare_plugin and mysql_declare_plugin_end there should diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt index 2b44fbdcc79..fe6c54b2391 100644 --- a/sql/CMakeLists.txt +++ b/sql/CMakeLists.txt @@ -53,7 +53,7 @@ ADD_EXECUTABLE(mysqld ../sql-common/client.c derror.cc des_key_file.cc time.cc tztime.cc uniques.cc unireg.cc item_xmlfunc.cc rpl_tblmap.cc sql_binlog.cc event_scheduler.cc event_timed.cc sql_tablespace.cc event.cc ../sql-common/my_user.c - partition_info.cc + partition_info.cc rpl_injector.cc ${PROJECT_SOURCE_DIR}/sql/sql_yacc.cc ${PROJECT_SOURCE_DIR}/sql/sql_yacc.h ${PROJECT_SOURCE_DIR}/include/mysqld_error.h -- cgit v1.2.1 From 4a9a0b9aeb47ffdbacdc886aa19476dbcbc04e13 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 24 Jun 2006 13:11:09 +0200 Subject: Fix race condition in test case wait_timeout. Sometimes the helper connection (that is watching for the main connection to time out) would itself time out first, causing the test to fail. mysql-test/t/wait_timeout.test: Increase connection timeout in connection wait_con so we will not loose the connection that is watching for the real wait_timeout to trigger. --- mysql-test/t/wait_timeout.test | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-test/t/wait_timeout.test b/mysql-test/t/wait_timeout.test index 9310c3502b9..8387c08c902 100644 --- a/mysql-test/t/wait_timeout.test +++ b/mysql-test/t/wait_timeout.test @@ -11,6 +11,7 @@ connect (wait_con,localhost,root,,test,,); flush status; # Reset counters connection wait_con; +set session wait_timeout=100; let $retries=300; let $aborted_clients = `SHOW STATUS LIKE 'aborted_clients'`; set @aborted_clients= 0; -- cgit v1.2.1 From acd7132e0ada961d4b47d10f23151b4178f3e80c Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 25 Jun 2006 08:59:44 +0200 Subject: BUG#20677: Sporadic failure of test case 'ndb_binlog_multi'. Start test case with a dummy table create and drop. This ensures that NDB event subscription is properly set up before the real test starts, which otherwise could sometimes cause INSERT events to be lost. mysql-test/r/ndb_binlog_multi.result: Start test with dummy table create/drop to avoid a race. mysql-test/t/ndb_binlog_multi.test: Start test with dummy table create/drop to avoid a race. --- mysql-test/r/ndb_binlog_multi.result | 6 ++++-- mysql-test/t/ndb_binlog_multi.test | 11 +++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/mysql-test/r/ndb_binlog_multi.result b/mysql-test/r/ndb_binlog_multi.result index be5dc695d24..119174039f9 100644 --- a/mysql-test/r/ndb_binlog_multi.result +++ b/mysql-test/r/ndb_binlog_multi.result @@ -1,5 +1,7 @@ -drop table if exists t1,t2; -drop table if exists t1,t2; +drop table if exists t1,t2,t3; +drop table if exists t1,t2,t3; +CREATE TABLE t3 (dummy INT PRIMARY KEY) ENGINE = NDB; +DROP TABLE t3; reset master; reset master; CREATE TABLE t2 (a INT PRIMARY KEY, b int) ENGINE = NDB; diff --git a/mysql-test/t/ndb_binlog_multi.test b/mysql-test/t/ndb_binlog_multi.test index 6adacf73208..e023a54b61c 100644 --- a/mysql-test/t/ndb_binlog_multi.test +++ b/mysql-test/t/ndb_binlog_multi.test @@ -4,11 +4,18 @@ --disable_warnings connection server2; -drop table if exists t1,t2; +drop table if exists t1,t2,t3; connection server1; -drop table if exists t1,t2; +drop table if exists t1,t2,t3; --enable_warnings +# Dummy table create/drop to avoid a race where table is created +# before event subscription is set up, causing test failure (BUG#20677). +connection server2; +CREATE TABLE t3 (dummy INT PRIMARY KEY) ENGINE = NDB; +connection server1; +DROP TABLE t3; + # reset for test connection server1; reset master; -- cgit v1.2.1 From d98a7999e2e13dd9aac38995cf55a570752c7647 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 25 Jun 2006 10:25:00 +0200 Subject: .del-make_win_src_distribution.sh~f80d8fca44e4e5f1: Delete: scripts/make_win_src_distribution.sh Makefile.am: Unix and Windows now shares source package scripts/Makefile.am: Unix and Windows now shares source package BitKeeper/deleted/.del-make_win_src_distribution.sh~f80d8fca44e4e5f1: Delete: scripts/make_win_src_distribution.sh --- scripts/Makefile.am | 5 +- scripts/make_win_src_distribution.sh | 538 ----------------------------------- 2 files changed, 1 insertion(+), 542 deletions(-) delete mode 100644 scripts/make_win_src_distribution.sh diff --git a/scripts/Makefile.am b/scripts/Makefile.am index af3cbc19cb5..7cd89eee952 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -34,12 +34,10 @@ bin_SCRIPTS = @server_scripts@ \ mysql_create_system_tables noinst_SCRIPTS = make_binary_distribution \ - make_sharedlib_distribution \ - make_win_src_distribution + make_sharedlib_distribution EXTRA_SCRIPTS = make_binary_distribution.sh \ make_sharedlib_distribution.sh \ - make_win_src_distribution.sh \ msql2mysql.sh \ mysql_config.sh \ mysql_fix_privilege_tables.sh \ @@ -83,7 +81,6 @@ CLEANFILES = @server_scripts@ \ mysqldumpslow \ mysql_tableinfo \ mysqld_multi \ - make_win_src_distribution \ mysql_create_system_tables DISTCLEANFILES = mysqlbug diff --git a/scripts/make_win_src_distribution.sh b/scripts/make_win_src_distribution.sh deleted file mode 100644 index 27c8b6b7e91..00000000000 --- a/scripts/make_win_src_distribution.sh +++ /dev/null @@ -1,538 +0,0 @@ -#!/bin/sh - -# Terminate loudly on error, we don't want partial package -set -e -trap "echo '*** script failed ***'" 0 - -# -# Script to create a Windows src package -# - -version=@VERSION@ -CP="cp -p" - -DEBUG=0 -SILENT=0 -SUFFIX="" -DIRNAME="" -OUTTAR="0" -OUTZIP="0" - -# -# An "abort" function taking a variable number of strings (one per line) -# - -abort() -{ - for line - do - echo "$line" - done - exit 1 -} - - -# -# This script must run from MySQL top directory -# - -if [ ! -f scripts/make_win_src_distribution ]; then - abort "ERROR : You must run this script from the MySQL top-level directory" -fi -SOURCE=`pwd` - -# -# Check for source compilation/configuration -# - -if [ ! -f sql/sql_yacc.cc ]; then - abort "ERROR : Sorry, you must run this script after the complete build," \ - " hope you know what you are trying to do !!" -fi - -# -# Debug print of the status -# - -print_debug() -{ - for statement - do - if [ "$DEBUG" = "1" ] ; then - echo $statement - fi - done -} - -# -# Usage of the script -# - -show_usage() -{ - echo "MySQL utility script to create a Windows src package, and it takes" - echo "the following arguments:" - echo "" - echo " --debug Debug, without creating the package" - echo " --tmp Specify the temporary location" - echo " --suffix Suffix name for the package" - echo " --dirname Directory name to copy files (intermediate)" - echo " --silent Show no progress information" - echo " --tar Create tar.gz package" - echo " --zip Create zip package" - echo " --help Show this help message" - - exit 0 -} - -# -# Parse the input arguments -# - -parse_arguments() { - for arg do - case "$arg" in - --add-tar) ADDTAR=1 ;; - --debug) DEBUG=1;; - --tmp=*) TMP=`echo "$arg" | sed -e "s;--tmp=;;"` ;; - --suffix=*) SUFFIX=`echo "$arg" | sed -e "s;--suffix=;;"` ;; - --dirname=*) DIRNAME=`echo "$arg" | sed -e "s;--dirname=;;"` ;; - --silent) SILENT=1 ;; - --tar) OUTTAR=1 ;; - --zip) OUTZIP=1 ;; - --help) show_usage ;; - *) abort "Unknown argument '$arg'" - ;; - esac - done -} - -parse_arguments "$@" - -# -# Assign the tmp directory if it was set from the environment variables -# - -for i in $TMP $TMPDIR $TEMPDIR $TEMP /tmp -do - if [ "$i" ]; then - print_debug "Setting TMP to '$i'" - TMP=$i - break - fi -done - - -# -# Convert argument file from unix to DOS text -# - -unix_to_dos() -{ - for arg do - print_debug "Replacing LF -> CRLF from '$arg'" - - awk '{sub(/$/,"\r");print}' < $arg > $arg.tmp - rm -f $arg - mv $arg.tmp $arg - done -} - - -# -# Create a tmp dest directory to copy files -# - -BASE=$TMP/my_win_dist$SUFFIX.$$ -trap "rm -r -f $BASE; echo '*** interrupted ***'; exit 1" 1 2 3 13 15 - -if [ -d $BASE ] ; then - echo "WARNING: Destination directory '$BASE' already exists, deleting it" - rm -r -f $BASE -fi - -$CP -r $SOURCE/VC++Files $BASE -# This includes an implicit 'mkdir $BASE' ! - -# -# Process version tags in InstallShield files -# - -vreplace() -{ - for arg do - unix_to_dos $arg - cat $arg | sed -e 's!@''VERSION''@!@VERSION@!' > $arg.tmp - rm -f $arg - mv $arg.tmp $arg - done -} - -if test -d $BASE/InstallShield -then - for d in 4.1.XX-gpl 4.1.XX-pro 4.1.XX-classic - do - cd $BASE/InstallShield/$d/String\ Tables/0009-English - vreplace value.shl - cd ../../Setup\ Files/Compressed\ Files/Language\ Independent/OS\ Independent - vreplace infolist.txt - done -fi - -# -# Move all error message files to root directory -# - -$CP -r $SOURCE/sql/share $BASE/ -rm -r -f "$BASE/share/Makefile" -rm -r -f "$BASE/share/Makefile.in" -rm -r -f "$BASE/share/Makefile.am" - -mkdir $BASE/Docs $BASE/extra $BASE/include - -# -# Copy directory files -# - -copy_dir_files() -{ - for arg do - print_debug "Copying files from directory '$arg'" - cd $SOURCE/$arg - if [ ! -d $BASE/$arg ]; then - print_debug "Creating directory '$arg'" - mkdir $BASE/$arg - fi - for i in *.c *.cpp *.h *.ih *.i *.ic *.asm *.def *.hpp *.yy \ - README INSTALL* LICENSE AUTHORS NEWS ChangeLog \ - *.inc *.test *.result *.pem Moscow_leap des_key_file \ - *.vcproj *.sln *.dat *.000001 *.require *.opt - do - if [ -f $i ] - then - $CP $SOURCE/$arg/$i $BASE/$arg/$i - fi - done - for i in *.cc - do - if [ -f $i ] - then - i=`echo $i | sed 's/.cc$//g'` - $CP $SOURCE/$arg/$i.cc $BASE/$arg/$i.cpp - fi - done - done -} - -# -# Copy directory contents recursively -# - -copy_dir_dirs() { - - for arg do - - cd $SOURCE - ( - find $arg -type d \ - -and -not -path \*SCCS\* \ - -and -not -path \*.deps\* \ - -and -not -path \*.libs\* \ - -and -not -path \*autom4te.cache -print - )|( - while read v - do - copy_dir_files $v - done - ) - - done -} - -# -# Input directories to be copied -# - -for i in client dbug extra storage/heap include storage/archive storage/csv \ - include/mysql libmysql libmysqld storage/myisam storage/example \ - storage/myisammrg mysys regex sql strings sql-common \ - vio zlib -do - copy_dir_files $i -done - -# -# Create project files for ndb -# -#make -C $SOURCE/storage/ndb windoze || true - -# -# Input directories to be copied recursively -# - -for i in storage/bdb storage/innobase storage/ndb extra/yassl server-tools plugin -do - copy_dir_dirs $i -done - -# -# Create dummy innobase configure header -# - -if [ -f $BASE/storage/innobase/ib_config.h ]; then - rm -f $BASE/storage/innobase/ib_config.h -fi -touch $BASE/storage/innobase/ib_config.h - - -# -# Copy miscellaneous files -# - -cd $SOURCE -for i in COPYING ChangeLog README EXCEPTIONS-CLIENT\ - INSTALL-SOURCE INSTALL-WIN \ - INSTALL-WIN-SOURCE \ - Docs/INSTALL-BINARY Docs/manual.chm -do - print_debug "Copying file '$i'" - if [ -f $i ] - then - $CP $i $BASE/$i - fi -done - -# -# support files -# -mkdir $BASE/support-files - -# Rename the cnf files to .ini -for i in support-files/*.cnf -do - i=`echo $i | sed 's/.cnf$//g'` - cp $i.cnf $BASE/$i.ini -done - -# -# Raw dirs from source tree -# - -for i in scripts mysql-test SSL tests -do - print_debug "Copying directory '$i'" - if [ -d $i ] - then - if [ -d $BASE/$i ] - then - $CP -R $i $BASE - else - $CP -R $i $BASE/$i - fi - fi - # But remove object files from destination - find $BASE/$i -type f -name \*.o | xargs rm -f -done - -# -# Fix some windows files to avoid compiler warnings -# - -if [ -x extra/replace ] ; then - ./extra/replace std:: "" < $BASE/sql/sql_yacc.cpp | \ - sed '/^ *switch (yytype)$/ { N; /\n *{$/ { N; /\n *default:$/ { N; /\n *break;$/ { N; /\n *}$/ d; };};};} ' \ - > $BASE/sql/sql_yacc.cpp-new - mv $BASE/sql/sql_yacc.cpp-new $BASE/sql/sql_yacc.cpp -else - if [ "$SILENT" = "0" ] ; then - echo 'WARNING: "extra/replace" not built, can not filter "sql_yacc.ccp"' - echo 'WARNING: to reduce the number of warnings when building' - fi -fi - -# -# Search the tree for plain text files and adapt the line end marker -# -find $BASE \( -name "*.cnf" -o -name "*.ini" \ - -o -name COPYING -o -name ChangeLog -o -name EXCEPTIONS-CLIENT \ - -o -name "INSTALL*" -o -name LICENSE -o -name "README*" \ - -o -name "*.dsp" -o -name "*.dsw" \ - -o -name "*.vcproj" -o -name "*.sln" \) -type f -print \ -| while read v - do - unix_to_dos $v - done - -mv $BASE/README $BASE/README.txt - -# -# Clean up if we did this from a bk tree -# - -find $BASE -type d \( -name SCCS -o -name .deps -o -name .libs \) -print0 | \ -xargs -0 rm -r -f -rm -r -f "$BASE/mysql-test/var" - -# -# Initialize the initial data directory -# - -if [ ! -f scripts/mysql_install_db ] ; then - if [ "$SILENT" = "0" ] ; then - echo 'WARNING: "scripts/mysql_install_db" is not built, can not initiate databases' - fi -elif [ ! -f extra/my_print_defaults ]; then - if [ "$SILENT" = "0" ] ; then - echo 'WARNING: "extra/my_print_defaults" is not built, can not initiate databases' - fi -else - print_debug "Initializing the 'data' directory" - scripts/mysql_install_db --no-defaults --windows --datadir=$BASE/data - if test "$?" = 1 - then - exit 1; - fi -fi - -# -# Specify the distribution package name and copy it -# - -if test -z $DIRNAME -then - NEW_DIR_NAME=mysql@MYSQL_SERVER_SUFFIX@-$version$SUFFIX -else - NEW_DIR_NAME=$DIRNAME -fi -NEW_NAME=$NEW_DIR_NAME-win-src - -BASE2=$TMP/$NEW_DIR_NAME -rm -r -f $BASE2 -mv $BASE $BASE2 -BASE=$BASE2 - -# -# If debugging, don't create a zip/tar/gz -# - -if [ "$DEBUG" = "1" ] ; then - echo "Please check the distribution files from $BASE" - echo "Exiting (without creating the package).." - exit -fi - -# -# This is needed to prefere gnu tar instead of tar because tar can't -# always handle long filenames -# - -PATH_DIRS=`echo $PATH | sed -e 's/^:/. /' -e 's/:$/ ./' -e 's/::/ . /g' -e 's/:/ /g' ` -which_1 () -{ - for cmd - do - for d in $PATH_DIRS - do - for file in $d/$cmd - do - if test -x $file -a ! -d $file - then - echo $file - exit 0 - fi - done - done - done - exit 1 -} - -# -# Create the result zip/tar file -# - -if [ "$OUTTAR" = "0" ]; then - if [ "$OUTZIP" = "0" ]; then - OUTZIP=1 - fi -fi - -set_tarzip_options() -{ - for arg - do - if [ "$arg" = "tar" ]; then - ZIPFILE1=gnutar - ZIPFILE2=gtar - OPT=cf - EXT=".tar" - NEED_COMPRESS=1 - else - ZIPFILE1=zip - ZIPFILE2="" - OPT="-r -q" - EXT=".zip" - NEED_COMPRESS=0 - fi - done -} - - -# -# Create the archive -# -create_archive() -{ - - print_debug "Using $tar to create archive" - - cd $TMP - - rm -f $SOURCE/$NEW_NAME$EXT - $tar $OPT $SOURCE/$NEW_NAME$EXT $NEW_DIR_NAME - cd $SOURCE - - if [ "$NEED_COMPRESS" = "1" ] - then - print_debug "Compressing archive" - gzip -9 $NEW_NAME$EXT - EXT="$EXT.gz" - fi - - if [ "$SILENT" = "0" ] ; then - echo "$NEW_NAME$EXT created successfully !!" - fi -} - -if [ "$OUTTAR" = "1" ]; then - set_tarzip_options 'tar' - - tar=`which_1 $ZIPFILE1 $ZIPFILE2` - if test "$?" = "1" -o "$tar" = "" - then - print_debug "Search failed for '$ZIPFILE1', '$ZIPFILE2', using default 'tar'" - tar=tar - set_tarzip_options 'tar' - fi - - create_archive -fi - -if [ "$OUTZIP" = "1" ]; then - set_tarzip_options 'zip' - - tar=`which_1 $ZIPFILE1 $ZIPFILE2` - if test "$?" = "1" -o "$tar" = "" - then - echo "Search failed for '$ZIPFILE1', '$ZIPFILE2', cannot create zip!" - fi - - create_archive -fi - -print_debug "Removing temporary directory" -rm -r -f $BASE - -# No need to report anything if we got here -trap "" 0 - -# End of script -- cgit v1.2.1 From 81f99b95f15a25879ef1c1cb8e3fe4a554f4e759 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 25 Jun 2006 22:56:10 +0400 Subject: table.cc, func_time.result: After merge fix mysql-test/r/func_time.result: After merge fix sql/table.cc: After merge fix --- mysql-test/r/func_time.result | 8 ++++---- sql/table.cc | 22 ---------------------- 2 files changed, 4 insertions(+), 26 deletions(-) diff --git a/mysql-test/r/func_time.result b/mysql-test/r/func_time.result index e8c00a87896..d5cafd04c08 100644 --- a/mysql-test/r/func_time.result +++ b/mysql-test/r/func_time.result @@ -799,10 +799,10 @@ sec_to_time(1) + 0, from_unixtime(1) + 0; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( - `now() - now()` double(23,6) NOT NULL default '0.000000', - `curtime() - curtime()` double(23,6) NOT NULL default '0.000000', - `sec_to_time(1) + 0` double(23,6) default NULL, - `from_unixtime(1) + 0` double(23,6) default NULL + `now() - now()` double(23,6) NOT NULL DEFAULT '0.000000', + `curtime() - curtime()` double(23,6) NOT NULL DEFAULT '0.000000', + `sec_to_time(1) + 0` double(23,6) DEFAULT NULL, + `from_unixtime(1) + 0` double(23,6) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; End of 4.1 tests diff --git a/sql/table.cc b/sql/table.cc index f26ba853750..c7b851949fc 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -1025,28 +1025,6 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head, if (share->key_info[key].flags & HA_FULLTEXT) share->key_info[key].algorithm= HA_KEY_ALG_FULLTEXT; - if (primary_key >= MAX_KEY && (keyinfo->flags & HA_NOSAME)) - { - /* - If the UNIQUE key doesn't have NULL columns and is not a part key - declare this as a primary key. - */ - primary_key=key; - for (i=0 ; i < keyinfo->key_parts ;i++) - { - uint fieldnr= key_part[i].fieldnr; - if (!fieldnr || - share->field[fieldnr-1]->null_ptr || - share->field[fieldnr-1]->key_length() != - key_part[i].length) - { - primary_key=MAX_KEY; // Can't be used - break; - } - } - } - - for (i=0 ; i < keyinfo->key_parts ; key_part++,i++) { Field *field; -- cgit v1.2.1 From 725ab9df20675b2d58044a6c7149785d9187dae6 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 25 Jun 2006 16:04:11 -0400 Subject: Post merge fix mysql-test/r/func_time.result: post-merge fix mysql-test/r/select.result: post-merge fix --- mysql-test/r/func_time.result | 13 ++++++++++--- mysql-test/r/select.result | 6 ++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/func_time.result b/mysql-test/r/func_time.result index 5ccf7f6baea..d5cafd04c08 100644 --- a/mysql-test/r/func_time.result +++ b/mysql-test/r/func_time.result @@ -794,10 +794,17 @@ select f1 from t1 where makedate(2006,2) between date(f1) and date(f3); f1 2006-01-02 drop table t1; -select now() - now() + 0, curtime() - curtime() + 0, +create table t1 select now() - now(), curtime() - curtime(), sec_to_time(1) + 0, from_unixtime(1) + 0; -now() - now() + 0 curtime() - curtime() + 0 sec_to_time(1) + 0 from_unixtime(1) + 0 -0.000000 0.000000 1.000000 19700101030001.000000 +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `now() - now()` double(23,6) NOT NULL DEFAULT '0.000000', + `curtime() - curtime()` double(23,6) NOT NULL DEFAULT '0.000000', + `sec_to_time(1) + 0` double(23,6) DEFAULT NULL, + `from_unixtime(1) + 0` double(23,6) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +drop table t1; End of 4.1 tests explain extended select timestampdiff(SQL_TSI_WEEK, '2001-02-01', '2001-05-01') as a1, timestampdiff(SQL_TSI_FRAC_SECOND, '2001-02-01 12:59:59.120000', '2001-05-01 12:58:58.119999') as a2; diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result index 7e54acfae2a..f2d60a682e7 100644 --- a/mysql-test/r/select.result +++ b/mysql-test/r/select.result @@ -2730,6 +2730,12 @@ ERROR 42000: Key 'a' doesn't exist in table 't1' EXPLAIN SELECT * FROM t1 FORCE INDEX (a); ERROR 42000: Key 'a' doesn't exist in table 't1' DROP TABLE t1; +CREATE TABLE t1 (i BIGINT UNSIGNED NOT NULL); +INSERT INTO t1 VALUES (10); +SELECT i='1e+01',i=1e+01, i in (1e+01,1e+01), i in ('1e+01','1e+01') FROM t1; +i='1e+01' i=1e+01 i in (1e+01,1e+01) i in ('1e+01','1e+01') +0 1 1 1 +DROP TABLE t1; CREATE TABLE t1 ( K2C4 varchar(4) character set latin1 collate latin1_bin NOT NULL default '', K4N4 varchar(4) character set latin1 collate latin1_bin NOT NULL default '0000', -- cgit v1.2.1 From 7072a63acd51b0b2870b9c14937ff03bd47f8e4a Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 26 Jun 2006 12:16:39 +0200 Subject: ndb - bug#20683 part 1 - make sure return code is propagated from request tracker ndb/src/kernel/vm/RequestTracker.hpp: propagate return value ndb/src/kernel/vm/SafeCounter.hpp: make sure object is not initialized in case of seize() failure, to make sure destructor doesnt assert --- ndb/src/kernel/vm/RequestTracker.hpp | 4 ++-- ndb/src/kernel/vm/SafeCounter.hpp | 22 ++++++++++++++-------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/ndb/src/kernel/vm/RequestTracker.hpp b/ndb/src/kernel/vm/RequestTracker.hpp index 5fd1ae7255a..ac9ed85ae4b 100644 --- a/ndb/src/kernel/vm/RequestTracker.hpp +++ b/ndb/src/kernel/vm/RequestTracker.hpp @@ -26,12 +26,12 @@ public: void init() { m_confs.clear(); m_nRefs = 0; } template - void init(SafeCounterManager& mgr, + bool init(SafeCounterManager& mgr, NodeReceiverGroup rg, Uint16 GSN, Uint32 senderData) { init(); SafeCounter tmp(mgr, m_sc); - tmp.init(rg, GSN, senderData); + return tmp.init(rg, GSN, senderData); } bool ignoreRef(SafeCounterManager& mgr, Uint32 nodeId) diff --git a/ndb/src/kernel/vm/SafeCounter.hpp b/ndb/src/kernel/vm/SafeCounter.hpp index 1f3cc15c2d6..869a7ef671f 100644 --- a/ndb/src/kernel/vm/SafeCounter.hpp +++ b/ndb/src/kernel/vm/SafeCounter.hpp @@ -230,10 +230,13 @@ inline bool SafeCounter::init(NodeReceiverGroup rg, Uint16 GSN, Uint32 senderData){ - bool b = init(rg.m_block, GSN, senderData); - m_nodes = rg.m_nodes; - m_count = m_nodes.count(); - return b; + if (init(rg.m_block, GSN, senderData)) + { + m_nodes = rg.m_nodes; + m_count = m_nodes.count(); + return true; + } + return false; } template @@ -241,10 +244,13 @@ inline bool SafeCounter::init(NodeReceiverGroup rg, Uint32 senderData){ - bool b = init(rg.m_block, Ref::GSN, senderData); - m_nodes = rg.m_nodes; - m_count = m_nodes.count(); - return b; + if (init(rg.m_block, Ref::GSN, senderData)) + { + m_nodes = rg.m_nodes; + m_count = m_nodes.count(); + return true; + } + return false; } inline -- cgit v1.2.1 From 9aa82e53d432ab7c84a8d4bd429dc095560146e5 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 26 Jun 2006 12:31:09 +0200 Subject: ndb - bug#20683 part 2 - handle safecounter.init() failing in all parts of event code storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp: Handle out safecounter.init() failing storage/ndb/src/kernel/blocks/suma/Suma.cpp: Dont try to get table RNIL storage/ndb/test/ndbapi/test_event.cpp: Add testcase for subscribe/unscubscribe --- storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp | 50 +++++++++++++++++----- storage/ndb/src/kernel/blocks/suma/Suma.cpp | 3 +- storage/ndb/test/ndbapi/test_event.cpp | 57 +++++++++++++++++++++++++ 3 files changed, 99 insertions(+), 11 deletions(-) diff --git a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp index 20132be1261..b3af476454a 100644 --- a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp +++ b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp @@ -9476,7 +9476,14 @@ Dbdict::createEventComplete_RT_USER_GET(Signal* signal, NodeReceiverGroup rg(DBDICT, c_aliveNodes); RequestTracker & p = evntRecPtr.p->m_reqTracker; - p.init(c_counterMgr, rg, GSN_CREATE_EVNT_REF, evntRecPtr.i); + if (!p.init(c_counterMgr, rg, GSN_CREATE_EVNT_REF, + evntRecPtr.i)) + { + jam(); + evntRecPtr.p->m_errorCode = 701; + createEvent_sendReply(signal, evntRecPtr); + return; + } sendSignal(rg, GSN_CREATE_EVNT_REQ, signal, CreateEvntReq::SignalLength, JBB); } @@ -9764,8 +9771,12 @@ void Dbdict::execSUB_START_REQ(Signal* signal) return; } OpSubEventPtr subbPtr; + Uint32 errCode = 0; if (!c_opSubEvent.seize(subbPtr)) { + errCode = SubStartRef::Busy; +busy: SubStartRef * ref = (SubStartRef *)signal->getDataPtrSend(); + { // fix Uint32 subcriberRef = ((SubStartReq*)signal->getDataPtr())->subscriberRef; ref->subscriberRef = subcriberRef; @@ -9775,7 +9786,7 @@ void Dbdict::execSUB_START_REQ(Signal* signal) // ret->setErrorLine(__LINE__); // ret->setErrorNode(reference()); ref->senderRef = reference(); - ref->errorCode = SubStartRef::Busy; + ref->errorCode = errCode; sendSignal(origSenderRef, GSN_SUB_START_REF, signal, SubStartRef::SignalLength2, JBB); @@ -9798,7 +9809,12 @@ void Dbdict::execSUB_START_REQ(Signal* signal) subbPtr.p->m_senderRef = origSenderRef; // not sure if API sets correctly NodeReceiverGroup rg(DBDICT, c_aliveNodes); RequestTracker & p = subbPtr.p->m_reqTracker; - p.init(c_counterMgr, rg, GSN_SUB_START_REF, subbPtr.i); + if (!p.init(c_counterMgr, rg, GSN_SUB_START_REF, subbPtr.i)) + { + c_opSubEvent.release(subbPtr); + errCode = SubStartRef::Busy; + goto busy; + } SubStartReq* req = (SubStartReq*) signal->getDataPtrSend(); @@ -9988,14 +10004,17 @@ void Dbdict::execSUB_STOP_REQ(Signal* signal) return; } OpSubEventPtr subbPtr; + Uint32 errCode = 0; if (!c_opSubEvent.seize(subbPtr)) { + errCode = SubStopRef::Busy; +busy: SubStopRef * ref = (SubStopRef *)signal->getDataPtrSend(); jam(); // ret->setErrorCode(SubStartRef::SeizeError); // ret->setErrorLine(__LINE__); // ret->setErrorNode(reference()); ref->senderRef = reference(); - ref->errorCode = SubStopRef::Busy; + ref->errorCode = errCode; sendSignal(origSenderRef, GSN_SUB_STOP_REF, signal, SubStopRef::SignalLength, JBB); @@ -10020,10 +10039,16 @@ void Dbdict::execSUB_STOP_REQ(Signal* signal) subbPtr.p->m_senderRef = origSenderRef; // not sure if API sets correctly NodeReceiverGroup rg(DBDICT, c_aliveNodes); RequestTracker & p = subbPtr.p->m_reqTracker; - p.init(c_counterMgr, rg, GSN_SUB_STOP_REF, subbPtr.i); - + if (!p.init(c_counterMgr, rg, GSN_SUB_STOP_REF, subbPtr.i)) + { + jam(); + c_opSubEvent.release(subbPtr); + errCode = SubStopRef::Busy; + goto busy; + } + SubStopReq* req = (SubStopReq*) signal->getDataPtrSend(); - + req->senderRef = reference(); req->senderData = subbPtr.i; @@ -10313,9 +10338,14 @@ Dbdict::dropEventUTIL_EXECUTE_READ(Signal* signal, NodeReceiverGroup rg(DBDICT, c_aliveNodes); RequestTracker & p = evntRecPtr.p->m_reqTracker; - p.init(c_counterMgr, rg, GSN_SUB_REMOVE_REF, - evntRecPtr.i); - + if (!p.init(c_counterMgr, rg, GSN_SUB_REMOVE_REF, + evntRecPtr.i)) + { + evntRecPtr.p->m_errorCode = 701; + dropEvent_sendReply(signal, evntRecPtr); + return; + } + SubRemoveReq* req = (SubRemoveReq*) signal->getDataPtrSend(); req->senderRef = reference(); diff --git a/storage/ndb/src/kernel/blocks/suma/Suma.cpp b/storage/ndb/src/kernel/blocks/suma/Suma.cpp index 91f0fab06f8..5f4b8717e6c 100644 --- a/storage/ndb/src/kernel/blocks/suma/Suma.cpp +++ b/storage/ndb/src/kernel/blocks/suma/Suma.cpp @@ -2465,7 +2465,8 @@ Suma::execSUB_STOP_REQ(Signal* signal){ TablePtr tabPtr; tabPtr.i = subPtr.p->m_table_ptrI; - if (!(tabPtr.p = c_tables.getPtr(tabPtr.i)) || + if (tabPtr.i == RNIL || + !(tabPtr.p = c_tables.getPtr(tabPtr.i)) || tabPtr.p->m_tableId != subPtr.p->m_tableId) { jam(); diff --git a/storage/ndb/test/ndbapi/test_event.cpp b/storage/ndb/test/ndbapi/test_event.cpp index d8939f06b14..d132ec103ee 100644 --- a/storage/ndb/test/ndbapi/test_event.cpp +++ b/storage/ndb/test/ndbapi/test_event.cpp @@ -1559,6 +1559,56 @@ static int runCreateDropNR(NDBT_Context* ctx, NDBT_Step* step) DBUG_RETURN(result); } +static +int +runSubscribeUnsubscribe(NDBT_Context* ctx, NDBT_Step* step) +{ + char buf[1024]; + const NdbDictionary::Table & tab = * ctx->getTab(); + sprintf(buf, "%s_EVENT", tab.getName()); + Ndb* ndb = GETNDB(step); + int loops = 5 * ctx->getNumLoops(); + + while (--loops) + { + NdbEventOperation *pOp= ndb->createEventOperation(buf); + if (pOp == 0) + { + g_err << "createEventOperation: " + << ndb->getNdbError().code << " " + << ndb->getNdbError().message << endl; + return NDBT_FAILED; + } + + int n_columns= tab.getNoOfColumns(); + for (int j = 0; j < n_columns; j++) + { + pOp->getValue(tab.getColumn(j)->getName()); + pOp->getPreValue(tab.getColumn(j)->getName()); + } + if ( pOp->execute() ) + { + g_err << "pOp->execute(): " + << pOp->getNdbError().code << " " + << pOp->getNdbError().message << endl; + + ndb->dropEventOperation(pOp); + + return NDBT_FAILED; + } + + if (ndb->dropEventOperation(pOp)) + { + g_err << "pOp->execute(): " + << ndb->getNdbError().code << " " + << ndb->getNdbError().message << endl; + return NDBT_FAILED; + } + } + + return NDBT_OK; +} + NDBT_TESTSUITE(test_event); TESTCASE("BasicEventOperation", "Verify that we can listen to Events" @@ -1673,6 +1723,13 @@ TESTCASE("CreateDropNR", "NOTE! No errors are allowed!" ){ FINALIZER(runCreateDropNR); } +TESTCASE("SubscribeUnsubscribe", + "A bunch of threads doing subscribe/unsubscribe in loop" + "NOTE! No errors are allowed!" ){ + INITIALIZER(runCreateEvent); + STEPS(runSubscribeUnsubscribe, 16); + FINALIZER(runDropEvent); +} NDBT_TESTSUITE_END(test_event); int main(int argc, const char** argv){ -- cgit v1.2.1 From 90913a036450a784f36ffccc0921f1946ea44222 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 26 Jun 2006 15:08:09 +0200 Subject: ndb - bug#20053 make sure we can only drop files from correct file group mysql-test/r/ndb_dd_ddl.result: add testcase mysql-test/t/ndb_dd_ddl.test: add testcase sql/ha_ndbcluster.cc: Make sure correct tablespace for dropping datafile storage/ndb/include/ndbapi/NdbDictionary.hpp: Cleanup {data/undo}file get{tablespace/logfilegroup} storage/ndb/src/ndbapi/NdbDictionary.cpp: Cleanup {data/undo}file get{tablespace/logfilegroup} storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp: Cleanup {data/undo}file get{tablespace/logfilegroup} storage/ndb/tools/restore/consumer_restore.cpp: Cleanup {data/undo}file get{tablespace/logfilegroup} --- mysql-test/r/ndb_dd_ddl.result | 18 +++++++++++++++ mysql-test/t/ndb_dd_ddl.test | 26 +++++++++++++++++++++ sql/ha_ndbcluster.cc | 15 ++++++++---- storage/ndb/include/ndbapi/NdbDictionary.hpp | 8 +++---- storage/ndb/src/ndbapi/NdbDictionary.cpp | 32 ++++++++++++++++++-------- storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp | 12 ++++++++-- storage/ndb/tools/restore/consumer_restore.cpp | 13 +++++++---- 7 files changed, 98 insertions(+), 26 deletions(-) diff --git a/mysql-test/r/ndb_dd_ddl.result b/mysql-test/r/ndb_dd_ddl.result index 9fff9f06f2a..eea80090768 100644 --- a/mysql-test/r/ndb_dd_ddl.result +++ b/mysql-test/r/ndb_dd_ddl.result @@ -188,6 +188,19 @@ ENGINE NDB; CREATE INDEX b_i on t1(b); CREATE INDEX bc_i on t1(b, c); DROP TABLE t1; +CREATE TABLESPACE ts2 +ADD DATAFILE 'datafile3.dat' +USE LOGFILE GROUP lg1 +INITIAL_SIZE 1M +ENGINE NDB; +ALTER TABLESPACE ts1 +DROP DATAFILE 'datafile3.dat' +ENGINE NDB; +ERROR HY000: Failed to alter: NO SUCH FILE +ALTER TABLESPACE ts2 +DROP DATAFILE 'datafile2.dat' +ENGINE NDB; +ERROR HY000: Failed to alter: NO SUCH FILE ALTER TABLESPACE ts1 DROP DATAFILE 'datafile2.dat' ENGINE NDB; @@ -196,6 +209,11 @@ DROP DATAFILE 'datafile.dat' ENGINE NDB; DROP TABLESPACE ts1 ENGINE NDB; +ALTER TABLESPACE ts2 +DROP DATAFILE 'datafile3.dat' +ENGINE NDB; +DROP TABLESPACE ts2 +ENGINE NDB; DROP LOGFILE GROUP lg1 ENGINE NDB; **** End = And No = **** diff --git a/mysql-test/t/ndb_dd_ddl.test b/mysql-test/t/ndb_dd_ddl.test index 95ad7f0d152..1a470d52c6c 100644 --- a/mysql-test/t/ndb_dd_ddl.test +++ b/mysql-test/t/ndb_dd_ddl.test @@ -280,6 +280,25 @@ CREATE INDEX bc_i on t1(b, c); DROP TABLE t1; +# bug#20053 + +CREATE TABLESPACE ts2 +ADD DATAFILE 'datafile3.dat' +USE LOGFILE GROUP lg1 +INITIAL_SIZE 1M +ENGINE NDB; + +--error ER_ALTER_FILEGROUP_FAILED +ALTER TABLESPACE ts1 +DROP DATAFILE 'datafile3.dat' +ENGINE NDB; + +--error ER_ALTER_FILEGROUP_FAILED +ALTER TABLESPACE ts2 +DROP DATAFILE 'datafile2.dat' +ENGINE NDB; +# bug#20053 + ALTER TABLESPACE ts1 DROP DATAFILE 'datafile2.dat' ENGINE NDB; @@ -291,6 +310,13 @@ ENGINE NDB; DROP TABLESPACE ts1 ENGINE NDB; +ALTER TABLESPACE ts2 +DROP DATAFILE 'datafile3.dat' +ENGINE NDB; + +DROP TABLESPACE ts2 +ENGINE NDB; + DROP LOGFILE GROUP lg1 ENGINE NDB; diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 986014a36d1..69e615daea2 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -9949,7 +9949,7 @@ int ndbcluster_alter_tablespace(THD* thd, st_alter_tablespace *info) } NdbError err; - NDBDICT *dict = ndb->getDictionary(); + NDBDICT *dict= ndb->getDictionary(); int error; const char * errmsg; LINT_INIT(errmsg); @@ -10013,9 +10013,12 @@ int ndbcluster_alter_tablespace(THD* thd, st_alter_tablespace *info) } else if(info->ts_alter_tablespace_type == ALTER_TABLESPACE_DROP_FILE) { - NdbDictionary::Datafile df = dict->getDatafile(0, - info->data_file_name); - if (strcmp(df.getPath(), info->data_file_name) == 0) + NdbDictionary::Tablespace ts= dict->getTablespace(info->tablespace_name); + NdbDictionary::Datafile df= dict->getDatafile(0, info->data_file_name); + NdbDictionary::ObjectId objid; + df.getTablespaceId(&objid); + if (ts.getObjectId() == objid.getObjectId() && + strcmp(df.getPath(), info->data_file_name) == 0) { errmsg= " DROP DATAFILE"; if (dict->dropDatafile(df)) @@ -10344,10 +10347,12 @@ static int ndbcluster_fill_files_table(THD *thd, TABLE_LIST *tables, table->field[c++]->set_null(); // TABLE_NAME // LOGFILE_GROUP_NAME + NdbDictionary::ObjectId objid; + uf.getLogfileGroupId(&objid); table->field[c++]->store(uf.getLogfileGroup(), strlen(uf.getLogfileGroup()), system_charset_info); - table->field[c++]->store(uf.getLogfileGroupId()); // LOGFILE_GROUP_NUMBER + table->field[c++]->store(objid.getObjectId()); // LOGFILE_GROUP_NUMBER table->field[c++]->store(ndbcluster_hton_name, ndbcluster_hton_name_length, system_charset_info); // ENGINE diff --git a/storage/ndb/include/ndbapi/NdbDictionary.hpp b/storage/ndb/include/ndbapi/NdbDictionary.hpp index a9fd107c06e..2133c9658aa 100644 --- a/storage/ndb/include/ndbapi/NdbDictionary.hpp +++ b/storage/ndb/include/ndbapi/NdbDictionary.hpp @@ -184,7 +184,7 @@ public: virtual int getObjectId() const; private: - friend class Dictionary; + friend class NdbDictObjectImpl; class NdbDictObjectImpl & m_impl; }; @@ -1462,11 +1462,11 @@ public: void setSize(Uint64); Uint64 getSize() const; Uint64 getFree() const; - + void setTablespace(const char * name); void setTablespace(const class Tablespace &); const char * getTablespace() const; - Uint32 getTablespaceId() const; + void getTablespaceId(ObjectId * dst) const; void setNode(Uint32 nodeId); Uint32 getNode() const; @@ -1509,7 +1509,7 @@ public: void setLogfileGroup(const char * name); void setLogfileGroup(const class LogfileGroup &); const char * getLogfileGroup() const; - Uint32 getLogfileGroupId() const; + void getLogfileGroupId(ObjectId * dst) const; void setNode(Uint32 nodeId); Uint32 getNode() const; diff --git a/storage/ndb/src/ndbapi/NdbDictionary.cpp b/storage/ndb/src/ndbapi/NdbDictionary.cpp index 7d888456888..132e651c687 100644 --- a/storage/ndb/src/ndbapi/NdbDictionary.cpp +++ b/storage/ndb/src/ndbapi/NdbDictionary.cpp @@ -1224,9 +1224,14 @@ NdbDictionary::Datafile::getTablespace() const { return m_impl.m_filegroup_name.c_str(); } -Uint32 -NdbDictionary::Datafile::getTablespaceId() const { - return m_impl.m_filegroup_id; +void +NdbDictionary::Datafile::getTablespaceId(NdbDictionary::ObjectId* dst) const +{ + if (dst) + { + NdbDictObjectImpl::getImpl(* dst).m_id = m_impl.m_filegroup_id; + NdbDictObjectImpl::getImpl(* dst).m_version = m_impl.m_filegroup_version; + } } NdbDictionary::Object::Status @@ -1310,9 +1315,14 @@ NdbDictionary::Undofile::getLogfileGroup() const { return m_impl.m_filegroup_name.c_str(); } -Uint32 -NdbDictionary::Undofile::getLogfileGroupId() const { - return m_impl.m_filegroup_id; +void +NdbDictionary::Undofile::getLogfileGroupId(NdbDictionary::ObjectId * dst)const +{ + if (dst) + { + NdbDictObjectImpl::getImpl(* dst).m_id = m_impl.m_filegroup_id; + NdbDictObjectImpl::getImpl(* dst).m_version = m_impl.m_filegroup_version; + } } NdbDictionary::Object::Status @@ -1829,7 +1839,8 @@ NdbDictionary::Dictionary::createLogfileGroup(const LogfileGroup & lg, ObjectId * obj) { return m_impl.createLogfileGroup(NdbLogfileGroupImpl::getImpl(lg), - obj ? &obj->m_impl : 0); + obj ? + & NdbDictObjectImpl::getImpl(* obj) : 0); } int @@ -1852,7 +1863,8 @@ NdbDictionary::Dictionary::createTablespace(const Tablespace & lg, ObjectId * obj) { return m_impl.createTablespace(NdbTablespaceImpl::getImpl(lg), - obj ? &obj->m_impl : 0); + obj ? + & NdbDictObjectImpl::getImpl(* obj) : 0); } int @@ -1887,7 +1899,7 @@ NdbDictionary::Dictionary::createDatafile(const Datafile & df, { return m_impl.createDatafile(NdbDatafileImpl::getImpl(df), force, - obj ? &obj->m_impl : 0); + obj ? & NdbDictObjectImpl::getImpl(* obj) : 0); } int @@ -1913,7 +1925,7 @@ NdbDictionary::Dictionary::createUndofile(const Undofile & df, { return m_impl.createUndofile(NdbUndofileImpl::getImpl(df), force, - obj ? &obj->m_impl : 0); + obj ? & NdbDictObjectImpl::getImpl(* obj) : 0); } int diff --git a/storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp b/storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp index 35e8027cdec..a95af988f1e 100644 --- a/storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp +++ b/storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp @@ -46,14 +46,22 @@ public: NdbDictionary::Object::Status m_status; bool change(); + + static NdbDictObjectImpl & getImpl(NdbDictionary::ObjectId & t) { + return t.m_impl; + } + static const NdbDictObjectImpl & getImpl(const NdbDictionary::ObjectId & t){ + return t.m_impl; + } + protected: + friend class NdbDictionary::ObjectId; + NdbDictObjectImpl(NdbDictionary::Object::Type type) : m_type(type), m_status(NdbDictionary::Object::New) { m_id = -1; } - - friend class NdbDictionary::ObjectId; }; /** diff --git a/storage/ndb/tools/restore/consumer_restore.cpp b/storage/ndb/tools/restore/consumer_restore.cpp index 6b0d42ee0d2..97bb3ad9587 100644 --- a/storage/ndb/tools/restore/consumer_restore.cpp +++ b/storage/ndb/tools/restore/consumer_restore.cpp @@ -533,9 +533,11 @@ BackupRestore::object(Uint32 type, const void * ptr) if (!m_no_restore_disk) { NdbDictionary::Datafile old(*(NdbDictionary::Datafile*)ptr); - NdbDictionary::Tablespace * ts = m_tablespaces[old.getTablespaceId()]; + NdbDictionary::ObjectId objid; + old.getTablespaceId(&objid); + NdbDictionary::Tablespace * ts = m_tablespaces[objid.getObjectId()]; debug << "Connecting datafile " << old.getPath() - << " to tablespace: oldid: " << old.getTablespaceId() + << " to tablespace: oldid: " << objid.getObjectId() << " newid: " << ts->getObjectId() << endl; old.setTablespace(* ts); info << "Creating datafile \"" << old.getPath() << "\"..." << flush; @@ -554,10 +556,11 @@ BackupRestore::object(Uint32 type, const void * ptr) if (!m_no_restore_disk) { NdbDictionary::Undofile old(*(NdbDictionary::Undofile*)ptr); - NdbDictionary::LogfileGroup * lg = - m_logfilegroups[old.getLogfileGroupId()]; + NdbDictionary::ObjectId objid; + old.getLogfileGroupId(&objid); + NdbDictionary::LogfileGroup * lg = m_logfilegroups[objid.getObjectId()]; debug << "Connecting undofile " << old.getPath() - << " to logfile group: oldid: " << old.getLogfileGroupId() + << " to logfile group: oldid: " << objid.getObjectId() << " newid: " << lg->getObjectId() << " " << (void*)lg << endl; old.setLogfileGroup(* lg); -- cgit v1.2.1 From 2ad33373d62c22d4fe22a104e5ac0ebaff0d0615 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 26 Jun 2006 23:31:10 +1000 Subject: BUG#11459 ndb status variables not updated change names of some undocumented ndb status variables to better reflect what their values mean sql/ha_ndbcluster.cc: rename some status variables to better reflect what they show. --- sql/ha_ndbcluster.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 98dd9d5a122..9814e2c84b6 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -160,8 +160,8 @@ static int update_status_variables(Ndb_cluster_connection *c) struct show_var_st ndb_status_variables[]= { {"cluster_node_id", (char*) &ndb_cluster_node_id, SHOW_LONG}, - {"connected_host", (char*) &ndb_connected_host, SHOW_CHAR_PTR}, - {"connected_port", (char*) &ndb_connected_port, SHOW_LONG}, + {"config_from_host", (char*) &ndb_connected_host, SHOW_CHAR_PTR}, + {"config_from_port", (char*) &ndb_connected_port, SHOW_LONG}, // {"number_of_replicas", (char*) &ndb_number_of_replicas, SHOW_LONG}, {"number_of_storage_nodes",(char*) &ndb_number_of_storage_nodes, SHOW_LONG}, {NullS, NullS, SHOW_LONG} -- cgit v1.2.1 From 1ef08c91676ece2c6a67babd2303af49463edbdb Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 26 Jun 2006 15:49:58 +0200 Subject: BUG#20676: debug warnings about too many lock waiters cause test failure. The 250 simultaneous events all accessing the same table caused the events_stress test to fail due to debug warnings about too many table waiters. Fixed by using three different tables. mysql-test/r/events_stress.result: Use three different MyISAM tables to avoid debug warnings about too many locks. mysql-test/t/events_stress.test: Use three different MyISAM tables to avoid debug warnings about too many locks. --- mysql-test/r/events_stress.result | 8 ++++++-- mysql-test/t/events_stress.test | 22 ++++++++++++++-------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/mysql-test/r/events_stress.result b/mysql-test/r/events_stress.result index ead618e8136..050fe324426 100644 --- a/mysql-test/r/events_stress.result +++ b/mysql-test/r/events_stress.result @@ -1,6 +1,8 @@ CREATE DATABASE IF NOT EXISTS events_test; CREATE DATABASE events_conn1_test2; -CREATE TABLE events_test.fill_it(test_name varchar(20), occur datetime); +CREATE TABLE events_test.fill_it1(test_name varchar(20), occur datetime); +CREATE TABLE events_test.fill_it2(test_name varchar(20), occur datetime); +CREATE TABLE events_test.fill_it3(test_name varchar(20), occur datetime); CREATE USER event_user2@localhost; CREATE DATABASE events_conn2_db; GRANT ALL ON *.* TO event_user2@localhost; @@ -57,5 +59,7 @@ SET GLOBAL event_scheduler=2; DROP DATABASE events_conn1_test4; SET GLOBAL event_scheduler=1; USE events_test; -DROP TABLE fill_it; +DROP TABLE fill_it1; +DROP TABLE fill_it2; +DROP TABLE fill_it3; DROP DATABASE events_test; diff --git a/mysql-test/t/events_stress.test b/mysql-test/t/events_stress.test index 8d0034c232e..94aa99592d3 100644 --- a/mysql-test/t/events_stress.test +++ b/mysql-test/t/events_stress.test @@ -3,7 +3,11 @@ CREATE DATABASE IF NOT EXISTS events_test; # DROP DATABASE test start (bug #16406) # CREATE DATABASE events_conn1_test2; -CREATE TABLE events_test.fill_it(test_name varchar(20), occur datetime); +# BUG#20676: MySQL in debug mode has a limit of 100 waiters +# (in mysys/thr_lock.c), so use three different tables to insert into. +CREATE TABLE events_test.fill_it1(test_name varchar(20), occur datetime); +CREATE TABLE events_test.fill_it2(test_name varchar(20), occur datetime); +CREATE TABLE events_test.fill_it3(test_name varchar(20), occur datetime); CREATE USER event_user2@localhost; CREATE DATABASE events_conn2_db; GRANT ALL ON *.* TO event_user2@localhost; @@ -16,7 +20,7 @@ connect (conn2,localhost,event_user2,,events_conn2_db); let $1= 50; while ($1) { - eval CREATE EVENT conn2_ev$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it VALUES("conn2_ev$1", NOW()); + eval CREATE EVENT conn2_ev$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it1 VALUES("conn2_ev$1", NOW()); dec $1; } --enable_query_log @@ -26,7 +30,7 @@ connect (conn3,localhost,event_user3,,events_conn3_db); let $1= 50; while ($1) { - eval CREATE EVENT conn3_ev$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it VALUES("conn3_ev$1", NOW()); + eval CREATE EVENT conn3_ev$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it1 VALUES("conn3_ev$1", NOW()); dec $1; } --enable_query_log @@ -48,7 +52,7 @@ USE events_conn1_test2; let $1= 50; while ($1) { - eval CREATE EVENT conn1_round1_ev$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it VALUES("conn1_round1_ev$1", NOW()); + eval CREATE EVENT conn1_round1_ev$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it2 VALUES("conn1_round1_ev$1", NOW()); dec $1; } --enable_query_log @@ -65,7 +69,7 @@ USE events_conn1_test3; let $1= 50; while ($1) { - eval CREATE EVENT conn1_round2_ev$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it VALUES("conn1_round2_ev$1", NOW()); + eval CREATE EVENT conn1_round2_ev$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it2 VALUES("conn1_round2_ev$1", NOW()); dec $1; } --enable_query_log @@ -77,7 +81,7 @@ USE events_conn1_test4; let $1= 50; while ($1) { - eval CREATE EVENT conn1_round3_ev$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it VALUES("conn1_round3_ev$1", NOW()); + eval CREATE EVENT conn1_round3_ev$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it3 VALUES("conn1_round3_ev$1", NOW()); dec $1; } --enable_query_log @@ -88,7 +92,7 @@ USE events_conn1_test2; let $1= 50; while ($1) { - eval CREATE EVENT ev_round4_drop$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it VALUES("conn1_round4_ev$1", NOW()); + eval CREATE EVENT ev_round4_drop$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it3 VALUES("conn1_round4_ev$1", NOW()); dec $1; } --enable_query_log @@ -115,7 +119,9 @@ reap; disconnect conn3; connection default; USE events_test; -DROP TABLE fill_it; +DROP TABLE fill_it1; +DROP TABLE fill_it2; +DROP TABLE fill_it3; --disable_query_log DROP USER event_user2@localhost; DROP USER event_user3@localhost; -- cgit v1.2.1 From 0335013f17743299cf32731e1db986170672acbe Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 27 Jun 2006 10:02:58 +0200 Subject: Bug #19852 Restoring backup made from cluster with full data memory fails - make sure to allocate just enough pages in the fragments by using the actual row count from the backup, to avoid over allocation of pages to fragments, and thus avoid the bug ndb/include/kernel/GlobalSignalNumbers.h: Bug #19852 Restoring backup made from cluster with full data memory fails - distribute fragment complete to all participants to update row count ndb/include/kernel/signaldata/BackupContinueB.hpp: Bug #19852 Restoring backup made from cluster with full data memory fails - time slica writing of fragment info to ctl file ndb/include/kernel/signaldata/BackupImpl.hpp: Bug #19852 Restoring backup made from cluster with full data memory fails - 32 -> 64 bit on bytes and records - new signal fragment complete to all participants ndb/include/kernel/signaldata/BackupSignalData.hpp: Bug #19852 Restoring backup made from cluster with full data memory fails - 32 -> 64 bit on bytes and records ndb/include/kernel/signaldata/DictTabInfo.hpp: Bug #19852 Restoring backup made from cluster with full data memory fails - add min and max rows to dict tab info ndb/include/kernel/signaldata/LqhFrag.hpp: Bug #19852 Restoring backup made from cluster with full data memory fails - added min and max rows to add frag req ndb/include/kernel/signaldata/TupFrag.hpp: Bug #19852 Restoring backup made from cluster with full data memory fails - added min and max rows to add frag req ndb/include/ndbapi/NdbDictionary.hpp: Bug #19852 Restoring backup made from cluster with full data memory fails - added get/set of min max rows ndb/src/common/debugger/signaldata/BackupImpl.cpp: Bug #19852 Restoring backup made from cluster with full data memory fails - 32 -> 64 bit on bytes and records ndb/src/common/debugger/signaldata/BackupSignalData.cpp: Bug #19852 Restoring backup made from cluster with full data memory fails - 32 -> 64 bit on bytes and records ndb/src/common/debugger/signaldata/DictTabInfo.cpp: Bug #19852 Restoring backup made from cluster with full data memory fails - added min and max rows to dict tab info ndb/src/common/debugger/signaldata/LqhFrag.cpp: Bug #19852 Restoring backup made from cluster with full data memory fails - added min and max rows to frag req ndb/src/kernel/blocks/backup/Backup.cpp: Bug #19852 Restoring backup made from cluster with full data memory fails - new section in backup with per fragment info in ctl file - 32 -> 64 bit on bytes and records ndb/src/kernel/blocks/backup/Backup.hpp: Bug #19852 Restoring backup made from cluster with full data memory fails - new section in backup with per fragment info in ctl file - 32 -> 64 bit on bytes and records ndb/src/kernel/blocks/backup/BackupFormat.hpp: Bug #19852 Restoring backup made from cluster with full data memory fails - new section in backup with per fragment info in ctl file - 32 -> 64 bit on bytes and records ndb/src/kernel/blocks/backup/BackupInit.cpp: Bug #19852 Restoring backup made from cluster with full data memory fails - new signal fragment complete to all participants ndb/src/kernel/blocks/dbdict/Dbdict.cpp: Bug #19852 Restoring backup made from cluster with full data memory fails - added max and min rows to dict table object ndb/src/kernel/blocks/dbdict/Dbdict.hpp: Bug #19852 Restoring backup made from cluster with full data memory fails - added max and min rows to dict table object ndb/src/kernel/blocks/dblqh/Dblqh.hpp: Bug #19852 Restoring backup made from cluster with full data memory fails - added min and max rows to frag req ndb/src/kernel/blocks/dblqh/DblqhMain.cpp: Bug #19852 Restoring backup made from cluster with full data memory fails - added min and max rows to frag req ndb/src/kernel/blocks/dbtup/Dbtup.hpp: Bug #19852 Restoring backup made from cluster with full data memory fails - added min and max rows to frag req ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp: Bug #19852 Restoring backup made from cluster with full data memory fails - added min and max rows to frag req - move memory allocation to fragment to after adding of attributes to get correct headsize - allocate pages to fragments according to min rows setting ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp: Bug #19852 Restoring backup made from cluster with full data memory fails - grow page allocation starting from 2 irrespective of first page allocation ndb/src/mgmsrv/MgmtSrvr.cpp: Bug #19852 Restoring backup made from cluster with full data memory fails - 32 -> 64 bits on bytes and records ndb/src/mgmsrv/MgmtSrvr.hpp: Bug #19852 Restoring backup made from cluster with full data memory fails - 32 -> 64 bits on bytes and records ndb/src/ndbapi/NdbDictionary.cpp: Bug #19852 Restoring backup made from cluster with full data memory fails - min and max rows in dict ndb/src/ndbapi/NdbDictionaryImpl.cpp: Bug #19852 Restoring backup made from cluster with full data memory fails - min and max rows in dict ndb/src/ndbapi/NdbDictionaryImpl.hpp: Bug #19852 Restoring backup made from cluster with full data memory fails - min and max rows in dict ndb/tools/restore/Restore.cpp: Bug #19852 Restoring backup made from cluster with full data memory fails - add retrieval of fragment info ndb/tools/restore/Restore.hpp: Bug #19852 Restoring backup made from cluster with full data memory fails - add retrieval of fragment info ndb/tools/restore/consumer_restore.cpp: Bug #19852 Restoring backup made from cluster with full data memory fails - set min in restore to the actual row count (this is the actual bug fix) sql/ha_ndbcluster.cc: Bug #19852 Restoring backup made from cluster with full data memory fails - set min and max rows according to sql definition --- ndb/include/kernel/GlobalSignalNumbers.h | 4 +- ndb/include/kernel/signaldata/BackupContinueB.hpp | 3 +- ndb/include/kernel/signaldata/BackupImpl.hpp | 22 ++- ndb/include/kernel/signaldata/BackupSignalData.hpp | 8 +- ndb/include/kernel/signaldata/DictTabInfo.hpp | 11 ++ ndb/include/kernel/signaldata/LqhFrag.hpp | 25 ++-- ndb/include/kernel/signaldata/TupFrag.hpp | 15 +- ndb/include/ndbapi/NdbDictionary.hpp | 14 ++ ndb/src/common/debugger/signaldata/BackupImpl.cpp | 6 +- .../debugger/signaldata/BackupSignalData.cpp | 6 +- ndb/src/common/debugger/signaldata/DictTabInfo.cpp | 8 + ndb/src/common/debugger/signaldata/LqhFrag.cpp | 6 +- ndb/src/kernel/blocks/backup/Backup.cpp | 163 +++++++++++++++++---- ndb/src/kernel/blocks/backup/Backup.hpp | 15 +- ndb/src/kernel/blocks/backup/BackupFormat.hpp | 17 ++- ndb/src/kernel/blocks/backup/BackupInit.cpp | 3 + ndb/src/kernel/blocks/dbdict/Dbdict.cpp | 32 +++- ndb/src/kernel/blocks/dbdict/Dbdict.hpp | 4 + ndb/src/kernel/blocks/dblqh/Dblqh.hpp | 10 +- ndb/src/kernel/blocks/dblqh/DblqhMain.cpp | 94 +++++++----- ndb/src/kernel/blocks/dbtup/Dbtup.hpp | 5 +- ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp | 79 ++++++---- ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp | 6 +- ndb/src/mgmsrv/MgmtSrvr.cpp | 10 +- ndb/src/mgmsrv/MgmtSrvr.hpp | 4 +- ndb/src/ndbapi/NdbDictionary.cpp | 24 +++ ndb/src/ndbapi/NdbDictionaryImpl.cpp | 20 +++ ndb/src/ndbapi/NdbDictionaryImpl.hpp | 3 + ndb/tools/restore/Restore.cpp | 58 +++++++- ndb/tools/restore/Restore.hpp | 15 ++ ndb/tools/restore/consumer_restore.cpp | 10 ++ sql/ha_ndbcluster.cc | 10 +- 32 files changed, 570 insertions(+), 140 deletions(-) diff --git a/ndb/include/kernel/GlobalSignalNumbers.h b/ndb/include/kernel/GlobalSignalNumbers.h index 98b6ce7d949..a84f3130abf 100644 --- a/ndb/include/kernel/GlobalSignalNumbers.h +++ b/ndb/include/kernel/GlobalSignalNumbers.h @@ -611,8 +611,6 @@ extern const GlobalSignalNumber NO_OF_SIGNAL_NAMES; #define GSN_WAIT_GCP_REF 500 #define GSN_WAIT_GCP_CONF 501 -/* 502 not used */ - /** * Trigger and index signals */ @@ -682,6 +680,8 @@ extern const GlobalSignalNumber NO_OF_SIGNAL_NAMES; #define GSN_BACKUP_FRAGMENT_REF 546 #define GSN_BACKUP_FRAGMENT_CONF 547 +#define GSN_BACKUP_FRAGMENT_COMPLETE_REP 502 + #define GSN_STOP_BACKUP_REQ 548 #define GSN_STOP_BACKUP_REF 549 #define GSN_STOP_BACKUP_CONF 550 diff --git a/ndb/include/kernel/signaldata/BackupContinueB.hpp b/ndb/include/kernel/signaldata/BackupContinueB.hpp index d3d3f79f310..fe3f48444ec 100644 --- a/ndb/include/kernel/signaldata/BackupContinueB.hpp +++ b/ndb/include/kernel/signaldata/BackupContinueB.hpp @@ -31,7 +31,8 @@ private: BUFFER_UNDERFLOW = 1, BUFFER_FULL_SCAN = 2, BUFFER_FULL_FRAG_COMPLETE = 3, - BUFFER_FULL_META = 4 + BUFFER_FULL_META = 4, + BACKUP_FRAGMENT_INFO = 5 }; }; diff --git a/ndb/include/kernel/signaldata/BackupImpl.hpp b/ndb/include/kernel/signaldata/BackupImpl.hpp index 298440ad377..07ab5bc543b 100644 --- a/ndb/include/kernel/signaldata/BackupImpl.hpp +++ b/ndb/include/kernel/signaldata/BackupImpl.hpp @@ -258,15 +258,31 @@ class BackupFragmentConf { friend bool printBACKUP_FRAGMENT_CONF(FILE *, const Uint32 *, Uint32, Uint16); public: - STATIC_CONST( SignalLength = 6 ); + STATIC_CONST( SignalLength = 8 ); private: Uint32 backupId; Uint32 backupPtr; Uint32 tableId; Uint32 fragmentNo; - Uint32 noOfRecords; - Uint32 noOfBytes; + Uint32 noOfRecordsLow; + Uint32 noOfBytesLow; + Uint32 noOfRecordsHigh; + Uint32 noOfBytesHigh; +}; + +class BackupFragmentCompleteRep { +public: + STATIC_CONST( SignalLength = 8 ); + + Uint32 backupId; + Uint32 backupPtr; + Uint32 tableId; + Uint32 fragmentNo; + Uint32 noOfTableRowsLow; + Uint32 noOfFragmentRowsLow; + Uint32 noOfTableRowsHigh; + Uint32 noOfFragmentRowsHigh; }; class StopBackupReq { diff --git a/ndb/include/kernel/signaldata/BackupSignalData.hpp b/ndb/include/kernel/signaldata/BackupSignalData.hpp index e1b8c6203a1..9e34ea3a211 100644 --- a/ndb/include/kernel/signaldata/BackupSignalData.hpp +++ b/ndb/include/kernel/signaldata/BackupSignalData.hpp @@ -201,17 +201,19 @@ class BackupCompleteRep { friend bool printBACKUP_COMPLETE_REP(FILE *, const Uint32 *, Uint32, Uint16); public: - STATIC_CONST( SignalLength = 8 + NdbNodeBitmask::Size ); + STATIC_CONST( SignalLength = 10 + NdbNodeBitmask::Size ); private: Uint32 senderData; Uint32 backupId; Uint32 startGCP; Uint32 stopGCP; - Uint32 noOfBytes; - Uint32 noOfRecords; + Uint32 noOfBytesLow; + Uint32 noOfRecordsLow; Uint32 noOfLogBytes; Uint32 noOfLogRecords; NdbNodeBitmask nodes; + Uint32 noOfBytesHigh; + Uint32 noOfRecordsHigh; }; /** diff --git a/ndb/include/kernel/signaldata/DictTabInfo.hpp b/ndb/include/kernel/signaldata/DictTabInfo.hpp index bc4817f0cf3..3fcae69aa74 100644 --- a/ndb/include/kernel/signaldata/DictTabInfo.hpp +++ b/ndb/include/kernel/signaldata/DictTabInfo.hpp @@ -117,9 +117,16 @@ public: CustomTriggerId = 25, FrmLen = 26, FrmData = 27, + FragmentCount = 128, // No of fragments in table (!fragment replicas) FragmentDataLen = 129, FragmentData = 130, // CREATE_FRAGMENTATION reply + + MaxRowsLow = 139, + MaxRowsHigh = 140, + MinRowsLow = 133, + MinRowsHigh = 144, + TableEnd = 999, AttributeName = 1000, // String, Mandatory @@ -263,6 +270,10 @@ public: Uint32 FragmentCount; Uint32 FragmentDataLen; Uint16 FragmentData[(MAX_FRAGMENT_DATA_BYTES+1)/2]; + Uint32 MaxRowsLow; + Uint32 MaxRowsHigh; + Uint32 MinRowsLow; + Uint32 MinRowsHigh; void init(); }; diff --git a/ndb/include/kernel/signaldata/LqhFrag.hpp b/ndb/include/kernel/signaldata/LqhFrag.hpp index 13dfafcc653..50b0caaba07 100644 --- a/ndb/include/kernel/signaldata/LqhFrag.hpp +++ b/ndb/include/kernel/signaldata/LqhFrag.hpp @@ -104,7 +104,7 @@ class LqhFragReq { friend bool printLQH_FRAG_REQ(FILE *, const Uint32 *, Uint32, Uint16); public: - STATIC_CONST( SignalLength = 25 ); + STATIC_CONST( SignalLength = 24 ); enum RequestInfo { CreateInRunning = 0x8000000, @@ -115,27 +115,32 @@ private: Uint32 senderData; Uint32 senderRef; Uint32 fragmentId; - Uint32 requestInfo; + Uint8 requestInfo; + Uint8 unused1; + Uint16 noOfAttributes; Uint32 tableId; Uint32 localKeyLength; - Uint32 maxLoadFactor; - Uint32 minLoadFactor; - Uint32 kValue; + Uint16 maxLoadFactor; + Uint16 minLoadFactor; + Uint16 kValue; + Uint8 tableType; // DictTabInfo::TableType + Uint8 GCPIndicator; Uint32 lh3DistrBits; Uint32 lh3PageBits; - Uint32 noOfAttributes; Uint32 noOfNullAttributes; - Uint32 noOfPagesToPreAllocate; + Uint32 maxRowsLow; + Uint32 maxRowsHigh; + Uint32 minRowsLow; + Uint32 minRowsHigh; Uint32 schemaVersion; Uint32 keyLength; Uint32 nextLCP; Uint32 noOfKeyAttr; - Uint32 noOfNewAttr; // noOfCharsets in upper half + Uint16 noOfNewAttr; + Uint16 noOfCharsets; Uint32 checksumIndicator; Uint32 noOfAttributeGroups; - Uint32 GCPIndicator; Uint32 startGci; - Uint32 tableType; // DictTabInfo::TableType Uint32 primaryTableId; // table of index or RNIL }; diff --git a/ndb/include/kernel/signaldata/TupFrag.hpp b/ndb/include/kernel/signaldata/TupFrag.hpp index 5fb9d7bcf42..c9f2ad5382f 100644 --- a/ndb/include/kernel/signaldata/TupFrag.hpp +++ b/ndb/include/kernel/signaldata/TupFrag.hpp @@ -30,7 +30,7 @@ class TupFragReq { friend class Dblqh; friend class Dbtup; public: - STATIC_CONST( SignalLength = 14 ); + STATIC_CONST( SignalLength = 17 ); private: Uint32 userPtr; Uint32 userRef; @@ -38,7 +38,18 @@ private: Uint32 tableId; Uint32 noOfAttr; Uint32 fragId; - Uint32 todo[8]; + Uint32 maxRowsLow; + Uint32 maxRowsHigh; + Uint32 minRowsLow; + Uint32 minRowsHigh; + Uint32 noOfNullAttr; + Uint32 schemaVersion; + Uint32 noOfKeyAttr; + Uint16 noOfNewAttr; + Uint16 noOfCharsets; + Uint32 checksumIndicator; + Uint32 noOfAttributeGroups; + Uint32 globalCheckpointIdIndicator; }; class TupFragConf { diff --git a/ndb/include/ndbapi/NdbDictionary.hpp b/ndb/include/ndbapi/NdbDictionary.hpp index 1413931035d..e67a0253096 100644 --- a/ndb/include/ndbapi/NdbDictionary.hpp +++ b/ndb/include/ndbapi/NdbDictionary.hpp @@ -722,6 +722,20 @@ public: */ void setObjectType(Object::Type type); + /** + * Set/Get Maximum number of rows in table (only used to calculate + * number of partitions). + */ + void setMaxRows(Uint64 maxRows); + Uint64 getMaxRows() const; + + /** + * Set/Get Minimum number of rows in table (only used to calculate + * number of partitions). + */ + void setMinRows(Uint64 minRows); + Uint64 getMinRows() const; + /** @} *******************************************************************/ #ifndef DOXYGEN_SHOULD_SKIP_INTERNAL diff --git a/ndb/src/common/debugger/signaldata/BackupImpl.cpp b/ndb/src/common/debugger/signaldata/BackupImpl.cpp index e9b0188d93b..855db0834bc 100644 --- a/ndb/src/common/debugger/signaldata/BackupImpl.cpp +++ b/ndb/src/common/debugger/signaldata/BackupImpl.cpp @@ -100,8 +100,10 @@ printBACKUP_FRAGMENT_CONF(FILE * out, const Uint32 * data, Uint32 l, Uint16 b){ BackupFragmentConf* sig = (BackupFragmentConf*)data; fprintf(out, " backupPtr: %d backupId: %d\n", sig->backupPtr, sig->backupId); - fprintf(out, " tableId: %d fragmentNo: %d records: %d bytes: %d\n", - sig->tableId, sig->fragmentNo, sig->noOfRecords, sig->noOfBytes); + fprintf(out, " tableId: %d fragmentNo: %d records: %llu bytes: %llu\n", + sig->tableId, sig->fragmentNo, + sig->noOfRecordsLow + (((Uint64)sig->noOfRecordsHigh) << 32), + sig->noOfBytesLow + (((Uint64)sig->noOfBytesHigh) << 32)); return true; } diff --git a/ndb/src/common/debugger/signaldata/BackupSignalData.cpp b/ndb/src/common/debugger/signaldata/BackupSignalData.cpp index 4b0a0e07b66..27fed22ac72 100644 --- a/ndb/src/common/debugger/signaldata/BackupSignalData.cpp +++ b/ndb/src/common/debugger/signaldata/BackupSignalData.cpp @@ -72,11 +72,11 @@ printBACKUP_ABORT_REP(FILE * out, const Uint32 * data, Uint32 len, Uint16 bno){ bool printBACKUP_COMPLETE_REP(FILE * out, const Uint32 * data, Uint32 len, Uint16 b){ BackupCompleteRep* sig = (BackupCompleteRep*)data; - fprintf(out, " senderData: %d backupId: %d records: %d bytes: %d\n", + fprintf(out, " senderData: %d backupId: %d records: %llu bytes: %llu\n", sig->senderData, sig->backupId, - sig->noOfRecords, - sig->noOfBytes); + sig->noOfRecordsLow + (((Uint64)sig->noOfRecordsHigh) << 32), + sig->noOfBytesLow + (((Uint64)sig->noOfBytesHigh) << 32)); return true; } diff --git a/ndb/src/common/debugger/signaldata/DictTabInfo.cpp b/ndb/src/common/debugger/signaldata/DictTabInfo.cpp index 43c129347c0..a1d8d82474d 100644 --- a/ndb/src/common/debugger/signaldata/DictTabInfo.cpp +++ b/ndb/src/common/debugger/signaldata/DictTabInfo.cpp @@ -48,6 +48,10 @@ DictTabInfo::TableMapping[] = { DTIMAP(Table, FragmentCount, FragmentCount), DTIMAP2(Table, FragmentDataLen, FragmentDataLen, 0, MAX_FRAGMENT_DATA_BYTES), DTIMAPB(Table, FragmentData, FragmentData, 0, MAX_FRAGMENT_DATA_BYTES, FragmentDataLen), + DTIMAP(Table, MaxRowsLow, MaxRowsLow), + DTIMAP(Table, MaxRowsHigh, MaxRowsHigh), + DTIMAP(Table, MinRowsLow, MinRowsLow), + DTIMAP(Table, MinRowsHigh, MinRowsHigh), DTIBREAK(AttributeName) }; @@ -124,6 +128,10 @@ DictTabInfo::Table::init(){ FragmentCount = 0; FragmentDataLen = 0; memset(FragmentData, 0, sizeof(FragmentData)); + MaxRowsLow = 0; + MaxRowsHigh = 0; + MinRowsLow = 0; + MinRowsHigh = 0; } void diff --git a/ndb/src/common/debugger/signaldata/LqhFrag.cpp b/ndb/src/common/debugger/signaldata/LqhFrag.cpp index 6d727959a67..3175582c3a2 100644 --- a/ndb/src/common/debugger/signaldata/LqhFrag.cpp +++ b/ndb/src/common/debugger/signaldata/LqhFrag.cpp @@ -37,8 +37,10 @@ printLQH_FRAG_REQ(FILE * output, const Uint32 * theData, Uint32 len, Uint16 recB fprintf(output, " noOfAttributes: %d noOfNullAttributes: %d keyLength: %d\n", sig->noOfAttributes, sig->noOfNullAttributes, sig->keyLength); - fprintf(output, " noOfPagesToPreAllocate: %d schemaVersion: %d nextLCP: %d\n", - sig->noOfPagesToPreAllocate, sig->schemaVersion, sig->nextLCP); + fprintf(output, " maxRowsLow/High: %u/%u minRowsLow/High: %u/%u\n", + sig->maxRowsLow, sig->maxRowsHigh, sig->minRowsLow, sig->minRowsHigh); + fprintf(output, " schemaVersion: %d nextLCP: %d\n", + sig->schemaVersion, sig->nextLCP); return true; } diff --git a/ndb/src/kernel/blocks/backup/Backup.cpp b/ndb/src/kernel/blocks/backup/Backup.cpp index f9089355475..43c1de5e2b3 100644 --- a/ndb/src/kernel/blocks/backup/Backup.cpp +++ b/ndb/src/kernel/blocks/backup/Backup.cpp @@ -266,6 +266,65 @@ Backup::execCONTINUEB(Signal* signal) const Uint32 Tdata2 = signal->theData[2]; switch(Tdata0) { + case BackupContinueB::BACKUP_FRAGMENT_INFO: + { + const Uint32 ptr_I = Tdata1; + Uint32 tabPtr_I = Tdata2; + Uint32 fragPtr_I = signal->theData[3]; + + BackupRecordPtr ptr; + c_backupPool.getPtr(ptr, ptr_I); + TablePtr tabPtr; + ptr.p->tables.getPtr(tabPtr, tabPtr_I); + FragmentPtr fragPtr; + tabPtr.p->fragments.getPtr(fragPtr, fragPtr_I); + + BackupFilePtr filePtr; + ptr.p->files.getPtr(filePtr, ptr.p->ctlFilePtr); + + const Uint32 sz = sizeof(BackupFormat::CtlFile::FragmentInfo) >> 2; + Uint32 * dst; + if (!filePtr.p->operation.dataBuffer.getWritePtr(&dst, sz)) + { + sendSignalWithDelay(BACKUP_REF, GSN_CONTINUEB, signal, 100, 4); + return; + } + + BackupFormat::CtlFile::FragmentInfo * fragInfo = + (BackupFormat::CtlFile::FragmentInfo*)dst; + fragInfo->SectionType = htonl(BackupFormat::FRAGMENT_INFO); + fragInfo->SectionLength = htonl(sz); + fragInfo->TableId = htonl(fragPtr.p->tableId); + fragInfo->FragmentNo = htonl(fragPtr_I); + fragInfo->NoOfRecordsLow = htonl(fragPtr.p->noOfRecords & 0xFFFFFFFF); + fragInfo->NoOfRecordsHigh = htonl(fragPtr.p->noOfRecords >> 32); + fragInfo->FilePosLow = htonl(0 & 0xFFFFFFFF); + fragInfo->FilePosHigh = htonl(0 >> 32); + + filePtr.p->operation.dataBuffer.updateWritePtr(sz); + + fragPtr_I++; + if (fragPtr_I == tabPtr.p->fragments.getSize()) + { + signal->theData[0] = tabPtr.p->tableId; + signal->theData[1] = 0; // unlock + EXECUTE_DIRECT(DBDICT, GSN_BACKUP_FRAGMENT_REQ, signal, 2); + + fragPtr_I = 0; + ptr.p->tables.next(tabPtr); + if ((tabPtr_I = tabPtr.i) == RNIL) + { + closeFiles(signal, ptr); + return; + } + } + signal->theData[0] = BackupContinueB::BACKUP_FRAGMENT_INFO; + signal->theData[1] = ptr_I; + signal->theData[2] = tabPtr_I; + signal->theData[3] = fragPtr_I; + sendSignal(BACKUP_REF, GSN_CONTINUEB, signal, 4, JBB); + return; + } case BackupContinueB::START_FILE_THREAD: case BackupContinueB::BUFFER_UNDERFLOW: { @@ -455,7 +514,7 @@ Backup::findTable(const BackupRecordPtr & ptr, return false; } -static Uint32 xps(Uint32 x, Uint64 ms) +static Uint32 xps(Uint64 x, Uint64 ms) { float fx = x; float fs = ms; @@ -469,9 +528,9 @@ static Uint32 xps(Uint32 x, Uint64 ms) } struct Number { - Number(Uint32 r) { val = r;} - Number & operator=(Uint32 r) { val = r; return * this; } - Uint32 val; + Number(Uint64 r) { val = r;} + Number & operator=(Uint64 r) { val = r; return * this; } + Uint64 val; }; NdbOut & @@ -545,8 +604,10 @@ Backup::execBACKUP_COMPLETE_REP(Signal* signal) startTime = NdbTick_CurrentMillisecond() - startTime; ndbout_c("Backup %d has completed", rep->backupId); - const Uint32 bytes = rep->noOfBytes; - const Uint32 records = rep->noOfRecords; + const Uint64 bytes = + rep->noOfBytesLow + (((Uint64)rep->noOfBytesHigh) << 32); + const Uint64 records = + rep->noOfRecordsLow + (((Uint64)rep->noOfRecordsHigh) << 32); Number rps = xps(records, startTime); Number bps = xps(bytes, startTime); @@ -1905,8 +1966,10 @@ Backup::execBACKUP_FRAGMENT_CONF(Signal* signal) const Uint32 tableId = conf->tableId; const Uint32 fragmentNo = conf->fragmentNo; const Uint32 nodeId = refToNode(signal->senderBlockRef()); - const Uint32 noOfBytes = conf->noOfBytes; - const Uint32 noOfRecords = conf->noOfRecords; + const Uint64 noOfBytes = + conf->noOfBytesLow + (((Uint64)conf->noOfBytesHigh) << 32); + const Uint64 noOfRecords = + conf->noOfRecordsLow + (((Uint64)conf->noOfRecordsHigh) << 32); BackupRecordPtr ptr; c_backupPool.getPtr(ptr, ptrI); @@ -1918,9 +1981,13 @@ Backup::execBACKUP_FRAGMENT_CONF(Signal* signal) TablePtr tabPtr; ndbrequire(findTable(ptr, tabPtr, tableId)); + tabPtr.p->noOfRecords += noOfRecords; + FragmentPtr fragPtr; tabPtr.p->fragments.getPtr(fragPtr, fragmentNo); + fragPtr.p->noOfRecords = noOfRecords; + ndbrequire(fragPtr.p->scanned == 0); ndbrequire(fragPtr.p->scanning == 1); ndbrequire(fragPtr.p->node == nodeId); @@ -1944,6 +2011,24 @@ Backup::execBACKUP_FRAGMENT_CONF(Signal* signal) } else { + NodeBitmask nodes = ptr.p->nodes; + nodes.clear(getOwnNodeId()); + if (!nodes.isclear()) + { + BackupFragmentCompleteRep *rep = + (BackupFragmentCompleteRep*)signal->getDataPtrSend(); + rep->backupId = ptr.p->backupId; + rep->backupPtr = ptr.i; + rep->tableId = tableId; + rep->fragmentNo = fragmentNo; + rep->noOfTableRowsLow = (Uint32)(tabPtr.p->noOfRecords & 0xFFFFFFFF); + rep->noOfTableRowsHigh = (Uint32)(tabPtr.p->noOfRecords >> 32); + rep->noOfFragmentRowsLow = (Uint32)(noOfRecords & 0xFFFFFFFF); + rep->noOfFragmentRowsHigh = (Uint32)(noOfRecords >> 32); + NodeReceiverGroup rg(BACKUP, ptr.p->nodes); + sendSignal(rg, GSN_BACKUP_FRAGMENT_COMPLETE_REP, signal, + BackupFragmentCompleteRep::SignalLength, JBB); + } nextFragment(signal, ptr); } } @@ -2006,6 +2091,29 @@ err: execABORT_BACKUP_ORD(signal); } +void +Backup::execBACKUP_FRAGMENT_COMPLETE_REP(Signal* signal) +{ + jamEntry(); + BackupFragmentCompleteRep * rep = + (BackupFragmentCompleteRep*)signal->getDataPtr(); + + BackupRecordPtr ptr; + c_backupPool.getPtr(ptr, rep->backupPtr); + + TablePtr tabPtr; + ndbrequire(findTable(ptr, tabPtr, rep->tableId)); + + tabPtr.p->noOfRecords = + rep->noOfTableRowsLow + (((Uint64)rep->noOfTableRowsHigh) << 32); + + FragmentPtr fragPtr; + tabPtr.p->fragments.getPtr(fragPtr, rep->fragmentNo); + + fragPtr.p->noOfRecords = + rep->noOfFragmentRowsLow + (((Uint64)rep->noOfFragmentRowsHigh) << 32); +} + /***************************************************************************** * * Master functionallity - Drop triggers @@ -2206,8 +2314,10 @@ Backup::stopBackupReply(Signal* signal, BackupRecordPtr ptr, Uint32 nodeId) rep->senderData = ptr.p->clientData; rep->startGCP = ptr.p->startGCP; rep->stopGCP = ptr.p->stopGCP; - rep->noOfBytes = ptr.p->noOfBytes; - rep->noOfRecords = ptr.p->noOfRecords; + rep->noOfBytesLow = (Uint32)(ptr.p->noOfBytes & 0xFFFFFFFF); + rep->noOfRecordsLow = (Uint32)(ptr.p->noOfRecords & 0xFFFFFFFF); + rep->noOfBytesHigh = (Uint32)(ptr.p->noOfBytes >> 32); + rep->noOfRecordsHigh = (Uint32)(ptr.p->noOfRecords >> 32); rep->noOfLogBytes = ptr.p->noOfLogBytes; rep->noOfLogRecords = ptr.p->noOfLogRecords; rep->nodes = ptr.p->nodes; @@ -2220,12 +2330,14 @@ Backup::stopBackupReply(Signal* signal, BackupRecordPtr ptr, Uint32 nodeId) signal->theData[2] = ptr.p->backupId; signal->theData[3] = ptr.p->startGCP; signal->theData[4] = ptr.p->stopGCP; - signal->theData[5] = ptr.p->noOfBytes; - signal->theData[6] = ptr.p->noOfRecords; + signal->theData[5] = (Uint32)(ptr.p->noOfBytes & 0xFFFFFFFF); + signal->theData[6] = (Uint32)(ptr.p->noOfRecords & 0xFFFFFFFF); signal->theData[7] = ptr.p->noOfLogBytes; signal->theData[8] = ptr.p->noOfLogRecords; ptr.p->nodes.copyto(NdbNodeBitmask::Size, signal->theData+9); - sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 9+NdbNodeBitmask::Size, JBB); + signal->theData[9+NdbNodeBitmask::Size] = (Uint32)(ptr.p->noOfBytes >> 32); + signal->theData[10+NdbNodeBitmask::Size] = (Uint32)(ptr.p->noOfRecords >> 32); + sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 11+NdbNodeBitmask::Size, JBB); } else { @@ -2988,6 +3100,7 @@ Backup::parseTableDescription(Signal* signal, BackupRecordPtr ptr, Uint32 len) /** * Initialize table object */ + tabPtr.p->noOfRecords = 0; tabPtr.p->schemaVersion = tmpTab.TableVersion; tabPtr.p->noOfAttributes = tmpTab.NoOfAttributes; tabPtr.p->noOfNull = 0; @@ -3695,8 +3808,10 @@ Backup::fragmentCompleted(Signal* signal, BackupFilePtr filePtr) conf->backupPtr = ptr.i; conf->tableId = filePtr.p->tableId; conf->fragmentNo = filePtr.p->fragmentNo; - conf->noOfRecords = op.noOfRecords; - conf->noOfBytes = op.noOfBytes; + conf->noOfRecordsLow = (Uint32)(op.noOfRecords & 0xFFFFFFFF); + conf->noOfRecordsHigh = (Uint32)(op.noOfRecords >> 32); + conf->noOfBytesLow = (Uint32)(op.noOfBytes & 0xFFFFFFFF); + conf->noOfBytesHigh = (Uint32)(op.noOfBytes >> 32); sendSignal(ptr.p->masterRef, GSN_BACKUP_FRAGMENT_CONF, signal, BackupFragmentConf::SignalLength, JBB); @@ -4123,20 +4238,18 @@ Backup::execSTOP_BACKUP_REQ(Signal* signal) gcp->StartGCP = htonl(startGCP); gcp->StopGCP = htonl(stopGCP - 1); filePtr.p->operation.dataBuffer.updateWritePtr(gcpSz); - } - { - TablePtr tabPtr; - for(ptr.p->tables.first(tabPtr); tabPtr.i != RNIL; - ptr.p->tables.next(tabPtr)) { - signal->theData[0] = tabPtr.p->tableId; - signal->theData[1] = 0; // unlock - EXECUTE_DIRECT(DBDICT, GSN_BACKUP_FRAGMENT_REQ, signal, 2); + TablePtr tabPtr; + ptr.p->tables.first(tabPtr); + + signal->theData[0] = BackupContinueB::BACKUP_FRAGMENT_INFO; + signal->theData[1] = ptr.i; + signal->theData[2] = tabPtr.i; + signal->theData[3] = 0; + sendSignal(BACKUP_REF, GSN_CONTINUEB, signal, 4, JBB); } } - - closeFiles(signal, ptr); } void diff --git a/ndb/src/kernel/blocks/backup/Backup.hpp b/ndb/src/kernel/blocks/backup/Backup.hpp index c455e32fa67..e37923da749 100644 --- a/ndb/src/kernel/blocks/backup/Backup.hpp +++ b/ndb/src/kernel/blocks/backup/Backup.hpp @@ -68,6 +68,7 @@ protected: void execBACKUP_DATA(Signal* signal); void execSTART_BACKUP_REQ(Signal* signal); void execBACKUP_FRAGMENT_REQ(Signal* signal); + void execBACKUP_FRAGMENT_COMPLETE_REP(Signal* signal); void execSTOP_BACKUP_REQ(Signal* signal); void execBACKUP_STATUS_REQ(Signal* signal); void execABORT_BACKUP_ORD(Signal* signal); @@ -183,10 +184,12 @@ public: typedef Ptr AttributePtr; struct Fragment { + Uint64 noOfRecords; Uint32 tableId; - Uint32 node; - Uint16 scanned; // 0 = not scanned x = scanned by node x - Uint16 scanning; // 0 = not scanning x = scanning on node x + Uint8 node; + Uint8 scanned; // 0 = not scanned x = scanned by node x + Uint8 scanning; // 0 = not scanning x = scanning on node x + Uint8 unused1; Uint32 nextPool; }; typedef Ptr FragmentPtr; @@ -194,6 +197,8 @@ public: struct Table { Table(ArrayPool &, ArrayPool &); + Uint64 noOfRecords; + Uint32 tableId; Uint32 schemaVersion; Uint32 tableType; @@ -269,8 +274,8 @@ public: Uint32 tablePtr; // Ptr.i to current table FsBuffer dataBuffer; - Uint32 noOfRecords; - Uint32 noOfBytes; + Uint64 noOfRecords; + Uint64 noOfBytes; Uint32 maxRecordSize; private: diff --git a/ndb/src/kernel/blocks/backup/BackupFormat.hpp b/ndb/src/kernel/blocks/backup/BackupFormat.hpp index 65dd2ad9053..b8ffff3a294 100644 --- a/ndb/src/kernel/blocks/backup/BackupFormat.hpp +++ b/ndb/src/kernel/blocks/backup/BackupFormat.hpp @@ -32,7 +32,8 @@ struct BackupFormat { FRAGMENT_FOOTER = 3, TABLE_LIST = 4, TABLE_DESCRIPTION = 5, - GCP_ENTRY = 6 + GCP_ENTRY = 6, + FRAGMENT_INFO = 7 }; struct FileHeader { @@ -126,6 +127,20 @@ struct BackupFormat { Uint32 StartGCP; Uint32 StopGCP; }; + + /** + * Fragment Info + */ + struct FragmentInfo { + Uint32 SectionType; + Uint32 SectionLength; + Uint32 TableId; + Uint32 FragmentNo; + Uint32 NoOfRecordsLow; + Uint32 NoOfRecordsHigh; + Uint32 FilePosLow; + Uint32 FilePosHigh; + }; }; /** diff --git a/ndb/src/kernel/blocks/backup/BackupInit.cpp b/ndb/src/kernel/blocks/backup/BackupInit.cpp index 4c734d58c8e..96c11468939 100644 --- a/ndb/src/kernel/blocks/backup/BackupInit.cpp +++ b/ndb/src/kernel/blocks/backup/BackupInit.cpp @@ -97,6 +97,9 @@ Backup::Backup(const Configuration & conf) : addRecSignal(GSN_BACKUP_FRAGMENT_REQ, &Backup::execBACKUP_FRAGMENT_REQ); addRecSignal(GSN_BACKUP_FRAGMENT_REF, &Backup::execBACKUP_FRAGMENT_REF); addRecSignal(GSN_BACKUP_FRAGMENT_CONF, &Backup::execBACKUP_FRAGMENT_CONF); + + addRecSignal(GSN_BACKUP_FRAGMENT_COMPLETE_REP, + &Backup::execBACKUP_FRAGMENT_COMPLETE_REP); addRecSignal(GSN_STOP_BACKUP_REQ, &Backup::execSTOP_BACKUP_REQ); addRecSignal(GSN_STOP_BACKUP_REF, &Backup::execSTOP_BACKUP_REF); diff --git a/ndb/src/kernel/blocks/dbdict/Dbdict.cpp b/ndb/src/kernel/blocks/dbdict/Dbdict.cpp index ca9daca428b..1f7fd8e6fa5 100644 --- a/ndb/src/kernel/blocks/dbdict/Dbdict.cpp +++ b/ndb/src/kernel/blocks/dbdict/Dbdict.cpp @@ -281,6 +281,10 @@ Dbdict::packTableIntoPagesImpl(SimpleProperties::Writer & w, w.add(DictTabInfo::TableKValue, tablePtr.p->kValue); w.add(DictTabInfo::FragmentTypeVal, tablePtr.p->fragmentType); w.add(DictTabInfo::TableTypeVal, tablePtr.p->tableType); + w.add(DictTabInfo::MaxRowsLow, tablePtr.p->maxRowsLow); + w.add(DictTabInfo::MaxRowsHigh, tablePtr.p->maxRowsHigh); + w.add(DictTabInfo::MinRowsLow, tablePtr.p->minRowsLow); + w.add(DictTabInfo::MinRowsHigh, tablePtr.p->minRowsHigh); if(!signal) { @@ -1525,6 +1529,10 @@ void Dbdict::initialiseTableRecord(TableRecordPtr tablePtr) tablePtr.p->minLoadFactor = 70; tablePtr.p->noOfPrimkey = 1; tablePtr.p->tupKeyLength = 1; + tablePtr.p->maxRowsLow = 0; + tablePtr.p->maxRowsHigh = 0; + tablePtr.p->minRowsLow = 0; + tablePtr.p->minRowsHigh = 0; tablePtr.p->storedTable = true; tablePtr.p->tableType = DictTabInfo::UserTable; tablePtr.p->primaryTableId = RNIL; @@ -4464,6 +4472,13 @@ Dbdict::execADD_FRAGREQ(Signal* signal) { Uint32 lhPageBits = 0; ::calcLHbits(&lhPageBits, &lhDistrBits, fragId, fragCount); + Uint64 maxRows = tabPtr.p->maxRowsLow + + (((Uint64)tabPtr.p->maxRowsHigh) << 32); + Uint64 minRows = tabPtr.p->minRowsLow + + (((Uint64)tabPtr.p->minRowsHigh) << 32); + maxRows = (maxRows + fragCount - 1) / fragCount; + minRows = (minRows + fragCount - 1) / fragCount; + { LqhFragReq* req = (LqhFragReq*)signal->getDataPtrSend(); req->senderData = senderData; @@ -4479,7 +4494,10 @@ Dbdict::execADD_FRAGREQ(Signal* signal) { req->lh3PageBits = 0; //lhPageBits; req->noOfAttributes = tabPtr.p->noOfAttributes; req->noOfNullAttributes = tabPtr.p->noOfNullBits; - req->noOfPagesToPreAllocate = 0; + req->maxRowsLow = maxRows & 0xFFFFFFFF; + req->maxRowsHigh = maxRows >> 32; + req->minRowsLow = minRows & 0xFFFFFFFF; + req->minRowsHigh = minRows >> 32; req->schemaVersion = tabPtr.p->tableVersion; Uint32 keyLen = tabPtr.p->tupKeyLength; req->keyLength = keyLen; // wl-2066 no more "long keys" @@ -4487,8 +4505,7 @@ Dbdict::execADD_FRAGREQ(Signal* signal) { req->noOfKeyAttr = tabPtr.p->noOfPrimkey; req->noOfNewAttr = 0; - // noOfCharsets passed to TUP in upper half - req->noOfNewAttr |= (tabPtr.p->noOfCharsets << 16); + req->noOfCharsets = tabPtr.p->noOfCharsets; req->checksumIndicator = 1; req->noOfAttributeGroups = 1; req->GCPIndicator = 0; @@ -5054,6 +5071,15 @@ void Dbdict::handleTabInfoInit(SimpleProperties::Reader & it, tablePtr.p->tableType = (DictTabInfo::TableType)tableDesc.TableType; tablePtr.p->kValue = tableDesc.TableKValue; tablePtr.p->fragmentCount = tableDesc.FragmentCount; + tablePtr.p->maxRowsLow = tableDesc.MaxRowsLow; + tablePtr.p->maxRowsHigh = tableDesc.MaxRowsHigh; + tablePtr.p->minRowsLow = tableDesc.MinRowsLow; + tablePtr.p->minRowsHigh = tableDesc.MinRowsHigh; + + Uint64 maxRows = + (((Uint64)tablePtr.p->maxRowsHigh) << 32) + tablePtr.p->maxRowsLow; + Uint64 minRows = + (((Uint64)tablePtr.p->minRowsHigh) << 32) + tablePtr.p->minRowsLow; tablePtr.p->frmLen = tableDesc.FrmLen; memcpy(tablePtr.p->frmData, tableDesc.FrmData, tableDesc.FrmLen); diff --git a/ndb/src/kernel/blocks/dbdict/Dbdict.hpp b/ndb/src/kernel/blocks/dbdict/Dbdict.hpp index 6b78fb86534..e4788898cc8 100644 --- a/ndb/src/kernel/blocks/dbdict/Dbdict.hpp +++ b/ndb/src/kernel/blocks/dbdict/Dbdict.hpp @@ -131,6 +131,10 @@ public: * on disk. Index trigger ids are volatile. */ struct TableRecord : public MetaData::Table { + Uint32 maxRowsLow; + Uint32 maxRowsHigh; + Uint32 minRowsLow; + Uint32 minRowsHigh; /**************************************************** * Support variables for table handling ****************************************************/ diff --git a/ndb/src/kernel/blocks/dblqh/Dblqh.hpp b/ndb/src/kernel/blocks/dblqh/Dblqh.hpp index 1ed383853ba..f8e6292f7f2 100644 --- a/ndb/src/kernel/blocks/dblqh/Dblqh.hpp +++ b/ndb/src/kernel/blocks/dblqh/Dblqh.hpp @@ -443,7 +443,6 @@ public: UintR dictConnectptr; UintR fragmentPtr; UintR nextAddfragrec; - UintR noOfAllocPages; UintR schemaVer; UintR tup1Connectptr; UintR tup2Connectptr; @@ -465,12 +464,17 @@ public: Uint16 totalAttrReceived; Uint16 fragCopyCreation; Uint16 noOfKeyAttr; - Uint32 noOfNewAttr; // noOfCharsets in upper half + Uint16 noOfNewAttr; + Uint16 noOfCharsets; Uint16 noOfAttributeGroups; Uint16 lh3DistrBits; Uint16 tableType; Uint16 primaryTableId; - };// Size 108 bytes + Uint32 maxRowsLow; + Uint32 maxRowsHigh; + Uint32 minRowsLow; + Uint32 minRowsHigh; + };// Size 124 bytes typedef Ptr AddFragRecordPtr; /* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ */ diff --git a/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp b/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp index 56e93e6ee01..ecb67d04050 100644 --- a/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp +++ b/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp @@ -939,12 +939,16 @@ void Dblqh::execLQHFRAGREQ(Signal* signal) Uint8 tlh = req->lh3PageBits; Uint32 tnoOfAttr = req->noOfAttributes; Uint32 tnoOfNull = req->noOfNullAttributes; - Uint32 noOfAlloc = req->noOfPagesToPreAllocate; + Uint32 maxRowsLow = req->maxRowsLow; + Uint32 maxRowsHigh = req->maxRowsHigh; + Uint32 minRowsLow = req->minRowsLow; + Uint32 minRowsHigh = req->minRowsHigh; Uint32 tschemaVersion = req->schemaVersion; Uint32 ttupKeyLength = req->keyLength; Uint32 nextLcp = req->nextLCP; Uint32 noOfKeyAttr = req->noOfKeyAttr; Uint32 noOfNewAttr = req->noOfNewAttr; + Uint32 noOfCharsets = req->noOfCharsets; Uint32 checksumIndicator = req->checksumIndicator; Uint32 noOfAttributeGroups = req->noOfAttributeGroups; Uint32 gcpIndicator = req->GCPIndicator; @@ -1042,7 +1046,10 @@ void Dblqh::execLQHFRAGREQ(Signal* signal) addfragptr.p->m_senderAttrPtr = RNIL; addfragptr.p->noOfAttr = tnoOfAttr; addfragptr.p->noOfNull = tnoOfNull; - addfragptr.p->noOfAllocPages = noOfAlloc; + addfragptr.p->maxRowsLow = maxRowsLow; + addfragptr.p->maxRowsHigh = maxRowsHigh; + addfragptr.p->minRowsLow = minRowsLow; + addfragptr.p->minRowsHigh = minRowsHigh; addfragptr.p->tabId = tabptr.i; addfragptr.p->totalAttrReceived = 0; addfragptr.p->attrSentToTup = ZNIL;/* TO FIND PROGRAMMING ERRORS QUICKLY */ @@ -1052,6 +1059,7 @@ void Dblqh::execLQHFRAGREQ(Signal* signal) addfragptr.p->addfragErrorCode = 0; addfragptr.p->noOfKeyAttr = noOfKeyAttr; addfragptr.p->noOfNewAttr = noOfNewAttr; + addfragptr.p->noOfCharsets = noOfCharsets; addfragptr.p->checksumIndicator = checksumIndicator; addfragptr.p->noOfAttributeGroups = noOfAttributeGroups; addfragptr.p->GCPIndicator = gcpIndicator; @@ -1221,47 +1229,56 @@ Dblqh::sendAddFragReq(Signal* signal) ptrCheckGuard(fragptr, cfragrecFileSize, fragrecord); if (addfragptr.p->addfragStatus == AddFragRecord::WAIT_TWO_TUP || addfragptr.p->addfragStatus == AddFragRecord::WAIT_ONE_TUP) { + TupFragReq* const tupFragReq = (TupFragReq*)signal->getDataPtrSend(); if (DictTabInfo::isTable(addfragptr.p->tableType) || DictTabInfo::isHashIndex(addfragptr.p->tableType)) { jam(); - signal->theData[0] = addfragptr.i; - signal->theData[1] = cownref; - signal->theData[2] = 0; /* ADD TABLE */ - signal->theData[3] = addfragptr.p->tabId; - signal->theData[4] = addfragptr.p->noOfAttr; - signal->theData[5] = + tupFragReq->userPtr = addfragptr.i; + tupFragReq->userRef = cownref; + tupFragReq->reqInfo = 0; /* ADD TABLE */ + tupFragReq->tableId = addfragptr.p->tabId; + tupFragReq->noOfAttr = addfragptr.p->noOfAttr; + tupFragReq->fragId = addfragptr.p->addfragStatus == AddFragRecord::WAIT_TWO_TUP ? addfragptr.p->fragid1 : addfragptr.p->fragid2; - signal->theData[6] = (addfragptr.p->noOfAllocPages >> 1) + 1; - signal->theData[7] = addfragptr.p->noOfNull; - signal->theData[8] = addfragptr.p->schemaVer; - signal->theData[9] = addfragptr.p->noOfKeyAttr; - signal->theData[10] = addfragptr.p->noOfNewAttr; - signal->theData[11] = addfragptr.p->checksumIndicator; - signal->theData[12] = addfragptr.p->noOfAttributeGroups; - signal->theData[13] = addfragptr.p->GCPIndicator; + tupFragReq->maxRowsLow = addfragptr.p->maxRowsLow; + tupFragReq->maxRowsHigh = addfragptr.p->maxRowsHigh; + tupFragReq->minRowsLow = addfragptr.p->minRowsLow; + tupFragReq->minRowsHigh = addfragptr.p->minRowsHigh; + tupFragReq->noOfNullAttr = addfragptr.p->noOfNull; + tupFragReq->schemaVersion = addfragptr.p->schemaVer; + tupFragReq->noOfKeyAttr = addfragptr.p->noOfKeyAttr; + tupFragReq->noOfNewAttr = addfragptr.p->noOfNewAttr; + tupFragReq->noOfCharsets = addfragptr.p->noOfCharsets; + tupFragReq->checksumIndicator = addfragptr.p->checksumIndicator; + tupFragReq->noOfAttributeGroups = addfragptr.p->noOfAttributeGroups; + tupFragReq->globalCheckpointIdIndicator = addfragptr.p->GCPIndicator; sendSignal(fragptr.p->tupBlockref, GSN_TUPFRAGREQ, signal, TupFragReq::SignalLength, JBB); return; } if (DictTabInfo::isOrderedIndex(addfragptr.p->tableType)) { jam(); - signal->theData[0] = addfragptr.i; - signal->theData[1] = cownref; - signal->theData[2] = 0; /* ADD TABLE */ - signal->theData[3] = addfragptr.p->tabId; - signal->theData[4] = 1; /* ordered index: one array attr */ - signal->theData[5] = + tupFragReq->userPtr = addfragptr.i; + tupFragReq->userRef = cownref; + tupFragReq->reqInfo = 0; /* ADD TABLE */ + tupFragReq->tableId = addfragptr.p->tabId; + tupFragReq->noOfAttr = 1; /* ordered index: one array attr */ + tupFragReq->fragId = addfragptr.p->addfragStatus == AddFragRecord::WAIT_TWO_TUP ? addfragptr.p->fragid1 : addfragptr.p->fragid2; - signal->theData[6] = (addfragptr.p->noOfAllocPages >> 1) + 1; - signal->theData[7] = 0; /* ordered index: no nullable */ - signal->theData[8] = addfragptr.p->schemaVer; - signal->theData[9] = 1; /* ordered index: one key */ - signal->theData[10] = addfragptr.p->noOfNewAttr; - signal->theData[11] = addfragptr.p->checksumIndicator; - signal->theData[12] = addfragptr.p->noOfAttributeGroups; - signal->theData[13] = addfragptr.p->GCPIndicator; + tupFragReq->maxRowsLow = addfragptr.p->maxRowsLow; + tupFragReq->maxRowsHigh = addfragptr.p->maxRowsHigh; + tupFragReq->minRowsLow = addfragptr.p->minRowsLow; + tupFragReq->minRowsHigh = addfragptr.p->minRowsHigh; + tupFragReq->noOfNullAttr = 0; /* ordered index: no nullable */ + tupFragReq->schemaVersion = addfragptr.p->schemaVer; + tupFragReq->noOfKeyAttr = 1; /* ordered index: one key */ + tupFragReq->noOfNewAttr = addfragptr.p->noOfNewAttr; + tupFragReq->noOfCharsets = addfragptr.p->noOfCharsets; + tupFragReq->checksumIndicator = addfragptr.p->checksumIndicator; + tupFragReq->noOfAttributeGroups = addfragptr.p->noOfAttributeGroups; + tupFragReq->globalCheckpointIdIndicator = addfragptr.p->GCPIndicator; sendSignal(fragptr.p->tupBlockref, GSN_TUPFRAGREQ, signal, TupFragReq::SignalLength, JBB); return; @@ -1580,28 +1597,35 @@ void Dblqh::abortAddFragOps(Signal* signal) { fragptr.i = addfragptr.p->fragmentPtr; ptrCheckGuard(fragptr, cfragrecFileSize, fragrecord); - signal->theData[0] = (Uint32)-1; if (addfragptr.p->tup1Connectptr != RNIL) { jam(); - signal->theData[1] = addfragptr.p->tup1Connectptr; + TupFragReq* const tupFragReq = (TupFragReq*)signal->getDataPtrSend(); + tupFragReq->userPtr = (Uint32)-1; + tupFragReq->userRef = addfragptr.p->tup1Connectptr; sendSignal(fragptr.p->tupBlockref, GSN_TUPFRAGREQ, signal, 2, JBB); addfragptr.p->tup1Connectptr = RNIL; } if (addfragptr.p->tup2Connectptr != RNIL) { jam(); - signal->theData[1] = addfragptr.p->tup2Connectptr; + TupFragReq* const tupFragReq = (TupFragReq*)signal->getDataPtrSend(); + tupFragReq->userPtr = (Uint32)-1; + tupFragReq->userRef = addfragptr.p->tup2Connectptr; sendSignal(fragptr.p->tupBlockref, GSN_TUPFRAGREQ, signal, 2, JBB); addfragptr.p->tup2Connectptr = RNIL; } if (addfragptr.p->tux1Connectptr != RNIL) { jam(); - signal->theData[1] = addfragptr.p->tux1Connectptr; + TuxFragReq* const tuxFragReq = (TuxFragReq*)signal->getDataPtrSend(); + tuxFragReq->userPtr = (Uint32)-1; + tuxFragReq->userRef = addfragptr.p->tux1Connectptr; sendSignal(fragptr.p->tuxBlockref, GSN_TUXFRAGREQ, signal, 2, JBB); addfragptr.p->tux1Connectptr = RNIL; } if (addfragptr.p->tux2Connectptr != RNIL) { jam(); - signal->theData[1] = addfragptr.p->tux2Connectptr; + TuxFragReq* const tuxFragReq = (TuxFragReq*)signal->getDataPtrSend(); + tuxFragReq->userPtr = (Uint32)-1; + tuxFragReq->userRef = addfragptr.p->tux2Connectptr; sendSignal(fragptr.p->tuxBlockref, GSN_TUXFRAGREQ, signal, 2, JBB); addfragptr.p->tux2Connectptr = RNIL; } diff --git a/ndb/src/kernel/blocks/dbtup/Dbtup.hpp b/ndb/src/kernel/blocks/dbtup/Dbtup.hpp index cf3c6056d65..41194fba82c 100644 --- a/ndb/src/kernel/blocks/dbtup/Dbtup.hpp +++ b/ndb/src/kernel/blocks/dbtup/Dbtup.hpp @@ -496,7 +496,8 @@ struct DiskBufferSegmentInfo { typedef Ptr DiskBufferSegmentInfoPtr; struct Fragoperrec { - bool definingFragment; + Uint64 minRows; + Uint64 maxRows; Uint32 nextFragoprec; Uint32 lqhPtrFrag; Uint32 fragidFrag; @@ -509,6 +510,7 @@ struct Fragoperrec { Uint32 charsetIndex; BlockReference lqhBlockrefFrag; bool inUse; + bool definingFragment; }; typedef Ptr FragoperrecPtr; @@ -560,6 +562,7 @@ struct Fragrecord { Uint32 currentPageRange; Uint32 rootPageRange; Uint32 noOfPages; + Uint32 noOfPagesToGrow; Uint32 emptyPrimPage; Uint32 firstusedOprec; diff --git a/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp b/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp index bacba2a880c..12cd61a17a6 100644 --- a/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp +++ b/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp @@ -41,7 +41,8 @@ void Dbtup::execTUPFRAGREQ(Signal* signal) { ljamEntry(); - if (signal->theData[0] == (Uint32)-1) { + TupFragReq* tupFragReq = (TupFragReq*)signal->getDataPtr(); + if (tupFragReq->userPtr == (Uint32)-1) { ljam(); abortAddFragOp(signal); return; @@ -51,30 +52,34 @@ void Dbtup::execTUPFRAGREQ(Signal* signal) FragrecordPtr regFragPtr; TablerecPtr regTabPtr; - Uint32 userptr = signal->theData[0]; - Uint32 userblockref = signal->theData[1]; - Uint32 reqinfo = signal->theData[2]; - regTabPtr.i = signal->theData[3]; - Uint32 noOfAttributes = signal->theData[4]; - Uint32 fragId = signal->theData[5]; - Uint32 noOfNullAttr = signal->theData[7]; - /* Uint32 schemaVersion = signal->theData[8];*/ - Uint32 noOfKeyAttr = signal->theData[9]; + Uint32 userptr = tupFragReq->userPtr; + Uint32 userblockref = tupFragReq->userRef; + Uint32 reqinfo = tupFragReq->reqInfo; + regTabPtr.i = tupFragReq->tableId; + Uint32 noOfAttributes = tupFragReq->noOfAttr; + Uint32 fragId = tupFragReq->fragId; + Uint32 noOfNullAttr = tupFragReq->noOfNullAttr; + /* Uint32 schemaVersion = tupFragReq->schemaVersion;*/ + Uint32 noOfKeyAttr = tupFragReq->noOfKeyAttr; - Uint32 noOfNewAttr = (signal->theData[10] & 0xFFFF); - /* DICT sends number of character sets in upper half */ - Uint32 noOfCharsets = (signal->theData[10] >> 16); + Uint32 noOfNewAttr = tupFragReq->noOfNewAttr; + Uint32 noOfCharsets = tupFragReq->noOfCharsets; - Uint32 checksumIndicator = signal->theData[11]; - Uint32 noOfAttributeGroups = signal->theData[12]; - Uint32 globalCheckpointIdIndicator = signal->theData[13]; + Uint32 checksumIndicator = tupFragReq->checksumIndicator; + Uint32 noOfAttributeGroups = tupFragReq->noOfAttributeGroups; + Uint32 globalCheckpointIdIndicator = tupFragReq->globalCheckpointIdIndicator; + + Uint64 maxRows = + (((Uint64)tupFragReq->maxRowsHigh) << 32) + tupFragReq->maxRowsLow; + Uint64 minRows = + (((Uint64)tupFragReq->minRowsHigh) << 32) + tupFragReq->minRowsLow; #ifndef VM_TRACE // config mismatch - do not crash if release compiled if (regTabPtr.i >= cnoOfTablerec) { ljam(); - signal->theData[0] = userptr; - signal->theData[1] = 800; + tupFragReq->userPtr = userptr; + tupFragReq->userRef = 800; sendSignal(userblockref, GSN_TUPFRAGREF, signal, 2, JBB); return; } @@ -83,8 +88,8 @@ void Dbtup::execTUPFRAGREQ(Signal* signal) ptrCheckGuard(regTabPtr, cnoOfTablerec, tablerec); if (cfirstfreeFragopr == RNIL) { ljam(); - signal->theData[0] = userptr; - signal->theData[1] = ZNOFREE_FRAGOP_ERROR; + tupFragReq->userPtr = userptr; + tupFragReq->userRef = ZNOFREE_FRAGOP_ERROR; sendSignal(userblockref, GSN_TUPFRAGREF, signal, 2, JBB); return; }//if @@ -100,6 +105,9 @@ void Dbtup::execTUPFRAGREQ(Signal* signal) fragOperPtr.p->noOfNewAttrCount = noOfNewAttr; fragOperPtr.p->charsetIndex = 0; fragOperPtr.p->currNullBit = 0; + // remove in 5.1, 2 fragments per fragment in 5.0 + fragOperPtr.p->minRows = (minRows + 1)/2; + fragOperPtr.p->maxRows = (maxRows + 1)/2; ndbrequire(reqinfo == ZADDFRAG); @@ -141,16 +149,6 @@ void Dbtup::execTUPFRAGREQ(Signal* signal) regFragPtr.p->fragmentId = fragId; regFragPtr.p->checkpointVersion = RNIL; - Uint32 noAllocatedPages = 2; - noAllocatedPages = allocFragPages(regFragPtr.p, noAllocatedPages); - - if (noAllocatedPages == 0) { - ljam(); - terrorCode = ZNO_PAGES_ALLOCATED_ERROR; - fragrefuse3Lab(signal, fragOperPtr, regFragPtr, regTabPtr.p, fragId); - return; - }//if - if (ERROR_INSERTED(4007) && regTabPtr.p->fragid[0] == fragId || ERROR_INSERTED(4008) && regTabPtr.p->fragid[1] == fragId) { ljam(); @@ -407,6 +405,27 @@ void Dbtup::execTUP_ADD_ATTRREQ(Signal* signal) CLEAR_ERROR_INSERT_VALUE; return; } + + if (lastAttr) + { + ljam(); + Uint32 noRowsPerPage = ZWORDS_ON_PAGE/regTabPtr.p->tupheadsize; + Uint32 noAllocatedPages = + (fragOperPtr.p->minRows + noRowsPerPage - 1 )/ noRowsPerPage; + if (fragOperPtr.p->minRows == 0) + noAllocatedPages = 2; + else if (noAllocatedPages == 0) + noAllocatedPages = 2; + noAllocatedPages = allocFragPages(regFragPtr.p, noAllocatedPages); + + if (noAllocatedPages == 0) { + ljam(); + terrorCode = ZNO_PAGES_ALLOCATED_ERROR; + addattrrefuseLab(signal, regFragPtr, fragOperPtr, regTabPtr.p, fragId); + return; + }//if + } + /* **************************************************************** */ /* ************** TUP_ADD_ATTCONF ****************** */ /* **************************************************************** */ diff --git a/ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp b/ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp index 1f674876642..acdb73704cb 100644 --- a/ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp +++ b/ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp @@ -332,6 +332,7 @@ void Dbtup::initFragRange(Fragrecord* const regFragPtr) regFragPtr->rootPageRange = RNIL; regFragPtr->currentPageRange = RNIL; regFragPtr->noOfPages = 0; + regFragPtr->noOfPagesToGrow = 2; regFragPtr->nextStartRange = 0; }//initFragRange() @@ -393,9 +394,10 @@ Uint32 Dbtup::allocFragPages(Fragrecord* const regFragPtr, Uint32 tafpNoAllocReq void Dbtup::allocMoreFragPages(Fragrecord* const regFragPtr) { - Uint32 noAllocPages = regFragPtr->noOfPages >> 3; // 12.5% - noAllocPages += regFragPtr->noOfPages >> 4; // 6.25% + Uint32 noAllocPages = regFragPtr->noOfPagesToGrow >> 3; // 12.5% + noAllocPages += regFragPtr->noOfPagesToGrow >> 4; // 6.25% noAllocPages += 2; + regFragPtr->noOfPagesToGrow += noAllocPages; /* -----------------------------------------------------------------*/ // We will grow by 18.75% plus two more additional pages to grow // a little bit quicker in the beginning. diff --git a/ndb/src/mgmsrv/MgmtSrvr.cpp b/ndb/src/mgmsrv/MgmtSrvr.cpp index b9466ed1173..69c0286a1de 100644 --- a/ndb/src/mgmsrv/MgmtSrvr.cpp +++ b/ndb/src/mgmsrv/MgmtSrvr.cpp @@ -2380,14 +2380,20 @@ MgmtSrvr::startBackup(Uint32& backupId, int waitCompleted) event.Event = BackupEvent::BackupCompleted; event.Completed.BackupId = rep->backupId; - event.Completed.NoOfBytes = rep->noOfBytes; + event.Completed.NoOfBytes = rep->noOfBytesLow; event.Completed.NoOfLogBytes = rep->noOfLogBytes; - event.Completed.NoOfRecords = rep->noOfRecords; + event.Completed.NoOfRecords = rep->noOfRecordsLow; event.Completed.NoOfLogRecords = rep->noOfLogRecords; event.Completed.stopGCP = rep->stopGCP; event.Completed.startGCP = rep->startGCP; event.Nodes = rep->nodes; + if (signal->header.theLength >= BackupCompleteRep::SignalLength) + { + event.Completed.NoOfBytes += ((Uint64)rep->noOfBytesHigh) << 32; + event.Completed.NoOfRecords += ((Uint64)rep->noOfRecordsHigh) << 32; + } + backupId = rep->backupId; return 0; } diff --git a/ndb/src/mgmsrv/MgmtSrvr.hpp b/ndb/src/mgmsrv/MgmtSrvr.hpp index 7811cf0e5d1..187f225470a 100644 --- a/ndb/src/mgmsrv/MgmtSrvr.hpp +++ b/ndb/src/mgmsrv/MgmtSrvr.hpp @@ -323,9 +323,9 @@ public: Uint32 ErrorCode; } FailedToStart ; struct { + Uint64 NoOfBytes; + Uint64 NoOfRecords; Uint32 BackupId; - Uint32 NoOfBytes; - Uint32 NoOfRecords; Uint32 NoOfLogBytes; Uint32 NoOfLogRecords; Uint32 startGCP; diff --git a/ndb/src/ndbapi/NdbDictionary.cpp b/ndb/src/ndbapi/NdbDictionary.cpp index a342a5d5926..a0a3dd431b8 100644 --- a/ndb/src/ndbapi/NdbDictionary.cpp +++ b/ndb/src/ndbapi/NdbDictionary.cpp @@ -385,6 +385,30 @@ NdbDictionary::Table::getNoOfPrimaryKeys() const { return m_impl.m_noOfKeys; } +void +NdbDictionary::Table::setMaxRows(Uint64 maxRows) +{ + m_impl.m_max_rows = maxRows; +} + +Uint64 +NdbDictionary::Table::getMaxRows() const +{ + return m_impl.m_max_rows; +} + +void +NdbDictionary::Table::setMinRows(Uint64 minRows) +{ + m_impl.m_min_rows = minRows; +} + +Uint64 +NdbDictionary::Table::getMinRows() const +{ + return m_impl.m_min_rows; +} + const char* NdbDictionary::Table::getPrimaryKey(int no) const { int count = 0; diff --git a/ndb/src/ndbapi/NdbDictionaryImpl.cpp b/ndb/src/ndbapi/NdbDictionaryImpl.cpp index bd50440b3c0..ce348b616c9 100644 --- a/ndb/src/ndbapi/NdbDictionaryImpl.cpp +++ b/ndb/src/ndbapi/NdbDictionaryImpl.cpp @@ -319,6 +319,8 @@ NdbTableImpl::init(){ m_noOfDistributionKeys= 0; m_noOfBlobs= 0; m_replicaCount= 0; + m_min_rows = 0; + m_max_rows = 0; } bool @@ -416,6 +418,9 @@ NdbTableImpl::assign(const NdbTableImpl& org) m_version = org.m_version; m_status = org.m_status; + + m_max_rows = org.m_max_rows; + m_min_rows = org.m_min_rows; } void NdbTableImpl::setName(const char * name) @@ -1302,6 +1307,12 @@ NdbDictInterface::parseTableInfo(NdbTableImpl ** ret, fragmentTypeMapping, (Uint32)NdbDictionary::Object::FragUndefined); + Uint64 max_rows = ((Uint64)tableDesc.MaxRowsHigh) << 32; + max_rows += tableDesc.MaxRowsLow; + impl->m_max_rows = max_rows; + Uint64 min_rows = ((Uint64)tableDesc.MinRowsHigh) << 32; + min_rows += tableDesc.MinRowsLow; + impl->m_min_rows = min_rows; impl->m_logging = tableDesc.TableLoggedFlag; impl->m_kvalue = tableDesc.TableKValue; impl->m_minLoadFactor = tableDesc.MinLoadFactor; @@ -1630,7 +1641,16 @@ NdbDictInterface::createOrAlterTable(Ndb & ndb, tmpTab.MaxLoadFactor = impl.m_maxLoadFactor; tmpTab.TableType = DictTabInfo::UserTable; tmpTab.NoOfAttributes = sz; + tmpTab.MaxRowsHigh = (Uint32)(impl.m_max_rows >> 32); + tmpTab.MaxRowsLow = (Uint32)(impl.m_max_rows & 0xFFFFFFFF); + tmpTab.MinRowsHigh = (Uint32)(impl.m_min_rows >> 32); + tmpTab.MinRowsLow = (Uint32)(impl.m_min_rows & 0xFFFFFFFF); + Uint64 maxRows = + (((Uint64)tmpTab.MaxRowsHigh) << 32) + tmpTab.MaxRowsLow; + Uint64 minRows = + (((Uint64)tmpTab.MinRowsHigh) << 32) + tmpTab.MinRowsLow; + tmpTab.FragmentType = getKernelConstant(impl.m_fragmentType, fragmentTypeMapping, DictTabInfo::AllNodesSmallTable); diff --git a/ndb/src/ndbapi/NdbDictionaryImpl.hpp b/ndb/src/ndbapi/NdbDictionaryImpl.hpp index bc9894497f8..dfccf120228 100644 --- a/ndb/src/ndbapi/NdbDictionaryImpl.hpp +++ b/ndb/src/ndbapi/NdbDictionaryImpl.hpp @@ -130,6 +130,9 @@ public: Uint32 m_hashpointerValue; Vector m_fragments; + Uint64 m_max_rows; + Uint64 m_min_rows; + bool m_logging; int m_kvalue; int m_minLoadFactor; diff --git a/ndb/tools/restore/Restore.cpp b/ndb/tools/restore/Restore.cpp index 6ac06f8a6f8..a808a48b558 100644 --- a/ndb/tools/restore/Restore.cpp +++ b/ndb/tools/restore/Restore.cpp @@ -80,7 +80,12 @@ RestoreMetaData::RestoreMetaData(const char* path, Uint32 nodeId, Uint32 bNo) { RestoreMetaData::~RestoreMetaData(){ for(Uint32 i= 0; i < allTables.size(); i++) - delete allTables[i]; + { + TableS *table = allTables[i]; + for(Uint32 j= 0; j < table->m_fragmentInfo.size(); j++) + delete table->m_fragmentInfo[j]; + delete table; + } allTables.clear(); } @@ -111,6 +116,9 @@ RestoreMetaData::loadContent() } if(!readGCPEntry()) return 0; + + if(!readFragmentInfo()) + return 0; return 1; } @@ -192,6 +200,52 @@ RestoreMetaData::readGCPEntry() { return true; } +bool +RestoreMetaData::readFragmentInfo() +{ + BackupFormat::CtlFile::FragmentInfo fragInfo; + TableS * table = 0; + Uint32 tableId = RNIL; + + while (buffer_read(&fragInfo, 4, 2) == 2) + { + fragInfo.SectionType = ntohl(fragInfo.SectionType); + fragInfo.SectionLength = ntohl(fragInfo.SectionLength); + + if (fragInfo.SectionType != BackupFormat::FRAGMENT_INFO) + { + err << "readFragmentInfo invalid section type: " << + fragInfo.SectionType << endl; + return false; + } + + if (buffer_read(&fragInfo.TableId, (fragInfo.SectionLength-2)*4, 1) != 1) + { + err << "readFragmentInfo invalid section length: " << + fragInfo.SectionLength << endl; + return false; + } + + fragInfo.TableId = ntohl(fragInfo.TableId); + if (fragInfo.TableId != tableId) + { + tableId = fragInfo.TableId; + table = getTable(tableId); + } + + FragmentInfo * tmp = new FragmentInfo; + tmp->fragmentNo = ntohl(fragInfo.FragmentNo); + tmp->noOfRecords = ntohl(fragInfo.NoOfRecordsLow) + + (((Uint64)ntohl(fragInfo.NoOfRecordsHigh)) << 32); + tmp->filePosLow = ntohl(fragInfo.FilePosLow); + tmp->filePosHigh = ntohl(fragInfo.FilePosHigh); + + table->m_fragmentInfo.push_back(tmp); + table->m_noOfRecords += tmp->noOfRecords; + } + return true; +} + TableS::TableS(Uint32 version, NdbTableImpl* tableImpl) : m_dictTable(tableImpl) { @@ -199,6 +253,7 @@ TableS::TableS(Uint32 version, NdbTableImpl* tableImpl) m_noOfNullable = m_nullBitmaskSize = 0; m_auto_val_id= ~(Uint32)0; m_max_auto_val= 0; + m_noOfRecords= 0; backupVersion = version; for (int i = 0; i < tableImpl->getNoOfColumns(); i++) @@ -937,4 +992,5 @@ operator<<(NdbOut& ndbout, const TableS & table){ template class Vector; template class Vector; template class Vector; +template class Vector; diff --git a/ndb/tools/restore/Restore.hpp b/ndb/tools/restore/Restore.hpp index 85793baf9df..cf8feb7125c 100644 --- a/ndb/tools/restore/Restore.hpp +++ b/ndb/tools/restore/Restore.hpp @@ -114,6 +114,14 @@ public: AttributeData * getData(int i) const; }; // class TupleS +struct FragmentInfo +{ + Uint32 fragmentNo; + Uint64 noOfRecords; + Uint32 filePosLow; + Uint32 filePosHigh; +}; + class TableS { friend class TupleS; @@ -136,6 +144,9 @@ class TableS { int pos; + Uint64 m_noOfRecords; + Vector m_fragmentInfo; + void createAttr(NdbDictionary::Column *column); public: @@ -146,6 +157,9 @@ public: Uint32 getTableId() const { return m_dictTable->getTableId(); } + Uint32 getNoOfRecords() const { + return m_noOfRecords; + } /* void setMysqlTableName(char * tableName) { strpcpy(mysqlTableName, tableName); @@ -274,6 +288,7 @@ class RestoreMetaData : public BackupFile { bool readMetaTableDesc(); bool readGCPEntry(); + bool readFragmentInfo(); Uint32 readMetaTableList(); Uint32 m_startGCP; diff --git a/ndb/tools/restore/consumer_restore.cpp b/ndb/tools/restore/consumer_restore.cpp index d62ca3f610a..bff63c28716 100644 --- a/ndb/tools/restore/consumer_restore.cpp +++ b/ndb/tools/restore/consumer_restore.cpp @@ -193,6 +193,16 @@ BackupRestore::table(const TableS & table){ copy.setName(split[2].c_str()); + /* + update min and max rows to reflect the table, this to + ensure that memory is allocated properly in the ndb kernel + */ + copy.setMinRows(table.getNoOfRecords()); + if (table.getNoOfRecords() > copy.getMaxRows()) + { + copy.setMaxRows(table.getNoOfRecords()); + } + if (dict->createTable(copy) == -1) { err << "Create table " << table.getTableName() << " failed: " diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 98dd9d5a122..d59eb4d4f77 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -4111,7 +4111,11 @@ static int create_ndb_column(NDBCOL &col, static void ndb_set_fragmentation(NDBTAB &tab, TABLE *form, uint pk_length) { - if (form->s->max_rows == (ha_rows) 0) /* default setting, don't set fragmentation */ + ha_rows max_rows= form->s->max_rows; + ha_rows min_rows= form->s->min_rows; + if (max_rows < min_rows) + max_rows= min_rows; + if (max_rows == (ha_rows)0) /* default setting, don't set fragmentation */ return; /** * get the number of fragments right @@ -4129,7 +4133,6 @@ static void ndb_set_fragmentation(NDBTAB &tab, TABLE *form, uint pk_length) acc_row_size+= 4 + /*safety margin*/ 4; #endif ulonglong acc_fragment_size= 512*1024*1024; - ulonglong max_rows= form->s->max_rows; #if MYSQL_VERSION_ID >= 50100 no_fragments= (max_rows*acc_row_size)/acc_fragment_size+1; #else @@ -4153,6 +4156,9 @@ static void ndb_set_fragmentation(NDBTAB &tab, TABLE *form, uint pk_length) ftype= NDBTAB::FragAllSmall; tab.setFragmentType(ftype); } + tab.setMaxRows(max_rows); + tab.setMinRows(min_rows); + fprintf(stderr, "max/min %llu %llu\n", max_rows, min_rows); } int ha_ndbcluster::create(const char *name, -- cgit v1.2.1 From d2da3c9685d1105f7e021c9b05b2b0248135a897 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 27 Jun 2006 11:26:00 +0200 Subject: Bug #19852 Restoring backup made from cluster with full data memory fails - correction of previous patch --- ndb/include/kernel/GlobalSignalNumbers.h | 4 ++-- ndb/include/kernel/signaldata/DictTabInfo.hpp | 2 +- sql/ha_ndbcluster.cc | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/ndb/include/kernel/GlobalSignalNumbers.h b/ndb/include/kernel/GlobalSignalNumbers.h index a84f3130abf..fcb0a87020f 100644 --- a/ndb/include/kernel/GlobalSignalNumbers.h +++ b/ndb/include/kernel/GlobalSignalNumbers.h @@ -680,7 +680,7 @@ extern const GlobalSignalNumber NO_OF_SIGNAL_NAMES; #define GSN_BACKUP_FRAGMENT_REF 546 #define GSN_BACKUP_FRAGMENT_CONF 547 -#define GSN_BACKUP_FRAGMENT_COMPLETE_REP 502 +#define GSN_BACKUP_FRAGMENT_COMPLETE_REP 575 #define GSN_STOP_BACKUP_REQ 548 #define GSN_STOP_BACKUP_REF 549 @@ -731,7 +731,7 @@ extern const GlobalSignalNumber NO_OF_SIGNAL_NAMES; #define GSN_SUB_STOP_REQ 572 #define GSN_SUB_STOP_REF 573 #define GSN_SUB_STOP_CONF 574 -/* 575 unused */ +/* 575 used */ #define GSN_SUB_CREATE_REQ 576 #define GSN_SUB_CREATE_REF 577 #define GSN_SUB_CREATE_CONF 578 diff --git a/ndb/include/kernel/signaldata/DictTabInfo.hpp b/ndb/include/kernel/signaldata/DictTabInfo.hpp index 3fcae69aa74..0a7f6aa3fb3 100644 --- a/ndb/include/kernel/signaldata/DictTabInfo.hpp +++ b/ndb/include/kernel/signaldata/DictTabInfo.hpp @@ -124,7 +124,7 @@ public: MaxRowsLow = 139, MaxRowsHigh = 140, - MinRowsLow = 133, + MinRowsLow = 143, MinRowsHigh = 144, TableEnd = 999, diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index d59eb4d4f77..ced85d1a339 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -4158,7 +4158,6 @@ static void ndb_set_fragmentation(NDBTAB &tab, TABLE *form, uint pk_length) } tab.setMaxRows(max_rows); tab.setMinRows(min_rows); - fprintf(stderr, "max/min %llu %llu\n", max_rows, min_rows); } int ha_ndbcluster::create(const char *name, -- cgit v1.2.1 From f105602806c030f7a2252843986e048d35cb13f3 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 27 Jun 2006 11:41:00 +0200 Subject: ndb - bug#20252 allow user to specify scan batch size in readTuples ndb/include/ndbapi/NdbIndexScanOperation.hpp: Allow user to specify batch size ndb/include/ndbapi/NdbScanOperation.hpp: Allow user to specify batch size ndb/src/kernel/blocks/dblqh/DblqhMain.cpp: Fix so that last row works even if batch is complete ndb/src/ndbapi/NdbReceiver.cpp: Allow user yo specify batch size ndb/src/ndbapi/NdbScanOperation.cpp: Allow user to specify batchsize --- ndb/include/ndbapi/NdbIndexScanOperation.hpp | 6 ++++-- ndb/include/ndbapi/NdbScanOperation.hpp | 4 +++- ndb/src/kernel/blocks/dblqh/DblqhMain.cpp | 8 ++++---- ndb/src/ndbapi/NdbReceiver.cpp | 10 +++++++++- ndb/src/ndbapi/NdbScanOperation.cpp | 23 +++++++++++++++-------- 5 files changed, 35 insertions(+), 16 deletions(-) diff --git a/ndb/include/ndbapi/NdbIndexScanOperation.hpp b/ndb/include/ndbapi/NdbIndexScanOperation.hpp index e9f92d84d1c..e7393bdfd17 100644 --- a/ndb/include/ndbapi/NdbIndexScanOperation.hpp +++ b/ndb/include/ndbapi/NdbIndexScanOperation.hpp @@ -41,7 +41,9 @@ public: * @param parallel No of fragments to scan in parallel (0=max) */ virtual int readTuples(LockMode lock_mode = LM_Read, - Uint32 scan_flags = 0, Uint32 parallel = 0); + Uint32 scan_flags = 0, + Uint32 parallel = 0, + Uint32 batch = 0); #ifndef DOXYGEN_SHOULD_SKIP_INTERNAL /** @@ -66,7 +68,7 @@ public: (SF_OrderBy & -(Int32)order_by) | (SF_Descending & -(Int32)order_desc) | (SF_ReadRangeNo & -(Int32)read_range_no); - return readTuples(lock_mode, scan_flags, parallel); + return readTuples(lock_mode, scan_flags, parallel, batch); } #endif diff --git a/ndb/include/ndbapi/NdbScanOperation.hpp b/ndb/include/ndbapi/NdbScanOperation.hpp index 77b255dc2f4..2cab02c58a9 100644 --- a/ndb/include/ndbapi/NdbScanOperation.hpp +++ b/ndb/include/ndbapi/NdbScanOperation.hpp @@ -56,7 +56,9 @@ public: */ virtual int readTuples(LockMode lock_mode = LM_Read, - Uint32 scan_flags = 0, Uint32 parallel = 0); + Uint32 scan_flags = 0, + Uint32 parallel = 0, + Uint32 batch = 0); #ifndef DOXYGEN_SHOULD_SKIP_DEPRECATED /** diff --git a/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp b/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp index 19a003f00fc..c8fd440a150 100644 --- a/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp +++ b/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp @@ -7349,15 +7349,15 @@ void Dblqh::scanLockReleasedLab(Signal* signal) scanptr.p->m_curr_batch_size_rows = 0; scanptr.p->m_curr_batch_size_bytes = 0; closeScanLab(signal); + } else if (scanptr.p->m_last_row && !scanptr.p->scanLockHold) { + jam(); + closeScanLab(signal); + return; } else if (scanptr.p->check_scan_batch_completed() && scanptr.p->scanLockHold != ZTRUE) { jam(); scanptr.p->scanState = ScanRecord::WAIT_SCAN_NEXTREQ; sendScanFragConf(signal, ZFALSE); - } else if (scanptr.p->m_last_row && !scanptr.p->scanLockHold) { - jam(); - closeScanLab(signal); - return; } else { jam(); /* diff --git a/ndb/src/ndbapi/NdbReceiver.cpp b/ndb/src/ndbapi/NdbReceiver.cpp index df16ae66915..62119880076 100644 --- a/ndb/src/ndbapi/NdbReceiver.cpp +++ b/ndb/src/ndbapi/NdbReceiver.cpp @@ -121,7 +121,15 @@ NdbReceiver::calculate_batch_size(Uint32 key_size, * no more than MAX_SCAN_BATCH_SIZE is sent from all nodes in total per * batch. */ - batch_byte_size= max_batch_byte_size; + if (batch_size == 0) + { + batch_byte_size= max_batch_byte_size; + } + else + { + batch_byte_size= batch_size * tot_size; + } + if (batch_byte_size * parallelism > max_scan_batch_size) { batch_byte_size= max_scan_batch_size / parallelism; } diff --git a/ndb/src/ndbapi/NdbScanOperation.cpp b/ndb/src/ndbapi/NdbScanOperation.cpp index 869704c7bb3..f14b5409ce8 100644 --- a/ndb/src/ndbapi/NdbScanOperation.cpp +++ b/ndb/src/ndbapi/NdbScanOperation.cpp @@ -117,7 +117,8 @@ NdbScanOperation::init(const NdbTableImpl* tab, NdbTransaction* myConnection) int NdbScanOperation::readTuples(NdbScanOperation::LockMode lm, Uint32 scan_flags, - Uint32 parallel) + Uint32 parallel, + Uint32 batch) { m_ordered = m_descending = false; Uint32 fragCount = m_currentTable->m_fragmentCount; @@ -181,9 +182,12 @@ NdbScanOperation::readTuples(NdbScanOperation::LockMode lm, bool tupScan = (scan_flags & SF_TupScan); if (tupScan && rangeScan) tupScan = false; - - theParallelism = parallel; + if (rangeScan && (scan_flags & SF_OrderBy)) + parallel = fragCount; + + theParallelism = parallel; + if(fix_receivers(parallel) == -1){ setErrorCodeAbort(4000); return -1; @@ -202,6 +206,7 @@ NdbScanOperation::readTuples(NdbScanOperation::LockMode lm, req->tableSchemaVersion = m_accessTable->m_version; req->storedProcId = 0xFFFF; req->buddyConPtr = theNdbCon->theBuddyConPtr; + req->first_batch_size = batch; // Save user specified batch size Uint32 reqInfo = 0; ScanTabReq::setParallelism(reqInfo, parallel); @@ -750,13 +755,14 @@ int NdbScanOperation::prepareSendScan(Uint32 aTC_ConnectPtr, * The number of records sent by each LQH is calculated and the kernel * is informed of this number by updating the SCAN_TABREQ signal */ - Uint32 batch_size, batch_byte_size, first_batch_size; + ScanTabReq * req = CAST_PTR(ScanTabReq, theSCAN_TABREQ->getDataPtrSend()); + Uint32 batch_size = req->first_batch_size; // User specified + Uint32 batch_byte_size, first_batch_size; theReceiver.calculate_batch_size(key_size, theParallelism, batch_size, batch_byte_size, first_batch_size); - ScanTabReq * req = CAST_PTR(ScanTabReq, theSCAN_TABREQ->getDataPtrSend()); ScanTabReq::setScanBatch(req->requestInfo, batch_size); req->batch_byte_size= batch_byte_size; req->first_batch_size= first_batch_size; @@ -1206,13 +1212,14 @@ error: int NdbIndexScanOperation::readTuples(LockMode lm, Uint32 scan_flags, - Uint32 parallel) + Uint32 parallel, + Uint32 batch) { const bool order_by = scan_flags & SF_OrderBy; const bool order_desc = scan_flags & SF_Descending; const bool read_range_no = scan_flags & SF_ReadRangeNo; - - int res = NdbScanOperation::readTuples(lm, scan_flags, 0); + + int res = NdbScanOperation::readTuples(lm, scan_flags, parallel, batch); if(!res && read_range_no) { m_read_range_no = 1; -- cgit v1.2.1 From da70a12cb71eaacef99168a2bbc01fd54b970a8c Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 27 Jun 2006 13:12:34 +0200 Subject: Bug #19852 Restoring backup made from cluster with full data memory fails - post merge fixes for 5.1 --- .../ndb/include/kernel/signaldata/DictTabInfo.hpp | 2 - storage/ndb/include/kernel/signaldata/LqhFrag.hpp | 4 +- storage/ndb/include/kernel/signaldata/TupFrag.hpp | 6 +-- storage/ndb/include/ndbapi/NdbDictionary.hpp | 7 --- storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp | 5 +-- storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp | 2 - storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp | 8 +--- storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp | 50 ++++++++++------------ storage/ndb/src/ndbapi/NdbDictionary.cpp | 1 + storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp | 16 +++---- 10 files changed, 39 insertions(+), 62 deletions(-) diff --git a/storage/ndb/include/kernel/signaldata/DictTabInfo.hpp b/storage/ndb/include/kernel/signaldata/DictTabInfo.hpp index 08d05c4dca0..1382b09eabf 100644 --- a/storage/ndb/include/kernel/signaldata/DictTabInfo.hpp +++ b/storage/ndb/include/kernel/signaldata/DictTabInfo.hpp @@ -315,8 +315,6 @@ public: Uint32 CustomTriggerId; Uint32 TablespaceId; Uint32 TablespaceVersion; - Uint32 MaxRowsLow; - Uint32 MaxRowsHigh; Uint32 DefaultNoPartFlag; Uint32 LinearHashFlag; /* diff --git a/storage/ndb/include/kernel/signaldata/LqhFrag.hpp b/storage/ndb/include/kernel/signaldata/LqhFrag.hpp index 95e71187c2c..97481ea2c3e 100644 --- a/storage/ndb/include/kernel/signaldata/LqhFrag.hpp +++ b/storage/ndb/include/kernel/signaldata/LqhFrag.hpp @@ -123,9 +123,9 @@ private: Uint32 kValue; Uint32 schemaVersion; Uint32 nextLCP; - Uint16 noOfNewAttr; - Uint16 noOfCharsets; + Uint32 noOfCharsets; Uint32 startGci; + Uint32 tableType; // DictTabInfo::TableType Uint32 primaryTableId; // table of index or RNIL Uint32 tablespace_id; // RNIL for MM table Uint16 tableId; diff --git a/storage/ndb/include/kernel/signaldata/TupFrag.hpp b/storage/ndb/include/kernel/signaldata/TupFrag.hpp index fcba5f47feb..bc44877bb1c 100644 --- a/storage/ndb/include/kernel/signaldata/TupFrag.hpp +++ b/storage/ndb/include/kernel/signaldata/TupFrag.hpp @@ -30,7 +30,7 @@ class TupFragReq { friend class Dblqh; friend class Dbtup; public: - STATIC_CONST( SignalLength = 18 ); + STATIC_CONST( SignalLength = 17 ); private: Uint32 userPtr; Uint32 userRef; @@ -45,10 +45,8 @@ private: Uint32 noOfNullAttr; Uint32 schemaVersion; Uint32 noOfKeyAttr; - Uint16 noOfNewAttr; - Uint16 noOfCharsets; + Uint32 noOfCharsets; Uint32 checksumIndicator; - Uint32 noOfAttributeGroups; Uint32 globalCheckpointIdIndicator; Uint32 tablespaceid; }; diff --git a/storage/ndb/include/ndbapi/NdbDictionary.hpp b/storage/ndb/include/ndbapi/NdbDictionary.hpp index f61dfcbb709..6e572635247 100644 --- a/storage/ndb/include/ndbapi/NdbDictionary.hpp +++ b/storage/ndb/include/ndbapi/NdbDictionary.hpp @@ -830,13 +830,6 @@ public: */ virtual int getObjectVersion() const; - /** - * Set/Get Maximum number of rows in table (only used to calculate - * number of partitions). - */ - void setMaxRows(Uint64 maxRows); - Uint64 getMaxRows() const; - /** * Set/Get indicator if default number of partitions is used in table. */ diff --git a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp index 7be46ba2a07..99ca6884dd3 100644 --- a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp +++ b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp @@ -5362,7 +5362,6 @@ Dbdict::execADD_FRAGREQ(Signal* signal) { req->nextLCP = lcpNo; req->noOfKeyAttr = tabPtr.p->noOfPrimkey; - req->noOfNewAttr = 0; req->noOfCharsets = tabPtr.p->noOfCharsets; req->checksumIndicator = 1; req->GCPIndicator = 1; @@ -5984,8 +5983,8 @@ void Dbdict::handleTabInfoInit(SimpleProperties::Reader & it, tablePtr.p->m_tablespace_id = c_tableDesc.TablespaceId; tablePtr.p->maxRowsLow = c_tableDesc.MaxRowsLow; tablePtr.p->maxRowsHigh = c_tableDesc.MaxRowsHigh; - tablePtr.p->minRowsLow = tableDesc.MinRowsLow; - tablePtr.p->minRowsHigh = tableDesc.MinRowsHigh; + tablePtr.p->minRowsLow = c_tableDesc.MinRowsLow; + tablePtr.p->minRowsHigh = c_tableDesc.MinRowsHigh; tablePtr.p->defaultNoPartFlag = c_tableDesc.DefaultNoPartFlag; tablePtr.p->linearHashFlag = c_tableDesc.LinearHashFlag; diff --git a/storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp b/storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp index 1c29f87e27a..c1d4175833e 100644 --- a/storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp +++ b/storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp @@ -448,9 +448,7 @@ public: Uint16 totalAttrReceived; Uint16 fragCopyCreation; Uint16 noOfKeyAttr; - Uint16 noOfNewAttr; Uint16 noOfCharsets; - Uint16 noOfAttributeGroups; Uint16 lh3DistrBits; Uint16 tableType; Uint16 primaryTableId; diff --git a/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp b/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp index 373debadc9c..3b1f94473f5 100644 --- a/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp +++ b/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp @@ -1007,7 +1007,6 @@ void Dblqh::execLQHFRAGREQ(Signal* signal) Uint32 ttupKeyLength = req->keyLength; Uint32 nextLcp = req->nextLCP; Uint32 noOfKeyAttr = req->noOfKeyAttr; - Uint32 noOfNewAttr = req->noOfNewAttr; Uint32 noOfCharsets = req->noOfCharsets; Uint32 checksumIndicator = req->checksumIndicator; Uint32 gcpIndicator = req->GCPIndicator; @@ -1128,7 +1127,6 @@ void Dblqh::execLQHFRAGREQ(Signal* signal) addfragptr.p->fragCopyCreation = (tmp == 0 ? 0 : 1); addfragptr.p->addfragErrorCode = 0; addfragptr.p->noOfKeyAttr = noOfKeyAttr; - addfragptr.p->noOfNewAttr = noOfNewAttr; addfragptr.p->noOfCharsets = noOfCharsets; addfragptr.p->checksumIndicator = checksumIndicator; addfragptr.p->GCPIndicator = gcpIndicator; @@ -1282,12 +1280,10 @@ Dblqh::sendAddFragReq(Signal* signal) tupFragReq->noOfNullAttr = addfragptr.p->noOfNull; tupFragReq->schemaVersion = addfragptr.p->schemaVer; tupFragReq->noOfKeyAttr = addfragptr.p->noOfKeyAttr; - tupFragReq->noOfNewAttr = addfragptr.p->noOfNewAttr; tupFragReq->noOfCharsets = addfragptr.p->noOfCharsets; tupFragReq->checksumIndicator = addfragptr.p->checksumIndicator; - tupFragReq->noOfAttributeGroups = addfragptr.p->noOfAttributeGroups; tupFragReq->globalCheckpointIdIndicator = addfragptr.p->GCPIndicator; - tupFragReq->tablespaceId = addfragptr.p->tablespace_id; + tupFragReq->tablespaceid = addfragptr.p->tablespace_id; sendSignal(fragptr.p->tupBlockref, GSN_TUPFRAGREQ, signal, TupFragReq::SignalLength, JBB); return; @@ -1307,10 +1303,8 @@ Dblqh::sendAddFragReq(Signal* signal) tupFragReq->noOfNullAttr = 0; /* ordered index: no nullable */ tupFragReq->schemaVersion = addfragptr.p->schemaVer; tupFragReq->noOfKeyAttr = 1; /* ordered index: one key */ - tupFragReq->noOfNewAttr = addfragptr.p->noOfNewAttr; tupFragReq->noOfCharsets = addfragptr.p->noOfCharsets; tupFragReq->checksumIndicator = addfragptr.p->checksumIndicator; - tupFragReq->noOfAttributeGroups = addfragptr.p->noOfAttributeGroups; tupFragReq->globalCheckpointIdIndicator = addfragptr.p->GCPIndicator; sendSignal(fragptr.p->tupBlockref, GSN_TUPFRAGREQ, signal, TupFragReq::SignalLength, JBB); diff --git a/storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp b/storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp index 7fb53e1d824..a6842833dd8 100644 --- a/storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp +++ b/storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp @@ -53,19 +53,15 @@ void Dbtup::execTUPFRAGREQ(Signal* signal) Uint32 reqinfo = tupFragReq->reqInfo; regTabPtr.i = tupFragReq->tableId; Uint32 noOfAttributes = tupFragReq->noOfAttr; - Uint32 pages = tupFragReq->pages; Uint32 fragId = tupFragReq->fragId; Uint32 noOfNullAttr = tupFragReq->noOfNullAttr; /* Uint32 schemaVersion = tupFragReq->schemaVersion;*/ Uint32 noOfKeyAttr = tupFragReq->noOfKeyAttr; - - Uint32 noOfNewAttr = tupFragReq->noOfNewAttrREMOVE; Uint32 noOfCharsets = tupFragReq->noOfCharsets; Uint32 checksumIndicator = tupFragReq->checksumIndicator; - Uint32 noOfAttributeGroups = tupFragReq->noOfAttributeGroupsREMOVE; - Uint32 globalCheckpointIdIndicator = tupFragReq->globalCheckpointIdIndicator; - Uint32 tablespace= tupFragReq->tablespace; + Uint32 gcpIndicator = tupFragReq->globalCheckpointIdIndicator; + Uint32 tablespace_id= tupFragReq->tablespaceid; Uint64 maxRows = (((Uint64)tupFragReq->maxRowsHigh) << 32) + tupFragReq->maxRowsLow; @@ -144,7 +140,7 @@ void Dbtup::execTUPFRAGREQ(Signal* signal) regFragPtr.p->fragTableId= regTabPtr.i; regFragPtr.p->fragmentId= fragId; - regFragPtr.p->m_tablespace_id= tablespace; + regFragPtr.p->m_tablespace_id= tablespace_id; regFragPtr.p->m_undo_complete= false; regFragPtr.p->m_lcp_scan_op = RNIL; regFragPtr.p->m_lcp_keep_list = RNIL; @@ -423,26 +419,6 @@ void Dbtup::execTUP_ADD_ATTRREQ(Signal* signal) return; } - if (lastAttr) - { - ljam(); - Uint32 noRowsPerPage = ZWORDS_ON_PAGE/regTabPtr.p->tupheadsize; - Uint32 noAllocatedPages = - (fragOperPtr.p->minRows + noRowsPerPage - 1 )/ noRowsPerPage; - if (fragOperPtr.p->minRows == 0) - noAllocatedPages = 2; - else if (noAllocatedPages == 0) - noAllocatedPages = 2; - noAllocatedPages = allocFragPages(regFragPtr.p, noAllocatedPages); - - if (noAllocatedPages == 0) { - ljam(); - terrorCode = ZNO_PAGES_ALLOCATED_ERROR; - addattrrefuseLab(signal, regFragPtr, fragOperPtr, regTabPtr.p, fragId); - return; - }//if - } - /* **************************************************************** */ /* ************** TUP_ADD_ATTCONF ****************** */ /* **************************************************************** */ @@ -558,6 +534,26 @@ void Dbtup::execTUP_ADD_ATTRREQ(Signal* signal) } #endif + { + ndbrequire(regTabPtr.p->m_offsets[MM].m_fix_header_size > 0); + Uint32 noRowsPerPage = + ZWORDS_ON_PAGE/regTabPtr.p->m_offsets[MM].m_fix_header_size; + Uint32 noAllocatedPages = + (fragOperPtr.p->minRows + noRowsPerPage - 1 )/ noRowsPerPage; + if (fragOperPtr.p->minRows == 0) + noAllocatedPages = 2; + else if (noAllocatedPages == 0) + noAllocatedPages = 2; + noAllocatedPages = allocFragPages(regFragPtr.p, noAllocatedPages); + + if (noAllocatedPages == 0) { + ljam(); + terrorCode = ZNO_PAGES_ALLOCATED_ERROR; + addattrrefuseLab(signal, regFragPtr, fragOperPtr, regTabPtr.p, fragId); + return; + }//if + } + CreateFilegroupImplReq rep; if(regTabPtr.p->m_no_of_disk_attributes) { diff --git a/storage/ndb/src/ndbapi/NdbDictionary.cpp b/storage/ndb/src/ndbapi/NdbDictionary.cpp index 96cf3f0ad75..b7df3037c34 100644 --- a/storage/ndb/src/ndbapi/NdbDictionary.cpp +++ b/storage/ndb/src/ndbapi/NdbDictionary.cpp @@ -451,6 +451,7 @@ NdbDictionary::Table::getMaxRows() const return m_impl.m_max_rows; } +void NdbDictionary::Table::setMinRows(Uint64 minRows) { m_impl.m_min_rows = minRows; diff --git a/storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp b/storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp index 1329cb2afb1..1e33a843a42 100644 --- a/storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp +++ b/storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp @@ -2067,11 +2067,11 @@ NdbDictInterface::parseTableInfo(NdbTableImpl ** ret, fragmentTypeMapping, (Uint32)NdbDictionary::Object::FragUndefined); - Uint64 max_rows = ((Uint64)tableDesc.MaxRowsHigh) << 32; - max_rows += tableDesc.MaxRowsLow; + Uint64 max_rows = ((Uint64)tableDesc->MaxRowsHigh) << 32; + max_rows += tableDesc->MaxRowsLow; impl->m_max_rows = max_rows; - Uint64 min_rows = ((Uint64)tableDesc.MinRowsHigh) << 32; - min_rows += tableDesc.MinRowsLow; + Uint64 min_rows = ((Uint64)tableDesc->MinRowsHigh) << 32; + min_rows += tableDesc->MinRowsLow; impl->m_min_rows = min_rows; impl->m_default_no_part_flag = tableDesc->DefaultNoPartFlag; impl->m_linear_flag = tableDesc->LinearHashFlag; @@ -2526,10 +2526,10 @@ NdbDictInterface::createOrAlterTable(Ndb & ndb, tmpTab->TableType = DictTabInfo::UserTable; tmpTab->PrimaryTableId = impl.m_primaryTableId; tmpTab->NoOfAttributes = sz; - tmpTab.MaxRowsHigh = (Uint32)(impl.m_max_rows >> 32); - tmpTab.MaxRowsLow = (Uint32)(impl.m_max_rows & 0xFFFFFFFF); - tmpTab.MinRowsHigh = (Uint32)(impl.m_min_rows >> 32); - tmpTab.MinRowsLow = (Uint32)(impl.m_min_rows & 0xFFFFFFFF); + tmpTab->MaxRowsHigh = (Uint32)(impl.m_max_rows >> 32); + tmpTab->MaxRowsLow = (Uint32)(impl.m_max_rows & 0xFFFFFFFF); + tmpTab->MinRowsHigh = (Uint32)(impl.m_min_rows >> 32); + tmpTab->MinRowsLow = (Uint32)(impl.m_min_rows & 0xFFFFFFFF); tmpTab->DefaultNoPartFlag = impl.m_default_no_part_flag; tmpTab->LinearHashFlag = impl.m_linear_flag; -- cgit v1.2.1 From 39fa14dd7d0619278d01565a964323120d3ac606 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 27 Jun 2006 13:40:33 +0200 Subject: Bug #19852 Restoring backup made from cluster with full data memory fails - post merge fixes for 5.1 --- storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp b/storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp index a6842833dd8..88845a6ef64 100644 --- a/storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp +++ b/storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp @@ -535,9 +535,11 @@ void Dbtup::execTUP_ADD_ATTRREQ(Signal* signal) #endif { - ndbrequire(regTabPtr.p->m_offsets[MM].m_fix_header_size > 0); - Uint32 noRowsPerPage = - ZWORDS_ON_PAGE/regTabPtr.p->m_offsets[MM].m_fix_header_size; + Uint32 fix_tupheader = regTabPtr.p->m_offsets[MM].m_fix_header_size; + if(regTabPtr.p->m_attributes[MM].m_no_of_varsize != 0) + fix_tupheader += Tuple_header::HeaderSize + 1; + ndbassert(fix_tupheader > 0); + Uint32 noRowsPerPage = ZWORDS_ON_PAGE / fix_tupheader; Uint32 noAllocatedPages = (fragOperPtr.p->minRows + noRowsPerPage - 1 )/ noRowsPerPage; if (fragOperPtr.p->minRows == 0) -- cgit v1.2.1 From d4cb502ce7e75df028243a4f01e3dab24a1a3e10 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 27 Jun 2006 14:31:34 +0200 Subject: changed signature of get_default_no_partitions --- sql/ha_ndbcluster.cc | 10 +++++++--- sql/ha_ndbcluster.h | 2 +- sql/handler.h | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 5e4b65f766e..b46a5971666 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -9590,8 +9590,12 @@ ndbcluster_show_status(THD* thd, stat_print_fn *stat_print, /* Create a table in NDB Cluster */ -static uint get_no_fragments(ulonglong max_rows) +static uint get_no_fragments(TABLE_SHARE *table_share) { + ha_rows max_rows= table_share->max_rows; + ha_rows min_rows= table_share->min_rows; + if (max_rows < min_rows) + max_rows= min_rows; #if MYSQL_VERSION_ID >= 50000 uint acc_row_size= 25 + /*safety margin*/ 2; #else @@ -9628,10 +9632,10 @@ static bool adjusted_frag_count(uint no_fragments, uint no_nodes, return (reported_frags < no_fragments); } -int ha_ndbcluster::get_default_no_partitions(ulonglong max_rows) +int ha_ndbcluster::get_default_no_partitions(TABLE_SHARE *table_share) { uint reported_frags; - uint no_fragments= get_no_fragments(max_rows); + uint no_fragments= get_no_fragments(table_share); uint no_nodes= g_ndb_cluster_connection->no_db_nodes(); if (adjusted_frag_count(no_fragments, no_nodes, reported_frags)) { diff --git a/sql/ha_ndbcluster.h b/sql/ha_ndbcluster.h index 2e78a00ef94..adc70808f78 100644 --- a/sql/ha_ndbcluster.h +++ b/sql/ha_ndbcluster.h @@ -651,7 +651,7 @@ class ha_ndbcluster: public handler int create(const char *name, TABLE *form, HA_CREATE_INFO *info); int create_handler_files(const char *file, const char *old_name, int action_flag, HA_CREATE_INFO *info); - int get_default_no_partitions(ulonglong max_rows); + int get_default_no_partitions(TABLE_SHARE *); bool get_no_parts(const char *name, uint *no_parts); void set_auto_partitions(partition_info *part_info); diff --git a/sql/handler.h b/sql/handler.h index fb5f0f4ba05..025b76213d7 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -1335,7 +1335,7 @@ public: virtual const char *table_type() const =0; virtual const char **bas_ext() const =0; - virtual int get_default_no_partitions(ulonglong max_rows) { return 1;} + virtual int get_default_no_partitions(TABLE_SHARE *) { return 1;} virtual void set_auto_partitions(partition_info *part_info) { return; } virtual bool get_no_parts(const char *name, uint *no_parts) -- cgit v1.2.1 From 4b36c1d8ffa33a9684342f7bae969b0e163c469f Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 27 Jun 2006 17:40:19 +0300 Subject: Bug #16458: Simple SELECT FOR UPDATE causes "Result Set not updatable" error 'SELECT DISTINCT a,b FROM t1' should not use temp table if there is unique index (or primary key) on a. There are a number of other similar cases that can be calculated without the use of a temp table : multi-part unique indexes, primary keys or using GROUP BY instead of DISTINCT. When a GROUP BY/DISTINCT clause contains all key parts of a unique index, then it is guaranteed that the fields of the clause will be unique, therefore we can optimize away GROUP BY/DISTINCT altogether. This optimization has two effects: * there is no need to create a temporary table to compute the GROUP/DISTINCT operation (or the temporary table will be smaller if only GROUP is removed and DISTINCT stays or if DISTINCT is removed and GROUP BY stays) * this causes the statement in effect to become updatable in Connector/Java because the result set columns will be direct reference to the primary key of the table (instead to the temporary table that it currently references). Implemented a check that will optimize away GROUP BY/DISTINCT for queries like the above. Currently it will work only for single non-constant table in the FROM clause. mysql-test/r/distinct.result: Bug #16458: Simple SELECT FOR UPDATE causes "Result Set not updatable" error - test case mysql-test/t/distinct.test: Bug #16458: Simple SELECT FOR UPDATE causes "Result Set not updatable" error - test case sql/sql_select.cc: Bug #16458: Simple SELECT FOR UPDATE causes "Result Set not updatable" error - disable GROUP BY if contains the fields of a unique index. --- mysql-test/r/distinct.result | 51 +++++++++++++ mysql-test/t/distinct.test | 28 ++++++++ sql/sql_select.cc | 168 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 247 insertions(+) diff --git a/mysql-test/r/distinct.result b/mysql-test/r/distinct.result index 8932285b5d0..c6c614a5646 100644 --- a/mysql-test/r/distinct.result +++ b/mysql-test/r/distinct.result @@ -504,3 +504,54 @@ a 2 b 2 2 4 3 2 5 DROP TABLE t1,t2; +CREATE TABLE t1(a INT PRIMARY KEY, b INT); +INSERT INTO t1 VALUES (1,1), (2,1), (3,1); +EXPLAIN SELECT DISTINCT a FROM t1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 index NULL PRIMARY 4 NULL 3 Using index +EXPLAIN SELECT DISTINCT a,b FROM t1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 3 +EXPLAIN SELECT DISTINCT t1_1.a, t1_1.b FROM t1 t1_1, t1 t1_2; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1_1 ALL NULL NULL NULL NULL 3 Using temporary +1 SIMPLE t1_2 index NULL PRIMARY 4 NULL 3 Using index; Distinct +EXPLAIN SELECT DISTINCT t1_1.a, t1_1.b FROM t1 t1_1, t1 t1_2 +WHERE t1_1.a = t1_2.a; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1_1 ALL PRIMARY NULL NULL NULL 3 Using temporary +1 SIMPLE t1_2 eq_ref PRIMARY PRIMARY 4 test.t1_1.a 1 Using index; Distinct +EXPLAIN SELECT a FROM t1 GROUP BY a; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 index NULL PRIMARY 4 NULL 3 Using index +EXPLAIN SELECT a,b FROM t1 GROUP BY a,b; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 3 +EXPLAIN SELECT DISTINCT a,b FROM t1 GROUP BY a,b; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 3 +CREATE TABLE t2(a INT, b INT, c INT, d INT, PRIMARY KEY (a,b)); +INSERT INTO t2 VALUES (1,1,1,50), (1,2,3,40), (2,1,3,4); +EXPLAIN SELECT DISTINCT a FROM t2; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 index NULL PRIMARY 8 NULL 3 Using index +EXPLAIN SELECT DISTINCT a,a FROM t2; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 index NULL PRIMARY 8 NULL 3 Using index; Using temporary +EXPLAIN SELECT DISTINCT b,a FROM t2; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 index NULL PRIMARY 8 NULL 3 Using index +EXPLAIN SELECT DISTINCT a,c FROM t2; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using temporary +EXPLAIN SELECT DISTINCT c,a,b FROM t2; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 ALL NULL NULL NULL NULL 3 +EXPLAIN SELECT DISTINCT a,b,d FROM t2 GROUP BY c,b,d; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using temporary; Using filesort +CREATE UNIQUE INDEX c_b_unq ON t2 (c,b); +EXPLAIN SELECT DISTINCT a,b,d FROM t2 GROUP BY c,b,d; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 ALL NULL NULL NULL NULL 3 +DROP TABLE t1,t2; diff --git a/mysql-test/t/distinct.test b/mysql-test/t/distinct.test index f2fe1ec6372..8ca6f350b8d 100644 --- a/mysql-test/t/distinct.test +++ b/mysql-test/t/distinct.test @@ -348,6 +348,34 @@ SELECT DISTINCT a, b, 2 FROM t2; SELECT DISTINCT 2, a, b FROM t2; SELECT DISTINCT a, 2, b FROM t2; +DROP TABLE t1,t2; +# +# Bug#16458: Simple SELECT FOR UPDATE causes "Result Set not updatable" +# error. +# +CREATE TABLE t1(a INT PRIMARY KEY, b INT); +INSERT INTO t1 VALUES (1,1), (2,1), (3,1); +EXPLAIN SELECT DISTINCT a FROM t1; +EXPLAIN SELECT DISTINCT a,b FROM t1; +EXPLAIN SELECT DISTINCT t1_1.a, t1_1.b FROM t1 t1_1, t1 t1_2; +EXPLAIN SELECT DISTINCT t1_1.a, t1_1.b FROM t1 t1_1, t1 t1_2 + WHERE t1_1.a = t1_2.a; +EXPLAIN SELECT a FROM t1 GROUP BY a; +EXPLAIN SELECT a,b FROM t1 GROUP BY a,b; +EXPLAIN SELECT DISTINCT a,b FROM t1 GROUP BY a,b; + +CREATE TABLE t2(a INT, b INT, c INT, d INT, PRIMARY KEY (a,b)); +INSERT INTO t2 VALUES (1,1,1,50), (1,2,3,40), (2,1,3,4); +EXPLAIN SELECT DISTINCT a FROM t2; +EXPLAIN SELECT DISTINCT a,a FROM t2; +EXPLAIN SELECT DISTINCT b,a FROM t2; +EXPLAIN SELECT DISTINCT a,c FROM t2; +EXPLAIN SELECT DISTINCT c,a,b FROM t2; + +EXPLAIN SELECT DISTINCT a,b,d FROM t2 GROUP BY c,b,d; +CREATE UNIQUE INDEX c_b_unq ON t2 (c,b); +EXPLAIN SELECT DISTINCT a,b,d FROM t2 GROUP BY c,b,d; + DROP TABLE t1,t2; # End of 4.1 tests diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 709ff9726bb..cb23662f42c 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -114,6 +114,10 @@ static Item* part_of_refkey(TABLE *form,Field *field); static uint find_shortest_key(TABLE *table, const key_map *usable_keys); static bool test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order, ha_rows select_limit, bool no_changes); +static bool list_contains_unique_index(TABLE *table, + bool (*find_func) (Field *, void *), void *data); +static bool find_field_in_item_list (Field *field, void *data); +static bool find_field_in_order_list (Field *field, void *data); static int create_sort_index(THD *thd, JOIN *join, ORDER *order, ha_rows filesort_limit, ha_rows select_limit); static int remove_duplicates(JOIN *join,TABLE *entry,List &fields, @@ -695,6 +699,36 @@ JOIN::optimize() if (old_group_list && !group_list) select_distinct= 0; } + /* + Check if we can optimize away GROUP BY/DISTINCT. + We can do that if there are no aggregate functions and the + fields in DISTINCT clause (if present) and/or columns in GROUP BY + (if present) contain direct references to all key parts of + an unique index (in whatever order). + Note that the unique keys for DISTINCT and GROUP BY should not + be the same (as long as they are unique). + + The FROM clause must contain a single non-constant table. + */ + if (tables - const_tables == 1 && (group_list || select_distinct) && + !tmp_table_param.sum_func_count) + { + if (group_list && + list_contains_unique_index(join_tab[const_tables].table, + find_field_in_order_list, + (void *) group_list)) + { + group_list= 0; + group= 0; + } + if (select_distinct && + list_contains_unique_index(join_tab[const_tables].table, + find_field_in_item_list, + (void *) &fields_list)) + { + select_distinct= 0; + } + } if (!group_list && group) { order=0; // The output has only one row @@ -7376,6 +7410,140 @@ test_if_subkey(ORDER *order, TABLE *table, uint ref, uint ref_key_parts, return best; } + +/* + Check if GROUP BY/DISTINCT can be optimized away because the set is + already known to be distinct. + + SYNOPSIS + list_contains_unique_index () + table The table to operate on. + find_func function to iterate over the list and search + for a field + + DESCRIPTION + Used in removing the GROUP BY/DISTINCT of the following types of + statements: + SELECT [DISTINCT] ... FROM + [GROUP BY ,...] + + If (a,b,c is distinct) + then ,{whatever} is also distinct + + This function checks if all the key parts of any of the unique keys + of the table are referenced by a list : either the select list + through find_field_in_item_list or GROUP BY list through + find_field_in_order_list. + If the above holds then we can safely remove the GROUP BY/DISTINCT, + as no result set can be more distinct than an unique key. + + RETURN VALUE + 1 found + 0 not found. +*/ + +static bool +list_contains_unique_index(TABLE *table, + bool (*find_func) (Field *, void *), void *data) +{ + for (uint keynr= 0; keynr < table->keys; keynr++) + { + if (keynr == table->primary_key || + (table->key_info[keynr].flags & HA_NOSAME)) + { + KEY *keyinfo= table->key_info + keynr; + KEY_PART_INFO *key_part, *key_part_end; + + for (key_part=keyinfo->key_part, + key_part_end=key_part+ keyinfo->key_parts; + key_part < key_part_end; + key_part++) + { + if (!find_func(key_part->field, data)) + break; + } + if (key_part == key_part_end) + return 1; + } + } + return 0; +} + + +/* + Helper function for list_contains_unique_index. + Find a field reference in a list of ORDER structures. + + SYNOPSIS + find_field_in_order_list () + field The field to search for. + data ORDER *.The list to search in + + DESCRIPTION + Finds a direct reference of the Field in the list. + + RETURN VALUE + 1 found + 0 not found. +*/ + +static bool +find_field_in_order_list (Field *field, void *data) +{ + ORDER *group= (ORDER *) data; + bool part_found= 0; + for (ORDER *tmp_group= group; tmp_group; tmp_group=tmp_group->next) + { + Item *item= (*tmp_group->item)->real_item(); + if (item->type() == Item::FIELD_ITEM && + ((Item_field*) item)->field->eq(field)) + { + part_found= 1; + break; + } + } + return part_found; +} + + +/* + Helper function for list_contains_unique_index. + Find a field reference in a dynamic list of Items. + + SYNOPSIS + find_field_in_item_list () + field in The field to search for. + data in List *.The list to search in + + DESCRIPTION + Finds a direct reference of the Field in the list. + + RETURN VALUE + 1 found + 0 not found. +*/ + +static bool +find_field_in_item_list (Field *field, void *data) +{ + List *fields= (List *) data; + bool part_found= 0; + List_iterator li(*fields); + Item *item; + + while ((item= li++)) + { + if (item->type() == Item::FIELD_ITEM && + ((Item_field*) item)->field->eq(field)) + { + part_found= 1; + break; + } + } + return part_found; +} + + /* Test if we can skip the ORDER BY by using an index. -- cgit v1.2.1 From 9512629598687882a2c7abd3ec5af9c732163607 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 28 Jun 2006 01:07:44 +1000 Subject: BUG#20725 MySQLD cluster use "fast count" is broken Post recent handler changes, fast count(*) for cluster was broken. Seeing as we maintain an exact count for ndb, we can easily use this for an optimisation. With this patch, and use_exact_count DISABLED, we will use the fast way of getting count(*) but not use the exact count for the optimiser. With this patch and use_exact_count ENABLED, we will use the fast way of getting count(*) and use the exact count for the optimiser. sql/ha_ndbcluster.cc: Implement handler::records() and set appropriate handler flag. sql/ha_ndbcluster.h: we implment handler::records() for fast count(*) --- sql/ha_ndbcluster.cc | 27 ++++++++++++++++++++++++++- sql/ha_ndbcluster.h | 1 + 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 997072bd2a5..f31b8c7e397 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -414,6 +414,30 @@ void ha_ndbcluster::set_rec_per_key() DBUG_VOID_RETURN; } +ha_rows ha_ndbcluster::records() +{ + ha_rows retval; + DBUG_ENTER("ha_ndbcluster::records"); + struct Ndb_local_table_statistics *info= m_table_info; + DBUG_PRINT("info", ("id=%d, no_uncommitted_rows_count=%d", + ((const NDBTAB *)m_table)->getTableId(), + info->no_uncommitted_rows_count)); + + Ndb *ndb= get_ndb(); + ndb->setDatabaseName(m_dbname); + struct Ndb_statistics stat; + if (ndb_get_table_statistics(ndb, m_table, &stat) == 0) + { + retval= stat.row_count; + } + + THD *thd= current_thd; + if (get_thd_ndb(thd)->error) + info->no_uncommitted_rows_count= 0; + + DBUG_RETURN(retval + info->no_uncommitted_rows_count); +} + void ha_ndbcluster::records_update() { if (m_ha_not_exact_count) @@ -5455,7 +5479,8 @@ void ha_ndbcluster::get_auto_increment(ulonglong offset, ulonglong increment, HA_PRIMARY_KEY_REQUIRED_FOR_POSITION | \ HA_PRIMARY_KEY_REQUIRED_FOR_DELETE | \ HA_PARTIAL_COLUMN_READ | \ - HA_HAS_OWN_BINLOGGING + HA_HAS_OWN_BINLOGGING | \ + HA_HAS_RECORDS ha_ndbcluster::ha_ndbcluster(TABLE_SHARE *table_arg): handler(&ndbcluster_hton, table_arg), diff --git a/sql/ha_ndbcluster.h b/sql/ha_ndbcluster.h index 2e78a00ef94..d03a6cc4c5d 100644 --- a/sql/ha_ndbcluster.h +++ b/sql/ha_ndbcluster.h @@ -622,6 +622,7 @@ class ha_ndbcluster: public handler int read_multi_range_next(KEY_MULTI_RANGE **found_range_p); bool get_error_message(int error, String *buf); + ha_rows records(); void info(uint); void get_dynamic_partition_info(PARTITION_INFO *stat_info, uint part_id); int extra(enum ha_extra_function operation); -- cgit v1.2.1 From da81451d518fc1db35e16ff62d701f87c2461242 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 28 Jun 2006 01:28:07 +1000 Subject: BUG#20725 MySQLD cluster use "fast count" is broken fix based on review by tomas. conform to bug we haven't fixed yet. sql/ha_ndbcluster.cc: return -1 on error in ::records(). produces a compiler warning, a bug and is evil. however, until we go and really fix the bug properly, it's best to conform --- sql/ha_ndbcluster.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index f31b8c7e397..f499f01986a 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -430,6 +430,13 @@ ha_rows ha_ndbcluster::records() { retval= stat.row_count; } + else + { + /** + * Be consistent with BUG#19914 until we fix it properly + */ + DBUG_RETURN(-1); + } THD *thd= current_thd; if (get_thd_ndb(thd)->error) -- cgit v1.2.1 From cea60fb1576d69c87ea45e157d466ba19529e839 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 27 Jun 2006 18:35:10 +0200 Subject: Many files: Adding back ndb partition tests from mysql-test-extra per tomas and clavin new file mysql-test/t/ndb_partition_error.test: Adding back ndb partition tests from mysql-test-extra per tomas and clavin mysql-test/t/ndb_partition_key.test: Adding back ndb partition tests from mysql-test-extra per tomas and clavin mysql-test/t/ndb_partition_list.test: Adding back ndb partition tests from mysql-test-extra per tomas and clavin mysql-test/t/ndb_partition_range.test: Adding back ndb partition tests from mysql-test-extra per tomas and clavin mysql-test/t/ndb_blob_partition.test: Adding back ndb partition tests from mysql-test-extra per tomas and clavin mysql-test/t/ndb_dd_backuprestore.test: Adding back ndb partition tests from mysql-test-extra per tomas and clavin mysql-test/r/ndb_partition_error.result: Adding back ndb partition tests from mysql-test-extra per tomas and clavin mysql-test/r/ndb_partition_key.result: Adding back ndb partition tests from mysql-test-extra per tomas and clavin mysql-test/r/ndb_partition_list.result: Adding back ndb partition tests from mysql-test-extra per tomas and clavin mysql-test/r/ndb_partition_range.result: Adding back ndb partition tests from mysql-test-extra per tomas and clavin mysql-test/r/ndb_blob_partition.result: Adding back ndb partition tests from mysql-test-extra per tomas and clavin mysql-test/r/ndb_dd_backuprestore.result: Adding back ndb partition tests from mysql-test-extra per tomas and clavin --- mysql-test/r/ndb_blob_partition.result | 104 ++++++++++ mysql-test/r/ndb_dd_backuprestore.result | 323 +++++++++++++++++++++++++++++++ mysql-test/r/ndb_partition_error.result | 47 +++++ mysql-test/r/ndb_partition_key.result | 199 +++++++++++++++++++ mysql-test/r/ndb_partition_list.result | 51 +++++ mysql-test/r/ndb_partition_range.result | 263 +++++++++++++++++++++++++ mysql-test/t/ndb_blob_partition.test | 93 +++++++++ mysql-test/t/ndb_dd_backuprestore.test | 170 ++++++++++++++++ mysql-test/t/ndb_partition_error.test | 71 +++++++ mysql-test/t/ndb_partition_key.test | 198 +++++++++++++++++++ mysql-test/t/ndb_partition_list.test | 64 ++++++ mysql-test/t/ndb_partition_range.test | 260 +++++++++++++++++++++++++ 12 files changed, 1843 insertions(+) create mode 100644 mysql-test/r/ndb_blob_partition.result create mode 100644 mysql-test/r/ndb_partition_error.result create mode 100644 mysql-test/r/ndb_partition_key.result create mode 100644 mysql-test/r/ndb_partition_list.result create mode 100644 mysql-test/r/ndb_partition_range.result create mode 100644 mysql-test/t/ndb_blob_partition.test create mode 100644 mysql-test/t/ndb_partition_error.test create mode 100644 mysql-test/t/ndb_partition_key.test create mode 100644 mysql-test/t/ndb_partition_list.test create mode 100644 mysql-test/t/ndb_partition_range.test diff --git a/mysql-test/r/ndb_blob_partition.result b/mysql-test/r/ndb_blob_partition.result new file mode 100644 index 00000000000..b08a91f0cdd --- /dev/null +++ b/mysql-test/r/ndb_blob_partition.result @@ -0,0 +1,104 @@ +drop table if exists t1; +create table t1 ( +a mediumint not null, +b text not null, +c int not null, +d longblob, +primary key using hash (a,c), +unique key (c) +) +engine=ndb +partition by range (c) +partitions 3 +( partition p1 values less than (200), +partition p2 values less than (300), +partition p3 values less than (400)); +insert into t1 values (1, @v1, 101, @v2); +insert into t1 values (1, @v2, 102, @v3); +insert into t1 values (1, @v3, 103, @v4); +insert into t1 values (2, @v4, 201, @v5); +insert into t1 values (2, @v5, 202, @v6); +insert into t1 values (2, @v6, 203, @v7); +insert into t1 values (3, @v7, 301, @v8); +insert into t1 values (3, @v8, 302, @v9); +insert into t1 values (3, @v9, 303, @v1); +select a, sha1(b), c, sha1(d) from t1 order by a; +a sha1(b) c sha1(d) +1 1d42dd9090cf78314a06665d4ea938c35cc760f4 101 10d3c783026b310218d10b7188da96a2401648c6 +1 10d3c783026b310218d10b7188da96a2401648c6 102 a33549d9844092289a58ac348dd59f09fc28406a +1 a33549d9844092289a58ac348dd59f09fc28406a 103 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c +2 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c 201 70fc9a7d08beebc522258bfb02000a30c77a8f1d +2 70fc9a7d08beebc522258bfb02000a30c77a8f1d 202 090565c580809efed3d369481a4bbb168b20713e +2 090565c580809efed3d369481a4bbb168b20713e 203 1e0070bec426871a46291de27b9bd6e4255ab4e5 +3 1e0070bec426871a46291de27b9bd6e4255ab4e5 301 acbaba01bc2e682f015f40e79d9cbe475db3002e +3 acbaba01bc2e682f015f40e79d9cbe475db3002e 302 9ee30d99162574f79c66ae95cdf132dcf9cbc259 +3 9ee30d99162574f79c66ae95cdf132dcf9cbc259 303 1d42dd9090cf78314a06665d4ea938c35cc760f4 +select a, sha1(b), c, sha1(d) from t1 where a = 1 and c = 101; +a sha1(b) c sha1(d) +1 1d42dd9090cf78314a06665d4ea938c35cc760f4 101 10d3c783026b310218d10b7188da96a2401648c6 +select a, sha1(b), c, sha1(d) from t1 where a = 2 and c = 201; +a sha1(b) c sha1(d) +2 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c 201 70fc9a7d08beebc522258bfb02000a30c77a8f1d +select a, sha1(b), c, sha1(d) from t1 where a = 3 and c = 301; +a sha1(b) c sha1(d) +3 1e0070bec426871a46291de27b9bd6e4255ab4e5 301 acbaba01bc2e682f015f40e79d9cbe475db3002e +update t1 set b = @v3, d = @v4 where a = 1 and c = 102; +update t1 set b = @v6, d = @v7 where a = 2 and c = 202; +update t1 set b = @v9, d = @v1 where a = 3 and c = 302; +select a, sha1(b), c, sha1(d) from t1 order by a; +a sha1(b) c sha1(d) +1 1d42dd9090cf78314a06665d4ea938c35cc760f4 101 10d3c783026b310218d10b7188da96a2401648c6 +1 a33549d9844092289a58ac348dd59f09fc28406a 102 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c +1 a33549d9844092289a58ac348dd59f09fc28406a 103 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c +2 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c 201 70fc9a7d08beebc522258bfb02000a30c77a8f1d +2 090565c580809efed3d369481a4bbb168b20713e 202 1e0070bec426871a46291de27b9bd6e4255ab4e5 +2 090565c580809efed3d369481a4bbb168b20713e 203 1e0070bec426871a46291de27b9bd6e4255ab4e5 +3 1e0070bec426871a46291de27b9bd6e4255ab4e5 301 acbaba01bc2e682f015f40e79d9cbe475db3002e +3 9ee30d99162574f79c66ae95cdf132dcf9cbc259 302 1d42dd9090cf78314a06665d4ea938c35cc760f4 +3 9ee30d99162574f79c66ae95cdf132dcf9cbc259 303 1d42dd9090cf78314a06665d4ea938c35cc760f4 +update t1 set b = @v4, d = @v5 where c = 103; +update t1 set b = @v7, d = @v8 where c = 203; +update t1 set b = @v1, d = @v2 where c = 303; +select a, sha1(b), c, sha1(d) from t1 order by a; +a sha1(b) c sha1(d) +1 1d42dd9090cf78314a06665d4ea938c35cc760f4 101 10d3c783026b310218d10b7188da96a2401648c6 +1 a33549d9844092289a58ac348dd59f09fc28406a 102 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c +1 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c 103 70fc9a7d08beebc522258bfb02000a30c77a8f1d +2 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c 201 70fc9a7d08beebc522258bfb02000a30c77a8f1d +2 090565c580809efed3d369481a4bbb168b20713e 202 1e0070bec426871a46291de27b9bd6e4255ab4e5 +2 1e0070bec426871a46291de27b9bd6e4255ab4e5 203 acbaba01bc2e682f015f40e79d9cbe475db3002e +3 1e0070bec426871a46291de27b9bd6e4255ab4e5 301 acbaba01bc2e682f015f40e79d9cbe475db3002e +3 9ee30d99162574f79c66ae95cdf132dcf9cbc259 302 1d42dd9090cf78314a06665d4ea938c35cc760f4 +3 1d42dd9090cf78314a06665d4ea938c35cc760f4 303 10d3c783026b310218d10b7188da96a2401648c6 +update t1 set b = @v5, d = @v6; +select a, sha1(b), c, sha1(d) from t1 order by a; +a sha1(b) c sha1(d) +1 70fc9a7d08beebc522258bfb02000a30c77a8f1d 101 090565c580809efed3d369481a4bbb168b20713e +1 70fc9a7d08beebc522258bfb02000a30c77a8f1d 102 090565c580809efed3d369481a4bbb168b20713e +1 70fc9a7d08beebc522258bfb02000a30c77a8f1d 103 090565c580809efed3d369481a4bbb168b20713e +2 70fc9a7d08beebc522258bfb02000a30c77a8f1d 201 090565c580809efed3d369481a4bbb168b20713e +2 70fc9a7d08beebc522258bfb02000a30c77a8f1d 202 090565c580809efed3d369481a4bbb168b20713e +2 70fc9a7d08beebc522258bfb02000a30c77a8f1d 203 090565c580809efed3d369481a4bbb168b20713e +3 70fc9a7d08beebc522258bfb02000a30c77a8f1d 301 090565c580809efed3d369481a4bbb168b20713e +3 70fc9a7d08beebc522258bfb02000a30c77a8f1d 302 090565c580809efed3d369481a4bbb168b20713e +3 70fc9a7d08beebc522258bfb02000a30c77a8f1d 303 090565c580809efed3d369481a4bbb168b20713e +update t1 set b = @v1, d = @v2 where 100 < c and c < 200; +update t1 set b = @v4, d = @v5 where 200 < c and c < 300; +update t1 set b = @v7, d = @v8 where 300 < c and c < 400; +select a, sha1(b), c, sha1(d) from t1 order by a; +a sha1(b) c sha1(d) +1 1d42dd9090cf78314a06665d4ea938c35cc760f4 101 10d3c783026b310218d10b7188da96a2401648c6 +1 1d42dd9090cf78314a06665d4ea938c35cc760f4 102 10d3c783026b310218d10b7188da96a2401648c6 +1 1d42dd9090cf78314a06665d4ea938c35cc760f4 103 10d3c783026b310218d10b7188da96a2401648c6 +2 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c 201 70fc9a7d08beebc522258bfb02000a30c77a8f1d +2 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c 202 70fc9a7d08beebc522258bfb02000a30c77a8f1d +2 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c 203 70fc9a7d08beebc522258bfb02000a30c77a8f1d +3 1e0070bec426871a46291de27b9bd6e4255ab4e5 301 acbaba01bc2e682f015f40e79d9cbe475db3002e +3 1e0070bec426871a46291de27b9bd6e4255ab4e5 302 acbaba01bc2e682f015f40e79d9cbe475db3002e +3 1e0070bec426871a46291de27b9bd6e4255ab4e5 303 acbaba01bc2e682f015f40e79d9cbe475db3002e +delete from t1 where a = 1 and c = 101; +delete from t1 where c = 102; +delete from t1; +select a, sha1(b), c, sha1(d) from t1 order by a; +a sha1(b) c sha1(d) +drop table t1; diff --git a/mysql-test/r/ndb_dd_backuprestore.result b/mysql-test/r/ndb_dd_backuprestore.result index 33edf6783e6..e7568e4ce49 100644 --- a/mysql-test/r/ndb_dd_backuprestore.result +++ b/mysql-test/r/ndb_dd_backuprestore.result @@ -155,10 +155,333 @@ DROP TABLE test.t1; DROP TABLE test.t2; DROP TABLE test.t3; DROP TABLE test.t4; +**** Test 3 Adding partition Test backup and restore **** +CREATE TABLESPACE table_space2 +ADD DATAFILE './table_space2/datafile.dat' +USE LOGFILE GROUP log_group1 +INITIAL_SIZE 12M +ENGINE NDB; +CREATE TABLE test.t1 (pk1 MEDIUMINT NOT NULL AUTO_INCREMENT, c2 VARCHAR(150) NOT NULL, c3 INT NOT NULL, c4 BIT NOT NULL, PRIMARY KEY(pk1,c3))TABLESPACE table_space1 STORAGE DISK ENGINE=NDB PARTITION BY HASH(c3) PARTITIONS 4; +CREATE TABLE test.t4 (pk1 MEDIUMINT NOT NULL AUTO_INCREMENT, c2 VARCHAR(180) NOT NULL, c3 INT NOT NULL, c4 BIT NOT NULL, PRIMARY KEY(pk1,c3))ENGINE=NDB PARTITION BY HASH(c3) PARTITIONS 2; +CREATE TABLE test.t2 (pk1 MEDIUMINT NOT NULL AUTO_INCREMENT, c2 TEXT NOT NULL, c3 INT NOT NULL, c4 BIT NOT NULL, PRIMARY KEY(pk1,c3))TABLESPACE table_space2 STORAGE DISK ENGINE=NDB PARTITION BY KEY(c3) (PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB); +CREATE TABLE test.t5 (pk1 MEDIUMINT NOT NULL AUTO_INCREMENT, c2 TEXT NOT NULL, c3 INT NOT NULL, c4 BIT NOT NULL, PRIMARY KEY(pk1,c3))ENGINE=NDB PARTITION BY KEY(pk1) (PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB); +CREATE TABLE test.t3 (pk1 MEDIUMINT NOT NULL AUTO_INCREMENT, c2 VARCHAR(202) NOT NULL, c3 INT NOT NULL, c4 BIT NOT NULL, PRIMARY KEY(pk1,c3))TABLESPACE table_space2 STORAGE DISK ENGINE=NDB PARTITION BY RANGE (c3) PARTITIONS 3 (PARTITION x1 VALUES LESS THAN (105), PARTITION x2 VALUES LESS THAN (333), PARTITION x3 VALUES LESS THAN (720)); +CREATE TABLE test.t6 (pk1 MEDIUMINT NOT NULL AUTO_INCREMENT, c2 VARCHAR(220) NOT NULL, c3 INT NOT NULL, c4 BIT NOT NULL, PRIMARY KEY(pk1,c3))ENGINE=NDB PARTITION BY RANGE (pk1) PARTITIONS 2 (PARTITION x1 VALUES LESS THAN (333), PARTITION x2 VALUES LESS THAN (720)); +SHOW CREATE TABLE test.t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `pk1` mediumint(9) NOT NULL AUTO_INCREMENT, + `c2` varchar(150) NOT NULL, + `c3` int(11) NOT NULL, + `c4` bit(1) NOT NULL, + PRIMARY KEY (`pk1`,`c3`) +) TABLESPACE table_space1 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY HASH (c3) PARTITIONS 4 +SHOW CREATE TABLE test.t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `pk1` mediumint(9) NOT NULL AUTO_INCREMENT, + `c2` text NOT NULL, + `c3` int(11) NOT NULL, + `c4` bit(1) NOT NULL, + PRIMARY KEY (`pk1`,`c3`) +) TABLESPACE table_space2 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (c3) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) +SHOW CREATE TABLE test.t3; +Table Create Table +t3 CREATE TABLE `t3` ( + `pk1` mediumint(9) NOT NULL AUTO_INCREMENT, + `c2` varchar(202) NOT NULL, + `c3` int(11) NOT NULL, + `c4` bit(1) NOT NULL, + PRIMARY KEY (`pk1`,`c3`) +) TABLESPACE table_space2 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY RANGE (c3) (PARTITION x1 VALUES LESS THAN (105) ENGINE = ndbcluster, PARTITION x2 VALUES LESS THAN (333) ENGINE = ndbcluster, PARTITION x3 VALUES LESS THAN (720) ENGINE = ndbcluster) +SHOW CREATE TABLE test.t4; +Table Create Table +t4 CREATE TABLE `t4` ( + `pk1` mediumint(9) NOT NULL AUTO_INCREMENT, + `c2` varchar(180) NOT NULL, + `c3` int(11) NOT NULL, + `c4` bit(1) NOT NULL, + PRIMARY KEY (`pk1`,`c3`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY HASH (c3) PARTITIONS 2 +SHOW CREATE TABLE test.t5; +Table Create Table +t5 CREATE TABLE `t5` ( + `pk1` mediumint(9) NOT NULL AUTO_INCREMENT, + `c2` text NOT NULL, + `c3` int(11) NOT NULL, + `c4` bit(1) NOT NULL, + PRIMARY KEY (`pk1`,`c3`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (pk1) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) +SHOW CREATE TABLE test.t6; +Table Create Table +t6 CREATE TABLE `t6` ( + `pk1` mediumint(9) NOT NULL AUTO_INCREMENT, + `c2` varchar(220) NOT NULL, + `c3` int(11) NOT NULL, + `c4` bit(1) NOT NULL, + PRIMARY KEY (`pk1`,`c3`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY RANGE (pk1) (PARTITION x1 VALUES LESS THAN (333) ENGINE = ndbcluster, PARTITION x2 VALUES LESS THAN (720) ENGINE = ndbcluster) +SELECT * FROM information_schema.partitions WHERE table_name= 't1'; +TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PARTITION_NAME SUBPARTITION_NAME PARTITION_ORDINAL_POSITION SUBPARTITION_ORDINAL_POSITION PARTITION_METHOD SUBPARTITION_METHOD PARTITION_EXPRESSION SUBPARTITION_EXPRESSION PARTITION_DESCRIPTION TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE CREATE_TIME UPDATE_TIME CHECK_TIME CHECKSUM PARTITION_COMMENT NODEGROUP TABLESPACE_NAME +NULL test t1 p0 NULL 1 NULL HASH NULL c3 NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +NULL test t1 p1 NULL 2 NULL HASH NULL c3 NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +NULL test t1 p2 NULL 3 NULL HASH NULL c3 NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +NULL test t1 p3 NULL 4 NULL HASH NULL c3 NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +SELECT * FROM information_schema.partitions WHERE table_name= 't2'; +TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PARTITION_NAME SUBPARTITION_NAME PARTITION_ORDINAL_POSITION SUBPARTITION_ORDINAL_POSITION PARTITION_METHOD SUBPARTITION_METHOD PARTITION_EXPRESSION SUBPARTITION_EXPRESSION PARTITION_DESCRIPTION TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE CREATE_TIME UPDATE_TIME CHECK_TIME CHECKSUM PARTITION_COMMENT NODEGROUP TABLESPACE_NAME +NULL test t2 p0 NULL 1 NULL KEY NULL c3 NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +NULL test t2 p1 NULL 2 NULL KEY NULL c3 NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +SELECT * FROM information_schema.partitions WHERE table_name= 't3'; +TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PARTITION_NAME SUBPARTITION_NAME PARTITION_ORDINAL_POSITION SUBPARTITION_ORDINAL_POSITION PARTITION_METHOD SUBPARTITION_METHOD PARTITION_EXPRESSION SUBPARTITION_EXPRESSION PARTITION_DESCRIPTION TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE CREATE_TIME UPDATE_TIME CHECK_TIME CHECKSUM PARTITION_COMMENT NODEGROUP TABLESPACE_NAME +NULL test t3 x1 NULL 1 NULL RANGE NULL c3 NULL 105 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +NULL test t3 x2 NULL 2 NULL RANGE NULL c3 NULL 333 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +NULL test t3 x3 NULL 3 NULL RANGE NULL c3 NULL 720 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +SELECT * FROM information_schema.partitions WHERE table_name= 't4'; +TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PARTITION_NAME SUBPARTITION_NAME PARTITION_ORDINAL_POSITION SUBPARTITION_ORDINAL_POSITION PARTITION_METHOD SUBPARTITION_METHOD PARTITION_EXPRESSION SUBPARTITION_EXPRESSION PARTITION_DESCRIPTION TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE CREATE_TIME UPDATE_TIME CHECK_TIME CHECKSUM PARTITION_COMMENT NODEGROUP TABLESPACE_NAME +NULL test t4 p0 NULL 1 NULL HASH NULL c3 NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +NULL test t4 p1 NULL 2 NULL HASH NULL c3 NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +SELECT * FROM information_schema.partitions WHERE table_name= 't5'; +TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PARTITION_NAME SUBPARTITION_NAME PARTITION_ORDINAL_POSITION SUBPARTITION_ORDINAL_POSITION PARTITION_METHOD SUBPARTITION_METHOD PARTITION_EXPRESSION SUBPARTITION_EXPRESSION PARTITION_DESCRIPTION TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE CREATE_TIME UPDATE_TIME CHECK_TIME CHECKSUM PARTITION_COMMENT NODEGROUP TABLESPACE_NAME +NULL test t5 p0 NULL 1 NULL KEY NULL pk1 NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +NULL test t5 p1 NULL 2 NULL KEY NULL pk1 NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +SELECT * FROM information_schema.partitions WHERE table_name= 't6'; +TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PARTITION_NAME SUBPARTITION_NAME PARTITION_ORDINAL_POSITION SUBPARTITION_ORDINAL_POSITION PARTITION_METHOD SUBPARTITION_METHOD PARTITION_EXPRESSION SUBPARTITION_EXPRESSION PARTITION_DESCRIPTION TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE CREATE_TIME UPDATE_TIME CHECK_TIME CHECKSUM PARTITION_COMMENT NODEGROUP TABLESPACE_NAME +NULL test t6 x1 NULL 1 NULL RANGE NULL pk1 NULL 333 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +NULL test t6 x2 NULL 2 NULL RANGE NULL pk1 NULL 720 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +SELECT COUNT(*) FROM test.t1; +COUNT(*) +250 +SELECT pk1, c2, c3, hex(c4) FROM test.t1 ORDER BY c3 LIMIT 5; +pk1 c2 c3 hex(c4) +250 Sweden, Texas 2 0 +249 Sweden, Texas 4 0 +248 Sweden, Texas 6 0 +247 Sweden, Texas 8 0 +246 Sweden, Texas 10 0 +SELECT COUNT(*) FROM test.t2; +COUNT(*) +250 +SELECT pk1, c2, c3, hex(c4) FROM test.t2 ORDER BY c3 LIMIT 5; +pk1 c2 c3 hex(c4) +250 Sweden, Texas, ITALY, Kyle, JO, JBM,TU 1 1 +249 Sweden, Texas, ITALY, Kyle, JO, JBM,TU 3 1 +248 Sweden, Texas, ITALY, Kyle, JO, JBM,TU 5 1 +247 Sweden, Texas, ITALY, Kyle, JO, JBM,TU 7 1 +246 Sweden, Texas, ITALY, Kyle, JO, JBM,TU 9 1 +SELECT COUNT(*) FROM test.t3; +COUNT(*) +250 +SELECT pk1, c2, c3, hex(c4) FROM test.t3 ORDER BY c3 LIMIT 5; +pk1 c2 c3 hex(c4) +250 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 0 1 +249 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 2 1 +248 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 4 1 +247 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 6 1 +246 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 8 1 +SELECT COUNT(*) FROM test.t4; +COUNT(*) +250 +SELECT pk1, c2, c3, hex(c4) FROM test.t4 ORDER BY c3 LIMIT 5; +pk1 c2 c3 hex(c4) +250 Sweden, Texas 2 0 +249 Sweden, Texas 4 0 +248 Sweden, Texas 6 0 +247 Sweden, Texas 8 0 +246 Sweden, Texas 10 0 +SELECT COUNT(*) FROM test.t5; +COUNT(*) +250 +SELECT pk1, c2, c3, hex(c4) FROM test.t5 ORDER BY c3 LIMIT 5; +pk1 c2 c3 hex(c4) +250 Sweden, Texas, ITALY, Kyle, JO, JBM,TU 1 1 +249 Sweden, Texas, ITALY, Kyle, JO, JBM,TU 3 1 +248 Sweden, Texas, ITALY, Kyle, JO, JBM,TU 5 1 +247 Sweden, Texas, ITALY, Kyle, JO, JBM,TU 7 1 +246 Sweden, Texas, ITALY, Kyle, JO, JBM,TU 9 1 +SELECT COUNT(*) FROM test.t6; +COUNT(*) +250 +SELECT pk1, c2, c3, hex(c4) FROM test.t6 ORDER BY c3 LIMIT 5; +pk1 c2 c3 hex(c4) +250 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 0 1 +249 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 2 1 +248 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 4 1 +247 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 6 1 +246 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 8 1 +CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info (id INT, backup_id INT) ENGINE = HEAP; +DELETE FROM test.backup_info; +LOAD DATA INFILE '../tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ','; +SELECT @the_backup_id:=backup_id FROM test.backup_info; +@the_backup_id:=backup_id + +DROP TABLE test.backup_info; +DROP TABLE test.t1; +DROP TABLE test.t2; +DROP TABLE test.t3; +DROP TABLE test.t4; +DROP TABLE test.t5; +DROP TABLE test.t6; ALTER TABLESPACE table_space1 DROP DATAFILE './table_space1/datafile.dat' ENGINE = NDB; +ALTER TABLESPACE table_space2 +DROP DATAFILE './table_space2/datafile.dat' +ENGINE = NDB; DROP TABLESPACE table_space1 ENGINE = NDB; +DROP TABLESPACE table_space2 +ENGINE = NDB; DROP LOGFILE GROUP log_group1 ENGINE =NDB; +SHOW CREATE TABLE test.t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `pk1` mediumint(9) NOT NULL AUTO_INCREMENT, + `c2` varchar(150) NOT NULL, + `c3` int(11) NOT NULL, + `c4` bit(1) NOT NULL, + PRIMARY KEY (`pk1`,`c3`) +) TABLESPACE table_space1 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY HASH (c3) PARTITIONS 4 +SHOW CREATE TABLE test.t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `pk1` mediumint(9) NOT NULL AUTO_INCREMENT, + `c2` text NOT NULL, + `c3` int(11) NOT NULL, + `c4` bit(1) NOT NULL, + PRIMARY KEY (`pk1`,`c3`) +) TABLESPACE table_space2 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (c3) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) +SHOW CREATE TABLE test.t3; +Table Create Table +t3 CREATE TABLE `t3` ( + `pk1` mediumint(9) NOT NULL AUTO_INCREMENT, + `c2` varchar(202) NOT NULL, + `c3` int(11) NOT NULL, + `c4` bit(1) NOT NULL, + PRIMARY KEY (`pk1`,`c3`) +) TABLESPACE table_space2 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY RANGE (c3) (PARTITION x1 VALUES LESS THAN (105) ENGINE = ndbcluster, PARTITION x2 VALUES LESS THAN (333) ENGINE = ndbcluster, PARTITION x3 VALUES LESS THAN (720) ENGINE = ndbcluster) +SHOW CREATE TABLE test.t4; +Table Create Table +t4 CREATE TABLE `t4` ( + `pk1` mediumint(9) NOT NULL AUTO_INCREMENT, + `c2` varchar(180) NOT NULL, + `c3` int(11) NOT NULL, + `c4` bit(1) NOT NULL, + PRIMARY KEY (`pk1`,`c3`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY HASH (c3) PARTITIONS 2 +SHOW CREATE TABLE test.t5; +Table Create Table +t5 CREATE TABLE `t5` ( + `pk1` mediumint(9) NOT NULL AUTO_INCREMENT, + `c2` text NOT NULL, + `c3` int(11) NOT NULL, + `c4` bit(1) NOT NULL, + PRIMARY KEY (`pk1`,`c3`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (pk1) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) +SHOW CREATE TABLE test.t6; +Table Create Table +t6 CREATE TABLE `t6` ( + `pk1` mediumint(9) NOT NULL AUTO_INCREMENT, + `c2` varchar(220) NOT NULL, + `c3` int(11) NOT NULL, + `c4` bit(1) NOT NULL, + PRIMARY KEY (`pk1`,`c3`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY RANGE (pk1) (PARTITION x1 VALUES LESS THAN (333) ENGINE = ndbcluster, PARTITION x2 VALUES LESS THAN (720) ENGINE = ndbcluster) +SELECT * FROM information_schema.partitions WHERE table_name= 't1'; +TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PARTITION_NAME SUBPARTITION_NAME PARTITION_ORDINAL_POSITION SUBPARTITION_ORDINAL_POSITION PARTITION_METHOD SUBPARTITION_METHOD PARTITION_EXPRESSION SUBPARTITION_EXPRESSION PARTITION_DESCRIPTION TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE CREATE_TIME UPDATE_TIME CHECK_TIME CHECKSUM PARTITION_COMMENT NODEGROUP TABLESPACE_NAME +NULL test t1 p0 NULL 1 NULL HASH NULL c3 NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +NULL test t1 p1 NULL 2 NULL HASH NULL c3 NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +NULL test t1 p2 NULL 3 NULL HASH NULL c3 NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +NULL test t1 p3 NULL 4 NULL HASH NULL c3 NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +SELECT * FROM information_schema.partitions WHERE table_name= 't2'; +TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PARTITION_NAME SUBPARTITION_NAME PARTITION_ORDINAL_POSITION SUBPARTITION_ORDINAL_POSITION PARTITION_METHOD SUBPARTITION_METHOD PARTITION_EXPRESSION SUBPARTITION_EXPRESSION PARTITION_DESCRIPTION TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE CREATE_TIME UPDATE_TIME CHECK_TIME CHECKSUM PARTITION_COMMENT NODEGROUP TABLESPACE_NAME +NULL test t2 p0 NULL 1 NULL KEY NULL c3 NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +NULL test t2 p1 NULL 2 NULL KEY NULL c3 NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +SELECT * FROM information_schema.partitions WHERE table_name= 't3'; +TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PARTITION_NAME SUBPARTITION_NAME PARTITION_ORDINAL_POSITION SUBPARTITION_ORDINAL_POSITION PARTITION_METHOD SUBPARTITION_METHOD PARTITION_EXPRESSION SUBPARTITION_EXPRESSION PARTITION_DESCRIPTION TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE CREATE_TIME UPDATE_TIME CHECK_TIME CHECKSUM PARTITION_COMMENT NODEGROUP TABLESPACE_NAME +NULL test t3 x1 NULL 1 NULL RANGE NULL c3 NULL 105 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +NULL test t3 x2 NULL 2 NULL RANGE NULL c3 NULL 333 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +NULL test t3 x3 NULL 3 NULL RANGE NULL c3 NULL 720 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +SELECT * FROM information_schema.partitions WHERE table_name= 't4'; +TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PARTITION_NAME SUBPARTITION_NAME PARTITION_ORDINAL_POSITION SUBPARTITION_ORDINAL_POSITION PARTITION_METHOD SUBPARTITION_METHOD PARTITION_EXPRESSION SUBPARTITION_EXPRESSION PARTITION_DESCRIPTION TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE CREATE_TIME UPDATE_TIME CHECK_TIME CHECKSUM PARTITION_COMMENT NODEGROUP TABLESPACE_NAME +NULL test t4 p0 NULL 1 NULL HASH NULL c3 NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +NULL test t4 p1 NULL 2 NULL HASH NULL c3 NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +SELECT * FROM information_schema.partitions WHERE table_name= 't5'; +TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PARTITION_NAME SUBPARTITION_NAME PARTITION_ORDINAL_POSITION SUBPARTITION_ORDINAL_POSITION PARTITION_METHOD SUBPARTITION_METHOD PARTITION_EXPRESSION SUBPARTITION_EXPRESSION PARTITION_DESCRIPTION TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE CREATE_TIME UPDATE_TIME CHECK_TIME CHECKSUM PARTITION_COMMENT NODEGROUP TABLESPACE_NAME +NULL test t5 p0 NULL 1 NULL KEY NULL pk1 NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +NULL test t5 p1 NULL 2 NULL KEY NULL pk1 NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +SELECT * FROM information_schema.partitions WHERE table_name= 't6'; +TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PARTITION_NAME SUBPARTITION_NAME PARTITION_ORDINAL_POSITION SUBPARTITION_ORDINAL_POSITION PARTITION_METHOD SUBPARTITION_METHOD PARTITION_EXPRESSION SUBPARTITION_EXPRESSION PARTITION_DESCRIPTION TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE CREATE_TIME UPDATE_TIME CHECK_TIME CHECKSUM PARTITION_COMMENT NODEGROUP TABLESPACE_NAME +NULL test t6 x1 NULL 1 NULL RANGE NULL pk1 NULL 333 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +NULL test t6 x2 NULL 2 NULL RANGE NULL pk1 NULL 720 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default +SELECT COUNT(*) FROM test.t1; +COUNT(*) +250 +SELECT pk1, c2, c3, hex(c4) FROM test.t1 ORDER BY c3 LIMIT 5; +pk1 c2 c3 hex(c4) +250 Sweden, Texas 2 0 +249 Sweden, Texas 4 0 +248 Sweden, Texas 6 0 +247 Sweden, Texas 8 0 +246 Sweden, Texas 10 0 +SELECT COUNT(*) FROM test.t2; +COUNT(*) +250 +SELECT pk1, c2, c3, hex(c4) FROM test.t2 ORDER BY c3 LIMIT 5; +pk1 c2 c3 hex(c4) +250 Sweden, Texas, ITALY, Kyle, JO, JBM,TU 1 1 +249 Sweden, Texas, ITALY, Kyle, JO, JBM,TU 3 1 +248 Sweden, Texas, ITALY, Kyle, JO, JBM,TU 5 1 +247 Sweden, Texas, ITALY, Kyle, JO, JBM,TU 7 1 +246 Sweden, Texas, ITALY, Kyle, JO, JBM,TU 9 1 +SELECT COUNT(*) FROM test.t3; +COUNT(*) +250 +SELECT pk1, c2, c3, hex(c4) FROM test.t3 ORDER BY c3 LIMIT 5; +pk1 c2 c3 hex(c4) +250 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 0 1 +249 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 2 1 +248 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 4 1 +247 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 6 1 +246 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 8 1 +SELECT COUNT(*) FROM test.t4; +COUNT(*) +250 +SELECT pk1, c2, c3, hex(c4) FROM test.t4 ORDER BY c3 LIMIT 5; +pk1 c2 c3 hex(c4) +250 Sweden, Texas 2 0 +249 Sweden, Texas 4 0 +248 Sweden, Texas 6 0 +247 Sweden, Texas 8 0 +246 Sweden, Texas 10 0 +SELECT COUNT(*) FROM test.t5; +COUNT(*) +250 +SELECT pk1, c2, c3, hex(c4) FROM test.t5 ORDER BY c3 LIMIT 5; +pk1 c2 c3 hex(c4) +250 Sweden, Texas, ITALY, Kyle, JO, JBM,TU 1 1 +249 Sweden, Texas, ITALY, Kyle, JO, JBM,TU 3 1 +248 Sweden, Texas, ITALY, Kyle, JO, JBM,TU 5 1 +247 Sweden, Texas, ITALY, Kyle, JO, JBM,TU 7 1 +246 Sweden, Texas, ITALY, Kyle, JO, JBM,TU 9 1 +SELECT COUNT(*) FROM test.t6; +COUNT(*) +250 +SELECT pk1, c2, c3, hex(c4) FROM test.t6 ORDER BY c3 LIMIT 5; +pk1 c2 c3 hex(c4) +250 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 0 1 +249 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 2 1 +248 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 4 1 +247 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 6 1 +246 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 8 1 +DROP TABLE test.t1; +DROP TABLE test.t2; +DROP TABLE test.t3; +DROP TABLE test.t4; +DROP TABLE test.t5; +DROP TABLE test.t6; +ALTER TABLESPACE table_space1 DROP DATAFILE './table_space1/datafile.dat' ENGINE=NDB; +ALTER TABLESPACE table_space2 DROP DATAFILE './table_space2/datafile.dat' ENGINE=NDB; +DROP TABLESPACE table_space1 ENGINE = NDB; +DROP TABLESPACE table_space2 ENGINE = NDB; +DROP LOGFILE GROUP log_group1 ENGINE = NDB; diff --git a/mysql-test/r/ndb_partition_error.result b/mysql-test/r/ndb_partition_error.result new file mode 100644 index 00000000000..d86dc382185 --- /dev/null +++ b/mysql-test/r/ndb_partition_error.result @@ -0,0 +1,47 @@ +drop table if exists t1; +CREATE TABLE t1 ( +a int not null, +b int not null, +c int not null, +primary key(a,b), +index (a)) +engine = ndb +partition by range (a) +partitions 3 +(partition x1 values less than (5) nodegroup 12, +partition x2 values less than (10) nodegroup 13, +partition x3 values less than (20) nodegroup 14); +ERROR HY000: Can't create table 'test.t1' (errno: 140) +show warnings; +Level Code Message +Error 1296 Got error 771 'Given NODEGROUP doesn't exist in this cluster' from NDB +Error 1005 Can't create table 'test.t1' (errno: 140) +CREATE TABLE t1 ( +a int not null, +b int not null, +c int not null, +primary key(a)) +engine = ndb +partition by range (a) +partitions 3 +(partition x1 values less than (5), +partition x2 values less than (10), +partition x3 values less than (20)); +drop table t1; +CREATE TABLE t1 (id INT) ENGINE=NDB +PARTITION BY LIST(id) +(PARTITION p0 VALUES IN (2, 4), +PARTITION p1 VALUES IN (42, 142)); +INSERT INTO t1 VALUES (2); +UPDATE t1 SET id=5 WHERE id=2; +ERROR HY000: Table has no partition for value 5 +DROP TABLE t1; +create table t1 (a int,b int, c int) +engine = ndb +partition by list(a) +partitions 2 +(partition x123 values in (11, 12), +partition x234 values in (5, 1)); +insert into t1 values (NULL,1,1); +ERROR HY000: Table has no partition for value NULL +drop table t1; diff --git a/mysql-test/r/ndb_partition_key.result b/mysql-test/r/ndb_partition_key.result new file mode 100644 index 00000000000..b936469ac14 --- /dev/null +++ b/mysql-test/r/ndb_partition_key.result @@ -0,0 +1,199 @@ +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (a int, b int, c int, d int, PRIMARY KEY(a,b,c)) +ENGINE = NDB +PARTITION BY KEY (a,b); +insert into t1 values (1,1,1,1); +select * from t1; +a b c d +1 1 1 1 +update t1 set d = 2 where a = 1 and b = 1 and c = 1; +select * from t1; +a b c d +1 1 1 2 +delete from t1; +select * from t1; +a b c d +drop table t1; +CREATE TABLE t1 (a int, b int, c int, d int, PRIMARY KEY(a,b)) +ENGINE = NDB +PARTITION BY KEY (c); +ERROR HY000: A PRIMARY KEY need to include all fields in the partition function +CREATE TABLE t1 (a int, b int, c int, PRIMARY KEY(a,b)) +ENGINE = NDB +PARTITION BY KEY (a); +insert into t1 values +(1,1,3),(1,2,3),(1,3,3),(1,4,3),(1,5,3),(1,6,3), +(1,7,3),(1,8,3),(1,9,3),(1,10,3),(1,11,3),(1,12,3); +select * from t1 order by b; +a b c +1 1 3 +1 2 3 +1 3 3 +1 4 3 +1 5 3 +1 6 3 +1 7 3 +1 8 3 +1 9 3 +1 10 3 +1 11 3 +1 12 3 +DROP TABLE t1; +CREATE TABLE t1 (a INT, b CHAR(10) COLLATE latin1_bin, c INT, d INT, +PRIMARY KEY (a,b,c) USING HASH) +ENGINE=NDB +DEFAULT CHARSET=latin1 +PARTITION BY KEY (b); +insert into t1 values (1,"a",1,1),(2,"a",1,1),(3,"a",1,1); +-- t1 -- + +Fragment type: 5 +K Value: 6 +Min load factor: 78 +Max load factor: 80 +Temporary table: no +Number of attributes: 4 +Number of primary keys: 3 +Length of frm data: # +Row Checksum: 1 +Row GCI: 1 +TableStatus: Retrieved +-- Attributes -- +a Int PRIMARY KEY AT=FIXED ST=MEMORY +b Char(10;latin1_bin) PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY +c Int PRIMARY KEY AT=FIXED ST=MEMORY +d Int NULL AT=FIXED ST=MEMORY + +-- Indexes -- +PRIMARY KEY(a, b, c) - UniqueHashIndex + + +NDBT_ProgramExit: 0 - OK + +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) NOT NULL DEFAULT '0', + `b` char(10) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '', + `c` int(11) NOT NULL DEFAULT '0', + `d` int(11) DEFAULT NULL, + PRIMARY KEY (`a`,`b`,`c`) USING HASH +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (b) +DROP TABLE t1; +CREATE TABLE t1 (a int not null primary key) +PARTITION BY KEY(a) +(PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB); +drop table t1; +CREATE TABLE t1 (a int not null primary key); +ALTER TABLE t1 +PARTITION BY KEY(a) +(PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB); +drop table t1; +create table t1 (a int) +engine=ndb +partition by key(a) +(partition p0, partition p1); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) DEFAULT NULL +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) +alter table t1 engine=heap; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) DEFAULT NULL +) ENGINE=MEMORY DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) +alter table t1 engine=ndb; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) DEFAULT NULL +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) +alter table t1 engine=heap remove partitioning; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) DEFAULT NULL +) ENGINE=MEMORY DEFAULT CHARSET=latin1 +alter table t1 engine=ndb +partition by key(a) +(partition p0, partition p1 engine = ndb); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) DEFAULT NULL +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) +alter table t1 +partition by key (a) +(partition p0 engine=ndb, partition p1 engine=ndb); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) DEFAULT NULL +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) +alter table t1 remove partitioning; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) DEFAULT NULL +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 +alter table t1 +partition by key(a) +(partition p0 engine=ndb, partition p1); +ERROR HY000: The mix of handlers in the partitions is not allowed in this version of MySQL +alter table t1 +engine=ndb +partition by key(a) +(partition p0 engine=ndb, partition p1 engine = ndb); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) DEFAULT NULL +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) +drop table t1; +CREATE TABLE t1 ( +c1 MEDIUMINT NOT NULL AUTO_INCREMENT, +c2 TEXT NOT NULL, +c3 INT NOT NULL, +c4 BIT NOT NULL, +c5 FLOAT, +c6 VARCHAR(255), +c7 TIMESTAMP, +PRIMARY KEY(c1,c3)) +ENGINE=NDB +PARTITION BY KEY(c3) PARTITIONS 5; +ALTER TABLE t1 COALESCE PARTITION 4; +DROP TABLE t1; +CREATE TABLE t1 (a int primary key) +ENGINE=NDB +PARTITION BY KEY(a); +ALTER TABLE t1 OPTIMIZE PARTITION p0; +ERROR HY000: Table storage engine for 't1' doesn't have this option +ALTER TABLE t1 CHECK PARTITION p0; +ERROR HY000: Table storage engine for 't1' doesn't have this option +ALTER TABLE t1 REPAIR PARTITION p0; +ERROR HY000: Table storage engine for 't1' doesn't have this option +ALTER TABLE t1 ANALYZE PARTITION p0; +ERROR HY000: Table storage engine for 't1' doesn't have this option +ALTER TABLE t1 REBUILD PARTITION p0; +ERROR HY000: Table storage engine for 't1' doesn't have this option +DROP TABLE t1; +CREATE TABLE t1 ( +c1 MEDIUMINT NOT NULL AUTO_INCREMENT, +c2 TEXT NOT NULL, +c3 INT NOT NULL, +PRIMARY KEY(c1,c3)) +ENGINE=NDB +PARTITION BY KEY(c3) PARTITIONS 5; +ALTER TABLE t1 ADD COLUMN c4 INT AFTER c1; +DROP TABLE t1; +CREATE TABLE t1 ( +c1 MEDIUMINT NOT NULL AUTO_INCREMENT, +c2 TEXT NOT NULL, +c3 INT NOT NULL, +PRIMARY KEY(c1,c3)) +ENGINE=NDB +PARTITION BY KEY(c3); +ALTER TABLE t1 ADD COLUMN c4 INT AFTER c1; +DROP TABLE t1; diff --git a/mysql-test/r/ndb_partition_list.result b/mysql-test/r/ndb_partition_list.result new file mode 100644 index 00000000000..ce2574ddcc4 --- /dev/null +++ b/mysql-test/r/ndb_partition_list.result @@ -0,0 +1,51 @@ +drop table if exists t1; +CREATE TABLE t1 ( f_int1 INTEGER NOT NULL, f_int2 INTEGER NOT NULL, +f_char1 CHAR(10), +f_char2 CHAR(10), f_charbig VARCHAR(1000), +PRIMARY KEY (f_int1,f_int2)) +ENGINE = NDB +PARTITION BY LIST(MOD(f_int1 + f_int2,4)) +(PARTITION part_3 VALUES IN (-3), +PARTITION part_2 VALUES IN (-2), +PARTITION part_1 VALUES IN (-1), +PARTITION part0 VALUES IN (0), +PARTITION part1 VALUES IN (1), +PARTITION part2 VALUES IN (2), +PARTITION part3 VALUES IN (3,4,5)); +INSERT INTO t1 SET f_int1 = -2, f_int2 = 20, f_char1 = '20', f_char2 = '20', f_charbig = '===20==='; +INSERT INTO t1 SET f_int1 = 1, f_int2 = 1, f_char1 = '1', f_char2 = '1', f_charbig = '===1==='; +INSERT INTO t1 SET f_int1 = 2, f_int2 = 1, f_char1 = '1', f_char2 = '1', f_charbig = '===1==='; +INSERT INTO t1 SET f_int1 = 3, f_int2 = 1, f_char1 = '1', f_char2 = '1', f_charbig = '===1==='; +INSERT INTO t1 SET f_int1 = 4, f_int2 = 1, f_char1 = '1', f_char2 = '1', f_charbig = '===1==='; +INSERT INTO t1 SET f_int1 = 5, f_int2 = 1, f_char1 = '1', f_char2 = '1', f_charbig = '===1==='; +INSERT INTO t1 SET f_int1 = 20, f_int2 = 1, f_char1 = '1', f_char2 = '1', f_charbig = '===1==='; +SELECT * FROM t1 ORDER BY f_int1; +f_int1 f_int2 f_char1 f_char2 f_charbig +-2 20 20 20 ===20=== +1 1 1 1 ===1=== +2 1 1 1 ===1=== +3 1 1 1 ===1=== +4 1 1 1 ===1=== +5 1 1 1 ===1=== +20 1 1 1 ===1=== +DROP TABLE t1; +CREATE TABLE t1 ( f_int1 INTEGER, f_int2 INTEGER, f_char1 CHAR(10), +f_char2 CHAR(10), f_charbig VARCHAR(1000)) +ENGINE = NDB +PARTITION BY LIST(f_int1) +(PARTITION part_1 VALUES IN (-1), +PARTITION part0 VALUES IN (0,1), +PARTITION part1 VALUES IN (2)); +INSERT INTO t1 SET f_int1 = -1, f_int2 = 20, f_char1 = '20', f_char2 = '20', f_charbig = '===20==='; +INSERT INTO t1 SET f_int1 = 0, f_int2 = 20, f_char1 = '20', f_char2 = '20', f_charbig = '===20==='; +INSERT INTO t1 SET f_int1 = 1, f_int2 = 1, f_char1 = '1', f_char2 = '1', f_charbig = '===1==='; +INSERT INTO t1 SET f_int1 = 2, f_int2 = 1, f_char1 = '1', f_char2 = '1', f_charbig = '===1==='; +INSERT INTO t1 SET f_int1 = 20, f_int2 = 1, f_char1 = '1', f_char2 = '1', f_charbig = '===1==='; +ERROR HY000: Table has no partition for value 20 +SELECT * FROM t1 ORDER BY f_int1; +f_int1 f_int2 f_char1 f_char2 f_charbig +-1 20 20 20 ===20=== +0 20 20 20 ===20=== +1 1 1 1 ===1=== +2 1 1 1 ===1=== +DROP TABLE t1; diff --git a/mysql-test/r/ndb_partition_range.result b/mysql-test/r/ndb_partition_range.result new file mode 100644 index 00000000000..cb79f04873e --- /dev/null +++ b/mysql-test/r/ndb_partition_range.result @@ -0,0 +1,263 @@ +drop table if exists t1; +CREATE TABLE t1 ( +a int not null, +b int not null, +c int not null, +primary key(a,b), +index (a)) +engine = ndb +partition by range (a) +partitions 3 +(partition x1 values less than (5), +partition x2 values less than (10), +partition x3 values less than (20)); +INSERT into t1 values (1, 1, 1); +INSERT into t1 values (6, 1, 1); +INSERT into t1 values (10, 1, 1); +INSERT into t1 values (15, 1, 1); +select * from information_schema.partitions where table_name= 't1'; +TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PARTITION_NAME SUBPARTITION_NAME PARTITION_ORDINAL_POSITION SUBPARTITION_ORDINAL_POSITION PARTITION_METHOD SUBPARTITION_METHOD PARTITION_EXPRESSION SUBPARTITION_EXPRESSION PARTITION_DESCRIPTION TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE CREATE_TIME UPDATE_TIME CHECK_TIME CHECKSUM PARTITION_COMMENT NODEGROUP TABLESPACE_NAME +NULL test t1 x1 NULL 1 NULL RANGE NULL a NULL 5 0 0 0 # 0 0 # # NULL NULL default 0 default +NULL test t1 x2 NULL 2 NULL RANGE NULL a NULL 10 0 0 0 # 0 0 # # NULL NULL default 0 default +NULL test t1 x3 NULL 3 NULL RANGE NULL a NULL 20 0 0 0 # 0 0 # # NULL NULL default 0 default +select * from t1 order by a; +a b c +1 1 1 +6 1 1 +10 1 1 +15 1 1 +select * from t1 where a=1 order by a; +a b c +1 1 1 +select * from t1 where a=15 and b=1 order by a; +a b c +15 1 1 +select * from t1 where a=21 and b=1 order by a; +a b c +select * from t1 where a=21 order by a; +a b c +select * from t1 where a in (1,6,10,21) order by a; +a b c +1 1 1 +6 1 1 +10 1 1 +select * from t1 where b=1 and a in (1,6,10,21) order by a; +a b c +1 1 1 +6 1 1 +10 1 1 +drop table t1; +CREATE TABLE t1 ( +a int not null, +b int not null, +c int not null, +primary key(b), +unique (a)) +engine = ndb +partition by range (b) +partitions 3 +(partition x1 values less than (5), +partition x2 values less than (10), +partition x3 values less than (20)); +INSERT into t1 values (1, 1, 1); +INSERT into t1 values (2, 6, 1); +INSERT into t1 values (3, 10, 1); +INSERT into t1 values (4, 15, 1); +select * from t1 order by a; +a b c +1 1 1 +2 6 1 +3 10 1 +4 15 1 +UPDATE t1 set a = 5 WHERE b = 15; +select * from t1 order by a; +a b c +1 1 1 +2 6 1 +3 10 1 +5 15 1 +UPDATE t1 set a = 6 WHERE a = 5; +select * from t1 order by a; +a b c +1 1 1 +2 6 1 +3 10 1 +6 15 1 +select * from t1 where b=1 order by b; +a b c +1 1 1 +select * from t1 where b=15 and a=1 order by b; +a b c +select * from t1 where b=21 and a=1 order by b; +a b c +select * from t1 where b=21 order by b; +a b c +select * from t1 where b in (1,6,10,21) order by b; +a b c +1 1 1 +2 6 1 +3 10 1 +select * from t1 where a in (1,2,5,6) order by b; +a b c +1 1 1 +2 6 1 +6 15 1 +select * from t1 where a=1 and b in (1,6,10,21) order by b; +a b c +1 1 1 +DELETE from t1 WHERE b = 6; +DELETE from t1 WHERE a = 6; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) NOT NULL, + `b` int(11) NOT NULL, + `c` int(11) NOT NULL, + PRIMARY KEY (`b`), + UNIQUE KEY `a` (`a`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY RANGE (b) (PARTITION x1 VALUES LESS THAN (5) ENGINE = ndbcluster, PARTITION x2 VALUES LESS THAN (10) ENGINE = ndbcluster, PARTITION x3 VALUES LESS THAN (20) ENGINE = ndbcluster) +drop table t1; +CREATE TABLE t1 +(id MEDIUMINT NOT NULL, +b1 BIT(8), +vc VARCHAR(255), +bc CHAR(255), +d DECIMAL(10,4) DEFAULT 0, +f FLOAT DEFAULT 0, +total BIGINT UNSIGNED, +y YEAR, +t DATE) ENGINE=NDB +PARTITION BY RANGE (YEAR(t)) +(PARTITION p0 VALUES LESS THAN (1901), +PARTITION p1 VALUES LESS THAN (1946), +PARTITION p2 VALUES LESS THAN (1966), +PARTITION p3 VALUES LESS THAN (1986), +PARTITION p4 VALUES LESS THAN (2005), +PARTITION p5 VALUES LESS THAN MAXVALUE); +INSERT INTO t1 VALUES (0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +SELECT * FROM t1; +id b1 vc bc d f total y t +0 NULL NULL NULL NULL NULL NULL NULL NULL +ALTER TABLE t1 ENGINE=MYISAM; +SELECT * FROM t1; +id b1 vc bc d f total y t +0 NULL NULL NULL NULL NULL NULL NULL NULL +DROP TABLE t1; +CREATE LOGFILE GROUP lg1 +ADD UNDOFILE 'undofile.dat' + INITIAL_SIZE 16M +UNDO_BUFFER_SIZE=1M +ENGINE=NDB; +CREATE TABLESPACE ts1 +ADD DATAFILE 'datafile.dat' + USE LOGFILE GROUP lg1 +INITIAL_SIZE 12M +ENGINE NDB; +CREATE TABLE test.t1 ( +a1 INT, +a2 TEXT NOT NULL, +a3 BIT NOT NULL, +a4 DECIMAL(8,3), +a5 INT NOT NULL, +a6 INT, +PRIMARY KEY(a1)) +TABLESPACE ts1 STORAGE DISK ENGINE=NDB +PARTITION BY LIST (a1) +(PARTITION p0 VALUES IN (1,2,3,4,5), +PARTITION p1 VALUES IN (6,7,8,9, 10), +PARTITION p2 VALUES IN (11, 12, 13, 14, 15)); +ALTER TABLE test.t1 DROP COLUMN a6; +ALTER TABLE test.t1 ADD COLUMN a6 VARCHAR(255); +SELECT COUNT(*) FROM test.t1; +COUNT(*) +15 +ALTER TABLE test.t1 DROP COLUMN a4; +SELECT COUNT(*) FROM test.t1; +COUNT(*) +15 +DROP TABLE t1; +CREATE TABLE test.t1 ( +a1 INT, +a2 TEXT NOT NULL, +a3 BIT NOT NULL, +a4 DECIMAL(8,3), +a5 INT NOT NULL, +a6 VARCHAR(255), +PRIMARY KEY(a1)) +TABLESPACE ts1 STORAGE DISK ENGINE=NDB +PARTITION BY HASH(a1) +PARTITIONS 4; +SELECT COUNT(*) FROM test.t1; +COUNT(*) +15 +ALTER TABLE test.t1 DROP COLUMN a4; +SELECT COUNT(*) FROM test.t1; +COUNT(*) +15 +DROP TABLE t1; +ALTER TABLESPACE ts1 +DROP DATAFILE 'datafile.dat' +ENGINE=NDB; +DROP TABLESPACE ts1 ENGINE=NDB; +DROP LOGFILE GROUP lg1 ENGINE=NDB; +CREATE TABLE t1 +(id MEDIUMINT NOT NULL, +b1 BIT(8), +vc VARCHAR(255), +bc CHAR(255), +d DECIMAL(10,4) DEFAULT 0, +f FLOAT DEFAULT 0, +total BIGINT UNSIGNED, +y YEAR, +t DATE) ENGINE=NDB +PARTITION BY LIST(id) +(PARTITION p0 VALUES IN (2, 4), +PARTITION p1 VALUES IN (42, 142)); +INSERT INTO t1 VALUES (2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +SELECT * FROM t1; +id b1 vc bc d f total y t +2 NULL NULL NULL NULL NULL NULL NULL NULL +ALTER TABLE t1 ADD PARTITION +(PARTITION p2 VALUES IN (412)); +SELECT * FROM t1; +id b1 vc bc d f total y t +2 NULL NULL NULL NULL NULL NULL NULL NULL +DROP TABLE t1; +CREATE TABLE t1 ( +a int not null, +b int not null, +c int not null) +partition by list(a) +partitions 2 +(partition x123 values in (1,5,6), +partition x234 values in (4,7,8)); +INSERT into t1 VALUES (5,1,1); +select * from t1; +a b c +5 1 1 +UPDATE t1 SET a=8 WHERE a=5 AND b=1; +select * from t1; +a b c +8 1 1 +drop table t1; +CREATE TABLE t1 ( f1 INTEGER, f2 char(20)) engine=ndb +PARTITION BY RANGE(f1) +( PARTITION part1 VALUES LESS THAN (2), +PARTITION part2 VALUES LESS THAN (1000)); +INSERT INTO t1 VALUES(1, '---1---'); +INSERT INTO t1 VALUES(2, '---2---'); +select * from t1 order by f1; +f1 f2 +1 ---1--- +2 ---2--- +UPDATE t1 SET f1 = f1 + 4 WHERE f1 = 2; +select * from t1 order by f1; +f1 f2 +1 ---1--- +6 ---2--- +UPDATE t1 SET f1 = f1 + 4 WHERE f1 = 1; +select * from t1 order by f1; +f1 f2 +5 ---1--- +6 ---2--- +drop table t1; diff --git a/mysql-test/t/ndb_blob_partition.test b/mysql-test/t/ndb_blob_partition.test new file mode 100644 index 00000000000..a3948cc9491 --- /dev/null +++ b/mysql-test/t/ndb_blob_partition.test @@ -0,0 +1,93 @@ +--source include/have_ndb.inc +-- source include/not_embedded.inc + +--disable_warnings +drop table if exists t1; +--enable_warnings + +# +# Minimal NDB blobs test with range partitions. +# + +create table t1 ( + a mediumint not null, + b text not null, + c int not null, + d longblob, + primary key using hash (a,c), + unique key (c) +) + engine=ndb + partition by range (c) + partitions 3 + ( partition p1 values less than (200), + partition p2 values less than (300), + partition p3 values less than (400)); + +--disable_query_log +sleep 1; + +# length 61 +set @s0 = 'rggurloniukyehuxdbfkkyzlceixzrehqhvxvxbpwizzvjzpucqmzrhzxzfau'; +set @s1 = 'ykyymbzqgqlcjhlhmyqelfoaaohvtbekvifukdtnvcrrjveevfakxarxexomz'; +set @s2 = 'dbnfqyzgtqxalcrwtfsqabknvtfcbpoonxsjiqvmhnfikxxhcgoexlkoezvah'; + +set @v1 = repeat(@s0, 100); -- 1d42dd9090cf78314a06665d4ea938c35cc760f4 +set @v2 = repeat(@s1, 200); -- 10d3c783026b310218d10b7188da96a2401648c6 +set @v3 = repeat(@s2, 300); -- a33549d9844092289a58ac348dd59f09fc28406a +set @v4 = repeat(@s0, 400); -- daa61c6de36a0526f0d47dc29d6b9de7e6d2630c +set @v5 = repeat(@s1, 500); -- 70fc9a7d08beebc522258bfb02000a30c77a8f1d +set @v6 = repeat(@s2, 600); -- 090565c580809efed3d369481a4bbb168b20713e +set @v7 = repeat(@s0, 700); -- 1e0070bec426871a46291de27b9bd6e4255ab4e5 +set @v8 = repeat(@s1, 800); -- acbaba01bc2e682f015f40e79d9cbe475db3002e +set @v9 = repeat(@s2, 900); -- 9ee30d99162574f79c66ae95cdf132dcf9cbc259 +--enable_query_log + +# -- insert -- +insert into t1 values (1, @v1, 101, @v2); +insert into t1 values (1, @v2, 102, @v3); +insert into t1 values (1, @v3, 103, @v4); +insert into t1 values (2, @v4, 201, @v5); +insert into t1 values (2, @v5, 202, @v6); +insert into t1 values (2, @v6, 203, @v7); +insert into t1 values (3, @v7, 301, @v8); +insert into t1 values (3, @v8, 302, @v9); +insert into t1 values (3, @v9, 303, @v1); +select a, sha1(b), c, sha1(d) from t1 order by a; + +# -- pk read -- +select a, sha1(b), c, sha1(d) from t1 where a = 1 and c = 101; +select a, sha1(b), c, sha1(d) from t1 where a = 2 and c = 201; +select a, sha1(b), c, sha1(d) from t1 where a = 3 and c = 301; + +# -- pk update -- +update t1 set b = @v3, d = @v4 where a = 1 and c = 102; +update t1 set b = @v6, d = @v7 where a = 2 and c = 202; +update t1 set b = @v9, d = @v1 where a = 3 and c = 302; +select a, sha1(b), c, sha1(d) from t1 order by a; + +# -- hash index update -- +update t1 set b = @v4, d = @v5 where c = 103; +update t1 set b = @v7, d = @v8 where c = 203; +update t1 set b = @v1, d = @v2 where c = 303; +select a, sha1(b), c, sha1(d) from t1 order by a; + +# -- full scan update -- +update t1 set b = @v5, d = @v6; +select a, sha1(b), c, sha1(d) from t1 order by a; + +# -- range scan update +update t1 set b = @v1, d = @v2 where 100 < c and c < 200; +update t1 set b = @v4, d = @v5 where 200 < c and c < 300; +update t1 set b = @v7, d = @v8 where 300 < c and c < 400; +select a, sha1(b), c, sha1(d) from t1 order by a; + +# -- delete -- +delete from t1 where a = 1 and c = 101; +delete from t1 where c = 102; +# delete from t1 where c < 300; # XXX coredump +delete from t1; +select a, sha1(b), c, sha1(d) from t1 order by a; + +# -- clean up -- +drop table t1; diff --git a/mysql-test/t/ndb_dd_backuprestore.test b/mysql-test/t/ndb_dd_backuprestore.test index 1508cccb46d..be6d73e27b4 100644 --- a/mysql-test/t/ndb_dd_backuprestore.test +++ b/mysql-test/t/ndb_dd_backuprestore.test @@ -159,15 +159,185 @@ DROP TABLE test.t1; DROP TABLE test.t2; DROP TABLE test.t3; DROP TABLE test.t4; +###################### Adding partition ################################# +-- echo **** Test 3 Adding partition Test backup and restore **** + +CREATE TABLESPACE table_space2 +ADD DATAFILE './table_space2/datafile.dat' +USE LOGFILE GROUP log_group1 +INITIAL_SIZE 12M +ENGINE NDB; + +CREATE TABLE test.t1 (pk1 MEDIUMINT NOT NULL AUTO_INCREMENT, c2 VARCHAR(150) NOT NULL, c3 INT NOT NULL, c4 BIT NOT NULL, PRIMARY KEY(pk1,c3))TABLESPACE table_space1 STORAGE DISK ENGINE=NDB PARTITION BY HASH(c3) PARTITIONS 4; + +CREATE TABLE test.t4 (pk1 MEDIUMINT NOT NULL AUTO_INCREMENT, c2 VARCHAR(180) NOT NULL, c3 INT NOT NULL, c4 BIT NOT NULL, PRIMARY KEY(pk1,c3))ENGINE=NDB PARTITION BY HASH(c3) PARTITIONS 2; + +CREATE TABLE test.t2 (pk1 MEDIUMINT NOT NULL AUTO_INCREMENT, c2 TEXT NOT NULL, c3 INT NOT NULL, c4 BIT NOT NULL, PRIMARY KEY(pk1,c3))TABLESPACE table_space2 STORAGE DISK ENGINE=NDB PARTITION BY KEY(c3) (PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB); + +CREATE TABLE test.t5 (pk1 MEDIUMINT NOT NULL AUTO_INCREMENT, c2 TEXT NOT NULL, c3 INT NOT NULL, c4 BIT NOT NULL, PRIMARY KEY(pk1,c3))ENGINE=NDB PARTITION BY KEY(pk1) (PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB); + +CREATE TABLE test.t3 (pk1 MEDIUMINT NOT NULL AUTO_INCREMENT, c2 VARCHAR(202) NOT NULL, c3 INT NOT NULL, c4 BIT NOT NULL, PRIMARY KEY(pk1,c3))TABLESPACE table_space2 STORAGE DISK ENGINE=NDB PARTITION BY RANGE (c3) PARTITIONS 3 (PARTITION x1 VALUES LESS THAN (105), PARTITION x2 VALUES LESS THAN (333), PARTITION x3 VALUES LESS THAN (720)); + +CREATE TABLE test.t6 (pk1 MEDIUMINT NOT NULL AUTO_INCREMENT, c2 VARCHAR(220) NOT NULL, c3 INT NOT NULL, c4 BIT NOT NULL, PRIMARY KEY(pk1,c3))ENGINE=NDB PARTITION BY RANGE (pk1) PARTITIONS 2 (PARTITION x1 VALUES LESS THAN (333), PARTITION x2 VALUES LESS THAN (720)); + +SHOW CREATE TABLE test.t1; + +SHOW CREATE TABLE test.t2; + +SHOW CREATE TABLE test.t3; + +SHOW CREATE TABLE test.t4; + +SHOW CREATE TABLE test.t5; + +SHOW CREATE TABLE test.t6; + +SELECT * FROM information_schema.partitions WHERE table_name= 't1'; + +SELECT * FROM information_schema.partitions WHERE table_name= 't2'; + +SELECT * FROM information_schema.partitions WHERE table_name= 't3'; + +SELECT * FROM information_schema.partitions WHERE table_name= 't4'; + +SELECT * FROM information_schema.partitions WHERE table_name= 't5'; + +SELECT * FROM information_schema.partitions WHERE table_name= 't6'; + + +let $j= 500; +--disable_query_log +while ($j) +{ + eval INSERT INTO test.t1 VALUES (NULL, "Sweden, Texas", $j, b'0'); + eval INSERT INTO test.t4 VALUES (NULL, "Sweden, Texas", $j, b'0'); + dec $j; + eval INSERT INTO test.t2 VALUES (NULL, "Sweden, Texas, ITALY, Kyle, JO, JBM,TU", $j, b'1'); + eval INSERT INTO test.t5 VALUES (NULL, "Sweden, Texas, ITALY, Kyle, JO, JBM,TU", $j, b'1'); + dec $j; + eval INSERT INTO test.t3 VALUES (NULL, "TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU", $j, b'1'); + eval INSERT INTO test.t6 VALUES (NULL, "TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU", $j, b'1'); } --enable_query_log + +SELECT COUNT(*) FROM test.t1; + +SELECT pk1, c2, c3, hex(c4) FROM test.t1 ORDER BY c3 LIMIT 5; + +SELECT COUNT(*) FROM test.t2; + +SELECT pk1, c2, c3, hex(c4) FROM test.t2 ORDER BY c3 LIMIT 5; + +SELECT COUNT(*) FROM test.t3; + +SELECT pk1, c2, c3, hex(c4) FROM test.t3 ORDER BY c3 LIMIT 5; + +SELECT COUNT(*) FROM test.t4; + +SELECT pk1, c2, c3, hex(c4) FROM test.t4 ORDER BY c3 LIMIT 5; + +SELECT COUNT(*) FROM test.t5; + +SELECT pk1, c2, c3, hex(c4) FROM test.t5 ORDER BY c3 LIMIT 5; + +SELECT COUNT(*) FROM test.t6; + +SELECT pk1, c2, c3, hex(c4) FROM test.t6 ORDER BY c3 LIMIT 5; + +-- source include/ndb_backup.inc + +DROP TABLE test.t1; +DROP TABLE test.t2; +DROP TABLE test.t3; +DROP TABLE test.t4; +DROP TABLE test.t5; +DROP TABLE test.t6; ALTER TABLESPACE table_space1 DROP DATAFILE './table_space1/datafile.dat' ENGINE = NDB; +ALTER TABLESPACE table_space2 +DROP DATAFILE './table_space2/datafile.dat' +ENGINE = NDB; + DROP TABLESPACE table_space1 ENGINE = NDB; +DROP TABLESPACE table_space2 +ENGINE = NDB; + DROP LOGFILE GROUP log_group1 ENGINE =NDB; +-- source include/ndb_restore_master.inc + + +SHOW CREATE TABLE test.t1; + +SHOW CREATE TABLE test.t2; + +SHOW CREATE TABLE test.t3; + +SHOW CREATE TABLE test.t4; + +SHOW CREATE TABLE test.t5; + +SHOW CREATE TABLE test.t6; + +SELECT * FROM information_schema.partitions WHERE table_name= 't1'; + +SELECT * FROM information_schema.partitions WHERE table_name= 't2'; + +SELECT * FROM information_schema.partitions WHERE table_name= 't3'; + +SELECT * FROM information_schema.partitions WHERE table_name= 't4'; + +SELECT * FROM information_schema.partitions WHERE table_name= 't5'; + +SELECT * FROM information_schema.partitions WHERE table_name= 't6'; + +SELECT COUNT(*) FROM test.t1; + +SELECT pk1, c2, c3, hex(c4) FROM test.t1 ORDER BY c3 LIMIT 5; + +SELECT COUNT(*) FROM test.t2; + +SELECT pk1, c2, c3, hex(c4) FROM test.t2 ORDER BY c3 LIMIT 5; + +SELECT COUNT(*) FROM test.t3; + +SELECT pk1, c2, c3, hex(c4) FROM test.t3 ORDER BY c3 LIMIT 5; + +SELECT COUNT(*) FROM test.t4; + +SELECT pk1, c2, c3, hex(c4) FROM test.t4 ORDER BY c3 LIMIT 5; + +SELECT COUNT(*) FROM test.t5; + +SELECT pk1, c2, c3, hex(c4) FROM test.t5 ORDER BY c3 LIMIT 5; + +SELECT COUNT(*) FROM test.t6; + +SELECT pk1, c2, c3, hex(c4) FROM test.t6 ORDER BY c3 LIMIT 5; + +# Cleanup + +DROP TABLE test.t1; +DROP TABLE test.t2; +DROP TABLE test.t3; +DROP TABLE test.t4; +DROP TABLE test.t5; +DROP TABLE test.t6; + +ALTER TABLESPACE table_space1 DROP DATAFILE './table_space1/datafile.dat' ENGINE=NDB; + +ALTER TABLESPACE table_space2 DROP DATAFILE './table_space2/datafile.dat' ENGINE=NDB; + +DROP TABLESPACE table_space1 ENGINE = NDB; + +DROP TABLESPACE table_space2 ENGINE = NDB; + +DROP LOGFILE GROUP log_group1 ENGINE = NDB; + #End 5.1 test case + + diff --git a/mysql-test/t/ndb_partition_error.test b/mysql-test/t/ndb_partition_error.test new file mode 100644 index 00000000000..06581f1270f --- /dev/null +++ b/mysql-test/t/ndb_partition_error.test @@ -0,0 +1,71 @@ +-- source include/have_ndb.inc +#--disable_abort_on_error +# +# Simple test for the partition storage engine +# Focuses on range partitioning tests +# +#-- source include/have_partition.inc + +--disable_warnings +drop table if exists t1; +--enable_warnings + +# +# Partition by range, generate node group error +# +--error 1005 +CREATE TABLE t1 ( +a int not null, +b int not null, +c int not null, +primary key(a,b), +index (a)) +engine = ndb +partition by range (a) +partitions 3 +(partition x1 values less than (5) nodegroup 12, + partition x2 values less than (10) nodegroup 13, + partition x3 values less than (20) nodegroup 14); +show warnings; + +# +# Partition by range, create normal valid table +# +CREATE TABLE t1 ( +a int not null, +b int not null, +c int not null, +primary key(a)) +engine = ndb +partition by range (a) +partitions 3 +(partition x1 values less than (5), + partition x2 values less than (10), + partition x3 values less than (20)); + +drop table t1; + +# +# Bug #17763 mysqld cores with list partitioning if update to missing partition +# +CREATE TABLE t1 (id INT) ENGINE=NDB + PARTITION BY LIST(id) + (PARTITION p0 VALUES IN (2, 4), + PARTITION p1 VALUES IN (42, 142)); +INSERT INTO t1 VALUES (2); +--error ER_NO_PARTITION_FOR_GIVEN_VALUE +UPDATE t1 SET id=5 WHERE id=2; +DROP TABLE t1; + +# +# NULL for LIST partition +# +create table t1 (a int,b int, c int) +engine = ndb +partition by list(a) +partitions 2 +(partition x123 values in (11, 12), + partition x234 values in (5, 1)); +--error ER_NO_PARTITION_FOR_GIVEN_VALUE +insert into t1 values (NULL,1,1); +drop table t1; diff --git a/mysql-test/t/ndb_partition_key.test b/mysql-test/t/ndb_partition_key.test new file mode 100644 index 00000000000..fb0581eb6f6 --- /dev/null +++ b/mysql-test/t/ndb_partition_key.test @@ -0,0 +1,198 @@ +-- source include/have_ndb.inc + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +# +# Basic syntax test +# + +# Support for partition key verified +CREATE TABLE t1 (a int, b int, c int, d int, PRIMARY KEY(a,b,c)) + ENGINE = NDB + PARTITION BY KEY (a,b); + +insert into t1 values (1,1,1,1); +select * from t1; +update t1 set d = 2 where a = 1 and b = 1 and c = 1; +select * from t1; +delete from t1; +select * from t1; + +drop table t1; + +# only support for partition key on primary key +--error ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF +CREATE TABLE t1 (a int, b int, c int, d int, PRIMARY KEY(a,b)) + ENGINE = NDB + PARTITION BY KEY (c); + +CREATE TABLE t1 (a int, b int, c int, PRIMARY KEY(a,b)) + ENGINE = NDB + PARTITION BY KEY (a); + +insert into t1 values + (1,1,3),(1,2,3),(1,3,3),(1,4,3),(1,5,3),(1,6,3), + (1,7,3),(1,8,3),(1,9,3),(1,10,3),(1,11,3),(1,12,3); + +select * from t1 order by b; + +DROP TABLE t1; + +# +# Test partition and char support +# + +CREATE TABLE t1 (a INT, b CHAR(10) COLLATE latin1_bin, c INT, d INT, + PRIMARY KEY (a,b,c) USING HASH) + ENGINE=NDB + DEFAULT CHARSET=latin1 + PARTITION BY KEY (b); + +insert into t1 values (1,"a",1,1),(2,"a",1,1),(3,"a",1,1); + +# should show only one attribute with DISTRIBUTION KEY +--exec $NDB_TOOLS_DIR/ndb_desc --no-defaults -d test t1 | sed 's/Version: [0-9]*//' | sed 's/\(Length of frm data: \)[0-9]*/\1#/' + +# +# Test that explicit partition info is not shown in show create table +# result should not contain (PARTITION P0 ... etc) since this is what shows up in +# mysqldump, and we don't want that info there +# +show create table t1; + +DROP TABLE t1; + +# +# Bug #13155: Problem in Create Table using SHOW CREATE TABLE syntax +# +CREATE TABLE t1 (a int not null primary key) +PARTITION BY KEY(a) +(PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB); + +drop table t1; + +CREATE TABLE t1 (a int not null primary key); +ALTER TABLE t1 +PARTITION BY KEY(a) +(PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB); + +drop table t1; + +# +# Bug #17754 Improper handling of removal of partitioning in ALTER TABLE +# Also added a number of general test cases in the same area +# +create table t1 (a int) +engine=ndb +partition by key(a) +(partition p0, partition p1); +show create table t1; + +alter table t1 engine=heap; +show create table t1; + +alter table t1 engine=ndb; +show create table t1; + +alter table t1 engine=heap remove partitioning; +show create table t1; + +alter table t1 engine=ndb +partition by key(a) +(partition p0, partition p1 engine = ndb); +show create table t1; + +alter table t1 +partition by key (a) +(partition p0 engine=ndb, partition p1 engine=ndb); +show create table t1; + +alter table t1 remove partitioning; +show create table t1; + +--error ER_MIX_HANDLER_ERROR +alter table t1 +partition by key(a) +(partition p0 engine=ndb, partition p1); + +alter table t1 +engine=ndb +partition by key(a) +(partition p0 engine=ndb, partition p1 engine = ndb); +show create table t1; + +drop table t1; + +# +# BUG 16810 Out of memory when coalesce partition +# +CREATE TABLE t1 ( + c1 MEDIUMINT NOT NULL AUTO_INCREMENT, + c2 TEXT NOT NULL, + c3 INT NOT NULL, + c4 BIT NOT NULL, + c5 FLOAT, + c6 VARCHAR(255), + c7 TIMESTAMP, + PRIMARY KEY(c1,c3)) + ENGINE=NDB + PARTITION BY KEY(c3) PARTITIONS 5; + +let $j= 11; +--disable_query_log +while ($j) +{ + eval INSERT INTO t1 VALUES (NULL, "Tested Remotely from Texas, USA", $j, +b'0', + $j.00,"By JBM $j","2006-01-26"); + dec $j; +} +--enable_query_log +ALTER TABLE t1 COALESCE PARTITION 4; + +DROP TABLE t1; + +# +# Bug 16822: OPTIMIZE TABLE hangs test +# +CREATE TABLE t1 (a int primary key) +ENGINE=NDB +PARTITION BY KEY(a); +--error 1031 +ALTER TABLE t1 OPTIMIZE PARTITION p0; +--error 1031 +ALTER TABLE t1 CHECK PARTITION p0; +--error 1031 +ALTER TABLE t1 REPAIR PARTITION p0; +--error 1031 +ALTER TABLE t1 ANALYZE PARTITION p0; +--error 1031 +ALTER TABLE t1 REBUILD PARTITION p0; +DROP TABLE t1; + +# +# BUG 16806: ALTER TABLE fails +# +CREATE TABLE t1 ( + c1 MEDIUMINT NOT NULL AUTO_INCREMENT, + c2 TEXT NOT NULL, + c3 INT NOT NULL, + PRIMARY KEY(c1,c3)) + ENGINE=NDB + PARTITION BY KEY(c3) PARTITIONS 5; + +ALTER TABLE t1 ADD COLUMN c4 INT AFTER c1; +DROP TABLE t1; + +CREATE TABLE t1 ( + c1 MEDIUMINT NOT NULL AUTO_INCREMENT, + c2 TEXT NOT NULL, + c3 INT NOT NULL, + PRIMARY KEY(c1,c3)) + ENGINE=NDB + PARTITION BY KEY(c3); + +ALTER TABLE t1 ADD COLUMN c4 INT AFTER c1; +DROP TABLE t1; diff --git a/mysql-test/t/ndb_partition_list.test b/mysql-test/t/ndb_partition_list.test new file mode 100644 index 00000000000..2ad37b8768c --- /dev/null +++ b/mysql-test/t/ndb_partition_list.test @@ -0,0 +1,64 @@ +--source include/have_ndb.inc +# +# Simple test for the partition storage engine +# Focuses on range partitioning tests +# +#-- source include/have_partition.inc + +--disable_warnings +drop table if exists t1; +--enable_warnings + +# +# Partition by list, basic +# + +CREATE TABLE t1 ( f_int1 INTEGER NOT NULL, f_int2 INTEGER NOT NULL, + f_char1 CHAR(10), + f_char2 CHAR(10), f_charbig VARCHAR(1000), +PRIMARY KEY (f_int1,f_int2)) +ENGINE = NDB +PARTITION BY LIST(MOD(f_int1 + f_int2,4)) +(PARTITION part_3 VALUES IN (-3), + PARTITION part_2 VALUES IN (-2), + PARTITION part_1 VALUES IN (-1), + PARTITION part0 VALUES IN (0), + PARTITION part1 VALUES IN (1), + PARTITION part2 VALUES IN (2), + PARTITION part3 VALUES IN (3,4,5)); + +INSERT INTO t1 SET f_int1 = -2, f_int2 = 20, f_char1 = '20', f_char2 = '20', f_charbig = '===20==='; +INSERT INTO t1 SET f_int1 = 1, f_int2 = 1, f_char1 = '1', f_char2 = '1', f_charbig = '===1==='; +INSERT INTO t1 SET f_int1 = 2, f_int2 = 1, f_char1 = '1', f_char2 = '1', f_charbig = '===1==='; +INSERT INTO t1 SET f_int1 = 3, f_int2 = 1, f_char1 = '1', f_char2 = '1', f_charbig = '===1==='; +INSERT INTO t1 SET f_int1 = 4, f_int2 = 1, f_char1 = '1', f_char2 = '1', f_charbig = '===1==='; +INSERT INTO t1 SET f_int1 = 5, f_int2 = 1, f_char1 = '1', f_char2 = '1', f_charbig = '===1==='; +INSERT INTO t1 SET f_int1 = 20, f_int2 = 1, f_char1 = '1', f_char2 = '1', f_charbig = '===1==='; + +SELECT * FROM t1 ORDER BY f_int1; + +DROP TABLE t1; + +# +# Partition by list, no pk +# + +CREATE TABLE t1 ( f_int1 INTEGER, f_int2 INTEGER, f_char1 CHAR(10), + f_char2 CHAR(10), f_charbig VARCHAR(1000)) +ENGINE = NDB +PARTITION BY LIST(f_int1) +(PARTITION part_1 VALUES IN (-1), + PARTITION part0 VALUES IN (0,1), + PARTITION part1 VALUES IN (2)); + +INSERT INTO t1 SET f_int1 = -1, f_int2 = 20, f_char1 = '20', f_char2 = '20', f_charbig = '===20==='; +INSERT INTO t1 SET f_int1 = 0, f_int2 = 20, f_char1 = '20', f_char2 = '20', f_charbig = '===20==='; +INSERT INTO t1 SET f_int1 = 1, f_int2 = 1, f_char1 = '1', f_char2 = '1', f_charbig = '===1==='; +INSERT INTO t1 SET f_int1 = 2, f_int2 = 1, f_char1 = '1', f_char2 = '1', f_charbig = '===1==='; +--error ER_NO_PARTITION_FOR_GIVEN_VALUE +INSERT INTO t1 SET f_int1 = 20, f_int2 = 1, f_char1 = '1', f_char2 = '1', f_charbig = '===1==='; + +SELECT * FROM t1 ORDER BY f_int1; + +DROP TABLE t1; + diff --git a/mysql-test/t/ndb_partition_range.test b/mysql-test/t/ndb_partition_range.test new file mode 100644 index 00000000000..981467d4055 --- /dev/null +++ b/mysql-test/t/ndb_partition_range.test @@ -0,0 +1,260 @@ +-- source include/have_ndb.inc +#--disable_abort_on_error +# +# Simple test for the partition storage engine +# Focuses on range partitioning tests +# +#-- source include/have_partition.inc + +--disable_warnings +drop table if exists t1; +--enable_warnings + +# +# Partition by range, basic +# +CREATE TABLE t1 ( +a int not null, +b int not null, +c int not null, +primary key(a,b), +index (a)) +engine = ndb +partition by range (a) +partitions 3 +(partition x1 values less than (5), + partition x2 values less than (10), + partition x3 values less than (20)); + +# Simple insert and verify test +INSERT into t1 values (1, 1, 1); +INSERT into t1 values (6, 1, 1); +INSERT into t1 values (10, 1, 1); +INSERT into t1 values (15, 1, 1); + +--replace_column 16 # 19 # 20 # +select * from information_schema.partitions where table_name= 't1'; + +select * from t1 order by a; + +select * from t1 where a=1 order by a; +select * from t1 where a=15 and b=1 order by a; +select * from t1 where a=21 and b=1 order by a; +select * from t1 where a=21 order by a; +select * from t1 where a in (1,6,10,21) order by a; +select * from t1 where b=1 and a in (1,6,10,21) order by a; + +drop table t1; + +# +# Partition by range, basic +# +CREATE TABLE t1 ( +a int not null, +b int not null, +c int not null, +primary key(b), +unique (a)) +engine = ndb +partition by range (b) +partitions 3 +(partition x1 values less than (5), + partition x2 values less than (10), + partition x3 values less than (20)); + +# Simple insert and verify test +INSERT into t1 values (1, 1, 1); +INSERT into t1 values (2, 6, 1); +INSERT into t1 values (3, 10, 1); +INSERT into t1 values (4, 15, 1); + +select * from t1 order by a; +UPDATE t1 set a = 5 WHERE b = 15; +select * from t1 order by a; +UPDATE t1 set a = 6 WHERE a = 5; +select * from t1 order by a; + +select * from t1 where b=1 order by b; +select * from t1 where b=15 and a=1 order by b; +select * from t1 where b=21 and a=1 order by b; +select * from t1 where b=21 order by b; +select * from t1 where b in (1,6,10,21) order by b; +select * from t1 where a in (1,2,5,6) order by b; +select * from t1 where a=1 and b in (1,6,10,21) order by b; + +DELETE from t1 WHERE b = 6; +DELETE from t1 WHERE a = 6; + +# +# Test that explicit partition info _is_ shown in show create table +# result _should_ contain (PARTITION x1 ... etc) +# +show create table t1; + +drop table t1; + +# +# Bug #17499, #17687 +# Alter partitioned NDB table causes mysqld to core +# + +CREATE TABLE t1 + (id MEDIUMINT NOT NULL, + b1 BIT(8), + vc VARCHAR(255), + bc CHAR(255), + d DECIMAL(10,4) DEFAULT 0, + f FLOAT DEFAULT 0, + total BIGINT UNSIGNED, + y YEAR, + t DATE) ENGINE=NDB + PARTITION BY RANGE (YEAR(t)) + (PARTITION p0 VALUES LESS THAN (1901), + PARTITION p1 VALUES LESS THAN (1946), + PARTITION p2 VALUES LESS THAN (1966), + PARTITION p3 VALUES LESS THAN (1986), + PARTITION p4 VALUES LESS THAN (2005), + PARTITION p5 VALUES LESS THAN MAXVALUE); + +INSERT INTO t1 VALUES (0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +SELECT * FROM t1; +ALTER TABLE t1 ENGINE=MYISAM; +SELECT * FROM t1; +DROP TABLE t1; + +CREATE LOGFILE GROUP lg1 + ADD UNDOFILE 'undofile.dat' + INITIAL_SIZE 16M + UNDO_BUFFER_SIZE=1M + ENGINE=NDB; + +CREATE TABLESPACE ts1 + ADD DATAFILE 'datafile.dat' + USE LOGFILE GROUP lg1 + INITIAL_SIZE 12M + ENGINE NDB; + +CREATE TABLE test.t1 ( + a1 INT, + a2 TEXT NOT NULL, + a3 BIT NOT NULL, + a4 DECIMAL(8,3), + a5 INT NOT NULL, + a6 INT, + PRIMARY KEY(a1)) + TABLESPACE ts1 STORAGE DISK ENGINE=NDB + PARTITION BY LIST (a1) + (PARTITION p0 VALUES IN (1,2,3,4,5), + PARTITION p1 VALUES IN (6,7,8,9, 10), + PARTITION p2 VALUES IN (11, 12, 13, 14, 15)); + +# Alter table directly without any statements inbetween +ALTER TABLE test.t1 DROP COLUMN a6; +ALTER TABLE test.t1 ADD COLUMN a6 VARCHAR(255); + +let $j= 15; +--disable_query_log +while ($j) +{ +eval INSERT INTO test.t1 VALUES ($j, "Tested Remotely from Texas, USA", +b'1',$j.00,$j+1,"By NIK $j"); +dec $j; +} +--enable_query_log +SELECT COUNT(*) FROM test.t1; + +ALTER TABLE test.t1 DROP COLUMN a4; +SELECT COUNT(*) FROM test.t1; + +DROP TABLE t1; + +CREATE TABLE test.t1 ( + a1 INT, + a2 TEXT NOT NULL, + a3 BIT NOT NULL, + a4 DECIMAL(8,3), + a5 INT NOT NULL, + a6 VARCHAR(255), + PRIMARY KEY(a1)) + TABLESPACE ts1 STORAGE DISK ENGINE=NDB + PARTITION BY HASH(a1) + PARTITIONS 4; + +let $j= 15; +--disable_query_log +while ($j) +{ +eval INSERT INTO test.t1 VALUES ($j, "Tested Remotely from Texas, USA", +b'1',$j.00,$j+1,"By NIK $j"); +dec $j; +} +--enable_query_log +SELECT COUNT(*) FROM test.t1; + +ALTER TABLE test.t1 DROP COLUMN a4; +SELECT COUNT(*) FROM test.t1; + +DROP TABLE t1; + +ALTER TABLESPACE ts1 + DROP DATAFILE 'datafile.dat' + ENGINE=NDB; +DROP TABLESPACE ts1 ENGINE=NDB; +DROP LOGFILE GROUP lg1 ENGINE=NDB; + + +# +# Bug #17701 ALTER TABLE t1 ADD PARTITION for PARTITION BY LIST hangs test +# + +CREATE TABLE t1 + (id MEDIUMINT NOT NULL, + b1 BIT(8), + vc VARCHAR(255), + bc CHAR(255), + d DECIMAL(10,4) DEFAULT 0, + f FLOAT DEFAULT 0, + total BIGINT UNSIGNED, + y YEAR, + t DATE) ENGINE=NDB + PARTITION BY LIST(id) + (PARTITION p0 VALUES IN (2, 4), + PARTITION p1 VALUES IN (42, 142)); + +INSERT INTO t1 VALUES (2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +SELECT * FROM t1; +ALTER TABLE t1 ADD PARTITION + (PARTITION p2 VALUES IN (412)); +SELECT * FROM t1; +DROP TABLE t1; + +# +# Bug #17806 Update on NDB table with list partition causes mysqld to core +# Bug #16385 Partitions: crash when updating a range partitioned NDB table +# +CREATE TABLE t1 ( +a int not null, +b int not null, +c int not null) +partition by list(a) +partitions 2 +(partition x123 values in (1,5,6), + partition x234 values in (4,7,8)); +INSERT into t1 VALUES (5,1,1); +select * from t1; +UPDATE t1 SET a=8 WHERE a=5 AND b=1; +select * from t1; +drop table t1; + +CREATE TABLE t1 ( f1 INTEGER, f2 char(20)) engine=ndb +PARTITION BY RANGE(f1) +( PARTITION part1 VALUES LESS THAN (2), +PARTITION part2 VALUES LESS THAN (1000)); +INSERT INTO t1 VALUES(1, '---1---'); +INSERT INTO t1 VALUES(2, '---2---'); +select * from t1 order by f1; +UPDATE t1 SET f1 = f1 + 4 WHERE f1 = 2; +select * from t1 order by f1; +UPDATE t1 SET f1 = f1 + 4 WHERE f1 = 1; +select * from t1 order by f1; +drop table t1; -- cgit v1.2.1 From ea7f1a6192253c6b956a1a1865d040ec04fc6554 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 27 Jun 2006 18:44:25 +0200 Subject: rpl_ndb_dd_partitions.test, rpl_ndb_dd_partitions.result: Adding back ndb partition tests from mysql-test-extra per tomas and clavin new file mysql-test/r/rpl_ndb_dd_partitions.result: Adding back ndb partition tests from mysql-test-extra per tomas and clavin mysql-test/t/rpl_ndb_dd_partitions.test: Adding back ndb partition tests from mysql-test-extra per tomas and clavin --- mysql-test/r/rpl_ndb_dd_partitions.result | 726 ++++++++++++++++++++++++++++++ mysql-test/t/rpl_ndb_dd_partitions.test | 310 +++++++++++++ 2 files changed, 1036 insertions(+) create mode 100644 mysql-test/r/rpl_ndb_dd_partitions.result create mode 100644 mysql-test/t/rpl_ndb_dd_partitions.test diff --git a/mysql-test/r/rpl_ndb_dd_partitions.result b/mysql-test/r/rpl_ndb_dd_partitions.result new file mode 100644 index 00000000000..ece6b84c227 --- /dev/null +++ b/mysql-test/r/rpl_ndb_dd_partitions.result @@ -0,0 +1,726 @@ +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +--- Doing pre test cleanup --- +DROP TABLE IF EXISTS t1; +CREATE LOGFILE GROUP lg1 +ADD UNDOFILE 'undofile.dat' +INITIAL_SIZE 16M +UNDO_BUFFER_SIZE = 1M +ENGINE=NDB; +ALTER LOGFILE GROUP lg1 +ADD UNDOFILE 'undofile02.dat' +INITIAL_SIZE = 4M +ENGINE=NDB; +CREATE TABLESPACE ts1 +ADD DATAFILE 'datafile.dat' +USE LOGFILE GROUP lg1 +INITIAL_SIZE 12M +ENGINE NDB; +ALTER TABLESPACE ts1 +ADD DATAFILE 'datafile02.dat' +INITIAL_SIZE = 4M +ENGINE=NDB; +--- Start test 2 partition RANGE testing -- +--- Do setup -- +CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(63), +bc CHAR(63), d DECIMAL(10,4) DEFAULT 0, +f FLOAT DEFAULT 0, total BIGINT UNSIGNED, +y YEAR, t DATE) +TABLESPACE ts1 STORAGE DISK +ENGINE=NDB +PARTITION BY RANGE (YEAR(t)) +(PARTITION p0 VALUES LESS THAN (1901), +PARTITION p1 VALUES LESS THAN (1946), +PARTITION p2 VALUES LESS THAN (1966), +PARTITION p3 VALUES LESS THAN (1986), +PARTITION p4 VALUES LESS THAN (2005), +PARTITION p5 VALUES LESS THAN MAXVALUE); +--- Show table on master --- +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `id` mediumint(9) NOT NULL, + `b1` bit(8) DEFAULT NULL, + `vc` varchar(63) DEFAULT NULL, + `bc` char(63) DEFAULT NULL, + `d` decimal(10,4) DEFAULT '0.0000', + `f` float DEFAULT '0', + `total` bigint(20) unsigned DEFAULT NULL, + `y` year(4) DEFAULT NULL, + `t` date DEFAULT NULL +) TABLESPACE ts1 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY RANGE (YEAR(t)) (PARTITION p0 VALUES LESS THAN (1901) ENGINE = ndbcluster, PARTITION p1 VALUES LESS THAN (1946) ENGINE = ndbcluster, PARTITION p2 VALUES LESS THAN (1966) ENGINE = ndbcluster, PARTITION p3 VALUES LESS THAN (1986) ENGINE = ndbcluster, PARTITION p4 VALUES LESS THAN (2005) ENGINE = ndbcluster, PARTITION p5 VALUES LESS THAN MAXVALUE ENGINE = ndbcluster) +--- Show table on slave -- +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `id` mediumint(9) NOT NULL, + `b1` bit(8) DEFAULT NULL, + `vc` varchar(63) DEFAULT NULL, + `bc` char(63) DEFAULT NULL, + `d` decimal(10,4) DEFAULT '0.0000', + `f` float DEFAULT '0', + `total` bigint(20) unsigned DEFAULT NULL, + `y` year(4) DEFAULT NULL, + `t` date DEFAULT NULL +) TABLESPACE ts1 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY RANGE (YEAR(t)) (PARTITION p0 VALUES LESS THAN (1901) ENGINE = ndbcluster, PARTITION p1 VALUES LESS THAN (1946) ENGINE = ndbcluster, PARTITION p2 VALUES LESS THAN (1966) ENGINE = ndbcluster, PARTITION p3 VALUES LESS THAN (1986) ENGINE = ndbcluster, PARTITION p4 VALUES LESS THAN (2005) ENGINE = ndbcluster, PARTITION p5 VALUES LESS THAN MAXVALUE ENGINE = ndbcluster) +--- Perform basic operation on master --- +--- and ensure replicated correctly --- +"--- Insert into t1 --" as ""; +--- Select from t1 on master --- +select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; +id hex(b1) vc bc d f total y t +2 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1965-11-14 +4 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1985-11-14 +42 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1905-11-14 +142 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1995-11-14 +412 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2005-11-14 +--- Select from t1 on slave --- +select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; +id hex(b1) vc bc d f total y t +2 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1965-11-14 +4 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1985-11-14 +42 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1905-11-14 +142 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1995-11-14 +412 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2005-11-14 +--- Update t1 on master -- +UPDATE t1 SET b1 = 0, t="2006-02-22" WHERE id = 412; +--- Check the update on master --- +SELECT id,hex(b1),vc,bc,d,f,total,y,t FROM t1 WHERE id = 412; +id hex(b1) vc bc d f total y t +412 0 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2006-02-22 +--- Check Update on slave --- +SELECT id,hex(b1),vc,bc,d,f,total,y,t FROM t1 WHERE id = 412; +id hex(b1) vc bc d f total y t +412 0 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2006-02-22 +--- Remove a record from t1 on master --- +DELETE FROM t1 WHERE id = 42; +--- Show current count on master for t1 --- +SELECT COUNT(*) FROM t1; +COUNT(*) +4 +--- Show current count on slave for t1 --- +SELECT COUNT(*) FROM t1; +COUNT(*) +4 +DELETE FROM t1; +--- Check that simple Alter statements are replicated correctly --- +ALTER TABLE t1 MODIFY vc VARCHAR(255); +--- Show the new improved table on the master --- +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `id` mediumint(9) NOT NULL, + `b1` bit(8) DEFAULT NULL, + `vc` varchar(255) DEFAULT NULL, + `bc` char(63) DEFAULT NULL, + `d` decimal(10,4) DEFAULT '0.0000', + `f` float DEFAULT '0', + `total` bigint(20) unsigned DEFAULT NULL, + `y` year(4) DEFAULT NULL, + `t` date DEFAULT NULL +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY RANGE (YEAR(t)) (PARTITION p0 VALUES LESS THAN (1901) ENGINE = ndbcluster, PARTITION p1 VALUES LESS THAN (1946) ENGINE = ndbcluster, PARTITION p2 VALUES LESS THAN (1966) ENGINE = ndbcluster, PARTITION p3 VALUES LESS THAN (1986) ENGINE = ndbcluster, PARTITION p4 VALUES LESS THAN (2005) ENGINE = ndbcluster, PARTITION p5 VALUES LESS THAN MAXVALUE ENGINE = ndbcluster) +--- Make sure that our tables on slave are still same engine --- +--- and that the alter statements replicated correctly --- +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `id` mediumint(9) NOT NULL, + `b1` bit(8) DEFAULT NULL, + `vc` varchar(255) DEFAULT NULL, + `bc` char(63) DEFAULT NULL, + `d` decimal(10,4) DEFAULT '0.0000', + `f` float DEFAULT '0', + `total` bigint(20) unsigned DEFAULT NULL, + `y` year(4) DEFAULT NULL, + `t` date DEFAULT NULL +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY RANGE (YEAR(t)) (PARTITION p0 VALUES LESS THAN (1901) ENGINE = ndbcluster, PARTITION p1 VALUES LESS THAN (1946) ENGINE = ndbcluster, PARTITION p2 VALUES LESS THAN (1966) ENGINE = ndbcluster, PARTITION p3 VALUES LESS THAN (1986) ENGINE = ndbcluster, PARTITION p4 VALUES LESS THAN (2005) ENGINE = ndbcluster, PARTITION p5 VALUES LESS THAN MAXVALUE ENGINE = ndbcluster) +--- Perform basic operation on master --- +--- and ensure replicated correctly --- +"--- Insert into t1 --" as ""; +--- Select from t1 on master --- +select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; +id hex(b1) vc bc d f total y t +2 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1965-11-14 +4 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1985-11-14 +42 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1905-11-14 +142 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1995-11-14 +412 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2005-11-14 +--- Select from t1 on slave --- +select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; +id hex(b1) vc bc d f total y t +2 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1965-11-14 +4 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1985-11-14 +42 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1905-11-14 +142 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1995-11-14 +412 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2005-11-14 +--- Update t1 on master -- +UPDATE t1 SET b1 = 0, t="2006-02-22" WHERE id = 412; +--- Check the update on master --- +SELECT id,hex(b1),vc,bc,d,f,total,y,t FROM t1 WHERE id = 412; +id hex(b1) vc bc d f total y t +412 0 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2006-02-22 +--- Check Update on slave --- +SELECT id,hex(b1),vc,bc,d,f,total,y,t FROM t1 WHERE id = 412; +id hex(b1) vc bc d f total y t +412 0 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2006-02-22 +--- Remove a record from t1 on master --- +DELETE FROM t1 WHERE id = 42; +--- Show current count on master for t1 --- +SELECT COUNT(*) FROM t1; +COUNT(*) +4 +--- Show current count on slave for t1 --- +SELECT COUNT(*) FROM t1; +COUNT(*) +4 +DELETE FROM t1; +--- End test 2 partition RANGE testing --- +--- Do Cleanup --- +DROP TABLE IF EXISTS t1; +--- Start test 3 partition LIST testing --- +--- Do setup --- +CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(63), +bc CHAR(63), d DECIMAL(10,4) DEFAULT 0, +f FLOAT DEFAULT 0, total BIGINT UNSIGNED, +y YEAR, t DATE) +TABLESPACE ts1 STORAGE DISK +ENGINE=NDB +PARTITION BY LIST(id) +(PARTITION p0 VALUES IN (2, 4), +PARTITION p1 VALUES IN (42, 142)); +--- Test 3 Alter to add partition --- +ALTER TABLE t1 ADD PARTITION (PARTITION p2 VALUES IN (412)); +--- Show table on master --- +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `id` mediumint(9) NOT NULL, + `b1` bit(8) DEFAULT NULL, + `vc` varchar(63) DEFAULT NULL, + `bc` char(63) DEFAULT NULL, + `d` decimal(10,4) DEFAULT '0.0000', + `f` float DEFAULT '0', + `total` bigint(20) unsigned DEFAULT NULL, + `y` year(4) DEFAULT NULL, + `t` date DEFAULT NULL +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY LIST (id) (PARTITION p0 VALUES IN (2,4) ENGINE = ndbcluster, PARTITION p1 VALUES IN (42,142) ENGINE = ndbcluster, PARTITION p2 VALUES IN (412) ENGINE = ndbcluster) +--- Show table on slave --- +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `id` mediumint(9) NOT NULL, + `b1` bit(8) DEFAULT NULL, + `vc` varchar(63) DEFAULT NULL, + `bc` char(63) DEFAULT NULL, + `d` decimal(10,4) DEFAULT '0.0000', + `f` float DEFAULT '0', + `total` bigint(20) unsigned DEFAULT NULL, + `y` year(4) DEFAULT NULL, + `t` date DEFAULT NULL +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY LIST (id) (PARTITION p0 VALUES IN (2,4) ENGINE = ndbcluster, PARTITION p1 VALUES IN (42,142) ENGINE = ndbcluster, PARTITION p2 VALUES IN (412) ENGINE = ndbcluster) +--- Perform basic operation on master --- +--- and ensure replicated correctly --- +"--- Insert into t1 --" as ""; +--- Select from t1 on master --- +select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; +id hex(b1) vc bc d f total y t +2 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1965-11-14 +4 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1985-11-14 +42 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1905-11-14 +142 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1995-11-14 +412 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2005-11-14 +--- Select from t1 on slave --- +select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; +id hex(b1) vc bc d f total y t +2 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1965-11-14 +4 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1985-11-14 +42 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1905-11-14 +142 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1995-11-14 +412 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2005-11-14 +--- Update t1 on master -- +UPDATE t1 SET b1 = 0, t="2006-02-22" WHERE id = 412; +--- Check the update on master --- +SELECT id,hex(b1),vc,bc,d,f,total,y,t FROM t1 WHERE id = 412; +id hex(b1) vc bc d f total y t +412 0 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2006-02-22 +--- Check Update on slave --- +SELECT id,hex(b1),vc,bc,d,f,total,y,t FROM t1 WHERE id = 412; +id hex(b1) vc bc d f total y t +412 0 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2006-02-22 +--- Remove a record from t1 on master --- +DELETE FROM t1 WHERE id = 42; +--- Show current count on master for t1 --- +SELECT COUNT(*) FROM t1; +COUNT(*) +4 +--- Show current count on slave for t1 --- +SELECT COUNT(*) FROM t1; +COUNT(*) +4 +DELETE FROM t1; +--- Check that simple Alter statements are replicated correctly --- +ALTER TABLE t1 MODIFY vc VARCHAR(255); +--- Show the new improved table on the master --- +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `id` mediumint(9) NOT NULL, + `b1` bit(8) DEFAULT NULL, + `vc` varchar(255) DEFAULT NULL, + `bc` char(63) DEFAULT NULL, + `d` decimal(10,4) DEFAULT '0.0000', + `f` float DEFAULT '0', + `total` bigint(20) unsigned DEFAULT NULL, + `y` year(4) DEFAULT NULL, + `t` date DEFAULT NULL +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY LIST (id) (PARTITION p0 VALUES IN (2,4) ENGINE = ndbcluster, PARTITION p1 VALUES IN (42,142) ENGINE = ndbcluster, PARTITION p2 VALUES IN (412) ENGINE = ndbcluster) +--- Make sure that our tables on slave are still same engine --- +--- and that the alter statements replicated correctly --- +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `id` mediumint(9) NOT NULL, + `b1` bit(8) DEFAULT NULL, + `vc` varchar(255) DEFAULT NULL, + `bc` char(63) DEFAULT NULL, + `d` decimal(10,4) DEFAULT '0.0000', + `f` float DEFAULT '0', + `total` bigint(20) unsigned DEFAULT NULL, + `y` year(4) DEFAULT NULL, + `t` date DEFAULT NULL +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY LIST (id) (PARTITION p0 VALUES IN (2,4) ENGINE = ndbcluster, PARTITION p1 VALUES IN (42,142) ENGINE = ndbcluster, PARTITION p2 VALUES IN (412) ENGINE = ndbcluster) +--- Perform basic operation on master --- +--- and ensure replicated correctly --- +"--- Insert into t1 --" as ""; +--- Select from t1 on master --- +select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; +id hex(b1) vc bc d f total y t +2 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1965-11-14 +4 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1985-11-14 +42 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1905-11-14 +142 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1995-11-14 +412 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2005-11-14 +--- Select from t1 on slave --- +select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; +id hex(b1) vc bc d f total y t +2 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1965-11-14 +4 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1985-11-14 +42 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1905-11-14 +142 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1995-11-14 +412 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2005-11-14 +--- Update t1 on master -- +UPDATE t1 SET b1 = 0, t="2006-02-22" WHERE id = 412; +--- Check the update on master --- +SELECT id,hex(b1),vc,bc,d,f,total,y,t FROM t1 WHERE id = 412; +id hex(b1) vc bc d f total y t +412 0 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2006-02-22 +--- Check Update on slave --- +SELECT id,hex(b1),vc,bc,d,f,total,y,t FROM t1 WHERE id = 412; +id hex(b1) vc bc d f total y t +412 0 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2006-02-22 +--- Remove a record from t1 on master --- +DELETE FROM t1 WHERE id = 42; +--- Show current count on master for t1 --- +SELECT COUNT(*) FROM t1; +COUNT(*) +4 +--- Show current count on slave for t1 --- +SELECT COUNT(*) FROM t1; +COUNT(*) +4 +DELETE FROM t1; +--- End test 3 partition LIST testing --- +--- Do Cleanup -- +DROP TABLE IF EXISTS t1; +--- Start test 4 partition HASH testing --- +--- Do setup --- +CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(63), +bc CHAR(63), d DECIMAL(10,4) DEFAULT 0, +f FLOAT DEFAULT 0, total BIGINT UNSIGNED, +y YEAR, t DATE) +TABLESPACE ts1 STORAGE DISK +ENGINE=NDB +PARTITION BY HASH( YEAR(t) ) +PARTITIONS 4; +--- show that tables have been created correctly --- +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `id` mediumint(9) NOT NULL, + `b1` bit(8) DEFAULT NULL, + `vc` varchar(63) DEFAULT NULL, + `bc` char(63) DEFAULT NULL, + `d` decimal(10,4) DEFAULT '0.0000', + `f` float DEFAULT '0', + `total` bigint(20) unsigned DEFAULT NULL, + `y` year(4) DEFAULT NULL, + `t` date DEFAULT NULL +) TABLESPACE ts1 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY HASH ( YEAR(t)) PARTITIONS 4 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `id` mediumint(9) NOT NULL, + `b1` bit(8) DEFAULT NULL, + `vc` varchar(63) DEFAULT NULL, + `bc` char(63) DEFAULT NULL, + `d` decimal(10,4) DEFAULT '0.0000', + `f` float DEFAULT '0', + `total` bigint(20) unsigned DEFAULT NULL, + `y` year(4) DEFAULT NULL, + `t` date DEFAULT NULL +) TABLESPACE ts1 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY HASH ( YEAR(t)) PARTITIONS 4 +--- Perform basic operation on master --- +--- and ensure replicated correctly --- +"--- Insert into t1 --" as ""; +--- Select from t1 on master --- +select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; +id hex(b1) vc bc d f total y t +2 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1965-11-14 +4 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1985-11-14 +42 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1905-11-14 +142 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1995-11-14 +412 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2005-11-14 +--- Select from t1 on slave --- +select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; +id hex(b1) vc bc d f total y t +2 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1965-11-14 +4 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1985-11-14 +42 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1905-11-14 +142 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1995-11-14 +412 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2005-11-14 +--- Update t1 on master -- +UPDATE t1 SET b1 = 0, t="2006-02-22" WHERE id = 412; +--- Check the update on master --- +SELECT id,hex(b1),vc,bc,d,f,total,y,t FROM t1 WHERE id = 412; +id hex(b1) vc bc d f total y t +412 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2006-02-22 +--- Check Update on slave --- +SELECT id,hex(b1),vc,bc,d,f,total,y,t FROM t1 WHERE id = 412; +id hex(b1) vc bc d f total y t +412 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2006-02-22 +--- Remove a record from t1 on master --- +DELETE FROM t1 WHERE id = 42; +--- Show current count on master for t1 --- +SELECT COUNT(*) FROM t1; +COUNT(*) +4 +--- Show current count on slave for t1 --- +SELECT COUNT(*) FROM t1; +COUNT(*) +4 +DELETE FROM t1; +--- Check that simple Alter statements are replicated correctly --- +ALTER TABLE t1 MODIFY vc VARCHAR(255); +--- Show the new improved table on the master --- +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `id` mediumint(9) NOT NULL, + `b1` bit(8) DEFAULT NULL, + `vc` varchar(255) DEFAULT NULL, + `bc` char(63) DEFAULT NULL, + `d` decimal(10,4) DEFAULT '0.0000', + `f` float DEFAULT '0', + `total` bigint(20) unsigned DEFAULT NULL, + `y` year(4) DEFAULT NULL, + `t` date DEFAULT NULL +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY HASH ( YEAR(t)) PARTITIONS 4 +--- Make sure that our tables on slave are still same engine --- +--- and that the alter statements replicated correctly --- +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `id` mediumint(9) NOT NULL, + `b1` bit(8) DEFAULT NULL, + `vc` varchar(255) DEFAULT NULL, + `bc` char(63) DEFAULT NULL, + `d` decimal(10,4) DEFAULT '0.0000', + `f` float DEFAULT '0', + `total` bigint(20) unsigned DEFAULT NULL, + `y` year(4) DEFAULT NULL, + `t` date DEFAULT NULL +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY HASH ( YEAR(t)) PARTITIONS 4 +--- Perform basic operation on master --- +--- and ensure replicated correctly --- +"--- Insert into t1 --" as ""; +--- Select from t1 on master --- +select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; +id hex(b1) vc bc d f total y t +2 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1965-11-14 +4 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1985-11-14 +42 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1905-11-14 +142 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1995-11-14 +412 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2005-11-14 +--- Select from t1 on slave --- +select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; +id hex(b1) vc bc d f total y t +2 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1965-11-14 +4 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1985-11-14 +42 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1905-11-14 +142 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1995-11-14 +412 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2005-11-14 +--- Update t1 on master -- +UPDATE t1 SET b1 = 0, t="2006-02-22" WHERE id = 412; +--- Check the update on master --- +SELECT id,hex(b1),vc,bc,d,f,total,y,t FROM t1 WHERE id = 412; +id hex(b1) vc bc d f total y t +412 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2006-02-22 +--- Check Update on slave --- +SELECT id,hex(b1),vc,bc,d,f,total,y,t FROM t1 WHERE id = 412; +id hex(b1) vc bc d f total y t +412 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2006-02-22 +--- Remove a record from t1 on master --- +DELETE FROM t1 WHERE id = 42; +--- Show current count on master for t1 --- +SELECT COUNT(*) FROM t1; +COUNT(*) +4 +--- Show current count on slave for t1 --- +SELECT COUNT(*) FROM t1; +COUNT(*) +4 +DELETE FROM t1; +--- End test 4 partition HASH testing --- +--- Do Cleanup -- +DROP TABLE IF EXISTS t1; +--- Start test 5 partition by key testing --- +--- Create Table Section --- +CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(63), +bc CHAR(63), d DECIMAL(10,4) DEFAULT 0, +f FLOAT DEFAULT 0, total BIGINT UNSIGNED, +y YEAR, t DATE,PRIMARY KEY(id)) +TABLESPACE ts1 STORAGE DISK +ENGINE=NDB +PARTITION BY KEY() +PARTITIONS 4; +--- Show that tables on master are ndbcluster tables --- +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `id` mediumint(9) NOT NULL, + `b1` bit(8) DEFAULT NULL, + `vc` varchar(63) DEFAULT NULL, + `bc` char(63) DEFAULT NULL, + `d` decimal(10,4) DEFAULT '0.0000', + `f` float DEFAULT '0', + `total` bigint(20) unsigned DEFAULT NULL, + `y` year(4) DEFAULT NULL, + `t` date DEFAULT NULL, + PRIMARY KEY (`id`) +) TABLESPACE ts1 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY () PARTITIONS 4 +--- Show that tables on slave --- +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `id` mediumint(9) NOT NULL, + `b1` bit(8) DEFAULT NULL, + `vc` varchar(63) DEFAULT NULL, + `bc` char(63) DEFAULT NULL, + `d` decimal(10,4) DEFAULT '0.0000', + `f` float DEFAULT '0', + `total` bigint(20) unsigned DEFAULT NULL, + `y` year(4) DEFAULT NULL, + `t` date DEFAULT NULL, + PRIMARY KEY (`id`) +) TABLESPACE ts1 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY () PARTITIONS 4 +--- Perform basic operation on master --- +--- and ensure replicated correctly --- +"--- Insert into t1 --" as ""; +--- Select from t1 on master --- +select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; +id hex(b1) vc bc d f total y t +2 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1965-11-14 +4 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1985-11-14 +42 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1905-11-14 +142 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1995-11-14 +412 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2005-11-14 +--- Select from t1 on slave --- +select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; +id hex(b1) vc bc d f total y t +2 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1965-11-14 +4 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1985-11-14 +42 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1905-11-14 +142 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1995-11-14 +412 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2005-11-14 +--- Update t1 on master -- +UPDATE t1 SET b1 = 0, t="2006-02-22" WHERE id = 412; +--- Check the update on master --- +SELECT id,hex(b1),vc,bc,d,f,total,y,t FROM t1 WHERE id = 412; +id hex(b1) vc bc d f total y t +412 0 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2006-02-22 +--- Check Update on slave --- +SELECT id,hex(b1),vc,bc,d,f,total,y,t FROM t1 WHERE id = 412; +id hex(b1) vc bc d f total y t +412 0 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2006-02-22 +--- Remove a record from t1 on master --- +DELETE FROM t1 WHERE id = 42; +--- Show current count on master for t1 --- +SELECT COUNT(*) FROM t1; +COUNT(*) +4 +--- Show current count on slave for t1 --- +SELECT COUNT(*) FROM t1; +COUNT(*) +4 +DELETE FROM t1; +--- Check that simple Alter statements are replicated correctly --- +ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(id, total); +--- Show the new improved table on the master --- +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `id` mediumint(9) NOT NULL, + `b1` bit(8) DEFAULT NULL, + `vc` varchar(63) DEFAULT NULL, + `bc` char(63) DEFAULT NULL, + `d` decimal(10,4) DEFAULT '0.0000', + `f` float DEFAULT '0', + `total` bigint(20) unsigned NOT NULL DEFAULT '0', + `y` year(4) DEFAULT NULL, + `t` date DEFAULT NULL, + PRIMARY KEY (`id`,`total`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY () PARTITIONS 4 +--- Make sure that our tables on slave are still right type --- +--- and that the alter statements replicated correctly --- +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `id` mediumint(9) NOT NULL, + `b1` bit(8) DEFAULT NULL, + `vc` varchar(63) DEFAULT NULL, + `bc` char(63) DEFAULT NULL, + `d` decimal(10,4) DEFAULT '0.0000', + `f` float DEFAULT '0', + `total` bigint(20) unsigned NOT NULL DEFAULT '0', + `y` year(4) DEFAULT NULL, + `t` date DEFAULT NULL, + PRIMARY KEY (`id`,`total`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY () PARTITIONS 4 +--- Perform basic operation on master --- +--- and ensure replicated correctly --- +"--- Insert into t1 --" as ""; +--- Select from t1 on master --- +select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; +id hex(b1) vc bc d f total y t +2 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1965-11-14 +4 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1985-11-14 +42 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1905-11-14 +142 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1995-11-14 +412 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2005-11-14 +--- Select from t1 on slave --- +select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; +id hex(b1) vc bc d f total y t +2 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1965-11-14 +4 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1985-11-14 +42 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1905-11-14 +142 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1995-11-14 +412 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2005-11-14 +--- Update t1 on master -- +UPDATE t1 SET b1 = 0, t="2006-02-22" WHERE id = 412; +--- Check the update on master --- +SELECT id,hex(b1),vc,bc,d,f,total,y,t FROM t1 WHERE id = 412; +id hex(b1) vc bc d f total y t +412 0 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2006-02-22 +--- Check Update on slave --- +SELECT id,hex(b1),vc,bc,d,f,total,y,t FROM t1 WHERE id = 412; +id hex(b1) vc bc d f total y t +412 0 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2006-02-22 +--- Remove a record from t1 on master --- +DELETE FROM t1 WHERE id = 42; +--- Show current count on master for t1 --- +SELECT COUNT(*) FROM t1; +COUNT(*) +4 +--- Show current count on slave for t1 --- +SELECT COUNT(*) FROM t1; +COUNT(*) +4 +DELETE FROM t1; +--- Check that simple Alter statements are replicated correctly --- +ALTER TABLE t1 MODIFY vc VARCHAR(255); +--- Show the new improved table on the master --- +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `id` mediumint(9) NOT NULL, + `b1` bit(8) DEFAULT NULL, + `vc` varchar(255) DEFAULT NULL, + `bc` char(63) DEFAULT NULL, + `d` decimal(10,4) DEFAULT '0.0000', + `f` float DEFAULT '0', + `total` bigint(20) unsigned NOT NULL DEFAULT '0', + `y` year(4) DEFAULT NULL, + `t` date DEFAULT NULL, + PRIMARY KEY (`id`,`total`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY () PARTITIONS 4 +--- Make sure that our tables on slave are still same engine --- +--- and that the alter statements replicated correctly --- +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `id` mediumint(9) NOT NULL, + `b1` bit(8) DEFAULT NULL, + `vc` varchar(255) DEFAULT NULL, + `bc` char(63) DEFAULT NULL, + `d` decimal(10,4) DEFAULT '0.0000', + `f` float DEFAULT '0', + `total` bigint(20) unsigned NOT NULL DEFAULT '0', + `y` year(4) DEFAULT NULL, + `t` date DEFAULT NULL, + PRIMARY KEY (`id`,`total`) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY () PARTITIONS 4 +--- Perform basic operation on master --- +--- and ensure replicated correctly --- +"--- Insert into t1 --" as ""; +--- Select from t1 on master --- +select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; +id hex(b1) vc bc d f total y t +2 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1965-11-14 +4 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1985-11-14 +42 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1905-11-14 +142 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1995-11-14 +412 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2005-11-14 +--- Select from t1 on slave --- +select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; +id hex(b1) vc bc d f total y t +2 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1965-11-14 +4 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1985-11-14 +42 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1905-11-14 +142 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 1995-11-14 +412 1 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2005-11-14 +--- Update t1 on master -- +UPDATE t1 SET b1 = 0, t="2006-02-22" WHERE id = 412; +--- Check the update on master --- +SELECT id,hex(b1),vc,bc,d,f,total,y,t FROM t1 WHERE id = 412; +id hex(b1) vc bc d f total y t +412 0 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2006-02-22 +--- Check Update on slave --- +SELECT id,hex(b1),vc,bc,d,f,total,y,t FROM t1 WHERE id = 412; +id hex(b1) vc bc d f total y t +412 0 Testing MySQL databases is a cool Must make it bug free for the customer 654321.4321 15.21 0 1965 2006-02-22 +--- Remove a record from t1 on master --- +DELETE FROM t1 WHERE id = 42; +--- Show current count on master for t1 --- +SELECT COUNT(*) FROM t1; +COUNT(*) +4 +--- Show current count on slave for t1 --- +SELECT COUNT(*) FROM t1; +COUNT(*) +4 +DELETE FROM t1; +--- End test 5 key partition testing --- +--- Do Cleanup --- +DROP TABLE IF EXISTS t1; +alter tablespace ts1 +drop datafile 'datafile.dat' +engine=ndb; +alter tablespace ts1 +drop datafile 'datafile02.dat' +engine=ndb; +DROP TABLESPACE ts1 ENGINE=NDB; +DROP LOGFILE GROUP lg1 ENGINE=NDB; diff --git a/mysql-test/t/rpl_ndb_dd_partitions.test b/mysql-test/t/rpl_ndb_dd_partitions.test new file mode 100644 index 00000000000..9291f38e8db --- /dev/null +++ b/mysql-test/t/rpl_ndb_dd_partitions.test @@ -0,0 +1,310 @@ +####################################### +# Author: JBM # +# Date: 2006-03-09 # +# Purpose: To test the replication of # +# Cluster Disk Data using partitions # +####################################### + +--source include/have_ndb.inc +--source include/have_binlog_format_row.inc +--source include/master-slave.inc + +--echo --- Doing pre test cleanup --- + +connection master; +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_query_log + + +# Start by creating a logfile group +################################## + +CREATE LOGFILE GROUP lg1 +ADD UNDOFILE 'undofile.dat' +INITIAL_SIZE 16M +UNDO_BUFFER_SIZE = 1M +ENGINE=NDB; + +ALTER LOGFILE GROUP lg1 +ADD UNDOFILE 'undofile02.dat' +INITIAL_SIZE = 4M +ENGINE=NDB; + +################################################### +# Create a tablespace connected to the logfile group +################################################### + +CREATE TABLESPACE ts1 +ADD DATAFILE 'datafile.dat' +USE LOGFILE GROUP lg1 +INITIAL_SIZE 12M +ENGINE NDB; + +ALTER TABLESPACE ts1 +ADD DATAFILE 'datafile02.dat' +INITIAL_SIZE = 4M +ENGINE=NDB; + +################################################################# + +--echo --- Start test 2 partition RANGE testing -- +--echo --- Do setup -- + + +################################################# +# Requirment: Create table that is partitioned # +# by range on year i.e. year(t) and replicate # +# basice operations such at insert, update # +# delete between 2 different storage engines # +# Alter table and ensure table is handled # +# Correctly on the slave # +################################################# + +CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(63), + bc CHAR(63), d DECIMAL(10,4) DEFAULT 0, + f FLOAT DEFAULT 0, total BIGINT UNSIGNED, + y YEAR, t DATE) + TABLESPACE ts1 STORAGE DISK + ENGINE=NDB + PARTITION BY RANGE (YEAR(t)) + (PARTITION p0 VALUES LESS THAN (1901), + PARTITION p1 VALUES LESS THAN (1946), + PARTITION p2 VALUES LESS THAN (1966), + PARTITION p3 VALUES LESS THAN (1986), + PARTITION p4 VALUES LESS THAN (2005), + PARTITION p5 VALUES LESS THAN MAXVALUE); + +--echo --- Show table on master --- + +SHOW CREATE TABLE t1; + +--echo --- Show table on slave -- + +sync_slave_with_master; +SHOW CREATE TABLE t1; + +--echo --- Perform basic operation on master --- +--echo --- and ensure replicated correctly --- + +--source include/rpl_multi_engine3.inc + +--echo --- Check that simple Alter statements are replicated correctly --- + +ALTER TABLE t1 MODIFY vc VARCHAR(255); + +--echo --- Show the new improved table on the master --- + +SHOW CREATE TABLE t1; + +--echo --- Make sure that our tables on slave are still same engine --- +--echo --- and that the alter statements replicated correctly --- + +sync_slave_with_master; +SHOW CREATE TABLE t1; + +--echo --- Perform basic operation on master --- +--echo --- and ensure replicated correctly --- +--enable_query_log + +--source include/rpl_multi_engine3.inc + +--echo --- End test 2 partition RANGE testing --- +--echo --- Do Cleanup --- + +DROP TABLE IF EXISTS t1; + +######################################################## + +--echo --- Start test 3 partition LIST testing --- +--echo --- Do setup --- +################################################# + + +CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(63), + bc CHAR(63), d DECIMAL(10,4) DEFAULT 0, + f FLOAT DEFAULT 0, total BIGINT UNSIGNED, + y YEAR, t DATE) + TABLESPACE ts1 STORAGE DISK + ENGINE=NDB + PARTITION BY LIST(id) + (PARTITION p0 VALUES IN (2, 4), + PARTITION p1 VALUES IN (42, 142)); + +--echo --- Test 3 Alter to add partition --- + +ALTER TABLE t1 ADD PARTITION (PARTITION p2 VALUES IN (412)); + +--echo --- Show table on master --- + +SHOW CREATE TABLE t1; + +--echo --- Show table on slave --- + +sync_slave_with_master; +SHOW CREATE TABLE t1; + +--echo --- Perform basic operation on master --- +--echo --- and ensure replicated correctly --- + +--source include/rpl_multi_engine3.inc + +--echo --- Check that simple Alter statements are replicated correctly --- + +ALTER TABLE t1 MODIFY vc VARCHAR(255); + +--echo --- Show the new improved table on the master --- + +SHOW CREATE TABLE t1; + +--echo --- Make sure that our tables on slave are still same engine --- +--echo --- and that the alter statements replicated correctly --- + +sync_slave_with_master; +SHOW CREATE TABLE t1; + +--echo --- Perform basic operation on master --- +--echo --- and ensure replicated correctly --- + +--source include/rpl_multi_engine3.inc + +--echo --- End test 3 partition LIST testing --- +--echo --- Do Cleanup -- + +DROP TABLE IF EXISTS t1; + +######################################################## + +--echo --- Start test 4 partition HASH testing --- +--echo --- Do setup --- +################################################# + + +CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(63), + bc CHAR(63), d DECIMAL(10,4) DEFAULT 0, + f FLOAT DEFAULT 0, total BIGINT UNSIGNED, + y YEAR, t DATE) + TABLESPACE ts1 STORAGE DISK + ENGINE=NDB + PARTITION BY HASH( YEAR(t) ) + PARTITIONS 4; + +--echo --- show that tables have been created correctly --- + +SHOW CREATE TABLE t1; +sync_slave_with_master; +SHOW CREATE TABLE t1; + +--echo --- Perform basic operation on master --- +--echo --- and ensure replicated correctly --- + +--source include/rpl_multi_engine3.inc + +--echo --- Check that simple Alter statements are replicated correctly --- + +ALTER TABLE t1 MODIFY vc VARCHAR(255); + +--echo --- Show the new improved table on the master --- + +SHOW CREATE TABLE t1; + +--echo --- Make sure that our tables on slave are still same engine --- +--echo --- and that the alter statements replicated correctly --- + +sync_slave_with_master; +SHOW CREATE TABLE t1; + +--echo --- Perform basic operation on master --- +--echo --- and ensure replicated correctly --- + +--source include/rpl_multi_engine3.inc + +--echo --- End test 4 partition HASH testing --- +--echo --- Do Cleanup -- + +DROP TABLE IF EXISTS t1; + +######################################################## + +--echo --- Start test 5 partition by key testing --- +--echo --- Create Table Section --- + +################################################# + +CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(63), + bc CHAR(63), d DECIMAL(10,4) DEFAULT 0, + f FLOAT DEFAULT 0, total BIGINT UNSIGNED, + y YEAR, t DATE,PRIMARY KEY(id)) + TABLESPACE ts1 STORAGE DISK + ENGINE=NDB + PARTITION BY KEY() + PARTITIONS 4; + +--echo --- Show that tables on master are ndbcluster tables --- + +SHOW CREATE TABLE t1; + +--echo --- Show that tables on slave --- + +sync_slave_with_master; +SHOW CREATE TABLE t1; + +--echo --- Perform basic operation on master --- +--echo --- and ensure replicated correctly --- + +--source include/rpl_multi_engine3.inc + +# Okay lets see how it holds up to table changes +--echo --- Check that simple Alter statements are replicated correctly --- + +ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(id, total); + +--echo --- Show the new improved table on the master --- + +SHOW CREATE TABLE t1; + +--echo --- Make sure that our tables on slave are still right type --- +--echo --- and that the alter statements replicated correctly --- + +sync_slave_with_master; +SHOW CREATE TABLE t1; + +--echo --- Perform basic operation on master --- +--echo --- and ensure replicated correctly --- + +--source include/rpl_multi_engine3.inc + +--echo --- Check that simple Alter statements are replicated correctly --- + +ALTER TABLE t1 MODIFY vc VARCHAR(255); + +--echo --- Show the new improved table on the master --- + +SHOW CREATE TABLE t1; + +--echo --- Make sure that our tables on slave are still same engine --- +--echo --- and that the alter statements replicated correctly --- + +sync_slave_with_master; +SHOW CREATE TABLE t1; + +--echo --- Perform basic operation on master --- +--echo --- and ensure replicated correctly --- + +--source include/rpl_multi_engine3.inc + +--echo --- End test 5 key partition testing --- +--echo --- Do Cleanup --- + +DROP TABLE IF EXISTS t1; +alter tablespace ts1 +drop datafile 'datafile.dat' +engine=ndb; +alter tablespace ts1 +drop datafile 'datafile02.dat' +engine=ndb; +DROP TABLESPACE ts1 ENGINE=NDB; +DROP LOGFILE GROUP lg1 ENGINE=NDB; +--sync_slave_with_master + +# End of 5.1 test case -- cgit v1.2.1 From 62722a4dd4fa76e17ea686e696eca139e5709032 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 27 Jun 2006 22:19:27 +0200 Subject: partition functions to pass create_info, not only max_rows --- sql/ha_ndbcluster.cc | 28 ++++++++++++++++++---------- sql/ha_ndbcluster.h | 2 +- sql/handler.h | 2 +- sql/partition_info.cc | 27 ++++++++++++++------------- sql/partition_info.h | 8 ++++---- sql/sql_partition.cc | 3 +-- sql/sql_partition.h | 2 +- sql/sql_table.cc | 10 +++++----- 8 files changed, 45 insertions(+), 37 deletions(-) diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index b46a5971666..361ec9b0d2b 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -9590,12 +9590,8 @@ ndbcluster_show_status(THD* thd, stat_print_fn *stat_print, /* Create a table in NDB Cluster */ -static uint get_no_fragments(TABLE_SHARE *table_share) +static uint get_no_fragments(ulonglong max_rows) { - ha_rows max_rows= table_share->max_rows; - ha_rows min_rows= table_share->min_rows; - if (max_rows < min_rows) - max_rows= min_rows; #if MYSQL_VERSION_ID >= 50000 uint acc_row_size= 25 + /*safety margin*/ 2; #else @@ -9632,10 +9628,22 @@ static bool adjusted_frag_count(uint no_fragments, uint no_nodes, return (reported_frags < no_fragments); } -int ha_ndbcluster::get_default_no_partitions(TABLE_SHARE *table_share) +int ha_ndbcluster::get_default_no_partitions(HA_CREATE_INFO *info) { + ha_rows max_rows, min_rows; + if (info) + { + max_rows= info->max_rows; + min_rows= info->min_rows; + } + else + { + max_rows= table_share->max_rows; + min_rows= table_share->min_rows; + } uint reported_frags; - uint no_fragments= get_no_fragments(table_share); + uint no_fragments= + get_no_fragments(max_rows >= min_rows ? max_rows : min_rows); uint no_nodes= g_ndb_cluster_connection->no_db_nodes(); if (adjusted_frag_count(no_fragments, no_nodes, reported_frags)) { @@ -9884,14 +9892,14 @@ uint ha_ndbcluster::set_up_partition_info(partition_info *part_info, tab->setDefaultNoPartitionsFlag(part_info->use_default_no_partitions); tab->setLinearFlag(part_info->linear_hash_ind); { - ha_rows max_rows= form->s->max_rows; - ha_rows min_rows= form->s->min_rows; + ha_rows max_rows= table_share->max_rows; + ha_rows min_rows= table_share->min_rows; if (max_rows < min_rows) max_rows= min_rows; if (max_rows != (ha_rows)0) /* default setting, don't set fragmentation */ { tab->setMaxRows(max_rows); - tab->setMaxRows(min_rows); + tab->setMinRows(min_rows); } } tab->setTablespaceNames(ts_names, fd_index*sizeof(char*)); diff --git a/sql/ha_ndbcluster.h b/sql/ha_ndbcluster.h index adc70808f78..9dc9ee79755 100644 --- a/sql/ha_ndbcluster.h +++ b/sql/ha_ndbcluster.h @@ -651,7 +651,7 @@ class ha_ndbcluster: public handler int create(const char *name, TABLE *form, HA_CREATE_INFO *info); int create_handler_files(const char *file, const char *old_name, int action_flag, HA_CREATE_INFO *info); - int get_default_no_partitions(TABLE_SHARE *); + int get_default_no_partitions(HA_CREATE_INFO *info); bool get_no_parts(const char *name, uint *no_parts); void set_auto_partitions(partition_info *part_info); diff --git a/sql/handler.h b/sql/handler.h index 025b76213d7..94f4519a2e7 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -1335,7 +1335,7 @@ public: virtual const char *table_type() const =0; virtual const char **bas_ext() const =0; - virtual int get_default_no_partitions(TABLE_SHARE *) { return 1;} + virtual int get_default_no_partitions(HA_CREATE_INFO *info) { return 1;} virtual void set_auto_partitions(partition_info *part_info) { return; } virtual bool get_no_parts(const char *name, uint *no_parts) diff --git a/sql/partition_info.cc b/sql/partition_info.cc index 39c8d976732..286637bd9aa 100644 --- a/sql/partition_info.cc +++ b/sql/partition_info.cc @@ -153,7 +153,7 @@ char *partition_info::create_subpartition_name(uint subpart_no, SYNOPSIS set_up_default_partitions() file A reference to a handler of the table - max_rows Maximum number of rows stored in the table + info Create info start_no Starting partition number RETURN VALUE @@ -169,7 +169,8 @@ char *partition_info::create_subpartition_name(uint subpart_no, The external routine needing this code is check_partition_info */ -bool partition_info::set_up_default_partitions(handler *file, ulonglong max_rows, +bool partition_info::set_up_default_partitions(handler *file, + HA_CREATE_INFO *info, uint start_no) { uint i; @@ -188,7 +189,7 @@ bool partition_info::set_up_default_partitions(handler *file, ulonglong max_rows goto end; } if (no_parts == 0) - no_parts= file->get_default_no_partitions(max_rows); + no_parts= file->get_default_no_partitions(info); if (unlikely(no_parts > MAX_PARTITIONS)) { my_error(ER_TOO_MANY_PARTITIONS_ERROR, MYF(0)); @@ -228,7 +229,7 @@ end: SYNOPSIS set_up_default_subpartitions() file A reference to a handler of the table - max_rows Maximum number of rows stored in the table + info Create info RETURN VALUE TRUE Error, attempted default values not possible @@ -244,7 +245,7 @@ end: */ bool partition_info::set_up_default_subpartitions(handler *file, - ulonglong max_rows) + HA_CREATE_INFO *info) { uint i, j; char *default_name, *name_ptr; @@ -254,7 +255,7 @@ bool partition_info::set_up_default_subpartitions(handler *file, DBUG_ENTER("partition_info::set_up_default_subpartitions"); if (no_subparts == 0) - no_subparts= file->get_default_no_partitions(max_rows); + no_subparts= file->get_default_no_partitions(info); if (unlikely((no_parts * no_subparts) > MAX_PARTITIONS)) { my_error(ER_TOO_MANY_PARTITIONS_ERROR, MYF(0)); @@ -296,7 +297,7 @@ end: SYNOPSIS set_up_defaults_for_partitioning() file A reference to a handler of the table - max_rows Maximum number of rows stored in the table + info Create info start_no Starting partition number RETURN VALUE @@ -309,7 +310,7 @@ end: */ bool partition_info::set_up_defaults_for_partitioning(handler *file, - ulonglong max_rows, + HA_CREATE_INFO *info, uint start_no) { DBUG_ENTER("partition_info::set_up_defaults_for_partitioning"); @@ -318,10 +319,10 @@ bool partition_info::set_up_defaults_for_partitioning(handler *file, { default_partitions_setup= TRUE; if (use_default_partitions) - DBUG_RETURN(set_up_default_partitions(file, max_rows, start_no)); + DBUG_RETURN(set_up_default_partitions(file, info, start_no)); if (is_sub_partitioned() && use_default_subpartitions) - DBUG_RETURN(set_up_default_subpartitions(file, max_rows)); + DBUG_RETURN(set_up_default_subpartitions(file, info)); } DBUG_RETURN(FALSE); } @@ -692,7 +693,7 @@ end: SYNOPSIS check_partition_info() file A reference to a handler of the table - max_rows Maximum number of rows stored in the table + info Create info engine_type Return value for used engine in partitions RETURN VALUE @@ -708,7 +709,7 @@ end: */ bool partition_info::check_partition_info(THD *thd, handlerton **eng_type, - handler *file, ulonglong max_rows) + handler *file, HA_CREATE_INFO *info) { handlerton **engine_array= NULL; uint part_count= 0; @@ -743,7 +744,7 @@ bool partition_info::check_partition_info(THD *thd, handlerton **eng_type, my_error(ER_SUBPARTITION_ERROR, MYF(0)); goto end; } - if (unlikely(set_up_defaults_for_partitioning(file, max_rows, (uint)0))) + if (unlikely(set_up_defaults_for_partitioning(file, info, (uint)0))) goto end; tot_partitions= get_tot_partitions(); if (unlikely(tot_partitions > MAX_PARTITIONS)) diff --git a/sql/partition_info.h b/sql/partition_info.h index 3d8c6a40221..d938d21653a 100644 --- a/sql/partition_info.h +++ b/sql/partition_info.h @@ -243,21 +243,21 @@ public: return no_parts * (is_sub_partitioned() ? no_subparts : 1); } - bool set_up_defaults_for_partitioning(handler *file, ulonglong max_rows, + bool set_up_defaults_for_partitioning(handler *file, HA_CREATE_INFO *info, uint start_no); char *has_unique_names(); static bool check_engine_mix(handlerton **engine_array, uint no_parts); bool check_range_constants(); bool check_list_constants(); bool check_partition_info(THD *thd, handlerton **eng_type, - handler *file, ulonglong max_rows); + handler *file, HA_CREATE_INFO *info); void print_no_partition_found(TABLE *table); private: static int list_part_cmp(const void* a, const void* b); static int list_part_cmp_unsigned(const void* a, const void* b); - bool set_up_default_partitions(handler *file, ulonglong max_rows, + bool set_up_default_partitions(handler *file, HA_CREATE_INFO *info, uint start_no); - bool set_up_default_subpartitions(handler *file, ulonglong max_rows); + bool set_up_default_subpartitions(handler *file, HA_CREATE_INFO *info); char *create_default_partition_names(uint part_no, uint no_parts, uint start_no); char *create_subpartition_name(uint subpart_no, const char *part_name); diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index 00c15c2dbca..701af808c96 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -3834,14 +3834,13 @@ uint prep_alter_part_table(THD *thd, TABLE *table, ALTER_INFO *alter_info, if (alter_info->flags == ALTER_TABLE_REORG) { uint new_part_no, curr_part_no; - ulonglong max_rows= table->s->max_rows; if (tab_part_info->part_type != HASH_PARTITION || tab_part_info->use_default_no_partitions) { my_error(ER_REORG_NO_PARAM_ERROR, MYF(0)); DBUG_RETURN(TRUE); } - new_part_no= table->file->get_default_no_partitions(max_rows); + new_part_no= table->file->get_default_no_partitions(create_info); curr_part_no= tab_part_info->no_parts; if (new_part_no == curr_part_no) { diff --git a/sql/sql_partition.h b/sql/sql_partition.h index 845180ad592..e34d71dfdc5 100644 --- a/sql/sql_partition.h +++ b/sql/sql_partition.h @@ -65,7 +65,7 @@ int get_part_for_delete(const byte *buf, const byte *rec0, partition_info *part_info, uint32 *part_id); void prune_partition_set(const TABLE *table, part_id_range *part_spec); bool check_partition_info(partition_info *part_info,handlerton **eng_type, - TABLE *table, handler *file, ulonglong max_rows); + TABLE *table, handler *file, HA_CREATE_INFO *info); bool fix_partition_func(THD *thd, TABLE *table, bool create_table_ind); char *generate_partition_syntax(partition_info *part_info, uint *buf_length, bool use_sql_alloc, diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 2ecbc94541a..7d8631e3236 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -3185,8 +3185,7 @@ bool mysql_create_table_internal(THD *thd, } DBUG_PRINT("info", ("db_type = %d", ha_legacy_type(part_info->default_engine_type))); - if (part_info->check_partition_info(thd, &engine_type, file, - create_info->max_rows)) + if (part_info->check_partition_info(thd, &engine_type, file, create_info)) goto err; part_info->default_engine_type= engine_type; @@ -3224,7 +3223,8 @@ bool mysql_create_table_internal(THD *thd, */ if (part_info->use_default_no_partitions && part_info->no_parts && - (int)part_info->no_parts != file->get_default_no_partitions(0ULL)) + (int)part_info->no_parts != + file->get_default_no_partitions(create_info)) { uint i; List_iterator part_it(part_info->partitions); @@ -3237,10 +3237,10 @@ bool mysql_create_table_internal(THD *thd, part_info->use_default_no_subpartitions && part_info->no_subparts && (int)part_info->no_subparts != - file->get_default_no_partitions(0ULL)) + file->get_default_no_partitions(create_info)) { DBUG_ASSERT(thd->lex->sql_command != SQLCOM_CREATE_TABLE); - part_info->no_subparts= file->get_default_no_partitions(0ULL); + part_info->no_subparts= file->get_default_no_partitions(create_info); } } else if (create_info->db_type != engine_type) -- cgit v1.2.1 From 24cb523505b21a504a3b8798560ad7d3186c5070 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 28 Jun 2006 01:03:10 +0200 Subject: corrected partition test case results that were put back --- mysql-test/r/ndb_dd_backuprestore.result | 24 ++++++++++++------------ mysql-test/r/ndb_partition_key.result | 14 +++++++------- mysql-test/r/ndb_partition_range.result | 2 +- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/mysql-test/r/ndb_dd_backuprestore.result b/mysql-test/r/ndb_dd_backuprestore.result index e7568e4ce49..cb6c62b16da 100644 --- a/mysql-test/r/ndb_dd_backuprestore.result +++ b/mysql-test/r/ndb_dd_backuprestore.result @@ -175,7 +175,7 @@ t1 CREATE TABLE `t1` ( `c3` int(11) NOT NULL, `c4` bit(1) NOT NULL, PRIMARY KEY (`pk1`,`c3`) -) TABLESPACE table_space1 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY HASH (c3) PARTITIONS 4 +) TABLESPACE table_space1 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (c3) PARTITIONS 4 */ SHOW CREATE TABLE test.t2; Table Create Table t2 CREATE TABLE `t2` ( @@ -184,7 +184,7 @@ t2 CREATE TABLE `t2` ( `c3` int(11) NOT NULL, `c4` bit(1) NOT NULL, PRIMARY KEY (`pk1`,`c3`) -) TABLESPACE table_space2 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (c3) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) +) TABLESPACE table_space2 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (c3) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) */ SHOW CREATE TABLE test.t3; Table Create Table t3 CREATE TABLE `t3` ( @@ -193,7 +193,7 @@ t3 CREATE TABLE `t3` ( `c3` int(11) NOT NULL, `c4` bit(1) NOT NULL, PRIMARY KEY (`pk1`,`c3`) -) TABLESPACE table_space2 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY RANGE (c3) (PARTITION x1 VALUES LESS THAN (105) ENGINE = ndbcluster, PARTITION x2 VALUES LESS THAN (333) ENGINE = ndbcluster, PARTITION x3 VALUES LESS THAN (720) ENGINE = ndbcluster) +) TABLESPACE table_space2 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (c3) (PARTITION x1 VALUES LESS THAN (105) ENGINE = ndbcluster, PARTITION x2 VALUES LESS THAN (333) ENGINE = ndbcluster, PARTITION x3 VALUES LESS THAN (720) ENGINE = ndbcluster) */ SHOW CREATE TABLE test.t4; Table Create Table t4 CREATE TABLE `t4` ( @@ -202,7 +202,7 @@ t4 CREATE TABLE `t4` ( `c3` int(11) NOT NULL, `c4` bit(1) NOT NULL, PRIMARY KEY (`pk1`,`c3`) -) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY HASH (c3) PARTITIONS 2 +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (c3) PARTITIONS 2 */ SHOW CREATE TABLE test.t5; Table Create Table t5 CREATE TABLE `t5` ( @@ -211,7 +211,7 @@ t5 CREATE TABLE `t5` ( `c3` int(11) NOT NULL, `c4` bit(1) NOT NULL, PRIMARY KEY (`pk1`,`c3`) -) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (pk1) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (pk1) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) */ SHOW CREATE TABLE test.t6; Table Create Table t6 CREATE TABLE `t6` ( @@ -220,7 +220,7 @@ t6 CREATE TABLE `t6` ( `c3` int(11) NOT NULL, `c4` bit(1) NOT NULL, PRIMARY KEY (`pk1`,`c3`) -) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY RANGE (pk1) (PARTITION x1 VALUES LESS THAN (333) ENGINE = ndbcluster, PARTITION x2 VALUES LESS THAN (720) ENGINE = ndbcluster) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (pk1) (PARTITION x1 VALUES LESS THAN (333) ENGINE = ndbcluster, PARTITION x2 VALUES LESS THAN (720) ENGINE = ndbcluster) */ SELECT * FROM information_schema.partitions WHERE table_name= 't1'; TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PARTITION_NAME SUBPARTITION_NAME PARTITION_ORDINAL_POSITION SUBPARTITION_ORDINAL_POSITION PARTITION_METHOD SUBPARTITION_METHOD PARTITION_EXPRESSION SUBPARTITION_EXPRESSION PARTITION_DESCRIPTION TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE CREATE_TIME UPDATE_TIME CHECK_TIME CHECKSUM PARTITION_COMMENT NODEGROUP TABLESPACE_NAME NULL test t1 p0 NULL 1 NULL HASH NULL c3 NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default @@ -341,7 +341,7 @@ t1 CREATE TABLE `t1` ( `c3` int(11) NOT NULL, `c4` bit(1) NOT NULL, PRIMARY KEY (`pk1`,`c3`) -) TABLESPACE table_space1 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY HASH (c3) PARTITIONS 4 +) TABLESPACE table_space1 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (c3) PARTITIONS 4 */ SHOW CREATE TABLE test.t2; Table Create Table t2 CREATE TABLE `t2` ( @@ -350,7 +350,7 @@ t2 CREATE TABLE `t2` ( `c3` int(11) NOT NULL, `c4` bit(1) NOT NULL, PRIMARY KEY (`pk1`,`c3`) -) TABLESPACE table_space2 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (c3) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) +) TABLESPACE table_space2 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (c3) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) */ SHOW CREATE TABLE test.t3; Table Create Table t3 CREATE TABLE `t3` ( @@ -359,7 +359,7 @@ t3 CREATE TABLE `t3` ( `c3` int(11) NOT NULL, `c4` bit(1) NOT NULL, PRIMARY KEY (`pk1`,`c3`) -) TABLESPACE table_space2 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY RANGE (c3) (PARTITION x1 VALUES LESS THAN (105) ENGINE = ndbcluster, PARTITION x2 VALUES LESS THAN (333) ENGINE = ndbcluster, PARTITION x3 VALUES LESS THAN (720) ENGINE = ndbcluster) +) TABLESPACE table_space2 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (c3) (PARTITION x1 VALUES LESS THAN (105) ENGINE = ndbcluster, PARTITION x2 VALUES LESS THAN (333) ENGINE = ndbcluster, PARTITION x3 VALUES LESS THAN (720) ENGINE = ndbcluster) */ SHOW CREATE TABLE test.t4; Table Create Table t4 CREATE TABLE `t4` ( @@ -368,7 +368,7 @@ t4 CREATE TABLE `t4` ( `c3` int(11) NOT NULL, `c4` bit(1) NOT NULL, PRIMARY KEY (`pk1`,`c3`) -) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY HASH (c3) PARTITIONS 2 +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (c3) PARTITIONS 2 */ SHOW CREATE TABLE test.t5; Table Create Table t5 CREATE TABLE `t5` ( @@ -377,7 +377,7 @@ t5 CREATE TABLE `t5` ( `c3` int(11) NOT NULL, `c4` bit(1) NOT NULL, PRIMARY KEY (`pk1`,`c3`) -) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (pk1) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (pk1) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) */ SHOW CREATE TABLE test.t6; Table Create Table t6 CREATE TABLE `t6` ( @@ -386,7 +386,7 @@ t6 CREATE TABLE `t6` ( `c3` int(11) NOT NULL, `c4` bit(1) NOT NULL, PRIMARY KEY (`pk1`,`c3`) -) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY RANGE (pk1) (PARTITION x1 VALUES LESS THAN (333) ENGINE = ndbcluster, PARTITION x2 VALUES LESS THAN (720) ENGINE = ndbcluster) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (pk1) (PARTITION x1 VALUES LESS THAN (333) ENGINE = ndbcluster, PARTITION x2 VALUES LESS THAN (720) ENGINE = ndbcluster) */ SELECT * FROM information_schema.partitions WHERE table_name= 't1'; TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PARTITION_NAME SUBPARTITION_NAME PARTITION_ORDINAL_POSITION SUBPARTITION_ORDINAL_POSITION PARTITION_METHOD SUBPARTITION_METHOD PARTITION_EXPRESSION SUBPARTITION_EXPRESSION PARTITION_DESCRIPTION TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE CREATE_TIME UPDATE_TIME CHECK_TIME CHECKSUM PARTITION_COMMENT NODEGROUP TABLESPACE_NAME NULL test t1 p0 NULL 1 NULL HASH NULL c3 NULL NULL 0 0 0 NULL 0 0 NULL NULL NULL NULL default 0 default diff --git a/mysql-test/r/ndb_partition_key.result b/mysql-test/r/ndb_partition_key.result index b936469ac14..fd793c4c2c7 100644 --- a/mysql-test/r/ndb_partition_key.result +++ b/mysql-test/r/ndb_partition_key.result @@ -78,7 +78,7 @@ t1 CREATE TABLE `t1` ( `c` int(11) NOT NULL DEFAULT '0', `d` int(11) DEFAULT NULL, PRIMARY KEY (`a`,`b`,`c`) USING HASH -) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (b) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (b) */ DROP TABLE t1; CREATE TABLE t1 (a int not null primary key) PARTITION BY KEY(a) @@ -97,19 +97,19 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) */ alter table t1 engine=heap; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=MEMORY DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) +) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) */ alter table t1 engine=ndb; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) */ alter table t1 engine=heap remove partitioning; show create table t1; Table Create Table @@ -123,7 +123,7 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) */ alter table t1 partition by key (a) (partition p0 engine=ndb, partition p1 engine=ndb); @@ -131,7 +131,7 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) */ alter table t1 remove partitioning; show create table t1; Table Create Table @@ -150,7 +150,7 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL -) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) */ drop table t1; CREATE TABLE t1 ( c1 MEDIUMINT NOT NULL AUTO_INCREMENT, diff --git a/mysql-test/r/ndb_partition_range.result b/mysql-test/r/ndb_partition_range.result index cb79f04873e..9cc9aa2cda9 100644 --- a/mysql-test/r/ndb_partition_range.result +++ b/mysql-test/r/ndb_partition_range.result @@ -115,7 +115,7 @@ t1 CREATE TABLE `t1` ( `c` int(11) NOT NULL, PRIMARY KEY (`b`), UNIQUE KEY `a` (`a`) -) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY RANGE (b) (PARTITION x1 VALUES LESS THAN (5) ENGINE = ndbcluster, PARTITION x2 VALUES LESS THAN (10) ENGINE = ndbcluster, PARTITION x3 VALUES LESS THAN (20) ENGINE = ndbcluster) +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (b) (PARTITION x1 VALUES LESS THAN (5) ENGINE = ndbcluster, PARTITION x2 VALUES LESS THAN (10) ENGINE = ndbcluster, PARTITION x3 VALUES LESS THAN (20) ENGINE = ndbcluster) */ drop table t1; CREATE TABLE t1 (id MEDIUMINT NOT NULL, -- cgit v1.2.1 From 0ec6bb3f00bd390dcbd8ea2f634ac6ff6b19c9e6 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 28 Jun 2006 02:35:13 +0200 Subject: Bug #20705 table truncation from one mysqld causes ERROR 1412 on other mysqld servers - make sure to invalidate even if table is not binlogged --- sql/ha_ndbcluster_binlog.cc | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/sql/ha_ndbcluster_binlog.cc b/sql/ha_ndbcluster_binlog.cc index 40a98563613..b18fa8ec931 100644 --- a/sql/ha_ndbcluster_binlog.cc +++ b/sql/ha_ndbcluster_binlog.cc @@ -1770,8 +1770,31 @@ ndb_binlog_thread_handle_schema_event(THD *thd, Ndb *ndb, /* acknowledge this query _after_ epoch completion */ post_epoch_unlock= 1; break; - case SOT_CREATE_TABLE: case SOT_TRUNCATE_TABLE: + { + char key[FN_REFLEN]; + build_table_filename(key, sizeof(key), schema->db, schema->name, ""); + NDB_SHARE *share= get_share(key, 0, FALSE, FALSE); + // invalidation already handled by binlog thread + if (!share || !share->op) + { + { + injector_ndb->setDatabaseName(schema->db); + Ndb_table_guard ndbtab_g(injector_ndb->getDictionary(), + schema->name); + ndbtab_g.invalidate(); + } + TABLE_LIST table_list; + bzero((char*) &table_list,sizeof(table_list)); + table_list.db= schema->db; + table_list.alias= table_list.table_name= schema->name; + close_cached_tables(thd, 0, &table_list, FALSE); + } + if (share) + free_share(&share); + } + // fall through + case SOT_CREATE_TABLE: pthread_mutex_lock(&LOCK_open); if (ndb_create_table_from_engine(thd, schema->db, schema->name)) { -- cgit v1.2.1 From 39defccfd4ebe99c9c827ef07cdf7514e52f5951 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 28 Jun 2006 10:21:01 +0400 Subject: Fixing BUG#17719 "Delete of binlog files fails on Windows" and BUG#19208 "Test 'rpl000017' hangs on Windows". Both bugs are caused by attempting to delete an opened file and to create immediatedly a new one with the same name. On Windows it can be supported only on NT-platforms (by using FILE_SHARE_DELETE mode and with renaming the file before deletion). Because deleting not-closed files is not supported on all platforms (e.g. Win 98|ME) this is to be considered harmful and should be eliminated by a "code redesign". VC++Files/mysys/mysys.vcproj: To be sure that __NT__ is defined for Win configurations. Temporary, to be changed in more appropriate way. include/my_sys.h: Adding my_delete_allow_opened to be invoked to delete a (possibly) not closed file on Windows NT-platforms. mysys/my_delete.c: Adding nt_share_delete() function implementing a (possibly) not closed file deletion on Windows NT. sql/log.cc: MYSQL_LOG::reset_logs(): Deleting usually not closed binlog files. --- VC++Files/mysys/mysys.vcproj | 10 ++++----- include/my_sys.h | 8 +++++++ mysys/my_delete.c | 51 ++++++++++++++++++++++++++++++++++++++++++++ sql/log.cc | 4 ++-- 4 files changed, 66 insertions(+), 7 deletions(-) diff --git a/VC++Files/mysys/mysys.vcproj b/VC++Files/mysys/mysys.vcproj index 1053b605119..2c834cab5b2 100644 --- a/VC++Files/mysys/mysys.vcproj +++ b/VC++Files/mysys/mysys.vcproj @@ -22,7 +22,7 @@ Optimization="0" OptimizeForProcessor="2" AdditionalIncludeDirectories="../include,../zlib" - PreprocessorDefinitions="_DEBUG;SAFEMALLOC;SAFE_MUTEX;_WINDOWS;USE_SYMDIR" + PreprocessorDefinitions="__NT__;_DEBUG;SAFEMALLOC;SAFE_MUTEX;_WINDOWS;USE_SYMDIR" RuntimeLibrary="1" PrecompiledHeaderFile=".\debug/mysys.pch" AssemblerListingLocation=".\debug/" @@ -71,7 +71,7 @@ InlineFunctionExpansion="1" OptimizeForProcessor="2" AdditionalIncludeDirectories="../include,../zlib" - PreprocessorDefinitions="USE_SYMDIR;NDEBUG;DBUG_OFF;_WINDOWS" + PreprocessorDefinitions="__NT__;USE_SYMDIR;NDEBUG;DBUG_OFF;_WINDOWS" StringPooling="TRUE" RuntimeLibrary="0" EnableFunctionLevelLinking="TRUE" @@ -121,7 +121,7 @@ InlineFunctionExpansion="1" OptimizeForProcessor="2" AdditionalIncludeDirectories="../include,../zlib" - PreprocessorDefinitions="DBUG_OFF;_WINDOWS;NDEBUG" + PreprocessorDefinitions="__NT__;DBUG_OFF;_WINDOWS;NDEBUG" StringPooling="TRUE" RuntimeLibrary="0" EnableFunctionLevelLinking="TRUE" @@ -170,7 +170,7 @@ Optimization="0" OptimizeForProcessor="2" AdditionalIncludeDirectories="../include,../zlib" - PreprocessorDefinitions="_DEBUG;SAFEMALLOC;SAFE_MUTEX;_WINDOWS;USE_SYMDIR;USE_TLS" + PreprocessorDefinitions="__NT__;_DEBUG;SAFEMALLOC;SAFE_MUTEX;_WINDOWS;USE_SYMDIR;USE_TLS" RuntimeLibrary="1" PrecompiledHeaderFile=".\mysys___Win32_TLS_DEBUG/mysys.pch" AssemblerListingLocation=".\mysys___Win32_TLS_DEBUG/" @@ -219,7 +219,7 @@ InlineFunctionExpansion="1" OptimizeForProcessor="2" AdditionalIncludeDirectories="../include,../zlib" - PreprocessorDefinitions="DBUG_OFF;_WINDOWS;NDEBUG;USE_TLS" + PreprocessorDefinitions="__NT__;DBUG_OFF;_WINDOWS;NDEBUG;USE_TLS" StringPooling="TRUE" RuntimeLibrary="0" EnableFunctionLevelLinking="TRUE" diff --git a/include/my_sys.h b/include/my_sys.h index 229389f1ac5..6457113d282 100644 --- a/include/my_sys.h +++ b/include/my_sys.h @@ -541,6 +541,7 @@ typedef int (*Process_option_func)(void *ctx, const char *group_name, #include + /* Prototypes for mysys and my_func functions */ extern int my_copy(const char *from,const char *to,myf MyFlags); @@ -613,6 +614,13 @@ extern File my_sopen(const char *path, int oflag, int shflag, int pmode); #endif extern int check_if_legal_filename(const char *path); +#if defined(__WIN__) && defined(__NT__) +extern int nt_share_delete(const char *name,myf MyFlags); +#define my_delete_allow_opened(fname,flags) nt_share_delete((fname),(flags)) +#else +#define my_delete_allow_opened(fname,flags) my_delete((fname),(flags)) +#endif + #ifndef TERMINATE extern void TERMINATE(FILE *file); #endif diff --git a/mysys/my_delete.c b/mysys/my_delete.c index 5670f03da64..de2a9814a56 100644 --- a/mysys/my_delete.c +++ b/mysys/my_delete.c @@ -32,3 +32,54 @@ int my_delete(const char *name, myf MyFlags) } DBUG_RETURN(err); } /* my_delete */ + +#if defined(__WIN__) && defined(__NT__) +/* + Delete file which is possibly not closed. + + This function is intended to be used exclusively as a temporal solution + for Win NT in case when it is needed to delete a not closed file (note + that the file must be opened everywhere with FILE_SHARE_DELETE mode). + Deleting not-closed files can not be supported on Win 98|ME (and because + of that is considered harmful). + + The function deletes the file with its preliminary renaming. This is + because when not-closed share-delete file is deleted it still lives on + a disk until it will not be closed everwhere. This may conflict with an + attempt to create a new file with the same name. The deleted file is + renamed to ..deleted where - the initial name of the + file, - a hexadecimal number chosen to make the temporal name to + be unique. +*/ +int nt_share_delete(const char *name, myf MyFlags) +{ + char buf[MAX_PATH + 20]; + ulong cnt; + DBUG_ENTER("nt_share_delete"); + DBUG_PRINT("my",("name %s MyFlags %d", name, MyFlags)); + + for (cnt= GetTickCount(); cnt; cnt--) + { + sprintf(buf, "%s.%08X.deleted", name, cnt); + if (MoveFile(name, buf)) + break; + + if ((errno= GetLastError()) == ERROR_ALREADY_EXISTS) + continue; + + DBUG_PRINT("warning", ("Failed to rename %s to %s, errno: %d", + name, buf, errno)); + break; + } + + if (DeleteFile(buf)) + DBUG_RETURN(0); + + my_errno= GetLastError(); + if (MyFlags & (MY_FAE+MY_WME)) + my_error(EE_DELETE, MYF(ME_BELL + ME_WAITTANG + (MyFlags & ME_NOINPUT)), + name, my_errno); + + DBUG_RETURN(-1); +} +#endif diff --git a/sql/log.cc b/sql/log.cc index ba02c9ba082..baa92f748ab 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -959,14 +959,14 @@ bool MYSQL_LOG::reset_logs(THD* thd) for (;;) { - my_delete(linfo.log_file_name, MYF(MY_WME)); + my_delete_allow_opened(linfo.log_file_name, MYF(MY_WME)); if (find_next_log(&linfo, 0)) break; } /* Start logging with a new file */ close(LOG_CLOSE_INDEX); - my_delete(index_file_name, MYF(MY_WME)); // Reset (open will update) + my_delete_allow_opened(index_file_name, MYF(MY_WME)); // Reset (open will update) if (!thd->slave_thread) need_start_event=1; if (!open_index_file(index_file_name, 0)) -- cgit v1.2.1 From d7534c3af39aa775dc9478b74b873634e697ccfd Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 28 Jun 2006 11:27:37 +0200 Subject: ndb - bug#20442 force close of scan (of outstanding scan_frag) ndb/src/ndbapi/NdbScanOperation.cpp: Force close of scan in when not doing committed read scan --- ndb/src/ndbapi/NdbScanOperation.cpp | 60 +++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/ndb/src/ndbapi/NdbScanOperation.cpp b/ndb/src/ndbapi/NdbScanOperation.cpp index f14b5409ce8..6b587be688f 100644 --- a/ndb/src/ndbapi/NdbScanOperation.cpp +++ b/ndb/src/ndbapi/NdbScanOperation.cpp @@ -1503,6 +1503,66 @@ NdbScanOperation::close_impl(TransporterFacade* tp, bool forceSend){ return -1; } + bool holdLock = false; + if (theSCAN_TABREQ) + { + ScanTabReq * req = CAST_PTR(ScanTabReq, theSCAN_TABREQ->getDataPtrSend()); + holdLock = ScanTabReq::getHoldLockFlag(req->requestInfo); + } + + /** + * When using locks, force close of scan directly + */ + if (holdLock && theError.code == 0 && + (m_sent_receivers_count + m_conf_receivers_count + m_api_receivers_count)) + { + TransporterFacade * tp = TransporterFacade::instance(); + NdbApiSignal tSignal(theNdb->theMyRef); + tSignal.setSignal(GSN_SCAN_NEXTREQ); + + Uint32* theData = tSignal.getDataPtrSend(); + Uint64 transId = theNdbCon->theTransactionId; + theData[0] = theNdbCon->theTCConPtr; + theData[1] = 1; + theData[2] = transId; + theData[3] = (Uint32) (transId >> 32); + + tSignal.setLength(4); + int ret = tp->sendSignal(&tSignal, nodeId); + if (ret) + { + setErrorCode(4008); + return -1; + } + checkForceSend(forceSend); + + /** + * If no receiver is outstanding... + * set it to 1 as execCLOSE_SCAN_REP resets it + */ + m_sent_receivers_count = m_sent_receivers_count ? m_sent_receivers_count : 1; + + while(theError.code == 0 && (m_sent_receivers_count + m_conf_receivers_count)) + { + theNdb->theImpl->theWaiter.m_node = nodeId; + theNdb->theImpl->theWaiter.m_state = WAIT_SCAN; + int return_code = theNdb->receiveResponse(WAITFOR_SCAN_TIMEOUT); + switch(return_code){ + case 0: + break; + case -1: + setErrorCode(4008); + case -2: + m_api_receivers_count = 0; + m_conf_receivers_count = 0; + m_sent_receivers_count = 0; + theNdbCon->theReleaseOnClose = true; + return -1; + } + } + return 0; + } + /** * Wait for outstanding */ -- cgit v1.2.1 From 52c32382ce7c83d2c9d7590fc517d4e4aa4c1c2f Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 28 Jun 2006 11:38:22 +0200 Subject: ndb - ndbapi test of bug#20252 storage/ndb/test/ndbapi/testScan.cpp: ndbapi test of bug#20252 --- storage/ndb/test/ndbapi/testScan.cpp | 102 ++++++++++++++++++----------------- 1 file changed, 54 insertions(+), 48 deletions(-) diff --git a/storage/ndb/test/ndbapi/testScan.cpp b/storage/ndb/test/ndbapi/testScan.cpp index d8c45985630..097454f69b2 100644 --- a/storage/ndb/test/ndbapi/testScan.cpp +++ b/storage/ndb/test/ndbapi/testScan.cpp @@ -1151,70 +1151,76 @@ runScanVariants(NDBT_Context* ctx, NDBT_Step* step) { for(int flags = 0; flags < 4; flags++) { - for (int par = 0; par < 16; par += 1 + (rand() % 3)) + for (int batch = 0; batch < 100; batch += (1 + batch + (batch >> 3))) { - bool disk = flags & 1; - bool tups = flags & 2; - g_info << "lm: " << lm - << " disk: " << disk - << " tup scan: " << tups - << " par: " << par - << endl; - - NdbConnection* pCon = pNdb->startTransaction(); - NdbScanOperation* pOp = pCon->getNdbScanOperation(pTab->getName()); - if (pOp == NULL) { - ERR(pCon->getNdbError()); - return NDBT_FAILED; - } - - if( pOp->readTuples((NdbOperation::LockMode)lm, - tups ? NdbScanOperation::SF_TupScan : 0, - par) != 0) + for (int par = 0; par < 16; par += 1 + (rand() % 3)) { - ERR(pCon->getNdbError()); - return NDBT_FAILED; - } - - int check = pOp->interpret_exit_ok(); - if( check == -1 ) { - ERR(pCon->getNdbError()); - return NDBT_FAILED; - } - - // Define attributes to read - bool found_disk = false; - for(int a = 0; agetNoOfColumns(); a++){ - if (pTab->getColumn(a)->getStorageType() == NdbDictionary::Column::StorageTypeDisk) - { - found_disk = true; - if (!disk) - continue; + bool disk = flags & 1; + bool tups = flags & 2; + g_info << "lm: " << lm + << " disk: " << disk + << " tup scan: " << tups + << " par: " << par + << " batch: " << batch + << endl; + + NdbConnection* pCon = pNdb->startTransaction(); + NdbScanOperation* pOp = pCon->getNdbScanOperation(pTab->getName()); + if (pOp == NULL) { + ERR(pCon->getNdbError()); + return NDBT_FAILED; } - if((pOp->getValue(pTab->getColumn(a)->getName())) == 0) { + if( pOp->readTuples((NdbOperation::LockMode)lm, + tups ? NdbScanOperation::SF_TupScan : 0, + par, + batch) != 0) + { ERR(pCon->getNdbError()); return NDBT_FAILED; } - } - - if (! (disk && !found_disk)) - { - check = pCon->execute(NoCommit); + + int check = pOp->interpret_exit_ok(); if( check == -1 ) { ERR(pCon->getNdbError()); return NDBT_FAILED; } - int res; - int row = 0; - while((res = pOp->nextResult()) == 0); + // Define attributes to read + bool found_disk = false; + for(int a = 0; agetNoOfColumns(); a++){ + if (pTab->getColumn(a)->getStorageType() == + NdbDictionary::Column::StorageTypeDisk) + { + found_disk = true; + if (!disk) + continue; + } + + if((pOp->getValue(pTab->getColumn(a)->getName())) == 0) { + ERR(pCon->getNdbError()); + return NDBT_FAILED; + } + } + + if (! (disk && !found_disk)) + { + check = pCon->execute(NoCommit); + if( check == -1 ) { + ERR(pCon->getNdbError()); + return NDBT_FAILED; + } + + int res; + int row = 0; + while((res = pOp->nextResult()) == 0); + } + pCon->close(); } - pCon->close(); } } } - + return NDBT_OK; } -- cgit v1.2.1 From 42f612626f7825a3eac4d3dadd841c1fa344fb81 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 28 Jun 2006 12:16:10 +0200 Subject: ndb - 50->51 merge of bug#20442, force close scan (with locks) storage/ndb/src/ndbapi/NdbScanOperation.cpp: merge --- storage/ndb/src/ndbapi/NdbScanOperation.cpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/storage/ndb/src/ndbapi/NdbScanOperation.cpp b/storage/ndb/src/ndbapi/NdbScanOperation.cpp index bc4baacbcf0..5852570a686 100644 --- a/storage/ndb/src/ndbapi/NdbScanOperation.cpp +++ b/storage/ndb/src/ndbapi/NdbScanOperation.cpp @@ -1587,7 +1587,6 @@ NdbScanOperation::close_impl(TransporterFacade* tp, bool forceSend, if (holdLock && theError.code == 0 && (m_sent_receivers_count + m_conf_receivers_count + m_api_receivers_count)) { - TransporterFacade * tp = TransporterFacade::instance(); NdbApiSignal tSignal(theNdb->theMyRef); tSignal.setSignal(GSN_SCAN_NEXTREQ); @@ -1605,8 +1604,7 @@ NdbScanOperation::close_impl(TransporterFacade* tp, bool forceSend, setErrorCode(4008); return -1; } - checkForceSend(forceSend); - + /** * If no receiver is outstanding... * set it to 1 as execCLOSE_SCAN_REP resets it @@ -1615,9 +1613,7 @@ NdbScanOperation::close_impl(TransporterFacade* tp, bool forceSend, while(theError.code == 0 && (m_sent_receivers_count + m_conf_receivers_count)) { - theNdb->theImpl->theWaiter.m_node = nodeId; - theNdb->theImpl->theWaiter.m_state = WAIT_SCAN; - int return_code = theNdb->receiveResponse(WAITFOR_SCAN_TIMEOUT); + int return_code = poll_guard->wait_scan(WAITFOR_SCAN_TIMEOUT, nodeId, forceSend); switch(return_code){ case 0: break; @@ -1639,8 +1635,7 @@ NdbScanOperation::close_impl(TransporterFacade* tp, bool forceSend, */ while(theError.code == 0 && m_sent_receivers_count) { - int return_code= poll_guard->wait_scan(WAITFOR_SCAN_TIMEOUT, nodeId, - false); + int return_code= poll_guard->wait_scan(WAITFOR_SCAN_TIMEOUT, nodeId, forceSend); switch(return_code){ case 0: break; -- cgit v1.2.1 From cd3dedc98125669f0624b53f03dcef638e96ac83 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 28 Jun 2006 14:30:13 +0400 Subject: Adding __NT__ to Max Win32 configuration. --- VC++Files/sql/mysqld.vcproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VC++Files/sql/mysqld.vcproj b/VC++Files/sql/mysqld.vcproj index 3f20cffec0a..c9675f3fd8a 100644 --- a/VC++Files/sql/mysqld.vcproj +++ b/VC++Files/sql/mysqld.vcproj @@ -85,7 +85,7 @@ InlineFunctionExpansion="1" OptimizeForProcessor="2" AdditionalIncludeDirectories="../bdb/build_win32,../include,../regex,../extra/yassl/include,../zlib" - PreprocessorDefinitions="NDEBUG;DBUG_OFF;USE_SYMDIR;HAVE_INNOBASE_DB;HAVE_BERKELEY_DB;HAVE_ARCHIVE_DB;HAVE_BLACKHOLE_DB;HAVE_EXAMPLE_DB;HAVE_FEDERATED_DB;MYSQL_SERVER;_WINDOWS;_CONSOLE;HAVE_DLOPEN" + PreprocessorDefinitions="__NT__;NDEBUG;DBUG_OFF;USE_SYMDIR;HAVE_INNOBASE_DB;HAVE_BERKELEY_DB;HAVE_ARCHIVE_DB;HAVE_BLACKHOLE_DB;HAVE_EXAMPLE_DB;HAVE_FEDERATED_DB;MYSQL_SERVER;_WINDOWS;_CONSOLE;HAVE_DLOPEN" StringPooling="TRUE" RuntimeLibrary="0" EnableFunctionLevelLinking="TRUE" -- cgit v1.2.1 From f659c1b7402ebe991e17860c27bdd141bfaa7361 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 28 Jun 2006 12:30:14 +0200 Subject: BUG#20739: __NT__ not probably defined for mysys project. Make sure for the mysys project that __NT__ is defined in *nt solution configurations (but not in other configurations). VC++Files/mysql.sln: Define __NT__ in mysys for *nt configurations. VC++Files/mysys/mysys.vcproj: Add configurations with __NT__ defined. mysql-test/mysql-test-run.pl: Also allow testing a "Max nt" build. --- VC++Files/mysql.sln | 20 ++++----- VC++Files/mysys/mysys.vcproj | 104 ++++++++++++++++++++++++++++++++++++++++++- mysql-test/mysql-test-run.pl | 3 +- 3 files changed, 114 insertions(+), 13 deletions(-) diff --git a/VC++Files/mysql.sln b/VC++Files/mysql.sln index 3e3e4c67e17..a8c659ad71e 100644 --- a/VC++Files/mysql.sln +++ b/VC++Files/mysql.sln @@ -1110,8 +1110,8 @@ Global {DB28DE80-837F-4497-9AA9-CC0A20584C98}.Release.Build.0 = Release|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.classic.ActiveCfg = TLS|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.classic.Build.0 = TLS|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.classic nt.ActiveCfg = Release|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.classic nt.Build.0 = Release|Win32 + {44D9C7DC-6636-4B82-BD01-6876C64017DF}.classic nt.ActiveCfg = Release nt|Win32 + {44D9C7DC-6636-4B82-BD01-6876C64017DF}.classic nt.Build.0 = Release nt|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Debug.ActiveCfg = Debug|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Debug.Build.0 = Debug|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Embedded_Classic.ActiveCfg = TLS|Win32 @@ -1126,18 +1126,18 @@ Global {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Embedded_Release.Build.0 = TLS|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Max.ActiveCfg = Max|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Max.Build.0 = Max|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Max nt.ActiveCfg = Max|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Max nt.Build.0 = Max|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.nt.ActiveCfg = Release|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.nt.Build.0 = Release|Win32 + {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Max nt.ActiveCfg = Max nt|Win32 + {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Max nt.Build.0 = Max nt|Win32 + {44D9C7DC-6636-4B82-BD01-6876C64017DF}.nt.ActiveCfg = Release nt|Win32 + {44D9C7DC-6636-4B82-BD01-6876C64017DF}.nt.Build.0 = Release nt|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro.ActiveCfg = Release|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro.Build.0 = Release|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro gpl.ActiveCfg = Release|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro gpl.Build.0 = Release|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro gpl nt.ActiveCfg = Release|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro gpl nt.Build.0 = Release|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro nt.ActiveCfg = Release|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro nt.Build.0 = Release|Win32 + {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro gpl nt.ActiveCfg = Release nt|Win32 + {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro gpl nt.Build.0 = Release nt|Win32 + {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro nt.ActiveCfg = Release nt|Win32 + {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro nt.Build.0 = Release nt|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Release.ActiveCfg = Release|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Release.Build.0 = Release|Win32 {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.classic.ActiveCfg = classic|Win32 diff --git a/VC++Files/mysys/mysys.vcproj b/VC++Files/mysys/mysys.vcproj index 2c834cab5b2..828fd8ec213 100644 --- a/VC++Files/mysys/mysys.vcproj +++ b/VC++Files/mysys/mysys.vcproj @@ -65,6 +65,56 @@ ConfigurationType="4" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="FALSE"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + Date: Wed, 28 Jun 2006 14:03:08 +0300 Subject: Added purecov comment for new, not executed code for my recent changeset (Found by dgcov) mysql-test/r/show_check.result: Test SHOW PLUGIN. (Was not covered by test suite before) mysql-test/t/show_check.test: Test SHOW PLUGIN. (Was not covered by test suite before) mysys/my_handler.c: Added purecov comment for new, not executed code sql/filesort.cc: Added purecov comment for new, not executed code Removed 'purecov: inspected' from code covered by current testsuite sql/ha_ndbcluster_binlog.cc: Added purecov comment for new, not executed code sql/log_event.cc: Added purecov comment for new, not executed code sql/mysqld.cc: Added purecov comment for new, not executed code sql/sql_parse.cc: Added purecov comment for new, not executed code --- mysql-test/r/show_check.result | 6 ++++++ mysql-test/t/show_check.test | 13 +++++++++++++ mysys/my_handler.c | 3 ++- sql/filesort.cc | 10 +++++++++- sql/ha_ndbcluster_binlog.cc | 2 ++ sql/log_event.cc | 2 ++ sql/mysqld.cc | 2 ++ sql/sql_parse.cc | 4 ++-- 8 files changed, 38 insertions(+), 4 deletions(-) diff --git a/mysql-test/r/show_check.result b/mysql-test/r/show_check.result index bb6c2c3beee..7237cf11fc0 100644 --- a/mysql-test/r/show_check.result +++ b/mysql-test/r/show_check.result @@ -623,4 +623,10 @@ delete from mysql.db where user='mysqltest_4'; delete from mysql.tables_priv where user='mysqltest_4'; flush privileges; drop database mysqltest; +show full plugin; +show warnings; +Level Code Message +Warning 1541 The syntax 'SHOW PLUGIN' is deprecated and will be removed in MySQL 5.2. Please use 'SHOW PLUGINS' instead. +show plugin; +show plugins; End of 5.1 tests diff --git a/mysql-test/t/show_check.test b/mysql-test/t/show_check.test index 2f44f4e97c5..94894ef50de 100644 --- a/mysql-test/t/show_check.test +++ b/mysql-test/t/show_check.test @@ -445,4 +445,17 @@ delete from mysql.tables_priv where user='mysqltest_4'; flush privileges; drop database mysqltest; +# +# Ensure that show plugin code is tested +# + +--disable_result_log +show full plugin; +--enable_result_log +show warnings; +--disable_result_log +show plugin; +show plugins; +--enable_result_log + --echo End of 5.1 tests diff --git a/mysys/my_handler.c b/mysys/my_handler.c index da619a49ffd..bfec44d57a4 100644 --- a/mysys/my_handler.c +++ b/mysys/my_handler.c @@ -548,7 +548,8 @@ HA_KEYSEG *ha_find_null(HA_KEYSEG *keyseg, uchar *a) case HA_KEYTYPE_DOUBLE: a= end; break; - case HA_KEYTYPE_END: + case HA_KEYTYPE_END: /* purecov: inspected */ + /* keep compiler happy */ DBUG_ASSERT(0); break; } diff --git a/sql/filesort.cc b/sql/filesort.cc index e712bed9e13..f41d72ac07a 100644 --- a/sql/filesort.cc +++ b/sql/filesort.cc @@ -688,9 +688,17 @@ static void make_sortkey(register SORTPARAM *param, bzero((char*) to-1,sort_field->length+1); else { + /* purecov: begin deadcode */ + /* + This should only happen during extreme conditions if we run out + of memory or have an item marked not null when it can be null. + This code is here mainly to avoid a hard crash in this case. + */ + DBUG_ASSERT(0); DBUG_PRINT("warning", ("Got null on something that shouldn't be null")); bzero((char*) to,sort_field->length); // Avoid crash + /* purecov: end */ } break; } @@ -699,7 +707,7 @@ static void make_sortkey(register SORTPARAM *param, diff=(int) (sort_field_length - length); if (diff < 0) { - diff=0; /* purecov: inspected */ + diff=0; length= sort_field_length; } if (sort_field->suffix_length) diff --git a/sql/ha_ndbcluster_binlog.cc b/sql/ha_ndbcluster_binlog.cc index 3afba85248e..b124f358e55 100644 --- a/sql/ha_ndbcluster_binlog.cc +++ b/sql/ha_ndbcluster_binlog.cc @@ -125,6 +125,7 @@ static TABLE_LIST binlog_tables; */ #ifndef DBUG_OFF +/* purecov: begin deadcode */ static void print_records(TABLE *table, const char *record) { for (uint j= 0; j < table->s->fields; j++) @@ -144,6 +145,7 @@ static void print_records(TABLE *table, const char *record) DBUG_PRINT("info",("[%u]field_ptr[0->%d]: %s", j, n, buf)); } } +/* purecov: end */ #else #define print_records(a,b) #endif diff --git a/sql/log_event.cc b/sql/log_event.cc index 7cffa552954..36805e0043d 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -5918,6 +5918,7 @@ int Table_map_log_event::exec_event(st_relay_log_info *rli) if (col <= tsh->fields) { + /* purecov: begin inspected */ /* If we get here, the number of columns in the event didn't match the number of columns in the table on the slave, *or* @@ -5950,6 +5951,7 @@ int Table_map_log_event::exec_event(st_relay_log_info *rli) thd->query_error= 1; error= ERR_BAD_TABLE_DEF; goto err; + /* purecov: end */ } /* diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 73ccecf45df..e339065cd55 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -3223,9 +3223,11 @@ server."); /* fall back to the log files if tables are not present */ if (have_csv_db == SHOW_OPTION_NO) { + /* purecov: begin inspected */ sql_print_error("CSV engine is not present, falling back to the " "log files"); log_output_options= (log_output_options & ~LOG_TABLE) | LOG_FILE; + /* purecov: end */ } logger.set_handlers(LOG_FILE, opt_slow_log ? log_output_options:LOG_NONE, diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index ea4eea19e34..5445b37846d 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -5212,7 +5212,7 @@ static bool execute_sqlcom_select(THD *thd, TABLE_LIST *all_tables) even if the query itself redirects the output. */ if (!(result= new select_send())) - return 1; + return 1; /* purecov: inspected */ thd->send_explain_fields(result); res= mysql_explain_union(thd, &thd->lex->unit, result); if (lex->describe & DESCRIBE_EXTENDED) @@ -5231,7 +5231,7 @@ static bool execute_sqlcom_select(THD *thd, TABLE_LIST *all_tables) else { if (!result && !(result= new select_send())) - return 1; + return 1; /* purecov: inspected */ query_cache_store_query(thd, all_tables); res= handle_select(thd, lex, result, 0); if (result != lex->result) -- cgit v1.2.1 From a0837ecec49cbd258cb9f0a3cd83ecef90355179 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 28 Jun 2006 21:52:24 +1000 Subject: BUG#19894 Data nodes fail during loading data if NoOfFragmentLogFiles=1 change default minimum to 3 bug is *very* timing dependent, unable to reproduce here, but theoretically possible. ndb/src/mgmsrv/ConfigInfo.cpp: change minimum NoOfFragmentLogFiles to 3 --- ndb/src/mgmsrv/ConfigInfo.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ndb/src/mgmsrv/ConfigInfo.cpp b/ndb/src/mgmsrv/ConfigInfo.cpp index 66a400a3e22..3b257e2da48 100644 --- a/ndb/src/mgmsrv/ConfigInfo.cpp +++ b/ndb/src/mgmsrv/ConfigInfo.cpp @@ -857,7 +857,7 @@ const ConfigInfo::ParamInfo ConfigInfo::m_ParamInfo[] = { false, ConfigInfo::CI_INT, "8", - "1", + "3", STR_VALUE(MAX_INT_RNIL) }, { -- cgit v1.2.1 From ffaacf0dd3caea93fdc3af12954dcdf05c1897ac Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 28 Jun 2006 14:25:17 +0200 Subject: BUG#20739 Improved definition of mysys configuration for -nt builds. VC++Files/mysql.sln: Use the name 'nt' instead of 'Release' for configuration. VC++Files/mysys/mysys.vcproj: Use the name 'nt' instead of 'Release' for configuration. Use separate output files for NT and non-NT configurations. --- VC++Files/mysql.sln | 16 ++++++++-------- VC++Files/mysys/mysys.vcproj | 30 +++++++++++++++--------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/VC++Files/mysql.sln b/VC++Files/mysql.sln index a8c659ad71e..943b38c1f8e 100644 --- a/VC++Files/mysql.sln +++ b/VC++Files/mysql.sln @@ -1110,8 +1110,8 @@ Global {DB28DE80-837F-4497-9AA9-CC0A20584C98}.Release.Build.0 = Release|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.classic.ActiveCfg = TLS|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.classic.Build.0 = TLS|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.classic nt.ActiveCfg = Release nt|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.classic nt.Build.0 = Release nt|Win32 + {44D9C7DC-6636-4B82-BD01-6876C64017DF}.classic nt.ActiveCfg = nt|Win32 + {44D9C7DC-6636-4B82-BD01-6876C64017DF}.classic nt.Build.0 = nt|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Debug.ActiveCfg = Debug|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Debug.Build.0 = Debug|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Embedded_Classic.ActiveCfg = TLS|Win32 @@ -1128,16 +1128,16 @@ Global {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Max.Build.0 = Max|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Max nt.ActiveCfg = Max nt|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Max nt.Build.0 = Max nt|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.nt.ActiveCfg = Release nt|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.nt.Build.0 = Release nt|Win32 + {44D9C7DC-6636-4B82-BD01-6876C64017DF}.nt.ActiveCfg = nt|Win32 + {44D9C7DC-6636-4B82-BD01-6876C64017DF}.nt.Build.0 = nt|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro.ActiveCfg = Release|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro.Build.0 = Release|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro gpl.ActiveCfg = Release|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro gpl.Build.0 = Release|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro gpl nt.ActiveCfg = Release nt|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro gpl nt.Build.0 = Release nt|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro nt.ActiveCfg = Release nt|Win32 - {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro nt.Build.0 = Release nt|Win32 + {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro gpl nt.ActiveCfg = nt|Win32 + {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro gpl nt.Build.0 = nt|Win32 + {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro nt.ActiveCfg = nt|Win32 + {44D9C7DC-6636-4B82-BD01-6876C64017DF}.pro nt.Build.0 = nt|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Release.ActiveCfg = Release|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Release.Build.0 = Release|Win32 {AC47623D-933C-4A80-83BB-B6AF7CB28B4B}.classic.ActiveCfg = classic|Win32 diff --git a/VC++Files/mysys/mysys.vcproj b/VC++Files/mysys/mysys.vcproj index 828fd8ec213..3885e18cea8 100644 --- a/VC++Files/mysys/mysys.vcproj +++ b/VC++Files/mysys/mysys.vcproj @@ -110,8 +110,8 @@ @@ -125,10 +125,10 @@ StringPooling="TRUE" RuntimeLibrary="0" EnableFunctionLevelLinking="TRUE" - PrecompiledHeaderFile=".\max/mysys.pch" - AssemblerListingLocation=".\max/" - ObjectFile=".\max/" - ProgramDataBaseFileName=".\max/" + PrecompiledHeaderFile=".\max_nt/mysys.pch" + AssemblerListingLocation=".\max_nt/" + ObjectFile=".\max_nt/" + ProgramDataBaseFileName=".\max_nt/" WarningLevel="3" SuppressStartupBanner="TRUE" CompileAs="0"/> @@ -136,7 +136,7 @@ Name="VCCustomBuildTool"/> @@ -209,9 +209,9 @@ Name="VCAuxiliaryManagedWrapperGeneratorTool"/> @@ -225,10 +225,10 @@ StringPooling="TRUE" RuntimeLibrary="0" EnableFunctionLevelLinking="TRUE" - PrecompiledHeaderFile=".\release/mysys.pch" - AssemblerListingLocation=".\release/" - ObjectFile=".\release/" - ProgramDataBaseFileName=".\release/" + PrecompiledHeaderFile=".\nt/mysys.pch" + AssemblerListingLocation=".\nt/" + ObjectFile=".\nt/" + ProgramDataBaseFileName=".\nt/" WarningLevel="3" SuppressStartupBanner="TRUE" CompileAs="0"/> @@ -236,7 +236,7 @@ Name="VCCustomBuildTool"/> -- cgit v1.2.1 From 8f42d836dc3f7e2ce71b7116602710515dae5ebc Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 28 Jun 2006 15:53:54 +0300 Subject: 4.1->5.0 merge for bug #16458 mysql-test/r/distinct.result: 4.1->5.0 merge for bug #16458 * 5.0 is better in detecting duplicate columns sql/sql_select.cc: 4.1->5.0 merge for bug #16458 * Should not do the optimization if using index for group by * chnaged structures in 5.0 --- mysql-test/r/distinct.result | 2 +- sql/sql_select.cc | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/mysql-test/r/distinct.result b/mysql-test/r/distinct.result index a2ff10594e6..a3d1e8bf3bb 100644 --- a/mysql-test/r/distinct.result +++ b/mysql-test/r/distinct.result @@ -537,7 +537,7 @@ id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 index NULL PRIMARY 8 NULL 3 Using index EXPLAIN SELECT DISTINCT a,a FROM t2; id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t2 index NULL PRIMARY 8 NULL 3 Using index; Using temporary +1 SIMPLE t2 index NULL PRIMARY 8 NULL 3 Using index EXPLAIN SELECT DISTINCT b,a FROM t2; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 index NULL PRIMARY 8 NULL 3 Using index diff --git a/sql/sql_select.cc b/sql/sql_select.cc index eec572a6dfc..3ecac9532ca 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -874,7 +874,11 @@ JOIN::optimize() The FROM clause must contain a single non-constant table. */ if (tables - const_tables == 1 && (group_list || select_distinct) && - !tmp_table_param.sum_func_count) + !tmp_table_param.sum_func_count && + (!join_tab[const_tables].select || + !join_tab[const_tables].select->quick || + join_tab[const_tables].select->quick->get_type() != + QUICK_SELECT_I::QS_TYPE_GROUP_MIN_MAX)) { if (group_list && list_contains_unique_index(join_tab[const_tables].table, @@ -11279,9 +11283,9 @@ static bool list_contains_unique_index(TABLE *table, bool (*find_func) (Field *, void *), void *data) { - for (uint keynr= 0; keynr < table->keys; keynr++) + for (uint keynr= 0; keynr < table->s->keys; keynr++) { - if (keynr == table->primary_key || + if (keynr == table->s->primary_key || (table->key_info[keynr].flags & HA_NOSAME)) { KEY *keyinfo= table->key_info + keynr; -- cgit v1.2.1 From 1fdccc89032524d51085f888a0d2356f7b6ebbfe Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 28 Jun 2006 15:07:41 +0200 Subject: Disabled test case for Windows (BUG#20753) --- mysql-test/t/rpl_openssl.test | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mysql-test/t/rpl_openssl.test b/mysql-test/t/rpl_openssl.test index 7d769ad448e..af70a1a9453 100644 --- a/mysql-test/t/rpl_openssl.test +++ b/mysql-test/t/rpl_openssl.test @@ -1,3 +1,7 @@ +# TODO: THIS TEST DOES NOT WORK ON WINDOWS +# This should be fixed. +--source include/not_windows.inc + source include/have_openssl.inc; source include/master-slave.inc; -- cgit v1.2.1 From 48b09e2a51a1c26ab48af4c1cfb45519517202b3 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 28 Jun 2006 15:15:49 +0200 Subject: BUG#20739. In the Windows build files, the "Max nt" configuration for some reason had the mysql_client_test project disabled. Enable it. VC++Files/mysql.sln: The "Max nt" configuration for some reason had the mysql_client_test project disabled. Enable it. --- VC++Files/mysql.sln | 1 + 1 file changed, 1 insertion(+) diff --git a/VC++Files/mysql.sln b/VC++Files/mysql.sln index 943b38c1f8e..bd0cae1d5d8 100644 --- a/VC++Files/mysql.sln +++ b/VC++Files/mysql.sln @@ -1427,6 +1427,7 @@ Global {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.Max.ActiveCfg = Release|Win32 {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.Max.Build.0 = Release|Win32 {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.Max nt.ActiveCfg = Release|Win32 + {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.Max nt.Build.0 = Release|Win32 {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.nt.ActiveCfg = Release|Win32 {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.nt.Build.0 = Release|Win32 {DA224DAB-5006-42BE-BB77-16E8BE5326D5}.pro.ActiveCfg = Release|Win32 -- cgit v1.2.1 From 730d16614db30e76938ab3eccf09ce7c1528d334 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 28 Jun 2006 16:28:29 +0300 Subject: gcc 4.1 linux warning fixes backported from 5.0. sql/item_cmpfunc.h: gcc 4.1 linux warning fixes backported from 5.0 sql/opt_range.cc: gcc 4.1 linux warning fixes. sql/spatial.h: gcc 4.1 linux warning fixes backported from 5.0 sql/sql_select.h: gcc 4.1 linux warning fixes. sql/sql_update.cc: gcc 4.1 linux warning fixes. --- sql/item_cmpfunc.h | 14 ++++++++++++++ sql/opt_range.cc | 4 ++-- sql/spatial.h | 4 ++++ sql/sql_select.h | 2 +- sql/sql_update.cc | 2 +- 5 files changed, 22 insertions(+), 4 deletions(-) diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index 68852b5a5f6..73abe208d9e 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -124,6 +124,8 @@ public: class Comp_creator { public: + Comp_creator() {} /* Remove gcc warning */ + virtual ~Comp_creator() {} /* Remove gcc warning */ virtual Item_bool_func2* create(Item *a, Item *b) const = 0; virtual const char* symbol(bool invert) const = 0; virtual bool eqne_op() const = 0; @@ -133,6 +135,8 @@ public: class Eq_creator :public Comp_creator { public: + Eq_creator() {} /* Remove gcc warning */ + virtual ~Eq_creator() {} /* Remove gcc warning */ virtual Item_bool_func2* create(Item *a, Item *b) const; virtual const char* symbol(bool invert) const { return invert? "<>" : "="; } virtual bool eqne_op() const { return 1; } @@ -142,6 +146,8 @@ public: class Ne_creator :public Comp_creator { public: + Ne_creator() {} /* Remove gcc warning */ + virtual ~Ne_creator() {} /* Remove gcc warning */ virtual Item_bool_func2* create(Item *a, Item *b) const; virtual const char* symbol(bool invert) const { return invert? "=" : "<>"; } virtual bool eqne_op() const { return 1; } @@ -151,6 +157,8 @@ public: class Gt_creator :public Comp_creator { public: + Gt_creator() {} /* Remove gcc warning */ + virtual ~Gt_creator() {} /* Remove gcc warning */ virtual Item_bool_func2* create(Item *a, Item *b) const; virtual const char* symbol(bool invert) const { return invert? "<=" : ">"; } virtual bool eqne_op() const { return 0; } @@ -160,6 +168,8 @@ public: class Lt_creator :public Comp_creator { public: + Lt_creator() {} /* Remove gcc warning */ + virtual ~Lt_creator() {} /* Remove gcc warning */ virtual Item_bool_func2* create(Item *a, Item *b) const; virtual const char* symbol(bool invert) const { return invert? ">=" : "<"; } virtual bool eqne_op() const { return 0; } @@ -169,6 +179,8 @@ public: class Ge_creator :public Comp_creator { public: + Ge_creator() {} /* Remove gcc warning */ + virtual ~Ge_creator() {} /* Remove gcc warning */ virtual Item_bool_func2* create(Item *a, Item *b) const; virtual const char* symbol(bool invert) const { return invert? "<" : ">="; } virtual bool eqne_op() const { return 0; } @@ -178,6 +190,8 @@ public: class Le_creator :public Comp_creator { public: + Le_creator() {} /* Remove gcc warning */ + virtual ~Le_creator() {} /* Remove gcc warning */ virtual Item_bool_func2* create(Item *a, Item *b) const; virtual const char* symbol(bool invert) const { return invert? ">" : "<="; } virtual bool eqne_op() const { return 0; } diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 67141aab6ce..34f11e4968a 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -63,8 +63,8 @@ public: SEL_ARG(Field *field, uint8 part, char *min_value, char *max_value, uint8 min_flag, uint8 max_flag, uint8 maybe_flag); SEL_ARG(enum Type type_arg) - :elements(1),use_count(1),left(0),next_key_part(0),color(BLACK), - type(type_arg),min_flag(0) + :min_flag(0),elements(1),use_count(1),left(0),next_key_part(0), + color(BLACK), type(type_arg) {} inline bool is_same(SEL_ARG *arg) { diff --git a/sql/spatial.h b/sql/spatial.h index 206958b3eaf..378233a2156 100644 --- a/sql/spatial.h +++ b/sql/spatial.h @@ -165,6 +165,8 @@ struct Geometry_buffer; class Geometry { public: + Geometry() {} /* remove gcc warning */ + virtual ~Geometry() {} /* remove gcc warning */ static void *operator new(size_t size, void *buffer) { return buffer; @@ -173,6 +175,8 @@ public: static void operator delete(void *ptr, void *buffer) {} + static void operator delete(void *buffer) {} /* remove gcc warning */ + enum wkbType { wkb_point= 1, diff --git a/sql/sql_select.h b/sql/sql_select.h index 75cd0b4d797..c61ef4fb92b 100644 --- a/sql/sql_select.h +++ b/sql/sql_select.h @@ -229,7 +229,7 @@ class JOIN :public Sql_alloc } JOIN(JOIN &join) - :fields_list(join.fields_list) + :Sql_alloc(), fields_list(join.fields_list) { init(join.thd, join.fields_list, join.select_options, join.result); diff --git a/sql/sql_update.cc b/sql/sql_update.cc index 16423b39786..089d0bf0660 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -1094,7 +1094,7 @@ bool multi_update::send_data(List ¬_used_values) memcpy((char*) tmp_table->field[0]->ptr, (char*) table->file->ref, table->file->ref_length); /* Write row, ignoring duplicated updates to a row */ - if (error= tmp_table->file->write_row(tmp_table->record[0])) + if ((error= tmp_table->file->write_row(tmp_table->record[0]))) { if (error != HA_ERR_FOUND_DUPP_KEY && error != HA_ERR_FOUND_DUPP_UNIQUE && -- cgit v1.2.1 From e4f4f9dfa5d4c4eaea65820c947008a83cf07802 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 28 Jun 2006 17:23:54 +0300 Subject: Added -DHAVE_MUTEX_THREAD_ONLY to fix that bdb doesn't crash with "unable to initialize mutex" BitKeeper/etc/ignore: added *.gcno --- .bzrignore | 2 ++ BUILD/compile-pentium-gcov | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.bzrignore b/.bzrignore index 25056b86642..ee94bf6c9db 100644 --- a/.bzrignore +++ b/.bzrignore @@ -1777,3 +1777,5 @@ vio/viotest-sslconnect.cpp vio/viotest.cpp zlib/*.ds? zlib/*.vcproj +*.gcda +*.gcno diff --git a/BUILD/compile-pentium-gcov b/BUILD/compile-pentium-gcov index b024bba49bf..ca37f78e283 100755 --- a/BUILD/compile-pentium-gcov +++ b/BUILD/compile-pentium-gcov @@ -14,7 +14,7 @@ export LDFLAGS="-fprofile-arcs -ftest-coverage" # The -fprofile-arcs and -ftest-coverage options cause GCC to instrument the # code with profiling information used by gcov. # the -DDISABLE_TAO_ASM is needed to avoid build failures in Yassl. -extra_flags="$pentium_cflags -fprofile-arcs -ftest-coverage -DDISABLE_TAO_ASM" +extra_flags="$pentium_cflags -fprofile-arcs -ftest-coverage -DDISABLE_TAO_ASM -DHAVE_MUTEX_THREAD_ONLY" extra_configs="$pentium_configs $debug_configs --disable-shared $static_link" extra_configs="$extra_configs $max_configs" -- cgit v1.2.1 From 0194db09e6871a351c7c06b45944cf5c2dec9d78 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 29 Jun 2006 03:24:33 +0300 Subject: Fixed failing test rpl_ndb_auto_inc.test Mark events_stress.test as 'big' as it's very slow on some machines BitKeeper/etc/ignore: added server-tools/instance-manager/net_serv.cc mysql-test/t/events_stress.test: Slow test: only run when using --big mysql-test/t/rpl_ndb_auto_inc.test: Fix failing test --- .bzrignore | 1 + mysql-test/t/events_stress.test | 3 ++- mysql-test/t/rpl_ndb_auto_inc.test | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.bzrignore b/.bzrignore index c90b5c651ab..d570c36c7f5 100644 --- a/.bzrignore +++ b/.bzrignore @@ -1780,3 +1780,4 @@ vio/viotest-sslconnect.cpp vio/viotest.cpp zlib/*.ds? zlib/*.vcproj +server-tools/instance-manager/net_serv.cc diff --git a/mysql-test/t/events_stress.test b/mysql-test/t/events_stress.test index a3a683a0a1a..6546bce3a76 100644 --- a/mysql-test/t/events_stress.test +++ b/mysql-test/t/events_stress.test @@ -1,5 +1,6 @@ # Can't test with embedded server that doesn't support grants --- source include/not_embedded.inc +--source include/not_embedded.inc +--source include/big_test.inc CREATE DATABASE IF NOT EXISTS events_test; # diff --git a/mysql-test/t/rpl_ndb_auto_inc.test b/mysql-test/t/rpl_ndb_auto_inc.test index a9cc9563d88..0fc31de9b3a 100644 --- a/mysql-test/t/rpl_ndb_auto_inc.test +++ b/mysql-test/t/rpl_ndb_auto_inc.test @@ -6,7 +6,8 @@ # Date: 2006-02-10 # Change: Augmented test to use with cluster ##################################### --- source include/master-slave.inc +--source include/master-slave.inc +--source include/have_binlog_format_mixed_or_row.inc --echo ***************** Test 1 ************************ --echo -- cgit v1.2.1 From 78c814154a621c5d0992261afd0a84f68867a708 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 29 Jun 2006 13:01:54 +0200 Subject: fixed too small requestInfo in signal + adopted signal to be as close as possible to 5.1... --- ndb/include/kernel/signaldata/LqhFrag.hpp | 44 +++++++++++++++---------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/ndb/include/kernel/signaldata/LqhFrag.hpp b/ndb/include/kernel/signaldata/LqhFrag.hpp index 50b0caaba07..72c1537854c 100644 --- a/ndb/include/kernel/signaldata/LqhFrag.hpp +++ b/ndb/include/kernel/signaldata/LqhFrag.hpp @@ -104,7 +104,7 @@ class LqhFragReq { friend bool printLQH_FRAG_REQ(FILE *, const Uint32 *, Uint32, Uint16); public: - STATIC_CONST( SignalLength = 24 ); + STATIC_CONST( SignalLength = 23 ); enum RequestInfo { CreateInRunning = 0x8000000, @@ -115,33 +115,33 @@ private: Uint32 senderData; Uint32 senderRef; Uint32 fragmentId; - Uint8 requestInfo; - Uint8 unused1; - Uint16 noOfAttributes; - Uint32 tableId; - Uint32 localKeyLength; - Uint16 maxLoadFactor; - Uint16 minLoadFactor; - Uint16 kValue; - Uint8 tableType; // DictTabInfo::TableType - Uint8 GCPIndicator; - Uint32 lh3DistrBits; - Uint32 lh3PageBits; - Uint32 noOfNullAttributes; - Uint32 maxRowsLow; - Uint32 maxRowsHigh; - Uint32 minRowsLow; - Uint32 minRowsHigh; + Uint32 requestInfo; + Uint32 maxLoadFactor; + Uint32 minLoadFactor; + Uint32 kValue; Uint32 schemaVersion; - Uint32 keyLength; Uint32 nextLCP; - Uint32 noOfKeyAttr; Uint16 noOfNewAttr; Uint16 noOfCharsets; - Uint32 checksumIndicator; - Uint32 noOfAttributeGroups; Uint32 startGci; + Uint32 tableType; // DictTabInfo::TableType Uint32 primaryTableId; // table of index or RNIL + Uint16 tableId; + Uint16 localKeyLength; + Uint16 lh3DistrBits; + Uint16 lh3PageBits; + Uint16 noOfAttributes; + Uint16 noOfNullAttributes; + Uint16 noOfPagesToPreAllocate; + Uint16 keyLength; + Uint16 noOfKeyAttr; + Uint8 checksumIndicator; + Uint8 GCPIndicator; + Uint32 noOfAttributeGroups; + Uint32 maxRowsLow; + Uint32 maxRowsHigh; + Uint32 minRowsLow; + Uint32 minRowsHigh; }; class LqhFragConf { -- cgit v1.2.1 From 8457dd1176551fe81a84793f38b2dd1f69170dc6 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 29 Jun 2006 21:43:52 +0400 Subject: Fix Bug#20692 rpl_* tests failure on hpux mysys/my_pread.c: Fix our implementation of pread/pwrite: we did change the file pointer in our implementation, while the normal preads/pwrites don't. The new code is based on glibc version of pread/pwrite. --- mysys/my_pread.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 55 insertions(+), 11 deletions(-) diff --git a/mysys/my_pread.c b/mysys/my_pread.c index 3d02e368720..eef92b9ebc6 100644 --- a/mysys/my_pread.c +++ b/mysys/my_pread.c @@ -27,7 +27,7 @@ uint my_pread(File Filedes, byte *Buffer, uint Count, my_off_t offset, myf MyFlags) { uint readbytes; - int error; + int error= 0; DBUG_ENTER("my_pread"); DBUG_PRINT("my",("Fd: %d Seek: %lu Buffer: 0x%lx Count: %u MyFlags: %d", Filedes, (ulong) offset, Buffer, Count, MyFlags)); @@ -38,17 +38,39 @@ uint my_pread(File Filedes, byte *Buffer, uint Count, my_off_t offset, errno=0; /* Linux doesn't reset this */ #endif #ifndef HAVE_PREAD + off_t old_offset; + pthread_mutex_lock(&my_file_info[Filedes].mutex); - readbytes= (uint) -1; - error= (lseek(Filedes, offset, MY_SEEK_SET) == -1L || - (readbytes = (uint) read(Filedes, Buffer, Count)) != Count); + /* + As we cannot change the file pointer, we save the old position, + before seeking to the given offset + */ + + error= (old_offset= lseek(Filedes, 0L, MY_SEEK_CUR)) == -1L || + lseek(Filedes, offset, MY_SEEK_SET) == -1L; + + if (!error) /* Seek was successful */ + { + if ((readbytes = (uint) read(Filedes, Buffer, Count)) == -1L) + my_errno= errno; + + /* + We should seek back, even if read failed. If this fails, + we will return an error. If read failed as well, we will + save the errno from read, not from lseek(). + */ + if ((error= (lseek(Filedes, old_offset, MY_SEEK_SET) == -1L)) && + readbytes != -1L) + my_errno= errno; + } + pthread_mutex_unlock(&my_file_info[Filedes].mutex); #else error=((readbytes = (uint) pread(Filedes, Buffer, Count, offset)) != Count); + my_errno= errno; #endif - if (error) + if (error || readbytes != Count) { - my_errno=errno; DBUG_PRINT("warning",("Read only %ld bytes off %ld from %d, errno: %d", readbytes,Count,Filedes,my_errno)); #ifdef THREAD @@ -89,17 +111,40 @@ uint my_pwrite(int Filedes, const byte *Buffer, uint Count, my_off_t offset, for (;;) { #ifndef HAVE_PREAD - int error; + int error= 0; + off_t old_offset; writenbytes= (uint) -1; pthread_mutex_lock(&my_file_info[Filedes].mutex); - error=(lseek(Filedes, offset, MY_SEEK_SET) != -1L && - (writenbytes = (uint) write(Filedes, Buffer, Count)) == Count); + + /* + As we cannot change the file pointer, we save the old position, + before seeking to the given offset + */ + error= ((old_offset= lseek(Filedes, 0L, MY_SEEK_CUR)) == -1L || + lseek(Filedes, offset, MY_SEEK_SET) == -1L); + + if (!error) /* Seek was successful */ + { + if ((writenbytes = (uint) write(Filedes, Buffer, Count)) == -1L) + my_errno= errno; + + /* + We should seek back, even if write failed. If this fails, + we will return an error. If write failed as well, we will + save the errno from write, not from lseek(). + */ + if ((error= (lseek(Filedes, old_offset, MY_SEEK_SET) == -1L)) && + writenbytes != -1L) + my_errno= errno; + } pthread_mutex_unlock(&my_file_info[Filedes].mutex); - if (error) + + if (!error && writenbytes == Count) break; #else if ((writenbytes = (uint) pwrite(Filedes, Buffer, Count,offset)) == Count) break; + my_errno= errno; #endif if ((int) writenbytes != -1) { /* Safegueard */ @@ -108,7 +153,6 @@ uint my_pwrite(int Filedes, const byte *Buffer, uint Count, my_off_t offset, Count-=writenbytes; offset+=writenbytes; } - my_errno=errno; DBUG_PRINT("error",("Write only %d bytes",writenbytes)); #ifndef NO_BACKGROUND #ifdef THREAD -- cgit v1.2.1 From 5d506d6b6255589dd4c28958ee03be59c690f4cf Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 29 Jun 2006 20:55:21 +0200 Subject: Bug #19202 Incorrect errorhandling in select count(*) wrt temporary error --- sql/ha_ndbcluster.cc | 83 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 59 insertions(+), 24 deletions(-) diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index ffd5932a5c1..11fdd33fad9 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -270,6 +270,7 @@ void ha_ndbcluster::records_update() { Ndb *ndb= get_ndb(); Uint64 rows; + ndb->setDatabaseName(m_dbname); if(ndb_get_table_statistics(ndb, m_tabname, &rows, 0) == 0){ info->records= rows; } @@ -2876,6 +2877,7 @@ void ha_ndbcluster::info(uint flag) DBUG_VOID_RETURN; Ndb *ndb= get_ndb(); Uint64 rows= 100; + ndb->setDatabaseName(m_dbname); if (current_thd->variables.ndb_use_exact_count) ndb_get_table_statistics(ndb, m_tabname, &rows, 0); records= rows; @@ -5228,34 +5230,53 @@ ndb_get_table_statistics(Ndb* ndb, const char * table, { DBUG_ENTER("ndb_get_table_statistics"); DBUG_PRINT("enter", ("table: %s", table)); - NdbConnection* pTrans= ndb->startTransaction(); - do + NdbConnection* pTrans; + NdbError error; + int retries= 10; + int retry_sleep= 30 * 1000; /* 30 milliseconds */ + + do { - if (pTrans == NULL) - break; + Uint64 rows, commits; + Uint64 sum_rows= 0; + Uint64 sum_commits= 0; + NdbScanOperation*pOp; + NdbResultSet *rs; + int check; + + if ((pTrans= ndb->startTransaction()) == NULL) + { + error= ndb->getNdbError(); + goto retry; + } - NdbScanOperation* pOp= pTrans->getNdbScanOperation(table); - if (pOp == NULL) - break; + if ((pOp= pTrans->getNdbScanOperation(table)) == NULL) + { + error= pTrans->getNdbError(); + goto retry; + } - NdbResultSet* rs= pOp->readTuples(NdbOperation::LM_CommittedRead); - if (rs == 0) - break; + if ((rs= pOp->readTuples(NdbOperation::LM_CommittedRead)) == 0) + { + error= pOp->getNdbError(); + goto retry; + } - int check= pOp->interpret_exit_last_row(); - if (check == -1) - break; + if (pOp->interpret_exit_last_row() == -1) + { + error= pOp->getNdbError(); + goto retry; + } - Uint64 rows, commits; pOp->getValue(NdbDictionary::Column::ROW_COUNT, (char*)&rows); pOp->getValue(NdbDictionary::Column::COMMIT_COUNT, (char*)&commits); - check= pTrans->execute(NoCommit, AbortOnError, TRUE); - if (check == -1) - break; + if (pTrans->execute(NoCommit, AbortOnError, TRUE) == -1) + { + error= pTrans->getNdbError(); + goto retry; + } - Uint64 sum_rows= 0; - Uint64 sum_commits= 0; while((check= rs->nextResult(TRUE, TRUE)) == 0) { sum_rows+= rows; @@ -5263,7 +5284,10 @@ ndb_get_table_statistics(Ndb* ndb, const char * table, } if (check == -1) - break; + { + error= pOp->getNdbError(); + goto retry; + } rs->close(TRUE); @@ -5274,11 +5298,22 @@ ndb_get_table_statistics(Ndb* ndb, const char * table, * commit_count= sum_commits; DBUG_PRINT("exit", ("records: %u commits: %u", sum_rows, sum_commits)); DBUG_RETURN(0); - } while(0); - ndb->closeTransaction(pTrans); - DBUG_PRINT("exit", ("failed")); - DBUG_RETURN(-1); +retry: + if (pTrans) + { + ndb->closeTransaction(pTrans); + pTrans= NULL; + } + if (error.status == NdbError::TemporaryError && retries--) + { + my_sleep(retry_sleep); + continue; + } + break; + } while(1); + DBUG_PRINT("exit", ("failed, error %u(%s)", error.code, error.message)); + ERR_RETURN(error); } /* -- cgit v1.2.1 From d6fe37ae70a483aad8488509650f92411204606c Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 29 Jun 2006 22:11:29 +0200 Subject: corrected merge error --- sql/ha_ndbcluster.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 7f433f06cf9..e4ff39797ca 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -5846,8 +5846,11 @@ ndb_get_table_statistics(Ndb* ndb, const char * table, { Uint64 rows, commits, mem; Uint32 size; + Uint32 count= 0; Uint64 sum_rows= 0; Uint64 sum_commits= 0; + Uint64 sum_row_size= 0; + Uint64 sum_mem= 0; NdbScanOperation*pOp; NdbResultSet *rs; int check; -- cgit v1.2.1 From 372f81af1646abf565148f21cb46f15039683a2d Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 29 Jun 2006 23:22:55 +0300 Subject: Replaced assert with argument checking, as rpl_ndb_UUID caused slave to fail on x86 64 bit (It failed even if test was marked as skipped) sql/ha_ndbcluster.cc: Replaced assert with argument checking, as rpl_ndb_UUID failed on x64 --- sql/ha_ndbcluster.cc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 361ec9b0d2b..701d47eebb8 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -4667,7 +4667,15 @@ int ha_ndbcluster::create(const char *name, // reset at return m_table= ndbtab_g.get_table(); // TODO check also that we have the same frm... - DBUG_ASSERT(m_table != 0); + if (!m_table) + { + /* purecov: begin deadcode */ + const NdbError err= dict->getNdbError(); + ERR_PRINT(err); + my_errno= ndb_to_mysql_error(&err); + DBUG_RETURN(my_errno); + /* purecov: end */ + } DBUG_PRINT("info", ("Table %s/%s created successfully", m_dbname, m_tabname)); -- cgit v1.2.1 From 8299fa3f9e5d459641e01b51e9c016dba08dfbf4 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 30 Jun 2006 03:28:58 +0400 Subject: fix test failures mysys/my_pread.c: don't set errno without a real error --- mysys/my_pread.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mysys/my_pread.c b/mysys/my_pread.c index eef92b9ebc6..a829caa80d2 100644 --- a/mysys/my_pread.c +++ b/mysys/my_pread.c @@ -66,8 +66,9 @@ uint my_pread(File Filedes, byte *Buffer, uint Count, my_off_t offset, pthread_mutex_unlock(&my_file_info[Filedes].mutex); #else - error=((readbytes = (uint) pread(Filedes, Buffer, Count, offset)) != Count); - my_errno= errno; + if ((error= ((readbytes = + (uint) pread(Filedes, Buffer, Count, offset)) != Count))) + my_errno= errno; #endif if (error || readbytes != Count) { -- cgit v1.2.1 From 8c89c0d2957e27554582e099cc57e842985bbbd5 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 30 Jun 2006 08:11:51 +0400 Subject: cleanup mysys/my_pread.c: don't set errno without a real error --- mysys/my_pread.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mysys/my_pread.c b/mysys/my_pread.c index a829caa80d2..ac52895efe9 100644 --- a/mysys/my_pread.c +++ b/mysys/my_pread.c @@ -145,7 +145,8 @@ uint my_pwrite(int Filedes, const byte *Buffer, uint Count, my_off_t offset, #else if ((writenbytes = (uint) pwrite(Filedes, Buffer, Count,offset)) == Count) break; - my_errno= errno; + else + my_errno= errno; #endif if ((int) writenbytes != -1) { /* Safegueard */ -- cgit v1.2.1 From 6b0ebe20beb3300c5a480008e001d1616804e67e Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 30 Jun 2006 15:15:20 +0200 Subject: Add a script scripts/make_win_bin_dist, used to generate a Windows binary disctribution for Falcon. scripts/Makefile.am: Add the make_win_bin_dist script. scripts/make_win_bin_dist: New BitKeeper file ``scripts/make_win_bin_dist'' --- scripts/Makefile.am | 3 +- scripts/make_win_bin_dist | 116 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+), 1 deletion(-) create mode 100755 scripts/make_win_bin_dist diff --git a/scripts/Makefile.am b/scripts/Makefile.am index af3cbc19cb5..c51c63a1bfe 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -60,7 +60,8 @@ EXTRA_SCRIPTS = make_binary_distribution.sh \ EXTRA_DIST = $(EXTRA_SCRIPTS) \ mysqlaccess.conf \ - mysqlbug + mysqlbug \ + make_win_bin_dist dist_pkgdata_DATA = fill_help_tables.sql mysql_fix_privilege_tables.sql diff --git a/scripts/make_win_bin_dist b/scripts/make_win_bin_dist new file mode 100755 index 00000000000..cebcccb56f4 --- /dev/null +++ b/scripts/make_win_bin_dist @@ -0,0 +1,116 @@ +#! /bin/sh + +NOINST_NAME=$1 + +mkdir $NOINST_NAME +mkdir $NOINST_NAME/bin +cp client/release/*.exe $NOINST_NAME/bin/ +cp extra/release/*.exe $NOINST_NAME/bin/ +mv $NOINST_NAME/bin/comp_err.exe $NOINST_NAME/bin/comp-err.exe +cp storage/myisam/release/*.exe $NOINST_NAME/bin/ +cp server-tools/instance-manager/release/*.exe $NOINST_NAME/bin/ +cp tests/release/*.exe $NOINST_NAME/bin/ +cp libmysql/release/*.exe $NOINST_NAME/bin/ +cp libmysql/release/libmysql.dll $NOINST_NAME/bin/ + +cp sql/release/mysqld.exe $NOINST_NAME/bin/mysqld.exe +cp sql/debug/mysqld.exe $NOINST_NAME/bin/mysqld-debug.exe +# For Pro/Classic builds, do this instead: +# cp sql/release/mysqld.exe $NOINST_NAME/bin/mysqld-nt.exe +# cp sql/debug/mysqld.exe $NOINST_NAME/bin/mysqld-debug.exe + +cp COPYING EXCEPTIONS-CLIENT $NOINST_NAME/ +cp -dpR win/data $NOINST_NAME/data +mkdir $NOINST_NAME/Docs +cp Docs/INSTALL-BINARY Docs/manual.chm ChangeLog COPYING $NOINST_NAME/Docs/ + +# These will be filled in when we enable embedded. +mkdir -p $NOINST_NAME/Embedded/DLL/debug $NOINST_NAME/Embedded/DLL/release $NOINST_NAME/Embedded/static/release + +mkdir -p $NOINST_NAME/examples/libmysqltest/debug $NOINST_NAME/examples/libmysqltest/release +cp libmysql/mytest.c libmysql/myTest.vcproj libmysql/release/myTest.exe $NOINST_NAME/examples/libmysqltest/ +cp libmysql/debug/myTest.exe $NOINST_NAME/examples/libmysqltest/debug/ +cp libmysql/release/myTest.exe $NOINST_NAME/examples/libmysqltest/release/ + +mkdir -p $NOINST_NAME/examples/tests +cp tests/*.res tests/*.tst tests/*.pl tests/*.c $NOINST_NAME/examples/tests/ + +mkdir -p $NOINST_NAME/include +cp include/conf*.h \ + include/mysql*.h \ + include/errmsg.h \ + include/my_alloc.h \ + include/my_getopt.h \ + include/my_sys.h \ + include/my_list.h \ + include/my_pthread.h \ + include/my_dbug.h \ + include/m_string.h \ + include/m_ctype.h \ + include/my_global.h \ + include/typelib.h $NOINST_NAME/include/ +cp libmysql/libmysql.def $NOINST_NAME/include/ +cp libmysqld/libmysqld.def $NOINST_NAME/include/ + +mkdir -p $NOINST_NAME/lib/debug $NOINST_NAME/lib/opt +cp libmysql/debug/libmysql.dll \ + libmysql/debug/libmysql.lib \ + client/debug/mysqlclient.lib \ + mysys/debug/mysys.lib \ + regex/debug/regex.lib \ + strings/debug/strings.lib \ + zlib/debug/zlib.lib $NOINST_NAME/lib/debug/ +cp libmysql/release/libmysql.dll \ + libmysql/release/libmysql.lib \ + client/release/mysqlclient.lib \ + regex/release/regex.lib \ + strings/release/strings.lib \ + zlib/release/zlib.lib $NOINST_NAME/lib/opt/ +cp mysys/release/mysys.lib $NOINST_NAME/lib/opt/mysys_tls.lib + +cp support-files/my-*.ini $NOINST_NAME/ + +mkdir -p $NOINST_NAME/mysql-test/include $NOINST_NAME/mysql-test/lib \ + $NOINST_NAME/mysql-test/r $NOINST_NAME/mysql-test/std_data \ + $NOINST_NAME/mysql-test/t $NOINST_NAME/mysql-test/extra +cp mysql-test/mysql-test-run.pl $NOINST_NAME/mysql-test/ +cp mysql-test/README $NOINST_NAME/mysql-test/ +cp mysql-test/install_test_db.sh $NOINST_NAME/mysql-test/install_test_db +cp mysql-test/include/*.inc $NOINST_NAME/mysql-test/include/ +cp mysql-test/lib/*.pl $NOINST_NAME/mysql-test/lib/ +cp mysql-test/lib/*.sql $NOINST_NAME/mysql-test/lib/ +cp mysql-test/r/*.require $NOINST_NAME/mysql-test/r/ +# Need this trick, or we get "argument list too long". +ABS_DST=`pwd`/$NOINST_NAME +(cd mysql-test/r/ && cp *.result $ABS_DST/mysql-test/r/) +cp mysql-test/std_data/* $NOINST_NAME/mysql-test/std_data/ +cp mysql-test/t/*.disabled $NOINST_NAME/mysql-test/t/ +cp mysql-test/t/*.opt $NOINST_NAME/mysql-test/t/ +cp mysql-test/t/*.sh $NOINST_NAME/mysql-test/t/ +cp mysql-test/t/*.slave-mi $NOINST_NAME/mysql-test/t/ +cp mysql-test/t/*.sql $NOINST_NAME/mysql-test/t/ +cp mysql-test/t/*.def $NOINST_NAME/mysql-test/t/ +(cd mysql-test/t/ && cp *.test $ABS_DST/mysql-test/t/) +cp -dpR mysql-test/extra/* $NOINST_NAME/mysql-test/extra/ + +# This copies in the unsubstituted scripts (containing @VAR@), but that seems +# rather better than substituting random Unix paths and architecture names +# from the Unix bootstrap host. Not sure what the point is of including these +# shell scripts in the Windows packaging in any case. +mkdir -p $NOINST_NAME/scripts +for i in `cd scripts && ls`; do \ + if echo $i | grep -q '\.sh'; then \ + cp scripts/$i $NOINST_NAME/scripts/`echo $i | sed -e 's/\.sh$//'`; \ + else if [ $i = Makefile.am -o $i = Makefile.in -o -e scripts/$i.sh ] ; then \ + : ; \ + else \ + cp scripts/$i $NOINST_NAME/scripts/$i; \ + fi; fi; \ +done + +cp -dpR sql/share $NOINST_NAME/ +cp -dpR sql-bench $NOINST_NAME/ +rm -f $NOINST_NAME/sql-bench/*.sh $NOINST_NAME/sql-bench/Makefile* + +zip -r $NOINST_NAME.zip $NOINST_NAME +rm -Rf $NOINST_NAME -- cgit v1.2.1 From b3523520f86d11744e0cad01039ec4189518a35e Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 1 Jul 2006 01:37:20 +0400 Subject: Reverted wrong bug fix (Bug#11228) mysql-test/t/key.test: Added SHOW CREATE TABLE, which is the proper way to check for table definitions mysql-test/r/key.result: Fixed result after removing wrong bug fix sql/table.cc: Reverted wrong bug fix. The intention with the original code was to show that MySQL treats the first given unique key as a primary key. Clients can use the marked primary key as a real primary key to validate row changes in case of conflicting updates. The ODBC driver (and other drivers) may also use this fact to optimize/check updates and handle conflicts. The marked key also shows what some engines, like InnoDB or NDB, will use as it's internal primary key. For checking if someone has declared a true PRIMARY KEY, one should use 'SHOW CREATE TABLE' --- mysql-test/r/key.result | 10 +++++++++- mysql-test/t/key.test | 1 + sql/table.cc | 21 +++++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/key.result b/mysql-test/r/key.result index af1db92b1ef..ea8d4338d08 100644 --- a/mysql-test/r/key.result +++ b/mysql-test/r/key.result @@ -336,8 +336,16 @@ UNIQUE i1idx (i1), UNIQUE i2idx (i2)); desc t1; Field Type Null Key Default Extra -i1 int(11) NO UNI +i1 int(11) NO PRI i2 int(11) NO UNI +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i1` int(11) NOT NULL, + `i2` int(11) NOT NULL, + UNIQUE KEY `i1idx` (`i1`), + UNIQUE KEY `i2idx` (`i2`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; create table t1 ( c1 int, diff --git a/mysql-test/t/key.test b/mysql-test/t/key.test index 34a66febcac..7c6b38cb871 100644 --- a/mysql-test/t/key.test +++ b/mysql-test/t/key.test @@ -334,6 +334,7 @@ create table t1 ( UNIQUE i1idx (i1), UNIQUE i2idx (i2)); desc t1; +show create table t1; drop table t1; # diff --git a/sql/table.cc b/sql/table.cc index c7b851949fc..a96ca0da881 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -1025,6 +1025,27 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head, if (share->key_info[key].flags & HA_FULLTEXT) share->key_info[key].algorithm= HA_KEY_ALG_FULLTEXT; + if (primary_key >= MAX_KEY && (keyinfo->flags & HA_NOSAME)) + { + /* + If the UNIQUE key doesn't have NULL columns and is not a part key + declare this as a primary key. + */ + primary_key=key; + for (i=0 ; i < keyinfo->key_parts ;i++) + { + uint fieldnr= key_part[i].fieldnr; + if (!fieldnr || + share->field[fieldnr-1]->null_ptr || + share->field[fieldnr-1]->key_length() != + key_part[i].length) + { + primary_key=MAX_KEY; // Can't be used + break; + } + } + } + for (i=0 ; i < keyinfo->key_parts ; key_part++,i++) { Field *field; -- cgit v1.2.1 From c92b025b3a98f02b26678cfd14dba2d169f980c8 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 1 Jul 2006 00:01:37 -0400 Subject: BUG#17138: Crashes in stored procedure Last round of review fixes BUILD/compile-pentium-gcov: No change sql/ha_ndbcluster.h: Last round of review changes sql/ha_partition.h: Last round of review changes sql/handler.h: Last round of review changes sql/item_sum.cc: Last round of review changes sql/sql_acl.cc: Last round of review changes sql/sql_insert.cc: Last round of review changes sql/sql_select.cc: Last round of review changes sql/sql_table.cc: Last round of review changes sql/sql_union.cc: Last round of review changes sql/sql_update.cc: Last round of review changes --- sql/ha_ndbcluster.h | 5 ++--- sql/ha_partition.h | 5 ++--- sql/handler.h | 14 ++++++++------ sql/item_sum.cc | 2 +- sql/sql_acl.cc | 8 ++++---- sql/sql_insert.cc | 18 +++++++++++------- sql/sql_select.cc | 4 ++-- sql/sql_table.cc | 7 +++---- sql/sql_union.cc | 2 +- sql/sql_update.cc | 12 ++++++------ 10 files changed, 40 insertions(+), 37 deletions(-) diff --git a/sql/ha_ndbcluster.h b/sql/ha_ndbcluster.h index d5ad299607d..16b4c9f0794 100644 --- a/sql/ha_ndbcluster.h +++ b/sql/ha_ndbcluster.h @@ -656,9 +656,8 @@ class ha_ndbcluster: public handler void set_auto_partitions(partition_info *part_info); virtual bool is_fatal_error(int error, uint flags) { - if (!handler::is_fatal_error(error, flags)) - return FALSE; - if (error == HA_ERR_NO_PARTITION_FOUND) + if (!handler::is_fatal_error(error, flags) || + error == HA_ERR_NO_PARTITION_FOUND) return FALSE; return TRUE; } diff --git a/sql/ha_partition.h b/sql/ha_partition.h index 4b85ddd2def..4c627cd50f8 100644 --- a/sql/ha_partition.h +++ b/sql/ha_partition.h @@ -304,9 +304,8 @@ public: virtual bool is_fatal_error(int error, uint flags) { - if (!handler::is_fatal_error(error, flags)) - return FALSE; - if (error == HA_ERR_NO_PARTITION_FOUND) + if (!handler::is_fatal_error(error, flags) || + error == HA_ERR_NO_PARTITION_FOUND) return FALSE; return TRUE; } diff --git a/sql/handler.h b/sql/handler.h index 3e42938b5a3..e214fa15e4f 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -235,6 +235,11 @@ /* Options of START TRANSACTION statement (and later of SET TRANSACTION stmt) */ #define MYSQL_START_TRANS_OPT_WITH_CONS_SNAPSHOT 1 +/* Flags for method is_fatal_error */ +#define HA_CHECK_DUP_KEY 1 +#define HA_CHECK_DUP_UNIQUE 2 +#define HA_CHECK_DUP (HA_CHECK_DUP_KEY + HA_CHECK_DUP_UNIQUE) + enum legacy_db_type { DB_TYPE_UNKNOWN=0,DB_TYPE_DIAB_ISAM=1, @@ -972,17 +977,14 @@ public: ignorable than others. E.g. the partition handler can get inserts into a range where there is no partition and this is an ignorable error. - HA_ERR_FOUND_DUPP_UNIQUE is a special case in MyISAM that means the - same thing as HA_ERR_FOUND_DUPP_KEY but can in some cases lead to + HA_ERR_FOUND_DUP_UNIQUE is a special case in MyISAM that means the + same thing as HA_ERR_FOUND_DUP_KEY but can in some cases lead to a slightly different error message. */ -#define HA_CHECK_DUPP_KEY 1 -#define HA_CHECK_DUPP_UNIQUE 2 -#define HA_CHECK_DUPP (HA_CHECK_DUPP_KEY + HA_CHECK_DUPP_UNIQUE) virtual bool is_fatal_error(int error, uint flags) { if (!error || - ((flags & HA_CHECK_DUPP_KEY) && + ((flags & HA_CHECK_DUP_KEY) && (error == HA_ERR_FOUND_DUPP_KEY || error == HA_ERR_FOUND_DUPP_UNIQUE))) return FALSE; diff --git a/sql/item_sum.cc b/sql/item_sum.cc index caaa111645a..debabb252c4 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -2663,7 +2663,7 @@ bool Item_sum_count_distinct::add() return tree->unique_add(table->record[0] + table->s->null_bytes); } if ((error= table->file->ha_write_row(table->record[0])) && - table->file->is_fatal_error(error, HA_CHECK_DUPP)) + table->file->is_fatal_error(error, HA_CHECK_DUP)) return TRUE; return FALSE; } diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 18591052a1f..deb7fe2d2b8 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -2049,7 +2049,7 @@ static int replace_user_table(THD *thd, TABLE *table, const LEX_USER &combo, } else if ((error=table->file->ha_write_row(table->record[0]))) // insert { // This should never happen - if (table->file->is_fatal_error(error, HA_CHECK_DUPP)) + if (table->file->is_fatal_error(error, HA_CHECK_DUP)) { table->file->print_error(error,MYF(0)); /* purecov: deadcode */ error= -1; /* purecov: deadcode */ @@ -2171,7 +2171,7 @@ static int replace_db_table(TABLE *table, const char *db, } else if (rights && (error= table->file->ha_write_row(table->record[0]))) { - if (table->file->is_fatal_error(error, HA_CHECK_DUPP_KEY)) + if (table->file->is_fatal_error(error, HA_CHECK_DUP_KEY)) goto table_error; /* purecov: deadcode */ } @@ -2743,7 +2743,7 @@ static int replace_table_table(THD *thd, GRANT_TABLE *grant_table, else { error=table->file->ha_write_row(table->record[0]); - if (table->file->is_fatal_error(error, HA_CHECK_DUPP_KEY)) + if (table->file->is_fatal_error(error, HA_CHECK_DUP_KEY)) goto table_error; /* purecov: deadcode */ } @@ -2861,7 +2861,7 @@ static int replace_routine_table(THD *thd, GRANT_NAME *grant_name, else { error=table->file->ha_write_row(table->record[0]); - if (table->file->is_fatal_error(error, HA_CHECK_DUPP_KEY)) + if (table->file->is_fatal_error(error, HA_CHECK_DUP_KEY)) goto table_error; } diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 4b42a8fbfcd..dbf6926cd69 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -977,20 +977,24 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info) { uint key_nr; bool is_duplicate_key_error; - if (table->file->is_fatal_error(error, HA_CHECK_DUPP)) + if (table->file->is_fatal_error(error, HA_CHECK_DUP)) goto err; table->file->restore_auto_increment(); // it's too early here! BUG#20188 is_duplicate_key_error= table->file->is_fatal_error(error, 0); if (!is_duplicate_key_error) { + /* + We come here when we had an ignorable error which is not a duplicate + key error. In this we ignore error if ignore flag is set, otherwise + report error as usual. We will not do any duplicate key processing. + */ if (info->ignore) - goto ok_or_after_trg_err; - else - goto err; + goto ok_or_after_trg_err; /* Ignoring a not fatal error, return 0 */ + goto err; } if ((int) (key_nr = table->file->get_dup_key(error)) < 0) { - error=HA_ERR_FOUND_DUPP_KEY; /* Database can't find key */ + error= HA_ERR_FOUND_DUPP_KEY; /* Database can't find key */ goto err; } /* Read all columns for the row we are going to replace */ @@ -1072,7 +1076,7 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info) table->record[0]))) { if (info->ignore && - !table->file->is_fatal_error(error, HA_CHECK_DUPP_KEY)) + !table->file->is_fatal_error(error, HA_CHECK_DUP_KEY)) goto ok_or_after_trg_err; goto err; } @@ -1155,7 +1159,7 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info) else if ((error=table->file->ha_write_row(table->record[0]))) { if (!info->ignore || - table->file->is_fatal_error(error, HA_CHECK_DUPP)) + table->file->is_fatal_error(error, HA_CHECK_DUP)) goto err; table->file->restore_auto_increment(); goto ok_or_after_trg_err; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 89ca6c7dc6c..cf012bdad4b 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -9354,7 +9354,7 @@ bool create_myisam_from_heap(THD *thd, TABLE *table, TMP_TABLE_PARAM *param, /* copy row that filled HEAP table */ if ((write_err=new_table.file->write_row(table->record[0]))) { - if (new_table.file->is_fatal_error(write_err, HA_CHECK_DUPP) || + if (new_table.file->is_fatal_error(write_err, HA_CHECK_DUP) || !ignore_last_dupp_key_error) goto err; } @@ -10777,7 +10777,7 @@ end_write(JOIN *join, JOIN_TAB *join_tab __attribute__((unused)), join->found_records++; if ((error=table->file->write_row(table->record[0]))) { - if (table->file->is_fatal_error(error, HA_CHECK_DUPP)) + if (!table->file->is_fatal_error(error, HA_CHECK_DUP)) goto end; if (create_myisam_from_heap(join->thd, table, &join->tmp_table_param, error,1)) diff --git a/sql/sql_table.cc b/sql/sql_table.cc index ad0a0472ffe..88462de26b0 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -6322,11 +6322,10 @@ copy_data_between_tables(TABLE *from,TABLE *to, } if ((error=to->file->ha_write_row((byte*) to->record[0]))) { - if (!ignore || - handle_duplicates != DUP_REPLACE || /* Currently always false */ - to->file->is_fatal_error(error, HA_CHECK_DUPP)) + if (!ignore || handle_duplicates != DUP_ERROR || + to->file->is_fatal_error(error, HA_CHECK_DUP)) { - if (!to->file->is_fatal_error(error, HA_CHECK_DUPP)) + if (!to->file->is_fatal_error(error, HA_CHECK_DUP)) { uint key_nr= to->file->get_dup_key(error); if ((int) key_nr >= 0) diff --git a/sql/sql_union.cc b/sql/sql_union.cc index fd4529090d4..3e6a3944093 100644 --- a/sql/sql_union.cc +++ b/sql/sql_union.cc @@ -65,7 +65,7 @@ bool select_union::send_data(List &values) if ((error= table->file->ha_write_row(table->record[0]))) { /* create_myisam_from_heap will generate error if needed */ - if (table->file->is_fatal_error(error, HA_CHECK_DUPP) && + if (table->file->is_fatal_error(error, HA_CHECK_DUP) && create_myisam_from_heap(thd, table, &tmp_table_param, error, 1)) return 1; } diff --git a/sql/sql_update.cc b/sql/sql_update.cc index 414c2b353b3..2164da01c4c 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -542,13 +542,13 @@ int mysql_update(THD *thd, } } else if (!ignore || - table->file->is_fatal_error(error, HA_CHECK_DUPP_KEY)) + table->file->is_fatal_error(error, HA_CHECK_DUP_KEY)) { /* If (ignore && error is ignorable) we don't have to do anything; otherwise... */ - if (table->file->is_fatal_error(error, HA_CHECK_DUPP_KEY)) + if (table->file->is_fatal_error(error, HA_CHECK_DUP_KEY)) thd->fatal_error(); /* Other handler errors are fatal */ table->file->print_error(error,MYF(0)); error= 1; @@ -1424,13 +1424,13 @@ bool multi_update::send_data(List ¬_used_values) { updated--; if (!ignore || - table->file->is_fatal_error(error, HA_CHECK_DUPP_KEY)) + table->file->is_fatal_error(error, HA_CHECK_DUP_KEY)) { /* If (ignore && error == is ignorable) we don't have to do anything; otherwise... */ - if (table->file->is_fatal_error(error, HA_CHECK_DUPP_KEY)) + if (table->file->is_fatal_error(error, HA_CHECK_DUP_KEY)) thd->fatal_error(); /* Other handler errors are fatal */ table->file->print_error(error,MYF(0)); DBUG_RETURN(1); @@ -1459,7 +1459,7 @@ bool multi_update::send_data(List ¬_used_values) /* Write row, ignoring duplicated updates to a row */ if ((error= tmp_table->file->ha_write_row(tmp_table->record[0]))) { - if (tmp_table->file->is_fatal_error(error, HA_CHECK_DUPP) && + if (tmp_table->file->is_fatal_error(error, HA_CHECK_DUP) && create_myisam_from_heap(thd, tmp_table, tmp_table_param + offset, error, 1)) { @@ -1583,7 +1583,7 @@ int multi_update::do_updates(bool from_send_error) table->record[0]))) { if (!ignore || - table->file->is_fatal_error(local_error, HA_CHECK_DUPP_KEY)) + table->file->is_fatal_error(local_error, HA_CHECK_DUP_KEY)) goto err; } updated++; -- cgit v1.2.1 From 9baac37a621a48602c02f8e4516143d0cbed9d65 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 3 Jul 2006 12:13:57 +0200 Subject: ndb - bug#20751 : report also composite op in merge storage/ndb/test/ndbapi/test_event_merge.cpp: cannot skip tables if ops specified storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp: report even composite op in merge test case: test_event_merge --no-blobs --ops ic:dcic --- storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp | 13 ++++++++++--- storage/ndb/test/ndbapi/test_event_merge.cpp | 12 ++++++++++-- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp b/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp index 271c317fcb4..6f096046440 100644 --- a/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp +++ b/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp @@ -1809,11 +1809,18 @@ NdbEventBuffer::insertDataL(NdbEventOperationImpl *op, } // merge is on so we do not report blob part events if (! is_blob_event) { - // report actual operation, not composite + // report actual operation and the composite // there is no way to "fix" the flags for a composite op // since the flags represent multiple ops on multiple PKs - EventBufData_list::Gci_op g = { op, (1 << sdata->operation) }; - bucket->m_data.add_gci_op(g); + // XXX fix by doing merge at end of epoch (extra mem cost) + { + EventBufData_list::Gci_op g = { op, (1 << sdata->operation) }; + bucket->m_data.add_gci_op(g); + } + { + EventBufData_list::Gci_op g = { op, (1 << data->sdata->operation) }; + bucket->m_data.add_gci_op(g); + } } } DBUG_RETURN_EVENT(0); diff --git a/storage/ndb/test/ndbapi/test_event_merge.cpp b/storage/ndb/test/ndbapi/test_event_merge.cpp index 7a9a1986793..6936e860065 100644 --- a/storage/ndb/test/ndbapi/test_event_merge.cpp +++ b/storage/ndb/test/ndbapi/test_event_merge.cpp @@ -1535,11 +1535,19 @@ selecttables() uint i; for (i = 0; i < maxrun(); i++) run(i).skip = false; + if (g_opts.opstring != 0) { + ll1("using all tables due to fixed ops"); + return; + } for (i = 0; i + 1 < maxrun(); i++) run(urandom(maxrun())).skip = true; uint cnt = 0; - for (i = 0; i < maxrun(); i++) - cnt += ! run(i).skip; + for (i = 0; i < maxrun(); i++) { + if (! run(i).skip) { + ll2("use table " << run(i).tabname); + cnt++; + } + } ll1("use " << cnt << "/" << maxrun() << " tables in this loop"); } -- cgit v1.2.1 From 353efb230f11f75ec4948eddf2d8384920de8dd7 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 3 Jul 2006 13:49:25 -0400 Subject: Additional patch from Bug#16206. BEGIN/COMMIT behavior changed 5.0 -> 5.1 . --- mysql-test/r/bdb.result | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mysql-test/r/bdb.result b/mysql-test/r/bdb.result index 8bc963bb575..b5c23718c7a 100644 --- a/mysql-test/r/bdb.result +++ b/mysql-test/r/bdb.result @@ -1974,7 +1974,9 @@ Log_name Pos Event_type Server_id End_log_pos Info f n Format_desc 1 n Server ver: VERSION, Binlog ver: 4 f n Query 1 n use `test`; create table bug16206 (a int) engine= blackhole f n Query 1 n use `test`; insert into bug16206 values(1) +f n Query 1 n use `test`; BEGIN f n Query 1 n use `test`; insert into bug16206 values(2) +f n Query 1 n use `test`; COMMIT drop table bug16206; reset master; create table bug16206 (a int) engine= bdb; -- cgit v1.2.1 From 430e94f119399c3cffa2f97bf515e11d46fe8f2f Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 3 Jul 2006 18:29:01 -0400 Subject: Removed bdb test where the binlog format is indeterminate and updated a test where it isn't. Removed a test where the merge was incorrect (and a test duplicated.) mysql-test/r/bdb.result: Removed binlog-format-specific test. Elliot says bdb is going away real soon now anyway. mysql-test/r/binlog_row_blackhole.result: Removed superfluous commits. Bug#16206. mysql-test/r/mysqldump.result: Merged incorrectly. mysql-test/t/bdb.test: Removed binlog-format-specific test. Elliot says bdb is going away real soon now anyway. --- mysql-test/r/bdb.result | 36 -------------------------------- mysql-test/r/binlog_row_blackhole.result | 4 ---- mysql-test/r/mysqldump.result | 28 ------------------------- mysql-test/t/bdb.test | 34 ------------------------------ 4 files changed, 102 deletions(-) diff --git a/mysql-test/r/bdb.result b/mysql-test/r/bdb.result index b5c23718c7a..f2d9c5704bb 100644 --- a/mysql-test/r/bdb.result +++ b/mysql-test/r/bdb.result @@ -1962,42 +1962,6 @@ create table t1 (a int) engine=bdb; commit; alter table t1 add primary key(a); drop table t1; -set autocommit=1; -reset master; -create table bug16206 (a int) engine= blackhole; -insert into bug16206 values(1); -start transaction; -insert into bug16206 values(2); -commit; -show binlog events; -Log_name Pos Event_type Server_id End_log_pos Info -f n Format_desc 1 n Server ver: VERSION, Binlog ver: 4 -f n Query 1 n use `test`; create table bug16206 (a int) engine= blackhole -f n Query 1 n use `test`; insert into bug16206 values(1) -f n Query 1 n use `test`; BEGIN -f n Query 1 n use `test`; insert into bug16206 values(2) -f n Query 1 n use `test`; COMMIT -drop table bug16206; -reset master; -create table bug16206 (a int) engine= bdb; -insert into bug16206 values(0); -insert into bug16206 values(1); -start transaction; -insert into bug16206 values(2); -commit; -insert into bug16206 values(3); -show binlog events; -Log_name Pos Event_type Server_id End_log_pos Info -f n Format_desc 1 n Server ver: VERSION, Binlog ver: 4 -f n Query 1 n use `test`; create table bug16206 (a int) engine= bdb -f n Query 1 n use `test`; insert into bug16206 values(0) -f n Query 1 n use `test`; insert into bug16206 values(1) -f n Query 1 n use `test`; BEGIN -f n Query 1 n use `test`; insert into bug16206 values(2) -f n Query 1 n use `test`; COMMIT -f n Query 1 n use `test`; insert into bug16206 values(3) -drop table bug16206; -set autocommit=0; End of 5.0 tests create table t1 (a int) engine=bdb; set session transaction isolation level repeatable read; diff --git a/mysql-test/r/binlog_row_blackhole.result b/mysql-test/r/binlog_row_blackhole.result index 140d7d4da46..29738fcf426 100644 --- a/mysql-test/r/binlog_row_blackhole.result +++ b/mysql-test/r/binlog_row_blackhole.result @@ -111,17 +111,13 @@ master-bin.000001 # Query 1 # use `test`; drop table t1,t2 master-bin.000001 # Query 1 # use `test`; create table t1 (a int) engine=blackhole master-bin.000001 # Table_map 1 # table_id: # (test.t1) master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Query 1 # use `test`; COMMIT master-bin.000001 # Table_map 1 # table_id: # (test.t1) master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Query 1 # use `test`; COMMIT master-bin.000001 # Table_map 1 # table_id: # (test.t1) master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Query 1 # use `test`; COMMIT master-bin.000001 # Query 1 # use `test`; create table t2 (a varchar(200)) engine=blackhole master-bin.000001 # Table_map 1 # table_id: # (test.t2) master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Query 1 # use `test`; COMMIT master-bin.000001 # Query 1 # use `test`; alter table t1 add b int master-bin.000001 # Query 1 # use `test`; alter table t1 drop b master-bin.000001 # Query 1 # use `test`; create table t3 like t1 diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result index bb1893ce99f..4331d7da977 100644 --- a/mysql-test/r/mysqldump.result +++ b/mysql-test/r/mysqldump.result @@ -2824,34 +2824,6 @@ mysqldump { } mysqldump drop view v1; -create database mysqldump_test_db; -use mysqldump_test_db; -create table t1 (id int); -create view v1 as select * from t1; -insert into t1 values (1232131); -insert into t1 values (4711); -insert into t1 values (3231); -insert into t1 values (0815); - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; - -/*!40000 DROP DATABASE IF EXISTS `mysqldump_test_db`*/; - -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqldump_test_db` /*!40100 DEFAULT CHARACTER SET latin1 */; - -USE `mysqldump_test_db`; -DROP TABLE IF EXISTS `t1`; -CREATE TABLE `t1` ( - `id` int(11) default NULL create table t1 (a text , b text); create table t2 (a text , b text); insert t1 values ("Duck, Duck", "goose"); diff --git a/mysql-test/t/bdb.test b/mysql-test/t/bdb.test index 63ef6ee6528..ebee341907c 100644 --- a/mysql-test/t/bdb.test +++ b/mysql-test/t/bdb.test @@ -1046,40 +1046,6 @@ alter table t1 add primary key(a); drop table t1; -# -# Bug #16206: Superfluous COMMIT event in binlog when updating BDB in autocommit mode -# -set autocommit=1; - -let $VERSION=`select version()`; - -reset master; -create table bug16206 (a int) engine= blackhole; -insert into bug16206 values(1); -start transaction; -insert into bug16206 values(2); -commit; ---replace_result $VERSION VERSION ---replace_column 1 f 2 n 5 n -show binlog events; -drop table bug16206; - -reset master; -create table bug16206 (a int) engine= bdb; -insert into bug16206 values(0); -insert into bug16206 values(1); -start transaction; -insert into bug16206 values(2); -commit; -insert into bug16206 values(3); ---replace_result $VERSION VERSION ---replace_column 1 f 2 n 5 n -show binlog events; -drop table bug16206; - -set autocommit=0; - - --echo End of 5.0 tests # -- cgit v1.2.1 From f49ef0c3a8d78726471bd3d5397c0397d05fd271 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 3 Jul 2006 19:03:47 -0400 Subject: Removed extraneous COMMITs, from Bug#16206. --- mysql-test/r/binlog_stm_blackhole.result | 9 --------- 1 file changed, 9 deletions(-) diff --git a/mysql-test/r/binlog_stm_blackhole.result b/mysql-test/r/binlog_stm_blackhole.result index 64569993a7b..3f4b058003b 100644 --- a/mysql-test/r/binlog_stm_blackhole.result +++ b/mysql-test/r/binlog_stm_blackhole.result @@ -110,27 +110,18 @@ master-bin.000001 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4 master-bin.000001 # Query 1 # use `test`; drop table t1,t2 master-bin.000001 # Query 1 # use `test`; create table t1 (a int) engine=blackhole master-bin.000001 # Query 1 # use `test`; delete from t1 where a=10 -master-bin.000001 # Query 1 # use `test`; COMMIT master-bin.000001 # Query 1 # use `test`; update t1 set a=11 where a=15 -master-bin.000001 # Query 1 # use `test`; COMMIT master-bin.000001 # Query 1 # use `test`; insert into t1 values(1) -master-bin.000001 # Query 1 # use `test`; COMMIT master-bin.000001 # Query 1 # use `test`; insert ignore into t1 values(1) -master-bin.000001 # Query 1 # use `test`; COMMIT master-bin.000001 # Query 1 # use `test`; replace into t1 values(100) -master-bin.000001 # Query 1 # use `test`; COMMIT master-bin.000001 # Query 1 # use `test`; create table t2 (a varchar(200)) engine=blackhole master-bin.000001 # Begin_load_query 1 # ;file_id=1;block_len=581 -master-bin.000001 # Query 1 # use `test`; COMMIT master-bin.000001 # Execute_load_query 1 # use `test`; load data infile '../std_data_ln/words.dat' into table t2 ;file_id=1 -master-bin.000001 # Query 1 # use `test`; COMMIT master-bin.000001 # Query 1 # use `test`; alter table t1 add b int master-bin.000001 # Query 1 # use `test`; alter table t1 drop b master-bin.000001 # Query 1 # use `test`; create table t3 like t1 master-bin.000001 # Query 1 # use `test`; insert into t1 select * from t3 -master-bin.000001 # Query 1 # use `test`; COMMIT master-bin.000001 # Query 1 # use `test`; replace into t1 select * from t3 -master-bin.000001 # Query 1 # use `test`; COMMIT drop table t1,t2,t3; reset master; create table t1 (a int) engine=blackhole; -- cgit v1.2.1 From 2ef57b836248f945657c7bd0fe02fa7fe3660b54 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 3 Jul 2006 23:17:53 -0400 Subject: Renumber events to make tests pass. This must be a result of removing extraneous COMMITs -- the numbers collapse to fill the gaps. mysql-test/r/rpl_row_create_table.result: Renumber event position. This must be a result of extraneous COMMITs; see Bug#16206. I don't fully understand this, but I can't see any harm to it. mysql-test/t/rpl_row_create_table.test: Renumber event position. This must be a result of extraneous COMMITs; see Bug#16206. I don't fully understand this, but I can't see any harm to it. --- mysql-test/r/rpl_row_create_table.result | 20 ++++++++++---------- mysql-test/t/rpl_row_create_table.test | 6 +++--- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/mysql-test/r/rpl_row_create_table.result b/mysql-test/r/rpl_row_create_table.result index f314aa39b81..2f6fcc5c5ea 100644 --- a/mysql-test/r/rpl_row_create_table.result +++ b/mysql-test/r/rpl_row_create_table.result @@ -137,11 +137,11 @@ a b 1 2 2 4 3 6 -SHOW BINLOG EVENTS FROM 1256; +SHOW BINLOG EVENTS FROM 1118; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 1256 Query 1 1356 use `test`; CREATE TABLE t7 (a INT, b INT UNIQUE) -master-bin.000001 1356 Table_map 1 1396 table_id: # (test.t7) -master-bin.000001 1396 Write_rows 1 1452 table_id: # flags: STMT_END_F +master-bin.000001 1118 Query 1 1218 use `test`; CREATE TABLE t7 (a INT, b INT UNIQUE) +master-bin.000001 1218 Table_map 1 1258 table_id: # (test.t7) +master-bin.000001 1258 Write_rows 1 1314 table_id: # flags: STMT_END_F SELECT * FROM t7 ORDER BY a,b; a b 1 2 @@ -154,10 +154,10 @@ INSERT INTO t7 SELECT a,b FROM tt4; ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back -SHOW BINLOG EVENTS FROM 1452; +SHOW BINLOG EVENTS FROM 1314; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 1452 Table_map 1 1492 table_id: # (test.t7) -master-bin.000001 1492 Write_rows 1 1548 table_id: # flags: STMT_END_F +master-bin.000001 1314 Table_map 1 1354 table_id: # (test.t7) +master-bin.000001 1354 Write_rows 1 1410 table_id: # flags: STMT_END_F SELECT * FROM t7 ORDER BY a,b; a b 1 2 @@ -191,10 +191,10 @@ Create Table CREATE TABLE `t9` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 -SHOW BINLOG EVENTS FROM 1548; +SHOW BINLOG EVENTS FROM 1410; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 1548 Query 1 1634 use `test`; CREATE TABLE t8 LIKE t4 -master-bin.000001 1634 Query 1 1773 use `test`; CREATE TABLE `t9` ( +master-bin.000001 1410 Query 1 1496 use `test`; CREATE TABLE t8 LIKE t4 +master-bin.000001 1496 Query 1 1635 use `test`; CREATE TABLE `t9` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL ) diff --git a/mysql-test/t/rpl_row_create_table.test b/mysql-test/t/rpl_row_create_table.test index 8a8ea01d688..a42089441d2 100644 --- a/mysql-test/t/rpl_row_create_table.test +++ b/mysql-test/t/rpl_row_create_table.test @@ -76,7 +76,7 @@ INSERT INTO t7 SELECT a,b FROM tt3; SELECT * FROM t7 ORDER BY a,b; # Should be written to the binary log --replace_regex /table_id: [0-9]+/table_id: #/ -SHOW BINLOG EVENTS FROM 1256; +SHOW BINLOG EVENTS FROM 1118; sync_slave_with_master; SELECT * FROM t7 ORDER BY a,b; @@ -87,7 +87,7 @@ BEGIN; INSERT INTO t7 SELECT a,b FROM tt4; ROLLBACK; --replace_regex /table_id: [0-9]+/table_id: #/ -SHOW BINLOG EVENTS FROM 1452; +SHOW BINLOG EVENTS FROM 1314; SELECT * FROM t7 ORDER BY a,b; sync_slave_with_master; SELECT * FROM t7 ORDER BY a,b; @@ -101,7 +101,7 @@ CREATE TEMPORARY TABLE tt6 LIKE tt4; --query_vertical SHOW CREATE TABLE t8 --query_vertical SHOW CREATE TABLE t9 --replace_regex /table_id: [0-9]+/table_id: #/ -SHOW BINLOG EVENTS FROM 1548; +SHOW BINLOG EVENTS FROM 1410; sync_slave_with_master; --echo **** On Slave **** --query_vertical SHOW CREATE TABLE t8 -- cgit v1.2.1