From a121cd4d60ccf2512bfba2f5dfcc5a5b35b92b94 Mon Sep 17 00:00:00 2001 From: ziyi chen Date: Thu, 25 Apr 2024 12:14:29 +0800 Subject: [PATCH] Rename duckdb/postgres extension (#3380) --- .github/workflows/ci-workflow.yml | 18 ++++++------ CMakeLists.txt | 2 +- Makefile | 10 +++---- extension/CMakeLists.txt | 8 +++--- .../{duckdb_scanner => duckdb}/CMakeLists.txt | 16 +++++------ .../src/duckdb_catalog.cpp | 10 +++---- .../src/duckdb_extension.cpp} | 10 +++---- .../src/duckdb_functions.cpp | 4 +-- .../src/duckdb_scan.cpp | 4 +-- .../src/duckdb_storage.cpp | 4 +-- .../src/duckdb_table_catalog_entry.cpp | 0 .../src/duckdb_type_converter.cpp | 4 +-- .../src/include/duckdb_catalog.h | 4 +-- .../src/include/duckdb_extension.h} | 6 ++-- .../src/include/duckdb_functions.h | 4 +-- .../src/include/duckdb_scan.h | 4 +-- .../src/include/duckdb_storage.h | 4 +-- .../src/include/duckdb_table_catalog_entry.h | 0 .../src/include/duckdb_type_converter.h | 4 +-- .../test/duckdb_database/dbfilewithoutext | Bin .../test/duckdb_database/other.db | Bin .../test/duckdb_database/tinysnb.db | Bin .../test/test_files/duckdb.test} | 20 +++++++------- .../CMakeLists.txt | 26 +++++++++--------- .../src/include/postgres_catalog.h | 10 +++---- .../src/include/postgres_extension.h} | 6 ++-- .../src/include/postgres_functions.h | 4 +-- .../src/include/postgres_storage.h | 4 +-- .../src/postgres_catalog.cpp | 4 +-- .../src/postgres_extension.cpp} | 10 +++---- .../src/postgres_functions.cpp | 8 +++--- .../src/postgres_storage.cpp | 4 +-- .../test/test_files/create_test_db.sql | 0 .../test/test_files/postgres.test} | 4 +-- .../operator/simple/attach_database.cpp | 4 +-- .../extension/show_attached_databases.test | 8 +++--- 36 files changed, 114 insertions(+), 114 deletions(-) rename extension/{duckdb_scanner => duckdb}/CMakeLists.txt (84%) rename extension/{duckdb_scanner => duckdb}/src/duckdb_catalog.cpp (94%) rename extension/{duckdb_scanner/src/duckdb_scanner_extension.cpp => duckdb/src/duckdb_extension.cpp} (72%) rename extension/{duckdb_scanner => duckdb}/src/duckdb_functions.cpp (96%) rename extension/{duckdb_scanner => duckdb}/src/duckdb_scan.cpp (99%) rename extension/{duckdb_scanner => duckdb}/src/duckdb_storage.cpp (96%) rename extension/{duckdb_scanner => duckdb}/src/duckdb_table_catalog_entry.cpp (100%) rename extension/{duckdb_scanner => duckdb}/src/duckdb_type_converter.cpp (99%) rename extension/{duckdb_scanner => duckdb}/src/include/duckdb_catalog.h (97%) rename extension/{duckdb_scanner/src/include/duckdb_scanner_extension.h => duckdb/src/include/duckdb_extension.h} (54%) rename extension/{duckdb_scanner => duckdb}/src/include/duckdb_functions.h (94%) rename extension/{duckdb_scanner => duckdb}/src/include/duckdb_scan.h (96%) rename extension/{duckdb_scanner => duckdb}/src/include/duckdb_storage.h (86%) rename extension/{duckdb_scanner => duckdb}/src/include/duckdb_table_catalog_entry.h (100%) rename extension/{duckdb_scanner => duckdb}/src/include/duckdb_type_converter.h (86%) rename extension/{duckdb_scanner => duckdb}/test/duckdb_database/dbfilewithoutext (100%) rename extension/{duckdb_scanner => duckdb}/test/duckdb_database/other.db (100%) rename extension/{duckdb_scanner => duckdb}/test/duckdb_database/tinysnb.db (100%) rename extension/{duckdb_scanner/test/test_files/duckdb_scanner.test => duckdb/test/test_files/duckdb.test} (88%) rename extension/{postgres_scanner => postgres}/CMakeLists.txt (75%) rename extension/{postgres_scanner => postgres}/src/include/postgres_catalog.h (84%) rename extension/{postgres_scanner/src/include/postgres_scanner_extension.h => postgres/src/include/postgres_extension.h} (53%) rename extension/{postgres_scanner => postgres}/src/include/postgres_functions.h (80%) rename extension/{postgres_scanner => postgres}/src/include/postgres_storage.h (84%) rename extension/{postgres_scanner => postgres}/src/postgres_catalog.cpp (96%) rename extension/{postgres_scanner/src/postgres_scanner_extension.cpp => postgres/src/postgres_extension.cpp} (71%) rename extension/{postgres_scanner => postgres}/src/postgres_functions.cpp (89%) rename extension/{postgres_scanner => postgres}/src/postgres_storage.cpp (96%) rename extension/{postgres_scanner => postgres}/test/test_files/create_test_db.sql (100%) rename extension/{postgres_scanner/test/test_files/postgres_scanner.test => postgres/test/test_files/postgres.test} (98%) diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index 67389aa917..7d17ee2ae9 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -497,13 +497,13 @@ jobs: - uses: actions/checkout@v3 - name: Update PostgreSQL host - working-directory: extension/postgres_scanner/test/test_files + working-directory: extension/postgres/test/test_files env: - FNAME: postgres_scanner.test + FNAME: postgres.test FIND: "localhost" run: | node -e 'fs=require("fs");fs.readFile(process.env.FNAME,"utf8",(err,data)=>{if(err!=null)throw err;fs.writeFile(process.env.FNAME,data.replaceAll(process.env.FIND,process.env.PG_HOST),"utf8",e=>{if(e!=null)throw e;});});' - cat postgres_scanner.test + cat postgres.test - name: Install dependencies run: pip install rangehttpserver @@ -533,13 +533,13 @@ jobs: - uses: actions/checkout@v3 - name: Update PostgreSQL host - working-directory: extension/postgres_scanner/test/test_files + working-directory: extension/postgres/test/test_files env: - FNAME: postgres_scanner.test + FNAME: postgres.test FIND: "localhost" run: | node -e 'fs=require("fs");fs.readFile(process.env.FNAME,"utf8",(err,data)=>{if(err!=null)throw err;fs.writeFile(process.env.FNAME,data.replaceAll(process.env.FIND,process.env.PG_HOST),"utf8",e=>{if(e!=null)throw e;});});' - cat postgres_scanner.test + cat postgres.test - name: Install dependencies run: pip3 install --break-system-packages rangehttpserver @@ -575,13 +575,13 @@ jobs: run: pip install rangehttpserver - name: Update PostgreSQL host - working-directory: extension/postgres_scanner/test/test_files + working-directory: extension/postgres/test/test_files env: - FNAME: postgres_scanner.test + FNAME: postgres.test FIND: "localhost" run: | node -e 'fs=require("fs");fs.readFile(process.env.FNAME,"utf8",(err,data)=>{if(err!=null)throw err;fs.writeFile(process.env.FNAME,data.replaceAll(process.env.FIND,process.env.PG_HOST),"utf8",e=>{if(e!=null)throw e;});});' - cat postgres_scanner.test + cat postgres.test - name: Extension test shell: cmd diff --git a/CMakeLists.txt b/CMakeLists.txt index f8df259511..d37ba66b06 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -217,7 +217,7 @@ add_subdirectory(third_party) if(${BUILD_KUZU}) add_definitions(-DKUZU_ROOT_DIRECTORY="${PROJECT_SOURCE_DIR}") add_definitions(-DKUZU_CMAKE_VERSION="${CMAKE_PROJECT_VERSION}") -add_definitions(-DKUZU_EXTENSION_VERSION="0.2.8") +add_definitions(-DKUZU_EXTENSION_VERSION="0.2.9") include_directories(src/include) diff --git a/Makefile b/Makefile index dcf69fb6a9..4099cc7d9a 100644 --- a/Makefile +++ b/Makefile @@ -64,7 +64,7 @@ allconfig: $(call config-cmake-release, \ -DBUILD_BENCHMARK=TRUE \ -DBUILD_EXAMPLES=TRUE \ - -DBUILD_EXTENSIONS="httpfs;duckdb_scanner;postgres_scanner" \ + -DBUILD_EXTENSIONS="httpfs;duckdb;postgres" \ -DBUILD_JAVA=TRUE \ -DBUILD_NODEJS=TRUE \ -DBUILD_PYTHON=TRUE \ @@ -79,7 +79,7 @@ alldebug: $(call run-cmake-debug, \ -DBUILD_BENCHMARK=TRUE \ -DBUILD_EXAMPLES=TRUE \ - -DBUILD_EXTENSIONS="httpfs;duckdb_scanner;postgres_scanner" \ + -DBUILD_EXTENSIONS="httpfs;duckdb;postgres" \ -DBUILD_JAVA=TRUE \ -DBUILD_NODEJS=TRUE \ -DBUILD_PYTHON=TRUE \ @@ -162,7 +162,7 @@ example: extension-test: $(call run-cmake-release, \ - -DBUILD_EXTENSIONS="httpfs;duckdb_scanner;postgres_scanner" \ + -DBUILD_EXTENSIONS="httpfs;duckdb;postgres" \ -DBUILD_EXTENSION_TESTS=TRUE \ -DENABLE_ADDRESS_SANITIZER=TRUE \ ) @@ -171,13 +171,13 @@ extension-test: extension-debug: $(call run-cmake-debug, \ - -DBUILD_EXTENSIONS="httpfs;duckdb_scanner;postgres_scanner" \ + -DBUILD_EXTENSIONS="httpfs;duckdb;postgres" \ -DBUILD_KUZU=FALSE \ ) extension-release: $(call run-cmake-release, \ - -DBUILD_EXTENSIONS="httpfs;duckdb_scanner;postgres_scanner" \ + -DBUILD_EXTENSIONS="httpfs;duckdb;postgres" \ -DBUILD_KUZU=FALSE \ ) diff --git a/extension/CMakeLists.txt b/extension/CMakeLists.txt index c2db4fd6f2..e994967eac 100644 --- a/extension/CMakeLists.txt +++ b/extension/CMakeLists.txt @@ -2,19 +2,19 @@ if("httpfs" IN_LIST BUILD_EXTENSIONS) add_subdirectory(httpfs) endif() -if ("duckdb_scanner" IN_LIST BUILD_EXTENSIONS) +if ("duckdb" IN_LIST BUILD_EXTENSIONS) if(NOT __32BIT__) # DuckDB does not officially support 32-bit builds, so we disable the # extension for 32-bit builds - add_subdirectory(duckdb_scanner) + add_subdirectory(duckdb) endif() endif() -if ("postgres_scanner" IN_LIST BUILD_EXTENSIONS) +if ("postgres" IN_LIST BUILD_EXTENSIONS) if(NOT __32BIT__) # DuckDB does not officially support 32-bit builds, so we disable the # extension for 32-bit builds - add_subdirectory(postgres_scanner) + add_subdirectory(postgres) endif() endif() diff --git a/extension/duckdb_scanner/CMakeLists.txt b/extension/duckdb/CMakeLists.txt similarity index 84% rename from extension/duckdb_scanner/CMakeLists.txt rename to extension/duckdb/CMakeLists.txt index c5a54606cd..1e85361f1a 100644 --- a/extension/duckdb_scanner/CMakeLists.txt +++ b/extension/duckdb/CMakeLists.txt @@ -15,9 +15,9 @@ include_directories( src/include ${DuckDB_INCLUDE_DIRS}) -add_library(duckdb_scanner +add_library(duckdb_extension SHARED - src/duckdb_scanner_extension.cpp + src/duckdb_extension.cpp src/duckdb_storage.cpp src/duckdb_scan.cpp src/duckdb_type_converter.cpp @@ -25,19 +25,19 @@ add_library(duckdb_scanner src/duckdb_table_catalog_entry.cpp src/duckdb_functions.cpp) -set_target_properties(duckdb_scanner +set_target_properties(duckdb_extension PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/build" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/build" RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/build" ) -target_link_libraries(duckdb_scanner +target_link_libraries(duckdb_extension PRIVATE ${DuckDB_LIBRARIES}) -set_target_properties(duckdb_scanner PROPERTIES - OUTPUT_NAME duckdb_scanner +set_target_properties(duckdb_extension PROPERTIES + OUTPUT_NAME duckdb PREFIX "lib" SUFFIX ".kuzu_extension" ) @@ -59,9 +59,9 @@ if (WIN32) # for its small libraries anyways... # Future work could make it possible to embed extension into kuzu, # which would help fix this problem. - target_link_libraries(duckdb_scanner PRIVATE kuzu) + target_link_libraries(duckdb_extension PRIVATE kuzu) endif() if (APPLE) - set_target_properties(duckdb_scanner PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") + set_target_properties(duckdb_extension PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") endif () diff --git a/extension/duckdb_scanner/src/duckdb_catalog.cpp b/extension/duckdb/src/duckdb_catalog.cpp similarity index 94% rename from extension/duckdb_scanner/src/duckdb_catalog.cpp rename to extension/duckdb/src/duckdb_catalog.cpp index e35a9dc66a..c8af283863 100644 --- a/extension/duckdb_scanner/src/duckdb_catalog.cpp +++ b/extension/duckdb/src/duckdb_catalog.cpp @@ -7,7 +7,7 @@ #include "duckdb_type_converter.h" namespace kuzu { -namespace duckdb_scanner { +namespace duckdb_extension { void DuckDBCatalog::init() { auto [db, con] = getConnection(dbPath); @@ -25,8 +25,8 @@ void DuckDBCatalog::init() { if (resultChunk == nullptr || resultChunk->size() == 0) { return; } - duckdb_scanner::duckdb_conversion_func_t conversionFunc; - duckdb_scanner::getDuckDBVectorConversionFunc(common::PhysicalTypeID::STRING, conversionFunc); + duckdb_extension::duckdb_conversion_func_t conversionFunc; + duckdb_extension::getDuckDBVectorConversionFunc(common::PhysicalTypeID::STRING, conversionFunc); conversionFunc(resultChunk->data[0], tableNamesVector, resultChunk->size()); for (auto i = 0u; i < resultChunk->size(); i++) { auto tableName = tableNamesVector.getValue(i).getAsString(); @@ -114,7 +114,7 @@ std::unique_ptr DuckDBCatalog::bindCreateTableInfo return nullptr; } return std::make_unique(common::TableType::FOREIGN, tableName, - std::make_unique(dbPath, catalogName, + std::make_unique(dbPath, catalogName, getDefaultSchemaName(), std::move(propertyInfos))); } @@ -133,5 +133,5 @@ std::pair DuckDBCatalog::getConnection( } } -} // namespace duckdb_scanner +} // namespace duckdb_extension } // namespace kuzu diff --git a/extension/duckdb_scanner/src/duckdb_scanner_extension.cpp b/extension/duckdb/src/duckdb_extension.cpp similarity index 72% rename from extension/duckdb_scanner/src/duckdb_scanner_extension.cpp rename to extension/duckdb/src/duckdb_extension.cpp index 35e76a0998..f251a6040d 100644 --- a/extension/duckdb_scanner/src/duckdb_scanner_extension.cpp +++ b/extension/duckdb/src/duckdb_extension.cpp @@ -1,17 +1,17 @@ -#include "duckdb_scanner_extension.h" +#include "duckdb_extension.h" #include "duckdb_storage.h" #include "main/database.h" namespace kuzu { -namespace duckdb_scanner { +namespace duckdb_extension { -void DuckDBScannerExtension::load(main::ClientContext* context) { +void DuckDBExtension::load(main::ClientContext* context) { auto db = context->getDatabase(); db->registerStorageExtension("duckdb", std::make_unique(db)); } -} // namespace duckdb_scanner +} // namespace duckdb_extension } // namespace kuzu extern "C" { @@ -23,6 +23,6 @@ extern "C" { #define INIT_EXPORT __attribute__((visibility("default"))) #endif INIT_EXPORT void init(kuzu::main::ClientContext* context) { - kuzu::duckdb_scanner::DuckDBScannerExtension::load(context); + kuzu::duckdb_extension::DuckDBExtension::load(context); } } diff --git a/extension/duckdb_scanner/src/duckdb_functions.cpp b/extension/duckdb/src/duckdb_functions.cpp similarity index 96% rename from extension/duckdb_scanner/src/duckdb_functions.cpp rename to extension/duckdb/src/duckdb_functions.cpp index f19602f1d3..5253e5037f 100644 --- a/extension/duckdb_scanner/src/duckdb_functions.cpp +++ b/extension/duckdb/src/duckdb_functions.cpp @@ -8,7 +8,7 @@ using namespace kuzu::main; using namespace kuzu::common; namespace kuzu { -namespace duckdb_scanner { +namespace duckdb_extension { static offset_t DuckDBClearCacheTableFunc(TableFuncInput& input, TableFuncOutput& output) { auto& dataChunk = output.dataChunk; @@ -39,5 +39,5 @@ DuckDBClearCacheFunction::DuckDBClearCacheFunction() function::CallFunction::initSharedState, function::CallFunction::initEmptyLocalState, std::vector{}} {} -} // namespace duckdb_scanner +} // namespace duckdb_extension } // namespace kuzu diff --git a/extension/duckdb_scanner/src/duckdb_scan.cpp b/extension/duckdb/src/duckdb_scan.cpp similarity index 99% rename from extension/duckdb_scanner/src/duckdb_scan.cpp rename to extension/duckdb/src/duckdb_scan.cpp index f894d46d6f..9603b226af 100644 --- a/extension/duckdb_scanner/src/duckdb_scan.cpp +++ b/extension/duckdb/src/duckdb_scan.cpp @@ -8,7 +8,7 @@ using namespace kuzu::function; using namespace kuzu::common; namespace kuzu { -namespace duckdb_scanner { +namespace duckdb_extension { void getDuckDBVectorConversionFunc(PhysicalTypeID physicalTypeID, duckdb_conversion_func_t& conversion_func); @@ -247,5 +247,5 @@ TableFunction getScanFunction(DuckDBScanBindData bindData) { std::vector{}); } -} // namespace duckdb_scanner +} // namespace duckdb_extension } // namespace kuzu diff --git a/extension/duckdb_scanner/src/duckdb_storage.cpp b/extension/duckdb/src/duckdb_storage.cpp similarity index 96% rename from extension/duckdb_scanner/src/duckdb_storage.cpp rename to extension/duckdb/src/duckdb_storage.cpp index 9569ea80a3..5a197ca036 100644 --- a/extension/duckdb_scanner/src/duckdb_storage.cpp +++ b/extension/duckdb/src/duckdb_storage.cpp @@ -10,7 +10,7 @@ #include "extension/extension.h" namespace kuzu { -namespace duckdb_scanner { +namespace duckdb_extension { static std::string getCatalogNameFromPath(const std::string& dbPath) { std::filesystem::path path(dbPath); @@ -50,5 +50,5 @@ bool DuckDBStorageExtension::canHandleDB(std::string dbType_) const { return dbType_ == dbType; } -} // namespace duckdb_scanner +} // namespace duckdb_extension } // namespace kuzu diff --git a/extension/duckdb_scanner/src/duckdb_table_catalog_entry.cpp b/extension/duckdb/src/duckdb_table_catalog_entry.cpp similarity index 100% rename from extension/duckdb_scanner/src/duckdb_table_catalog_entry.cpp rename to extension/duckdb/src/duckdb_table_catalog_entry.cpp diff --git a/extension/duckdb_scanner/src/duckdb_type_converter.cpp b/extension/duckdb/src/duckdb_type_converter.cpp similarity index 99% rename from extension/duckdb_scanner/src/duckdb_type_converter.cpp rename to extension/duckdb/src/duckdb_type_converter.cpp index f860e1b25c..8e4ae583ed 100644 --- a/extension/duckdb_scanner/src/duckdb_type_converter.cpp +++ b/extension/duckdb/src/duckdb_type_converter.cpp @@ -4,7 +4,7 @@ #include "common/string_utils.h" namespace kuzu { -namespace duckdb_scanner { +namespace duckdb_extension { using namespace kuzu::common; @@ -138,5 +138,5 @@ std::vector DuckDBTypeConverter::parseStructTypeInfo( return structFields; } -} // namespace duckdb_scanner +} // namespace duckdb_extension } // namespace kuzu diff --git a/extension/duckdb_scanner/src/include/duckdb_catalog.h b/extension/duckdb/src/include/duckdb_catalog.h similarity index 97% rename from extension/duckdb_scanner/src/include/duckdb_catalog.h rename to extension/duckdb/src/include/duckdb_catalog.h index fd0f2a5a12..e09b8d7dc0 100644 --- a/extension/duckdb_scanner/src/include/duckdb_catalog.h +++ b/extension/duckdb/src/include/duckdb_catalog.h @@ -11,7 +11,7 @@ #pragma GCC diagnostic pop namespace kuzu { -namespace duckdb_scanner { +namespace duckdb_extension { struct BoundExtraCreateDuckDBTableInfo : public binder::BoundExtraCreateTableInfo { std::string dbPath; @@ -64,5 +64,5 @@ class DuckDBCatalog : public extension::CatalogExtension { common::ValueVector tableNamesVector; }; -} // namespace duckdb_scanner +} // namespace duckdb_extension } // namespace kuzu diff --git a/extension/duckdb_scanner/src/include/duckdb_scanner_extension.h b/extension/duckdb/src/include/duckdb_extension.h similarity index 54% rename from extension/duckdb_scanner/src/include/duckdb_scanner_extension.h rename to extension/duckdb/src/include/duckdb_extension.h index 0ec4496a53..0cb2dea2be 100644 --- a/extension/duckdb_scanner/src/include/duckdb_scanner_extension.h +++ b/extension/duckdb/src/include/duckdb_extension.h @@ -3,12 +3,12 @@ #include "extension/extension.h" namespace kuzu { -namespace duckdb_scanner { +namespace duckdb_extension { -class DuckDBScannerExtension final : public extension::Extension { +class DuckDBExtension final : public extension::Extension { public: static void load(main::ClientContext* context); }; -} // namespace duckdb_scanner +} // namespace duckdb_extension } // namespace kuzu diff --git a/extension/duckdb_scanner/src/include/duckdb_functions.h b/extension/duckdb/src/include/duckdb_functions.h similarity index 94% rename from extension/duckdb_scanner/src/include/duckdb_functions.h rename to extension/duckdb/src/include/duckdb_functions.h index e1a71a7a31..73b81080b3 100644 --- a/extension/duckdb_scanner/src/include/duckdb_functions.h +++ b/extension/duckdb/src/include/duckdb_functions.h @@ -6,7 +6,7 @@ #include "main/database_manager.h" namespace kuzu { -namespace duckdb_scanner { +namespace duckdb_extension { struct DuckDBClearCacheBindData : public function::CallTableFuncBindData { main::DatabaseManager* databaseManager; @@ -29,5 +29,5 @@ struct DuckDBClearCacheFunction final : public function::TableFunction { DuckDBClearCacheFunction(); }; -} // namespace duckdb_scanner +} // namespace duckdb_extension } // namespace kuzu diff --git a/extension/duckdb_scanner/src/include/duckdb_scan.h b/extension/duckdb/src/include/duckdb_scan.h similarity index 96% rename from extension/duckdb_scanner/src/include/duckdb_scan.h rename to extension/duckdb/src/include/duckdb_scan.h index 87bca3b7e2..b791be0a76 100644 --- a/extension/duckdb_scanner/src/include/duckdb_scan.h +++ b/extension/duckdb/src/include/duckdb_scan.h @@ -13,7 +13,7 @@ #pragma GCC diagnostic pop namespace kuzu { -namespace duckdb_scanner { +namespace duckdb_extension { using duckdb_conversion_func_t = std::function; @@ -41,5 +41,5 @@ void getDuckDBVectorConversionFunc(common::PhysicalTypeID physicalTypeID, function::TableFunction getScanFunction(DuckDBScanBindData bindData); -} // namespace duckdb_scanner +} // namespace duckdb_extension } // namespace kuzu diff --git a/extension/duckdb_scanner/src/include/duckdb_storage.h b/extension/duckdb/src/include/duckdb_storage.h similarity index 86% rename from extension/duckdb_scanner/src/include/duckdb_storage.h rename to extension/duckdb/src/include/duckdb_storage.h index 577d4d15cd..43363a466f 100644 --- a/extension/duckdb_scanner/src/include/duckdb_storage.h +++ b/extension/duckdb/src/include/duckdb_storage.h @@ -4,7 +4,7 @@ #include "storage/storage_extension.h" namespace kuzu { -namespace duckdb_scanner { +namespace duckdb_extension { class DuckDBStorageExtension final : public storage::StorageExtension { public: @@ -15,5 +15,5 @@ class DuckDBStorageExtension final : public storage::StorageExtension { bool canHandleDB(std::string dbType) const override; }; -} // namespace duckdb_scanner +} // namespace duckdb_extension } // namespace kuzu diff --git a/extension/duckdb_scanner/src/include/duckdb_table_catalog_entry.h b/extension/duckdb/src/include/duckdb_table_catalog_entry.h similarity index 100% rename from extension/duckdb_scanner/src/include/duckdb_table_catalog_entry.h rename to extension/duckdb/src/include/duckdb_table_catalog_entry.h diff --git a/extension/duckdb_scanner/src/include/duckdb_type_converter.h b/extension/duckdb/src/include/duckdb_type_converter.h similarity index 86% rename from extension/duckdb_scanner/src/include/duckdb_type_converter.h rename to extension/duckdb/src/include/duckdb_type_converter.h index 5c4de9e992..0a15681eb9 100644 --- a/extension/duckdb_scanner/src/include/duckdb_type_converter.h +++ b/extension/duckdb/src/include/duckdb_type_converter.h @@ -3,7 +3,7 @@ #include "common/types/types.h" namespace kuzu { -namespace duckdb_scanner { +namespace duckdb_extension { class DuckDBTypeConverter { public: @@ -14,5 +14,5 @@ class DuckDBTypeConverter { static std::vector parseStructTypeInfo(const std::string& structTypeStr); }; -} // namespace duckdb_scanner +} // namespace duckdb_extension } // namespace kuzu diff --git a/extension/duckdb_scanner/test/duckdb_database/dbfilewithoutext b/extension/duckdb/test/duckdb_database/dbfilewithoutext similarity index 100% rename from extension/duckdb_scanner/test/duckdb_database/dbfilewithoutext rename to extension/duckdb/test/duckdb_database/dbfilewithoutext diff --git a/extension/duckdb_scanner/test/duckdb_database/other.db b/extension/duckdb/test/duckdb_database/other.db similarity index 100% rename from extension/duckdb_scanner/test/duckdb_database/other.db rename to extension/duckdb/test/duckdb_database/other.db diff --git a/extension/duckdb_scanner/test/duckdb_database/tinysnb.db b/extension/duckdb/test/duckdb_database/tinysnb.db similarity index 100% rename from extension/duckdb_scanner/test/duckdb_database/tinysnb.db rename to extension/duckdb/test/duckdb_database/tinysnb.db diff --git a/extension/duckdb_scanner/test/test_files/duckdb_scanner.test b/extension/duckdb/test/test_files/duckdb.test similarity index 88% rename from extension/duckdb_scanner/test/test_files/duckdb_scanner.test rename to extension/duckdb/test/test_files/duckdb.test index ec84ebc91f..426fcc8f66 100644 --- a/extension/duckdb_scanner/test/test_files/duckdb_scanner.test +++ b/extension/duckdb/test/test_files/duckdb.test @@ -1,12 +1,12 @@ --GROUP DuckDBScanner +-GROUP DuckDBExtension -DATASET CSV empty -- -CASE ScanDuckDBTable --STATEMENT load extension "${KUZU_ROOT_DIRECTORY}/extension/duckdb_scanner/build/libduckdb_scanner.kuzu_extension" +-STATEMENT load extension "${KUZU_ROOT_DIRECTORY}/extension/duckdb/build/libduckdb.kuzu_extension" ---- ok --STATEMENT ATTACH '${KUZU_ROOT_DIRECTORY}/extension/duckdb_scanner/test/duckdb_database/tinysnb.db' as tinysnb (dbtype 'duckdb'); +-STATEMENT ATTACH '${KUZU_ROOT_DIRECTORY}/extension/duckdb/test/duckdb_database/tinysnb.db' as tinysnb (dbtype 'duckdb'); ---- 1 Attached database successfully. -STATEMENT LOAD FROM tinysnb.person RETURN *; @@ -46,10 +46,10 @@ Detached database successfully. ---- error Binder exception: No database named tinysnb has been attached. -LOG AttachMultipleDuckDB --STATEMENT ATTACH '${KUZU_ROOT_DIRECTORY}/extension/duckdb_scanner/test/duckdb_database/tinysnb.db' (dbtype 'duckdb'); +-STATEMENT ATTACH '${KUZU_ROOT_DIRECTORY}/extension/duckdb/test/duckdb_database/tinysnb.db' (dbtype 'duckdb'); ---- 1 Attached database successfully. --STATEMENT ATTACH '${KUZU_ROOT_DIRECTORY}/extension/duckdb_scanner/test/duckdb_database/other.db' as Other1 (dbtype 'duckdb'); +-STATEMENT ATTACH '${KUZU_ROOT_DIRECTORY}/extension/duckdb/test/duckdb_database/other.db' as Other1 (dbtype 'duckdb'); ---- 1 Attached database successfully. -STATEMENT LOAD FROM other1.person RETURN *; @@ -100,16 +100,16 @@ Binder exception: Variable tinysnb1_person is not in scope. Runtime exception: No database named NONEXIST. -CASE ScanDuckdbDatabaseWithoutExt --STATEMENT load extension "${KUZU_ROOT_DIRECTORY}/extension/duckdb_scanner/build/libduckdb_scanner.kuzu_extension" +-STATEMENT load extension "${KUZU_ROOT_DIRECTORY}/extension/duckdb/build/libduckdb.kuzu_extension" ---- ok --STATEMENT ATTACH '${KUZU_ROOT_DIRECTORY}/extension/duckdb_scanner/test/duckdb_database/dbfilewithoutext' (dbtype 'duckdb'); +-STATEMENT ATTACH '${KUZU_ROOT_DIRECTORY}/extension/duckdb/test/duckdb_database/dbfilewithoutext' (dbtype 'duckdb'); ---- ok -STATEMENT LOAD FROM dbfilewithoutext.persons RETURN * ---- 2 Jeff|32 Wendy|28 -LOG AttachSameDBError --STATEMENT ATTACH '${KUZU_ROOT_DIRECTORY}/extension/duckdb_scanner/test/duckdb_database/dbfilewithoutext' (dbtype 'duckdb'); +-STATEMENT ATTACH '${KUZU_ROOT_DIRECTORY}/extension/duckdb/test/duckdb_database/dbfilewithoutext' (dbtype 'duckdb'); ---- error Runtime exception: Database with name: dbfilewithoutext has already been attached. -LOG DetachExistDB @@ -129,12 +129,12 @@ Runtime exception: 'notexist.db' is not a valid duckdb database path. ---- error Runtime exception: No loaded extension can handle database type: duckdb. Did you forget to load duckdb extension? -You can load it by: load extension duckdb_scanner; +You can load it by: load extension duckdb; -STATEMENT ATTACH 'notexist.db' (dbtype 'postgres'); ---- error Runtime exception: No loaded extension can handle database type: postgres. Did you forget to load postgres extension? -You can load it by: load extension postgres_scanner; +You can load it by: load extension postgres; -STATEMENT ATTACH 'notexist.db' (dbtype 'sqlite'); ---- error Runtime exception: No loaded extension can handle database type: sqlite. diff --git a/extension/postgres_scanner/CMakeLists.txt b/extension/postgres/CMakeLists.txt similarity index 75% rename from extension/postgres_scanner/CMakeLists.txt rename to extension/postgres/CMakeLists.txt index 5355007ae9..8cced4f631 100644 --- a/extension/postgres_scanner/CMakeLists.txt +++ b/extension/postgres/CMakeLists.txt @@ -10,37 +10,37 @@ if(NOT WIN32) find_library(DuckDB_STATIC REQUIRED NAMES libduckdb_static.a) endif() -add_library(postgres_scanner +add_library(postgres_extension SHARED - ../duckdb_scanner/src/duckdb_scan.cpp - ../duckdb_scanner/src/duckdb_catalog.cpp - ../duckdb_scanner/src/duckdb_table_catalog_entry.cpp - ../duckdb_scanner/src/duckdb_type_converter.cpp - src/postgres_scanner_extension.cpp + ../duckdb/src/duckdb_scan.cpp + ../duckdb/src/duckdb_catalog.cpp + ../duckdb/src/duckdb_table_catalog_entry.cpp + ../duckdb/src/duckdb_type_converter.cpp + src/postgres_extension.cpp src/postgres_storage.cpp src/postgres_catalog.cpp src/postgres_functions.cpp) include_directories( src/include - ../duckdb_scanner/src/include + ../duckdb/src/include ${DuckDB_INCLUDE_DIRS} ${PROJECT_SOURCE_DIR}/src/include) -set_target_properties(postgres_scanner PROPERTIES - OUTPUT_NAME postgres_scanner +set_target_properties(postgres_extension PROPERTIES + OUTPUT_NAME postgres PREFIX "lib" SUFFIX ".kuzu_extension" ) -set_target_properties(postgres_scanner +set_target_properties(postgres_extension PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/build" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/build" RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/build" ) -target_link_libraries(postgres_scanner +target_link_libraries(postgres_extension PRIVATE ${DuckDB_LIBRARIES}) @@ -61,9 +61,9 @@ if (WIN32) # for its small libraries anyways... # Future work could make it possible to embed extension into kuzu, # which would help fix this problem. - target_link_libraries(postgres_scanner PRIVATE kuzu) + target_link_libraries(postgres_extension PRIVATE kuzu) endif() if (APPLE) - set_target_properties(postgres_scanner PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") + set_target_properties(postgres_extension PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") endif () diff --git a/extension/postgres_scanner/src/include/postgres_catalog.h b/extension/postgres/src/include/postgres_catalog.h similarity index 84% rename from extension/postgres_scanner/src/include/postgres_catalog.h rename to extension/postgres/src/include/postgres_catalog.h index ac47f09f63..5570c01264 100644 --- a/extension/postgres_scanner/src/include/postgres_catalog.h +++ b/extension/postgres/src/include/postgres_catalog.h @@ -3,10 +3,10 @@ #include "duckdb_catalog.h" namespace kuzu { -namespace postgres_scanner { +namespace postgres_extension { struct BoundExtraCreatePostgresTableInfo final - : public duckdb_scanner::BoundExtraCreateDuckDBTableInfo { + : public duckdb_extension::BoundExtraCreateDuckDBTableInfo { std::string pgConnectionStr; BoundExtraCreatePostgresTableInfo(std::string pgConnectionStr, std::string dbPath, @@ -25,10 +25,10 @@ struct BoundExtraCreatePostgresTableInfo final } }; -class PostgresCatalog final : public duckdb_scanner::DuckDBCatalog { +class PostgresCatalog final : public duckdb_extension::DuckDBCatalog { public: PostgresCatalog(std::string dbPath, std::string /*catalogName*/, main::ClientContext* context) - : duckdb_scanner::DuckDBCatalog{std::move(dbPath), DEFAULT_CATALOG_NAME, context} {} + : duckdb_extension::DuckDBCatalog{std::move(dbPath), DEFAULT_CATALOG_NAME, context} {} private: std::unique_ptr bindCreateTableInfo(duckdb::Connection& con, @@ -45,5 +45,5 @@ class PostgresCatalog final : public duckdb_scanner::DuckDBCatalog { static constexpr char DEFAULT_SCHEMA_NAME[] = "public"; }; -} // namespace postgres_scanner +} // namespace postgres_extension } // namespace kuzu diff --git a/extension/postgres_scanner/src/include/postgres_scanner_extension.h b/extension/postgres/src/include/postgres_extension.h similarity index 53% rename from extension/postgres_scanner/src/include/postgres_scanner_extension.h rename to extension/postgres/src/include/postgres_extension.h index f8aef09eed..d00e7f69ae 100644 --- a/extension/postgres_scanner/src/include/postgres_scanner_extension.h +++ b/extension/postgres/src/include/postgres_extension.h @@ -3,12 +3,12 @@ #include "extension/extension.h" namespace kuzu { -namespace postgres_scanner { +namespace postgres_extension { -class PostgresScannerExtension final : public extension::Extension { +class PostgresExtension final : public extension::Extension { public: static void load(main::ClientContext* context); }; -} // namespace postgres_scanner +} // namespace postgres_extension } // namespace kuzu diff --git a/extension/postgres_scanner/src/include/postgres_functions.h b/extension/postgres/src/include/postgres_functions.h similarity index 80% rename from extension/postgres_scanner/src/include/postgres_functions.h rename to extension/postgres/src/include/postgres_functions.h index ad34dfe5ac..4293a71c0f 100644 --- a/extension/postgres_scanner/src/include/postgres_functions.h +++ b/extension/postgres/src/include/postgres_functions.h @@ -3,7 +3,7 @@ #include "function/table_functions.h" namespace kuzu { -namespace postgres_scanner { +namespace postgres_extension { struct PostgresClearCacheFunction final : public function::TableFunction { static constexpr const char* name = "postgres_clear_cache"; @@ -11,5 +11,5 @@ struct PostgresClearCacheFunction final : public function::TableFunction { PostgresClearCacheFunction(); }; -} // namespace postgres_scanner +} // namespace postgres_extension } // namespace kuzu diff --git a/extension/postgres_scanner/src/include/postgres_storage.h b/extension/postgres/src/include/postgres_storage.h similarity index 84% rename from extension/postgres_scanner/src/include/postgres_storage.h rename to extension/postgres/src/include/postgres_storage.h index 8bd3cae2bc..d3c0247124 100644 --- a/extension/postgres_scanner/src/include/postgres_storage.h +++ b/extension/postgres/src/include/postgres_storage.h @@ -3,7 +3,7 @@ #include "storage/storage_extension.h" namespace kuzu { -namespace postgres_scanner { +namespace postgres_extension { class PostgresStorageExtension final : public storage::StorageExtension { public: @@ -14,5 +14,5 @@ class PostgresStorageExtension final : public storage::StorageExtension { bool canHandleDB(std::string dbType) const override; }; -} // namespace postgres_scanner +} // namespace postgres_extension } // namespace kuzu diff --git a/extension/postgres_scanner/src/postgres_catalog.cpp b/extension/postgres/src/postgres_catalog.cpp similarity index 96% rename from extension/postgres_scanner/src/postgres_catalog.cpp rename to extension/postgres/src/postgres_catalog.cpp index 903f87db73..63beda5a58 100644 --- a/extension/postgres_scanner/src/postgres_catalog.cpp +++ b/extension/postgres/src/postgres_catalog.cpp @@ -3,7 +3,7 @@ #include "common/exception/runtime.h" namespace kuzu { -namespace postgres_scanner { +namespace postgres_extension { std::string PostgresCatalog::getDefaultSchemaName() const { return DEFAULT_SCHEMA_NAME; @@ -41,5 +41,5 @@ std::pair PostgresCatalog::getConnection( return std::make_pair(std::move(db), std::move(con)); } -} // namespace postgres_scanner +} // namespace postgres_extension } // namespace kuzu diff --git a/extension/postgres_scanner/src/postgres_scanner_extension.cpp b/extension/postgres/src/postgres_extension.cpp similarity index 71% rename from extension/postgres_scanner/src/postgres_scanner_extension.cpp rename to extension/postgres/src/postgres_extension.cpp index 5ce5cce3ea..3de593c07d 100644 --- a/extension/postgres_scanner/src/postgres_scanner_extension.cpp +++ b/extension/postgres/src/postgres_extension.cpp @@ -1,17 +1,17 @@ -#include "postgres_scanner_extension.h" +#include "postgres_extension.h" #include "main/database.h" #include "postgres_storage.h" namespace kuzu { -namespace postgres_scanner { +namespace postgres_extension { -void PostgresScannerExtension::load(main::ClientContext* context) { +void PostgresExtension::load(main::ClientContext* context) { auto db = context->getDatabase(); db->registerStorageExtension("postgres", std::make_unique(db)); } -} // namespace postgres_scanner +} // namespace postgres_extension } // namespace kuzu extern "C" { @@ -23,6 +23,6 @@ extern "C" { #define INIT_EXPORT __attribute__((visibility("default"))) #endif INIT_EXPORT void init(kuzu::main::ClientContext* context) { - kuzu::postgres_scanner::PostgresScannerExtension::load(context); + kuzu::postgres_extension::PostgresExtension::load(context); } } diff --git a/extension/postgres_scanner/src/postgres_functions.cpp b/extension/postgres/src/postgres_functions.cpp similarity index 89% rename from extension/postgres_scanner/src/postgres_functions.cpp rename to extension/postgres/src/postgres_functions.cpp index a16c4dba5e..f94359b627 100644 --- a/extension/postgres_scanner/src/postgres_functions.cpp +++ b/extension/postgres/src/postgres_functions.cpp @@ -8,9 +8,9 @@ using namespace kuzu::main; using namespace kuzu::common; namespace kuzu { -namespace postgres_scanner { +namespace postgres_extension { -struct PostgresClearCacheBindData : public duckdb_scanner::DuckDBClearCacheBindData { +struct PostgresClearCacheBindData : public duckdb_extension::DuckDBClearCacheBindData { PostgresClearCacheBindData(DatabaseManager* databaseManager, std::vector returnTypes, std::vector returnColumnNames, @@ -31,7 +31,7 @@ static offset_t postgresClearCacheTableFunc(TableFuncInput& input, TableFuncOutp if (!morsel.hasMoreToOutput()) { return 0; } - auto bindData = input.bindData->constPtrCast(); + auto bindData = input.bindData->constPtrCast(); bindData->databaseManager->invalidateCache(PostgresStorageExtension::dbType); dataChunk.getValueVector(0)->setValue(0, "All attached duckdb database caches have been cleared."); @@ -53,5 +53,5 @@ PostgresClearCacheFunction::PostgresClearCacheFunction() function::CallFunction::initSharedState, function::CallFunction::initEmptyLocalState, std::vector{}} {} -} // namespace postgres_scanner +} // namespace postgres_extension } // namespace kuzu diff --git a/extension/postgres_scanner/src/postgres_storage.cpp b/extension/postgres/src/postgres_storage.cpp similarity index 96% rename from extension/postgres_scanner/src/postgres_storage.cpp rename to extension/postgres/src/postgres_storage.cpp index db25c3f0dc..befd3197f7 100644 --- a/extension/postgres_scanner/src/postgres_storage.cpp +++ b/extension/postgres/src/postgres_storage.cpp @@ -10,7 +10,7 @@ #include "postgres_functions.h" namespace kuzu { -namespace postgres_scanner { +namespace postgres_extension { std::string extractDBName(const std::string& connectionInfo) { std::regex pattern("dbname=([^ ]+)"); @@ -45,5 +45,5 @@ bool PostgresStorageExtension::canHandleDB(std::string dbType_) const { return dbType_ == dbType; } -} // namespace postgres_scanner +} // namespace postgres_extension } // namespace kuzu diff --git a/extension/postgres_scanner/test/test_files/create_test_db.sql b/extension/postgres/test/test_files/create_test_db.sql similarity index 100% rename from extension/postgres_scanner/test/test_files/create_test_db.sql rename to extension/postgres/test/test_files/create_test_db.sql diff --git a/extension/postgres_scanner/test/test_files/postgres_scanner.test b/extension/postgres/test/test_files/postgres.test similarity index 98% rename from extension/postgres_scanner/test/test_files/postgres_scanner.test rename to extension/postgres/test/test_files/postgres.test index e31f272f7f..ec33ba2f98 100644 --- a/extension/postgres_scanner/test/test_files/postgres_scanner.test +++ b/extension/postgres/test/test_files/postgres.test @@ -1,10 +1,10 @@ --GROUP PostgresScanner +-GROUP PostgresExtension -DATASET CSV empty -- -CASE ScanPostgresTable --STATEMENT load extension "${KUZU_ROOT_DIRECTORY}/extension/postgres_scanner/build/libpostgres_scanner.kuzu_extension" +-STATEMENT load extension "${KUZU_ROOT_DIRECTORY}/extension/postgres/build/libpostgres.kuzu_extension" ---- ok -STATEMENT ATTACH 'dbname=pgscan user=ci host=localhost' as tinysnb (dbtype 'POSTGRES'); ---- ok diff --git a/src/processor/operator/simple/attach_database.cpp b/src/processor/operator/simple/attach_database.cpp index 8214b1eb4d..cb5c6fa712 100644 --- a/src/processor/operator/simple/attach_database.cpp +++ b/src/processor/operator/simple/attach_database.cpp @@ -21,10 +21,10 @@ void AttachDatabase::executeInternal(ExecutionContext* context) { attachInfo.dbType); if (attachInfo.dbType == "duckdb") { errMsg += "\nDid you forget to load duckdb extension?\nYou can load it by: load " - "extension duckdb_scanner;"; + "extension duckdb;"; } else if (attachInfo.dbType == "postgres") { errMsg += "\nDid you forget to load postgres extension?\nYou can load it by: load " - "extension postgres_scanner;"; + "extension postgres;"; } throw common::RuntimeException{errMsg}; } diff --git a/test/test_files/extension/show_attached_databases.test b/test/test_files/extension/show_attached_databases.test index 867da63faf..48c8043392 100644 --- a/test/test_files/extension/show_attached_databases.test +++ b/test/test_files/extension/show_attached_databases.test @@ -6,13 +6,13 @@ -CASE ShowDatabasesTest -SKIP_MUSL -LOG InstallExtension --STATEMENT INSTALL duckdb_scanner; +-STATEMENT INSTALL duckdb; ---- ok --STATEMENT LOAD EXTENSION duckdb_scanner; +-STATEMENT LOAD EXTENSION duckdb; ---- ok --STATEMENT ATTACH '${KUZU_ROOT_DIRECTORY}/extension/duckdb_scanner/test/duckdb_database/tinysnb.db' (dbtype 'duckdb'); +-STATEMENT ATTACH '${KUZU_ROOT_DIRECTORY}/extension/duckdb/test/duckdb_database/tinysnb.db' (dbtype 'duckdb'); ---- ok --STATEMENT ATTACH '${KUZU_ROOT_DIRECTORY}/extension/duckdb_scanner/test/duckdb_database/dbfilewithoutext' (dbtype 'duckdb'); +-STATEMENT ATTACH '${KUZU_ROOT_DIRECTORY}/extension/duckdb/test/duckdb_database/dbfilewithoutext' (dbtype 'duckdb'); ---- ok -STATEMENT CALL show_attached_databases() RETURN *; ---- 2