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