From 0939dc1d32c0b9c75fee5de68aedcbb76aa21f02 Mon Sep 17 00:00:00 2001 From: Yingwen Date: Wed, 5 Nov 2025 19:23:12 +0800 Subject: [PATCH] test: run sqlness for flat format (#7178) * test: support flat format in sqlness Signed-off-by: evenyag * test: replace region stats test result with NUM Signed-off-by: evenyag * ci: add flat format to sqlness ci Signed-off-by: evenyag --------- Signed-off-by: evenyag --- .github/workflows/develop.yml | 5 ++++- .../common/information_schema/region_statistics.result | 6 ++++-- .../common/information_schema/region_statistics.sql | 2 ++ tests/conf/datanode-test.toml.template | 6 ++++++ tests/conf/standalone-test.toml.template | 6 ++++++ tests/runner/src/cmd/bare.rs | 5 +++++ tests/runner/src/env/bare.rs | 1 + tests/runner/src/server_mode.rs | 3 +++ 8 files changed, 31 insertions(+), 3 deletions(-) diff --git a/.github/workflows/develop.yml b/.github/workflows/develop.yml index 8dde424c8e..af5ddc5368 100644 --- a/.github/workflows/develop.yml +++ b/.github/workflows/develop.yml @@ -613,6 +613,9 @@ jobs: - name: "MySQL Kvbackend" opts: "--setup-mysql" kafka: false + - name: "Flat format" + opts: "--enable-flat-format" + kafka: false timeout-minutes: 60 steps: - uses: actions/checkout@v4 @@ -808,7 +811,7 @@ jobs: - name: Setup external services working-directory: tests-integration/fixtures run: ../../.github/scripts/pull-test-deps-images.sh && docker compose up -d --wait - + - name: Run nextest cases run: cargo llvm-cov nextest --workspace --lcov --output-path lcov.info -F dashboard -F pg_kvbackend -F mysql_kvbackend env: diff --git a/tests/cases/standalone/common/information_schema/region_statistics.result b/tests/cases/standalone/common/information_schema/region_statistics.result index 14b8f890b0..8080a61741 100644 --- a/tests/cases/standalone/common/information_schema/region_statistics.result +++ b/tests/cases/standalone/common/information_schema/region_statistics.result @@ -22,6 +22,7 @@ INSERT INTO test VALUES Affected Rows: 3 -- SQLNESS SLEEP 3s +-- SQLNESS REPLACE (\s+\d+\s+) -- For regions using different WAL implementations, the manifest size may vary. -- The remote WAL implementation additionally stores a flushed entry ID when creating the manifest. SELECT SUM(region_rows),SUM(written_bytes_since_open), SUM(memtable_size), SUM(sst_size), SUM(index_size) @@ -31,15 +32,16 @@ SELECT SUM(region_rows),SUM(written_bytes_since_open), SUM(memtable_size), SUM(s +-------------------------------------------------------+--------------------------------------------------------------------+---------------------------------------------------------+----------------------------------------------------+------------------------------------------------------+ | sum(information_schema.region_statistics.region_rows) | sum(information_schema.region_statistics.written_bytes_since_open) | sum(information_schema.region_statistics.memtable_size) | sum(information_schema.region_statistics.sst_size) | sum(information_schema.region_statistics.index_size) | +-------------------------------------------------------+--------------------------------------------------------------------+---------------------------------------------------------+----------------------------------------------------+------------------------------------------------------+ -| 3 | 78 | 78 | 0 | 0 | +|||||| +-------------------------------------------------------+--------------------------------------------------------------------+---------------------------------------------------------+----------------------------------------------------+------------------------------------------------------+ +-- SQLNESS REPLACE (\s+\d+\s+) SELECT data_length, index_length, avg_row_length, table_rows FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 'test'; +-------------+--------------+----------------+------------+ | data_length | index_length | avg_row_length | table_rows | +-------------+--------------+----------------+------------+ -| 0 | 0 | 26 | 3 | +||||| +-------------+--------------+----------------+------------+ DROP TABLE test; diff --git a/tests/cases/standalone/common/information_schema/region_statistics.sql b/tests/cases/standalone/common/information_schema/region_statistics.sql index 70947adab2..3decb8130e 100644 --- a/tests/cases/standalone/common/information_schema/region_statistics.sql +++ b/tests/cases/standalone/common/information_schema/region_statistics.sql @@ -17,12 +17,14 @@ INSERT INTO test VALUES (21, 'c', 21); -- SQLNESS SLEEP 3s +-- SQLNESS REPLACE (\s+\d+\s+) -- For regions using different WAL implementations, the manifest size may vary. -- The remote WAL implementation additionally stores a flushed entry ID when creating the manifest. SELECT SUM(region_rows),SUM(written_bytes_since_open), SUM(memtable_size), SUM(sst_size), SUM(index_size) FROM INFORMATION_SCHEMA.REGION_STATISTICS WHERE table_id IN (SELECT TABLE_ID FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 'test' and table_schema = 'public'); +-- SQLNESS REPLACE (\s+\d+\s+) SELECT data_length, index_length, avg_row_length, table_rows FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 'test'; DROP TABLE test; diff --git a/tests/conf/datanode-test.toml.template b/tests/conf/datanode-test.toml.template index f15c30cb4e..b95472543e 100644 --- a/tests/conf/datanode-test.toml.template +++ b/tests/conf/datanode-test.toml.template @@ -3,6 +3,12 @@ mode = 'distributed' require_lease_before_startup = true rpc_runtime_size = 8 +[[region_engine]] +[region_engine.mito] +{{ if enable_flat_format }} +default_experimental_flat_format = true +{{ endif }} + [wal] {{ if is_raft_engine }} provider = "raft_engine" diff --git a/tests/conf/standalone-test.toml.template b/tests/conf/standalone-test.toml.template index 4b2258e1b7..509eac7ca6 100644 --- a/tests/conf/standalone-test.toml.template +++ b/tests/conf/standalone-test.toml.template @@ -2,6 +2,12 @@ mode = 'standalone' enable_memory_catalog = false require_lease_before_startup = true +[[region_engine]] +[region_engine.mito] +{{ if enable_flat_format }} +default_experimental_flat_format = true +{{ endif }} + [wal] {{ if is_raft_engine }} provider = "raft_engine" diff --git a/tests/runner/src/cmd/bare.rs b/tests/runner/src/cmd/bare.rs index bc9f00bf0d..e9a4ff8b79 100644 --- a/tests/runner/src/cmd/bare.rs +++ b/tests/runner/src/cmd/bare.rs @@ -102,6 +102,10 @@ pub struct BareCommand { /// Extra command line arguments when starting GreptimeDB binaries. #[clap(long)] extra_args: Vec, + + /// Enable flat format for storage engine (sets default_experimental_flat_format = true). + #[clap(long, default_value = "false")] + enable_flat_format: bool, } impl BareCommand { @@ -170,6 +174,7 @@ impl BareCommand { setup_etcd: self.setup_etcd, setup_pg: self.setup_pg, setup_mysql: self.setup_mysql, + enable_flat_format: self.enable_flat_format, }; let runner = Runner::new( diff --git a/tests/runner/src/env/bare.rs b/tests/runner/src/env/bare.rs index 0644151aaa..bf5319a4e3 100644 --- a/tests/runner/src/env/bare.rs +++ b/tests/runner/src/env/bare.rs @@ -76,6 +76,7 @@ pub struct StoreConfig { pub setup_etcd: bool, pub(crate) setup_pg: Option, pub(crate) setup_mysql: Option, + pub enable_flat_format: bool, } #[derive(Clone)] diff --git a/tests/runner/src/server_mode.rs b/tests/runner/src/server_mode.rs index 2e4cefa2c6..172baf32ff 100644 --- a/tests/runner/src/server_mode.rs +++ b/tests/runner/src/server_mode.rs @@ -105,6 +105,8 @@ struct ConfigContext { mysql_addr: String, // for standalone postgres_addr: String, + // enable flat format for storage engine + enable_flat_format: bool, } impl ServerMode { @@ -328,6 +330,7 @@ impl ServerMode { grpc_addr, mysql_addr, postgres_addr, + enable_flat_format: db_ctx.store_config().enable_flat_format, }; let rendered = tt.render(self.name(), &ctx).unwrap();