Skip to content

Commit 329dd2a

Browse files
authored
Merge branch 'main' into pk-mor-read-opt
2 parents 8b44a7f + 0dbbda6 commit 329dd2a

400 files changed

Lines changed: 11733 additions & 2471 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CMakeLists.txt

Lines changed: 47 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
4545
option(PAIMON_BUILD_STATIC "Build static library" ON)
4646
option(PAIMON_BUILD_SHARED "Build shared library" ON)
4747
option(PAIMON_BUILD_TESTS "Build tests" OFF)
48+
option(PAIMON_BUILD_BENCHMARKS "Build benchmarks" OFF)
4849
option(PAIMON_USE_ASAN "Use Address Sanitizer" OFF)
4950
option(PAIMON_USE_UBSAN "Use Undefined Behavior Sanitizer" OFF)
5051
option(PAIMON_USE_CXX11_ABI "Use C++11 ABI" ON)
@@ -96,9 +97,9 @@ set(PAIMON_SOURCE_DIR ${PROJECT_SOURCE_DIR})
9697
set(PAIMON_BINARY_DIR ${PROJECT_BINARY_DIR})
9798
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules")
9899
set(BUILD_SUPPORT_DIR "${CMAKE_SOURCE_DIR}/build_support")
99-
set(PAIMON_CMAKE_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
100100

101101
include(GNUInstallDirs)
102+
set(PAIMON_CMAKE_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/Paimon")
102103
include(DefineOptions)
103104

104105
if(PAIMON_OPTIONAL_INSTALL)
@@ -354,6 +355,29 @@ endif()
354355
355356
set(ENV{PAIMON_TEST_DATA} "${CMAKE_SOURCE_DIR}/test/test_data")
356357
358+
if(PAIMON_BUILD_TESTS OR PAIMON_BUILD_BENCHMARKS)
359+
resolve_dependency(GTest)
360+
include_directories(SYSTEM ${GTEST_INCLUDE_DIR})
361+
362+
paimon_link_libraries_whole_archive(PAIMON_LOCAL_FILE_SYSTEM_STATIC_LINK_LIBS
363+
paimon_local_file_system_static)
364+
paimon_link_libraries_no_as_needed(PAIMON_LOCAL_FILE_SYSTEM_SHARED_LINK_LIBS
365+
paimon_local_file_system_shared)
366+
paimon_link_libraries_whole_archive(PAIMON_BLOB_FILE_FORMAT_STATIC_LINK_LIBS
367+
paimon_blob_file_format_static)
368+
paimon_link_libraries_whole_archive(PAIMON_PARQUET_FILE_FORMAT_STATIC_LINK_LIBS
369+
paimon_parquet_file_format_static)
370+
371+
if(PAIMON_ENABLE_ORC)
372+
paimon_link_libraries_whole_archive(PAIMON_ORC_FILE_FORMAT_STATIC_LINK_LIBS
373+
paimon_orc_file_format_static)
374+
endif()
375+
if(PAIMON_ENABLE_AVRO)
376+
paimon_link_libraries_whole_archive(PAIMON_AVRO_FILE_FORMAT_STATIC_LINK_LIBS
377+
paimon_avro_file_format_static)
378+
endif()
379+
endif()
380+
357381
if(PAIMON_BUILD_TESTS)
358382
if(NOT PAIMON_ENABLE_ORC)
359383
message(FATAL_ERROR "PAIMON_ENABLE_ORC must be enabled if PAIMON_BUILD_TESTS is enable"
@@ -365,7 +389,6 @@ if(PAIMON_BUILD_TESTS)
365389
endif()
366390
# Adding unit tests part of the "paimon" portion of the test suite
367391
add_custom_target(paimon-tests)
368-
resolve_dependency(GTest)
369392
370393
add_custom_target(unittest
371394
ctest
@@ -375,7 +398,6 @@ if(PAIMON_BUILD_TESTS)
375398
--output-on-failure)
376399
add_dependencies(unittest paimon-tests)
377400
378-
include_directories(SYSTEM ${GTEST_INCLUDE_DIR})
379401
include_directories("${CMAKE_SOURCE_DIR}/test/")
380402
381403
paimon_link_libraries_whole_archive(
@@ -388,15 +410,6 @@ if(PAIMON_BUILD_TESTS)
388410
TEST_PLUGIN_LINK_LIBS paimon_parquet_file_format_shared
389411
paimon_blob_file_format_shared)
390412
set(TEST_STATIC_LINK_LIBS ${TEST_WHOLE_ARCHIVE_LINK_LIBS} ${TEST_PLUGIN_LINK_LIBS})
391-
paimon_link_libraries_whole_archive(PAIMON_LOCAL_FILE_SYSTEM_STATIC_LINK_LIBS
392-
paimon_local_file_system_static)
393-
paimon_link_libraries_no_as_needed(PAIMON_LOCAL_FILE_SYSTEM_SHARED_LINK_LIBS
394-
paimon_local_file_system_shared)
395-
paimon_link_libraries_whole_archive(PAIMON_BLOB_FILE_FORMAT_STATIC_LINK_LIBS
396-
paimon_blob_file_format_static)
397-
paimon_link_libraries_whole_archive(PAIMON_PARQUET_FILE_FORMAT_STATIC_LINK_LIBS
398-
paimon_parquet_file_format_static)
399-
400413
if(PAIMON_ENABLE_LANCE)
401414
paimon_link_libraries_whole_archive(PAIMON_LANCE_FILE_FORMAT_STATIC_LINK_LIBS
402415
paimon_lance_file_format_static)
@@ -405,15 +418,11 @@ if(PAIMON_BUILD_TESTS)
405418
list(APPEND TEST_STATIC_LINK_LIBS ${TEST_PLUGIN_LINK_LIBS})
406419
endif()
407420
if(PAIMON_ENABLE_ORC)
408-
paimon_link_libraries_whole_archive(PAIMON_ORC_FILE_FORMAT_STATIC_LINK_LIBS
409-
paimon_orc_file_format_static)
410421
paimon_link_libraries_no_as_needed(TEST_PLUGIN_LINK_LIBS
411422
paimon_orc_file_format_shared)
412423
list(APPEND TEST_STATIC_LINK_LIBS ${TEST_PLUGIN_LINK_LIBS})
413424
endif()
414425
if(PAIMON_ENABLE_AVRO)
415-
paimon_link_libraries_whole_archive(PAIMON_AVRO_FILE_FORMAT_STATIC_LINK_LIBS
416-
paimon_avro_file_format_static)
417426
paimon_link_libraries_no_as_needed(TEST_PLUGIN_LINK_LIBS
418427
paimon_avro_file_format_shared)
419428
list(APPEND TEST_STATIC_LINK_LIBS ${TEST_PLUGIN_LINK_LIBS})
@@ -441,6 +450,19 @@ if(PAIMON_BUILD_TESTS)
441450
endif()
442451
endif()
443452
453+
if(PAIMON_BUILD_BENCHMARKS)
454+
add_custom_target(paimon-benchmarks)
455+
add_custom_target(benchmark
456+
ctest
457+
-j4
458+
-L
459+
benchmark
460+
--output-on-failure)
461+
add_dependencies(benchmark paimon-benchmarks)
462+
463+
set(PAIMON_BENCHMARK_LINK_TOOLCHAIN benchmark::benchmark)
464+
endif()
465+
444466
paimon_print_dependency_resolution_summary()
445467
446468
include(CMakePackageConfigHelpers)
@@ -451,11 +473,11 @@ write_basic_package_version_file(
451473
452474
configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/PaimonConfig.cmake.in"
453475
"${CMAKE_CURRENT_BINARY_DIR}/PaimonConfig.cmake"
454-
INSTALL_DESTINATION lib/cmake/Paimon)
476+
INSTALL_DESTINATION ${PAIMON_CMAKE_INSTALL_DIR})
455477
456478
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/PaimonConfig.cmake"
457479
"${CMAKE_CURRENT_BINARY_DIR}/PaimonConfigVersion.cmake"
458-
DESTINATION lib/cmake/Paimon)
480+
DESTINATION ${PAIMON_CMAKE_INSTALL_DIR})
459481
460482
config_summary_message()
461483
@@ -472,3 +494,10 @@ add_subdirectory(src/paimon/global_index/lucene)
472494
add_subdirectory(src/paimon/testing/mock)
473495
add_subdirectory(src/paimon/testing/utils)
474496
add_subdirectory(test/inte)
497+
if(PAIMON_BUILD_BENCHMARKS)
498+
add_subdirectory(benchmark)
499+
endif()
500+
501+
install(EXPORT PaimonTargets
502+
NAMESPACE Paimon::
503+
DESTINATION ${PAIMON_CMAKE_INSTALL_DIR})

LICENSE

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,54 @@ License: https://www.apache.org/licenses/LICENSE-2.0
506506

507507
--------------------------------------------------------------------------------
508508

509+
This product includes code derived from PyTorch TH simd.h.
510+
511+
* SIMD detection code in third_party/roaring_bitmap/roaring.cpp
512+
513+
Copyright (c) 2016- Facebook, Inc (Adam Paszke)
514+
Copyright (c) 2014- Facebook, Inc (Soumith Chintala)
515+
Copyright (c) 2011-2014 Idiap Research Institute (Ronan Collobert)
516+
Copyright (c) 2012-2014 Deepmind Technologies (Koray Kavukcuoglu)
517+
Copyright (c) 2011-2012 NEC Laboratories America (Koray Kavukcuoglu)
518+
Copyright (c) 2011-2013 NYU (Clement Farabet)
519+
Copyright (c) 2006-2010 NEC Laboratories America (Ronan Collobert, Leon Bottou,
520+
Iain Melvin, Jason Weston) Copyright (c) 2006 Idiap Research Institute
521+
(Samy Bengio) Copyright (c) 2001-2004 Idiap Research Institute (Ronan Collobert,
522+
Samy Bengio, Johnny Mariethoz)
523+
524+
All rights reserved.
525+
526+
License: BSD-3-Clause
527+
528+
Redistribution and use in source and binary forms, with or without
529+
modification, are permitted provided that the following conditions are met:
530+
531+
1. Redistributions of source code must retain the above copyright
532+
notice, this list of conditions and the following disclaimer.
533+
534+
2. Redistributions in binary form must reproduce the above copyright
535+
notice, this list of conditions and the following disclaimer in the
536+
documentation and/or other materials provided with the distribution.
537+
538+
3. Neither the names of Facebook, Deepmind Technologies, NYU, NEC Laboratories
539+
America and IDIAP Research Institute nor the names of its contributors may be
540+
used to endorse or promote products derived from this software without
541+
specific prior written permission.
542+
543+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
544+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
545+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
546+
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
547+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
548+
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
549+
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
550+
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
551+
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
552+
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
553+
POSSIBILITY OF SUCH DAMAGE.
554+
555+
--------------------------------------------------------------------------------
556+
509557
This product includes code from cppjieba.
510558

511559
* cppjieba utility in src/paimon/global_index/lucene/ directory

PaimonConfig.cmake.in

Lines changed: 3 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -12,134 +12,8 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
# Main library
16-
add_library(paimon_shared SHARED IMPORTED)
17-
set_target_properties(paimon_shared PROPERTIES
18-
IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/libpaimon.so"
19-
INTERFACE_INCLUDE_DIRECTORIES "@CMAKE_INSTALL_PREFIX@/include"
20-
)
21-
add_library(paimon_static STATIC IMPORTED)
22-
set_target_properties(paimon_static PROPERTIES
23-
IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/libpaimon.a"
24-
INTERFACE_INCLUDE_DIRECTORIES "@CMAKE_INSTALL_PREFIX@/include"
25-
)
15+
@PACKAGE_INIT@
2616

27-
# paimon_parquet_file_format
28-
add_library(paimon_parquet_file_format_shared SHARED IMPORTED)
29-
set_target_properties(paimon_parquet_file_format_shared PROPERTIES
30-
IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/libpaimon_parquet_file_format.so"
31-
INTERFACE_INCLUDE_DIRECTORIES "@CMAKE_INSTALL_PREFIX@/include"
32-
)
33-
add_library(paimon_parquet_file_format_static STATIC IMPORTED)
34-
set_target_properties(paimon_parquet_file_format_static PROPERTIES
35-
IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/libpaimon_parquet_file_format.a"
36-
INTERFACE_INCLUDE_DIRECTORIES "@CMAKE_INSTALL_PREFIX@/include"
37-
)
17+
include("${CMAKE_CURRENT_LIST_DIR}/PaimonTargets.cmake")
3818

39-
# paimon_orc_file_format
40-
add_library(paimon_orc_file_format_shared SHARED IMPORTED)
41-
set_target_properties(paimon_orc_file_format_shared PROPERTIES
42-
IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/libpaimon_orc_file_format.so"
43-
INTERFACE_INCLUDE_DIRECTORIES "@CMAKE_INSTALL_PREFIX@/include"
44-
)
45-
add_library(paimon_orc_file_format_static STATIC IMPORTED)
46-
set_target_properties(paimon_orc_file_format_static PROPERTIES
47-
IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/libpaimon_orc_file_format.a"
48-
INTERFACE_INCLUDE_DIRECTORIES "@CMAKE_INSTALL_PREFIX@/include"
49-
)
50-
51-
# paimon_local_file_system
52-
add_library(paimon_local_file_system_shared SHARED IMPORTED)
53-
set_target_properties(paimon_local_file_system_shared PROPERTIES
54-
IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/libpaimon_local_file_system.so"
55-
INTERFACE_INCLUDE_DIRECTORIES "@CMAKE_INSTALL_PREFIX@/include"
56-
)
57-
add_library(paimon_local_file_system_static STATIC IMPORTED)
58-
set_target_properties(paimon_local_file_system_static PROPERTIES
59-
IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/libpaimon_local_file_system.a"
60-
INTERFACE_INCLUDE_DIRECTORIES "@CMAKE_INSTALL_PREFIX@/include"
61-
)
62-
63-
# paimon_avro_file_format
64-
add_library(paimon_avro_file_format_shared SHARED IMPORTED)
65-
set_target_properties(paimon_avro_file_format_shared PROPERTIES
66-
IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/libpaimon_avro_file_format.so"
67-
INTERFACE_INCLUDE_DIRECTORIES "@CMAKE_INSTALL_PREFIX@/include"
68-
)
69-
add_library(paimon_avro_file_format_static STATIC IMPORTED)
70-
set_target_properties(paimon_avro_file_format_static PROPERTIES
71-
IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/libpaimon_avro_file_format.a"
72-
INTERFACE_INCLUDE_DIRECTORIES "@CMAKE_INSTALL_PREFIX@/include"
73-
)
74-
75-
# paimon_blob_file_format
76-
add_library(paimon_blob_file_format_shared SHARED IMPORTED)
77-
set_target_properties(paimon_blob_file_format_shared PROPERTIES
78-
IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/libpaimon_blob_file_format.so"
79-
INTERFACE_INCLUDE_DIRECTORIES "@CMAKE_INSTALL_PREFIX@/include"
80-
)
81-
add_library(paimon_blob_file_format_static STATIC IMPORTED)
82-
set_target_properties(paimon_blob_file_format_static PROPERTIES
83-
IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/libpaimon_blob_file_format.a"
84-
INTERFACE_INCLUDE_DIRECTORIES "@CMAKE_INSTALL_PREFIX@/include"
85-
)
86-
87-
# paimon_file_index
88-
add_library(paimon_file_index_shared SHARED IMPORTED)
89-
set_target_properties(paimon_file_index_shared PROPERTIES
90-
IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/libpaimon_file_index.so"
91-
INTERFACE_INCLUDE_DIRECTORIES "@CMAKE_INSTALL_PREFIX@/include"
92-
)
93-
add_library(paimon_file_index_static STATIC IMPORTED)
94-
set_target_properties(paimon_file_index_static PROPERTIES
95-
IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/libpaimon_file_index.a"
96-
INTERFACE_INCLUDE_DIRECTORIES "@CMAKE_INSTALL_PREFIX@/include"
97-
)
98-
99-
# paimon_global_index
100-
add_library(paimon_global_index_shared SHARED IMPORTED)
101-
set_target_properties(paimon_global_index_shared PROPERTIES
102-
IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/libpaimon_global_index.so"
103-
INTERFACE_INCLUDE_DIRECTORIES "@CMAKE_INSTALL_PREFIX@/include"
104-
)
105-
add_library(paimon_global_index_static STATIC IMPORTED)
106-
set_target_properties(paimon_global_index_static PROPERTIES
107-
IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/libpaimon_global_index.a"
108-
INTERFACE_INCLUDE_DIRECTORIES "@CMAKE_INSTALL_PREFIX@/include"
109-
)
110-
111-
# paimon_jindo_file_system
112-
add_library(paimon_jindo_file_system_shared SHARED IMPORTED)
113-
set_target_properties(paimon_jindo_file_system_shared PROPERTIES
114-
IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/libpaimon_jindo_file_system.so"
115-
INTERFACE_INCLUDE_DIRECTORIES "@CMAKE_INSTALL_PREFIX@/include"
116-
)
117-
add_library(paimon_jindo_file_system_static STATIC IMPORTED)
118-
set_target_properties(paimon_jindo_file_system_static PROPERTIES
119-
IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/libpaimon_jindo_file_system.a"
120-
INTERFACE_INCLUDE_DIRECTORIES "@CMAKE_INSTALL_PREFIX@/include"
121-
)
122-
123-
# paimon_lance_file_format
124-
add_library(paimon_lance_file_format_shared SHARED IMPORTED)
125-
set_target_properties(paimon_lance_file_format_shared PROPERTIES
126-
IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/libpaimon_lance_file_format.so"
127-
INTERFACE_INCLUDE_DIRECTORIES "@CMAKE_INSTALL_PREFIX@/include"
128-
)
129-
add_library(paimon_lance_file_format_static STATIC IMPORTED)
130-
set_target_properties(paimon_lance_file_format_static PROPERTIES
131-
IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/libpaimon_lance_file_format.a"
132-
INTERFACE_INCLUDE_DIRECTORIES "@CMAKE_INSTALL_PREFIX@/include"
133-
)
134-
135-
# paimon_lumina_index
136-
add_library(paimon_lumina_index_shared SHARED IMPORTED)
137-
set_target_properties(paimon_lumina_index_shared PROPERTIES
138-
IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/libpaimon_lumina_index.so"
139-
INTERFACE_INCLUDE_DIRECTORIES "@CMAKE_INSTALL_PREFIX@/include"
140-
)
141-
add_library(paimon_lumina_index_static STATIC IMPORTED)
142-
set_target_properties(paimon_lumina_index_static PROPERTIES
143-
IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/libpaimon_lumina_index.a"
144-
INTERFACE_INCLUDE_DIRECTORIES "@CMAKE_INSTALL_PREFIX@/include"
145-
)
19+
check_required_components(Paimon)

0 commit comments

Comments
 (0)