示例#1
0
IndexCatalog::IndexCatalog(storage::Database *pg_catalog,
                           type::AbstractPool *pool,
                           concurrency::Transaction *txn)
    : AbstractCatalog(INDEX_CATALOG_OID, INDEX_CATALOG_NAME,
                      InitializeSchema().release(), pg_catalog) {
  // Add indexes for pg_index
  AddIndex({0}, INDEX_CATALOG_PKEY_OID, INDEX_CATALOG_NAME "_pkey",
           IndexConstraintType::PRIMARY_KEY);
  AddIndex({1}, INDEX_CATALOG_SKEY0_OID, INDEX_CATALOG_NAME "_skey0",
           IndexConstraintType::UNIQUE);
  AddIndex({2}, INDEX_CATALOG_SKEY1_OID, INDEX_CATALOG_NAME "_skey1",
           IndexConstraintType::DEFAULT);

  // Insert columns into pg_attribute
  ColumnCatalog *pg_attribute = ColumnCatalog::GetInstance(pg_catalog, pool, txn);

  oid_t column_id = 0;
  for (auto column : catalog_table_->GetSchema()->GetColumns()) {
    pg_attribute->InsertColumn(INDEX_CATALOG_OID, column.GetName(), column_id,
                               column.GetOffset(), column.GetType(),
                               column.IsInlined(), column.GetConstraints(),
                               pool, txn);
    column_id++;
  }
}
示例#2
0
DatabaseCatalog::DatabaseCatalog(
    storage::Database *pg_catalog, UNUSED_ATTRIBUTE type::AbstractPool *pool,
    UNUSED_ATTRIBUTE concurrency::TransactionContext *txn)
    : AbstractCatalog(DATABASE_CATALOG_OID, DATABASE_CATALOG_NAME,
                      InitializeSchema().release(), pg_catalog) {
  // Add indexes for pg_database
  AddIndex({ColumnId::DATABASE_OID}, DATABASE_CATALOG_PKEY_OID,
           DATABASE_CATALOG_NAME "_pkey", IndexConstraintType::PRIMARY_KEY);
  AddIndex({ColumnId::DATABASE_NAME}, DATABASE_CATALOG_SKEY0_OID,
           DATABASE_CATALOG_NAME "_skey0", IndexConstraintType::UNIQUE);
}
示例#3
0
IndexCatalog::IndexCatalog(concurrency::TransactionContext *,
                           storage::Database *pg_catalog,
                           type::AbstractPool *)
    : AbstractCatalog(pg_catalog,
                      InitializeSchema().release(),
                      INDEX_CATALOG_OID,
                      INDEX_CATALOG_NAME) {
  // Add indexes for pg_index
  AddIndex(INDEX_CATALOG_NAME "_pkey",
           INDEX_CATALOG_PKEY_OID,
           {ColumnId::INDEX_OID},
           IndexConstraintType::PRIMARY_KEY);
  AddIndex(INDEX_CATALOG_NAME "_skey0",
           INDEX_CATALOG_SKEY0_OID,
           {ColumnId::INDEX_NAME, ColumnId::SCHEMA_NAME},
           IndexConstraintType::UNIQUE);
  AddIndex(INDEX_CATALOG_NAME "_skey1",
           INDEX_CATALOG_SKEY1_OID,
           {ColumnId::TABLE_OID},
           IndexConstraintType::DEFAULT);
}