Skip to content

Commit

Permalink
New txn framework
Browse files Browse the repository at this point in the history
Signed-off-by: Jin Hai <haijin.chn@gmail.com>
  • Loading branch information
JinHai-CN committed Feb 1, 2025
1 parent 793aae7 commit b723ef2
Show file tree
Hide file tree
Showing 11 changed files with 2,736 additions and 9 deletions.
12 changes: 10 additions & 2 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -249,11 +249,12 @@ target_sources(infinity_core
${network_cppm}
)

add_dependencies(infinity_core thrift thriftnb parquet_static snappy re2 pcre2-8-static)
add_dependencies(infinity_core thrift thriftnb parquet_static snappy re2 pcre2-8-static rocksdb)
target_include_directories(infinity_core PUBLIC ${Python3_INCLUDE_DIRS})
target_include_directories(infinity_core PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
target_include_directories(infinity_core PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/parser")
target_include_directories(infinity_core PUBLIC "${CMAKE_SOURCE_DIR}/third_party")
target_include_directories(infinity_core PUBLIC "${CMAKE_SOURCE_DIR}/third_party/rocksdb/include/")
target_include_directories(infinity_core PUBLIC "${CMAKE_SOURCE_DIR}/third_party/spdlog/include")
target_include_directories(infinity_core PUBLIC "${CMAKE_SOURCE_DIR}/third_party/cli11")
target_include_directories(infinity_core PUBLIC "${CMAKE_SOURCE_DIR}/third_party/ctpl")
Expand Down Expand Up @@ -359,6 +360,7 @@ target_link_libraries(infinity
crypto.a
re2.a
pcre2-8-static
rocksdb.a
)
target_link_directories(infinity PUBLIC "${CMAKE_BINARY_DIR}/lib")
target_link_directories(infinity PUBLIC "${CMAKE_BINARY_DIR}/third_party/oatpp/src/")
Expand All @@ -371,6 +373,7 @@ target_link_directories(infinity PUBLIC "${CMAKE_BINARY_DIR}/third_party/curl/")
target_link_directories(infinity PUBLIC "${CMAKE_BINARY_DIR}/third_party/")
target_link_directories(infinity PUBLIC "${CMAKE_BINARY_DIR}/third_party/re2/")
target_link_directories(infinity PUBLIC "${CMAKE_BINARY_DIR}/third_party/pcre2/")
target_link_directories(infinity PUBLIC "${CMAKE_BINARY_DIR}/third_party/rocksdb/")
target_link_directories(infinity PUBLIC "/usr/local/openssl30/lib64")

target_include_directories(infinity PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
Expand Down Expand Up @@ -429,6 +432,7 @@ if (SKBUILD)
crypto.a
re2.a
pcre2-8-static
rocksdb.a
)

# WARN: python modules shall not link to static libstdc++!!!
Expand All @@ -446,6 +450,7 @@ if (SKBUILD)
target_link_directories(embedded_infinity_ext PUBLIC "${CMAKE_BINARY_DIR}/third_party/re2/")
target_link_directories(embedded_infinity_ext PUBLIC "${CMAKE_BINARY_DIR}/third_party/pcre2/")
target_link_directories(embedded_infinity_ext PUBLIC "${CMAKE_BINARY_DIR}/third_party/")
target_link_directories(embedded_infinity_ext PUBLIC "${CMAKE_BINARY_DIR}/third_party/rocksdb/")
target_link_directories(embedded_infinity_ext PUBLIC "/usr/local/openssl30/lib64")
nanobind_disable_stack_protector(embedded_infinity_ext)
nanobind_opt_size(embedded_infinity_ext)
Expand Down Expand Up @@ -550,7 +555,7 @@ add_executable(unit_test
)

set_target_properties(unit_test PROPERTIES OUTPUT_NAME test_main)
add_dependencies(unit_test oatpp miniocpp pugixml-static curlpp_static inih libcurl_static re2 pcre2-8-static)
add_dependencies(unit_test oatpp miniocpp pugixml-static curlpp_static inih libcurl_static re2 pcre2-8-static rocksdb)

target_link_libraries(unit_test
gtest
Expand Down Expand Up @@ -585,6 +590,7 @@ target_link_libraries(unit_test
libcurl_static
ssl.a
crypto.a
rocksdb.a
)

target_link_directories(unit_test PUBLIC "${CMAKE_BINARY_DIR}/lib")
Expand All @@ -597,6 +603,7 @@ target_link_directories(unit_test PUBLIC "${CMAKE_BINARY_DIR}/third_party/curlpp
target_link_directories(unit_test PUBLIC "${CMAKE_BINARY_DIR}/third_party/curl/")
target_link_directories(unit_test PUBLIC "${CMAKE_BINARY_DIR}/third_party/re2/")
target_link_directories(unit_test PUBLIC "${CMAKE_BINARY_DIR}/third_party/pcre2/")
target_link_directories(unit_test PUBLIC "${CMAKE_BINARY_DIR}/third_party/rocksdb/")
target_link_directories(unit_test PUBLIC "${CMAKE_BINARY_DIR}/third_party/")
target_link_directories(unit_test PUBLIC "/usr/local/openssl30/lib64")

Expand All @@ -608,6 +615,7 @@ target_sources(unit_test

target_include_directories(unit_test PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
target_include_directories(unit_test PUBLIC "${CMAKE_SOURCE_DIR}/third_party")
target_include_directories(unit_test PUBLIC "${CMAKE_SOURCE_DIR}/third_party/rocksdb/include/")
target_include_directories(unit_test PUBLIC "${CMAKE_SOURCE_DIR}/third_party/spdlog/include")
target_include_directories(unit_test PUBLIC "${CMAKE_SOURCE_DIR}/third_party/ctpl")
target_include_directories(unit_test PUBLIC "${CMAKE_SOURCE_DIR}/third_party/tomlplusplus")
Expand Down
88 changes: 88 additions & 0 deletions src/storage/catalog/new_catalog.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
// Copyright(C) 2025 InfiniFlow, Inc. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

module;

// #include <cassert>
// #include <filesystem>
// #include <fstream>
// #include <thread>
// #include <vector>

module new_catalog;
//
import stl;
// import defer_op;
// import data_type;
// import txn_manager;
// import logger;
// import third_party;
import status;
// import infinity_exception;
// import function_set;
// import scalar_function_set;
// import table_function;
// import special_function;
// import buffer_manager;
// import column_def;
// import virtual_store;
// import table_def;
// import table_entry_type;
// import meta_info;
// import index_base;
// import txn_store;
// import data_access_state;
// import catalog_delta_entry;
// import file_writer;
import extra_ddl_info;
// import index_defines;
// import infinity_context;
// import create_index_info;
// import persistence_manager;
//
// import table_meta;
// import table_index_meta;
// import base_entry;
// import block_entry;
// import block_column_entry;
// import segment_index_entry;
// import chunk_index_entry;
// import log_file;
// import persist_result_handler;
// import local_file_handle;
// import admin_statement;
// import global_resource_usage;
// import snapshot_info;

namespace infinity {

Status NewCatalog::CreateDatabase(const SharedPtr<String> &db_name,
const SharedPtr<String> &comment,
TransactionID txn_id,
TxnTimeStamp begin_ts,
ConflictType conflict_type) {
return Status::OK();
}

Status NewCatalog::DropDatabase(const String &db_name, TransactionID txn_id, TxnTimeStamp begin_ts, ConflictType conflict_type) {
return Status::OK();
}

bool NewCatalog::CheckDatabaseExists(const String &db_name, TransactionID txn_id, TxnTimeStamp begin_ts) { return true; }

Tuple<SharedPtr<DatabaseInfo>, Status> NewCatalog::GetDatabaseInfo(const String &db_name, TransactionID txn_id, TxnTimeStamp begin_ts) {
return {nullptr, Status::OK()};
}

} // namespace infinity
87 changes: 87 additions & 0 deletions src/storage/catalog/new_catalog.cppm
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
// Copyright(C) 2024 InfiniFlow, Inc. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

module;

export module new_catalog;


import stl;
import table_def;
//import function;
//import function_set;
//import table_function;
//import special_function;
//import third_party;
//import buffer_manager;
//import profiler;
import status;
//import default_values;
import meta_info;
//import index_base;
//import txn_store;
//import data_access_state;
import extra_ddl_info;
//import db_entry;
//import table_entry;
//import table_index_entry;
//import segment_entry;
//import db_meta;
//import meta_map;
//import base_entry;
//import column_def;
//import cleanup_scanner;
//import log_file;
//import snapshot_info;


namespace infinity {

export struct NewCatalog {
public:
NewCatalog();
~NewCatalog();

public:
// Database related functions
Status CreateDatabase(const SharedPtr<String> &db_name,
const SharedPtr<String> &comment,
TransactionID txn_id,
TxnTimeStamp begin_ts,
ConflictType conflict_type = ConflictType::kError);

Status DropDatabase(const String &db_name, TransactionID txn_id, TxnTimeStamp begin_ts, ConflictType conflict_type = ConflictType::kError);

bool CheckDatabaseExists(const String &db_name, TransactionID txn_id, TxnTimeStamp begin_ts);

Tuple<SharedPtr<DatabaseInfo>, Status> GetDatabaseInfo(const String &db_name, TransactionID txn_id, TxnTimeStamp begin_ts);

// void RemoveDBEntry(DBEntry *db_entry, TransactionID txn_id);
//
// // replay
// void
// CreateDatabaseReplay(const SharedPtr<String> &db_name,
// const SharedPtr<String> &comment,
// std::function<SharedPtr<DBEntry>(DBMeta *, SharedPtr<String>, SharedPtr<String>, TransactionID, TxnTimeStamp)>
// &&init_entry, TransactionID txn_id, TxnTimeStamp begin_ts);
//
// void DropDatabaseReplay(const String &db_name,
// std::function<SharedPtr<DBEntry>(DBMeta *, SharedPtr<String>, TransactionID, TxnTimeStamp)> &&init_entry,
// TransactionID txn_id,
// TxnTimeStamp begin_ts);
//
// DBEntry *GetDatabaseReplay(const String &db_name, TransactionID txn_id, TxnTimeStamp begin_ts);
};

} // namespace infinity
Loading

0 comments on commit b723ef2

Please sign in to comment.