diff --git a/catalogue/CatalogueMetadataGetter.cpp b/catalogue/CatalogueMetadataGetter.cpp index e294eee562027fd2bd33a6ada32660fc2d655eea..8aeef197538bc73166c2e8e04a8433f7bd3aa73c 100644 --- a/catalogue/CatalogueMetadataGetter.cpp +++ b/catalogue/CatalogueMetadataGetter.cpp @@ -54,25 +54,37 @@ std::string CatalogueMetadataGetter::getCatalogueVersion(){ } } +std::list<std::string> CatalogueMetadataGetter::getTableNames(){ + return m_conn.getTableNames(); +} + +std::list<std::string> CatalogueMetadataGetter::getIndexNames(){ + return m_conn.getIndexNames(); +} + +std::map<std::string,std::string> CatalogueMetadataGetter::getColumns(const std::string& tableName){ + return m_conn.getColumns(tableName); +} + CatalogueMetadataGetter::~CatalogueMetadataGetter() {} SQLiteCatalogueMetadataGetter::SQLiteCatalogueMetadataGetter(cta::rdbms::Conn & conn):CatalogueMetadataGetter(conn){} SQLiteCatalogueMetadataGetter::~SQLiteCatalogueMetadataGetter(){} std::list<std::string> SQLiteCatalogueMetadataGetter::getIndexNames() { - std::list<std::string> indexNames = m_conn.getIndexNames(); + std::list<std::string> indexNames = CatalogueMetadataGetter::getIndexNames(); removeObjectNameContaining(indexNames,{"sqlite_autoindex"}); return indexNames; } std::list<std::string> SQLiteCatalogueMetadataGetter::getTableNames(){ - std::list<std::string> tableNames = m_conn.getTableNames(); + std::list<std::string> tableNames = CatalogueMetadataGetter::getTableNames(); removeObjectNameContaining(tableNames,{"sqlite_sequence"}); return tableNames; } std::map<std::string, std::string> SQLiteCatalogueMetadataGetter::getColumns(const std::string& tableName){ - return m_conn.getColumns(tableName); + return CatalogueMetadataGetter::getColumns(tableName); } @@ -80,18 +92,50 @@ OracleCatalogueMetadataGetter::OracleCatalogueMetadataGetter(cta::rdbms::Conn & OracleCatalogueMetadataGetter::~OracleCatalogueMetadataGetter(){} std::list<std::string> OracleCatalogueMetadataGetter::getIndexNames() { - std::list<std::string> indexNames = m_conn.getIndexNames(); + std::list<std::string> indexNames = CatalogueMetadataGetter::getIndexNames(); removeObjectNameContaining(indexNames,{"_UN","PK","_LLN"}); return indexNames; } std::list<std::string> OracleCatalogueMetadataGetter::getTableNames() { - std::list<std::string> tableNames = m_conn.getTableNames(); + std::list<std::string> tableNames = CatalogueMetadataGetter::getTableNames(); return tableNames; } std::map<std::string, std::string> OracleCatalogueMetadataGetter::getColumns(const std::string& tableName){ - return m_conn.getColumns(tableName); + return CatalogueMetadataGetter::getColumns(tableName); +} + +MySQLCatalogueMetadataGetter::MySQLCatalogueMetadataGetter(cta::rdbms::Conn& conn):CatalogueMetadataGetter(conn) {} +MySQLCatalogueMetadataGetter::~MySQLCatalogueMetadataGetter(){} + +std::list<std::string> MySQLCatalogueMetadataGetter::getIndexNames() { + std::list<std::string> indexNames = CatalogueMetadataGetter::getIndexNames(); + //removeObjectNameContaining(indexNames,{"User","Grantor", "_ID", "_NAME"}); + return indexNames; +} + +std::list<std::string> MySQLCatalogueMetadataGetter::getTableNames() { + return CatalogueMetadataGetter::getTableNames(); +} + +std::map<std::string, std::string> MySQLCatalogueMetadataGetter::getColumns(const std::string& tableName){ + return CatalogueMetadataGetter::getColumns(tableName); +} + +PostgresCatalogueMetadataGetter::PostgresCatalogueMetadataGetter(cta::rdbms::Conn& conn):CatalogueMetadataGetter(conn) {} +PostgresCatalogueMetadataGetter::~PostgresCatalogueMetadataGetter(){} + +std::list<std::string> PostgresCatalogueMetadataGetter::getIndexNames() { + return CatalogueMetadataGetter::getIndexNames(); +} + +std::list<std::string> PostgresCatalogueMetadataGetter::getTableNames() { + return CatalogueMetadataGetter::getTableNames(); +} + +std::map<std::string, std::string> PostgresCatalogueMetadataGetter::getColumns(const std::string& tableName){ + return CatalogueMetadataGetter::getColumns(tableName); } CatalogueMetadataGetter * CatalogueMetadataGetterFactory::create(const rdbms::Login::DbType dbType, cta::rdbms::Conn & conn) { @@ -102,8 +146,12 @@ CatalogueMetadataGetter * CatalogueMetadataGetterFactory::create(const rdbms::Lo return new SQLiteCatalogueMetadataGetter(conn); case DbType::DBTYPE_ORACLE: return new OracleCatalogueMetadataGetter(conn); + case DbType::DBTYPE_MYSQL: + return new MySQLCatalogueMetadataGetter(conn); + case DbType::DBTYPE_POSTGRESQL: + return new PostgresCatalogueMetadataGetter(conn); default: - return nullptr; + throw cta::exception::Exception("In CatalogueMetadataGetterFactory::create(), can't get CatalogueMetadataGetter for dbType "+rdbms::Login::dbTypeToString(dbType)); } } diff --git a/catalogue/CatalogueMetadataGetter.hpp b/catalogue/CatalogueMetadataGetter.hpp index 29e109536a430c7f7fdd33e52484633de82e9f13..ae38d5f9c4ddfbb4399a5ac497f326ecdb8027af 100644 --- a/catalogue/CatalogueMetadataGetter.hpp +++ b/catalogue/CatalogueMetadataGetter.hpp @@ -34,9 +34,9 @@ class CatalogueMetadataGetter { CatalogueMetadataGetter(cta::rdbms::Conn & conn); virtual ~CatalogueMetadataGetter(); std::string getCatalogueVersion(); - virtual std::list<std::string> getIndexNames() = 0; - virtual std::list<std::string> getTableNames() = 0; - virtual std::map<std::string,std::string> getColumns(const std::string& tableName) = 0; + virtual std::list<std::string> getIndexNames(); + virtual std::list<std::string> getTableNames(); + virtual std::map<std::string,std::string> getColumns(const std::string& tableName); }; class SQLiteCatalogueMetadataGetter: public CatalogueMetadataGetter{ @@ -57,6 +57,24 @@ class OracleCatalogueMetadataGetter: public CatalogueMetadataGetter{ std::map<std::string,std::string> getColumns(const std::string& tableName) override; }; +class MySQLCatalogueMetadataGetter: public CatalogueMetadataGetter{ + public: + MySQLCatalogueMetadataGetter(cta::rdbms::Conn &conn); + virtual ~MySQLCatalogueMetadataGetter(); + std::list<std::string> getIndexNames() override; + std::list<std::string> getTableNames() override; + std::map<std::string,std::string> getColumns(const std::string& tableName) override; +}; + +class PostgresCatalogueMetadataGetter: public CatalogueMetadataGetter{ + public: + PostgresCatalogueMetadataGetter(cta::rdbms::Conn &conn); + virtual ~PostgresCatalogueMetadataGetter(); + std::list<std::string> getIndexNames() override; + std::list<std::string> getTableNames() override; + std::map<std::string,std::string> getColumns(const std::string& tableName) override; +}; + class CatalogueMetadataGetterFactory { public: static CatalogueMetadataGetter* create(const rdbms::Login::DbType dbType, cta::rdbms::Conn & conn); diff --git a/catalogue/SchemaChecker.cpp b/catalogue/SchemaChecker.cpp index 755db61387797791a383697ccbbe8ea6f7ce032e..e7944f5918f193e84ca25fe18abd32f78940df16 100644 --- a/catalogue/SchemaChecker.cpp +++ b/catalogue/SchemaChecker.cpp @@ -49,7 +49,7 @@ SchemaChecker::Status SchemaChecker::compareSchema(){ void SchemaChecker::checkNoParallelTables(){ std::list<std::string> parallelTables = m_catalogueConn.getParallelTableNames(); for(auto& table:parallelTables) { - std::cout << "WARNING : " << table << " is set as PARALLEL" << std::endl; + std::cout << "WARNING : TABLE " << table << " is set as PARALLEL" << std::endl; } } diff --git a/rdbms/wrapper/OcciConn.cpp b/rdbms/wrapper/OcciConn.cpp index ef48c1c2f7bb7bf47d457f4880bb054ef63c1657..114b8618a091c9da5dd433232d24837b6a85ca9e 100644 --- a/rdbms/wrapper/OcciConn.cpp +++ b/rdbms/wrapper/OcciConn.cpp @@ -296,7 +296,7 @@ std::list<std::string> OcciConn::getParallelTableNames() { "FROM " "USER_TABLES " "WHERE " - "DEGREE NOT LIKE '%1%' " + "TRIM(DEGREE) NOT LIKE '1' " "ORDER BY " "TABLE_NAME"; auto stmt = createStmt(sql); diff --git a/rdbms/wrapper/SqliteConn.cpp b/rdbms/wrapper/SqliteConn.cpp index 3033088405d3f656d05907b29b4b2dc83e248e48..d4bd8f745465d6191ca9da232db442e3efbbe602 100644 --- a/rdbms/wrapper/SqliteConn.cpp +++ b/rdbms/wrapper/SqliteConn.cpp @@ -250,6 +250,11 @@ std::map<std::string, std::string> SqliteConn::getColumns(const std::string &tab "VARCHAR|" "VARCHAR2|" "BLOB|" + "BIGINT|" + "SMALLINT|" + "INT|" + "TINYINT|" + "VARBINARY|" "RAW"; auto stmt = createStmt(sql);