@@ -35,28 +35,32 @@ uint32_t SequenceFunctions::Nextval(executor::ExecutorContext &ctx,
3535 const char *sequence_name) {
3636 PELOTON_ASSERT (sequence_name != nullptr );
3737 concurrency::TransactionContext* txn = ctx.GetTransaction ();
38- // get the database oid for this transaction
39- oid_t database_oid = catalog::Catalog::GetInstance ()
40- ->GetDatabaseObject (ctx.GetDatabaseName (), txn)->GetDatabaseOid ();
41- LOG_DEBUG (" Get database oid: %u" , database_oid);
38+
39+ // HACK: Assume that there is only one database in our cache
40+ auto all_databases = txn->GetCatalogCache ()->GetAllDatabaseObjects ();
41+ PELOTON_ASSERT (all_databases.empty () == false );
42+ auto database_catalog = all_databases[0 ];
43+ LOG_DEBUG (" Get database oid: %u" , database_catalog->GetDatabaseOid ());
4244
4345 // initialize a new transaction for incrementing sequence value
4446 auto &txn_manager = concurrency::TransactionManagerFactory::GetInstance ();
4547 auto mini_txn = txn_manager.BeginTransaction ();
4648
4749 // evict the old cached copy of sequence
48- txn->catalog_cache .EvictSequenceObject (sequence_name,database_oid);
50+ txn->GetCatalogCache ()->EvictSequenceObject (sequence_name,
51+ database_catalog->GetDatabaseOid ());
4952 auto sequence_object =
5053 catalog::Catalog::GetInstance ()
51- ->GetSystemCatalogs (database_oid )
54+ ->GetSystemCatalogs (database_catalog-> GetDatabaseOid () )
5255 ->GetSequenceCatalog ()
53- ->GetSequence (database_oid, sequence_name, mini_txn);
56+ ->GetSequence (database_catalog->GetDatabaseOid (),
57+ sequence_name, mini_txn);
5458
5559 if (sequence_object != nullptr ) {
5660 uint32_t val = sequence_object->GetNextVal ();
5761 int64_t curr_val = sequence_object->GetCurrVal ();
5862 // insert the new copy of sequence into cache for future currval
59- txn->catalog_cache . InsertSequenceObject (sequence_object);
63+ txn->GetCatalogCache ()-> InsertSequenceObject (sequence_object);
6064
6165 auto ret = txn_manager.CommitTransaction (mini_txn);
6266 if (ret != ResultType::SUCCESS) {
@@ -65,9 +69,9 @@ uint32_t SequenceFunctions::Nextval(executor::ExecutorContext &ctx,
6569 }
6670
6771 catalog::Catalog::GetInstance ()
68- ->GetSystemCatalogs (database_oid )
72+ ->GetSystemCatalogs (database_catalog-> GetDatabaseOid () )
6973 ->GetSequenceCatalog ()
70- ->InsertCurrValCache (txn-> GetTemporarySchemaName () ,
74+ ->InsertCurrValCache (" FIXME_SCHEMA " ,
7175 sequence_name, curr_val);
7276 return val;
7377 } else {
@@ -88,23 +92,24 @@ uint32_t SequenceFunctions::Currval(executor::ExecutorContext &ctx,
8892 PELOTON_ASSERT (sequence_name != nullptr );
8993 concurrency::TransactionContext* txn = ctx.GetTransaction ();
9094 // get the database oid for this transaction
91- oid_t database_oid = catalog::Catalog::GetInstance ()
92- ->GetDatabaseObject (ctx.GetDatabaseName (), txn)->GetDatabaseOid ();
93- LOG_DEBUG (" Get database oid: %u" , database_oid);
95+ // HACK: Assume that there is only one database in our cache
96+ auto all_databases = txn->GetCatalogCache ()->GetAllDatabaseObjects ();
97+ PELOTON_ASSERT (all_databases.empty () == false );
98+ auto database_catalog = all_databases[0 ];
9499
95100 // get the sequence copy from cache
96101 auto sequence_catalog = catalog::Catalog::GetInstance ()
97- ->GetSystemCatalogs (database_oid )
102+ ->GetSystemCatalogs (database_catalog-> GetDatabaseOid () )
98103 ->GetSequenceCatalog ();
99104
100105 if (sequence_catalog->CheckCachedCurrValExistence (
101- txn-> GetTemporarySchemaName () , std::string (sequence_name))) {
106+ " FIXME_SCHEMA " , std::string (sequence_name))) {
102107 return sequence_catalog->GetCachedCurrVal (
103- txn-> GetTemporarySchemaName () , std::string (sequence_name));
108+ " FIXME_SCHEMA " , std::string (sequence_name));
104109 } else {
105110 // get sequence from catalog
106111 auto sequence_object = sequence_catalog
107- ->GetSequence (database_oid , sequence_name, txn);
112+ ->GetSequence (database_catalog-> GetDatabaseOid () , sequence_name, txn);
108113 if (sequence_object != nullptr ) {
109114 throw SequenceException (
110115 StringUtil::Format (" currval for sequence \" %s\" is undefined for this session" ,
0 commit comments