List:Commits« Previous MessageNext Message »
From:msvensson Date:March 3 2008 3:10pm
Subject:bk commit into 5.1 tree (msvensson:1.2531)
View as plain text  
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)msvensson3 Mar