<test> <settings> <!-- Not sure why it's needed. Maybe it has something to do with the resulting block size of Memory table. --> <optimize_trivial_insert_select>0</optimize_trivial_insert_select> </settings> <create_query>CREATE TABLE polygons (polygon Array(Array(Tuple(Float64, Float64)))) ENGINE = Memory</create_query> <create_query> INSERT INTO polygons WITH number + 1 AS radius SELECT [arrayMap(x -> (cos(x / 90. * pi()) * radius, sin(x / 90. * pi()) * radius), range(180))] FROM numbers_mt(5000000) SETTINGS max_insert_threads = 2, max_memory_usage = 30000000000 </create_query> <query>SELECT pointInPolygon((100, 100), polygon) FROM polygons FORMAT Null</query> <drop_query>DROP TABLE IF EXISTS polygons</drop_query> </test>