diff --git a/src/include/storage/sqlite_schema_entry.hpp b/src/include/storage/sqlite_schema_entry.hpp index 5bd82b3..1ecdb04 100644 --- a/src/include/storage/sqlite_schema_entry.hpp +++ b/src/include/storage/sqlite_schema_entry.hpp @@ -20,7 +20,7 @@ class SQLiteSchemaEntry : public SchemaCatalogEntry { public: optional_ptr CreateTable(CatalogTransaction transaction, BoundCreateTableInfo &info) override; optional_ptr CreateFunction(CatalogTransaction transaction, CreateFunctionInfo &info) override; - optional_ptr CreateIndex(ClientContext &context, CreateIndexInfo &info, + optional_ptr CreateIndex(CatalogTransaction transaction, CreateIndexInfo &info, TableCatalogEntry &table) override; optional_ptr CreateView(CatalogTransaction transaction, CreateViewInfo &info) override; optional_ptr CreateSequence(CatalogTransaction transaction, CreateSequenceInfo &info) override; @@ -32,7 +32,7 @@ class SQLiteSchemaEntry : public SchemaCatalogEntry { CreatePragmaFunctionInfo &info) override; optional_ptr CreateCollation(CatalogTransaction transaction, CreateCollationInfo &info) override; optional_ptr CreateType(CatalogTransaction transaction, CreateTypeInfo &info) override; - void Alter(ClientContext &context, AlterInfo &info) override; + void Alter(CatalogTransaction transaction, AlterInfo &info) override; void Scan(ClientContext &context, CatalogType type, const std::function &callback) override; void Scan(CatalogType type, const std::function &callback) override; void DropEntry(ClientContext &context, DropInfo &info) override; diff --git a/src/storage/sqlite_index.cpp b/src/storage/sqlite_index.cpp index 5e39da6..68f941e 100644 --- a/src/storage/sqlite_index.cpp +++ b/src/storage/sqlite_index.cpp @@ -17,7 +17,8 @@ SourceResultType SQLiteCreateIndex::GetData(ExecutionContext &context, DataChunk OperatorSourceInput &input) const { auto &catalog = table.catalog; auto &schema = catalog.GetSchema(context.client, info->schema); - schema.CreateIndex(context.client, *info, table); + auto transaction = schema.GetCatalogTransaction(context.client); + schema.CreateIndex(transaction, *info, table); return SourceResultType::FINISHED; } diff --git a/src/storage/sqlite_schema_entry.cpp b/src/storage/sqlite_schema_entry.cpp index 21f38cf..d5ddf1d 100644 --- a/src/storage/sqlite_schema_entry.cpp +++ b/src/storage/sqlite_schema_entry.cpp @@ -100,9 +100,9 @@ string GetCreateIndexSQL(CreateIndexInfo &info, TableCatalogEntry &tbl) { return sql; } -optional_ptr SQLiteSchemaEntry::CreateIndex(ClientContext &context, CreateIndexInfo &info, +optional_ptr SQLiteSchemaEntry::CreateIndex(CatalogTransaction transaction, CreateIndexInfo &info, TableCatalogEntry &table) { - auto &sqlite_transaction = SQLiteTransaction::Get(context, table.catalog); + auto &sqlite_transaction = SQLiteTransaction::Get(transaction.GetContext(), table.catalog); sqlite_transaction.GetDB().Execute(GetCreateIndexSQL(info, table)); return nullptr; } @@ -219,12 +219,12 @@ void SQLiteSchemaEntry::AlterTable(SQLiteTransaction &sqlite_transaction, Remove sqlite_transaction.GetDB().Execute(sql); } -void SQLiteSchemaEntry::Alter(ClientContext &context, AlterInfo &info) { +void SQLiteSchemaEntry::Alter(CatalogTransaction catalog_transaction, AlterInfo &info) { if (info.type != AlterType::ALTER_TABLE) { throw BinderException("Only altering tables is supported for now"); } auto &alter = info.Cast(); - auto &transaction = SQLiteTransaction::Get(context, catalog); + auto &transaction = SQLiteTransaction::Get(catalog_transaction.GetContext(), catalog); switch (alter.alter_table_type) { case AlterTableType::RENAME_TABLE: AlterTable(transaction, alter.Cast());