Loading storage/ndb/test/include/dbutil.hpp 0 → 100755 +97 −0 Original line number Diff line number Diff line // 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 storage/ndb/test/src/Makefile.am +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading storage/ndb/test/src/dbutil.cpp 0 → 100755 +176 −0 Original line number Diff line number Diff line // 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(); } Loading
storage/ndb/test/include/dbutil.hpp 0 → 100755 +97 −0 Original line number Diff line number Diff line // 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
storage/ndb/test/src/Makefile.am +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
storage/ndb/test/src/dbutil.cpp 0 → 100755 +176 −0 Original line number Diff line number Diff line // 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(); }