50 make_pair(item->getItemName().c_str(), *
item));
52 atoi(item->getObjectID().c_str())));
54 item->getItemName().c_str()));
62 (*registeredDatabasesMetadata).assign(index, *item);
71 (*registeredSetsMetadata).assign(index, *item);
79 (*registeredNodesMetadata).assign(index, *item);
87 (*registeredUserDefinedTypesMetadata).assign(index, *item);
96 makeObject<Vector<CatalogSetMetadata>>();
97 for (
int i = 0; i < (*registeredSetsMetadata).size(); i++) {
98 if ((*item).getItemKey() != (*registeredSetsMetadata)[i].getItemKey()) {
102 (*registeredSetsMetadata).clear();
103 (*registeredSetsMetadata) = (*tempContainter);
113 makeObject<Vector<CatalogNodeMetadata>>();
114 for (
int i = 0; i < (*registeredNodesMetadata).size(); i++) {
115 if ((*item).getItemKey() != (*registeredNodesMetadata)[i].getItemKey()) {
119 (*registeredNodesMetadata).clear();
120 (*registeredNodesMetadata) = (*tempContainter);
127 bool PDBCatalog::deleteItemInVector<CatalogDatabaseMetadata>(
130 makeObject<Vector<CatalogDatabaseMetadata>>();
131 for (
int i = 0; i < (*registeredDatabasesMetadata).size(); i++) {
132 if ((*item).getItemKey() !=
133 (*registeredDatabasesMetadata)[i].getItemKey()) {
134 tempContainter->push_back((*registeredDatabasesMetadata)[i]);
137 (*registeredDatabasesMetadata).clear();
138 (*registeredDatabasesMetadata) = (*tempContainter);
139 registeredDatabases.erase((*item).getItemKey().c_str());
148 makeObject<Vector<CatalogUserTypeMetadata>>();
149 for (
int i = 0; i < (*registeredUserDefinedTypesMetadata).size(); i++) {
150 if ((*item).getItemKey() !=
151 (*registeredUserDefinedTypesMetadata)[i].getItemKey()) {
155 (*registeredUserDefinedTypesMetadata).clear();
156 (*registeredUserDefinedTypesMetadata) = (*tempContainter);
162 fprintf(stderr,
"(%d) %s\n", iErrCode, zMsg);
182 if (mkdir(
catalogRootPath.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) ==
185 <<
" was not created, it already exists." << std::endl;
188 <<
" was created/opened." << std::endl;
194 if (mkdir(catalogPath.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) == -1) {
195 PDB_COUT <<
"Catalog folder " << catalogPath
196 <<
" was not created, it already exists." << std::endl;
198 PDB_COUT <<
"Catalog folder " << catalogPath <<
" was created/opened."
204 mkdir(
tempPath.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
210 <<
" for temporary shared libraries was created/opened."
219 makeObject<Vector<CatalogUserTypeMetadata>>();
256 this->
logger->debug(
"Catalog destructor called!!!");
257 int deletedFiles =
remove(
tempPath.c_str());
258 if (deletedFiles == -1) {
272 this->
logger->debug(
"Closing SQLite Handler!!!");
287 string &returnedBytes,
288 string &errorMessage) {
294 fstream file(fullName.c_str(), ios::in | ios::binary);
296 errorMessage =
"The file " + fullName +
" was not found\n";
299 file.seekp(0, fstream::end);
300 streampos numBytes = file.tellp();
301 file.seekp(0, fstream::beg);
303 char *buffer =
new char[numBytes];
304 file.read(buffer, numBytes);
305 returnedBytes = string(buffer, numBytes);
315 SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE |
316 SQLITE_OPEN_URI | SQLITE_OPEN_FULLMUTEX,
317 NULL)) == SQLITE_OK) {
321 sqlite3_exec(
sqliteDBHandler,
"PRAGMA synchronous=OFF", NULL, NULL, NULL);
322 sqlite3_exec(
sqliteDBHandler,
"PRAGMA journal_mode=memory", NULL, NULL,
328 "CREATE TABLE IF NOT EXISTS data_types (itemID TEXT PRIMARY KEY, "
329 "itemInfo BLOB, soBytes BLOB, timeStamp INTEGER);");
331 "CREATE TABLE IF NOT EXISTS metrics (itemID TEXT PRIMARY KEY, "
332 "itemInfo BLOB, soBytes BLOB, timeStamp INTEGER);");
334 "CREATE TABLE IF NOT EXISTS pdb_node (itemID TEXT PRIMARY KEY, "
335 "itemInfo BLOB, timeStamp INTEGER);");
337 "CREATE TABLE IF NOT EXISTS pdb_database (itemID TEXT PRIMARY KEY, "
338 "itemInfo BLOB, timeStamp INTEGER);");
340 "CREATE TABLE IF NOT EXISTS pdb_set (itemID TEXT PRIMARY KEY, "
341 "itemInfo BLOB, timeStamp INTEGER);");
343 "CREATE TABLE IF NOT EXISTS pdb_user (itemID TEXT PRIMARY KEY, "
344 "itemInfo BLOB, timeStamp INTEGER);");
345 catalogSqlQuery(
"CREATE TABLE IF NOT EXISTS pdb_user_permission (itemID "
347 "itemInfo BLOB, timeStamp INTEGER);");
352 PDB_COUT <<
"Catalog database successfully open." << endl;
355 PDB_COUT <<
"Error opening catalog database." << endl;
363 string emptyString(
"");
372 this->
logger->debug(errorMessage);
374 (*catalogContents)[
String(
"nodes")] =
383 this->
logger->debug(errorMessage);
385 (*catalogContents)[
String(
"sets")] =
394 this->
logger->debug(errorMessage);
396 (*catalogContents)[
String(
"dbs")] =
405 (*catalogContents)[
String(
"udfs")] =
410 for (
int i = 0; i < (*registeredDatabasesMetadata).size(); i++) {
423 for (
int i = 0; i < (*registeredSetsMetadata).size(); i++) {
436 for (
int i = 0; i < (*registeredNodesMetadata).size(); i++) {
449 for (
int i = 0; i < (*registeredUserDefinedTypesMetadata).size(); i++) {
465 cout <<
"=========================================" << endl;
466 cout <<
"Metadata Registered in the PDB Catalog " << endl;
467 cout <<
"-----------------------------------------" << endl;
469 string metadataToPrint;
471 cout << metadataToPrint.c_str() << endl;
473 cout <<
"\nAll Metadata retrieved and loaded." << endl;
474 cout <<
"=========================================" << endl;
481 string dateAsString = itemMetadata->getTimeStamp().c_str();
484 makeObject<Vector<CatalogNodeMetadata>>();
486 makeObject<Vector<CatalogSetMetadata>>();
488 makeObject<Vector<CatalogDatabaseMetadata>>();
490 makeObject<Vector<CatalogUserTypeMetadata>>();
496 this->
logger->debug(errorMessage);
501 this->
logger->debug(errorMessage);
506 this->
logger->debug(errorMessage);
509 true, dateAsString, _registeredUserDefinedTypesMetadata, errorMessage,
512 for (
int i = 0; i < (*_registeredUserDefinedTypesMetadata).size(); i++) {
514 <<
"RETRIEVING TYPE "
515 << string((*_registeredUserDefinedTypesMetadata)[i].getItemName())
517 << string((*_registeredUserDefinedTypesMetadata)[i].getObjectID())
521 (*_registeredUserDefinedTypesMetadata)[i].getItemName().c_str(),
522 (*_registeredUserDefinedTypesMetadata)[i]));
529 cout <<
"=========================================" << endl;
530 cout <<
"PDB Metadata Registered in the Catalog " << endl;
532 cout <<
"\nNodes in cluster: " +
533 std::to_string((
int)(*_registeredNodesMetadata).size())
535 cout <<
"----------------------------" << endl;
537 for (
int i = 0; i < (*_registeredNodesMetadata).size(); i++) {
538 cout << (*_registeredNodesMetadata)[i].printShort() << endl;
541 cout <<
"\nDatabases: " +
542 std::to_string((
int)(*_registeredDatabasesMetadata).size())
544 cout <<
"----------------------------" << endl;
546 for (
int i = 0; i < (*_registeredDatabasesMetadata).size(); i++) {
547 cout << (*_registeredDatabasesMetadata)[i].printShort() << endl;
549 cout <<
"\nSets: " + std::to_string((
int)(*_registeredSetsMetadata).size())
551 cout <<
"----------------------------" << endl;
553 for (
int i = 0; i < (*_registeredSetsMetadata).size(); i++) {
554 cout << (*_registeredSetsMetadata)[i].printShort() << endl;
556 cout <<
"\nUser-defined types: " +
557 std::to_string((
int)(*_registeredUserDefinedTypesMetadata).size())
559 cout <<
"----------------------------" << endl;
561 for (
int i = 0; i < (*_registeredUserDefinedTypesMetadata).size(); i++) {
562 cout << (*_registeredUserDefinedTypesMetadata)[i].printShort() << endl;
564 cout <<
"\nAll Metadata properly retrieved and\n"
565 "loaded into memory!"
567 cout <<
"--------------------------------------" << endl;
580 std::string &errMsg) {
582 outputString +=
"\nI. Nodes in Cluster ("
583 + std::to_string((
int)(*registeredNodesMetadata).size())
586 for (
int i = 0; i < (*registeredNodesMetadata).size(); i++) {
587 outputString += (*registeredNodesMetadata)[i].printShort() +
"\n";
594 std::string &errMsg) {
596 outputString +=
"\nII. Databases ("
597 + std::to_string((
int)(*registeredDatabasesMetadata).size())
600 for (
int i = 0; i < (*registeredDatabasesMetadata).size(); i++) {
601 outputString += (*registeredDatabasesMetadata)[i].printShort() +
"\n";
608 std::string &outputString,
609 std::string &errMsg) {
611 outputString +=
"\nSets ("
612 + std::to_string((
int)(*registeredSetsMetadata).size())
615 for (
int i = 0; i < (*registeredSetsMetadata).size(); i++) {
616 outputString += (*registeredSetsMetadata)[i].printShort() +
"\n";
623 std::string &errMsg) {
625 outputString +=
"\nIII. User-defined types ("
626 + std::to_string((
int)(*registeredUserDefinedTypesMetadata).size())
629 for (
int i = 0; i < (*registeredUserDefinedTypesMetadata).size(); i++) {
631 (*registeredUserDefinedTypesMetadata)[i].printShort() +
"\n";
636 template <
class CatalogMetadataType>
638 bool onlyModified,
string key,
640 string &errorMessage,
int metadataCategory) {
646 sqlite3_stmt *statement = NULL;
648 string queryString =
"SELECT itemID, itemInfo, timeStamp from " +
653 if (onlyModified ==
true)
654 queryString.append(
" where timeStamp > ").append(key).append(
"");
656 queryString.append(
" where itemID = '").append(key).append(
"'");
660 this->
logger->debug(queryString);
661 if (sqlite3_prepare_v2(
sqliteDBHandler, queryString.c_str(), -1, &statement,
662 NULL) == SQLITE_OK) {
666 res = sqlite3_step(statement);
668 if (res == SQLITE_ROW) {
670 int numBytes = sqlite3_column_bytes(statement, 1);
672 PDB_COUT <<
"entry " << sqlite3_column_text(statement, 0)
673 <<
" timestamp " << sqlite3_column_int(statement, 2) << endl;
678 memcpy(recordBytes, sqlite3_column_blob(statement, 1), numBytes);
684 string itemId = returnedObject->getItemKey().c_str();
685 this->
logger->debug(
"itemId=" + itemId);
686 returnedItems->push_back(*returnedObject);
689 }
else if (res == SQLITE_DONE) {
693 sqlite3_finalize(statement);
701 if (error !=
"not an error") {
702 this->
logger->writeLn((
string)queryString +
" " + error);
705 sqlite3_finalize(statement);
715 const string &objectBytes,
716 const string &typeName,
717 const string &fileName,
718 const string &tableName,
719 string &errorMessage) {
721 bool isSuccess =
false;
724 PDB_COUT <<
"inside registerUserDefinedObject\nobjectBytes "
725 << std::to_string(objectBytes.size()) << endl;
726 PDB_COUT <<
"typeName " << typeName << endl;
727 PDB_COUT <<
"fileName " << fileName << endl;
728 PDB_COUT <<
"tableName " << tableName << endl;
730 bool success =
false;
733 sqlite3_stmt *stmt = NULL;
734 uint8_t *serializedBytes = NULL;
736 string queryString(
"");
737 queryString =
"INSERT INTO " + tableName +
738 " (itemID, itemInfo, soBytes, timeStamp) "
739 "VALUES(?, ?, ?, strftime('%s', 'now', 'localtime'))";
741 PDB_COUT <<
"QueryString = " << queryString << endl;
744 sqlite3_prepare_v2(
sqliteDBHandler, queryString.c_str(), -1, &stmt, NULL);
745 if (rc != SQLITE_OK) {
746 errorMessage =
"Prepared statement failed. " +
748 PDB_COUT <<
"errorMessage" << errorMessage << endl;
756 PDB_COUT <<
"ASSIGN TYPE_ID-> " << std::to_string(typeCode) <<
" for Type "
759 string newObjectId = std::to_string(typeCode);
760 String newObjectIndex =
String(std::to_string(typeCode));
762 PDB_COUT <<
" Object Id -----> " << newObjectId;
768 objectToRegister->setItemId(newObjectIndex);
769 objectToRegister->setObjectId(idToRegister);
770 objectToRegister->setItemKey(typeToRegister);
771 objectToRegister->setItemName(typeToRegister);
773 objectToRegister->setLibraryBytes(empty);
777 getRecord<CatalogUserTypeMetadata>(objectToRegister);
781 serializedBytes = (uint8_t *)malloc(metadataBytes->
numBytes());
782 memcpy(serializedBytes, metadataBytes, metadataBytes->
numBytes());
783 size_t soBytesSize = objectBytes.length();
784 this->
logger->debug(
"size soBytesSize " + std::to_string(soBytesSize));
786 rc = sqlite3_bind_text(stmt, 1, typeToRegister.
c_str(), -1, SQLITE_STATIC);
787 rc = sqlite3_bind_blob(stmt, 2, serializedBytes, metadataBytes->
numBytes(),
789 rc = sqlite3_bind_blob(stmt, 3, objectBytes.c_str(), soBytesSize,
795 if (rc != SQLITE_OK) {
796 errorMessage =
"Bind operation failed. " +
798 this->
logger->debug(errorMessage);
801 rc = sqlite3_step(stmt);
802 if (rc != SQLITE_DONE) {
806 fileName +
" is already registered in the catalog!" +
"\n";
808 errorMessage =
"Query execution failed. " +
812 make_pair(typeName, *objectToRegister));
816 "Dynamic library successfully stored in catalog!");
819 sqlite3_finalize(stmt);
820 free(serializedBytes);
822 PDB_COUT << errorMessage << std::endl;
836 string itemId,
string tableName,
838 string &errorMessage) {
842 sqlite3_blob *pBlob = NULL;
843 sqlite3_stmt *pStmt = NULL;
847 string query =
"SELECT itemID, itemInfo, soBytes FROM " + tableName +
848 " where itemID = ?;";
849 PDB_COUT <<
"query: " << query <<
" " << itemId << endl;
850 if (sqlite3_prepare_v2(
sqliteDBHandler, query.c_str(), -1, &pStmt, NULL) !=
852 errorMessage =
"Error query not well formed: " +
855 sqlite3_reset(pStmt);
861 sqlite3_bind_text(pStmt, 1, itemId.c_str(), -1, SQLITE_STATIC);
863 if (sqlite3_step(pStmt) != SQLITE_ROW) {
864 errorMessage =
"Error item not found in database: " +
866 sqlite3_reset(pStmt);
874 int numBytes = sqlite3_column_bytes(pStmt, 1);
878 if (recordBytes ==
nullptr) {
879 PDB_COUT <<
"FATAL ERROR: Out of memory!" << std::endl;
885 memcpy(recordBytes, sqlite3_column_blob(pStmt, 1), numBytes);
888 deepCopyToCurrentAllocationBlock<CatalogUserTypeMetadata>(returnedObject);
890 if (returnedItem ==
nullptr) {
891 PDB_COUT <<
"FATAL ERROR: Corrupted CatalogUserTypeMetadata!" << std::endl;
898 PDB_COUT <<
"Metadata created for item " << string(returnedItem->getItemId())
900 PDB_COUT <<
"Metadata created for item " << string(returnedItem->getItemKey())
902 PDB_COUT <<
"file size= " + std::to_string(numBytes) << endl;
905 numBytes = sqlite3_column_bytes(pStmt, 2);
907 char *buffer =
new char[numBytes];
908 memcpy(buffer, sqlite3_column_blob(pStmt, 2), numBytes);
909 returnedSoLibrary = string(buffer, numBytes);
912 PDB_COUT <<
"buffer bytes size " + std::to_string(returnedSoLibrary.size())
915 sqlite3_reset(pStmt);
916 sqlite3_blob_close(pBlob);
924 struct dirent *next_file = NULL;
925 DIR *theFolder = NULL;
927 theFolder = opendir(filePath.c_str());
928 if (theFolder != NULL) {
929 while ((next_file = readdir(theFolder))) {
930 if (strcmp(next_file->d_name,
".") == 0 ||
931 strcmp(next_file->d_name,
"..") == 0) {
934 string fullName = filePath +
"/" + next_file->d_name;
935 remove(fullName.c_str());
940 template <
class CatalogMetadataType>
943 int &metadataCategory,
944 string &errorMessage) {
949 makeObject<CatalogMetadataType>();
951 bool isSuccess =
false;
952 sqlite3_stmt *stmt = NULL;
954 string sqlStatement =
"INSERT INTO " +
956 " (itemID, itemInfo, timeStamp) VALUES (?, ?, "
957 "strftime('%s', 'now', 'localtime'))";
963 string metadataKey = metadataValue->getItemKey().c_str();
964 metadataValue->setItemId(newKeyValue);
966 auto metadataBytes = getRecord<CatalogMetadataType>(metadataValue);
967 size_t numberOfBytes = metadataBytes->numBytes();
969 this->
logger->debug(sqlStatement +
" with key= " + metadataKey);
971 if ((sqlite3_prepare_v2(
sqliteDBHandler, sqlStatement.c_str(), -1, &stmt,
972 NULL)) != SQLITE_OK) {
975 "Prepared statement failed. " + (string)sqlite3_errmsg(
sqliteDBHandler);
976 this->
logger->writeLn(errorMessage);
981 if ((sqlite3_bind_text(stmt, 1, metadataKey.c_str(), -1, SQLITE_STATIC)) !=
983 errorMessage =
"Bind operation failed. " +
989 if ((sqlite3_bind_blob(stmt, 2, metadataBytes, numberOfBytes,
990 SQLITE_STATIC)) != SQLITE_OK) {
991 errorMessage =
"Bind operation failed. " +
1003 errorMessage =
"Cannot add new item to Catalog";
1004 this->
logger->writeLn(errorMessage);
1007 sqlite3_finalize(stmt);
1011 if (isSuccess ==
true) {
1012 this->
logger->debug(
"The following item metadata was stored in SQLite and "
1013 "loaded into Catalog memory:");
1014 this->
logger->debug(metadataValue->printShort());
1016 this->
logger->writeLn(errorMessage);
1020 template <
class CatalogMetadataType>
1023 string &errorMessage) {
1030 String metadataKey = metadataValue->getItemKey();
1031 int metadataIndex = std::atoi(metadataValue->getItemId().c_str());
1033 bool isSuccess =
false;
1034 sqlite3_stmt *stmt = NULL;
1035 string sqlStatement =
"UPDATE " +
1037 " set itemInfo = ?, timeStamp = strftime('%s', 'now', "
1038 "'localtime') where itemId = ?";
1040 this->
logger->debug(sqlStatement +
" id: " + metadataKey.
c_str());
1042 auto metadataBytes = getRecord<CatalogMetadataType>(metadataValue);
1044 size_t numberOfBytes = metadataBytes->numBytes();
1047 if ((sqlite3_prepare_v2(
sqliteDBHandler, sqlStatement.c_str(), -1, &stmt,
1048 NULL)) != SQLITE_OK) {
1050 "Prepared statement failed. " + (string)sqlite3_errmsg(
sqliteDBHandler);
1051 this->
logger->writeLn(errorMessage);
1056 if ((sqlite3_bind_blob(stmt, 1, metadataBytes, numberOfBytes,
1057 SQLITE_STATIC)) != SQLITE_OK) {
1059 errorMessage =
"Bind operation failed. " +
1065 if ((sqlite3_bind_text(stmt, 2, metadataKey.
c_str(), -1, SQLITE_STATIC)) !=
1067 errorMessage =
"Bind operation failed. " +
1080 PDB_COUT <<
"Metadata for the following item has been updated:"
1081 << metadataValue->printShort() << endl;
1083 errorMessage =
"Cannot update item in Catalog";
1087 sqlite3_finalize(stmt);
1093 template <
class CatalogMetadataType>
1096 string &errorMessage) {
1101 String metadataKey = metadataValue->getItemKey();
1102 int metadataIndex = std::atoi(metadataValue->getItemId().c_str());
1104 bool isSuccess =
false;
1105 sqlite3_stmt *stmt = NULL;
1106 string sqlStatement =
"DELETE from " +
1108 " where itemId = ?";
1110 PDB_COUT << sqlStatement <<
" id: " << metadataKey.
c_str() << endl;
1113 if ((sqlite3_prepare_v2(
sqliteDBHandler, sqlStatement.c_str(), -1, &stmt,
1114 NULL)) != SQLITE_OK) {
1116 "Prepared statement failed. " + (string)sqlite3_errmsg(
sqliteDBHandler);
1122 if ((sqlite3_bind_text(stmt, 1, metadataKey.
c_str(), -1, SQLITE_STATIC)) !=
1124 errorMessage =
"Bind operation failed. " +
1137 errorMessage =
"Cannot delete item in Catalog";
1141 sqlite3_finalize(stmt);
1143 PDB_COUT <<
"Updating " << (*metadataValue).printShort() << endl;
1159 switch (metadataCategory) {
1180 out <<
"--------------------------" << endl;
1181 out <<
"PDB Metadata Registered in the Catalog: " << endl;
1183 out <<
"\n Number of cluster nodes registered: " +
1191 <<
" | Node Address: "
1196 out <<
"\n Number of databases registered: " +
1207 out <<
"\n Number of sets registered: " +
1221 out <<
"\n Number of users registered: " +
1228 out <<
"\n Number of user-defined types registered: " +
1241 out <<
"--------------------------" << endl;
1246 switch (metadataCategory) {
1269 return "Unknown request!";
1278 switch (metadataCategory) {
1282 value = p->second.getItemKey().c_str();
1291 value = p->second.getItemKey().c_str();
1300 value = p->second.getItemKey().c_str();
1309 value = p->second.getItemKey().c_str();
1327 sqlite3_stmt *statement = NULL;
1329 if (sqlite3_prepare_v2(
sqliteDBHandler, queryString.c_str(), -1, &statement,
1330 NULL) == SQLITE_OK) {
1332 result = sqlite3_step(statement);
1333 sqlite3_finalize(statement);
1337 if (error !=
"not an error") {
1338 this->
logger->writeLn((
string)queryString +
" " + error);
1352 if ((rc = sqlite3_step(stmt)) == SQLITE_DONE) {
1356 if (errorMsg !=
"not an error") {
1357 this->
logger->writeLn(
"Problem running sqlite statement: " + errorMsg);
1367 const string &keyToSearch) {
1369 String searchForKey(keyToSearch);
1370 this->
logger->debug(
"keyToSearch=" + keyToSearch);
1371 this->
logger->debug(
"searchForKey=" +
string(searchForKey));
1372 if (keyToSearch ==
"")
1375 for (
int i = 0; i < (*registeredDatabasesMetadata).size(); i++) {
1376 this->
logger->debug(
"i=" + std::to_string(i));
1387 const string &keyToSearch) {
1388 String searchForKey(keyToSearch);
1389 if (keyToSearch ==
"")
1392 for (
int i = 0; i < (*registeredSetsMetadata).size(); i++) {
1402 const string &keyToSearch) {
1403 String searchForKey(keyToSearch);
1404 if (keyToSearch ==
"")
1407 for (
int i = 0; i < (*registeredNodesMetadata).size(); i++) {
1419 string &errorMessage);
1426 string &errorMessage);
1432 string &errorMessage);
1437 string &errorMessage);
1442 string &errorMessage);
1447 string &errorMessage);
1454 string &errorMessage);
1459 string &errorMessage);
1464 string &errorMessage);
1469 string &errorMessage);
1475 string &errorMessage);
Handle< Vector< CatalogSetMetadata > > registeredSetsMetadata
Handle< ObjType > getRootObject()
void listRegisteredDatabases(std::string &outputString, std::string &errMsg)
PDBCatalog(PDBLoggerPtr logger, string location)
Handle< Vector< CatalogUserTypeMetadata > > registeredUserDefinedTypesMetadata
bool deleteMetadataInCatalog(pdb::Handle< CatalogMetadataType > metadataValue, int &metadataCategory, string &errorMessage)
void listUserDefinedTypes(std::string &outputString, std::string &errMsg)
Handle< pdb::Vector< Handle< CatalogUserTypeMetadata > > > listUsersInCluster
void errorLogCallback(void *pArg, int iErrCode, const char *zMsg)
map< string, CatalogUserTypeMetadata > registeredUserDefinedTypes
bool getSerializedCatalog(string fileName, string version, string &returnedBytes, string &errorMessage)
Handle< Vector< CatalogDatabaseMetadata > > registeredDatabasesMetadata
void listNodesInCluster(std::string &outputString, std::string &errMsg)
map< string, CatalogSetMetadata > registeredSets
void setUriPath(string thePath)
map< string, CatalogUserTypeMetadata > getUserDefinedTypesList()
void loadsMetadataIntoMemory()
map< int16_t, string > mapTypeIdToTypeName
void deleteTempSoFiles(string filePath)
map< string, CatalogNodeMetadata > registeredNodes
void closeSQLiteHandler()
int getLastId(int &metadataCategory)
string getMapsPDBOjbect2SQLiteTable(int typeOfObject)
bool retrievesDynamicLibrary(string fileName, string tableName, Handle< CatalogUserTypeMetadata > &returnedItem, string &returnedSoLibrary, string &errorName)
string itemName2ItemId(int &metadataCategory, string &key)
Handle< Map< String, Handle< Vector< Object > > > > catalogContents
Handle< Vector< CatalogNodeMetadata > > registeredNodesMetadata
bool getMetadataFromCatalog(bool onlyModified, string key, Handle< pdb::Vector< CatalogMetadataType >> &returnedEntries, string &errorMessage, int metadataCategory)
bool addMetadataToCatalog(Handle< CatalogMetadataType > &metadataValue, int &metadataCategory, string &errorMessage)
pthread_mutex_t registerMetadataMutex
void listRegisteredSetsForADatabase(std::string databaseName, std::string &outputString, std::string &errMsg)
bool registerUserDefinedObject(int16_t typeCode, pdb::Handle< CatalogUserTypeMetadata > &objectToRegister, const string &objectBytes, const string &typeName, const string &fileName, const string &tableName, string &errorMessage)
map< string, CatalogDatabaseMetadata > registeredDatabases
bool catalogSqlStep(sqlite3_stmt *stmt, string &errorMsg)
std::ostream & operator<<(std::ostream &out, PDBCatalog &catalog)
map< string, int16_t > mapTypeNameToTypeID
void getModifiedMetadata(Handle< CatalogPrintMetadata > &itemMetadata)
void setCatalogVersion(string version)
std::shared_ptr< PDBLogger > PDBLoggerPtr
bool addItemToVector(Handle< CatalogMetadataType > &item, int &key)
map< string, CatalogNodeMetadata > getListOfNodesInCluster()
void getListOfNodes(Handle< Vector< CatalogNodeMetadata >> &nodesInCatalog, const string &key)
void getListOfSets(Handle< Vector< CatalogSetMetadata >> &setsInCatalog, const string &key)
bool catalogSqlQuery(string statement)
bool updateMetadataInCatalog(pdb::Handle< CatalogMetadataType > &metadataValue, int &metadataCategory, string &errorMessage)
map< int, string > mapsPDBOjbect2SQLiteTable
bool deleteItemInVector(int &index, Handle< CatalogMetadataType > &item)
void getListOfDatabases(Handle< Vector< CatalogDatabaseMetadata >> &databasesInCatalog, const string &key)
string getCatalogVersion()
map< int, string > mapsPDBArrayOjbect2SQLiteTable
sqlite3 * sqliteDBHandler
bool keyIsFound(int &metadataCategory, string &key, string &value)
bool updateItemInVector(int &index, Handle< CatalogMetadataType > &item)
void printsAllCatalogMetadata(std::string &outputString, std::string &errMsg)