Ejemplo n.º 1
0
TEST_F(CatalogTests, TableObject) {
  auto &txn_manager = concurrency::TransactionManagerFactory::GetInstance();
  auto txn = txn_manager.BeginTransaction();

  auto table_object = catalog::Catalog::GetInstance()->GetTableObject(
      "emp_db", DEFAULT_SCHEMA_NAME, "department_table", txn);

  auto index_objects = table_object->GetIndexObjects();
  auto column_objects = table_object->GetColumnObjects();

  EXPECT_EQ(1, index_objects.size());
  EXPECT_EQ(2, column_objects.size());

  EXPECT_EQ(table_object->GetTableOid(), column_objects[0]->GetTableOid());
  EXPECT_EQ("id", column_objects[0]->GetColumnName());
  EXPECT_EQ(0, column_objects[0]->GetColumnId());
  EXPECT_EQ(0, column_objects[0]->GetColumnOffset());
  EXPECT_EQ(type::TypeId::INTEGER, column_objects[0]->GetColumnType());
  EXPECT_TRUE(column_objects[0]->IsInlined());
  EXPECT_TRUE(column_objects[0]->IsPrimary());
  EXPECT_FALSE(column_objects[0]->IsNotNull());

  EXPECT_EQ(table_object->GetTableOid(), column_objects[1]->GetTableOid());
  EXPECT_EQ("name", column_objects[1]->GetColumnName());
  EXPECT_EQ(1, column_objects[1]->GetColumnId());
  EXPECT_EQ(4, column_objects[1]->GetColumnOffset());
  EXPECT_EQ(type::TypeId::VARCHAR, column_objects[1]->GetColumnType());
  EXPECT_TRUE(column_objects[1]->IsInlined());
  EXPECT_FALSE(column_objects[1]->IsPrimary());
  EXPECT_FALSE(column_objects[1]->IsNotNull());

  // update pg_table SET version_oid = 1 where table_name = department_table
  oid_t department_table_oid = table_object->GetTableOid();
  auto pg_table = catalog::Catalog::GetInstance()
                      ->GetSystemCatalogs(table_object->GetDatabaseOid())
                      ->GetTableCatalog();
  bool update_result = pg_table->UpdateVersionId(1, department_table_oid, txn);
  // get version id after update, invalidate old cache
  table_object = catalog::Catalog::GetInstance()->GetTableObject(
      "emp_db", DEFAULT_SCHEMA_NAME, "department_table", txn);
  uint32_t version_oid = table_object->GetVersionId();
  EXPECT_NE(department_table_oid, INVALID_OID);
  EXPECT_EQ(update_result, true);
  EXPECT_EQ(version_oid, 1);

  txn_manager.CommitTransaction(txn);
}
Ejemplo n.º 2
0
 PWrapper CrWrapper(const std::string& theFileName,
                    bool theDoPreCheckInSeparateProcess)
 {
   PWrapper aWrapper;
   EVersion aVersion = GetVersionId(theFileName,theDoPreCheckInSeparateProcess);
   switch(aVersion){
   case eV2_2:
     // aWrapper.reset(new MED::V2_2::TVWrapper(theFileName));
     break;
   case eV2_1:
     EXCEPTION(std::runtime_error,"Cannot open file '"<<theFileName<<"'. Med version 2.1 is not supported any more.");
     //aWrapper.reset(new MED::V2_1::TVWrapper(theFileName));
     break;
   default:
     EXCEPTION(std::runtime_error,"MED::CrWrapper - theFileName = '"<<theFileName<<"'");
   }
   return aWrapper;
 }
Ejemplo n.º 3
0
  PWrapper CrWrapper(const std::string& theFileName, EVersion theId)
  {
    EVersion aVersion = GetVersionId(theFileName);

    if(aVersion != theId)
      remove(theFileName.c_str());
    
    PWrapper aWrapper;
    switch(theId){
    case eV2_2:
      // aWrapper.reset(new MED::V2_2::TVWrapper(theFileName));
      break;
    case eV2_1:
      EXCEPTION(std::runtime_error,"Cannot open file '"<<theFileName<<"'. Med version 2.1 is not supported any more.");
      //aWrapper.reset(new MED::V2_1::TVWrapper(theFileName));
      break;
    //default:
      // aWrapper.reset(new MED::V2_2::TVWrapper(theFileName));
    }
    return aWrapper;
  }