44
44
namespace peloton {
45
45
namespace catalog {
46
46
47
- AbstractCatalog::AbstractCatalog (oid_t catalog_table_oid,
48
- std::string catalog_table_name,
47
+ AbstractCatalog::AbstractCatalog (storage::Database *pg_catalog,
49
48
catalog::Schema *catalog_table_schema,
50
- storage::Database *pg_catalog) {
49
+ oid_t catalog_table_oid,
50
+ std::string catalog_table_name) {
51
51
// set database_oid
52
- database_oid = pg_catalog->GetOid ();
52
+ database_oid_ = pg_catalog->GetOid ();
53
53
// Create catalog_table_
54
54
catalog_table_ = storage::TableFactory::GetDataTable (
55
- database_oid , catalog_table_oid, catalog_table_schema, catalog_table_name,
55
+ database_oid_ , catalog_table_oid, catalog_table_schema, catalog_table_name,
56
56
DEFAULT_TUPLES_PER_TILEGROUP, true , false , true );
57
57
// Add catalog_table_ into pg_catalog database
58
58
pg_catalog->AddTable (catalog_table_, true );
59
59
}
60
60
61
- AbstractCatalog::AbstractCatalog (const std::string &catalog_table_ddl ,
62
- concurrency::TransactionContext *txn ) {
61
+ AbstractCatalog::AbstractCatalog (concurrency::TransactionContext *txn ,
62
+ const std::string &catalog_table_ddl ) {
63
63
// get catalog table schema
64
64
auto &peloton_parser = parser::PostgresParser::GetInstance ();
65
65
auto create_plan = std::dynamic_pointer_cast<planner::CreatePlan>(
@@ -71,21 +71,27 @@ AbstractCatalog::AbstractCatalog(const std::string &catalog_table_ddl,
71
71
auto catalog_database_name = create_plan->GetDatabaseName ();
72
72
PELOTON_ASSERT (catalog_schema_name == std::string (CATALOG_SCHEMA_NAME));
73
73
// create catalog table
74
- Catalog::GetInstance ()->CreateTable (
75
- catalog_database_name, catalog_schema_name, catalog_table_name,
76
- std::unique_ptr<catalog::Schema>(catalog_table_schema), txn, true );
74
+ Catalog::GetInstance ()->CreateTable (txn,
75
+ catalog_database_name,
76
+ catalog_schema_name,
77
+ std::unique_ptr<catalog::Schema>(
78
+ catalog_table_schema),
79
+ catalog_table_name,
80
+ true );
77
81
78
82
// get catalog table oid
79
- auto catalog_table_object = Catalog::GetInstance ()->GetTableObject (
80
- catalog_database_name, catalog_schema_name, catalog_table_name, txn);
83
+ auto catalog_table_object = Catalog::GetInstance ()->GetTableCatalogEntry (txn,
84
+ catalog_database_name,
85
+ catalog_schema_name,
86
+ catalog_table_name);
81
87
82
88
// set catalog_table_
83
89
try {
84
90
catalog_table_ = storage::StorageManager::GetInstance ()->GetTableWithOid (
85
91
catalog_table_object->GetDatabaseOid (),
86
92
catalog_table_object->GetTableOid ());
87
93
// set database_oid
88
- database_oid = catalog_table_object->GetDatabaseOid ();
94
+ database_oid_ = catalog_table_object->GetDatabaseOid ();
89
95
} catch (CatalogException &e) {
90
96
LOG_TRACE (" Can't find table %d! Return false" ,
91
97
catalog_table_object->GetTableOid ());
@@ -97,8 +103,8 @@ AbstractCatalog::AbstractCatalog(const std::string &catalog_table_ddl,
97
103
* @param txn TransactionContext
98
104
* @return Whether insertion is Successful
99
105
*/
100
- bool AbstractCatalog::InsertTuple (std::unique_ptr<storage::Tuple> tuple ,
101
- concurrency::TransactionContext *txn ) {
106
+ bool AbstractCatalog::InsertTuple (concurrency::TransactionContext *txn ,
107
+ std::unique_ptr<storage::Tuple> tuple ) {
102
108
if (txn == nullptr )
103
109
throw CatalogException (" Insert tuple requires transaction" );
104
110
@@ -137,9 +143,9 @@ bool AbstractCatalog::InsertTuple(std::unique_ptr<storage::Tuple> tuple,
137
143
* @param txn TransactionContext
138
144
* @return Whether deletion is Successful
139
145
*/
140
- bool AbstractCatalog::DeleteWithIndexScan (
141
- oid_t index_offset, std::vector<type::Value> values ,
142
- concurrency::TransactionContext *txn ) {
146
+ bool AbstractCatalog::DeleteWithIndexScan (concurrency::TransactionContext *txn,
147
+ oid_t index_offset ,
148
+ std::vector<type::Value> values ) {
143
149
if (txn == nullptr )
144
150
throw CatalogException (" Delete tuple requires transaction" );
145
151
@@ -189,9 +195,10 @@ bool AbstractCatalog::DeleteWithIndexScan(
189
195
*/
190
196
std::unique_ptr<std::vector<std::unique_ptr<executor::LogicalTile>>>
191
197
AbstractCatalog::GetResultWithIndexScan (
192
- std::vector<oid_t > column_offsets, oid_t index_offset,
193
- std::vector<type::Value> values,
194
- concurrency::TransactionContext *txn) const {
198
+ concurrency::TransactionContext *txn,
199
+ std::vector<oid_t > column_offsets,
200
+ oid_t index_offset,
201
+ std::vector<type::Value> values) const {
195
202
if (txn == nullptr ) throw CatalogException (" Scan table requires transaction" );
196
203
197
204
// Index scan
@@ -238,9 +245,10 @@ AbstractCatalog::GetResultWithIndexScan(
238
245
* @return Unique pointer of vector of logical tiles
239
246
*/
240
247
std::unique_ptr<std::vector<std::unique_ptr<executor::LogicalTile>>>
241
- AbstractCatalog::GetResultWithSeqScan (std::vector<oid_t > column_offsets,
242
- expression::AbstractExpression *predicate,
243
- concurrency::TransactionContext *txn) {
248
+ AbstractCatalog::GetResultWithSeqScan (
249
+ concurrency::TransactionContext *txn,
250
+ expression::AbstractExpression *predicate,
251
+ std::vector<oid_t > column_offsets) {
244
252
if (txn == nullptr ) throw CatalogException (" Scan table requires transaction" );
245
253
246
254
// Sequential scan
@@ -272,8 +280,9 @@ AbstractCatalog::GetResultWithSeqScan(std::vector<oid_t> column_offsets,
272
280
* Note: Use catalog::Catalog::CreateIndex() if you can, only ColumnCatalog and
273
281
* IndexCatalog should need this
274
282
*/
275
- void AbstractCatalog::AddIndex (const std::vector<oid_t > &key_attrs,
276
- oid_t index_oid, const std::string &index_name,
283
+ void AbstractCatalog::AddIndex (const std::string &index_name,
284
+ oid_t index_oid,
285
+ const std::vector<oid_t > &key_attrs,
277
286
IndexConstraintType index_constraint) {
278
287
auto schema = catalog_table_->GetSchema ();
279
288
auto key_schema = catalog::Schema::CopySchema (schema, key_attrs);
@@ -307,10 +316,11 @@ void AbstractCatalog::AddIndex(const std::vector<oid_t> &key_attrs,
307
316
* @param index_offset Offset of index for scan
308
317
* @return true if successfully executes
309
318
*/
310
- bool AbstractCatalog::UpdateWithIndexScan (
311
- std::vector<oid_t > update_columns, std::vector<type::Value> update_values,
312
- std::vector<type::Value> scan_values, oid_t index_offset,
313
- concurrency::TransactionContext *txn) {
319
+ bool AbstractCatalog::UpdateWithIndexScan (concurrency::TransactionContext *txn,
320
+ oid_t index_offset,
321
+ std::vector<type::Value> scan_values,
322
+ std::vector<oid_t > update_columns,
323
+ std::vector<type::Value> update_values) {
314
324
if (txn == nullptr ) throw CatalogException (" Scan table requires transaction" );
315
325
316
326
std::unique_ptr<executor::ExecutorContext> context (
0 commit comments