Giter VIP home page Giter VIP logo

apache / incubator-horaedb Goto Github PK

View Code? Open in Web Editor NEW
2.5K 40.0 188.0 10.52 MB

HoraeDB is a high-performance, distributed, cloud native time-series database.

Home Page: https://horaedb.apache.org

License: Apache License 2.0

Dockerfile 0.07% Makefile 0.21% Rust 85.74% Shell 0.41% Python 0.38% Go 13.11% Java 0.09%
database distributed-database rust tsdb cloud-native iot-database timeseries-analysis timeseries-database sql horaedb

incubator-horaedb's Introduction

HoraeDB

License CI OpenIssue

中文

HoraeDB is a high-performance, distributed, cloud native time-series database.

Documentation

Quick Start

Run with Docker

Run HoraeDB standalone Server

docker run -d --name horaedb-server \
  -p 8831:8831 \
  -p 3307:3307 \
  -p 5440:5440 \
  ghcr.io/apache/horaedb-server:nightly-20231222-f57b3827

Run HoraeDB cluster with two horaedb-server node and one horaemeta-server node.

docker compose -f docker/docker-compose.yaml up

Run from source code

See details here.

Create Table and Write/Read data

Create Table.

curl --location --request POST 'http://127.0.0.1:5440/sql' \
-d '
CREATE TABLE `demo` (
    `name` string TAG,
    `value` double NOT NULL,
    `t` timestamp NOT NULL,
    timestamp KEY (t))
ENGINE=Analytic
  with
(enable_ttl="false")
'

Write data with SQL.

curl --location --request POST 'http://127.0.0.1:5440/sql' \
-d '
INSERT INTO demo (t, name, value)
    VALUES (1702224000000, "horaedb", 100)
'

Read data with SQL.

curl --location --request POST 'http://127.0.0.1:5440/sql' \
-d '
SELECT * FROM `demo`
'

Drop table.

curl --location --request POST 'http://127.0.0.1:5440/sql' \
-d '
Drop TABLE `demo`
'

Contributing

Any contribution is welcome!

Discuss at dev mailing list (subscribe / unsubscribe / archives)

Send request to [email protected] to join Horadb slack channel.

Read our Contributing Guide and make your first contribution!

Acknowledgment

When develop HoraeDB, we benefit a lot from several other open source projects, such as influxdb_iox, tikv etc, thanks for their awesome work.

In our production usage, we heavily use OceanBase as implementation of both WAL and ObjectStorage, and OceanBase team help us maintain stability of our cluster, thanks for their kindly support.

License

HoraeDB is under Apache License 2.0.

incubator-horaedb's People

Contributors

archerny avatar baojinri avatar caicancai avatar chunshao90 avatar dependabot[bot] avatar dust1 avatar fengmk2 avatar gogim1 avatar hehex9 avatar huachao avatar jackwener avatar jakemcf22 avatar jiacai2050 avatar li-jin-gou avatar messense avatar michaelleehz avatar mrrtree avatar quintintao avatar rachelint avatar shikaiwi avatar tanruixiang avatar tianlinzx avatar tisonkun avatar virrages avatar waynexia avatar ygf11 avatar zealchen avatar zouxiang1993 avatar zuliangwang avatar zwpaper avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

incubator-horaedb's Issues

Query fields are sorted by creation

Description
ceresDB doesn't seem to require strict ordering of query result fields.

Proposal

Use the order in which fields are created.

Additional context

when I create table use:

CREATE TABLE `hello_mysql` (`name` string TAG, `value` double NOT NULL, `t` timestamp NOT NULL, TIMESTAMP KEY(t)) ENGINE=Analytic with (enable_ttl='false');

and select it. his field order seems to be random? I found that the query result is wrapped in HashMap.
image

This doesn't seem to have any effect on normal usage, so I don't know if this situation needs improvement.

Tracking issue for SQL integration tests

Description

We have supported tons of SQLs (on top of DataFusion) but don't have concrete tests for them. This is to add initial and basic coverage.

Proposal

SQLs to test:

  • insert
    • insert non null
    • insert null
    • insert without required columns
  • query
    • select from one table
    • select with operator
      • datafusion build-in
      • customized
        • prom
        • hll count
    • select from multiple tables
      • join
    • tpc-h queries
  • DDL
    • add column
    • remove column
    • drop table

Additional context

`SingleDistinctToGroupBy` panicked at No field named 'SPM_23134806_INFLUENCE_DEFAULT.period'

Describe this problem

Backtrace
2022-03-10 11:42:59.471 ERRO [common_util/src/panic.rs:40] thread 'cse-read' panicked 'called `Result::unwrap()` on an `Err` value: Plan("No field named 'SPM_23134806_INFLUENCE_DEFAULT.period'. Valid fields are 'time_bucket(SPM_23134806_INFLUENCE_DEFAULT.period,Utf8(\"PT1M\"),Utf8(\"yyyy-MM-dd HH:mm:ss\"))', 'alias1'.")' at "/root/.cargo/git/checkouts/arrow-datafusion-78dc86050a92b8a7/9a77541/datafusion/src/optimizer/single_distinct_to_groupby.rs:106"
   0: common_util::panic::set_panic_hook::{{closure}}
             at /app/ceresdb/ceresdbx/common_util/src/panic.rs:39:18
   1: std::panicking::rust_panic_with_hook
             at /rustc/f1ce0e6a00593493a12e0e3662119786c761f375/library/std/src/panicking.rs:610:17
   2: std::panicking::begin_panic_handler::{{closure}}
             at /rustc/f1ce0e6a00593493a12e0e3662119786c761f375/library/std/src/panicking.rs:502:13
   3: std::sys_common::backtrace::__rust_end_short_backtrace
             at /rustc/f1ce0e6a00593493a12e0e3662119786c761f375/library/std/src/sys_common/backtrace.rs:139:18
   4: rust_begin_unwind
             at /rustc/f1ce0e6a00593493a12e0e3662119786c761f375/library/std/src/panicking.rs:498:5
   5: core::panicking::panic_fmt
             at /rustc/f1ce0e6a00593493a12e0e3662119786c761f375/library/core/src/panicking.rs:107:14
   6: core::result::unwrap_failed
             at /rustc/f1ce0e6a00593493a12e0e3662119786c761f375/library/core/src/result.rs:1690:5
   7: core::result::Result<T,E>::unwrap
             at /rustc/f1ce0e6a00593493a12e0e3662119786c761f375/library/core/src/result.rs:1018:23
      datafusion::optimizer::single_distinct_to_groupby::optimize::{{closure}}
             at /root/.cargo/git/checkouts/arrow-datafusion-78dc86050a92b8a7/9a77541/datafusion/src/optimizer/single_distinct_to_groupby.rs:106:41
      core::iter::adapters::map::map_fold::{{closure}}
             at /rustc/f1ce0e6a00593493a12e0e3662119786c761f375/library/core/src/iter/adapters/map.rs:84:28
      core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut
             at /rustc/f1ce0e6a00593493a12e0e3662119786c761f375/library/core/src/ops/function.rs:269:13
      core::iter::traits::iterator::Iterator::fold
             at /rustc/f1ce0e6a00593493a12e0e3662119786c761f375/library/core/src/iter/traits/iterator.rs:2171:21
      <core::iter::adapters::chain::Chain<A,B> as core::iter::traits::iterator::Iterator>::fold
             at /rustc/f1ce0e6a00593493a12e0e3662119786c761f375/library/core/src/iter/adapters/chain.rs:119:19
   8: <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::fold
             at /rustc/f1ce0e6a00593493a12e0e3662119786c761f375/library/core/src/iter/adapters/map.rs:124:9
      core::iter::traits::iterator::Iterator::for_each
             at /rustc/f1ce0e6a00593493a12e0e3662119786c761f375/library/core/src/iter/traits/iterator.rs:736:9
      <alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<T,I>>::spec_extend
             at

Steps to reproduce

SQL:

SELECT   time_bucket(`period`, \'PT1M\', \'yyyy-MM-dd HH:mm:ss\') AS `time`,
         count(DISTINCT(pid))                                     AS `pid`
FROM     spm_23134806_influence_default
WHERE    `period` >= \'2022-03-10 10:41:00\'
AND      `period` < \'2022-03-10 11:42:00\'
GROUP BY time_bucket(`period`, \'PT1M\', \'yyyy-MM-dd HH:mm:ss\')
ORDER BY `time`

Expected behavior

Do not panic

Additional Information

To avoid this we have temporary comment out the optimizer SingleDistinctToGroupBy.

CI: support to run integration tests

Description

SQL integration tests are added in #98, it's useful for testing high-level behaviors. But our CI only run unit tests for now.

Proposal

Add job to run those integration tests. We can choose to run it per PR/commit or per day if it takes a long time. But for now it only takes a few mins to complete.

Additional context

Support Arrow format in gRPC service

Description

The query interface now supports avro and json format. https://github.com/CeresDB/ceresdb/blob/f6c9a5b03e23b04e6a06c4f73756f1be9551c0f8/server/src/grpc/query.rs#L42-L45
And avro is the only one actually used. Regardless of json, it's natural to support arrow (in arrow's ipc format) which is widely used in our server.

Proposal

Add support to arrow format. The execution result is RecordBatch so it wouldn't take a lot of effort to serialize it on the server side.
Considering backward compatibility we can keep using avro as the default format, and client can require server to return a specific format it needs.

The protobuf is defined in https://github.com/CeresDB/ceresdbproto/blob/eba30f7dff736d00be711c40c3f01964655eb10a/protos/storage.proto#L101-L110

message QueryResponse {
  common.ResponseHeader header = 1;
  enum SchemaType {
    AVRO = 0;
    JSON = 1;
  }
  SchemaType schema_type = 2;
  string schema_content = 3;
  repeated bytes rows = 4;
}

It also might be necessary to do some renaming. Like SchemaType -> ResponseType, rows -> chunks etc.

Additional context

Build guidance for mac users

Description

The doc now have no guidance for different platforms

Proposal

The project docs now don't have any build guidance for different platforms other than Ubuntu. We can add these docs to help the users solving problems when they build on their own dev env.

Track memory usage in `MemUsageCollector`

Description

We have implemented a MemUsageCollector in https://github.com/CeresDB/ceresdb/blob/6b929ca19a/analytic_engine/src/instance/mem_collector.rs but no one reports memory consumptions to it.

One of the use cases is deciding whether to schedule a flush job based on memory usage:
https://github.com/CeresDB/ceresdb/blob/6b929ca19abf48ba9afd1cb554ec9a25c7783a42/analytic_engine/src/instance/write.rs#L307-L331

Proposal

Tracking allocation using this collector. For now I think tracks memtable is enough

Additional context

add mysql server support

Description

ceresdb doesn't seem to support mysql client yet

Proposal

we can use this crate solves that problem by acting as a MySQL server, and delegating operations such as querying and query execution to user-defined logic.

Additional context

https://github.com/jonhoo/msql-srv

Rename `udf` sub-crate

Description
We have a sub-crate udf that contains some operator implementation for DataFusion. The name is some kinds of ambiguous, those operators are UDF from DF's perspective, but are the same as other DF build-in from the user.

Proposal
Rename it, like df-operator or df-function. Or other appropriate names.

Additional context
There is a query_engine sub-crate that also extends DF operators. Merge these two crates should also be an option.

`cargo bench` will produce a compile error of titan-sys

Describe this problem
Run the following command under repo root dir will produce a compile error.

cargo bench -p benchmarks

Steps to reproduce
See above.

Expected behavior
can run benchmark

Additional Information

system: Linux ruihang 5.17.7-arch1-1
cpu: x86_64 Intel(R) Core(TM) i5-9500 CPU @ 3.00GHz

Compile Error Log
error: failed to run custom build command for `libtitan_sys v0.0.1 (https://github.com/tikv/rust-rocksdb.git?branch=tikv-5.2#23bd00d5)`

Caused by:
  process didn't exit successfully: `/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-acd593915e6f3c6c/build-script-build` (exit status: 101)
  --- stdout
  CMAKE_TOOLCHAIN_FILE_x86_64-unknown-linux-gnu = None
  CMAKE_TOOLCHAIN_FILE_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_TOOLCHAIN_FILE = None
  CMAKE_TOOLCHAIN_FILE = None
  CMAKE_GENERATOR_x86_64-unknown-linux-gnu = None
  CMAKE_GENERATOR_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_GENERATOR = None
  CMAKE_GENERATOR = None
  CMAKE_PREFIX_PATH_x86_64-unknown-linux-gnu = None
  CMAKE_PREFIX_PATH_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_PREFIX_PATH = None
  CMAKE_PREFIX_PATH = Some("/home/ruihang/repo/CeresDB/target/release/build/libz-sys-7060968b1392aa90/out/build")
  CMAKE_x86_64-unknown-linux-gnu = None
  CMAKE_x86_64_unknown_linux_gnu = None
  HOST_CMAKE = None
  CMAKE = None
  running: "cmake" "-Wdev" "--debug-output" "/home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan" "-DPORTABLE=ON" "-DROCKSDB_DIR=/home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb" "-DWITH_TITAN_TESTS=OFF" "-DWITH_TITAN_TOOLS=OFF" "-DWITH_ZLIB=ON" "-DWITH_BZ2=ON" "-DWITH_LZ4=ON" "-DWITH_ZSTD=ON" "-DWITH_SNAPPY=ON" "-DWITH_TITAN_TESTS=OFF" "-DWITH_TITAN_TOOLS=OFF" "-DCMAKE_INSTALL_PREFIX=/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out" "-DCMAKE_C_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_C_COMPILER=/usr/bin/cc" "-DCMAKE_CXX_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_CXX_COMPILER=/usr/bin/c++" "-DCMAKE_ASM_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_ASM_COMPILER=/usr/bin/cc" "-DCMAKE_BUILD_TYPE=RelWithDebInfo" "-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON"
  Running with debug output on.
  -- Enabling RTTI in Debug builds only (default)
     Called from: [2]   /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan/cmake/rocksdb_flags.cmake
                  [1]   /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan/CMakeLists.txt
  -- Configuring done
  -- Generating /home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build
     Called from: [1]   /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan/CMakeLists.txt
  -- Generating done
  -- Build files have been written to: /home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build
  running: "cmake" "--build" "." "--target" "titan" "--config" "RelWithDebInfo" "--parallel" "6"
  /usr/bin/cmake -S/home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan -B/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build --check-build-system CMakeFiles/Makefile.cmake 0
  /usr/bin/make  -f CMakeFiles/Makefile2 titan
  make[1]: Entering directory '/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build'
  /usr/bin/cmake -S/home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan -B/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build --check-build-system CMakeFiles/Makefile.cmake 0
  /usr/bin/cmake -E cmake_progress_start /home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles 25
  /usr/bin/make  -f CMakeFiles/Makefile2 CMakeFiles/titan.dir/all
  make[2]: Entering directory '/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build'
  /usr/bin/make  -f CMakeFiles/titan_build_version.dir/build.make CMakeFiles/titan_build_version.dir/depend
  make[3]: Entering directory '/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build'
  cd /home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan /home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build /home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build /home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan_build_version.dir/DependInfo.cmake --color=
  Dependencies file "CMakeFiles/titan_build_version.dir/titan_build_version.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan_build_version.dir/compiler_depend.internal".
  Consolidate compiler generated dependencies of target titan_build_version
  make[3]: Leaving directory '/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build'
  /usr/bin/make  -f CMakeFiles/titan_build_version.dir/build.make CMakeFiles/titan_build_version.dir/build
  make[3]: Entering directory '/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build'
  [  4%] Building CXX object CMakeFiles/titan_build_version.dir/titan_build_version.cc.o
  /usr/bin/c++ -DBZIP2 -DHAVE_PCLMUL -DHAVE_SSE42 -DLZ4 -DOS_LINUX -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DROCKSDB_SUPPORT_THREAD_LOCAL -DSNAPPY -DZLIB -DZSTD -I/home/ruihang/repo/CeresDB/target/release/build/snappy-sys-26a487dcbddf5af5/out/build -I/home/ruihang/repo/CeresDB/target/release/build/bzip2-sys-dee24ea472afde1a/out/include -I/home/ruihang/repo/CeresDB/target/release/build/lz4-sys-96e216fd13bc9b20/out/include -I/home/ruihang/repo/CeresDB/target/release/build/libz-sys-7060968b1392aa90/out/include -I/home/ruihang/repo/CeresDB/target/release/build/zstd-sys-b02e0fb93bcc16f8/out/include -I/home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb -I/home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/include -I/home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan/include -I/home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan/src -I/home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan/util -ffunction-sections -fdata-sections -fPIC -m64 -W -Wextra -Wall -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -std=c++11 -fno-omit-frame-pointer -momit-leaf-frame-pointer -Werror -fno-builtin-memcmp -O2 -g -DNDEBUG -MD -MT CMakeFiles/titan_build_version.dir/titan_build_version.cc.o -MF CMakeFiles/titan_build_version.dir/titan_build_version.cc.o.d -o CMakeFiles/titan_build_version.dir/titan_build_version.cc.o -c /home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/titan_build_version.cc
  make[3]: Leaving directory '/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build'
  [  4%] Built target titan_build_version
  /usr/bin/make  -f CMakeFiles/titan.dir/build.make CMakeFiles/titan.dir/depend
  make[3]: Entering directory '/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build'
  cd /home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan /home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build /home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build /home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/DependInfo.cmake --color=
  Dependencies file "CMakeFiles/titan.dir/src/base_db_listener.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/compiler_depend.internal".
  Dependencies file "CMakeFiles/titan.dir/src/blob_file_builder.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/compiler_depend.internal".
  Dependencies file "CMakeFiles/titan.dir/src/blob_file_cache.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/compiler_depend.internal".
  Dependencies file "CMakeFiles/titan.dir/src/blob_file_iterator.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/compiler_depend.internal".
  Dependencies file "CMakeFiles/titan.dir/src/blob_file_reader.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/compiler_depend.internal".
  Dependencies file "CMakeFiles/titan.dir/src/blob_file_set.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/compiler_depend.internal".
  Dependencies file "CMakeFiles/titan.dir/src/blob_file_size_collector.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/compiler_depend.internal".
  Dependencies file "CMakeFiles/titan.dir/src/blob_format.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/compiler_depend.internal".
  Dependencies file "CMakeFiles/titan.dir/src/blob_gc.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/compiler_depend.internal".
  Dependencies file "CMakeFiles/titan.dir/src/blob_gc_job.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/compiler_depend.internal".
  Dependencies file "CMakeFiles/titan.dir/src/blob_gc_picker.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/compiler_depend.internal".
  Dependencies file "CMakeFiles/titan.dir/src/blob_storage.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/compiler_depend.internal".
  Dependencies file "CMakeFiles/titan.dir/src/db.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/compiler_depend.internal".
  Dependencies file "CMakeFiles/titan.dir/src/db_impl.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/compiler_depend.internal".
  Dependencies file "CMakeFiles/titan.dir/src/db_impl_files.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/compiler_depend.internal".
  Dependencies file "CMakeFiles/titan.dir/src/db_impl_gc.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/compiler_depend.internal".
  Dependencies file "CMakeFiles/titan.dir/src/options.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/compiler_depend.internal".
  Dependencies file "CMakeFiles/titan.dir/src/table_builder.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/compiler_depend.internal".
  Dependencies file "CMakeFiles/titan.dir/src/table_factory.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/compiler_depend.internal".
  Dependencies file "CMakeFiles/titan.dir/src/titan_checkpoint_impl.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/compiler_depend.internal".
  Dependencies file "CMakeFiles/titan.dir/src/titan_stats.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/compiler_depend.internal".
  Dependencies file "CMakeFiles/titan.dir/src/util.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/compiler_depend.internal".
  Dependencies file "CMakeFiles/titan.dir/src/version_edit.cc.o.d" is newer than depends file "/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build/CMakeFiles/titan.dir/compiler_depend.internal".
  Consolidate compiler generated dependencies of target titan
  make[3]: Leaving directory '/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build'
  /usr/bin/make  -f CMakeFiles/titan.dir/build.make CMakeFiles/titan.dir/build
  make[3]: Entering directory '/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build'
  [  8%] Building CXX object CMakeFiles/titan.dir/src/db_impl.cc.o
  /usr/bin/c++ -DBZIP2 -DHAVE_PCLMUL -DHAVE_SSE42 -DLZ4 -DOS_LINUX -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DROCKSDB_SUPPORT_THREAD_LOCAL -DSNAPPY -DZLIB -DZSTD -I/home/ruihang/repo/CeresDB/target/release/build/snappy-sys-26a487dcbddf5af5/out/build -I/home/ruihang/repo/CeresDB/target/release/build/bzip2-sys-dee24ea472afde1a/out/include -I/home/ruihang/repo/CeresDB/target/release/build/lz4-sys-96e216fd13bc9b20/out/include -I/home/ruihang/repo/CeresDB/target/release/build/libz-sys-7060968b1392aa90/out/include -I/home/ruihang/repo/CeresDB/target/release/build/zstd-sys-b02e0fb93bcc16f8/out/include -I/home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb -I/home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/include -I/home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan/include -I/home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan/src -I/home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan/util -ffunction-sections -fdata-sections -fPIC -m64 -W -Wextra -Wall -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -std=c++11 -fno-omit-frame-pointer -momit-leaf-frame-pointer -Werror -fno-builtin-memcmp -O2 -g -DNDEBUG -MD -MT CMakeFiles/titan.dir/src/db_impl.cc.o -MF CMakeFiles/titan.dir/src/db_impl.cc.o.d -o CMakeFiles/titan.dir/src/db_impl.cc.o -c /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan/src/db_impl.cc
  make[3]: Leaving directory '/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build'
  make[2]: Leaving directory '/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build'
  make[1]: Leaving directory '/home/ruihang/repo/CeresDB/target/release/build/libtitan_sys-d9fa18b8ce830101/out/build'

  --- stderr
  make: warning: -j6 forced in submake: resetting jobserver mode.
  In file included from /usr/include/c++/12.1.0/atomic:41,
                   from /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/db/db_impl/db_impl.h:11,
                   from /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan/src/db_impl.h:3,
                   from /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan/src/db_impl.cc:1:
  In member function ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::fetch_add(__int_type, std::memory_order) [with _ITp = long unsigned int]’,
      inlined from ‘void rocksdb::StatisticsImpl<TICKER_MAX, HISTOGRAM_MAX>::recordTick(uint32_t, uint64_t) [with unsigned int TICKER_MAX = 145; unsigned int HISTOGRAM_MAX = 49]’ at /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics_impl.h:205:59,
      inlined from ‘void rocksdb::RecordTick(Statistics*, uint32_t, uint64_t)’ at /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics.h:33:27,
      inlined from ‘virtual rocksdb::Status rocksdb::titandb::TitanDBImpl::FileManager::BatchFinishFiles(uint32_t, const std::vector<std::pair<std::shared_ptr<rocksdb::titandb::BlobFileMeta>, std::unique_ptr<rocksdb::titandb::BlobFileHandle> > >&)’ at /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan/src/db_impl.cc:67:17:
  /usr/include/c++/12.1.0/bits/atomic_base.h:618:35: error: array subscript 153 is above array bounds of ‘std::atomic_uint_fast64_t [145]’ {aka ‘std::atomic<long unsigned int> [145]’} [-Werror=array-bounds]
    618 |       { return __atomic_fetch_add(&_M_i, __i, int(__m)); }
        |                                   ^~~~~
  In file included from /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan/src/db_impl.cc:17:
  /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics_impl.h: In member function ‘virtual rocksdb::Status rocksdb::titandb::TitanDBImpl::FileManager::BatchFinishFiles(uint32_t, const std::vector<std::pair<std::shared_ptr<rocksdb::titandb::BlobFileMeta>, std::unique_ptr<rocksdb::titandb::BlobFileHandle> > >&)’:
  /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics_impl.h:80:31: note: while referencing ‘rocksdb::StatisticsImpl<145, 49>::StatisticsData::tickers_’
     80 |     std::atomic_uint_fast64_t tickers_[TICKER_MAX];
        |                               ^~~~~~~~
  In member function ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::fetch_add(__int_type, std::memory_order) [with _ITp = long unsigned int]’,
      inlined from ‘void rocksdb::StatisticsImpl<TICKER_MAX, HISTOGRAM_MAX>::recordTick(uint32_t, uint64_t) [with unsigned int TICKER_MAX = 145; unsigned int HISTOGRAM_MAX = 49]’ at /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics_impl.h:205:59,
      inlined from ‘void rocksdb::RecordTick(Statistics*, uint32_t, uint64_t)’ at /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics.h:33:27,
      inlined from ‘virtual void rocksdb::titandb::TitanDBIterator::SeekToLast()’ at /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan/src/db_iter.h:64:17:
  /usr/include/c++/12.1.0/bits/atomic_base.h:618:35: error: array subscript 146 is above array bounds of ‘std::atomic_uint_fast64_t [145]’ {aka ‘std::atomic<long unsigned int> [145]’} [-Werror=array-bounds]
    618 |       { return __atomic_fetch_add(&_M_i, __i, int(__m)); }
        |                                   ^~~~~
  /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics_impl.h: In member function ‘virtual void rocksdb::titandb::TitanDBIterator::SeekToLast()’:
  /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics_impl.h:80:31: note: while referencing ‘rocksdb::StatisticsImpl<145, 49>::StatisticsData::tickers_’
     80 |     std::atomic_uint_fast64_t tickers_[TICKER_MAX];
        |                               ^~~~~~~~
  In member function ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::fetch_add(__int_type, std::memory_order) [with _ITp = long unsigned int]’,
      inlined from ‘void rocksdb::StatisticsImpl<TICKER_MAX, HISTOGRAM_MAX>::recordTick(uint32_t, uint64_t) [with unsigned int TICKER_MAX = 145; unsigned int HISTOGRAM_MAX = 49]’ at /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics_impl.h:205:59,
      inlined from ‘void rocksdb::RecordTick(Statistics*, uint32_t, uint64_t)’ at /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics.h:33:27,
      inlined from ‘virtual void rocksdb::titandb::TitanDBIterator::Prev()’ at /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan/src/db_iter.h:102:17:
  /usr/include/c++/12.1.0/bits/atomic_base.h:618:35: error: array subscript 148 is above array bounds of ‘std::atomic_uint_fast64_t [145]’ {aka ‘std::atomic<long unsigned int> [145]’} [-Werror=array-bounds]
    618 |       { return __atomic_fetch_add(&_M_i, __i, int(__m)); }
        |                                   ^~~~~
  /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics_impl.h: In member function ‘virtual void rocksdb::titandb::TitanDBIterator::Prev()’:
  /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics_impl.h:80:31: note: while referencing ‘rocksdb::StatisticsImpl<145, 49>::StatisticsData::tickers_’
     80 |     std::atomic_uint_fast64_t tickers_[TICKER_MAX];
        |                               ^~~~~~~~
  In member function ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::fetch_add(__int_type, std::memory_order) [with _ITp = long unsigned int]’,
      inlined from ‘void rocksdb::StatisticsImpl<TICKER_MAX, HISTOGRAM_MAX>::recordTick(uint32_t, uint64_t) [with unsigned int TICKER_MAX = 145; unsigned int HISTOGRAM_MAX = 49]’ at /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics_impl.h:205:59,
      inlined from ‘void rocksdb::RecordTick(Statistics*, uint32_t, uint64_t)’ at /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics.h:33:27,
      inlined from ‘virtual void rocksdb::titandb::TitanDBIterator::Next()’ at /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan/src/db_iter.h:92:17:
  /usr/include/c++/12.1.0/bits/atomic_base.h:618:35: error: array subscript 147 is above array bounds of ‘std::atomic_uint_fast64_t [145]’ {aka ‘std::atomic<long unsigned int> [145]’} [-Werror=array-bounds]
    618 |       { return __atomic_fetch_add(&_M_i, __i, int(__m)); }
        |                                   ^~~~~
  /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics_impl.h: In member function ‘virtual void rocksdb::titandb::TitanDBIterator::Next()’:
  /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics_impl.h:80:31: note: while referencing ‘rocksdb::StatisticsImpl<145, 49>::StatisticsData::tickers_’
     80 |     std::atomic_uint_fast64_t tickers_[TICKER_MAX];
        |                               ^~~~~~~~
  In member function ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::fetch_add(__int_type, std::memory_order) [with _ITp = long unsigned int]’,
      inlined from ‘void rocksdb::StatisticsImpl<TICKER_MAX, HISTOGRAM_MAX>::recordTick(uint32_t, uint64_t) [with unsigned int TICKER_MAX = 145; unsigned int HISTOGRAM_MAX = 49]’ at /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics_impl.h:205:59,
      inlined from ‘void rocksdb::RecordTick(Statistics*, uint32_t, uint64_t)’ at /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics.h:33:27,
      inlined from ‘virtual void rocksdb::titandb::TitanDBIterator::SeekToFirst()’ at /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan/src/db_iter.h:55:17:
  /usr/include/c++/12.1.0/bits/atomic_base.h:618:35: error: array subscript 146 is above array bounds of ‘std::atomic_uint_fast64_t [145]’ {aka ‘std::atomic<long unsigned int> [145]’} [-Werror=array-bounds]
    618 |       { return __atomic_fetch_add(&_M_i, __i, int(__m)); }
        |                                   ^~~~~
  /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics_impl.h: In member function ‘virtual void rocksdb::titandb::TitanDBIterator::SeekToFirst()’:
  /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics_impl.h:80:31: note: while referencing ‘rocksdb::StatisticsImpl<145, 49>::StatisticsData::tickers_’
     80 |     std::atomic_uint_fast64_t tickers_[TICKER_MAX];
        |                               ^~~~~~~~
  In member function ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::fetch_add(__int_type, std::memory_order) [with _ITp = long unsigned int]’,
      inlined from ‘void rocksdb::StatisticsImpl<TICKER_MAX, HISTOGRAM_MAX>::recordTick(uint32_t, uint64_t) [with unsigned int TICKER_MAX = 145; unsigned int HISTOGRAM_MAX = 49]’ at /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics_impl.h:205:59,
      inlined from ‘void rocksdb::RecordTick(Statistics*, uint32_t, uint64_t)’ at /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics.h:33:27,
      inlined from ‘virtual void rocksdb::titandb::TitanDBIterator::Seek(const rocksdb::Slice&)’ at /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan/src/db_iter.h:73:17:
  /usr/include/c++/12.1.0/bits/atomic_base.h:618:35: error: array subscript 146 is above array bounds of ‘std::atomic_uint_fast64_t [145]’ {aka ‘std::atomic<long unsigned int> [145]’} [-Werror=array-bounds]
    618 |       { return __atomic_fetch_add(&_M_i, __i, int(__m)); }
        |                                   ^~~~~
  /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics_impl.h: In member function ‘virtual void rocksdb::titandb::TitanDBIterator::Seek(const rocksdb::Slice&)’:
  /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics_impl.h:80:31: note: while referencing ‘rocksdb::StatisticsImpl<145, 49>::StatisticsData::tickers_’
     80 |     std::atomic_uint_fast64_t tickers_[TICKER_MAX];
        |                               ^~~~~~~~
  In member function ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::fetch_add(__int_type, std::memory_order) [with _ITp = long unsigned int]’,
      inlined from ‘void rocksdb::StatisticsImpl<TICKER_MAX, HISTOGRAM_MAX>::recordTick(uint32_t, uint64_t) [with unsigned int TICKER_MAX = 145; unsigned int HISTOGRAM_MAX = 49]’ at /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics_impl.h:205:59,
      inlined from ‘void rocksdb::RecordTick(Statistics*, uint32_t, uint64_t)’ at /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics.h:33:27,
      inlined from ‘virtual void rocksdb::titandb::TitanDBIterator::SeekForPrev(const rocksdb::Slice&)’ at /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan/src/db_iter.h:82:17:
  /usr/include/c++/12.1.0/bits/atomic_base.h:618:35: error: array subscript 146 is above array bounds of ‘std::atomic_uint_fast64_t [145]’ {aka ‘std::atomic<long unsigned int> [145]’} [-Werror=array-bounds]
    618 |       { return __atomic_fetch_add(&_M_i, __i, int(__m)); }
        |                                   ^~~~~
  /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics_impl.h: In member function ‘virtual void rocksdb::titandb::TitanDBIterator::SeekForPrev(const rocksdb::Slice&)’:
  /home/ruihang/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/../rocksdb/monitoring/statistics_impl.h:80:31: note: while referencing ‘rocksdb::StatisticsImpl<145, 49>::StatisticsData::tickers_’
     80 |     std::atomic_uint_fast64_t tickers_[TICKER_MAX];
        |                               ^~~~~~~~
  cc1plus: all warnings being treated as errors
  make[3]: *** [CMakeFiles/titan.dir/build.make:261: CMakeFiles/titan.dir/src/db_impl.cc.o] Error 1
  make[2]: *** [CMakeFiles/Makefile2:88: CMakeFiles/titan.dir/all] Error 2
  make[1]: *** [CMakeFiles/Makefile2:95: CMakeFiles/titan.dir/rule] Error 2
  make: *** [Makefile:172: titan] Error 2
  thread 'main' panicked at '
  command did not execute successfully, got: exit status: 2

  build script failed, must exit now', /home/ruihang/.cargo/registry/src/github.com-1ecc6299db9ec823/cmake-0.1.48/src/lib.rs:975:5
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
error: build failed

Affected rows reports wrong number for create/drop statements

Describe this problem

Failed to execute query, err: Server(ServerError { code: 500, msg: "Failed to convert output, query: DROP TABLE demo;. Caused by: Rpc error, code:500, message:Failed to convert output - affected rows: 1" })

A drop table tells one row is affected

Steps to reproduce

drop table demo;

Expected behavior

mysql> create table xx like meta_2 ;
Query OK, 0 rows affected (0.11 sec)

Additional Information

These SQLs don't actually count rows, 1 is the default value. Change the default value should fix this.

Hybrid storage format

Description

For now, data by default is ordered by timestamp column within one SST file(currently in Parquet format), each tag/field being a column.

Timestamp Device ID Status Code Tag 1 Tag 2
12:01 A 0 v1 v1
12:01 B 0 v2 v2
12:02 A 0 v1 v1
12:02 B 1 v2 v2
12:03 A 0 v1 v1
12:03 B 0 v2 v2

This design is good for OLAP queries, as it will only scan relevant columns, and CeresDB can take advantage of this ordering to filter unnecessary file, reducing IO further.

But for time-series user case like IoT or DevOps, this maybe not the best format. Those queries will typically first group its result by series id(or device-id), then by timestamp. This ordering isn't match with SST, so many random IOs will be incurred.

A general approach is to duplicate data twice: one ordered by timestamp first, and the other ordered by series id first.

Apparently this isn't very cost-effective, and will require some replication algorithm to synchronize data, which is very error-prone. It's best we could solve this ordering issue in one format.

Proposal

This issue propose one potential hybrid format (OLAP and time-series):

Device ID Timestamp Status Code Tag 1 Tag 2 minTime maxTime
A [12:01,12:02,12:03] [0,0,0] v1 v1 12:01 12:03
B [12:01,12:02,12:03] [0,1,0] v2 v2 12:01 12:03

In the above schema, instead of store timestamp row by row, we put timestamp within a device id in one array, and the corresponding values are also in array type, so we can easily map between them. The table is ordered by device ID.

In this way, we can avoid random IO when query one specific device, since its data are stored together, and this format is also beneficial for OLAP queries since we can use min/maxTime to help reader filter unnecessary chunks.

Additional context

Some references

Support `aarch64-unknown-linux-gnu` target

Description

Add support for aarch64-unknown-linux-gnu

Proposal

Support build on aarch64-unknown-linux-gnu first. Probably add a new CI job to cover this.

Running on this arch is planned but with a lower priority.

Additional context

Submodule is not supported in CI

Describe this problem
Submodule is not supported in CI

Steps to reproduce
Trigger CI, and some cases that need submodule will fail.

Expected behavior
CI should be able to pull submodule

Additional Information
GitHub Action plugin checkout has an option with_submodule which should work for us.

One failing test from CI:

{ "type": "test", "name": "serialized_reader::tests::test_file_reader_with_cache", "event": "failed", "stdout": "thread 'serialized_reader::tests::test_file_reader_with_cache' panicked at 'failed to get parquet data dir: env `PARQUET_TEST_DATA` is undefined or has empty value, and the pre-defined data dir `/__w/ceresdb/ceresdb/components/parquet/../parquet-testing/data` not found\nHINT: try running `git submodule update --init`', components/parquet/src/tests.rs:55:21\nstack backtrace:\n   0: rust_begin_unwind\n             at /rustc/f1ce0e6a00593493a12e0e3662119786c761f375/library/std/src/panicking.rs:498:5\n   1: core::panicking::panic_fmt\n             at /rustc/f1ce0e6a00593493a12e0e3662119786c761f375/library/core/src/panicking.rs:107:14\n   2: parquet::tests::parquet_test_data\n             at ./src/tests.rs:55:21\n   3: parquet::tests::get_test_path\n             at ./src/tests.rs:61:42\n   4: parquet::tests::get_test_file\n             at ./src/tests.rs:68:16\n   5: parquet::serialized_reader::tests::new_filer_reader_with_cache\n             at ./src/serialized_reader.rs:450:25\n   6: parquet::serialized_reader::tests::test_file_reader_with_cache\n             at ./src/serialized_reader.rs:555:22\n   7: parquet::serialized_reader::tests::test_file_reader_with_cache::{{closure}}\n             at ./src/serialized_reader.rs:554:5\n   8: core::ops::function::FnOnce::call_once\n             at /rustc/f1ce0e6a00593493a12e0e3662119786c761f375/library/core/src/ops/function.rs:227:5\n   9: core::ops::function::FnOnce::call_once\n             at /rustc/f1ce0e6a00593493a12e0e3662119786c761f375/library/core/src/ops/function.rs:227:5\nnote: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.\n" }

Document supported hardware architectures

Hi!

Could you please put the information about supported architectures to the documentation please? E.e. about supported architectures for different operating systems, some specific requirements to the supported instructions, if you have any (e.g. maybe AVX is required - I do not know).

This kind of information is important for the end-users.

Thanks in advance!

Failed to build on macOS Montery

Describe this problem

Build dependency librocksdb failed, compiler complains unused-but-set-variable

  /Users/lei/.cargo/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/23bd00d/librocksdb_sys/libtitan_sys/titan/src/db_impl.cc:105:14: error: variable 'file_size' set but not used [-Werror,-Wunused-but-set-variable]
      uint64_t file_size = 0;
               ^
  1 error generated.
  make[3]: *** [CMakeFiles/titan.dir/src/db_impl.cc.o] Error 1
  make[3]: *** Waiting for unfinished jobs....
  make[2]: *** [CMakeFiles/titan.dir/all] Error 2
  make[1]: *** [CMakeFiles/titan.dir/rule] Error 2
  make: *** [titan] Error 2
  thread 'main' panicked at '
  command did not execute successfully, got: exit status: 2

  build script failed, must exit now', /Users/lei/.cargo/registry/src/github.com-1ecc6299db9ec823/cmake-0.1.48/src/lib.rs:975:5
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
error: build failed

C/CXX version

$ cc -v
Apple clang version 13.1.6 (clang-1316.0.21.2.5)
Target: arm64-apple-darwin21.5.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

Rust toolchain version

$ rustc --version
rustc 1.59.0-nightly (f1ce0e6a0 2022-01-05)

System version

$ sw_vers
ProductName:	macOS
ProductVersion:	12.4
BuildVersion:	21F7

Steps to reproduce

  1. Clone repo
  2. Install required dependencies including ssl/cmake
  3. cargo build

Expected behavior

Successfully build binaries.

Additional Information

Conditional import deps for `arrow-deps` sub-crate

Description

arrow-deps is used to delegate all arrow-related deps (arrow, parquet, datafusion etc.) to facilitate common deps' management. But for other crates that don't need all of them it brings lots of unnecessary deps - a relative discussion in python SDK: apache/incubator-horaedb-client-py#2 (comment)

Proposal

  • Remove this arrow-deps and let each crate import itself.
  • Keep arrow-deps for sub-crates in this project. Other projects import necessary deps manually.
  • Add feature gate to conditional import those deps.

Additional context

Unit test may fail with "pure virtual method called"

Describe this problem

UT/CI sometimes is failed with "pure virtual method called, terminate called without an active exception"

Two cases failed in my env are

        FAIL [   0.353s] analytic_engine tests::drop_test::test_drop_table_once_rocks

--- STDOUT:              analytic_engine tests::drop_test::test_drop_table_once_rocks ---

running 1 test
test tests::drop_test::test_drop_table_once_rocks ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 77 filtered out; finished in 0.08s


--- STDERR:              analytic_engine tests::drop_test::test_drop_table_once_rocks ---
pure virtual method called
terminate called without an active exception

        FAIL [   0.314s] analytic_engine tests::open_test::test_open_engine_rocks

--- STDOUT:              analytic_engine tests::open_test::test_open_engine_rocks ---

running 1 test
test tests::open_test::test_open_engine_rocks ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 77 filtered out; finished in 0.04s


--- STDERR:              analytic_engine tests::open_test::test_open_engine_rocks ---
pure virtual method called
terminate called without an active exception

They are both introduced/modified in #62

Steps to reproduce

Run unit tests

cargo test --workspace

But this won't occur every time (in my local env).

Expected behavior

tests can pass

Additional Information

nervosnetwork/ckb#2927 looks like the same problem.
ref #154

table name with back quote has strange behavior in SDK

Describe this problem

run log:

DROP TABLE IF EXISTS `t0`;

affected_rows: 0

CREATE TABLE `t0`(a int, t timestamp NOT NULL, TIMESTAMP KEY(t)) ENGINE = Analytic;

affected_rows: 0

INSERT INTO TABLE `t0`(a, t) values(1,1);

affected_rows: 1

SELECT * FROM `t0`;

Failed to execute query, err: Server(ServerError { code: 500, msg: "Failed to create plan, query: SELECT * FROM `t0`;. Caused by: Failed to create plan, err:DataFusion Failed to plan, err:Execution error: MetaProvider not found" })

Steps to reproduce

add the following to a integration test

DROP TABLE IF EXISTS `t0`;

CREATE TABLE `t0`(a int, t timestamp NOT NULL, TIMESTAMP KEY(t)) ENGINE = Analytic;

INSERT INTO TABLE `t0`(a, t) values(1,1);

SELECT * FROM `t0`;

and run it

Expected behavior

the last SQL

SELECT * FROM `t0`;

should return data instead of reporting an error.

Additional Information

the client version is

https://github.com/CeresDB/ceresdb-client-rs.git?rev=a935a0ebacd1304d69d25e3e8611afa7d64611d6

Start CeresDB in distributed mode with CeresMeta

Description
The target is to run ceresdb in distributed mode and in order for that ceresdb in distributed mode, ceresdb must communicate with ceresmeta by the meta client.

Proposal
CeresMeta's service is built by gRPC and the corresponding protocol has been defined by the proto file so first what we need to do is build a grpc client based on that proto file during ceresdb's starting procedure.

And there is no need to keep the old meta client, and the new meta client should provide the capabilities:

  • Send keepalive heartbeats to ceresmeta;
  • Register handlers for node heartbeats;
  • Allocate schema/table id;
  • Provide routing information of the cluster from the ceresmeta;

And based on the new meta client (meta_client_v2) a module called cluster will be responsible for managing information from the CeresMeta, including:

  • Creating schema, creating/deleting tables;
  • Tables to be opened in the ceresdb instance;
  • Events such as change of the cluster topology from ceresmeta;
  • ...

Additional context
steps:

  • Upgrade ceresdbproto, remove old meta client and refactor meta_client_v2 (#100)
  • Enhance cluster module based on meta_client_v2 (#100)
  • Refactor volatile catalog implementation (#157)
  • Support startup in distributed mode (#190)
  • Remove the old meta_client (#205)
  • Provide routing information (#215)

Move `AlterSchema` and `AlterOption` to data WAL

Description

AlterSchema and AlterOption are now persisted in the manifest. It would be better to keep manifest simple (only contains SST file information, sequence number, etc.). And schema modification is related to data, putting them in two separate places may bring some problems.

Proposal

Make manifest only to contain create, drop table, and version edit. The new procedure of altering schema and option is:

  • trigger flush
  • persist new schema/option to WAL
  • update OSS metadata (next PR)
  • update manifest to include the DDL record
  • update memory status

A new file that contains "present schema" and "present option" will be persisted to OSS as table's metadata.

Additional context

Implement follower flush

Description

flush dumps memtable to sst file.

CeresDB current doesn't distinguish behaviors between leader and follower. In follower it only needs to purge its memtables and skip dumping.

Proposal

Implement the follower flush behavior described above. Serval steps I come up with:

  • Receive and track the max sequence number flushed by leader
  • Flush (drop) memtable based on the max seq
  • (considering) Flush behavior after becoming the new leader.

Additional context

This issue may only cover the implementation part. The trigger will come with a follow up PR, which depends on WAL replication
and/or instance role.

Pushdown `IN` predicate to TableScan

Description
Now the predicates whose type are only primitive binary expression are able to be pushed down to table scan. Actually IN predicate is also able to be pushed down and used to do filtering duration scanning stage.

Proposal
Only the predicate module in table engine needs changes.

  • Make IN predicate able to be pushed down;
  • Support the filtering RowGroups by IN expression;

Additional context
Shall we make more kinds of predicates able to be pushed down.

Missing features of integration test framework

List

  • Interceptor
    • support ignore interceptor #107
    • support echo interceptor
    • able to handle random things #114 (comment)
  • UI
    • can only run specified cases
    • redirect server's log to the specified place
    • Keep original SQL indents
  • Runner
    • customizable config file in dir level (e.g. tests/cases/config.toml and tests/cases/01_dummy/config.toml)

Additional context

Formatter can't recognize newline missing

Description
Now the rust formatter can't recognize the necessary newline missing, e.g.:

use crate::{
    instance::{Instance, InstanceRef},
    mysql::{error::*, worker::MysqlWorker},
};
pub struct MysqlService<C, Q> {

Make the formatter can fix this case.

Proposal
No proposal yet.

Additional context

add inverted index of timeseries

Description

Add the inverted index of the timeseries to optimize the time series query for a small number of timelines. Similar to tsi.

Proposal

Build:
Option 1: Add index to memtable and build it when data is written.
Option 2: Build when memtable flushes to sst.

Storage:
Option 1: Store in parquet metadata.
Option 2: Store in separate file.

Support Aliyun OSS

Description

Add support for Aliyun OSS as object storage backend.

Currently we only use LocalFileSystem.

Proposal

Implement ObjectStore using oss-rust-sdk.

Additional context

Some interface are not supported because:

  • get_range() is not implemented in sdk
  • list() and list_with_delimiter() are not support in the test env.

Build fails on Darwin Kernel (arch: arm64)

Describe this problem

Build CeresDB fails on my MacBook [MacBook Pro (13-inch, M1, 2020)]

Steps to reproduce

cargo build and then I will get the compile error, see the additional infos (the error logs)

Expected behavior

Compile phase passed, and get the CeresDB binary

Additional Information

Detail error log
   Compiling fasthash-sys v0.3.2
   Compiling serde v1.0.137
   Compiling thiserror v1.0.31
   Compiling tokio v1.19.2
   Compiling futures-util v0.3.21
   Compiling failure_derive v0.1.8
   Compiling comfy-table v5.0.1
   Compiling multiversion v0.6.1
   Compiling zerocopy-derive v0.2.0
   Compiling tracing v0.1.35
The following warnings were emitted during compilation:

warning: clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
warning: In file included from src/fasthash.cpp:1:
warning: In file included from src/fasthash.hpp:5:
warning: src/smhasher/mum.h:119:15: warning: expression result unused [-Wunused-value]
warning:   lo = v * p, hi;
warning:               ^~
warning: 1 warning generated.
warning: clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
warning: src/smhasher/City.cpp:148:21: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
warning:   for (int i = 0; i < len; i++) {
warning:                   ~ ^ ~~~
warning: 1 warning generated.
warning: clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
warning: In file included from src/smhasher/mum.cc:1:
warning: src/smhasher/mum.h:119:15: warning: expression result unused [-Wunused-value]
warning:   lo = v * p, hi;
warning:               ^~
warning: 1 warning generated.
warning: clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
warning: clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
warning: In file included from src/smhasher/metrohash64crc.cpp:28:
warning: In file included from /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/nmmintrin.h:15:
warning: In file included from /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/smmintrin.h:13:
warning: In file included from /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/tmmintrin.h:13:
warning: In file included from /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/pmmintrin.h:13:
warning: In file included from /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/emmintrin.h:13:
warning: In file included from /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/xmmintrin.h:13:
warning: /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:33:5: error: use of undeclared identifier '__builtin_ia32_emms'; did you mean '__builtin_isless'?
warning:     __builtin_ia32_emms();
warning:     ^
warning: /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:33:5: note: '__builtin_isless' declared here
warning: /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:33:25: error: too few arguments to function call, expected 2, have 0
warning:     __builtin_ia32_emms();
warning:                         ^
warning: /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:50:19: error: use of undeclared identifier '__builtin_ia32_vec_init_v2si'
warning:     return (__m64)__builtin_ia32_vec_init_v2si(__i, 0);
warning:                   ^
warning: /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:67:12: error: use of undeclared identifier '__builtin_ia32_vec_ext_v2si'
warning:     return __builtin_ia32_vec_ext_v2si((__v2si)__m, 0);
warning:            ^
warning: /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:129:19: error: use of undeclared identifier '__builtin_ia32_packsswb'
warning:     return (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2);
warning:                   ^
warning: /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:159:19: error: use of undeclared identifier '__builtin_ia32_packssdw'
warning:     return (__m64)__builtin_ia32_packssdw((__v2si)__m1, (__v2si)__m2);
warning:                   ^
warning: /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:189:19: error: use of undeclared identifier '__builtin_ia32_packuswb'
warning:     return (__m64)__builtin_ia32_packuswb((__v4hi)__m1, (__v4hi)__m2);
warning:                   ^
warning: /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:216:19: error: use of undeclared identifier '__builtin_ia32_punpckhbw'
warning:     return (__m64)__builtin_ia32_punpckhbw((__v8qi)__m1, (__v8qi)__m2);
warning:                   ^
warning: /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:239:19: error: use of undeclared identifier '__builtin_ia32_punpckhwd'
warning:     return (__m64)__builtin_ia32_punpckhwd((__v4hi)__m1, (__v4hi)__m2);
warning:                   ^
warning: /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:260:19: error: use of undeclared identifier '__builtin_ia32_punpckhdq'
warning:     return (__m64)__builtin_ia32_punpckhdq((__v2si)__m1, (__v2si)__m2);
warning:                   ^
warning: /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:287:19: error: use of undeclared identifier '__builtin_ia32_punpcklbw'
warning:     return (__m64)__builtin_ia32_punpcklbw((__v8qi)__m1, (__v8qi)__m2);
warning:                   ^
warning: /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:310:19: error: use of undeclared identifier '__builtin_ia32_punpcklwd'
warning:     return (__m64)__builtin_ia32_punpcklwd((__v4hi)__m1, (__v4hi)__m2);
warning:                   ^
warning: /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:331:19: error: use of undeclared identifier '__builtin_ia32_punpckldq'
warning:     return (__m64)__builtin_ia32_punpckldq((__v2si)__m1, (__v2si)__m2);
warning:                   ^
warning: /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:352:19: error: use of undeclared identifier '__builtin_ia32_paddb'; did you mean '__builtin_arm_addg'?
warning:     return (__m64)__builtin_ia32_paddb((__v8qi)__m1, (__v8qi)__m2);
warning:                   ^
warning: /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:352:19: note: '__builtin_arm_addg' declared here
warning: /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:352:19: error: first argument of MTE builtin function must be a pointer ('__v8qi' (vector of 8 'char' values) invalid)
warning:     return (__m64)__builtin_ia32_paddb((__v8qi)__m1, (__v8qi)__m2);
warning:                   ^                    ~~~~~~~~~~~~
warning: /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:373:19: error: use of undeclared identifier '__builtin_ia32_paddw'; did you mean '__builtin_arm_addg'?
warning:     return (__m64)__builtin_ia32_paddw((__v4hi)__m1, (__v4hi)__m2);
warning:                   ^
warning: /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:352:19: note: '__builtin_arm_addg' declared here
warning:     return (__m64)__builtin_ia32_paddb((__v8qi)__m1, (__v8qi)__m2);
warning:                   ^
warning: /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:373:19: error: first argument of MTE builtin function must be a pointer ('__v4hi' (vector of 4 'short' values) invalid)
warning:     return (__m64)__builtin_ia32_paddw((__v4hi)__m1, (__v4hi)__m2);
warning:                   ^                    ~~~~~~~~~~~~
warning: /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:394:19: error: use of undeclared identifier '__builtin_ia32_paddd'; did you mean '__builtin_arm_addg'?
warning:     return (__m64)__builtin_ia32_paddd((__v2si)__m1, (__v2si)__m2);
warning:                   ^
warning: /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:352:19: note: '__builtin_arm_addg' declared here
warning:     return (__m64)__builtin_ia32_paddb((__v8qi)__m1, (__v8qi)__m2);
warning:                   ^
warning: /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:394:19: error: first argument of MTE builtin function must be a pointer ('__v2si' (vector of 2 'int' values) invalid)
warning:     return (__m64)__builtin_ia32_paddd((__v2si)__m1, (__v2si)__m2);
warning:                   ^                    ~~~~~~~~~~~~
warning: fatal error: too many errors emitted, stopping now [-ferror-limit=]
warning: 20 errors generated.

error: failed to run custom build command for `fasthash-sys v0.3.2`

Caused by:
  process didn't exit successfully: `/Users/chenwr/workspace/ceresdb/target/debug/build/fasthash-sys-1e6c4b44a7398dc5/build-script-build` (exit status: 101)
  --- stdout
  TARGET = Some("aarch64-apple-darwin")
  OPT_LEVEL = Some("0")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = None
  DEBUG = Some("true")
  running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-Wno-implicit-fallthrough" "-Wno-unknown-attributes" "-msse4.2" "-maes" "-mavx" "-mavx2" "-DT1HA0_RUNTIME_SELECT=1" "-DT1HA0_AESNI_AVAILABLE=1" "-Wall" "-Wextra" "-o" "/Users/chenwr/workspace/ceresdb/target/debug/build/fasthash-sys-bf79a6c7afd57249/out/src/fasthash.o" "-c" "src/fasthash.cpp"
  cargo:warning=clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
  cargo:warning=In file included from src/fasthash.cpp:1:
  cargo:warning=In file included from src/fasthash.hpp:5:
  cargo:warning=src/smhasher/mum.h:119:15: warning: expression result unused [-Wunused-value]
  cargo:warning=  lo = v * p, hi;
  cargo:warning=              ^~
  cargo:warning=1 warning generated.
  exit status: 0
  TARGET = Some("aarch64-apple-darwin")
  OPT_LEVEL = Some("0")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = None
  DEBUG = Some("true")
  running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-Wno-implicit-fallthrough" "-Wno-unknown-attributes" "-msse4.2" "-maes" "-mavx" "-mavx2" "-DT1HA0_RUNTIME_SELECT=1" "-DT1HA0_AESNI_AVAILABLE=1" "-Wall" "-Wextra" "-o" "/Users/chenwr/workspace/ceresdb/target/debug/build/fasthash-sys-bf79a6c7afd57249/out/src/smhasher/City.o" "-c" "src/smhasher/City.cpp"
  cargo:warning=clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
  cargo:warning=src/smhasher/City.cpp:148:21: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
  cargo:warning=  for (int i = 0; i < len; i++) {
  cargo:warning=                  ~ ^ ~~~
  cargo:warning=1 warning generated.
  exit status: 0
  TARGET = Some("aarch64-apple-darwin")
  OPT_LEVEL = Some("0")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = None
  DEBUG = Some("true")
  running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-Wno-implicit-fallthrough" "-Wno-unknown-attributes" "-msse4.2" "-maes" "-mavx" "-mavx2" "-DT1HA0_RUNTIME_SELECT=1" "-DT1HA0_AESNI_AVAILABLE=1" "-Wall" "-Wextra" "-o" "/Users/chenwr/workspace/ceresdb/target/debug/build/fasthash-sys-bf79a6c7afd57249/out/src/smhasher/farmhash-c.o" "-c" "src/smhasher/farmhash-c.c"
  cargo:warning=clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
  exit status: 0
  TARGET = Some("aarch64-apple-darwin")
  OPT_LEVEL = Some("0")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = None
  DEBUG = Some("true")
  running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-Wno-implicit-fallthrough" "-Wno-unknown-attributes" "-msse4.2" "-maes" "-mavx" "-mavx2" "-DT1HA0_RUNTIME_SELECT=1" "-DT1HA0_AESNI_AVAILABLE=1" "-Wall" "-Wextra" "-o" "/Users/chenwr/workspace/ceresdb/target/debug/build/fasthash-sys-bf79a6c7afd57249/out/src/smhasher/lookup3.o" "-c" "src/smhasher/lookup3.cpp"
  cargo:warning=clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
  exit status: 0
  TARGET = Some("aarch64-apple-darwin")
  OPT_LEVEL = Some("0")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = None
  DEBUG = Some("true")
  running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-Wno-implicit-fallthrough" "-Wno-unknown-attributes" "-msse4.2" "-maes" "-mavx" "-mavx2" "-DT1HA0_RUNTIME_SELECT=1" "-DT1HA0_AESNI_AVAILABLE=1" "-Wall" "-Wextra" "-o" "/Users/chenwr/workspace/ceresdb/target/debug/build/fasthash-sys-bf79a6c7afd57249/out/src/smhasher/mum.o" "-c" "src/smhasher/mum.cc"
  cargo:warning=clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
  cargo:warning=In file included from src/smhasher/mum.cc:1:
  cargo:warning=src/smhasher/mum.h:119:15: warning: expression result unused [-Wunused-value]
  cargo:warning=  lo = v * p, hi;
  cargo:warning=              ^~
  cargo:warning=1 warning generated.
  exit status: 0
  TARGET = Some("aarch64-apple-darwin")
  OPT_LEVEL = Some("0")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = None
  DEBUG = Some("true")
  running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-Wno-implicit-fallthrough" "-Wno-unknown-attributes" "-msse4.2" "-maes" "-mavx" "-mavx2" "-DT1HA0_RUNTIME_SELECT=1" "-DT1HA0_AESNI_AVAILABLE=1" "-Wall" "-Wextra" "-o" "/Users/chenwr/workspace/ceresdb/target/debug/build/fasthash-sys-bf79a6c7afd57249/out/src/smhasher/metrohash64.o" "-c" "src/smhasher/metrohash64.cpp"
  cargo:warning=clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
  exit status: 0
  TARGET = Some("aarch64-apple-darwin")
  OPT_LEVEL = Some("0")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = None
  DEBUG = Some("true")
  running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-Wno-implicit-fallthrough" "-Wno-unknown-attributes" "-msse4.2" "-maes" "-mavx" "-mavx2" "-DT1HA0_RUNTIME_SELECT=1" "-DT1HA0_AESNI_AVAILABLE=1" "-Wall" "-Wextra" "-o" "/Users/chenwr/workspace/ceresdb/target/debug/build/fasthash-sys-bf79a6c7afd57249/out/src/smhasher/metrohash128.o" "-c" "src/smhasher/metrohash128.cpp"
  cargo:warning=clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
  exit status: 0
  TARGET = Some("aarch64-apple-darwin")
  OPT_LEVEL = Some("0")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = None
  DEBUG = Some("true")
  running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-Wno-implicit-fallthrough" "-Wno-unknown-attributes" "-msse4.2" "-maes" "-mavx" "-mavx2" "-DT1HA0_RUNTIME_SELECT=1" "-DT1HA0_AESNI_AVAILABLE=1" "-Wall" "-Wextra" "-o" "/Users/chenwr/workspace/ceresdb/target/debug/build/fasthash-sys-bf79a6c7afd57249/out/src/smhasher/MurmurHash1.o" "-c" "src/smhasher/MurmurHash1.cpp"
  cargo:warning=clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
  exit status: 0
  TARGET = Some("aarch64-apple-darwin")
  OPT_LEVEL = Some("0")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = None
  DEBUG = Some("true")
  running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-Wno-implicit-fallthrough" "-Wno-unknown-attributes" "-msse4.2" "-maes" "-mavx" "-mavx2" "-DT1HA0_RUNTIME_SELECT=1" "-DT1HA0_AESNI_AVAILABLE=1" "-Wall" "-Wextra" "-o" "/Users/chenwr/workspace/ceresdb/target/debug/build/fasthash-sys-bf79a6c7afd57249/out/src/smhasher/MurmurHash2.o" "-c" "src/smhasher/MurmurHash2.cpp"
  cargo:warning=clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
  exit status: 0
  TARGET = Some("aarch64-apple-darwin")
  OPT_LEVEL = Some("0")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = None
  DEBUG = Some("true")
  running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-Wno-implicit-fallthrough" "-Wno-unknown-attributes" "-msse4.2" "-maes" "-mavx" "-mavx2" "-DT1HA0_RUNTIME_SELECT=1" "-DT1HA0_AESNI_AVAILABLE=1" "-Wall" "-Wextra" "-o" "/Users/chenwr/workspace/ceresdb/target/debug/build/fasthash-sys-bf79a6c7afd57249/out/src/smhasher/MurmurHash3.o" "-c" "src/smhasher/MurmurHash3.cpp"
  cargo:warning=clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
  exit status: 0
  TARGET = Some("aarch64-apple-darwin")
  OPT_LEVEL = Some("0")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = None
  DEBUG = Some("true")
  running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-Wno-implicit-fallthrough" "-Wno-unknown-attributes" "-msse4.2" "-maes" "-mavx" "-mavx2" "-DT1HA0_RUNTIME_SELECT=1" "-DT1HA0_AESNI_AVAILABLE=1" "-Wall" "-Wextra" "-o" "/Users/chenwr/workspace/ceresdb/target/debug/build/fasthash-sys-bf79a6c7afd57249/out/src/smhasher/Spooky.o" "-c" "src/smhasher/Spooky.cpp"
  cargo:warning=clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
  exit status: 0
  TARGET = Some("aarch64-apple-darwin")
  OPT_LEVEL = Some("0")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = None
  DEBUG = Some("true")
  running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-Wno-implicit-fallthrough" "-Wno-unknown-attributes" "-msse4.2" "-maes" "-mavx" "-mavx2" "-DT1HA0_RUNTIME_SELECT=1" "-DT1HA0_AESNI_AVAILABLE=1" "-Wall" "-Wextra" "-o" "/Users/chenwr/workspace/ceresdb/target/debug/build/fasthash-sys-bf79a6c7afd57249/out/src/smhasher/xxhash.o" "-c" "src/smhasher/xxhash.c"
  cargo:warning=clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
  exit status: 0
  TARGET = Some("aarch64-apple-darwin")
  OPT_LEVEL = Some("0")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = None
  DEBUG = Some("true")
  running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-Wno-implicit-fallthrough" "-Wno-unknown-attributes" "-msse4.2" "-maes" "-mavx" "-mavx2" "-DT1HA0_RUNTIME_SELECT=1" "-DT1HA0_AESNI_AVAILABLE=1" "-Wall" "-Wextra" "-o" "/Users/chenwr/workspace/ceresdb/target/debug/build/fasthash-sys-bf79a6c7afd57249/out/src/t1ha/src/t1ha0.o" "-c" "src/t1ha/src/t1ha0.c"
  cargo:warning=clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
  exit status: 0
  TARGET = Some("aarch64-apple-darwin")
  OPT_LEVEL = Some("0")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = None
  DEBUG = Some("true")
  running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-Wno-implicit-fallthrough" "-Wno-unknown-attributes" "-msse4.2" "-maes" "-mavx" "-mavx2" "-DT1HA0_RUNTIME_SELECT=1" "-DT1HA0_AESNI_AVAILABLE=1" "-Wall" "-Wextra" "-o" "/Users/chenwr/workspace/ceresdb/target/debug/build/fasthash-sys-bf79a6c7afd57249/out/src/t1ha/src/t1ha1.o" "-c" "src/t1ha/src/t1ha1.c"
  cargo:warning=clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
  exit status: 0
  TARGET = Some("aarch64-apple-darwin")
  OPT_LEVEL = Some("0")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = None
  DEBUG = Some("true")
  running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-Wno-implicit-fallthrough" "-Wno-unknown-attributes" "-msse4.2" "-maes" "-mavx" "-mavx2" "-DT1HA0_RUNTIME_SELECT=1" "-DT1HA0_AESNI_AVAILABLE=1" "-Wall" "-Wextra" "-o" "/Users/chenwr/workspace/ceresdb/target/debug/build/fasthash-sys-bf79a6c7afd57249/out/src/t1ha/src/t1ha2.o" "-c" "src/t1ha/src/t1ha2.c"
  cargo:warning=clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
  exit status: 0
  TARGET = Some("aarch64-apple-darwin")
  OPT_LEVEL = Some("0")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  HOST = Some("aarch64-apple-darwin")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = None
  DEBUG = Some("true")
  running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-Wno-implicit-fallthrough" "-Wno-unknown-attributes" "-msse4.2" "-maes" "-mavx" "-mavx2" "-DT1HA0_RUNTIME_SELECT=1" "-DT1HA0_AESNI_AVAILABLE=1" "-Wall" "-Wextra" "-o" "/Users/chenwr/workspace/ceresdb/target/debug/build/fasthash-sys-bf79a6c7afd57249/out/src/smhasher/metrohash64crc.o" "-c" "src/smhasher/metrohash64crc.cpp"
  cargo:warning=clang: warning: argument unused during compilation: '-msse4.2' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx' [-Wunused-command-line-argument]
  cargo:warning=clang: warning: argument unused during compilation: '-mavx2' [-Wunused-command-line-argument]
  cargo:warning=In file included from src/smhasher/metrohash64crc.cpp:28:
  cargo:warning=In file included from /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/nmmintrin.h:15:
  cargo:warning=In file included from /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/smmintrin.h:13:
  cargo:warning=In file included from /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/tmmintrin.h:13:
  cargo:warning=In file included from /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/pmmintrin.h:13:
  cargo:warning=In file included from /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/emmintrin.h:13:
  cargo:warning=In file included from /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/xmmintrin.h:13:
  cargo:warning=/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:33:5: error: use of undeclared identifier '__builtin_ia32_emms'; did you mean '__builtin_isless'?
  cargo:warning=    __builtin_ia32_emms();
  cargo:warning=    ^
  cargo:warning=/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:33:5: note: '__builtin_isless' declared here
  cargo:warning=/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:33:25: error: too few arguments to function call, expected 2, have 0
  cargo:warning=    __builtin_ia32_emms();
  cargo:warning=                        ^
  cargo:warning=/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:50:19: error: use of undeclared identifier '__builtin_ia32_vec_init_v2si'
  cargo:warning=    return (__m64)__builtin_ia32_vec_init_v2si(__i, 0);
  cargo:warning=                  ^
  cargo:warning=/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:67:12: error: use of undeclared identifier '__builtin_ia32_vec_ext_v2si'
  cargo:warning=    return __builtin_ia32_vec_ext_v2si((__v2si)__m, 0);
  cargo:warning=           ^
  cargo:warning=/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:129:19: error: use of undeclared identifier '__builtin_ia32_packsswb'
  cargo:warning=    return (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2);
  cargo:warning=                  ^
  cargo:warning=/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:159:19: error: use of undeclared identifier '__builtin_ia32_packssdw'
  cargo:warning=    return (__m64)__builtin_ia32_packssdw((__v2si)__m1, (__v2si)__m2);
  cargo:warning=                  ^
  cargo:warning=/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:189:19: error: use of undeclared identifier '__builtin_ia32_packuswb'
  cargo:warning=    return (__m64)__builtin_ia32_packuswb((__v4hi)__m1, (__v4hi)__m2);
  cargo:warning=                  ^
  cargo:warning=/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:216:19: error: use of undeclared identifier '__builtin_ia32_punpckhbw'
  cargo:warning=    return (__m64)__builtin_ia32_punpckhbw((__v8qi)__m1, (__v8qi)__m2);
  cargo:warning=                  ^
  cargo:warning=/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:239:19: error: use of undeclared identifier '__builtin_ia32_punpckhwd'
  cargo:warning=    return (__m64)__builtin_ia32_punpckhwd((__v4hi)__m1, (__v4hi)__m2);
  cargo:warning=                  ^
  cargo:warning=/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:260:19: error: use of undeclared identifier '__builtin_ia32_punpckhdq'
  cargo:warning=    return (__m64)__builtin_ia32_punpckhdq((__v2si)__m1, (__v2si)__m2);
  cargo:warning=                  ^
  cargo:warning=/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:287:19: error: use of undeclared identifier '__builtin_ia32_punpcklbw'
  cargo:warning=    return (__m64)__builtin_ia32_punpcklbw((__v8qi)__m1, (__v8qi)__m2);
  cargo:warning=                  ^
  cargo:warning=/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:310:19: error: use of undeclared identifier '__builtin_ia32_punpcklwd'
  cargo:warning=    return (__m64)__builtin_ia32_punpcklwd((__v4hi)__m1, (__v4hi)__m2);
  cargo:warning=                  ^
  cargo:warning=/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:331:19: error: use of undeclared identifier '__builtin_ia32_punpckldq'
  cargo:warning=    return (__m64)__builtin_ia32_punpckldq((__v2si)__m1, (__v2si)__m2);
  cargo:warning=                  ^
  cargo:warning=/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:352:19: error: use of undeclared identifier '__builtin_ia32_paddb'; did you mean '__builtin_arm_addg'?
  cargo:warning=    return (__m64)__builtin_ia32_paddb((__v8qi)__m1, (__v8qi)__m2);
  cargo:warning=                  ^
  cargo:warning=/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:352:19: note: '__builtin_arm_addg' declared here
  cargo:warning=/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:352:19: error: first argument of MTE builtin function must be a pointer ('__v8qi' (vector of 8 'char' values) invalid)
  cargo:warning=    return (__m64)__builtin_ia32_paddb((__v8qi)__m1, (__v8qi)__m2);
  cargo:warning=                  ^                    ~~~~~~~~~~~~
  cargo:warning=/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:373:19: error: use of undeclared identifier '__builtin_ia32_paddw'; did you mean '__builtin_arm_addg'?
  cargo:warning=    return (__m64)__builtin_ia32_paddw((__v4hi)__m1, (__v4hi)__m2);
  cargo:warning=                  ^
  cargo:warning=/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:352:19: note: '__builtin_arm_addg' declared here
  cargo:warning=    return (__m64)__builtin_ia32_paddb((__v8qi)__m1, (__v8qi)__m2);
  cargo:warning=                  ^
  cargo:warning=/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:373:19: error: first argument of MTE builtin function must be a pointer ('__v4hi' (vector of 4 'short' values) invalid)
  cargo:warning=    return (__m64)__builtin_ia32_paddw((__v4hi)__m1, (__v4hi)__m2);
  cargo:warning=                  ^                    ~~~~~~~~~~~~
  cargo:warning=/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:394:19: error: use of undeclared identifier '__builtin_ia32_paddd'; did you mean '__builtin_arm_addg'?
  cargo:warning=    return (__m64)__builtin_ia32_paddd((__v2si)__m1, (__v2si)__m2);
  cargo:warning=                  ^
  cargo:warning=/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:352:19: note: '__builtin_arm_addg' declared here
  cargo:warning=    return (__m64)__builtin_ia32_paddb((__v8qi)__m1, (__v8qi)__m2);
  cargo:warning=                  ^
  cargo:warning=/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include/mmintrin.h:394:19: error: first argument of MTE builtin function must be a pointer ('__v2si' (vector of 2 'int' values) invalid)
  cargo:warning=    return (__m64)__builtin_ia32_paddd((__v2si)__m1, (__v2si)__m2);
  cargo:warning=                  ^                    ~~~~~~~~~~~~
  cargo:warning=fatal error: too many errors emitted, stopping now [-ferror-limit=]
  cargo:warning=20 errors generated.
  exit status: 1

  --- stderr
  thread 'main' panicked at '

  Internal error occurred: Command "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-Wno-implicit-fallthrough" "-Wno-unknown-attributes" "-msse4.2" "-maes" "-mavx" "-mavx2" "-DT1HA0_RUNTIME_SELECT=1" "-DT1HA0_AESNI_AVAILABLE=1" "-Wall" "-Wextra" "-o" "/Users/chenwr/workspace/ceresdb/target/debug/build/fasthash-sys-bf79a6c7afd57249/out/src/smhasher/metrohash64crc.o" "-c" "src/smhasher/metrohash64crc.cpp" with args "cc" did not execute successfully (status code exit status: 1).

  ', /Users/chenwr/.cargo/registry/src/github.com-1ecc6299db9ec823/gcc-0.3.55/src/lib.rs:1672:5
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
error: build failed

Extend `QueryResponse` to support "Affected Rows"

Description

Our QueryResponse message doesn't support to pass how many rows are affected to the client.

message QueryResponse {
  common.ResponseHeader header = 1;
  enum SchemaType {
    AVRO = 0;
    JSON = 1;
  }
  SchemaType schema_type = 2;
  string schema_content = 3;
  repeated bytes rows = 4;
}

For some statements like INSERT/DELETE this is very useful. MySQL has a document about this https://dev.mysql.com/doc/c-api/8.0/en/mysql-affected-rows.html

mysql_affected_rows() may be called immediately after executing a statement with mysql_real_query() or mysql_query(). It returns the number of rows changed, deleted, or inserted by the last statement if it was an UPDATE, DELETE, or INSERT. For SELECT statements, mysql_affected_rows() works like mysql_num_rows().

Proposal

Add a field in QueryResponse to tell how many rows are affected. Consider this also used by SELECT which won't "affect" rows, I propose this field can be called row_count.

Additional context

Implement `ignore` interceptor in integration test framework

Description

Some cases are not expected to run due to unstable features, temporary changes or anything else. It should be supported to just ignore them.

Proposal

Implement the ignore interceptor. Proposed syntax:

-- CERESDB ignore: REASON

Follows the K-V format. Value for this interceptor is the reason why this case got ignored. It won't take effort and is a comment in fact.

Additional context

TBD: should we count/record those ignored cases and report it in the end?
ref #154

Add bounds `Send` and `Sync` to some traits

Description

Some common traits don't bound by Send + Sync in definition but are required (every place) where they are used, like WalManager.

Proposal

Bounding those traits:

#[async_trait]
pub trait WalManager: LogWriter + LogReader + Debug + Send + Sync {}

Additional context

CI: check diff on `Cargo.lock`

Description
Add CI job to check file diff of Cargo.lock.

We are tracking Cargo.lock with SCM, and should also check it in CI. An incorrect (usually is just not up-to-date) lock file won't fail a build but is annoying.

Proposal

diff lock file after cargo build. Fail if there is any diff.

Additional context

Docuement about ceresdb architecuture

Description
A document for architecture about ceresdb should be provided because the document is necessary for community deveplopers to start participating in development.

Proposal
Provide a document describing the basic architecture of ceresdb.

Additional context

Cache build artifacts to improve CI execution time

Is your feature request related to a problem or challenge? Please describe what you are trying to do.
CI is slow as it will build all crates twice

Description
Only build workspace once. And reuse the artifact to run tests.

Proposal
GitHub action provides a plugin cache to pass files across jobs that may help.

Additional context
Add any other context or screenshots about the feature request here.

Cache file in local file system

Target

Provides a local file system cache layer over object store

Design

Add an ObjectStore implementor CachedStore, which is made up of:

  • Local Store: a local file system cache
  • Remote Store: a remote OSS service
  • LRU Manager: a cache eviction policy (LRU) to keep the local store size under control.

Read

On serving a read request, the CachedStore will first check if the object is in the local store. If not, it will fetch it from the remote store and store it in the local store. To simplify the implementation, all the read sources returned are based on LocalStore. Ascii art below:

Workflow

(read)
       Serve I/O requests
              ▲ │
            4 │ │1
              │ │
   ┌──────────┴─▼─────────┐
   │                      │
   │  Object Store Cache  │
   │                      │
   └─┬─▲────────────┬─▲───┘
  2.1│ │3.1      2.2│ │3.2
     │ │            │ │
 ┌───▼─┴──┐      ┌──▼─┴─────┐
 │Local FS│      │Remote OSS│
 └────────┘      └──────────┘

Write

For write requests, we will write the content to both underlying stores.

Restart

To suit some deploy scenarios that aren't stateless, ObjectStore will try to load all existing entries from LocalStore to LRU Manager.

Purge

Both read and write operations may trigger purge on LocalStore. The purge policy is defined by the LRU Manager. It will get a delete list from LRU Manager and delete the list from LocalStore.

To ensure the total size of LocalStore is always less than the threshold, CachedStore will first purge enough space for the incoming new objects.

Other features

Config

Except for the basic configurations like the underlying provider of LocalStore and RemoteStore, threshold of LocalStore etc., we can also configure other behaviors like whether to cache write request, how to act on restart or cache evict policy.

Async Cache

It is doable to feed the data from RemoteStore directly to the user and write LocalStore asynchronously.

try to replace parquet with parquet2?

Description

replace parquet with parquet2

The five main differentiators in comparison with parquet are:

  • it uses #![forbid(unsafe_code)]
  • delegates parallelism downstream
  • decouples reading (IO intensive) from computing (CPU intensive)
  • it is faster (10-20x when reading to arrow format)
  • supports async read and write.
  • It is integration-tested against pyarrow and (py)spark 3

Proposal

Additional context

Integration test framework

Description

Provides a test framework to make us easy to write integration tests at SQL level.

Proposal

I plan to write this in python. It should be able to start server with special (non-default) configs, execute SQL and compare the result. Configuration, input data, SQL and expected output can be put in other text files.

Additional context

Other systems' framework:

Bump Arrow, Parquet and DataFusion

Description

Bump versions.
Target:

  • Arrow: 13.0.0
  • Parquet: 13.0.0
  • DataFusion: 8.0.0

Current:

  • Arrow: 7.0.0
  • Parquet: 7.0.0
  • DataFusion: a fork based on 6.0.0

Proposal
Maybe you have considered some ideas or solutions about this feature.

Additional context

Changelogs

Notable Changes:

  • DataFusion
    • The ExecutionPlan trait is no longer async
    • RuntimeEnv is now TaskContext, contains more task-relative info like SessionId and TaskId
    • Bugfix: temp file

add method to flush memtable manually

Is your feature request related to a problem or challenge? Please describe what you are trying to do.

Add method to flush memtable manually

Description
Currently memtable flush is controlled by should_flush_table, it would be convenient to provide a method to flush memtable explicitly, to release memory pressure or to persist data to underlying objectstore

Proposal
add a HTTP endpoint to flush memtable

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.