Commit ca30aaaa authored by joreland@mysql.com's avatar joreland@mysql.com

fixes for solaris build issues with ndb

(the previous commit was in "non" fresh clone :-()
parent edb9af25
...@@ -34,6 +34,9 @@ ...@@ -34,6 +34,9 @@
#include <Dbtux.hpp> #include <Dbtux.hpp>
#include <NdbEnv.h> #include <NdbEnv.h>
#ifndef VM_TRACE
#define NEW_BLOCK(B) new B
#else
enum SIMBLOCKLIST_DUMMY { A_VALUE = 0 }; enum SIMBLOCKLIST_DUMMY { A_VALUE = 0 };
static static
...@@ -60,13 +63,13 @@ void * operator new (size_t sz, SIMBLOCKLIST_DUMMY dummy){ ...@@ -60,13 +63,13 @@ void * operator new (size_t sz, SIMBLOCKLIST_DUMMY dummy){
return tmp; return tmp;
} }
#define NEW_BLOCK(B) new(A_VALUE) B
#endif
void void
SimBlockList::load(const Configuration & conf){ SimBlockList::load(const Configuration & conf){
noOfBlocks = 16; noOfBlocks = 16;
theList = new SimulatedBlock * [noOfBlocks]; theList = new SimulatedBlock * [noOfBlocks];
for(int i = 0; i<noOfBlocks; i++)
theList[i] = 0;
Dbdict* dbdict = 0; Dbdict* dbdict = 0;
Dbdih* dbdih = 0; Dbdih* dbdih = 0;
...@@ -75,28 +78,28 @@ SimBlockList::load(const Configuration & conf){ ...@@ -75,28 +78,28 @@ SimBlockList::load(const Configuration & conf){
Uint32 dl; Uint32 dl;
const ndb_mgm_configuration_iterator * p = conf.getOwnConfigIterator(); const ndb_mgm_configuration_iterator * p = conf.getOwnConfigIterator();
if(p && !ndb_mgm_get_int_parameter(p, CFG_DB_DISCLESS, &dl) && dl){ if(p && !ndb_mgm_get_int_parameter(p, CFG_DB_DISCLESS, &dl) && dl){
fs = new (A_VALUE) VoidFs(conf); fs = NEW_BLOCK(VoidFs)(conf);
} else { } else {
fs = new (A_VALUE) Ndbfs(conf); fs = NEW_BLOCK(Ndbfs)(conf);
} }
} }
theList[0] = new (A_VALUE) Dbacc(conf); theList[0] = NEW_BLOCK(Dbacc)(conf);
theList[1] = new (A_VALUE) Cmvmi(conf); theList[1] = NEW_BLOCK(Cmvmi)(conf);
theList[2] = fs; theList[2] = fs;
theList[3] = dbdict = new (A_VALUE) Dbdict(conf); theList[3] = dbdict = NEW_BLOCK(Dbdict)(conf);
theList[4] = dbdih = new (A_VALUE) Dbdih(conf); theList[4] = dbdih = NEW_BLOCK(Dbdih)(conf);
theList[5] = new (A_VALUE) Dblqh(conf); theList[5] = NEW_BLOCK(Dblqh)(conf);
theList[6] = new (A_VALUE) Dbtc(conf); theList[6] = NEW_BLOCK(Dbtc)(conf);
theList[7] = new (A_VALUE) Dbtup(conf); theList[7] = NEW_BLOCK(Dbtup)(conf);
theList[8] = new (A_VALUE) Ndbcntr(conf); theList[8] = NEW_BLOCK(Ndbcntr)(conf);
theList[9] = new (A_VALUE) Qmgr(conf); theList[9] = NEW_BLOCK(Qmgr)(conf);
theList[10] = new (A_VALUE) Trix(conf); theList[10] = NEW_BLOCK(Trix)(conf);
theList[11] = new (A_VALUE) Backup(conf); theList[11] = NEW_BLOCK(Backup)(conf);
theList[12] = new (A_VALUE) DbUtil(conf); theList[12] = NEW_BLOCK(DbUtil)(conf);
theList[13] = new (A_VALUE) Suma(conf); theList[13] = NEW_BLOCK(Suma)(conf);
theList[14] = new (A_VALUE) Grep(conf); theList[14] = NEW_BLOCK(Grep)(conf);
theList[15] = new (A_VALUE) Dbtux(conf); theList[15] = NEW_BLOCK(Dbtux)(conf);
// Metadata common part shared by block instances // Metadata common part shared by block instances
ptrMetaDataCommon = new MetaData::Common(*dbdict, *dbdih); ptrMetaDataCommon = new MetaData::Common(*dbdict, *dbdih);
......
...@@ -38,10 +38,6 @@ Name: Ndb.cpp ...@@ -38,10 +38,6 @@ Name: Ndb.cpp
#include <NdbEnv.h> #include <NdbEnv.h>
#include <BaseString.hpp> #include <BaseString.hpp>
#ifndef MIN
#define MIN(a,b) ((a) < (b) ? (a) : (b))
#endif
/**************************************************************************** /****************************************************************************
void connect(); void connect();
...@@ -1028,18 +1024,14 @@ const char * Ndb::getCatalogName() const ...@@ -1028,18 +1024,14 @@ const char * Ndb::getCatalogName() const
void Ndb::setCatalogName(const char * a_catalog_name) void Ndb::setCatalogName(const char * a_catalog_name)
{ {
if (a_catalog_name) { if (a_catalog_name) {
strncpy(theDataBase, a_catalog_name, NDB_MAX_DATABASE_NAME_SIZE); snprintf(theDataBase, sizeof(theDataBase), "%s",
// Prepare prefix for faster operations a_catalog_name ? a_catalog_name : "");
uint db_len = MIN(strlen(theDataBase), NDB_MAX_DATABASE_NAME_SIZE - 1);
uint schema_len = int len = snprintf(prefixName, sizeof(prefixName), "%s%c%s%c",
MIN(strlen(theDataBaseSchema), NDB_MAX_SCHEMA_NAME_SIZE - 1); theDataBase, table_name_separator,
strncpy(prefixName, theDataBase, NDB_MAX_DATABASE_NAME_SIZE - 1); theDataBaseSchema, table_name_separator);
prefixName[db_len] = table_name_separator; prefixEnd = prefixName + (len < sizeof(prefixName) ? len :
strncpy(prefixName+db_len+1, theDataBaseSchema, sizeof(prefixName) - 1);
NDB_MAX_SCHEMA_NAME_SIZE - 1);
prefixName[db_len+schema_len+1] = table_name_separator;
prefixName[db_len+schema_len+2] = '\0';
prefixEnd = prefixName + db_len+schema_len + 2;
} }
} }
...@@ -1051,18 +1043,14 @@ const char * Ndb::getSchemaName() const ...@@ -1051,18 +1043,14 @@ const char * Ndb::getSchemaName() const
void Ndb::setSchemaName(const char * a_schema_name) void Ndb::setSchemaName(const char * a_schema_name)
{ {
if (a_schema_name) { if (a_schema_name) {
strncpy(theDataBaseSchema, a_schema_name, NDB_MAX_SCHEMA_NAME_SIZE); snprintf(theDataBaseSchema, sizeof(theDataBase), "%s",
// Prepare prefix for faster operations a_schema_name ? a_schema_name : "");
uint db_len = MIN(strlen(theDataBase), NDB_MAX_DATABASE_NAME_SIZE - 1);
uint schema_len = int len = snprintf(prefixName, sizeof(prefixName), "%s%c%s%c",
MIN(strlen(theDataBaseSchema), NDB_MAX_SCHEMA_NAME_SIZE - 1); theDataBase, table_name_separator,
strncpy(prefixName, theDataBase, NDB_MAX_DATABASE_NAME_SIZE - 1); theDataBaseSchema, table_name_separator);
prefixName[db_len] = table_name_separator; prefixEnd = prefixName + (len < sizeof(prefixName) ? len :
strncpy(prefixName+db_len+1, theDataBaseSchema, sizeof(prefixName) - 1);
NDB_MAX_SCHEMA_NAME_SIZE - 1);
prefixName[db_len+schema_len+1] = table_name_separator;
prefixName[db_len+schema_len+2] = '\0';
prefixEnd = prefixName + db_len+schema_len + 2;
} }
} }
......
...@@ -56,7 +56,7 @@ Ndb(const char* aDataBase); ...@@ -56,7 +56,7 @@ Ndb(const char* aDataBase);
Parameters: aDataBase : Name of the database. Parameters: aDataBase : Name of the database.
Remark: Connect to the database. Remark: Connect to the database.
***************************************************************************/ ***************************************************************************/
Ndb::Ndb( const char* aDataBase , const char* aDataBaseSchema) : Ndb::Ndb( const char* aDataBase , const char* aSchema) :
theNdbObjectIdMap(0), theNdbObjectIdMap(0),
thePreparedTransactionsArray(NULL), thePreparedTransactionsArray(NULL),
theSentTransactionsArray(NULL), theSentTransactionsArray(NULL),
...@@ -121,22 +121,16 @@ Ndb::Ndb( const char* aDataBase , const char* aDataBaseSchema) : ...@@ -121,22 +121,16 @@ Ndb::Ndb( const char* aDataBase , const char* aDataBaseSchema) :
theLastTupleId[i] = 0; theLastTupleId[i] = 0;
}//for }//for
if (aDataBase) snprintf(theDataBase, sizeof(theDataBase), "%s",
strncpy(theDataBase, aDataBase, NDB_MAX_DATABASE_NAME_SIZE); aDataBase ? aDataBase : "");
else snprintf(theDataBaseSchema, sizeof(theDataBaseSchema), "%s",
memset(theDataBase, 0, sizeof(theDataBase)); aSchema ? aSchema : "");
strncpy(theDataBaseSchema, aDataBaseSchema, NDB_MAX_SCHEMA_NAME_SIZE);
// Prepare prefix for faster operations int len = snprintf(prefixName, sizeof(prefixName), "%s%c%s%c",
uint db_len = MIN(strlen(theDataBase), NDB_MAX_DATABASE_NAME_SIZE - 1); theDataBase, table_name_separator,
uint schema_len = theDataBaseSchema, table_name_separator);
MIN(strlen(theDataBaseSchema), NDB_MAX_SCHEMA_NAME_SIZE - 1); prefixEnd = prefixName + (len < sizeof(prefixName) ? len :
strncpy(prefixName, theDataBase, NDB_MAX_DATABASE_NAME_SIZE - 1); sizeof(prefixName) - 1);
prefixName[db_len] = table_name_separator;
strncpy(prefixName+db_len+1, theDataBaseSchema,
NDB_MAX_SCHEMA_NAME_SIZE - 1);
prefixName[db_len+schema_len+1] = table_name_separator;
prefixName[db_len+schema_len+2] = '\0';
prefixEnd = prefixName + db_len+schema_len + 2;
NdbMutex_Lock(&createNdbMutex); NdbMutex_Lock(&createNdbMutex);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment