mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 19:37:16 +02:00
Merge whalegate.ndb.mysql.com:/home/tomas/cge-5.1
into whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb-merge
This commit is contained in:
commit
a9d61e097c
3 changed files with 274 additions and 1 deletions
97
storage/ndb/test/include/dbutil.hpp
Executable file
97
storage/ndb/test/include/dbutil.hpp
Executable file
|
|
@ -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
|
||||||
|
|
||||||
|
|
@ -24,7 +24,7 @@ libNDBT_a_SOURCES = \
|
||||||
NdbRestarter.cpp NdbRestarts.cpp NDBT_Output.cpp \
|
NdbRestarter.cpp NdbRestarts.cpp NDBT_Output.cpp \
|
||||||
NdbBackup.cpp NdbConfig.cpp NdbGrep.cpp NDBT_Table.cpp \
|
NdbBackup.cpp NdbConfig.cpp NdbGrep.cpp NDBT_Table.cpp \
|
||||||
NdbSchemaCon.cpp NdbSchemaOp.cpp getarg.c \
|
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
|
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
|
||||||
|
|
||||||
|
|
|
||||||
176
storage/ndb/test/src/dbutil.cpp
Executable file
176
storage/ndb/test/src/dbutil.cpp
Executable file
|
|
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue