Files
greptimedb/tests/cases/standalone/common/flow/flow_batch_join_subquery.result
discord9 d304df6e75 fix: run eval-interval flow without time window (#8231)
* fix: run eval-interval flow without time window

Signed-off-by: discord9 <discord9@163.com>

* test: cover eval-interval flow join query

Signed-off-by: discord9 <discord9@163.com>

* fix: address eval interval flow review comments

Signed-off-by: discord9 <discord9@163.com>

---------

Signed-off-by: discord9 <discord9@163.com>
2026-06-03 13:06:22 +00:00

131 lines
3.6 KiB
Plaintext

CREATE DATABASE flow_join_fixture;
Affected Rows: 1
CREATE TABLE flow_join_fixture."left_samples" (
source_id STRING,
left_value DOUBLE,
event_ts TIMESTAMP,
observed_at TIMESTAMP TIME INDEX
);
Affected Rows: 0
CREATE TABLE flow_join_fixture."right_samples" (
source_id STRING,
right_value DOUBLE,
sample_kind STRING,
event_ts TIMESTAMP,
observed_at TIMESTAMP TIME INDEX
);
Affected Rows: 0
-- Verify batching flow creation accepts aggregate subqueries joined by LEFT JOIN.
CREATE FLOW flow_batch_join_subquery SINK TO flow_batch_join_sink
EVAL INTERVAL '5m' AS
SELECT
l.source_id,
l.measure_name,
l.bucket_time,
l.left_event_ts,
l.left_value,
r.right_event_ts,
r.right_value
FROM (
SELECT
source_id,
'sample' AS measure_name,
date_trunc('minute', now()) AS bucket_time,
max(event_ts) AS left_event_ts,
last_value(left_value ORDER BY observed_at) AS left_value
FROM
flow_join_fixture."left_samples"
WHERE
observed_at BETWEEN date_trunc('minute', now()) - INTERVAL '5 minutes'
AND date_trunc('minute', now())
GROUP BY
source_id
) l
LEFT JOIN (
SELECT
source_id,
'sample' AS measure_name,
date_trunc('minute', now()) AS bucket_time,
max(event_ts) AS right_event_ts,
last_value(right_value ORDER BY observed_at) AS right_value
FROM
flow_join_fixture."right_samples"
WHERE
observed_at BETWEEN date_trunc('minute', now()) - INTERVAL '5 minutes'
AND date_trunc('minute', now())
AND sample_kind = 'primary'
GROUP BY
source_id
) r ON l.source_id = r.source_id AND l.bucket_time = r.bucket_time;
Affected Rows: 0
SELECT
source_table_names LIKE '%left_samples%' AS has_left_source,
source_table_names LIKE '%right_samples%' AS has_right_source,
options LIKE '%"flow_type":"batching"%' AS is_batching_flow
FROM
INFORMATION_SCHEMA.FLOWS
WHERE
flow_name = 'flow_batch_join_subquery';
+-----------------+------------------+------------------+
| has_left_source | has_right_source | is_batching_flow |
+-----------------+------------------+------------------+
| true | true | true |
+-----------------+------------------+------------------+
INSERT INTO flow_join_fixture."left_samples" VALUES
('source-a', 0.12, date_trunc('minute', now()), date_trunc('minute', now()));
Affected Rows: 1
INSERT INTO flow_join_fixture."right_samples" VALUES
('source-a', 100.5, 'primary', date_trunc('minute', now()), date_trunc('minute', now()));
Affected Rows: 1
-- SQLNESS REPLACE (ADMIN\sFLUSH_FLOW\('\w+'\)\s+\|\n\+-+\+\n\|\s+)[0-9]+\s+\| $1 FLOW_FLUSHED |
ADMIN FLUSH_FLOW('flow_batch_join_subquery');
+----------------------------------------------+
| ADMIN FLUSH_FLOW('flow_batch_join_subquery') |
+----------------------------------------------+
| FLOW_FLUSHED |
+----------------------------------------------+
SELECT source_id, measure_name, left_value, right_value FROM flow_batch_join_sink ORDER BY source_id;
+-----------+--------------+------------+-------------+
| source_id | measure_name | left_value | right_value |
+-----------+--------------+------------+-------------+
| source-a | sample | 0.12 | 100.5 |
+-----------+--------------+------------+-------------+
DROP FLOW flow_batch_join_subquery;
Affected Rows: 0
DROP TABLE flow_batch_join_sink;
Affected Rows: 0
DROP TABLE flow_join_fixture."left_samples";
Affected Rows: 0
DROP TABLE flow_join_fixture."right_samples";
Affected Rows: 0
DROP DATABASE flow_join_fixture;
Affected Rows: 0