1212
1313#include " catalog/layout_catalog.h"
1414
15- #include " catalog/column_catalog.h"
15+ #include " catalog/catalog.h"
16+ #include " catalog/system_catalogs.h"
1617#include " catalog/table_catalog.h"
1718#include " concurrency/transaction_context.h"
1819#include " storage/data_table.h"
@@ -28,9 +29,10 @@ LayoutCatalog *LayoutCatalog::GetInstance(storage::Database *pg_catalog,
2829 return &layout_catalog;
2930}
3031
31- LayoutCatalog::LayoutCatalog (storage::Database *pg_catalog,
32- type::AbstractPool *pool,
33- concurrency::TransactionContext *txn)
32+ LayoutCatalog::LayoutCatalog (
33+ storage::Database *pg_catalog,
34+ UNUSED_ATTRIBUTE type::AbstractPool *pool,
35+ UNUSED_ATTRIBUTE concurrency::TransactionContext *txn)
3436 : AbstractCatalog(LAYOUT_CATALOG_OID, LAYOUT_CATALOG_NAME,
3537 InitializeSchema ().release(), pg_catalog) {
3638 // Add indexes for pg_attribute
@@ -39,19 +41,6 @@ LayoutCatalog::LayoutCatalog(storage::Database *pg_catalog,
3941 IndexConstraintType::PRIMARY_KEY);
4042 AddIndex ({ColumnId::TABLE_OID}, LAYOUT_CATALOG_SKEY0_OID,
4143 LAYOUT_CATALOG_NAME " _skey0" , IndexConstraintType::DEFAULT);
42-
43- // Insert columns into pg_attribute
44- ColumnCatalog *pg_attribute =
45- ColumnCatalog::GetInstance (pg_catalog, pool, txn);
46-
47- oid_t column_id = 0 ;
48- for (auto column : catalog_table_->GetSchema ()->GetColumns ()) {
49- pg_attribute->InsertColumn (LAYOUT_CATALOG_OID, column.GetName (), column_id,
50- column.GetOffset (), column.GetType (),
51- column.IsInlined (), column.GetConstraints (),
52- pool, txn);
53- column_id++;
54- }
5544}
5645
5746LayoutCatalog::~LayoutCatalog () {}
@@ -126,9 +115,12 @@ bool LayoutCatalog::DeleteLayout(oid_t table_oid, oid_t layout_id,
126115 values.push_back (type::ValueFactory::GetIntegerValue (table_oid).Copy ());
127116 values.push_back (type::ValueFactory::GetIntegerValue (layout_id).Copy ());
128117
118+ auto pg_table = Catalog::GetInstance ()
119+ ->GetSystemCatalogs (database_oid)
120+ ->GetTableCatalog ();
121+
129122 // delete column from cache
130- auto table_object =
131- TableCatalog::GetInstance ()->GetTableObject (table_oid, txn);
123+ auto table_object = pg_table->GetTableObject (table_oid, txn);
132124 table_object->EvictLayout (layout_id);
133125
134126 return DeleteWithIndexScan (index_offset, values, txn);
@@ -141,8 +133,10 @@ bool LayoutCatalog::DeleteLayouts(oid_t table_oid,
141133 values.push_back (type::ValueFactory::GetIntegerValue (table_oid).Copy ());
142134
143135 // delete layouts from cache
144- auto table_object =
145- TableCatalog::GetInstance ()->GetTableObject (table_oid, txn);
136+ auto pg_table = Catalog::GetInstance ()
137+ ->GetSystemCatalogs (database_oid)
138+ ->GetTableCatalog ();
139+ auto table_object = pg_table->GetTableObject (table_oid, txn);
146140 table_object->EvictAllLayouts ();
147141
148142 return DeleteWithIndexScan (index_offset, values, txn);
@@ -152,8 +146,10 @@ const std::unordered_map<oid_t, std::shared_ptr<const storage::Layout>>
152146LayoutCatalog::GetLayouts (oid_t table_oid,
153147 concurrency::TransactionContext *txn) {
154148 // Try to find the layouts in the cache
155- auto table_object =
156- TableCatalog::GetInstance ()->GetTableObject (table_oid, txn);
149+ auto pg_table = Catalog::GetInstance ()
150+ ->GetSystemCatalogs (database_oid)
151+ ->GetTableCatalog ();
152+ auto table_object = pg_table->GetTableObject (table_oid, txn);
157153 PELOTON_ASSERT (table_object && table_object->GetTableOid () == table_oid);
158154 auto layout_objects = table_object->GetLayouts (true );
159155 if (layout_objects.size () != 0 ) {
0 commit comments