Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 21 additions & 2 deletions .github/workflows/be-ut-mac.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,17 +48,25 @@ jobs:
- 'be/**'
- 'gensrc/proto/**'
- 'gensrc/thrift/**'
thirdparty_changes:
- 'thirdparty/**'

- name: Ccache ${{ github.ref }}
if: ${{ github.event_name == 'schedule' || steps.filter.outputs.be_changes == 'true' }}
if: |
github.event_name == 'schedule' ||
steps.filter.outputs.be_changes == 'true' ||
steps.filter.outputs.thirdparty_changes == 'true'
uses: ./.github/actions/ccache-action
with:
key: BE-UT-macOS
max-size: "5G"
restore-keys: BE-UT-macOS-

- name: Build BE ${{ github.ref }}
if: ${{ github.event_name == 'schedule' || steps.filter.outputs.be_changes == 'true' }}
if: |
github.event_name == 'schedule' ||
steps.filter.outputs.be_changes == 'true' ||
steps.filter.outputs.thirdparty_changes == 'true'
run: |
cellars=(
'm4'
Expand Down Expand Up @@ -101,6 +109,17 @@ jobs:
-o doris-thirdparty-prebuilt-darwin-arm64.tar.xz
fi
tar -xvf doris-thirdparty-prebuilt-darwin-arm64.tar.xz

# A thirdparty upgrade can make the shared prebuilt archive stale.
# Rebuild the changed Arrow/Paimon stack before compiling BE so this
# job validates the versions selected by the PR.
if [[ "${{ steps.filter.outputs.thirdparty_changes }}" == "true" ]]; then

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] Align this broad trigger with the dependency set actually rebuilt

thirdparty_changes matches every file under thirdparty/**, but this branch always rebuilds only Arrow and Paimon. For example, a protobuf version or patch change triggers this BE job while both Arrow and BE still consume protobuf from the shared prebuilt, so a green result would not validate the PR-selected dependency as the new comments imply. Please either narrow the filter to the Arrow/Paimon inputs this step covers or derive and rebuild the changed dependency set (including the required transitive closure).

curl -L https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-source.tgz \
-o doris-thirdparty-source.tgz
tar -zxvf doris-thirdparty-source.tgz
export MACOSX_DEPLOYMENT_TARGET=12.0
./build-thirdparty.sh -j "$(nproc)" arrow paimon_cpp

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P1] Fetch xsimd 14 before this targeted Arrow build

Passing only arrow paimon_cpp restricts download-thirdparty.sh to those two archives, but Arrow is configured with xsimd_SOURCE=BUNDLED and a local ${TP_SOURCE_DIR}/14.0.0.tar.gz URL. The shared source bundle does not contain that newly selected archive, so the live macOS job fails in xsimd_ep with File not found: .../thirdparty/src/14.0.0.tar.gz before Arrow is compiled. Please download Arrow's complete source-only dependency closure (at least xsimd) before this targeted build, or provide a source bundle guaranteed to match the checked-out vars.sh.

fi
popd

# macos-15 runners are Apple Silicon (arm64), so the JDK env var is
Expand Down
13 changes: 6 additions & 7 deletions .github/workflows/build-thirdparty.yml
Original file line number Diff line number Diff line change
Expand Up @@ -195,9 +195,9 @@ jobs:

# Install specific version of cmake
brew unlink cmake || true
wget https://github.com/Kitware/CMake/releases/download/v3.22.1/cmake-3.22.1-macos-universal.tar.gz
tar -xzf cmake-3.22.1-macos-universal.tar.gz
sudo cp -r cmake-3.22.1-macos-universal/CMake.app/Contents/* /usr/local/
wget https://github.com/Kitware/CMake/releases/download/v3.25.3/cmake-3.25.3-macos-universal.tar.gz
tar -xzf cmake-3.25.3-macos-universal.tar.gz
sudo cp -r cmake-3.25.3-macos-universal/CMake.app/Contents/* /usr/local/
cmake --version

- name: Build
Expand Down Expand Up @@ -260,9 +260,9 @@ jobs:

# Install specific version of cmake
brew unlink cmake || true
wget https://github.com/Kitware/CMake/releases/download/v3.22.1/cmake-3.22.1-macos-universal.tar.gz
tar -xzf cmake-3.22.1-macos-universal.tar.gz
sudo cp -r cmake-3.22.1-macos-universal/CMake.app/Contents/* /usr/local/
wget https://github.com/Kitware/CMake/releases/download/v3.25.3/cmake-3.25.3-macos-universal.tar.gz
tar -xzf cmake-3.25.3-macos-universal.tar.gz
sudo cp -r cmake-3.25.3-macos-universal/CMake.app/Contents/* /usr/local/
cmake --version

- name: Build
Expand All @@ -278,4 +278,3 @@ jobs:
cd thirdparty
#./build-thirdparty.sh -j "$(nproc)"
./build-thirdparty.sh -j 2

2 changes: 1 addition & 1 deletion be/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -666,7 +666,7 @@ endif()
set(PAIMON_FACTORY_REGISTRY_LIBS)
if (ENABLE_PAIMON_CPP)
# Plan B: Doris Arrow is now built with COMPUTE/DATASET/ACERO/FILESYSTEM,
# so arrow, arrow_dataset, arrow_acero are all in COMMON_THIRDPARTY via
# so arrow, arrow_compute, arrow_dataset, arrow_acero are all in COMMON_THIRDPARTY via
# thirdparty.cmake. paimon-cpp reuses the same Arrow (no paimon_deps).
# No dual-stack selection needed — single Arrow for everything.

Expand Down
1 change: 1 addition & 0 deletions be/cmake/thirdparty.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ add_thirdparty(brotlidec LIB64)
add_thirdparty(brotlienc LIB64)
add_thirdparty(zstd LIB64)
add_thirdparty(arrow LIB64)
add_thirdparty(arrow_compute LIB64)
add_thirdparty(arrow_flight LIB64)
add_thirdparty(arrow_flight_sql LIB64)
add_thirdparty(arrow_dataset LIB64)
Expand Down
2 changes: 1 addition & 1 deletion be/src/format/table/iceberg/arrow_schema_util.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ Status ArrowSchemaUtil::convert_to(const iceberg::NestedField& field,

case iceberg::TypeID::DECIMAL: {
auto* dt = dynamic_cast<DecimalType*>(field.field_type());
arrow_type = arrow::decimal(dt->get_precision(), dt->get_scale());
arrow_type = arrow::decimal128(dt->get_precision(), dt->get_scale());
break;
}

Expand Down
8 changes: 4 additions & 4 deletions be/test/core/data_type_serde/data_type_serde_decimal_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,7 @@ TEST_F(DataTypeDecimalSerDeTest, serdes) {
// Run with UBSan enabled to catch misalignment errors.
TEST_F(DataTypeDecimalSerDeTest, ArrowMemNotAligned) {
// 1.Prepare the data.
arrow::Decimal128Builder builder(arrow::decimal(38, 30));
arrow::Decimal128Builder builder(arrow::decimal128(38, 30));
std::vector<std::string> decimal_strings = {"12345.67", "89.10", "1112.13", "1415.16",
"1718.19"};

Expand All @@ -335,7 +335,7 @@ TEST_F(DataTypeDecimalSerDeTest, ArrowMemNotAligned) {
// 4. Create Arrow array with unaligned memory
auto unaligned_buffer = arrow::Buffer::Wrap(unaligned_data, num_elements * element_size);

auto arr = std::make_shared<arrow::DecimalArray>(arrow::decimal(38, 30), num_elements,
auto arr = std::make_shared<arrow::DecimalArray>(arrow::decimal128(38, 30), num_elements,
unaligned_buffer);

const auto* raw_values_ptr = arr->raw_values();
Expand Down Expand Up @@ -432,7 +432,7 @@ uint8_t* find_misaligned_address(std::vector<uint8_t>& storage) {
}

TEST_F(DataTypeDecimalSerDeTest, ArrowMemNotAlignedDecimalV2TypeAlignment) {
arrow::Decimal128Builder builder(arrow::decimal(27, 9));
arrow::Decimal128Builder builder(arrow::decimal128(27, 9));
std::vector<std::string> decimal_strings = {"1.000000000", "-123456789012345678.123456789"};

for (const auto& str : decimal_strings) {
Expand All @@ -453,7 +453,7 @@ TEST_F(DataTypeDecimalSerDeTest, ArrowMemNotAlignedDecimalV2TypeAlignment) {
memcpy(unaligned_data, original_data, num_elements * element_size);

auto unaligned_buffer = arrow::Buffer::Wrap(unaligned_data, num_elements * element_size);
auto arr = std::make_shared<arrow::DecimalArray>(arrow::decimal(27, 9), num_elements,
auto arr = std::make_shared<arrow::DecimalArray>(arrow::decimal128(27, 9), num_elements,
unaligned_buffer);

const auto* raw_values_ptr = arr->raw_values();
Expand Down
2 changes: 1 addition & 1 deletion be/test/format_v2/table/remote_doris_reader_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ TFileRangeDesc remote_doris_range(const BlockingFlightServer& server) {
auto range = remote_doris_range();
auto& params = range.table_format_params.remote_doris_params;
params.__set_location_uri("grpc://localhost:" + std::to_string(server.port()));
arrow::flight::Ticket ticket {.ticket = "ticket"};
arrow::flight::Ticket ticket {"ticket"};
params.__set_ticket(ticket.SerializeToString().ValueOrDie());
return range;
}
Expand Down
3 changes: 1 addition & 2 deletions docker/compilation/Dockerfile.gcc10
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ RUN yum makecache && yum -y update && yum -y groupinstall 'Development Tools' &&
devtoolset-10-libasan-devel

# build cmake
ARG CMAKE_VERSION=3.22.1
ARG CMAKE_VERSION=3.25.3
ARG CMAKE_BASE_URL=https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}
RUN wget ${CMAKE_BASE_URL}/cmake-${CMAKE_VERSION}-Linux-x86_64.sh -q -O /tmp/cmake-install.sh && \
chmod u+x /tmp/cmake-install.sh && \
Expand Down Expand Up @@ -121,4 +121,3 @@ ENV JAVA_HOME="/usr/lib/jvm/java-11" \
WORKDIR /root

CMD ["/bin/bash"]

7 changes: 4 additions & 3 deletions thirdparty/build-thirdparty.sh
Original file line number Diff line number Diff line change
Expand Up @@ -1088,9 +1088,7 @@ build_arrow() {
ldflags="-L${TP_LIB_DIR}"
fi

CPPFLAGS="-I${TP_INCLUDE_DIR}" \
CXXFLAGS="-I${TP_INCLUDE_DIR}" \
LDFLAGS="${ldflags}" \
LDFLAGS="${ldflags}" \
"${CMAKE_CMD}" -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DCMAKE_CXX_STANDARD="${TP_CXX_STANDARD}" \
-G "${GENERATOR}" -DARROW_PARQUET=ON -DARROW_IPC=ON -DARROW_BUILD_SHARED=OFF \
Expand Down Expand Up @@ -1125,6 +1123,7 @@ build_arrow() {
-Dxsimd_SOURCE=BUNDLED \
-DBrotli_SOURCE=BUNDLED \
-DARROW_LZ4_USE_SHARED=OFF \
-DLZ4_ROOT="${TP_INSTALL_DIR};${TP_INSTALL_DIR}/include/lz4" \
-DLZ4_LIB="${TP_INSTALL_DIR}/lib/liblz4.a" -DLZ4_INCLUDE_DIR="${TP_INSTALL_DIR}/include/lz4" \
-DLz4_SOURCE=SYSTEM \
-DARROW_ZSTD_USE_SHARED=OFF \
Expand All @@ -1147,6 +1146,7 @@ build_arrow() {
cp -rf ./brotli_ep/src/brotli_ep-install/lib/libbrotlidec-static.a "${TP_INSTALL_DIR}/lib64/libbrotlidec.a"
cp -rf ./brotli_ep/src/brotli_ep-install/lib/libbrotlicommon-static.a "${TP_INSTALL_DIR}/lib64/libbrotlicommon.a"
strip_lib libarrow.a
strip_lib libarrow_compute.a
strip_lib libparquet.a
strip_lib libarrow_dataset.a
strip_lib libarrow_acero.a
Expand Down Expand Up @@ -2091,6 +2091,7 @@ build_paimon_cpp() {
mkdir -p "${paimon_deps_dir}"
for paimon_arrow_dep in \
libarrow.a \
libarrow_compute.a \
libarrow_filesystem.a \
libarrow_dataset.a \
libarrow_acero.a \
Expand Down
25 changes: 13 additions & 12 deletions thirdparty/download-thirdparty.sh
Original file line number Diff line number Diff line change
Expand Up @@ -438,19 +438,19 @@ if [[ " ${TP_ARCHIVES[*]} " =~ " ARROW " ]]; then
fi
cd -
fi
if [[ "${ARROW_SOURCE}" == "arrow-apache-arrow-17.0.0" ]]; then
if [[ "${ARROW_SOURCE}" == "arrow-apache-arrow-24.0.0" ]]; then
cd "${TP_SOURCE_DIR}/${ARROW_SOURCE}"
if [[ ! -f "${PATCHED_MARK}" ]]; then
# Paimon-cpp parquet patches: row-group-aware batch reader, max_row_group_size,
# GetBufferedSize(), int96 NANO guard, and Thrift_VERSION empty fix.
patch -p1 <"${TP_PATCH_DIR}/apache-arrow-17.0.0-paimon.patch"
patch -p1 <"${TP_PATCH_DIR}/apache-arrow-24.0.0-paimon.patch"

# apache-arrow-17.0.0-force-write-int96-timestamps.patch :
# Introducing the parameter that forces writing int96 timestampes for compatibility with Paimon cpp.
patch -p1 <"${TP_PATCH_DIR}/apache-arrow-17.0.0-force-write-int96-timestamps.patch"
# Introducing the parameter that forces writing INT96 timestamps for
# compatibility with the Doris Parquet writer.
patch -p1 <"${TP_PATCH_DIR}/apache-arrow-24.0.0-force-write-int96-timestamps.patch"

# Add Parquet LZO page decompression support used by file scanner v2.
patch -p1 <"${TP_PATCH_DIR}/apache-arrow-17.0.0-lzo.patch"
patch -p1 <"${TP_PATCH_DIR}/apache-arrow-24.0.0-lzo.patch"
touch "${PATCHED_MARK}"
fi
cd -
Expand Down Expand Up @@ -732,13 +732,14 @@ fi
# patch paimon-cpp
if [[ " ${TP_ARCHIVES[*]} " =~ " PAIMON_CPP " ]]; then
cd "${TP_SOURCE_DIR}/${PAIMON_CPP_SOURCE}"
if [[ ! -f "${PATCHED_MARK}" ]]; then
if patch -p1 -N --batch --dry-run <"${TP_PATCH_DIR}/paimon-cpp-buildutils-static-deps.patch" >/dev/null 2>&1; then
patch -p1 -N --batch <"${TP_PATCH_DIR}/paimon-cpp-buildutils-static-deps.patch"
else
echo "Skip paimon-cpp patch: already applied or not applicable for current source"
PAIMON_CPP_ARROW_24_PATCHED_MARK="patched_mark_arrow_24"
if [[ ! -f "${PAIMON_CPP_ARROW_24_PATCHED_MARK}" ]]; then
if [[ ! -f "${PATCHED_MARK}" ]]; then
patch -p1 <"${TP_PATCH_DIR}/paimon-cpp-buildutils-static-deps.patch"
touch "${PATCHED_MARK}"
fi
touch "${PATCHED_MARK}"
patch -p1 <"${TP_PATCH_DIR}/paimon-cpp-arrow-24-compatibility.patch"
touch "${PAIMON_CPP_ARROW_24_PATCHED_MARK}"
fi
cd -
echo "Finished patching ${PAIMON_CPP_SOURCE}"
Expand Down
3 changes: 2 additions & 1 deletion thirdparty/paimon-cpp-cache.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ set(LZ4_INCLUDE_DIR "${DORIS_INCLUDE_DIR}" CACHE PATH "LZ4 include directory")

# ============================================================================
# Arrow - Reuse from Doris (Doris Arrow now includes COMPUTE/DATASET/ACERO/FILESYSTEM)
# Doris's Arrow 17.0.0 is built with the full module set that paimon-cpp
# Doris's Arrow 24.0.0 is built with the full module set that paimon-cpp
# needs, so we skip paimon-cpp's internal externalproject_add(arrow_ep ...).
# ============================================================================
set(PAIMON_USE_EXTERNAL_ARROW ON CACHE BOOL "Use pre-built Arrow from Doris instead of building from source")
Expand All @@ -74,6 +74,7 @@ set(DORIS_LIB64_DIR "${DORIS_THIRDPARTY_DIR}/lib64" CACHE PATH "Doris lib64 dire

set(PAIMON_EXTERNAL_ARROW_INCLUDE_DIR "${DORIS_INCLUDE_DIR}" CACHE PATH "Arrow include directory")
set(PAIMON_EXTERNAL_ARROW_LIB "${DORIS_LIB64_DIR}/libarrow.a" CACHE FILEPATH "Arrow core library")
set(PAIMON_EXTERNAL_ARROW_COMPUTE_LIB "${DORIS_LIB64_DIR}/libarrow_compute.a" CACHE FILEPATH "Arrow Compute library")
set(PAIMON_EXTERNAL_ARROW_DATASET_LIB "${DORIS_LIB64_DIR}/libarrow_dataset.a" CACHE FILEPATH "Arrow Dataset library")
set(PAIMON_EXTERNAL_ARROW_ACERO_LIB "${DORIS_LIB64_DIR}/libarrow_acero.a" CACHE FILEPATH "Arrow Acero library")
set(PAIMON_EXTERNAL_PARQUET_LIB "${DORIS_LIB64_DIR}/libparquet.a" CACHE FILEPATH "Parquet library")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
diff -ruN arrow-apache-arrow-17.0.0-after-paimon/cpp/src/parquet/arrow/schema.cc arrow-apache-arrow-17.0.0/cpp/src/parquet/arrow/schema.cc
--- arrow-apache-arrow-17.0.0-after-paimon/cpp/src/parquet/arrow/schema.cc 2026-03-27 01:23:23.651831424 +0800
+++ arrow-apache-arrow-17.0.0/cpp/src/parquet/arrow/schema.cc 2026-03-27 01:28:36.855281965 +0800
@@ -178,7 +178,8 @@
--- a/cpp/src/parquet/arrow/schema.cc
+++ b/cpp/src/parquet/arrow/schema.cc
@@ -215,8 +215,9 @@

// The user is explicitly asking for Impala int96 encoding, there is no
// logical type.
- if (arrow_properties.support_deprecated_int96_timestamps() && target_unit == ::arrow::TimeUnit::NANO) {
- if (arrow_properties.support_deprecated_int96_timestamps() &&
- target_unit == ::arrow::TimeUnit::NANO) {
+ if (arrow_properties.force_write_int96_timestamps() ||
+ (arrow_properties.support_deprecated_int96_timestamps() && target_unit == ::arrow::TimeUnit::NANO)) {
+ (arrow_properties.support_deprecated_int96_timestamps() &&
+ target_unit == ::arrow::TimeUnit::NANO)) {
*physical_type = ParquetType::INT96;
return Status::OK();
}
diff -ruN arrow-apache-arrow-17.0.0-after-paimon/cpp/src/parquet/properties.h arrow-apache-arrow-17.0.0/cpp/src/parquet/properties.h
--- arrow-apache-arrow-17.0.0-after-paimon/cpp/src/parquet/properties.h 2026-03-27 01:23:23.643831362 +0800
+++ arrow-apache-arrow-17.0.0/cpp/src/parquet/properties.h 2026-03-27 01:27:47.717897537 +0800
@@ -980,6 +980,7 @@
--- a/cpp/src/parquet/properties.h
+++ b/cpp/src/parquet/properties.h
@@ -1309,6 +1309,7 @@
public:
Builder()
: write_timestamps_as_int96_(false),
+ force_write_int96_timestamps_(false),
coerce_timestamps_enabled_(false),
coerce_timestamps_unit_(::arrow::TimeUnit::SECOND),
truncated_timestamps_allowed_(false),
@@ -1005,6 +1006,21 @@
@@ -1334,6 +1335,21 @@
return this;
}

Expand All @@ -44,17 +44,17 @@ diff -ruN arrow-apache-arrow-17.0.0-after-paimon/cpp/src/parquet/properties.h ar
/// \brief Coerce all timestamps to the specified time unit.
/// \param unit time unit to truncate to.
/// For Parquet versions 1.0 and 2.4, nanoseconds are casted to microseconds.
@@ -1085,7 +1101,8 @@
@@ -1423,7 +1439,8 @@
/// Create the final properties.
std::shared_ptr<ArrowWriterProperties> build() {
return std::shared_ptr<ArrowWriterProperties>(new ArrowWriterProperties(
- write_timestamps_as_int96_, coerce_timestamps_enabled_, coerce_timestamps_unit_,
+ write_timestamps_as_int96_, force_write_int96_timestamps_,
+ coerce_timestamps_enabled_, coerce_timestamps_unit_,
truncated_timestamps_allowed_, store_schema_, compliant_nested_types_,
engine_version_, use_threads_, executor_));
engine_version_, use_threads_, executor_, write_time_adjusted_to_utc_));
}
@@ -1093,6 +1110,8 @@
@@ -1431,6 +1448,8 @@
private:
bool write_timestamps_as_int96_;

Expand All @@ -63,7 +63,7 @@ diff -ruN arrow-apache-arrow-17.0.0-after-paimon/cpp/src/parquet/properties.h ar
bool coerce_timestamps_enabled_;
::arrow::TimeUnit::type coerce_timestamps_unit_;
bool truncated_timestamps_allowed_;
@@ -1107,6 +1126,8 @@
@@ -1447,6 +1466,8 @@

bool support_deprecated_int96_timestamps() const { return write_timestamps_as_int96_; }

Expand All @@ -72,24 +72,24 @@ diff -ruN arrow-apache-arrow-17.0.0-after-paimon/cpp/src/parquet/properties.h ar
bool coerce_timestamps_enabled() const { return coerce_timestamps_enabled_; }
::arrow::TimeUnit::type coerce_timestamps_unit() const {
return coerce_timestamps_unit_;
@@ -1138,6 +1159,7 @@
@@ -1483,6 +1504,7 @@

private:
explicit ArrowWriterProperties(bool write_nanos_as_int96,
+ bool force_write_int96_timestamps,
bool coerce_timestamps_enabled,
::arrow::TimeUnit::type coerce_timestamps_unit,
bool truncated_timestamps_allowed, bool store_schema,
@@ -1145,6 +1167,7 @@
EngineVersion engine_version, bool use_threads,
::arrow::internal::Executor* executor)
@@ -1491,6 +1513,7 @@
::arrow::internal::Executor* executor,
bool write_time_adjusted_to_utc)
: write_timestamps_as_int96_(write_nanos_as_int96),
+ force_write_int96_timestamps_(force_write_int96_timestamps),
coerce_timestamps_enabled_(coerce_timestamps_enabled),
coerce_timestamps_unit_(coerce_timestamps_unit),
truncated_timestamps_allowed_(truncated_timestamps_allowed),
@@ -1155,6 +1178,7 @@
executor_(executor) {}
@@ -1502,6 +1525,7 @@
write_time_adjusted_to_utc_(write_time_adjusted_to_utc) {}

const bool write_timestamps_as_int96_;
+ const bool force_write_int96_timestamps_;
Expand Down
Loading
Loading