Ejemplo n.º 1
0
/*@brief   search index catalog object from all cached database objects
 * @param   index_oid
 * @return  index catalog object; if not found return null
 */
std::shared_ptr<IndexCatalogObject> DatabaseCatalogObject::GetCachedIndexObject(
    oid_t index_oid) {
  for (auto it = table_objects_cache.begin(); it != table_objects_cache.end();
       ++it) {
    auto table_object = it->second;
    auto index_object = table_object->GetIndexObject(index_oid, true);
    if (index_object) return index_object;
  }
  return nullptr;
}
Ejemplo n.º 2
0
/*@brief   search index catalog object from all cached database objects
 * @param   index_name
 * @return  index catalog object; if not found return null
 */
std::shared_ptr<IndexCatalogObject> DatabaseCatalogObject::GetCachedIndexObject(
    const std::string &index_name, const std::string &schema_name) {
  for (auto it = table_objects_cache.begin(); it != table_objects_cache.end();
       ++it) {
    auto table_object = it->second;
    if (table_object != nullptr &&
        table_object->GetSchemaName() == schema_name) {
      auto index_object = table_object->GetIndexObject(index_name, true);
      if (index_object) return index_object;
    }
  }
  return nullptr;
}
Ejemplo n.º 3
0
TEST_F(CatalogTests, CreatingDatabase) {
  auto &txn_manager = concurrency::TransactionManagerFactory::GetInstance();
  auto txn = txn_manager.BeginTransaction();
  catalog::Catalog::GetInstance()->CreateDatabase("EMP_DB", txn);
  auto table_object = catalog::Catalog::GetInstance()->GetTableObject(
      CATALOG_DATABASE_NAME, INDEX_CATALOG_NAME, txn);
  auto index_object = table_object->GetIndexObject(INDEX_CATALOG_PKEY_OID);
  std::vector<oid_t> key_attrs = index_object->GetKeyAttrs();

  EXPECT_EQ("EMP_DB", catalog::Catalog::GetInstance()
                          ->GetDatabaseWithName("EMP_DB", txn)
                          ->GetDBName());
  txn_manager.CommitTransaction(txn);
  EXPECT_EQ(1, key_attrs.size());
  EXPECT_EQ(0, key_attrs[0]);
}