-- test if reordered insert is correctly handled CREATE TABLE bytes_log ( byte INT, ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- event time TIME INDEX(ts) ); -- 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) ); 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; SHOW CREATE TABLE approx_rate; -- 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); -- SQLNESS REPLACE (ADMIN\sFLUSH_FLOW\('\w+'\)\s+\|\n\+-+\+\n\|\s+)[0-9]+\s+\| $1 FLOW_FLUSHED | ADMIN FLUSH_FLOW('find_approx_rate'); SELECT rate, time_window FROM approx_rate ORDER BY time_window ASC; -- 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); -- SQLNESS REPLACE (ADMIN\sFLUSH_FLOW\('\w+'\)\s+\|\n\+-+\+\n\|\s+)[0-9]+\s+\| $1 FLOW_FLUSHED | ADMIN FLUSH_FLOW('find_approx_rate'); SELECT rate, time_window FROM approx_rate ORDER BY time_window ASC; -- reordered insert INSERT INTO bytes_log (ts, byte) VALUES ('2025-01-01 00:00:01', 101), ('2025-01-01 00:00:29', 300); -- SQLNESS REPLACE (ADMIN\sFLUSH_FLOW\('\w+'\)\s+\|\n\+-+\+\n\|\s+)[0-9]+\s+\| $1 FLOW_FLUSHED | ADMIN FLUSH_FLOW('find_approx_rate'); SELECT rate, time_window FROM approx_rate ORDER BY time_window ASC; -- reordered insert INSERT INTO bytes_log (ts, byte) VALUES ('2025-01-01 00:00:32', 450), ('2025-01-01 00:00:37', 500); -- SQLNESS REPLACE (ADMIN\sFLUSH_FLOW\('\w+'\)\s+\|\n\+-+\+\n\|\s+)[0-9]+\s+\| $1 FLOW_FLUSHED | ADMIN FLUSH_FLOW('find_approx_rate'); SELECT rate, time_window FROM approx_rate ORDER BY time_window ASC; DROP TABLE bytes_log; DROP FLOW find_approx_rate; DROP TABLE approx_rate;