2021-02-28 07:25:56 +00:00
-- { echo }
drop table if exists tbl;
create table tbl (p Int64, t Int64, f Float64) Engine=MergeTree partition by p order by t settings index_granularity=1;
insert into tbl select number / 4, number, 0 from numbers(16);
select * from tbl WHERE indexHint(t = 1) order by t;
0 0 0
0 1 0
select * from tbl WHERE indexHint(t in (select toInt64(number) + 2 from numbers(3))) order by t;
0 1 0
0 2 0
0 3 0
1 4 0
select * from tbl WHERE indexHint(p = 2) order by t;
2 8 0
2 9 0
2 10 0
2 11 0
select * from tbl WHERE indexHint(p in (select toInt64(number) - 2 from numbers(3))) order by t;
0 0 0
0 1 0
0 2 0
0 3 0
drop table tbl;
drop table if exists XXXX;
2023-08-12 00:09:51 +00:00
create table XXXX (t Int64, f Float64) Engine=MergeTree order by t settings index_granularity=128, index_granularity_bytes = '10Mi';
2021-02-28 07:25:56 +00:00
insert into XXXX select number*60, 0 from numbers(100000);
2022-02-02 18:31:45 +00:00
SELECT sum(t) FROM XXXX WHERE indexHint(t = 42);
487680
2021-02-28 07:25:56 +00:00
drop table if exists XXXX;
2023-08-12 00:09:51 +00:00
create table XXXX (t Int64, f Float64) Engine=MergeTree order by t settings index_granularity=8192, index_granularity_bytes = '10Mi';
2021-02-28 07:25:56 +00:00
insert into XXXX select number*60, 0 from numbers(100000);
2023-07-17 02:17:33 +00:00
SELECT count() FROM XXXX WHERE indexHint(t = toDateTime(0)) SETTINGS optimize_use_implicit_projections = 1;
2021-02-28 07:25:56 +00:00
100000
drop table XXXX;
2023-07-21 06:53:06 +00:00
CREATE TABLE XXXX (p Nullable(Int64), k Decimal(76, 39)) ENGINE = MergeTree PARTITION BY toDate(p) ORDER BY k SETTINGS index_granularity = 1, allow_nullable_key = 1;
INSERT INTO XXXX FORMAT Values ('2020-09-01 00:01:02', 1), ('2020-09-01 20:01:03', 2), ('2020-09-02 00:01:03', 3);
2024-07-12 12:49:26 +00:00
SELECT count() FROM XXXX WHERE indexHint(p = 1.) SETTINGS optimize_use_implicit_projections = 1, enable_analyzer=0;
2023-07-21 06:53:06 +00:00
0
2024-02-12 19:36:41 +00:00
-- TODO: optimize_use_implicit_projections ignores indexHint (with analyzer) because source columns might be aliased.
2024-07-12 12:49:26 +00:00
SELECT count() FROM XXXX WHERE indexHint(p = 1.) SETTINGS optimize_use_implicit_projections = 1, enable_analyzer=1;
2024-02-12 19:36:41 +00:00
3
2023-07-21 06:53:06 +00:00
drop table XXXX;