CREATE TABLE bsm_segby(ts timestamptz NOT NULL, grp int NOT NULL, name text NOT NULL);
SELECT create_hypertable('bsm_segby','ts',chunk_time_interval=>interval '100 day');
ALTER TABLE bsm_segby SET (timescaledb.compress,
timescaledb.compress_segmentby='grp',
timescaledb.compress_orderby='name asc, ts asc');
INSERT INTO bsm_segby
SELECT '2024-08-01'::timestamptz + g*interval '1 min', g%4,
'k'||lpad(((g*5)%17)::text,3,'0')
FROM generate_series(0,4379) g;
SELECT count(compress_chunk(c)) FROM show_chunks('bsm_segby') c;
-- Expected 0. Returns 1.
SELECT count(*) misorder FROM (
SELECT name, ts, lag(name) OVER () pn, lag(ts) OVER () pt
FROM (SELECT name, ts FROM bsm_segby ORDER BY name, ts) s
) z WHERE pn IS NOT NULL AND (name<pn OR (name=pn AND ts<pt));
-- Merge-join variant: XX000.
SET enable_hashjoin=off; SET enable_nestloop=off;
SET max_parallel_workers_per_gather=0;
SELECT count(*) FROM (SELECT name, ts FROM bsm_segby ORDER BY name, ts) a
JOIN (SELECT name, ts FROM bsm_segby ORDER BY name, ts) b USING (name, ts);
-- ERROR: mergejoin input data is out of order