Below is the list of changes that have just been committed into a local
5.1 repository of msvensson. When msvensson 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, 2008-03-03 16:10:42+01:00, msvensson@stripped +6 -0
NdbRepStress + DbUtil
storage/ndb/test/include/AtrtClient.hpp@stripped, 2008-03-03 16:10:39+01:00, msvensson@stripped +1 -3
No need to specify what user and pass to use for AtrtClient
storage/ndb/test/include/DbUtil.hpp@stripped, 2008-03-03 16:10:39+01:00, msvensson@stripped +2 -8
Remove DBU_FAILED and DBU_OK completely
Remove possiblitiy to specify user and pass in constructor
storage/ndb/test/ndbapi/acrt/NdbRepStress.cpp@stripped, 2008-03-03 16:10:39+01:00, msvensson@stripped +10 -11
Update for new consttuctor in DbUtil
storage/ndb/test/ndbapi/testNDBT.cpp@stripped, 2008-03-03 16:10:39+01:00, msvensson@stripped +17 -5
Add test for bigint datatype
storage/ndb/test/src/AtrtClient.cpp@stripped, 2008-03-03 16:10:39+01:00, msvensson@stripped +2 -4
Don't take user and pass in constructor
storage/ndb/test/src/DbUtil.cpp@stripped, 2008-03-03 16:10:39+01:00, msvensson@stripped +58 -37
Add BIGINT support
Fix constructor
Remove DBO_OK and DBU_FAILED completely
Override clear to also call reset of iterator
diff -Nrup a/storage/ndb/test/include/AtrtClient.hpp b/storage/ndb/test/include/AtrtClient.hpp
--- a/storage/ndb/test/include/AtrtClient.hpp 2008-01-18 22:55:00 +01:00
+++ b/storage/ndb/test/include/AtrtClient.hpp 2008-03-03 16:10:39 +01:00
@@ -26,9 +26,7 @@ public:
ATCT_RESET_PROC= 2
};
- AtrtClient(const char* _user= "root",
- const char* _password= "",
- const char* _suffix= ".1.atrt");
+ AtrtClient(const char* _suffix= ".1.atrt");
AtrtClient(MYSQL*);
~AtrtClient();
diff -Nrup a/storage/ndb/test/include/DbUtil.hpp b/storage/ndb/test/include/DbUtil.hpp
--- a/storage/ndb/test/include/DbUtil.hpp 2008-02-27 17:09:46 +01:00
+++ b/storage/ndb/test/include/DbUtil.hpp 2008-03-03 16:10:39 +01:00
@@ -85,17 +85,12 @@ private:
};
-#define DBU_FAILED 1
-#define DBU_OK 0
-
class DbUtil
{
public:
DbUtil(MYSQL* mysql);
DbUtil(const char* dbname = "mysql",
- const char* user = "root",
- const char* pass = "",
const char* suffix = NULL);
~DbUtil();
@@ -109,9 +104,8 @@ public:
bool waitConnected(int timeout);
- /* Deprecated, see connect() */
- void databaseLogin(const char * system,
- const char * usr,
+ bool databaseLogin(const char * host,
+ const char * user,
const char * password,
unsigned int portIn,
const char * sockIn,
diff -Nrup a/storage/ndb/test/ndbapi/acrt/NdbRepStress.cpp b/storage/ndb/test/ndbapi/acrt/NdbRepStress.cpp
--- a/storage/ndb/test/ndbapi/acrt/NdbRepStress.cpp 2008-02-27 17:10:28 +01:00
+++ b/storage/ndb/test/ndbapi/acrt/NdbRepStress.cpp 2008-03-03 16:10:39 +01:00
@@ -66,7 +66,7 @@ syncSlaveWithMaster()
int loopCnt = 0;
//Create a DbUtil object for the master
- DbUtil master("mysql","");
+ DbUtil master("mysql");
//Login to Master
if (!master.connect())
@@ -91,7 +91,7 @@ syncSlaveWithMaster()
*/
//Create a dbutil object for the slave
- DbUtil slave("mysql", "root", "", ".1.slave");
+ DbUtil slave("mysql", ".1.slave");
//Login to slave
if (!slave.connect())
@@ -107,7 +107,6 @@ syncSlaveWithMaster()
g_err << "Select epoch SQL on slave failed" << endl;
return false;
}
- g_err << "Magnus was here" << endl;
result.print();
if (result.numRows() > 0)
slaveEpoch = result.columnAsLong("epoch");
@@ -154,7 +153,7 @@ verifySlaveLoad(BaseString &table)
}
//Now that slave is sync we can verify load
- DbUtil master(db.c_str()," ");
+ DbUtil master(db.c_str());
//Login to Master
if (!master.connect())
@@ -170,7 +169,7 @@ verifySlaveLoad(BaseString &table)
}
//Create a DB Object for slave
- DbUtil slave(db.c_str(), "root", "", ".1.slave");
+ DbUtil slave(db.c_str(), ".1.slave");
//Login to slave
if (!slave.connect())
@@ -201,7 +200,7 @@ createTEST_DB(NDBT_Context* ctx, NDBT_St
cdb.assign("TEST_DB");
//Create a dbutil object
- DbUtil master("mysql","");
+ DbUtil master("mysql");
if (!master.connect())
{
@@ -221,7 +220,7 @@ int
dropTEST_DB(NDBT_Context* ctx, NDBT_Step* step)
{
//Create an SQL Object
- DbUtil master("mysql","");
+ DbUtil master("mysql");
//Login to Master
if (!master.connect())
@@ -255,8 +254,8 @@ verifySlave(BaseString& sqlStm, BaseStri
float slaveSum;
//Create SQL Objects
- DbUtil master(db.c_str(),"");
- DbUtil slave(db.c_str(), "root", "", ".1.slave");
+ DbUtil master(db.c_str());
+ DbUtil slave(db.c_str(), ".1.slave");
if(!syncSlaveWithMaster())
{
@@ -320,7 +319,7 @@ createTable_rep1(NDBT_Context* ctx, NDBT
}
//Create an SQL Object
- DbUtil master(db.c_str(),"");
+ DbUtil master(db.c_str());
//Login to Master
if (!master.connect())
@@ -405,7 +404,7 @@ stressSQL_rep1(NDBT_Context* ctx, NDBT_S
{
BaseString sqlStm;
- DbUtil master("TEST_DB","");
+ DbUtil master("TEST_DB");
int loops = ctx->getNumLoops();
uint record = 0;
diff -Nrup a/storage/ndb/test/ndbapi/testNDBT.cpp b/storage/ndb/test/ndbapi/testNDBT.cpp
--- a/storage/ndb/test/ndbapi/testNDBT.cpp 2008-01-18 22:55:00 +01:00
+++ b/storage/ndb/test/ndbapi/testNDBT.cpp 2008-03-03 16:10:39 +01:00
@@ -47,7 +47,7 @@ int runTestAtrtClient(NDBT_Context* ctx,
int runTestDbUtil(NDBT_Context* ctx, NDBT_Step* step){
- DbUtil sql;
+ DbUtil sql("test");
{
// Select all rows from mysql.user
@@ -100,10 +100,16 @@ int runTestDbUtil(NDBT_Context* ctx, NDB
}
{
- if (!sql.doQuery("CREATE TABLE sql_client_test (a int, b varchar(255))"))
+ if (!sql.doQuery("DROP TABLE IF EXISTS sql_client_test"))
return NDBT_FAILED;
- if (!sql.doQuery("INSERT INTO sql_client_test VALUES(1, 'hello'), (2, 'bye')"))
+ if (!sql.doQuery("CREATE TABLE sql_client_test"
+ "(a int, b varchar(255), c bigint)"))
+ return NDBT_FAILED;
+
+ if (!sql.doQuery("INSERT INTO sql_client_test VALUES"
+ "(1, 'hello', 456456456789),"
+ "(2, 'bye', 9000000000)"))
return NDBT_FAILED;
// Select all rows from sql_client_test
@@ -126,8 +132,9 @@ int runTestDbUtil(NDBT_Context* ctx, NDB
result.reset();
while(result.next())
{
- ndbout << "a: " << result.columnAsInt("a") << endl;
- ndbout << "b: " << result.column("b") << endl;
+ ndbout << "a: " << result.columnAsInt("a") << endl
+ << "b: " << result.column("b") << endl
+ << "c: " << result.columnAsLong("c") << endl;
if (result.columnAsInt("a") != 2){
ndbout << "hepp1" << endl;
return NDBT_FAILED;
@@ -135,6 +142,11 @@ int runTestDbUtil(NDBT_Context* ctx, NDB
if (strcmp(result.column("b"), "bye")){
ndbout << "hepp2" << endl;
+ return NDBT_FAILED;
+ }
+
+ if (result.columnAsLong("c") != 9000000000ULL){
+ ndbout << "hepp3" << endl;
return NDBT_FAILED;
}
diff -Nrup a/storage/ndb/test/src/AtrtClient.cpp b/storage/ndb/test/src/AtrtClient.cpp
--- a/storage/ndb/test/src/AtrtClient.cpp 2008-01-18 22:55:00 +01:00
+++ b/storage/ndb/test/src/AtrtClient.cpp 2008-03-03 16:10:39 +01:00
@@ -17,10 +17,8 @@
#include <NDBT_Output.hpp>
#include <NdbSleep.h>
-AtrtClient::AtrtClient(const char* _user,
- const char* _password,
- const char* _group_suffix)
- : DbUtil(_user, _password, _group_suffix)
+AtrtClient::AtrtClient(const char* _group_suffix)
+ : DbUtil("atrt", _group_suffix)
{
}
diff -Nrup a/storage/ndb/test/src/DbUtil.cpp b/storage/ndb/test/src/DbUtil.cpp
--- a/storage/ndb/test/src/DbUtil.cpp 2008-02-27 17:09:57 +01:00
+++ b/storage/ndb/test/src/DbUtil.cpp 2008-03-03 16:10:39 +01:00
@@ -22,10 +22,10 @@
/* Constructors */
DbUtil::DbUtil(const char* _dbname,
- const char* _user,
- const char* _password,
const char* _suffix):
m_connected(false),
+ m_user("root"),
+ m_pass(""),
m_dbname(_dbname),
m_mysql(NULL),
m_free_mysql(true)
@@ -45,9 +45,6 @@ DbUtil::DbUtil(const char* _dbname,
ndbout << "default_file: " << m_default_file.c_str() << endl;
ndbout << "default_group: " << m_default_group.c_str() << endl;
-
- m_user.assign(_user);
- m_pass.assign(_password);
}
@@ -67,7 +64,7 @@ DbUtil::isConnected(){
assert(m_mysql);
return true;
}
- return connect() == 0;
+ return connect();
}
@@ -103,7 +100,7 @@ DbUtil::~DbUtil()
/* Database Login */
-void
+bool
DbUtil::databaseLogin(const char* system, const char* usr,
const char* password, unsigned int portIn,
const char* sockIn, bool transactional)
@@ -111,25 +108,26 @@ DbUtil::databaseLogin(const char* system
if (!(m_mysql = mysql_init(NULL)))
{
myerror("DB Login-> mysql_init() failed");
- exit(DBU_FAILED);
+ return false;
}
setUser(usr);
setHost(system);
setPassword(password);
setPort(portIn);
setSocket(sockIn);
+ m_dbname.assign("test");
if (!(mysql_real_connect(m_mysql,
m_host.c_str(),
m_user.c_str(),
m_pass.c_str(),
- "test",
+ m_dbname.c_str(),
m_port,
m_socket.c_str(), 0)))
{
myerror("connection failed");
- mysql_close(m_mysql);
- exit(DBU_FAILED);
+ disconnect();
+ return false;
}
m_mysql->reconnect = TRUE;
@@ -146,6 +144,8 @@ DbUtil::databaseLogin(const char* system
(unsigned long) mysql_get_server_version(m_mysql));
#endif
selectDb();
+ m_connected= true;
+ return true;
}
/* Database Connect */
@@ -164,23 +164,27 @@ DbUtil::connect()
mysql_options(m_mysql, MYSQL_READ_DEFAULT_GROUP, m_default_group.c_str()))
{
myerror("DB Connect -> mysql_options failed");
+ disconnect();
return false;
}
/*
Connect, read settings from my.cnf
NOTE! user and password can be stored there as well
- */
-
- if (mysql_real_connect(m_mysql, NULL, "root","", m_dbname.c_str(),
+ */
+ if (mysql_real_connect(m_mysql, NULL,
+ m_user.c_str(),
+ m_pass.c_str(),
+ m_dbname.c_str(),
0, NULL, 0) == NULL)
{
myerror("connection failed");
- mysql_close(m_mysql);
+ disconnect();
return false;
}
selectDb();
- m_connected = true;
+ m_connected= true;
+ assert(m_mysql);
return true;
}
@@ -206,13 +210,11 @@ DbUtil::mysqlSimplePrepare(const char *q
#ifdef DEBUG
printf("Inside DbUtil::mysqlSimplePrepare\n");
#endif
- int m_res = DBU_OK;
-
MYSQL_STMT *my_stmt= mysql_stmt_init(this->getMysql());
- if (my_stmt && (m_res = mysql_stmt_prepare(my_stmt, query, strlen(query)))){
+ if (my_stmt && mysql_stmt_prepare(my_stmt, query, strlen(query))){
this->printStError(my_stmt,"Prepare Statement Failed");
mysql_stmt_close(my_stmt);
- exit(DBU_FAILED);
+ return NULL;
}
return my_stmt;
}
@@ -336,10 +338,10 @@ DbUtil::runQuery(const char* sql,
const Properties& args,
SqlResultSet& rows){
- //rows.clear();
- //magnus getting a compile error with the above
+ rows.clear();
if (!isConnected())
return false;
+ assert(m_mysql);
g_debug << "runQuery: " << endl
<< " sql: '" << sql << "'" << endl;
@@ -428,18 +430,25 @@ DbUtil::runQuery(const char* sql,
for (uint i= 0; i < num_fields; i++)
{
+ unsigned long buf_len= sizeof(int);
+
switch(fields[i].type){
- case MYSQL_TYPE_LONG:
- uint max_length= fields[i].max_length + 1;
- bind_result[i].buffer_type= MYSQL_TYPE_STRING;
- bind_result[i].buffer= malloc(max_length);
- bind_result[i].buffer_length= max_length;
- break;
+ case MYSQL_TYPE_STRING:
+ case MYSQL_TYPE_VARCHAR:
+ case MYSQL_TYPE_VAR_STRING:
+ buf_len= fields[i].max_length + 1;
+ break;
+ case MYSQL_TYPE_LONGLONG:
+ buf_len= sizeof(long long);
+ break;
default:
- bind_result[i].buffer_type= fields[i].type;
- bind_result[i].buffer= malloc(sizeof(int));
break;
}
+
+ bind_result[i].buffer_type= fields[i].type;
+ bind_result[i].buffer= malloc(buf_len);
+ bind_result[i].buffer_length= buf_len;
+
}
if (mysql_stmt_bind_result(stmt, bind_result)){
@@ -453,14 +462,19 @@ DbUtil::runQuery(const char* sql,
Properties curr(true);
for (uint i= 0; i < num_fields; i++){
switch(fields[i].type){
- case MYSQL_TYPE_STRING:
- curr.put(fields[i].name, (char*)bind_result[i].buffer);
- break;
- case MYSQL_TYPE_LONGLONG:
- curr.put(fields[i].name, *(unsigned long long*)bind_result[i].buffer);
+ case MYSQL_TYPE_STRING:
+ case MYSQL_TYPE_VARCHAR:
+ case MYSQL_TYPE_VAR_STRING:
+ curr.put(fields[i].name, (char*)bind_result[i].buffer);
break;
- default:
- curr.put(fields[i].name, *(int*)bind_result[i].buffer);
+
+ case MYSQL_TYPE_LONGLONG:
+ curr.put64(fields[i].name,
+ *(unsigned long long*)bind_result[i].buffer);
+ break;
+
+ default:
+ curr.put(fields[i].name, *(int*)bind_result[i].buffer);
break;
}
}
@@ -586,6 +600,13 @@ void SqlResultSet::remove(){
BaseString row_name;
row_name.assfmt("row_%d", m_curr_row_num);
Properties::remove(row_name.c_str());
+}
+
+
+// Clear all rows and reset iterator
+void SqlResultSet::clear(){
+ reset();
+ Properties::clear();
}
| Thread |
|---|
| • bk commit into 5.1 tree (msvensson:1.2531) | msvensson | 3 Mar |