Below is the list of changes that have just been committed into a local
5.1 repository of ndbdev. When ndbdev does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet@stripped, 2007-10-31 22:37:10+01:00, jmiller@stripped +3 -0
Adding dbutil to ndb test lib
storage/ndb/test/include/dbutil.hpp@stripped, 2007-10-31 22:35:06+01:00, jmiller@stripped +97 -0
Hearder file for SQL Database Utilities class for adding MySQL SQL abilities to NDB API tests cases.
storage/ndb/test/include/dbutil.hpp@stripped, 2007-10-31 22:35:06+01:00, jmiller@stripped +0 -0
storage/ndb/test/src/Makefile.am@stripped, 2007-10-31 22:36:40+01:00, jmiller@stripped +1 -1
Updated to include dbutil
storage/ndb/test/src/dbutil.cpp@stripped, 2007-10-31 22:36:05+01:00, jmiller@stripped +176 -0
Implementation file for SQL Database Utilities class for adding MySQL SQL abilities to NDB API tests cases.
storage/ndb/test/src/dbutil.cpp@stripped, 2007-10-31 22:36:05+01:00, jmiller@stripped +0 -0
diff -Nrup a/storage/ndb/test/include/dbutil.hpp b/storage/ndb/test/include/dbutil.hpp
--- /dev/null Wed Dec 31 16:00:00 196900
+++ b/storage/ndb/test/include/dbutil.hpp 2007-10-31 22:35:06 +01:00
@@ -0,0 +1,97 @@
+// dbutil.h: interface for the database utilities class.
+//////////////////////////////////////////////////////////////////////
+// Supplies a database to the test application
+//////////////////////////////////////////////////////////////////////
+
+#ifndef DBUTIL_HPP
+#define DBUTIL_HPP
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+#include <time.h>
+#include <stdio.h>
+#include <string.h>
+#include <mysql.h>
+//include "rand.h"
+#include <stdlib.h>
+
+//#define DEBUG
+#define DIE_UNLESS(expr) \
+ ((void) ((expr) ? 0 : (Die(__FILE__, __LINE__, #expr), 0)))
+#define DIE(expr) \
+ Die(__FILE__, __LINE__, #expr)
+#define myerror(msg) PrintError(msg)
+#define mysterror(stmt, msg) PrintStError(stmt, msg)
+#define CheckStmt(stmt) \
+{ \
+if ( stmt == 0) \
+ myerror(NULL); \
+DIE_UNLESS(stmt != 0); \
+}
+
+#define check_execute(stmt, r) \
+{ \
+if (r) \
+ mysterror(stmt, NULL); \
+DIE_UNLESS(r == 0);\
+}
+
+#define TRUE 1
+#define FALSE 0
+
+
+class dbutil
+{
+public:
+
+ dbutil(const char * databaseName);
+ ~dbutil();
+
+ void DatabaseLogin(const char * system,
+ const char * usr,
+ const char * password,
+ unsigned int portIn,
+ const char * sockIn,
+ bool transactional);
+ char * GetDbName(){return dbs;};
+ char * GetUser(){return user;};
+ char * GetPassword(){return pass;};
+ char * GetHost(){return host;};
+ char * GetSocket(){return socket;};
+ const char * GetServerType(){return mysql_get_server_info(myDbHandel);};
+ MYSQL* GetDbHandel(){return myDbHandel;};
+ MYSQL_STMT *STDCALL MysqlSimplePrepare(const char *query);
+ int Select_DB();
+ int Do_Query(char * stm);
+ const char * GetError();
+ int GetErrorNumber();
+ unsigned long SelectCountTable(const char * table);
+
+private:
+
+ //Connect variables
+ char * databaseName; //hold results file name
+ char host[256]; // Computer to connect to
+ char user[256]; // MySQL User
+ char pass[256]; // MySQL User Password
+ char dbs[256]; // Database to use (TPCB)
+ unsigned int port; // MySQL Server port
+ char socket[256]; // MySQL Server Unix Socket
+ MYSQL *myDbHandel;
+
+ void DatabaseLogout();
+
+ void SetDbName(const char * name){strcpy((char *)dbs, name);};
+ void SetUser(const char * userName){strcpy((char *)user, userName);};
+ void SetPassword(const char * password){strcpy((char *)pass,password);};
+ void SetHost(const char * system){strcpy((char*)host, system);};
+ void SetPort(unsigned int portIn){port=portIn;};
+ void SetSocket(const char * sockIn){strcpy((char *)socket, sockIn);};
+ void PrintError(const char *msg);
+ void PrintStError(MYSQL_STMT *stmt, const char *msg);
+ void Die(const char *file, int line, const char *expr); // stop program
+
+};
+#endif
+
diff -Nrup a/storage/ndb/test/src/Makefile.am b/storage/ndb/test/src/Makefile.am
--- a/storage/ndb/test/src/Makefile.am 2007-09-11 16:55:35 +02:00
+++ b/storage/ndb/test/src/Makefile.am 2007-10-31 22:36:40 +01:00
@@ -24,7 +24,7 @@ libNDBT_a_SOURCES = \
NdbRestarter.cpp NdbRestarts.cpp NDBT_Output.cpp \
NdbBackup.cpp NdbConfig.cpp NdbGrep.cpp NDBT_Table.cpp \
NdbSchemaCon.cpp NdbSchemaOp.cpp getarg.c \
- CpcClient.cpp NdbMixRestarter.cpp NDBT_Thread.cpp
+ CpcClient.cpp NdbMixRestarter.cpp NDBT_Thread.cpp dbutil.cpp
INCLUDES_LOC = -I$(top_srcdir)/storage/ndb/src/common/mgmcommon -I$(top_srcdir)/storage/ndb/include/mgmcommon -I$(top_srcdir)/storage/ndb/include/kernel -I$(top_srcdir)/storage/ndb/src/mgmapi
diff -Nrup a/storage/ndb/test/src/dbutil.cpp b/storage/ndb/test/src/dbutil.cpp
--- /dev/null Wed Dec 31 16:00:00 196900
+++ b/storage/ndb/test/src/dbutil.cpp 2007-10-31 22:36:05 +01:00
@@ -0,0 +1,176 @@
+// dbutil.cpp: implementation of the database utilities class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "dbutil.hpp"
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+dbutil::dbutil(const char * dbname)
+{
+ memset(host,' ',sizeof(host));
+ memset(user,' ',sizeof(pass));
+ memset(dbs,' ',sizeof(dbs));
+ port = 0;
+ memset(socket,' ',sizeof(socket));
+ this->SetDbName(dbname);
+}
+
+dbutil::~dbutil()
+{
+ this->DatabaseLogout();
+}
+
+//////////////////////////////////////////////////////////////////////
+// Database Login
+//////////////////////////////////////////////////////////////////////
+void dbutil::DatabaseLogin(const char* system,
+ const char* usr,
+ const char* password,
+ unsigned int portIn,
+ const char* sockIn,
+ bool transactional
+ ){
+ if (!(myDbHandel = mysql_init(NULL))){
+ myerror("mysql_init() failed");
+ exit(1);
+ }
+ this->SetUser(usr);
+ this->SetHost(system);
+ this->SetPassword(password);
+ this->SetPort(portIn);
+ this->SetSocket(sockIn);
+
+ if (!(mysql_real_connect(myDbHandel, host, user, pass, "test", port, socket, 0))){
+ myerror("connection failed");
+ mysql_close(myDbHandel);
+ fprintf(stdout, "\n Check the connection options using --help or -?\n");
+ exit(1);
+ }
+
+ myDbHandel->reconnect= 1;
+
+ /* set AUTOCOMMIT */
+ if(!transactional){
+ mysql_autocommit(myDbHandel, TRUE);
+ }
+ else{
+ mysql_autocommit(myDbHandel, FALSE);
+ }
+
+ fprintf(stdout, "\n\tConnected to MySQL server version: %s (%lu)\n\n",
+ mysql_get_server_info(myDbHandel),
+ (unsigned long) mysql_get_server_version(myDbHandel));
+}
+
+//////////////////////////////////////////////////////////////////////
+// Database Logout
+//////////////////////////////////////////////////////////////////////
+void dbutil::DatabaseLogout(){
+ if (myDbHandel){
+ fprintf(stdout, "\n\tClosing the MySQL database connection ...\n\n");
+ mysql_close(myDbHandel);
+ }
+}
+
+//////////////////////////////////////////////////////////////////////
+// Prepare MySQL Statements Cont
+//////////////////////////////////////////////////////////////////////
+MYSQL_STMT *STDCALL dbutil::MysqlSimplePrepare(const char *query){
+#ifdef DEBUG
+printf("Inside dbutil::MysqlSimplePrepare\n");
+#endif
+int result = 0;
+ MYSQL_STMT *my_stmt= mysql_stmt_init(this->GetDbHandel());
+ if (my_stmt && (result = mysql_stmt_prepare(my_stmt, query, strlen(query)))){
+ printf("res = %s\n",mysql_stmt_error(my_stmt));
+ mysql_stmt_close(my_stmt);
+ return 0;
+ }
+ return my_stmt;
+}
+//////////////////////////////////////////////////////////////////////
+// Error Printing
+//////////////////////////////////////////////////////////////////////
+void dbutil::PrintError(const char *msg){
+ if (this->GetDbHandel()
+ && mysql_errno(this->GetDbHandel())){
+ if (this->GetDbHandel()->server_version){
+ fprintf(stdout, "\n [MySQL-%s]",
+ this->GetDbHandel()->server_version);
+ }
+ else
+ fprintf(stdout, "\n [MySQL]");
+ fprintf(stdout, "[%d] %s\n",
+ mysql_errno(this->GetDbHandel()),
+ mysql_error(this->GetDbHandel()));
+ }
+ else if (msg)
+ fprintf(stderr, " [MySQL] %s\n", msg);
+}
+
+void dbutil::PrintStError(MYSQL_STMT *stmt, const char *msg)
+{
+ if (stmt && mysql_stmt_errno(stmt))
+ {
+ if (this->GetDbHandel()
+ && this->GetDbHandel()->server_version)
+ fprintf(stdout, "\n [MySQL-%s]",
+ this->GetDbHandel()->server_version);
+ else
+ fprintf(stdout, "\n [MySQL]");
+
+ fprintf(stdout, "[%d] %s\n", mysql_stmt_errno(stmt),
+ mysql_stmt_error(stmt));
+ }
+ else if (msg)
+ fprintf(stderr, " [MySQL] %s\n", msg);
+}
+/////////////////////////////////////////////////////
+int dbutil::Select_DB()
+{
+ return mysql_select_db(this->GetDbHandel(),
+ this->GetDbName());
+}
+////////////////////////////////////////////////////
+int dbutil::Do_Query(char * stm)
+{
+ return mysql_query(this->GetDbHandel(), stm);
+}
+////////////////////////////////////////////////////
+const char * dbutil::GetError()
+{
+ return mysql_error(this->GetDbHandel());
+}
+////////////////////////////////////////////////////
+int dbutil::GetErrorNumber()
+{
+ return mysql_errno(this->GetDbHandel());
+}
+////////////////////////////////////////////////////
+unsigned long dbutil::SelectCountTable(const char * table)
+{
+ unsigned long count = 0;
+ MYSQL_RES *result;
+ char query[1024];
+ MYSQL_ROW row;
+
+ sprintf(query,"select count(*) from `%s`", table);
+ if (mysql_query(this->GetDbHandel(),query) || !(result=mysql_store_result(this->GetDbHandel())))
+ {
+ printf("error\n");
+ return 1;
+ }
+ row= mysql_fetch_row(result);
+ count= (ulong) strtoull(row[0], (char**) 0, 10);
+ mysql_free_result(result);
+
+ return count;
+}
+void dbutil::Die(const char *file, int line, const char *expr){
+ fprintf(stderr, "%s:%d: check failed: '%s'\n", file, line, expr);
+ abort();
+}
+
+
| Thread |
|---|
| • bk commit into 5.1 tree (jmiller:1.2569) | jmiller | 31 Oct |