mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-01-05 21:02:58 +00:00
* fix unit tests * fix: sqlness * fix/default-time-window: ## Add Helper Functions and Enhance Compaction Tests - **Refactor Compaction Logic**: Introduced helper functions `flush` and `compact` in `compaction_test.rs` to streamline compaction operations. - **Enhance Compaction Tests**: Added a new test `test_infer_compaction_time_window` in `compaction_test.rs` to verify compaction time window inference. - **Testing Improvements**: Added `#[cfg(test)]` attribute to `new_multi_partitions` in `time_partition.rs` to ensure it's only included in test builds. * fix/default-time-window: - **Refactor `TimePartition` Struct**: Removed unnecessary comments regarding `time_range` in `time_partition.rs`. - **Enhance `TimePartitions` Functionality**: Added a method `part_duration_or_default` to provide a default partition duration in `time_partition.rs`. - **Update SQL Test Cases**: Modified SQL operations and expected results in `scan_big_varchar.result` and `scan_big_varchar.sql` to reflect changes in data manipulation logic. * fix/default-time-window: ### Update Time Partition Default Duration - **Refactor Default Duration**: Introduced `INITIAL_TIME_WINDOW` constant to define the default time window duration as `Duration::from_days(1)`. This change replaces multiple instances of the hardcoded default duration across the `time_partition.rs` file. - **Files Affected**: `time_partition.rs` * fix/default-time-window: ## Update Partition Duration Handling - **`time_partition.rs`**: Refactored `part_duration` to be non-optional, removing `Option` wrapper. Updated logic to use `unwrap_or` with `INITIAL_TIME_WINDOW` where necessary. Adjusted related methods and tests to accommodate this change. - **`version.rs` (memtable and region)**: Updated handling of `part_duration` to align with changes in `time_partition.rs`, ensuring consistent use of non-optional `Duration`. * fix/default-time-window: ### Improve Error Context in `time_partition.rs` - Enhanced error context message in `time_partition.rs` to provide clearer information on partition time range issues, including bucket size details. Signed-off-by: Lei, HUANG <lhuang@greptime.com> --------- Signed-off-by: Lei, HUANG <lhuang@greptime.com>
190 lines
4.8 KiB
Plaintext
190 lines
4.8 KiB
Plaintext
-- test if reordered insert is correctly handled
|
|
CREATE TABLE bytes_log (
|
|
byte INT,
|
|
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
-- event time
|
|
TIME INDEX(ts)
|
|
);
|
|
|
|
Affected Rows: 0
|
|
|
|
-- TODO(discord9): remove this after auto infer table's time index is impl
|
|
CREATE TABLE approx_rate (
|
|
rate DOUBLE,
|
|
time_window TIMESTAMP,
|
|
update_at TIMESTAMP,
|
|
TIME INDEX(time_window)
|
|
);
|
|
|
|
Affected Rows: 0
|
|
|
|
CREATE FLOW find_approx_rate SINK TO approx_rate AS
|
|
SELECT
|
|
(max(byte) - min(byte)) / 30.0 as rate,
|
|
date_bin(INTERVAL '30 second', ts) as time_window
|
|
from
|
|
bytes_log
|
|
GROUP BY
|
|
time_window;
|
|
|
|
Affected Rows: 0
|
|
|
|
SHOW CREATE TABLE approx_rate;
|
|
|
|
+-------------+--------------------------------------------+
|
|
| Table | Create Table |
|
|
+-------------+--------------------------------------------+
|
|
| approx_rate | CREATE TABLE IF NOT EXISTS "approx_rate" ( |
|
|
| | "rate" DOUBLE NULL, |
|
|
| | "time_window" TIMESTAMP(3) NOT NULL, |
|
|
| | "update_at" TIMESTAMP(3) NULL, |
|
|
| | TIME INDEX ("time_window") |
|
|
| | ) |
|
|
| | |
|
|
| | ENGINE=mito |
|
|
| | |
|
|
+-------------+--------------------------------------------+
|
|
|
|
-- reordered insert, also test if null is handled correctly
|
|
INSERT INTO
|
|
bytes_log (ts, byte)
|
|
VALUES
|
|
('2023-01-01 00:00:01', NULL),
|
|
('2023-01-01 00:00:29', 300);
|
|
|
|
Affected Rows: 2
|
|
|
|
-- SQLNESS REPLACE (ADMIN\sFLUSH_FLOW\('\w+'\)\s+\|\n\+-+\+\n\|\s+)[0-9]+\s+\| $1 FLOW_FLUSHED |
|
|
ADMIN FLUSH_FLOW('find_approx_rate');
|
|
|
|
+--------------------------------------+
|
|
| ADMIN FLUSH_FLOW('find_approx_rate') |
|
|
+--------------------------------------+
|
|
| FLOW_FLUSHED |
|
|
+--------------------------------------+
|
|
|
|
SELECT
|
|
rate,
|
|
time_window
|
|
FROM
|
|
approx_rate
|
|
ORDER BY time_window ASC;
|
|
|
|
+------+---------------------+
|
|
| rate | time_window |
|
|
+------+---------------------+
|
|
| 0.0 | 2023-01-01T00:00:00 |
|
|
+------+---------------------+
|
|
|
|
-- reordered insert, also test if null is handled correctly
|
|
INSERT INTO
|
|
bytes_log (ts, byte)
|
|
VALUES
|
|
('2022-01-01 00:00:01', NULL),
|
|
('2022-01-01 00:00:29', NULL);
|
|
|
|
Affected Rows: 2
|
|
|
|
-- SQLNESS REPLACE (ADMIN\sFLUSH_FLOW\('\w+'\)\s+\|\n\+-+\+\n\|\s+)[0-9]+\s+\| $1 FLOW_FLUSHED |
|
|
ADMIN FLUSH_FLOW('find_approx_rate');
|
|
|
|
+--------------------------------------+
|
|
| ADMIN FLUSH_FLOW('find_approx_rate') |
|
|
+--------------------------------------+
|
|
| FLOW_FLUSHED |
|
|
+--------------------------------------+
|
|
|
|
SELECT
|
|
rate,
|
|
time_window
|
|
FROM
|
|
approx_rate
|
|
ORDER BY time_window ASC;
|
|
|
|
+------+---------------------+
|
|
| rate | time_window |
|
|
+------+---------------------+
|
|
| | 2022-01-01T00:00:00 |
|
|
| 0.0 | 2023-01-01T00:00:00 |
|
|
+------+---------------------+
|
|
|
|
-- reordered insert
|
|
INSERT INTO
|
|
bytes_log (ts, byte)
|
|
VALUES
|
|
('2025-01-01 00:00:01', 101),
|
|
('2025-01-01 00:00:29', 300);
|
|
|
|
Affected Rows: 2
|
|
|
|
-- SQLNESS REPLACE (ADMIN\sFLUSH_FLOW\('\w+'\)\s+\|\n\+-+\+\n\|\s+)[0-9]+\s+\| $1 FLOW_FLUSHED |
|
|
ADMIN FLUSH_FLOW('find_approx_rate');
|
|
|
|
+--------------------------------------+
|
|
| ADMIN FLUSH_FLOW('find_approx_rate') |
|
|
+--------------------------------------+
|
|
| FLOW_FLUSHED |
|
|
+--------------------------------------+
|
|
|
|
SELECT
|
|
rate,
|
|
time_window
|
|
FROM
|
|
approx_rate
|
|
ORDER BY time_window ASC;
|
|
|
|
+-------------------+---------------------+
|
|
| rate | time_window |
|
|
+-------------------+---------------------+
|
|
| | 2022-01-01T00:00:00 |
|
|
| 0.0 | 2023-01-01T00:00:00 |
|
|
| 6.633333333333334 | 2025-01-01T00:00:00 |
|
|
+-------------------+---------------------+
|
|
|
|
-- reordered insert
|
|
INSERT INTO
|
|
bytes_log (ts, byte)
|
|
VALUES
|
|
('2025-01-01 00:00:32', 450),
|
|
('2025-01-01 00:00:37', 500);
|
|
|
|
Affected Rows: 2
|
|
|
|
-- SQLNESS REPLACE (ADMIN\sFLUSH_FLOW\('\w+'\)\s+\|\n\+-+\+\n\|\s+)[0-9]+\s+\| $1 FLOW_FLUSHED |
|
|
ADMIN FLUSH_FLOW('find_approx_rate');
|
|
|
|
+--------------------------------------+
|
|
| ADMIN FLUSH_FLOW('find_approx_rate') |
|
|
+--------------------------------------+
|
|
| FLOW_FLUSHED |
|
|
+--------------------------------------+
|
|
|
|
SELECT
|
|
rate,
|
|
time_window
|
|
FROM
|
|
approx_rate
|
|
ORDER BY time_window ASC;
|
|
|
|
+--------------------+---------------------+
|
|
| rate | time_window |
|
|
+--------------------+---------------------+
|
|
| | 2022-01-01T00:00:00 |
|
|
| 0.0 | 2023-01-01T00:00:00 |
|
|
| 6.633333333333334 | 2025-01-01T00:00:00 |
|
|
| 1.6666666666666667 | 2025-01-01T00:00:30 |
|
|
+--------------------+---------------------+
|
|
|
|
DROP TABLE bytes_log;
|
|
|
|
Affected Rows: 0
|
|
|
|
DROP FLOW find_approx_rate;
|
|
|
|
Affected Rows: 0
|
|
|
|
DROP TABLE approx_rate;
|
|
|
|
Affected Rows: 0
|
|
|