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);