chbench.slt 85 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672
  1. # Copyright Materialize, Inc. and contributors. All rights reserved.
  2. #
  3. # Use of this software is governed by the Business Source License
  4. # included in the LICENSE file at the root of this repository.
  5. #
  6. # As of the Change Date specified in that file, in accordance with
  7. # the Business Source License, use of this software will be governed
  8. # by the Apache License, Version 2.0.
  9. simple conn=mz_system,user=mz_system
  10. ALTER SYSTEM SET unsafe_enable_table_keys = true
  11. ----
  12. COMPLETE 0
  13. statement ok
  14. CREATE TABLE warehouse (
  15. w_id integer,
  16. w_name char(10),
  17. w_street_1 char(20),
  18. w_street_2 char(20),
  19. w_city char(20),
  20. w_state char(2),
  21. w_zip char(9),
  22. w_tax decimal(4, 4),
  23. w_ytd decimal(12, 2),
  24. PRIMARY KEY (w_id)
  25. )
  26. statement ok
  27. CREATE TABLE district (
  28. -- should be smallint, see database-issues#1291
  29. d_id integer,
  30. d_w_id integer,
  31. d_name char(10),
  32. d_street_1 char(20),
  33. d_street_2 char(20),
  34. d_city char(20),
  35. d_state char(2),
  36. d_zip char(9),
  37. d_tax decimal(4, 4),
  38. d_ytd decimal(12, 2),
  39. d_next_o_id integer,
  40. PRIMARY KEY (d_w_id, d_id)
  41. )
  42. statement ok
  43. CREATE INDEX fk_district_warehouse ON district (d_w_id ASC)
  44. statement ok
  45. CREATE TABLE customer (
  46. -- should be smallint, see database-issues#1291
  47. c_id integer,
  48. -- should be smallint, see database-issues#1291
  49. c_d_id integer,
  50. c_w_id integer,
  51. c_first char(16),
  52. c_middle char(2),
  53. c_last char(16),
  54. c_street_1 char(20),
  55. c_street_2 char(20),
  56. c_city char(20),
  57. c_state char(2),
  58. c_zip char(9),
  59. c_phone char(16),
  60. c_since DATE,
  61. c_credit char(2),
  62. c_credit_lim decimal(12, 2),
  63. c_discount decimal(4, 4),
  64. c_balance decimal(12, 2),
  65. c_ytd_payment decimal(12, 2),
  66. -- should be smallint, see database-issues#1291
  67. c_payment_cnt integer,
  68. -- should be smallint, see database-issues#1291
  69. c_delivery_cnt integer,
  70. c_data text,
  71. c_n_nationkey integer,
  72. PRIMARY KEY(c_w_id, c_d_id, c_id)
  73. )
  74. statement ok
  75. CREATE INDEX fk_customer_district ON customer(c_w_id ASC, c_d_id ASC)
  76. statement ok
  77. CREATE INDEX fk_customer_nation ON customer(c_n_nationkey ASC)
  78. statement ok
  79. CREATE TABLE history (
  80. -- should be smallint, see database-issues#1291
  81. h_c_id integer,
  82. -- should be smallint, see database-issues#1291
  83. h_c_d_id integer,
  84. h_c_w_id integer,
  85. -- should be smallint, see database-issues#1291
  86. h_d_id integer,
  87. h_w_id integer,
  88. h_date date,
  89. h_amount decimal(6, 2),
  90. h_data char(24)
  91. )
  92. statement ok
  93. CREATE INDEX fk_history_customer ON history (h_c_w_id ASC, h_c_d_id ASC, h_c_id ASC)
  94. statement ok
  95. CREATE INDEX fk_history_district ON history (h_w_id ASC, h_d_id ASC)
  96. statement ok
  97. CREATE TABLE neworder (
  98. no_o_id integer,
  99. -- should be smallint, see database-issues#1291
  100. no_d_id integer,
  101. no_w_id integer,
  102. PRIMARY KEY (no_w_id, no_d_id, no_o_id)
  103. )
  104. statement ok
  105. CREATE TABLE "order" (
  106. o_id integer,
  107. -- should be smallint, see database-issues#1291
  108. o_d_id integer,
  109. o_w_id integer,
  110. -- should be smallint, see database-issues#1291
  111. o_c_id integer,
  112. o_entry_d date,
  113. -- should be smallint, see database-issues#1291
  114. o_carrier_id integer,
  115. -- should be smallint, see database-issues#1291
  116. o_ol_cnt integer,
  117. -- should be smallint, see database-issues#1291
  118. o_all_local integer,
  119. PRIMARY KEY (o_w_id, o_d_id, o_id)
  120. )
  121. statement ok
  122. CREATE INDEX fk_order_customer ON order (o_w_id ASC, o_d_id ASC, o_c_id ASC)
  123. statement ok
  124. CREATE TABLE orderline (
  125. ol_o_id integer,
  126. -- should be smallint, see database-issues#1291
  127. ol_d_id integer,
  128. ol_w_id integer,
  129. -- should be smallint, see database-issues#1291
  130. ol_number integer,
  131. ol_i_id integer,
  132. ol_supply_w_id integer,
  133. ol_delivery_d date,
  134. -- should be smallint, see database-issues#1291
  135. ol_quantity integer,
  136. ol_amount decimal(6, 2),
  137. ol_dist_info char(24),
  138. PRIMARY KEY (ol_w_id, ol_d_id, ol_o_id, ol_number)
  139. )
  140. statement ok
  141. CREATE INDEX fk_orderline_order ON orderline (ol_w_id ASC, ol_d_id ASC, ol_o_id ASC)
  142. statement ok
  143. CREATE INDEX fk_orderline_stock ON orderline (ol_supply_w_id ASC, ol_i_id ASC)
  144. statement ok
  145. CREATE INDEX fk_orderline_item ON orderline (ol_i_id ASC)
  146. statement ok
  147. CREATE TABLE item (
  148. i_id integer,
  149. -- should be smallint, see database-issues#1291
  150. i_im_id integer,
  151. i_name char(24),
  152. i_price decimal(5, 2),
  153. i_data char(50),
  154. PRIMARY KEY (i_id)
  155. )
  156. statement ok
  157. CREATE TABLE stock (
  158. s_i_id integer,
  159. s_w_id integer,
  160. -- smallint
  161. s_quantity integer,
  162. s_dist_01 char(24),
  163. s_dist_02 char(24),
  164. s_dist_03 char(24),
  165. s_dist_04 char(24),
  166. s_dist_05 char(24),
  167. s_dist_06 char(24),
  168. s_dist_07 char(24),
  169. s_dist_08 char(24),
  170. s_dist_09 char(24),
  171. s_dist_10 char(24),
  172. s_ytd integer,
  173. -- should be smallint, see database-issues#1291
  174. s_order_cnt integer,
  175. -- should be smallint, see database-issues#1291
  176. s_remote_cnt integer,
  177. s_data char(50),
  178. s_su_suppkey integer NOT NULL,
  179. PRIMARY KEY (s_w_id, s_i_id)
  180. )
  181. statement ok
  182. CREATE INDEX fk_stock_warehouse ON stock (s_w_id ASC)
  183. statement ok
  184. CREATE INDEX fk_stock_item ON stock (s_i_id ASC)
  185. statement ok
  186. CREATE INDEX fk_stock_supplier ON stock (s_su_suppkey ASC)
  187. statement ok
  188. CREATE TABLE nation (
  189. -- should be smallint, see database-issues#1291
  190. n_nationkey integer NOT NULL,
  191. n_name char(25) NOT NULL,
  192. -- should be smallint, see database-issues#1291
  193. n_regionkey integer NOT NULL,
  194. n_comment char(152) NOT NULL,
  195. PRIMARY KEY (n_nationkey)
  196. )
  197. statement ok
  198. CREATE INDEX fk_nation_regionkey ON nation (n_regionkey ASC)
  199. statement ok
  200. CREATE TABLE supplier (
  201. -- should be smallint, see database-issues#1291
  202. su_suppkey integer NOT NULL,
  203. su_name char(25) NOT NULL,
  204. su_address char(40) NOT NULL,
  205. -- should be smallint, see database-issues#1291
  206. su_nationkey integer NOT NULL,
  207. su_phone char(15) NOT NULL,
  208. su_acctbal decimal(12, 2) NOT NULL,
  209. su_comment char(101) NOT NULL,
  210. PRIMARY KEY (su_suppkey)
  211. )
  212. statement ok
  213. CREATE INDEX fk_supplier_nationkey ON supplier (su_nationkey ASC)
  214. statement ok
  215. CREATE TABLE region (
  216. -- should be smallint, see database-issues#1291
  217. r_regionkey integer NOT NULL,
  218. r_name char(55) NOT NULL,
  219. r_comment char(152) NOT NULL,
  220. PRIMARY KEY (r_regionkey)
  221. )
  222. # Query 01
  223. query T multiline
  224. EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR
  225. SELECT
  226. ol_number,
  227. sum(ol_quantity) AS sum_qty,
  228. sum(ol_amount) AS sum_amount,
  229. avg(ol_quantity) AS avg_qty,
  230. avg(ol_amount) AS avg_amount,
  231. count(*) AS count_order
  232. FROM orderline
  233. WHERE ol_delivery_d > TIMESTAMP '2007-01-02 00:00:00.000000'
  234. GROUP BY ol_number
  235. ORDER BY ol_number
  236. ----
  237. Explained Query:
  238. Finish order_by=[#0{ol_number} asc nulls_last] output=[#0..=#5]
  239. Project (#0{ol_number}..=#2{sum_ol_amount}, #6, #7, #5{count}) // { arity: 6 }
  240. Map ((bigint_to_numeric(#1{sum_ol_quantity}) / bigint_to_numeric(case when (#3{count_ol_quantity} = 0) then null else #3{count_ol_quantity} end)), (#2{sum_ol_amount} / bigint_to_numeric(case when (#4{count_ol_amount} = 0) then null else #4{count_ol_amount} end))) // { arity: 8 }
  241. Reduce group_by=[#0{ol_number}] aggregates=[sum(#1{ol_quantity}), sum(#2{ol_amount}), count(#1{ol_quantity}), count(#2{ol_amount}), count(*)] // { arity: 6 }
  242. Project (#3{ol_number}, #7{ol_quantity}, #8{ol_amount}) // { arity: 3 }
  243. Filter (date_to_timestamp(#6{ol_delivery_d}) > 2007-01-02 00:00:00) // { arity: 10 }
  244. ReadIndex on=orderline fk_orderline_order=[*** full scan ***] // { arity: 10 }
  245. Used Indexes:
  246. - materialize.public.fk_orderline_order (*** full scan ***)
  247. Target cluster: quickstart
  248. EOF
  249. # Query 02
  250. query T multiline
  251. EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR
  252. SELECT su_suppkey, su_name, n_name, i_id, i_name, su_address, su_phone, su_comment
  253. FROM
  254. item, supplier, stock, nation, region,
  255. (
  256. SELECT
  257. s_i_id AS m_i_id,
  258. min(s_quantity) AS m_s_quantity
  259. FROM stock, supplier, nation, region
  260. WHERE s_su_suppkey = su_suppkey
  261. AND su_nationkey = n_nationkey
  262. AND n_regionkey = r_regionkey
  263. AND r_name like 'EUROP%'
  264. GROUP BY s_i_id
  265. ) m
  266. WHERE i_id = s_i_id
  267. AND s_su_suppkey = su_suppkey
  268. AND su_nationkey = n_nationkey
  269. AND n_regionkey = r_regionkey
  270. AND i_data like '%b'
  271. AND r_name like 'EUROP%'
  272. AND i_id = m_i_id
  273. AND s_quantity = m_s_quantity
  274. ORDER BY n_name, su_name, i_id
  275. ----
  276. Explained Query:
  277. Finish order_by=[#2{n_name} asc nulls_last, #1{su_name} asc nulls_last, #3{i_id} asc nulls_last] output=[#0..=#7]
  278. With
  279. cte l0 =
  280. ArrangeBy keys=[[#0{r_regionkey}]] // { arity: 1 }
  281. Project (#0{r_regionkey}) // { arity: 1 }
  282. Filter like["EUROP%"](padchar(#1{r_name})) // { arity: 3 }
  283. ReadStorage materialize.public.region // { arity: 3 }
  284. Return // { arity: 8 }
  285. Project (#2{su_suppkey}, #3{su_name}, #12{n_name}, #0{i_id}, #1{i_name}, #4{su_address}, #6{su_phone}, #7{su_comment}) // { arity: 8 }
  286. Join on=(#0{i_id} = #8{s_i_id} = #15{s_i_id} AND #2{su_suppkey} = #10{s_su_suppkey} AND #5{su_nationkey} = #11{n_nationkey} AND #9{s_quantity} = #16{min_s_quantity} AND #13{n_regionkey} = #14{r_regionkey}) type=delta // { arity: 17 }
  287. implementation
  288. %0:item » %5[#0]UKA » %2:stock[#0{s_i_id}, #1{s_quantity}]KK » %1:supplier[#0{su_suppkey}]UK » %3:nation[#0{n_nationkey}]UK » %4:l0[#0{r_regionkey}]UKlf
  289. %1:supplier » %3:nation[#0{n_nationkey}]UK » %4:l0[#0{r_regionkey}]UKlf » %2:stock[#2{s_su_suppkey}]KA » %5[#0{m_i_id}, #1{m_s_quantity}]UKK » %0:item[#0{i_id}]UKlf
  290. %2:stock » %5[#0{m_i_id}, #1{m_s_quantity}]UKK » %0:item[#0{i_id}]UKlf » %1:supplier[#0{su_suppkey}]UK » %3:nation[#0{n_nationkey}]UK » %4:l0[#0{r_regionkey}]UKlf
  291. %3:nation » %4:l0[#0{r_regionkey}]UKlf » %1:supplier[#3{su_nationkey}]KA » %2:stock[#2{s_su_suppkey}]KA » %5[#0{m_i_id}, #1{m_s_quantity}]UKK » %0:item[#0{i_id}]UKlf
  292. %4:l0 » %3:nation[#2{n_regionkey}]KA » %1:supplier[#3{su_nationkey}]KA » %2:stock[#2{s_su_suppkey}]KA » %5[#0{m_i_id}, #1{m_s_quantity}]UKK » %0:item[#0{i_id}]UKlf
  293. %5 » %0:item[#0{i_id}]UKlf » %2:stock[#0{s_i_id}, #1{s_quantity}]KK » %1:supplier[#0{su_suppkey}]UK » %3:nation[#0{n_nationkey}]UK » %4:l0[#0{r_regionkey}]UKlf
  294. ArrangeBy keys=[[#0{i_id}]] // { arity: 2 }
  295. Project (#0{i_id}, #2{i_name}) // { arity: 2 }
  296. Filter like["%b"](padchar(#4{i_data})) // { arity: 5 }
  297. ReadStorage materialize.public.item // { arity: 5 }
  298. ArrangeBy keys=[[#0{su_suppkey}], [#3{su_nationkey}]] // { arity: 6 }
  299. Project (#0{su_suppkey}..=#4{su_phone}, #6{su_comment}) // { arity: 6 }
  300. ReadIndex on=supplier fk_supplier_nationkey=[*** full scan ***] // { arity: 7 }
  301. ArrangeBy keys=[[#0{s_i_id}, #1{s_quantity}], [#2{s_su_suppkey}]] // { arity: 3 }
  302. Project (#0{s_i_id}, #2{s_quantity}, #17{s_su_suppkey}) // { arity: 3 }
  303. Filter (#2{s_quantity}) IS NOT NULL // { arity: 18 }
  304. ReadIndex on=stock fk_stock_supplier=[*** full scan ***] // { arity: 18 }
  305. ArrangeBy keys=[[#0{n_nationkey}], [#2{n_regionkey}]] // { arity: 3 }
  306. Project (#0{n_nationkey}..=#2{n_regionkey}) // { arity: 3 }
  307. ReadIndex on=nation fk_nation_regionkey=[*** full scan ***] // { arity: 4 }
  308. Get l0 // { arity: 1 }
  309. ArrangeBy keys=[[#0{s_i_id}], [#0{s_i_id}, #1{min_s_quantity}]] // { arity: 2 }
  310. Filter (#1{min_s_quantity}) IS NOT NULL // { arity: 2 }
  311. Reduce group_by=[#0{s_i_id}] aggregates=[min(#1{s_quantity})] // { arity: 2 }
  312. Project (#0{s_i_id}, #2{s_quantity}) // { arity: 2 }
  313. Join on=(#17{s_su_suppkey} = #18{su_suppkey} AND #19{su_nationkey} = #20{n_nationkey} AND #21{n_regionkey} = #22{r_regionkey}) type=delta // { arity: 23 }
  314. implementation
  315. %0:stock » %1:supplier[#0{su_suppkey}]UK » %2:nation[#0{n_nationkey}]UK » %3:l0[#0{r_regionkey}]UKlf
  316. %1:supplier » %2:nation[#0{n_nationkey}]UK » %3:l0[#0{r_regionkey}]UKlf » %0:stock[#17{s_su_suppkey}]KA
  317. %2:nation » %3:l0[#0{r_regionkey}]UKlf » %1:supplier[#1{su_nationkey}]KA » %0:stock[#17{s_su_suppkey}]KA
  318. %3:l0 » %2:nation[#1{n_regionkey}]KA » %1:supplier[#1{su_nationkey}]KA » %0:stock[#17{s_su_suppkey}]KA
  319. ArrangeBy keys=[[#17{s_su_suppkey}]] // { arity: 18 }
  320. ReadIndex on=stock fk_stock_supplier=[delta join 1st input (full scan)] // { arity: 18 }
  321. ArrangeBy keys=[[#0{su_suppkey}], [#1{su_nationkey}]] // { arity: 2 }
  322. Project (#0{su_suppkey}, #3{su_nationkey}) // { arity: 2 }
  323. ReadIndex on=supplier fk_supplier_nationkey=[*** full scan ***] // { arity: 7 }
  324. ArrangeBy keys=[[#0{n_nationkey}], [#1{n_regionkey}]] // { arity: 2 }
  325. Project (#0{n_nationkey}, #2{n_regionkey}) // { arity: 2 }
  326. ReadIndex on=nation fk_nation_regionkey=[*** full scan ***] // { arity: 4 }
  327. Get l0 // { arity: 1 }
  328. Source materialize.public.item
  329. filter=(like["%b"](padchar(#4{i_data})))
  330. Source materialize.public.region
  331. filter=(like["EUROP%"](padchar(#1{r_name})))
  332. Used Indexes:
  333. - materialize.public.fk_stock_supplier (*** full scan ***, delta join 1st input (full scan))
  334. - materialize.public.fk_nation_regionkey (*** full scan ***)
  335. - materialize.public.fk_supplier_nationkey (*** full scan ***)
  336. Target cluster: quickstart
  337. EOF
  338. # Query 03
  339. query T multiline
  340. EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR
  341. SELECT ol_o_id, ol_w_id, ol_d_id, sum(ol_amount) AS revenue, o_entry_d
  342. FROM customer, neworder, "order", orderline
  343. WHERE c_state LIKE 'A%'
  344. AND c_id = o_c_id
  345. AND c_w_id = o_w_id
  346. AND c_d_id = o_d_id
  347. AND no_w_id = o_w_id
  348. AND no_d_id = o_d_id
  349. AND no_o_id = o_id
  350. AND ol_w_id = o_w_id
  351. AND ol_d_id = o_d_id
  352. AND ol_o_id = o_id
  353. AND o_entry_d > TIMESTAMP '2007-01-02 00:00:00.000000'
  354. GROUP BY ol_o_id, ol_w_id, ol_d_id, o_entry_d
  355. ORDER BY revenue DESC, o_entry_d
  356. ----
  357. Explained Query:
  358. Finish order_by=[#3{sum_ol_amount} desc nulls_first, #4{o_entry_d} asc nulls_last] output=[#0..=#4]
  359. Project (#0{no_o_id}..=#2{c_d_id}, #4{sum_ol_amount}, #3{o_entry_d}) // { arity: 5 }
  360. Reduce group_by=[#2{no_o_id}, #1{c_w_id}, #0{c_d_id}, #3{o_entry_d}] aggregates=[sum(#4{ol_amount})] // { arity: 5 }
  361. Project (#1{c_d_id}..=#3{no_o_id}, #10{o_entry_d}, #19{ol_amount}) // { arity: 5 }
  362. Join on=(#0{c_id} = #9{o_c_id} AND #1{c_d_id} = #4{no_d_id} = #7{o_d_id} = #12{ol_d_id} AND #2{c_w_id} = #5{no_w_id} = #8{o_w_id} = #13{ol_w_id} AND #3{no_o_id} = #6{o_id} = #11{ol_o_id}) type=delta // { arity: 21 }
  363. implementation
  364. %0:customer » %2:order[#2{o_w_id}, #1{o_d_id}, #3{o_c_id}]KKKAif » %1:neworder[#0{no_o_id}..=#2{no_w_id}]UKKK » %3:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKA
  365. %1:neworder » %2:order[#0{o_id}..=#2{o_w_id}]UKKKif » %0:customer[#0{c_id}..=#2{c_w_id}]UKKKlf » %3:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKA
  366. %2:order » %0:customer[#0{c_id}..=#2{c_w_id}]UKKKlf » %1:neworder[#0{no_o_id}..=#2{no_w_id}]UKKK » %3:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKA
  367. %3:orderline » %2:order[#0{o_id}..=#2{o_w_id}]UKKKif » %0:customer[#0{c_id}..=#2{c_w_id}]UKKKlf » %1:neworder[#0{no_o_id}..=#2{no_w_id}]UKKK
  368. ArrangeBy keys=[[#0{c_id}..=#2{c_w_id}]] // { arity: 3 }
  369. Project (#0{c_id}..=#2{c_w_id}) // { arity: 3 }
  370. Filter like["A%"](padchar(#9{c_state})) // { arity: 22 }
  371. ReadIndex on=customer fk_customer_district=[*** full scan ***] // { arity: 22 }
  372. ArrangeBy keys=[[#0{no_o_id}..=#2{no_w_id}]] // { arity: 3 }
  373. ReadStorage materialize.public.neworder // { arity: 3 }
  374. ArrangeBy keys=[[#0{o_id}..=#2{o_w_id}], [#2{o_w_id}, #1{o_d_id}, #3{o_c_id}]] // { arity: 5 }
  375. Project (#0{o_id}..=#4{o_entry_d}) // { arity: 5 }
  376. Filter (#3{o_c_id}) IS NOT NULL AND (date_to_timestamp(#4{o_entry_d}) > 2007-01-02 00:00:00) // { arity: 8 }
  377. ReadIndex on=order fk_order_customer=[*** full scan ***] // { arity: 8 }
  378. ArrangeBy keys=[[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]] // { arity: 10 }
  379. ReadIndex on=orderline fk_orderline_order=[delta join lookup] // { arity: 10 }
  380. Source materialize.public.neworder
  381. Used Indexes:
  382. - materialize.public.fk_customer_district (*** full scan ***)
  383. - materialize.public.fk_order_customer (*** full scan ***)
  384. - materialize.public.fk_orderline_order (delta join lookup)
  385. Target cluster: quickstart
  386. EOF
  387. # Query 04
  388. query T multiline
  389. EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR
  390. SELECT o_ol_cnt, count(*) AS order_count
  391. FROM "order"
  392. WHERE o_entry_d >= TIMESTAMP '2007-01-02 00:00:00.000000'
  393. AND o_entry_d < TIMESTAMP '2012-01-02 00:00:00.000000'
  394. AND EXISTS (
  395. SELECT *
  396. FROM orderline
  397. WHERE o_id = ol_o_id
  398. AND o_w_id = ol_w_id
  399. AND o_d_id = ol_d_id
  400. AND ol_delivery_d >= o_entry_d
  401. )
  402. GROUP BY o_ol_cnt
  403. ORDER BY o_ol_cnt
  404. ----
  405. Explained Query:
  406. Finish order_by=[#0{o_ol_cnt} asc nulls_last] output=[#0, #1]
  407. With
  408. cte l0 =
  409. Project (#0{o_id}..=#2{o_w_id}, #4{o_entry_d}, #6{o_ol_cnt}) // { arity: 5 }
  410. Filter (#8 < 2012-01-02 00:00:00) AND (#8 >= 2007-01-02 00:00:00) // { arity: 9 }
  411. Map (date_to_timestamp(#4{o_entry_d})) // { arity: 9 }
  412. ReadIndex on=order fk_order_customer=[*** full scan ***] // { arity: 8 }
  413. Return // { arity: 2 }
  414. Reduce group_by=[#0{o_ol_cnt}] aggregates=[count(*)] // { arity: 2 }
  415. Project (#4{o_ol_cnt}) // { arity: 1 }
  416. Join on=(#0{o_id} = #5{o_id} AND #1{o_d_id} = #6{o_d_id} AND #2{o_w_id} = #7{o_w_id} AND #3{o_entry_d} = #8{o_entry_d}) type=differential // { arity: 9 }
  417. implementation
  418. %1[#0..=#3]UKKKKA » %0:l0[#0..=#3]UKKKKiif
  419. ArrangeBy keys=[[#0{o_id}..=#3{o_entry_d}]] // { arity: 5 }
  420. Get l0 // { arity: 5 }
  421. ArrangeBy keys=[[#0{o_id}..=#3{o_entry_d}]] // { arity: 4 }
  422. Distinct project=[#0{o_id}..=#3{o_entry_d}] // { arity: 4 }
  423. Project (#0{o_id}..=#3{o_entry_d}) // { arity: 4 }
  424. Filter (#10{ol_delivery_d} >= #3{o_entry_d}) // { arity: 14 }
  425. Join on=(#0{o_id} = #4{ol_o_id} AND #1{o_d_id} = #5{ol_d_id} AND #2{o_w_id} = #6{ol_w_id}) type=differential // { arity: 14 }
  426. implementation
  427. %0:l0[#2{o_w_id}, #1{o_d_id}, #0{o_id}]UKKKiif » %1:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKAiif
  428. ArrangeBy keys=[[#2{o_w_id}, #1{o_d_id}, #0{o_id}]] // { arity: 4 }
  429. Project (#0{o_id}..=#3{o_entry_d}) // { arity: 4 }
  430. Get l0 // { arity: 5 }
  431. ArrangeBy keys=[[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]] // { arity: 10 }
  432. ReadIndex on=orderline fk_orderline_order=[differential join] // { arity: 10 }
  433. Used Indexes:
  434. - materialize.public.fk_order_customer (*** full scan ***)
  435. - materialize.public.fk_orderline_order (differential join)
  436. Target cluster: quickstart
  437. EOF
  438. # Query 05
  439. query T multiline
  440. EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR
  441. SELECT
  442. n_name,
  443. sum(ol_amount) AS revenue
  444. FROM customer, "order", orderline, stock, supplier, nation, region
  445. WHERE c_id = o_c_id
  446. AND c_w_id = o_w_id
  447. AND c_d_id = o_d_id
  448. AND ol_o_id = o_id
  449. AND ol_w_id = o_w_id
  450. AND ol_d_id = o_d_id
  451. AND ol_w_id = s_w_id
  452. AND ol_i_id = s_i_id
  453. AND s_su_suppkey = su_suppkey
  454. AND c_n_nationkey = su_nationkey
  455. AND su_nationkey = n_nationkey
  456. AND n_regionkey = r_regionkey
  457. AND r_name = 'EUROPE'
  458. AND o_entry_d >= TIMESTAMP '2007-01-02 00:00:00.000000'
  459. GROUP BY n_name
  460. ORDER BY revenue DESC
  461. ----
  462. Explained Query:
  463. Finish order_by=[#1{sum_ol_amount} desc nulls_first] output=[#0, #1]
  464. Reduce group_by=[#1{n_name}] aggregates=[sum(#0{ol_amount})] // { arity: 2 }
  465. Project (#12{ol_amount}, #19{n_name}) // { arity: 2 }
  466. Join on=(#0{c_id} = #7{o_c_id} AND #1{c_d_id} = #5{o_d_id} = #9{ol_d_id} AND #2{c_w_id} = #6{o_w_id} = #10{ol_w_id} = #14{s_w_id} AND #3{c_n_nationkey} = #17{su_nationkey} = #18{n_nationkey} AND #4{o_id} = #8{ol_o_id} AND #11{ol_i_id} = #13{s_i_id} AND #15{s_su_suppkey} = #16{su_suppkey} AND #20{n_regionkey} = #21{r_regionkey}) type=delta // { arity: 22 }
  467. implementation
  468. %0:customer » %5:nation[#0{n_nationkey}]UK » %6:region[#0{r_regionkey}]UKef » %1:order[#2{o_w_id}, #1{o_d_id}, #3{o_c_id}]KKKAif » %2:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKA » %3:stock[#0{s_i_id}, #1{s_w_id}]UKK » %4:supplier[#0{su_suppkey}, #1{su_nationkey}]UKK
  469. %1:order » %0:customer[#0{c_id}..=#2{c_w_id}]UKKK » %5:nation[#0{n_nationkey}]UK » %6:region[#0{r_regionkey}]UKef » %2:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKA » %3:stock[#0{s_i_id}, #1{s_w_id}]UKK » %4:supplier[#0{su_suppkey}, #1{su_nationkey}]UKK
  470. %2:orderline » %1:order[#0{o_id}..=#2{o_w_id}]UKKKif » %0:customer[#0{c_id}..=#2{c_w_id}]UKKK » %3:stock[#0{s_i_id}, #1{s_w_id}]UKK » %4:supplier[#0{su_suppkey}, #1{su_nationkey}]UKK » %5:nation[#0{n_nationkey}]UK » %6:region[#0{r_regionkey}]UKef
  471. %3:stock » %4:supplier[#0{su_suppkey}]UK » %5:nation[#0{n_nationkey}]UK » %6:region[#0{r_regionkey}]UKef » %0:customer[#2{c_w_id}, #3{c_n_nationkey}]KK » %1:order[#2{o_w_id}, #1{o_d_id}, #3{o_c_id}]KKKAif » %2:orderline[#0{ol_o_id}..=#3{ol_i_id}]KKKK
  472. %4:supplier » %5:nation[#0{n_nationkey}]UK » %6:region[#0{r_regionkey}]UKef » %0:customer[#3{c_n_nationkey}]KA » %1:order[#2{o_w_id}, #1{o_d_id}, #3{o_c_id}]KKKAif » %2:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKA » %3:stock[#0{s_i_id}..=#2{s_su_suppkey}]UKKK
  473. %5:nation » %6:region[#0{r_regionkey}]UKef » %0:customer[#3{c_n_nationkey}]KA » %1:order[#2{o_w_id}, #1{o_d_id}, #3{o_c_id}]KKKAif » %2:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKA » %3:stock[#0{s_i_id}, #1{s_w_id}]UKK » %4:supplier[#0{su_suppkey}, #1{su_nationkey}]UKK
  474. %6:region » %5:nation[#2{n_regionkey}]KA » %0:customer[#3{c_n_nationkey}]KA » %1:order[#2{o_w_id}, #1{o_d_id}, #3{o_c_id}]KKKAif » %2:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKA » %3:stock[#0{s_i_id}, #1{s_w_id}]UKK » %4:supplier[#0{su_suppkey}, #1{su_nationkey}]UKK
  475. ArrangeBy keys=[[#0{c_id}..=#2{c_w_id}], [#2{c_w_id}, #3{c_n_nationkey}], [#3{c_n_nationkey}]] // { arity: 4 }
  476. Project (#0{c_id}..=#2{c_w_id}, #21{c_n_nationkey}) // { arity: 4 }
  477. Filter (#21{c_n_nationkey}) IS NOT NULL // { arity: 22 }
  478. ReadIndex on=customer fk_customer_district=[*** full scan ***] // { arity: 22 }
  479. ArrangeBy keys=[[#0{o_id}..=#2{o_w_id}], [#2{o_w_id}, #1{o_d_id}, #3{o_c_id}]] // { arity: 4 }
  480. Project (#0{o_id}..=#3{o_c_id}) // { arity: 4 }
  481. Filter (#3{o_c_id}) IS NOT NULL AND (date_to_timestamp(#4{o_entry_d}) >= 2007-01-02 00:00:00) // { arity: 8 }
  482. ReadIndex on=order fk_order_customer=[*** full scan ***] // { arity: 8 }
  483. ArrangeBy keys=[[#0{ol_o_id}..=#3{ol_i_id}], [#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]] // { arity: 5 }
  484. Project (#0{ol_o_id}..=#2{ol_w_id}, #4{ol_i_id}, #8{ol_amount}) // { arity: 5 }
  485. Filter (#4{ol_i_id}) IS NOT NULL // { arity: 10 }
  486. ReadIndex on=orderline fk_orderline_order=[*** full scan ***] // { arity: 10 }
  487. ArrangeBy keys=[[#0{s_i_id}, #1{s_w_id}], [#0{s_i_id}..=#2{s_su_suppkey}]] // { arity: 3 }
  488. Project (#0{s_i_id}, #1{s_w_id}, #17{s_su_suppkey}) // { arity: 3 }
  489. ReadIndex on=stock fk_stock_warehouse=[*** full scan ***] // { arity: 18 }
  490. ArrangeBy keys=[[#0{su_suppkey}], [#0{su_suppkey}, #1{su_nationkey}]] // { arity: 2 }
  491. Project (#0{su_suppkey}, #3{su_nationkey}) // { arity: 2 }
  492. ReadIndex on=supplier fk_supplier_nationkey=[*** full scan ***] // { arity: 7 }
  493. ArrangeBy keys=[[#0{n_nationkey}], [#2{n_regionkey}]] // { arity: 3 }
  494. Project (#0{n_nationkey}..=#2{n_regionkey}) // { arity: 3 }
  495. ReadIndex on=nation fk_nation_regionkey=[*** full scan ***] // { arity: 4 }
  496. ArrangeBy keys=[[#0{r_regionkey}]] // { arity: 1 }
  497. Project (#0{r_regionkey}) // { arity: 1 }
  498. Filter (#1{r_name} = "EUROPE") // { arity: 3 }
  499. ReadStorage materialize.public.region // { arity: 3 }
  500. Source materialize.public.region
  501. filter=((#1{r_name} = "EUROPE"))
  502. Used Indexes:
  503. - materialize.public.fk_customer_district (*** full scan ***)
  504. - materialize.public.fk_order_customer (*** full scan ***)
  505. - materialize.public.fk_orderline_order (*** full scan ***)
  506. - materialize.public.fk_stock_warehouse (*** full scan ***)
  507. - materialize.public.fk_nation_regionkey (*** full scan ***)
  508. - materialize.public.fk_supplier_nationkey (*** full scan ***)
  509. Target cluster: quickstart
  510. EOF
  511. # Query 06
  512. query T multiline
  513. EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR
  514. SELECT sum(ol_amount) AS revenue
  515. FROM orderline
  516. WHERE ol_delivery_d >= TIMESTAMP '1999-01-01 00:00:00.000000'
  517. AND ol_delivery_d < TIMESTAMP '2020-01-01 00:00:00.000000'
  518. AND ol_quantity BETWEEN 1 AND 100000
  519. ----
  520. Explained Query:
  521. With
  522. cte l0 =
  523. Reduce aggregates=[sum(#0{ol_amount})] // { arity: 1 }
  524. Project (#8{ol_amount}) // { arity: 1 }
  525. Filter (#10 < 2020-01-01 00:00:00) AND (#7{ol_quantity} <= 100000) AND (#7{ol_quantity} >= 1) AND (#10 >= 1999-01-01 00:00:00) // { arity: 11 }
  526. Map (date_to_timestamp(#6{ol_delivery_d})) // { arity: 11 }
  527. ReadIndex on=orderline fk_orderline_order=[*** full scan ***] // { arity: 10 }
  528. Return // { arity: 1 }
  529. Union // { arity: 1 }
  530. Get l0 // { arity: 1 }
  531. Map (null) // { arity: 1 }
  532. Union // { arity: 0 }
  533. Negate // { arity: 0 }
  534. Project () // { arity: 0 }
  535. Get l0 // { arity: 1 }
  536. Constant // { arity: 0 }
  537. - ()
  538. Used Indexes:
  539. - materialize.public.fk_orderline_order (*** full scan ***)
  540. Target cluster: quickstart
  541. EOF
  542. # Query 07
  543. query T multiline
  544. EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR
  545. SELECT
  546. su_nationkey AS supp_nation,
  547. substr(c_state, 1, 1) AS cust_nation,
  548. EXTRACT(year FROM o_entry_d) AS l_year,
  549. sum(ol_amount) AS revenue
  550. FROM supplier, stock, orderline, "order", customer, nation n1, nation n2
  551. WHERE ol_supply_w_id = s_w_id
  552. AND ol_i_id = s_i_id
  553. AND s_su_suppkey = su_suppkey
  554. AND ol_w_id = o_w_id
  555. AND ol_d_id = o_d_id
  556. AND ol_o_id = o_id
  557. AND c_id = o_c_id
  558. AND c_w_id = o_w_id
  559. AND c_d_id = o_d_id
  560. AND su_nationkey = n1.n_nationkey
  561. AND c_n_nationkey = n2.n_nationkey
  562. AND (
  563. (n1.n_name = 'GERMANY' AND n2.n_name = 'CAMBODIA')
  564. OR
  565. (n1.n_name = 'CAMBODIA' AND n2.n_name = 'GERMANY')
  566. )
  567. AND ol_delivery_d BETWEEN TIMESTAMP '2007-01-02 00:00:00.000000' AND TIMESTAMP '2012-01-02 00:00:00.000000'
  568. GROUP BY su_nationkey, substr(c_state, 1, 1), EXTRACT(year FROM o_entry_d)
  569. ORDER BY su_nationkey, cust_nation, l_year
  570. ----
  571. Explained Query:
  572. Finish order_by=[#0{su_nationkey} asc nulls_last, #1 asc nulls_last, #2 asc nulls_last] output=[#0..=#3]
  573. With
  574. cte l0 =
  575. ArrangeBy keys=[[#0{n_nationkey}]] // { arity: 2 }
  576. Project (#0{n_nationkey}, #1{n_name}) // { arity: 2 }
  577. Filter ((#1{n_name} = "GERMANY") OR (#1{n_name} = "CAMBODIA")) // { arity: 4 }
  578. ReadIndex on=nation fk_nation_regionkey=[*** full scan ***] // { arity: 4 }
  579. Return // { arity: 4 }
  580. Reduce group_by=[#0{su_nationkey}, substr(char_to_text(#3{c_state}), 1, 1), extract_year_d(#2{o_entry_d})] aggregates=[sum(#1{ol_amount})] // { arity: 4 }
  581. Project (#1{su_nationkey}, #13{ol_amount}, #19{o_entry_d}, #23{c_state}) // { arity: 4 }
  582. Filter (#29 <= 2012-01-02 00:00:00) AND (#29 >= 2007-01-02 00:00:00) AND (((#26{n_name} = "GERMANY") AND (#28{n_name} = "CAMBODIA")) OR ((#26{n_name} = "CAMBODIA") AND (#28{n_name} = "GERMANY"))) // { arity: 30 }
  583. Map (date_to_timestamp(#11{ol_delivery_d})) // { arity: 30 }
  584. Join on=(#0{su_suppkey} = #4{s_su_suppkey} AND #1{su_nationkey} = #25{n_nationkey} AND #2{s_i_id} = #9{ol_i_id} AND #3{s_w_id} = #10{ol_supply_w_id} AND #5{ol_o_id} = #15{o_id} AND #6{ol_d_id} = #16{o_d_id} = #21{c_d_id} AND #7{ol_w_id} = #17{o_w_id} = #22{c_w_id} AND #18{o_c_id} = #20{c_id} AND #24{c_n_nationkey} = #27{n_nationkey}) type=delta // { arity: 29 }
  585. implementation
  586. %0:supplier » %5:l0[#0{n_nationkey}]UKef » %1:stock[#2{s_su_suppkey}]KA » %2:orderline[#5{ol_supply_w_id}, #4{ol_i_id}]KKAiif » %3:order[#0{o_id}..=#2{o_w_id}]UKKK » %4:customer[#0{c_id}..=#2{c_w_id}]UKKK » %6:l0[#0{n_nationkey}]UKef
  587. %1:stock » %0:supplier[#0{su_suppkey}]UK » %5:l0[#0{n_nationkey}]UKef » %2:orderline[#5{ol_supply_w_id}, #4{ol_i_id}]KKAiif » %3:order[#0{o_id}..=#2{o_w_id}]UKKK » %4:customer[#0{c_id}..=#2{c_w_id}]UKKK » %6:l0[#0{n_nationkey}]UKef
  588. %2:orderline » %3:order[#0{o_id}..=#2{o_w_id}]UKKK » %4:customer[#0{c_id}..=#2{c_w_id}]UKKK » %1:stock[#0{s_i_id}, #1{s_w_id}]UKK » %6:l0[#0{n_nationkey}]UKef » %0:supplier[#0{su_suppkey}]UK » %5:l0[#0{n_nationkey}]UKef
  589. %3:order » %4:customer[#0{c_id}..=#2{c_w_id}]UKKK » %6:l0[#0{n_nationkey}]UKef » %2:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKAiif » %1:stock[#0{s_i_id}, #1{s_w_id}]UKK » %0:supplier[#0{su_suppkey}]UK » %5:l0[#0{n_nationkey}]UKef
  590. %4:customer » %6:l0[#0{n_nationkey}]UKef » %3:order[#2{o_w_id}, #1{o_d_id}, #3{o_c_id}]KKKA » %2:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKAiif » %1:stock[#0{s_i_id}, #1{s_w_id}]UKK » %0:supplier[#0{su_suppkey}]UK » %5:l0[#0{n_nationkey}]UKef
  591. %5:l0 » %0:supplier[#1{su_nationkey}]KA » %1:stock[#2{s_su_suppkey}]KA » %2:orderline[#5{ol_supply_w_id}, #4{ol_i_id}]KKAiif » %3:order[#0{o_id}..=#2{o_w_id}]UKKK » %4:customer[#0{c_id}..=#2{c_w_id}]UKKK » %6:l0[#0{n_nationkey}]UKef
  592. %6:l0 » %4:customer[#4{c_n_nationkey}]KA » %3:order[#2{o_w_id}, #1{o_d_id}, #3{o_c_id}]KKKA » %2:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKAiif » %1:stock[#0{s_i_id}, #1{s_w_id}]UKK » %0:supplier[#0{su_suppkey}]UK » %5:l0[#0{n_nationkey}]UKef
  593. ArrangeBy keys=[[#0{su_suppkey}], [#1{su_nationkey}]] // { arity: 2 }
  594. Project (#0{su_suppkey}, #3{su_nationkey}) // { arity: 2 }
  595. ReadIndex on=supplier fk_supplier_nationkey=[*** full scan ***] // { arity: 7 }
  596. ArrangeBy keys=[[#0{s_i_id}, #1{s_w_id}], [#2{s_su_suppkey}]] // { arity: 3 }
  597. Project (#0{s_i_id}, #1{s_w_id}, #17{s_su_suppkey}) // { arity: 3 }
  598. ReadIndex on=stock fk_stock_warehouse=[*** full scan ***] // { arity: 18 }
  599. ArrangeBy keys=[[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}], [#5{ol_supply_w_id}, #4{ol_i_id}]] // { arity: 10 }
  600. ReadIndex on=orderline fk_orderline_order=[delta join lookup] fk_orderline_stock=[delta join lookup] // { arity: 10 }
  601. ArrangeBy keys=[[#0{o_id}..=#2{o_w_id}], [#2{o_w_id}, #1{o_d_id}, #3{o_c_id}]] // { arity: 5 }
  602. Project (#0{o_id}..=#4{o_entry_d}) // { arity: 5 }
  603. Filter (#3{o_c_id}) IS NOT NULL // { arity: 8 }
  604. ReadIndex on=order fk_order_customer=[*** full scan ***] // { arity: 8 }
  605. ArrangeBy keys=[[#0{c_id}..=#2{c_w_id}], [#4{c_n_nationkey}]] // { arity: 5 }
  606. Project (#0{c_id}..=#2{c_w_id}, #9{c_state}, #21{c_n_nationkey}) // { arity: 5 }
  607. Filter (#21{c_n_nationkey}) IS NOT NULL // { arity: 22 }
  608. ReadIndex on=customer fk_customer_district=[*** full scan ***] // { arity: 22 }
  609. Get l0 // { arity: 2 }
  610. Get l0 // { arity: 2 }
  611. Used Indexes:
  612. - materialize.public.fk_customer_district (*** full scan ***)
  613. - materialize.public.fk_order_customer (*** full scan ***)
  614. - materialize.public.fk_orderline_order (delta join lookup)
  615. - materialize.public.fk_orderline_stock (delta join lookup)
  616. - materialize.public.fk_stock_warehouse (*** full scan ***)
  617. - materialize.public.fk_nation_regionkey (*** full scan ***)
  618. - materialize.public.fk_supplier_nationkey (*** full scan ***)
  619. Target cluster: quickstart
  620. EOF
  621. # Query 08
  622. query T multiline
  623. EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR
  624. SELECT
  625. EXTRACT(year FROM o_entry_d) AS l_year,
  626. sum(CASE WHEN n2.n_name = 'GERMANY' THEN ol_amount ELSE 0 END) / CASE WHEN sum(ol_amount) = 0 THEN 1 ELSE sum(ol_amount) END AS mkt_share
  627. FROM item, supplier, stock, orderline, "order", customer, nation n1, nation n2, region
  628. WHERE i_id = s_i_id
  629. AND ol_i_id = s_i_id
  630. AND ol_supply_w_id = s_w_id
  631. AND s_su_suppkey = su_suppkey
  632. AND ol_w_id = o_w_id
  633. AND ol_d_id = o_d_id
  634. AND ol_o_id = o_id
  635. AND c_id = o_c_id
  636. AND c_w_id = o_w_id
  637. AND c_d_id = o_d_id
  638. AND n1.n_nationkey = c_n_nationkey
  639. AND n1.n_regionkey = r_regionkey
  640. AND ol_i_id < 1000
  641. AND r_name = 'EUROPE'
  642. AND su_nationkey = n2.n_nationkey
  643. AND o_entry_d BETWEEN TIMESTAMP '2007-01-02 00:00:00.000000' AND TIMESTAMP '2012-01-02 00:00:00.000000'
  644. AND i_data like '%b'
  645. AND i_id = ol_i_id
  646. GROUP BY EXTRACT(year FROM o_entry_d)
  647. ORDER BY l_year
  648. ----
  649. Explained Query:
  650. Finish order_by=[#0 asc nulls_last] output=[#0, #1]
  651. Project (#0, #3) // { arity: 2 }
  652. Map ((#1{sum} / case when (#2{sum_ol_amount} = 0) then 1 else #2{sum_ol_amount} end)) // { arity: 4 }
  653. Reduce group_by=[extract_year_d(#1{o_entry_d})] aggregates=[sum(case when (#2{n_name} = "GERMANY") then #0{ol_amount} else 0 end), sum(#0{ol_amount})] // { arity: 3 }
  654. Project (#14{ol_amount}, #20{o_entry_d}, #28{n_name}) // { arity: 3 }
  655. Filter (#0{i_id} < 1000) // { arity: 30 }
  656. Join on=(#0{i_id} = #3{s_i_id} = #10{ol_i_id} AND #1{su_suppkey} = #5{s_su_suppkey} AND #2{su_nationkey} = #27{n_nationkey} AND #4{s_w_id} = #11{ol_supply_w_id} AND #6{ol_o_id} = #16{o_id} AND #7{ol_d_id} = #17{o_d_id} = #22{c_d_id} AND #8{ol_w_id} = #18{o_w_id} = #23{c_w_id} AND #19{o_c_id} = #21{c_id} AND #24{c_n_nationkey} = #25{n_nationkey} AND #26{n_regionkey} = #29{r_regionkey}) type=delta // { arity: 30 }
  657. implementation
  658. %0:item » %2:stock[#0{s_i_id}]KAif » %1:supplier[#0{su_suppkey}]UK » %7:nation[#0{n_nationkey}]UK » %3:orderline[#5{ol_supply_w_id}, #4{ol_i_id}]KKAif » %4:order[#0{o_id}..=#2{o_w_id}]UKKKiif » %5:customer[#0{c_id}..=#2{c_w_id}]UKKK » %6:nation[#0{n_nationkey}]UK » %8:region[#0{r_regionkey}]UKef
  659. %1:supplier » %7:nation[#0{n_nationkey}]UK » %2:stock[#2{s_su_suppkey}]KAif » %0:item[#0{i_id}]UKlif » %3:orderline[#5{ol_supply_w_id}, #4{ol_i_id}]KKAif » %4:order[#0{o_id}..=#2{o_w_id}]UKKKiif » %5:customer[#0{c_id}..=#2{c_w_id}]UKKK » %6:nation[#0{n_nationkey}]UK » %8:region[#0{r_regionkey}]UKef
  660. %2:stock » %0:item[#0{i_id}]UKlif » %1:supplier[#0{su_suppkey}]UK » %7:nation[#0{n_nationkey}]UK » %3:orderline[#5{ol_supply_w_id}, #4{ol_i_id}]KKAif » %4:order[#0{o_id}..=#2{o_w_id}]UKKKiif » %5:customer[#0{c_id}..=#2{c_w_id}]UKKK » %6:nation[#0{n_nationkey}]UK » %8:region[#0{r_regionkey}]UKef
  661. %3:orderline » %4:order[#0{o_id}..=#2{o_w_id}]UKKKiif » %5:customer[#0{c_id}..=#2{c_w_id}]UKKK » %2:stock[#0{s_i_id}, #1{s_w_id}]UKKif » %0:item[#0{i_id}]UKlif » %1:supplier[#0{su_suppkey}]UK » %6:nation[#0{n_nationkey}]UK » %8:region[#0{r_regionkey}]UKef » %7:nation[#0{n_nationkey}]UK
  662. %4:order » %5:customer[#0{c_id}..=#2{c_w_id}]UKKK » %6:nation[#0{n_nationkey}]UK » %8:region[#0{r_regionkey}]UKef » %3:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKAif » %2:stock[#0{s_i_id}, #1{s_w_id}]UKKif » %0:item[#0{i_id}]UKlif » %1:supplier[#0{su_suppkey}]UK » %7:nation[#0{n_nationkey}]UK
  663. %5:customer » %6:nation[#0{n_nationkey}]UK » %8:region[#0{r_regionkey}]UKef » %4:order[#2{o_w_id}, #1{o_d_id}, #3{o_c_id}]KKKAiif » %3:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKAif » %2:stock[#0{s_i_id}, #1{s_w_id}]UKKif » %0:item[#0{i_id}]UKlif » %1:supplier[#0{su_suppkey}]UK » %7:nation[#0{n_nationkey}]UK
  664. %6:nation » %8:region[#0{r_regionkey}]UKef » %5:customer[#3{c_n_nationkey}]KA » %4:order[#2{o_w_id}, #1{o_d_id}, #3{o_c_id}]KKKAiif » %3:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKAif » %2:stock[#0{s_i_id}, #1{s_w_id}]UKKif » %0:item[#0{i_id}]UKlif » %1:supplier[#0{su_suppkey}]UK » %7:nation[#0{n_nationkey}]UK
  665. %7:nation » %1:supplier[#1{su_nationkey}]KA » %2:stock[#2{s_su_suppkey}]KAif » %0:item[#0{i_id}]UKlif » %3:orderline[#5{ol_supply_w_id}, #4{ol_i_id}]KKAif » %4:order[#0{o_id}..=#2{o_w_id}]UKKKiif » %5:customer[#0{c_id}..=#2{c_w_id}]UKKK » %6:nation[#0{n_nationkey}]UK » %8:region[#0{r_regionkey}]UKef
  666. %8:region » %6:nation[#1{n_regionkey}]KA » %5:customer[#3{c_n_nationkey}]KA » %4:order[#2{o_w_id}, #1{o_d_id}, #3{o_c_id}]KKKAiif » %3:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKAif » %2:stock[#0{s_i_id}, #1{s_w_id}]UKKif » %0:item[#0{i_id}]UKlif » %1:supplier[#0{su_suppkey}]UK » %7:nation[#0{n_nationkey}]UK
  667. ArrangeBy keys=[[#0{i_id}]] // { arity: 1 }
  668. Project (#0{i_id}) // { arity: 1 }
  669. Filter (#0{i_id} < 1000) AND like["%b"](padchar(#4{i_data})) // { arity: 5 }
  670. ReadStorage materialize.public.item // { arity: 5 }
  671. ArrangeBy keys=[[#0{su_suppkey}], [#1{su_nationkey}]] // { arity: 2 }
  672. Project (#0{su_suppkey}, #3{su_nationkey}) // { arity: 2 }
  673. ReadIndex on=supplier fk_supplier_nationkey=[*** full scan ***] // { arity: 7 }
  674. ArrangeBy keys=[[#0{s_i_id}], [#0{s_i_id}, #1{s_w_id}], [#2{s_su_suppkey}]] // { arity: 3 }
  675. Project (#0{s_i_id}, #1{s_w_id}, #17{s_su_suppkey}) // { arity: 3 }
  676. Filter (#0{s_i_id} < 1000) // { arity: 18 }
  677. ReadIndex on=stock fk_stock_warehouse=[*** full scan ***] // { arity: 18 }
  678. ArrangeBy keys=[[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}], [#5{ol_supply_w_id}, #4{ol_i_id}]] // { arity: 10 }
  679. ReadIndex on=orderline fk_orderline_order=[delta join lookup] fk_orderline_stock=[delta join lookup] // { arity: 10 }
  680. ArrangeBy keys=[[#0{o_id}..=#2{o_w_id}], [#2{o_w_id}, #1{o_d_id}, #3{o_c_id}]] // { arity: 5 }
  681. Project (#0{o_id}..=#4{o_entry_d}) // { arity: 5 }
  682. Filter (#8 <= 2012-01-02 00:00:00) AND (#8 >= 2007-01-02 00:00:00) AND (#3{o_c_id}) IS NOT NULL // { arity: 9 }
  683. Map (date_to_timestamp(#4{o_entry_d})) // { arity: 9 }
  684. ReadIndex on=order fk_order_customer=[*** full scan ***] // { arity: 8 }
  685. ArrangeBy keys=[[#0{c_id}..=#2{c_w_id}], [#3{c_n_nationkey}]] // { arity: 4 }
  686. Project (#0{c_id}..=#2{c_w_id}, #21{c_n_nationkey}) // { arity: 4 }
  687. Filter (#21{c_n_nationkey}) IS NOT NULL // { arity: 22 }
  688. ReadIndex on=customer fk_customer_district=[*** full scan ***] // { arity: 22 }
  689. ArrangeBy keys=[[#0{n_nationkey}], [#1{n_regionkey}]] // { arity: 2 }
  690. Project (#0{n_nationkey}, #2{n_regionkey}) // { arity: 2 }
  691. ReadIndex on=nation fk_nation_regionkey=[*** full scan ***] // { arity: 4 }
  692. ArrangeBy keys=[[#0{n_nationkey}]] // { arity: 2 }
  693. Project (#0{n_nationkey}, #1{n_name}) // { arity: 2 }
  694. ReadIndex on=nation fk_nation_regionkey=[*** full scan ***] // { arity: 4 }
  695. ArrangeBy keys=[[#0{r_regionkey}]] // { arity: 1 }
  696. Project (#0{r_regionkey}) // { arity: 1 }
  697. Filter (#1{r_name} = "EUROPE") // { arity: 3 }
  698. ReadStorage materialize.public.region // { arity: 3 }
  699. Source materialize.public.item
  700. filter=((#0{i_id} < 1000) AND like["%b"](padchar(#4{i_data})))
  701. Source materialize.public.region
  702. filter=((#1{r_name} = "EUROPE"))
  703. Used Indexes:
  704. - materialize.public.fk_customer_district (*** full scan ***)
  705. - materialize.public.fk_order_customer (*** full scan ***)
  706. - materialize.public.fk_orderline_order (delta join lookup)
  707. - materialize.public.fk_orderline_stock (delta join lookup)
  708. - materialize.public.fk_stock_warehouse (*** full scan ***)
  709. - materialize.public.fk_nation_regionkey (*** full scan ***)
  710. - materialize.public.fk_supplier_nationkey (*** full scan ***)
  711. Target cluster: quickstart
  712. EOF
  713. # Query 09
  714. query T multiline
  715. EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR
  716. SELECT
  717. n_name, EXTRACT(year FROM o_entry_d) AS l_year,
  718. sum(ol_amount) AS sum_profit
  719. FROM item, stock, supplier, orderline, "order", nation
  720. WHERE ol_i_id = s_i_id
  721. AND ol_supply_w_id = s_w_id
  722. AND s_su_suppkey = su_suppkey
  723. AND ol_w_id = o_w_id
  724. AND ol_d_id = o_d_id
  725. AND ol_o_id = o_id
  726. AND ol_i_id = i_id
  727. AND su_nationkey = n_nationkey
  728. AND i_data like '%BB'
  729. GROUP BY n_name, EXTRACT(year FROM o_entry_d)
  730. ORDER BY n_name, l_year DESC
  731. ----
  732. Explained Query:
  733. Finish order_by=[#0{n_name} asc nulls_last, #1 desc nulls_first] output=[#0..=#2]
  734. Reduce group_by=[#2{n_name}, extract_year_d(#1{o_entry_d})] aggregates=[sum(#0{ol_amount})] // { arity: 3 }
  735. Project (#14{ol_amount}, #19{o_entry_d}, #21{n_name}) // { arity: 3 }
  736. Join on=(#0{i_id} = #1{s_i_id} = #10{ol_i_id} AND #2{s_w_id} = #11{ol_supply_w_id} AND #3{s_su_suppkey} = #4{su_suppkey} AND #5{su_nationkey} = #20{n_nationkey} AND #6{ol_o_id} = #16{o_id} AND #7{ol_d_id} = #17{o_d_id} AND #8{ol_w_id} = #18{o_w_id}) type=delta // { arity: 22 }
  737. implementation
  738. %0:item » %1:stock[#0{s_i_id}]KA » %2:supplier[#0{su_suppkey}]UK » %5:nation[#0{n_nationkey}]UK » %3:orderline[#5{ol_supply_w_id}, #4{ol_i_id}]KKA » %4:order[#0{o_id}..=#2{o_w_id}]UKKK
  739. %1:stock » %0:item[#0{i_id}]UKlf » %2:supplier[#0{su_suppkey}]UK » %5:nation[#0{n_nationkey}]UK » %3:orderline[#5{ol_supply_w_id}, #4{ol_i_id}]KKA » %4:order[#0{o_id}..=#2{o_w_id}]UKKK
  740. %2:supplier » %5:nation[#0{n_nationkey}]UK » %1:stock[#2{s_su_suppkey}]KA » %0:item[#0{i_id}]UKlf » %3:orderline[#5{ol_supply_w_id}, #4{ol_i_id}]KKA » %4:order[#0{o_id}..=#2{o_w_id}]UKKK
  741. %3:orderline » %4:order[#0{o_id}..=#2{o_w_id}]UKKK » %1:stock[#0{s_i_id}, #1{s_w_id}]UKK » %0:item[#0{i_id}]UKlf » %2:supplier[#0{su_suppkey}]UK » %5:nation[#0{n_nationkey}]UK
  742. %4:order » %3:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKA » %1:stock[#0{s_i_id}, #1{s_w_id}]UKK » %0:item[#0{i_id}]UKlf » %2:supplier[#0{su_suppkey}]UK » %5:nation[#0{n_nationkey}]UK
  743. %5:nation » %2:supplier[#1{su_nationkey}]KA » %1:stock[#2{s_su_suppkey}]KA » %0:item[#0{i_id}]UKlf » %3:orderline[#5{ol_supply_w_id}, #4{ol_i_id}]KKA » %4:order[#0{o_id}..=#2{o_w_id}]UKKK
  744. ArrangeBy keys=[[#0{i_id}]] // { arity: 1 }
  745. Project (#0{i_id}) // { arity: 1 }
  746. Filter like["%BB"](padchar(#4{i_data})) // { arity: 5 }
  747. ReadStorage materialize.public.item // { arity: 5 }
  748. ArrangeBy keys=[[#0{s_i_id}], [#0{s_i_id}, #1{s_w_id}], [#2{s_su_suppkey}]] // { arity: 3 }
  749. Project (#0{s_i_id}, #1{s_w_id}, #17{s_su_suppkey}) // { arity: 3 }
  750. ReadIndex on=stock fk_stock_warehouse=[*** full scan ***] // { arity: 18 }
  751. ArrangeBy keys=[[#0{su_suppkey}], [#1{su_nationkey}]] // { arity: 2 }
  752. Project (#0{su_suppkey}, #3{su_nationkey}) // { arity: 2 }
  753. ReadIndex on=supplier fk_supplier_nationkey=[*** full scan ***] // { arity: 7 }
  754. ArrangeBy keys=[[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}], [#5{ol_supply_w_id}, #4{ol_i_id}]] // { arity: 10 }
  755. ReadIndex on=orderline fk_orderline_order=[delta join lookup] fk_orderline_stock=[delta join lookup] // { arity: 10 }
  756. ArrangeBy keys=[[#0{o_id}..=#2{o_w_id}]] // { arity: 4 }
  757. Project (#0{o_id}..=#2{o_w_id}, #4{o_entry_d}) // { arity: 4 }
  758. ReadIndex on=order fk_order_customer=[*** full scan ***] // { arity: 8 }
  759. ArrangeBy keys=[[#0{n_nationkey}]] // { arity: 2 }
  760. Project (#0{n_nationkey}, #1{n_name}) // { arity: 2 }
  761. ReadIndex on=nation fk_nation_regionkey=[*** full scan ***] // { arity: 4 }
  762. Source materialize.public.item
  763. filter=(like["%BB"](padchar(#4{i_data})))
  764. Used Indexes:
  765. - materialize.public.fk_order_customer (*** full scan ***)
  766. - materialize.public.fk_orderline_order (delta join lookup)
  767. - materialize.public.fk_orderline_stock (delta join lookup)
  768. - materialize.public.fk_stock_warehouse (*** full scan ***)
  769. - materialize.public.fk_nation_regionkey (*** full scan ***)
  770. - materialize.public.fk_supplier_nationkey (*** full scan ***)
  771. Target cluster: quickstart
  772. EOF
  773. # Query 10
  774. query T multiline
  775. EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR
  776. SELECT
  777. c_id, c_last, sum(ol_amount) AS revenue, c_city, c_phone, n_name
  778. FROM customer, "order", orderline, nation
  779. WHERE c_id = o_c_id
  780. AND c_w_id = o_w_id
  781. AND c_d_id = o_d_id
  782. AND ol_w_id = o_w_id
  783. AND ol_d_id = o_d_id
  784. AND ol_o_id = o_id
  785. AND o_entry_d >= TIMESTAMP '2007-01-02 00:00:00.000000'
  786. AND o_entry_d <= ol_delivery_d
  787. AND n_nationkey = c_n_nationkey
  788. GROUP BY c_id, c_last, c_city, c_phone, n_name
  789. ORDER BY revenue DESC
  790. ----
  791. Explained Query:
  792. Finish order_by=[#2{sum_ol_amount} desc nulls_first] output=[#0..=#5]
  793. Project (#0{c_id}, #1{c_last}, #5{sum_ol_amount}, #2{c_city}..=#4{n_name}) // { arity: 6 }
  794. Reduce group_by=[#0{c_id}..=#3{c_phone}, #5{n_name}] aggregates=[sum(#4{ol_amount})] // { arity: 6 }
  795. Project (#0{c_id}, #3{c_last}..=#5{c_phone}, #20{ol_amount}, #23{n_name}) // { arity: 6 }
  796. Filter (#11{o_entry_d} <= #18{ol_delivery_d}) // { arity: 24 }
  797. Join on=(#0{c_id} = #10{o_c_id} AND #1{c_d_id} = #8{o_d_id} = #13{ol_d_id} AND #2{c_w_id} = #9{o_w_id} = #14{ol_w_id} AND #6{c_n_nationkey} = #22{n_nationkey} AND #7{o_id} = #12{ol_o_id}) type=delta // { arity: 24 }
  798. implementation
  799. %0:customer » %3:nation[#0{n_nationkey}]UK » %1:order[#2{o_w_id}, #1{o_d_id}, #3{o_c_id}]KKKAif » %2:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKA
  800. %1:order » %0:customer[#0{c_id}..=#2{c_w_id}]UKKK » %3:nation[#0{n_nationkey}]UK » %2:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKA
  801. %2:orderline » %1:order[#0{o_id}..=#2{o_w_id}]UKKKif » %0:customer[#0{c_id}..=#2{c_w_id}]UKKK » %3:nation[#0{n_nationkey}]UK
  802. %3:nation » %0:customer[#6{c_n_nationkey}]KA » %1:order[#2{o_w_id}, #1{o_d_id}, #3{o_c_id}]KKKAif » %2:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKA
  803. ArrangeBy keys=[[#0{c_id}..=#2{c_w_id}], [#6{c_n_nationkey}]] // { arity: 7 }
  804. Project (#0{c_id}..=#2{c_w_id}, #5{c_last}, #8{c_city}, #11{c_phone}, #21{c_n_nationkey}) // { arity: 7 }
  805. Filter (#21{c_n_nationkey}) IS NOT NULL // { arity: 22 }
  806. ReadIndex on=customer fk_customer_district=[*** full scan ***] // { arity: 22 }
  807. ArrangeBy keys=[[#0{o_id}..=#2{o_w_id}], [#2{o_w_id}, #1{o_d_id}, #3{o_c_id}]] // { arity: 5 }
  808. Project (#0{o_id}..=#4{o_entry_d}) // { arity: 5 }
  809. Filter (#3{o_c_id}) IS NOT NULL AND (date_to_timestamp(#4{o_entry_d}) >= 2007-01-02 00:00:00) // { arity: 8 }
  810. ReadIndex on=order fk_order_customer=[*** full scan ***] // { arity: 8 }
  811. ArrangeBy keys=[[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]] // { arity: 10 }
  812. ReadIndex on=orderline fk_orderline_order=[delta join lookup] // { arity: 10 }
  813. ArrangeBy keys=[[#0{n_nationkey}]] // { arity: 2 }
  814. Project (#0{n_nationkey}, #1{n_name}) // { arity: 2 }
  815. ReadIndex on=nation fk_nation_regionkey=[*** full scan ***] // { arity: 4 }
  816. Used Indexes:
  817. - materialize.public.fk_customer_district (*** full scan ***)
  818. - materialize.public.fk_order_customer (*** full scan ***)
  819. - materialize.public.fk_orderline_order (delta join lookup)
  820. - materialize.public.fk_nation_regionkey (*** full scan ***)
  821. Target cluster: quickstart
  822. EOF
  823. # Query 11
  824. query T multiline
  825. EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR
  826. SELECT s_i_id, sum(s_order_cnt) AS ordercount
  827. FROM stock, supplier, nation
  828. WHERE s_su_suppkey = su_suppkey
  829. AND su_nationkey = n_nationkey
  830. AND n_name = 'GERMANY'
  831. GROUP BY s_i_id
  832. HAVING sum(s_order_cnt) > (
  833. SELECT sum(s_order_cnt) * 0.005
  834. FROM stock, supplier, nation
  835. WHERE s_su_suppkey = su_suppkey
  836. AND su_nationkey = n_nationkey
  837. AND n_name = 'GERMANY'
  838. )
  839. ORDER BY ordercount DESC
  840. ----
  841. Explained Query:
  842. Finish order_by=[#1{sum_s_order_cnt} desc nulls_first] output=[#0, #1]
  843. With
  844. cte l0 =
  845. Project (#0{s_i_id}, #14{s_order_cnt}) // { arity: 2 }
  846. Join on=(#17{s_su_suppkey} = #18{su_suppkey} AND #19{su_nationkey} = #20{n_nationkey}) type=delta // { arity: 21 }
  847. implementation
  848. %0:stock » %1:supplier[#0{su_suppkey}]UK » %2:nation[#0{n_nationkey}]UKef
  849. %1:supplier » %2:nation[#0{n_nationkey}]UKef » %0:stock[#17{s_su_suppkey}]KA
  850. %2:nation » %1:supplier[#1{su_nationkey}]KA » %0:stock[#17{s_su_suppkey}]KA
  851. ArrangeBy keys=[[#17{s_su_suppkey}]] // { arity: 18 }
  852. ReadIndex on=stock fk_stock_supplier=[delta join 1st input (full scan)] // { arity: 18 }
  853. ArrangeBy keys=[[#0{su_suppkey}], [#1{su_nationkey}]] // { arity: 2 }
  854. Project (#0{su_suppkey}, #3{su_nationkey}) // { arity: 2 }
  855. ReadIndex on=supplier fk_supplier_nationkey=[*** full scan ***] // { arity: 7 }
  856. ArrangeBy keys=[[#0{n_nationkey}]] // { arity: 1 }
  857. Project (#0{n_nationkey}) // { arity: 1 }
  858. Filter (#1{n_name} = "GERMANY") // { arity: 4 }
  859. ReadIndex on=nation fk_nation_regionkey=[*** full scan ***] // { arity: 4 }
  860. Return // { arity: 2 }
  861. Project (#0{s_i_id}, #1{sum_s_order_cnt}) // { arity: 2 }
  862. Filter (bigint_to_numeric(#1{sum_s_order_cnt}) > (bigint_to_numeric(#2{sum_s_order_cnt}) * 0.005)) // { arity: 3 }
  863. CrossJoin type=differential // { arity: 3 }
  864. implementation
  865. %1[×]UA » %0[×]
  866. ArrangeBy keys=[[]] // { arity: 2 }
  867. Reduce group_by=[#0{s_i_id}] aggregates=[sum(#1{s_order_cnt})] // { arity: 2 }
  868. Get l0 // { arity: 2 }
  869. ArrangeBy keys=[[]] // { arity: 1 }
  870. Reduce aggregates=[sum(#0{s_order_cnt})] // { arity: 1 }
  871. Project (#1{s_order_cnt}) // { arity: 1 }
  872. Get l0 // { arity: 2 }
  873. Used Indexes:
  874. - materialize.public.fk_stock_supplier (delta join 1st input (full scan))
  875. - materialize.public.fk_nation_regionkey (*** full scan ***)
  876. - materialize.public.fk_supplier_nationkey (*** full scan ***)
  877. Target cluster: quickstart
  878. EOF
  879. # Query 12
  880. query T multiline
  881. EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR
  882. SELECT
  883. o_ol_cnt,
  884. sum(CASE WHEN o_carrier_id = 1 OR o_carrier_id = 2 THEN 1 ELSE 0 END) AS high_line_count,
  885. sum(CASE WHEN o_carrier_id <> 1 AND o_carrier_id <> 2 THEN 1 ELSE 0 END) AS low_line_count
  886. FROM
  887. "order", orderline
  888. WHERE ol_w_id = o_w_id
  889. AND ol_d_id = o_d_id
  890. AND ol_o_id = o_id
  891. AND o_entry_d <= ol_delivery_d
  892. AND ol_delivery_d < TIMESTAMP '2020-01-01 00:00:00.000000'
  893. GROUP BY o_ol_cnt
  894. ORDER BY o_ol_cnt
  895. ----
  896. Explained Query:
  897. Finish order_by=[#0{o_ol_cnt} asc nulls_last] output=[#0..=#2]
  898. Reduce group_by=[#1{o_ol_cnt}] aggregates=[sum(case when ((#0{o_carrier_id} = 1) OR (#0{o_carrier_id} = 2)) then 1 else 0 end), sum(case when ((#0{o_carrier_id} != 1) AND (#0{o_carrier_id} != 2)) then 1 else 0 end)] // { arity: 3 }
  899. Project (#4{o_carrier_id}, #5{o_ol_cnt}) // { arity: 2 }
  900. Filter (date_to_timestamp(#12{ol_delivery_d}) < 2020-01-01 00:00:00) AND (#3{o_entry_d} <= #12{ol_delivery_d}) // { arity: 16 }
  901. Join on=(#0{o_id} = #6{ol_o_id} AND #1{o_d_id} = #7{ol_d_id} AND #2{o_w_id} = #8{ol_w_id}) type=differential // { arity: 16 }
  902. implementation
  903. %0:order[#2{o_w_id}, #1{o_d_id}, #0{o_id}]UKKK » %1:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKAif
  904. ArrangeBy keys=[[#2{o_w_id}, #1{o_d_id}, #0{o_id}]] // { arity: 6 }
  905. Project (#0{o_id}..=#2{o_w_id}, #4{o_entry_d}..=#6{o_ol_cnt}) // { arity: 6 }
  906. ReadIndex on=order fk_order_customer=[*** full scan ***] // { arity: 8 }
  907. ArrangeBy keys=[[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]] // { arity: 10 }
  908. ReadIndex on=orderline fk_orderline_order=[differential join] // { arity: 10 }
  909. Used Indexes:
  910. - materialize.public.fk_order_customer (*** full scan ***)
  911. - materialize.public.fk_orderline_order (differential join)
  912. Target cluster: quickstart
  913. EOF
  914. # Query 13
  915. query T multiline
  916. EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR
  917. SELECT
  918. c_count, count(*) AS custdist
  919. FROM (
  920. SELECT c_id, count(o_id) as c_count
  921. FROM customer
  922. LEFT OUTER JOIN "order" ON (
  923. c_w_id = o_w_id AND c_d_id = o_d_id AND c_id = o_c_id AND o_carrier_id > 8
  924. )
  925. GROUP BY c_id
  926. ) AS c_orders
  927. GROUP BY c_count
  928. ORDER BY custdist DESC, c_count DESC
  929. ----
  930. Explained Query:
  931. Finish order_by=[#1{count} desc nulls_first, #0{count_o_id} desc nulls_first] output=[#0, #1]
  932. With
  933. cte l0 =
  934. Project (#0{c_id}..=#3{o_id}) // { arity: 4 }
  935. Filter (#8{o_carrier_id} > 8) // { arity: 11 }
  936. Join on=(#0{c_id} = #6{o_c_id} AND #1{c_d_id} = #4{o_d_id} AND #2{c_w_id} = #5{o_w_id}) type=differential // { arity: 11 }
  937. implementation
  938. %0:customer[#2{c_w_id}, #1{c_d_id}, #0{c_id}]UKKK » %1:order[#2{o_w_id}, #1{o_d_id}, #3{o_c_id}]KKKAif
  939. ArrangeBy keys=[[#2{c_w_id}, #1{c_d_id}, #0{c_id}]] // { arity: 3 }
  940. Project (#0{c_id}..=#2{c_w_id}) // { arity: 3 }
  941. ReadIndex on=customer fk_customer_district=[*** full scan ***] // { arity: 22 }
  942. ArrangeBy keys=[[#2{o_w_id}, #1{o_d_id}, #3{o_c_id}]] // { arity: 8 }
  943. ReadIndex on=order fk_order_customer=[differential join] // { arity: 8 }
  944. Return // { arity: 2 }
  945. Reduce group_by=[#0{count_o_id}] aggregates=[count(*)] // { arity: 2 }
  946. Project (#1{count_o_id}) // { arity: 1 }
  947. Reduce group_by=[#0{c_id}] aggregates=[count(#1{o_id})] // { arity: 2 }
  948. Union // { arity: 2 }
  949. Map (null) // { arity: 2 }
  950. Union // { arity: 1 }
  951. Negate // { arity: 1 }
  952. Project (#0{c_id}) // { arity: 1 }
  953. Distinct project=[#0{c_id}..=#2{c_w_id}] // { arity: 3 }
  954. Project (#0{c_id}..=#2{c_w_id}) // { arity: 3 }
  955. Get l0 // { arity: 4 }
  956. Project (#0{c_id}) // { arity: 1 }
  957. ReadIndex on=customer fk_customer_district=[*** full scan ***] // { arity: 22 }
  958. Project (#0{c_id}, #3{o_id}) // { arity: 2 }
  959. Get l0 // { arity: 4 }
  960. Used Indexes:
  961. - materialize.public.fk_customer_district (*** full scan ***)
  962. - materialize.public.fk_order_customer (differential join)
  963. Target cluster: quickstart
  964. EOF
  965. # Query 14
  966. query T multiline
  967. EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR
  968. SELECT
  969. 100.00 * sum(CASE WHEN i_data LIKE 'PR%' THEN ol_amount ELSE 0 END) / (1 + sum(ol_amount)) AS promo_revenue
  970. FROM orderline, item
  971. WHERE ol_i_id = i_id
  972. AND ol_delivery_d >= TIMESTAMP '2007-01-02 00:00:00.000000'
  973. AND ol_delivery_d < TIMESTAMP '2020-01-02 00:00:00.000000'
  974. ----
  975. Explained Query:
  976. With
  977. cte l0 =
  978. Reduce aggregates=[sum(case when like["PR%"](padchar(#1{i_data})) then #0{ol_amount} else 0 end), sum(#0{ol_amount})] // { arity: 2 }
  979. Project (#8{ol_amount}, #11{i_data}) // { arity: 2 }
  980. Filter (#12 < 2020-01-02 00:00:00) AND (#12 >= 2007-01-02 00:00:00) // { arity: 13 }
  981. Map (date_to_timestamp(#6{ol_delivery_d})) // { arity: 13 }
  982. Join on=(#4{ol_i_id} = #10{i_id}) type=differential // { arity: 12 }
  983. implementation
  984. %1:item[#0{i_id}]UK » %0:orderline[#4{ol_i_id}]KAiif
  985. ArrangeBy keys=[[#4{ol_i_id}]] // { arity: 10 }
  986. ReadIndex on=orderline fk_orderline_item=[differential join] // { arity: 10 }
  987. ArrangeBy keys=[[#0{i_id}]] // { arity: 2 }
  988. Project (#0{i_id}, #4{i_data}) // { arity: 2 }
  989. ReadStorage materialize.public.item // { arity: 5 }
  990. Return // { arity: 1 }
  991. Project (#2) // { arity: 1 }
  992. Map (((100 * #0{sum}) / (1 + #1{sum_ol_amount}))) // { arity: 3 }
  993. Union // { arity: 2 }
  994. Get l0 // { arity: 2 }
  995. Map (null, null) // { arity: 2 }
  996. Union // { arity: 0 }
  997. Negate // { arity: 0 }
  998. Project () // { arity: 0 }
  999. Get l0 // { arity: 2 }
  1000. Constant // { arity: 0 }
  1001. - ()
  1002. Source materialize.public.item
  1003. Used Indexes:
  1004. - materialize.public.fk_orderline_item (differential join)
  1005. Target cluster: quickstart
  1006. EOF
  1007. # Query 15
  1008. query T multiline
  1009. EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR
  1010. SELECT su_suppkey, su_name, su_address, su_phone, total_revenue
  1011. FROM
  1012. supplier,
  1013. (
  1014. SELECT
  1015. s_su_suppkey AS supplier_no,
  1016. sum(ol_amount) AS total_revenue
  1017. FROM orderline, stock
  1018. WHERE ol_i_id = s_i_id
  1019. AND ol_supply_w_id = s_w_id
  1020. AND ol_delivery_d >= TIMESTAMP '2007-01-02 00:00:00.000000'
  1021. GROUP BY s_su_suppkey
  1022. ) AS revenue
  1023. WHERE su_suppkey = supplier_no
  1024. AND total_revenue = (
  1025. SELECT max(total_revenue)
  1026. FROM (
  1027. SELECT
  1028. s_su_suppkey AS supplier_no,
  1029. sum(ol_amount) AS total_revenue
  1030. FROM orderline, stock
  1031. WHERE ol_i_id = s_i_id
  1032. AND ol_supply_w_id = s_w_id
  1033. AND ol_delivery_d >= TIMESTAMP '2007-01-02 00:00:00.000000'
  1034. GROUP BY s_su_suppkey
  1035. ) AS revenue
  1036. )
  1037. ORDER BY su_suppkey
  1038. ----
  1039. Explained Query:
  1040. Finish order_by=[#0{su_suppkey} asc nulls_last] output=[#0..=#4]
  1041. With
  1042. cte l0 =
  1043. Reduce group_by=[#1{s_su_suppkey}] aggregates=[sum(#0{ol_amount})] // { arity: 2 }
  1044. Project (#8{ol_amount}, #12{s_su_suppkey}) // { arity: 2 }
  1045. Filter (date_to_timestamp(#6{ol_delivery_d}) >= 2007-01-02 00:00:00) // { arity: 13 }
  1046. Join on=(#4{ol_i_id} = #10{s_i_id} AND #5{ol_supply_w_id} = #11{s_w_id}) type=differential // { arity: 13 }
  1047. implementation
  1048. %1:stock[#1{s_w_id}, #0{s_i_id}]UKK » %0:orderline[#5{ol_supply_w_id}, #4{ol_i_id}]KKAif
  1049. ArrangeBy keys=[[#5{ol_supply_w_id}, #4{ol_i_id}]] // { arity: 10 }
  1050. ReadIndex on=orderline fk_orderline_stock=[differential join] // { arity: 10 }
  1051. ArrangeBy keys=[[#1{s_w_id}, #0{s_i_id}]] // { arity: 3 }
  1052. Project (#0{s_i_id}, #1{s_w_id}, #17{s_su_suppkey}) // { arity: 3 }
  1053. ReadIndex on=stock fk_stock_warehouse=[*** full scan ***] // { arity: 18 }
  1054. Return // { arity: 5 }
  1055. Project (#0{su_suppkey}..=#3{su_phone}, #5{sum_ol_amount}) // { arity: 5 }
  1056. Join on=(#0{su_suppkey} = #4{s_su_suppkey} AND #5{sum_ol_amount} = #6{max_sum_ol_amount}) type=delta // { arity: 7 }
  1057. implementation
  1058. %0:supplier » %1:l0[#0]UKA » %2[#0]UK
  1059. %1:l0 » %0:supplier[#0{su_suppkey}]UK » %2[#0]UK
  1060. %2 » %1:l0[#1{total_revenue}]K » %0:supplier[#0{su_suppkey}]UK
  1061. ArrangeBy keys=[[#0{su_suppkey}]] // { arity: 4 }
  1062. Project (#0{su_suppkey}..=#2{su_address}, #4{su_phone}) // { arity: 4 }
  1063. ReadIndex on=supplier fk_supplier_nationkey=[*** full scan ***] // { arity: 7 }
  1064. ArrangeBy keys=[[#0{s_su_suppkey}], [#1{sum_ol_amount}]] // { arity: 2 }
  1065. Filter (#1{sum_ol_amount}) IS NOT NULL // { arity: 2 }
  1066. Get l0 // { arity: 2 }
  1067. ArrangeBy keys=[[#0{max_sum_ol_amount}]] // { arity: 1 }
  1068. Filter (#0{max_sum_ol_amount}) IS NOT NULL // { arity: 1 }
  1069. Reduce aggregates=[max(#0{sum_ol_amount})] // { arity: 1 }
  1070. Project (#1{sum_ol_amount}) // { arity: 1 }
  1071. Get l0 // { arity: 2 }
  1072. Used Indexes:
  1073. - materialize.public.fk_orderline_stock (differential join)
  1074. - materialize.public.fk_stock_warehouse (*** full scan ***)
  1075. - materialize.public.fk_supplier_nationkey (*** full scan ***)
  1076. Target cluster: quickstart
  1077. EOF
  1078. # Query 16
  1079. query T multiline
  1080. EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR
  1081. SELECT
  1082. i_name,
  1083. substr(i_data, 1, 3) AS brand,
  1084. i_price,
  1085. count(DISTINCT s_su_suppkey) AS supplier_cnt
  1086. FROM stock, item
  1087. WHERE i_id = s_i_id
  1088. AND i_data NOT LIKE 'zz%'
  1089. AND (
  1090. s_su_suppkey NOT IN (SELECT su_suppkey FROM supplier WHERE su_comment like '%bad%')
  1091. )
  1092. GROUP BY i_name, substr(i_data, 1, 3), i_price
  1093. ORDER BY supplier_cnt DESC
  1094. ----
  1095. Explained Query:
  1096. Finish order_by=[#3{count_s_su_suppkey} desc nulls_first] output=[#0..=#3]
  1097. With
  1098. cte l0 =
  1099. Project (#17{s_su_suppkey}, #19{i_name}..=#21{i_data}) // { arity: 4 }
  1100. Join on=(#0{s_i_id} = #18{i_id}) type=differential // { arity: 22 }
  1101. implementation
  1102. %1:item[#0{i_id}]UKf » %0:stock[#0{s_i_id}]KAf
  1103. ArrangeBy keys=[[#0{s_i_id}]] // { arity: 18 }
  1104. ReadIndex on=stock fk_stock_item=[differential join] // { arity: 18 }
  1105. ArrangeBy keys=[[#0{i_id}]] // { arity: 4 }
  1106. Project (#0{i_id}, #2{i_name}..=#4{i_data}) // { arity: 4 }
  1107. Filter NOT(like["zz%"](padchar(#4{i_data}))) // { arity: 5 }
  1108. ReadStorage materialize.public.item // { arity: 5 }
  1109. cte l1 =
  1110. Distinct project=[#0{s_su_suppkey}] // { arity: 1 }
  1111. Project (#0{s_su_suppkey}) // { arity: 1 }
  1112. Get l0 // { arity: 4 }
  1113. Return // { arity: 4 }
  1114. Reduce group_by=[#1{i_name}, substr(char_to_text(#3{i_data}), 1, 3), #2{i_price}] aggregates=[count(distinct #0{s_su_suppkey})] // { arity: 4 }
  1115. Project (#0{s_su_suppkey}..=#3{i_data}) // { arity: 4 }
  1116. Join on=(#0{s_su_suppkey} = #4{s_su_suppkey}) type=differential // { arity: 5 }
  1117. implementation
  1118. %0:l0[#0]K » %1[#0]K
  1119. ArrangeBy keys=[[#0{s_su_suppkey}]] // { arity: 4 }
  1120. Get l0 // { arity: 4 }
  1121. ArrangeBy keys=[[#0{s_su_suppkey}]] // { arity: 1 }
  1122. Union // { arity: 1 }
  1123. Negate // { arity: 1 }
  1124. Project (#0{s_su_suppkey}) // { arity: 1 }
  1125. Join on=(#0{s_su_suppkey} = #1{su_suppkey}) type=differential // { arity: 2 }
  1126. implementation
  1127. %0:l1[#0]UKA » %1:supplier[#0]UKlf
  1128. ArrangeBy keys=[[#0{s_su_suppkey}]] // { arity: 1 }
  1129. Get l1 // { arity: 1 }
  1130. ArrangeBy keys=[[#0{su_suppkey}]] // { arity: 1 }
  1131. Project (#0{su_suppkey}) // { arity: 1 }
  1132. Filter like["%bad%"](padchar(#6{su_comment})) // { arity: 7 }
  1133. ReadIndex on=supplier fk_supplier_nationkey=[*** full scan ***] // { arity: 7 }
  1134. Get l1 // { arity: 1 }
  1135. Source materialize.public.item
  1136. filter=(NOT(like["zz%"](padchar(#4{i_data}))))
  1137. Used Indexes:
  1138. - materialize.public.fk_stock_item (differential join)
  1139. - materialize.public.fk_supplier_nationkey (*** full scan ***)
  1140. Target cluster: quickstart
  1141. EOF
  1142. # Query 17
  1143. query T multiline
  1144. EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR
  1145. SELECT
  1146. sum(ol_amount) / 2.0 AS avg_yearly
  1147. FROM
  1148. orderline,
  1149. (
  1150. SELECT i_id, avg(ol_quantity) AS a
  1151. FROM item, orderline
  1152. WHERE i_data LIKE '%b' AND ol_i_id = i_id
  1153. GROUP BY i_id
  1154. ) t
  1155. WHERE ol_i_id = t.i_id
  1156. AND ol_quantity < t.a
  1157. ----
  1158. Explained Query:
  1159. With
  1160. cte l0 =
  1161. ArrangeBy keys=[[#4{ol_i_id}]] // { arity: 10 }
  1162. ReadIndex on=orderline fk_orderline_item=[differential join] // { arity: 10 }
  1163. cte l1 =
  1164. Reduce aggregates=[sum(#0{ol_amount})] // { arity: 1 }
  1165. Project (#8{ol_amount}) // { arity: 1 }
  1166. Filter (integer_to_numeric(#7{ol_quantity}) < (bigint_to_numeric(#11{sum_ol_quantity}) / bigint_to_numeric(case when (#12{count_ol_quantity} = 0) then null else #12{count_ol_quantity} end))) // { arity: 13 }
  1167. Join on=(#4{ol_i_id} = #10{i_id}) type=differential // { arity: 13 }
  1168. implementation
  1169. %1[#0{i_id}]UKA » %0:l0[#4{ol_i_id}]KA
  1170. Get l0 // { arity: 10 }
  1171. ArrangeBy keys=[[#0{i_id}]] // { arity: 3 }
  1172. Reduce group_by=[#0{i_id}] aggregates=[sum(#1{ol_quantity}), count(#1{ol_quantity})] // { arity: 3 }
  1173. Project (#0{i_id}, #8{ol_quantity}) // { arity: 2 }
  1174. Join on=(#0{i_id} = #5{ol_i_id}) type=differential // { arity: 11 }
  1175. implementation
  1176. %0:item[#0{i_id}]UKlf » %1:l0[#4{ol_i_id}]KAlf
  1177. ArrangeBy keys=[[#0{i_id}]] // { arity: 1 }
  1178. Project (#0{i_id}) // { arity: 1 }
  1179. Filter like["%b"](padchar(#4{i_data})) // { arity: 5 }
  1180. ReadStorage materialize.public.item // { arity: 5 }
  1181. Get l0 // { arity: 10 }
  1182. Return // { arity: 1 }
  1183. Project (#1) // { arity: 1 }
  1184. Map ((#0{sum_ol_amount} / 2)) // { arity: 2 }
  1185. Union // { arity: 1 }
  1186. Get l1 // { arity: 1 }
  1187. Map (null) // { arity: 1 }
  1188. Union // { arity: 0 }
  1189. Negate // { arity: 0 }
  1190. Project () // { arity: 0 }
  1191. Get l1 // { arity: 1 }
  1192. Constant // { arity: 0 }
  1193. - ()
  1194. Source materialize.public.item
  1195. filter=(like["%b"](padchar(#4{i_data})))
  1196. Used Indexes:
  1197. - materialize.public.fk_orderline_item (differential join)
  1198. Target cluster: quickstart
  1199. EOF
  1200. # Query 18
  1201. query T multiline
  1202. EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR
  1203. SELECT c_last, c_id, o_id, o_entry_d, o_ol_cnt, sum(ol_amount)
  1204. FROM customer, "order", orderline
  1205. WHERE c_id = o_c_id
  1206. AND c_w_id = o_w_id
  1207. AND c_d_id = o_d_id
  1208. AND ol_w_id = o_w_id
  1209. AND ol_d_id = o_d_id
  1210. AND ol_o_id = o_id
  1211. GROUP BY o_id, o_w_id, o_d_id, c_id, c_last, o_entry_d, o_ol_cnt
  1212. HAVING sum(ol_amount) > 200
  1213. ORDER BY sum(ol_amount) DESC, o_entry_d
  1214. ----
  1215. Explained Query:
  1216. Finish order_by=[#5{sum_ol_amount} desc nulls_first, #3{o_entry_d} asc nulls_last] output=[#0..=#5]
  1217. Project (#4{c_last}, #3{c_id}, #0{o_id}, #5{o_entry_d}..=#7{sum_ol_amount}) // { arity: 6 }
  1218. Filter (#7{sum_ol_amount} > 200) // { arity: 8 }
  1219. Reduce group_by=[#4{o_id}, #2{c_w_id}, #1{c_d_id}, #0{c_id}, #3{c_last}, #5{o_entry_d}, #6{o_ol_cnt}] aggregates=[sum(#7{ol_amount})] // { arity: 8 }
  1220. Project (#0{c_id}..=#4{o_id}, #8{o_entry_d}, #9{o_ol_cnt}, #18{ol_amount}) // { arity: 8 }
  1221. Join on=(#0{c_id} = #7{o_c_id} AND #1{c_d_id} = #5{o_d_id} = #11{ol_d_id} AND #2{c_w_id} = #6{o_w_id} = #12{ol_w_id} AND #4{o_id} = #10{ol_o_id}) type=delta // { arity: 20 }
  1222. implementation
  1223. %0:customer » %1:order[#2{o_w_id}, #1{o_d_id}, #3{o_c_id}]KKKA » %2:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKA
  1224. %1:order » %0:customer[#0{c_id}..=#2{c_w_id}]UKKK » %2:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKA
  1225. %2:orderline » %1:order[#0{o_id}..=#2{o_w_id}]UKKK » %0:customer[#0{c_id}..=#2{c_w_id}]UKKK
  1226. ArrangeBy keys=[[#0{c_id}..=#2{c_w_id}]] // { arity: 4 }
  1227. Project (#0{c_id}..=#2{c_w_id}, #5{c_last}) // { arity: 4 }
  1228. ReadIndex on=customer fk_customer_district=[*** full scan ***] // { arity: 22 }
  1229. ArrangeBy keys=[[#0{o_id}..=#2{o_w_id}], [#2{o_w_id}, #1{o_d_id}, #3{o_c_id}]] // { arity: 6 }
  1230. Project (#0{o_id}..=#4{o_entry_d}, #6{o_ol_cnt}) // { arity: 6 }
  1231. Filter (#3{o_c_id}) IS NOT NULL // { arity: 8 }
  1232. ReadIndex on=order fk_order_customer=[*** full scan ***] // { arity: 8 }
  1233. ArrangeBy keys=[[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]] // { arity: 10 }
  1234. ReadIndex on=orderline fk_orderline_order=[delta join lookup] // { arity: 10 }
  1235. Used Indexes:
  1236. - materialize.public.fk_customer_district (*** full scan ***)
  1237. - materialize.public.fk_order_customer (*** full scan ***)
  1238. - materialize.public.fk_orderline_order (delta join lookup)
  1239. Target cluster: quickstart
  1240. EOF
  1241. # Query 19
  1242. query T multiline
  1243. EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR
  1244. SELECT sum(ol_amount) AS revenue
  1245. FROM orderline, item
  1246. WHERE (
  1247. ol_i_id = i_id
  1248. AND i_data LIKE '%a'
  1249. AND ol_quantity >= 1
  1250. AND ol_quantity <= 10
  1251. AND i_price BETWEEN 1 AND 400000
  1252. AND ol_w_id in (1, 2, 3)
  1253. ) OR (
  1254. ol_i_id = i_id
  1255. AND i_data LIKE '%b'
  1256. AND ol_quantity >= 1
  1257. AND ol_quantity <= 10
  1258. AND i_price BETWEEN 1 AND 400000
  1259. AND ol_w_id IN (1, 2, 4)
  1260. ) OR (
  1261. ol_i_id = i_id
  1262. AND i_data LIKE '%c'
  1263. AND ol_quantity >= 1
  1264. AND ol_quantity <= 10
  1265. AND i_price BETWEEN 1 AND 400000
  1266. AND ol_w_id in (1, 5, 3)
  1267. )
  1268. ----
  1269. Explained Query:
  1270. With
  1271. cte l0 =
  1272. Reduce aggregates=[sum(#0{ol_amount})] // { arity: 1 }
  1273. Project (#8{ol_amount}) // { arity: 1 }
  1274. Filter (#7{ol_quantity} <= 10) AND (#7{ol_quantity} >= 1) AND (#12 OR #13 OR #14 OR #15 OR #16) AND ((like["%a"](#17) AND (#12 OR #13 OR #14)) OR (like["%b"](#17) AND (#12 OR #13 OR #15)) OR (like["%c"](#17) AND (#12 OR #14 OR #16))) // { arity: 18 }
  1275. Map ((#2{ol_w_id} = 1), (#2{ol_w_id} = 2), (#2{ol_w_id} = 3), (#2{ol_w_id} = 4), (#2{ol_w_id} = 5), padchar(#11{i_data})) // { arity: 18 }
  1276. Join on=(#4{ol_i_id} = #10{i_id}) type=differential // { arity: 12 }
  1277. implementation
  1278. %1:item[#0{i_id}]UKliif » %0:orderline[#4{ol_i_id}]KAeliiiif
  1279. ArrangeBy keys=[[#4{ol_i_id}]] // { arity: 10 }
  1280. ReadIndex on=orderline fk_orderline_item=[differential join] // { arity: 10 }
  1281. ArrangeBy keys=[[#0{i_id}]] // { arity: 2 }
  1282. Project (#0{i_id}, #4{i_data}) // { arity: 2 }
  1283. Filter (#3{i_price} <= 400000) AND (#3{i_price} >= 1) AND (like["%a"](#5) OR like["%b"](#5) OR like["%c"](#5)) // { arity: 6 }
  1284. Map (padchar(#4{i_data})) // { arity: 6 }
  1285. ReadStorage materialize.public.item // { arity: 5 }
  1286. Return // { arity: 1 }
  1287. Union // { arity: 1 }
  1288. Get l0 // { arity: 1 }
  1289. Map (null) // { arity: 1 }
  1290. Union // { arity: 0 }
  1291. Negate // { arity: 0 }
  1292. Project () // { arity: 0 }
  1293. Get l0 // { arity: 1 }
  1294. Constant // { arity: 0 }
  1295. - ()
  1296. Source materialize.public.item
  1297. filter=((#3{i_price} <= 400000) AND (#3{i_price} >= 1) AND (like["%a"](#5) OR like["%b"](#5) OR like["%c"](#5)))
  1298. map=(padchar(#4{i_data}))
  1299. Used Indexes:
  1300. - materialize.public.fk_orderline_item (differential join)
  1301. Target cluster: quickstart
  1302. Notices:
  1303. - Notice: Index materialize.public.fk_orderline_order on orderline(ol_w_id, ol_d_id, ol_o_id) is too wide to use for literal equalities `ol_w_id IN (1, 2, 3, 4, 5)`.
  1304. Hint: If your literal equalities filter out many rows, create an index whose key exactly matches your literal equalities: (ol_w_id).
  1305. EOF
  1306. # Query 20
  1307. query T multiline
  1308. EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR
  1309. SELECT su_name, su_address
  1310. FROM supplier, nation
  1311. WHERE su_suppkey IN (
  1312. SELECT mod(s_i_id * s_w_id, 10000)
  1313. FROM stock, orderline
  1314. WHERE s_i_id IN (SELECT i_id FROM item WHERE i_data LIKE 'co%')
  1315. AND ol_i_id = s_i_id
  1316. AND ol_delivery_d > TIMESTAMP '2010-05-23 12:00:00'
  1317. GROUP BY s_i_id, s_w_id, s_quantity
  1318. HAVING 2 * s_quantity > sum(ol_quantity)
  1319. )
  1320. AND su_nationkey = n_nationkey
  1321. AND n_name = 'GERMANY'
  1322. ORDER BY su_name
  1323. ----
  1324. Explained Query:
  1325. Finish order_by=[#0{su_name} asc nulls_last] output=[#0, #1]
  1326. With
  1327. cte l0 =
  1328. Project (#0{su_suppkey}..=#2{su_address}) // { arity: 3 }
  1329. Join on=(#3{su_nationkey} = #7{n_nationkey}) type=differential // { arity: 8 }
  1330. implementation
  1331. %1:nation[#0{n_nationkey}]UKef » %0:supplier[#3{su_nationkey}]KAef
  1332. ArrangeBy keys=[[#3{su_nationkey}]] // { arity: 7 }
  1333. ReadIndex on=supplier fk_supplier_nationkey=[differential join] // { arity: 7 }
  1334. ArrangeBy keys=[[#0{n_nationkey}]] // { arity: 1 }
  1335. Project (#0{n_nationkey}) // { arity: 1 }
  1336. Filter (#1{n_name} = "GERMANY") // { arity: 4 }
  1337. ReadIndex on=nation fk_nation_regionkey=[*** full scan ***] // { arity: 4 }
  1338. Return // { arity: 2 }
  1339. Project (#1{su_name}, #2{su_address}) // { arity: 2 }
  1340. Join on=(#0{su_suppkey} = #3{su_suppkey}) type=differential // { arity: 4 }
  1341. implementation
  1342. %1[#0]UKA » %0:l0[#0]UK
  1343. ArrangeBy keys=[[#0{su_suppkey}]] // { arity: 3 }
  1344. Get l0 // { arity: 3 }
  1345. ArrangeBy keys=[[#0{su_suppkey}]] // { arity: 1 }
  1346. Distinct project=[#0{su_suppkey}] // { arity: 1 }
  1347. Project (#0{su_suppkey}) // { arity: 1 }
  1348. Filter (integer_to_bigint((2 * #3{s_quantity})) > #4{sum_ol_quantity}) // { arity: 5 }
  1349. Reduce group_by=[#0{su_suppkey}..=#3{s_quantity}] aggregates=[sum(#4{ol_quantity})] // { arity: 5 }
  1350. Project (#0{su_suppkey}..=#3{s_quantity}, #11{ol_quantity}) // { arity: 5 }
  1351. Filter (date_to_timestamp(#10{ol_delivery_d}) > 2010-05-23 12:00:00) // { arity: 15 }
  1352. Join on=(#0{su_suppkey} = ((#1{s_i_id} * #2{s_w_id}) % 10000) AND #1{s_i_id} = #8{ol_i_id} = #14{i_id}) type=delta // { arity: 15 }
  1353. implementation
  1354. %0:l0 » %1:stock[((#0 * #1) % 10000)]K » %3:item[#0]UKlf » %2:orderline[#4{ol_i_id}]KAif
  1355. %1:stock » %3:item[#0]UKlf » %0:l0[#0]UK » %2:orderline[#4{ol_i_id}]KAif
  1356. %2:orderline » %3:item[#0]UKlf » %1:stock[#0{s_i_id}]KA » %0:l0[#0]UK
  1357. %3:item » %2:orderline[#4{ol_i_id}]KAif » %1:stock[#0{s_i_id}]KA » %0:l0[#0]UK
  1358. ArrangeBy keys=[[#0{su_suppkey}]] // { arity: 1 }
  1359. Project (#0{su_suppkey}) // { arity: 1 }
  1360. Get l0 // { arity: 3 }
  1361. ArrangeBy keys=[[#0{s_i_id}], [((#0{s_i_id} * #1{s_w_id}) % 10000)]] // { arity: 3 }
  1362. Project (#0{s_i_id}..=#2{s_quantity}) // { arity: 3 }
  1363. ReadIndex on=stock fk_stock_warehouse=[*** full scan ***] // { arity: 18 }
  1364. ArrangeBy keys=[[#4{ol_i_id}]] // { arity: 10 }
  1365. ReadIndex on=orderline fk_orderline_item=[delta join lookup] // { arity: 10 }
  1366. ArrangeBy keys=[[#0{i_id}]] // { arity: 1 }
  1367. Project (#0{i_id}) // { arity: 1 }
  1368. Filter like["co%"](padchar(#4{i_data})) // { arity: 5 }
  1369. ReadStorage materialize.public.item // { arity: 5 }
  1370. Source materialize.public.item
  1371. filter=(like["co%"](padchar(#4{i_data})))
  1372. Used Indexes:
  1373. - materialize.public.fk_orderline_item (delta join lookup)
  1374. - materialize.public.fk_stock_warehouse (*** full scan ***)
  1375. - materialize.public.fk_nation_regionkey (*** full scan ***)
  1376. - materialize.public.fk_supplier_nationkey (differential join)
  1377. Target cluster: quickstart
  1378. EOF
  1379. # Query 21
  1380. query T multiline
  1381. EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR
  1382. SELECT
  1383. su_name, count(*) as numwait
  1384. FROM
  1385. supplier, orderline l1, "order", stock, nation
  1386. WHERE ol_o_id = o_id
  1387. AND ol_w_id = o_w_id
  1388. AND ol_d_id = o_d_id
  1389. AND ol_w_id = s_w_id
  1390. AND ol_i_id = s_i_id
  1391. AND s_su_suppkey = su_suppkey
  1392. AND l1.ol_delivery_d > o_entry_d
  1393. AND NOT EXISTS (
  1394. SELECT *
  1395. FROM orderline l2
  1396. WHERE l2.ol_o_id = l1.ol_o_id
  1397. AND l2.ol_w_id = l1.ol_w_id
  1398. AND l2.ol_d_id = l1.ol_d_id
  1399. AND l2.ol_delivery_d > l1.ol_delivery_d
  1400. )
  1401. AND su_nationkey = n_nationkey
  1402. AND n_name = 'GERMANY'
  1403. GROUP BY su_name
  1404. ORDER BY numwait DESC, su_name
  1405. ----
  1406. Explained Query:
  1407. Finish order_by=[#1{count} desc nulls_first, #0{su_name} asc nulls_last] output=[#0, #1]
  1408. With
  1409. cte l0 =
  1410. Project (#1{su_name}, #3{ol_o_id}..=#5{ol_w_id}, #7{ol_delivery_d}) // { arity: 5 }
  1411. Filter (#7{ol_delivery_d} > #11{o_entry_d}) // { arity: 16 }
  1412. Join on=(#0{su_suppkey} = #14{s_su_suppkey} AND #2{su_nationkey} = #15{n_nationkey} AND #3{ol_o_id} = #8{o_id} AND #4{ol_d_id} = #9{o_d_id} AND #5{ol_w_id} = #10{o_w_id} = #13{s_w_id} AND #6{ol_i_id} = #12{s_i_id}) type=delta // { arity: 16 }
  1413. implementation
  1414. %0:supplier » %4:nation[#0{n_nationkey}]UKef » %3:stock[#2{s_su_suppkey}]KA » %1:orderline[#2{ol_w_id}, #3{ol_i_id}]KK » %2:order[#0{o_id}..=#2{o_w_id}]UKKK
  1415. %1:orderline » %2:order[#0{o_id}..=#2{o_w_id}]UKKK » %3:stock[#0{s_i_id}, #1{s_w_id}]UKK » %0:supplier[#0{su_suppkey}]UK » %4:nation[#0{n_nationkey}]UKef
  1416. %2:order » %1:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKA » %3:stock[#0{s_i_id}, #1{s_w_id}]UKK » %0:supplier[#0{su_suppkey}]UK » %4:nation[#0{n_nationkey}]UKef
  1417. %3:stock » %0:supplier[#0{su_suppkey}]UK » %4:nation[#0{n_nationkey}]UKef » %1:orderline[#2{ol_w_id}, #3{ol_i_id}]KK » %2:order[#0{o_id}..=#2{o_w_id}]UKKK
  1418. %4:nation » %0:supplier[#2{su_nationkey}]KA » %3:stock[#2{s_su_suppkey}]KA » %1:orderline[#2{ol_w_id}, #3{ol_i_id}]KK » %2:order[#0{o_id}..=#2{o_w_id}]UKKK
  1419. ArrangeBy keys=[[#0{su_suppkey}], [#2{su_nationkey}]] // { arity: 3 }
  1420. Project (#0{su_suppkey}, #1{su_name}, #3{su_nationkey}) // { arity: 3 }
  1421. ReadIndex on=supplier fk_supplier_nationkey=[*** full scan ***] // { arity: 7 }
  1422. ArrangeBy keys=[[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}], [#2{ol_w_id}, #3{ol_i_id}]] // { arity: 5 }
  1423. Project (#0{ol_o_id}..=#2{ol_w_id}, #4{ol_i_id}, #6{ol_delivery_d}) // { arity: 5 }
  1424. Filter (#4{ol_i_id}) IS NOT NULL // { arity: 10 }
  1425. ReadIndex on=orderline fk_orderline_order=[*** full scan ***] // { arity: 10 }
  1426. ArrangeBy keys=[[#0{o_id}..=#2{o_w_id}]] // { arity: 4 }
  1427. Project (#0{o_id}..=#2{o_w_id}, #4{o_entry_d}) // { arity: 4 }
  1428. ReadIndex on=order fk_order_customer=[*** full scan ***] // { arity: 8 }
  1429. ArrangeBy keys=[[#0{s_i_id}, #1{s_w_id}], [#2{s_su_suppkey}]] // { arity: 3 }
  1430. Project (#0{s_i_id}, #1{s_w_id}, #17{s_su_suppkey}) // { arity: 3 }
  1431. ReadIndex on=stock fk_stock_warehouse=[*** full scan ***] // { arity: 18 }
  1432. ArrangeBy keys=[[#0{n_nationkey}]] // { arity: 1 }
  1433. Project (#0{n_nationkey}) // { arity: 1 }
  1434. Filter (#1{n_name} = "GERMANY") // { arity: 4 }
  1435. ReadIndex on=nation fk_nation_regionkey=[*** full scan ***] // { arity: 4 }
  1436. cte l1 =
  1437. Distinct project=[#0{ol_o_id}..=#3{ol_delivery_d}] // { arity: 4 }
  1438. Project (#1{ol_o_id}..=#4{ol_delivery_d}) // { arity: 4 }
  1439. Get l0 // { arity: 5 }
  1440. Return // { arity: 2 }
  1441. Reduce group_by=[#0{su_name}] aggregates=[count(*)] // { arity: 2 }
  1442. Project (#0{su_name}) // { arity: 1 }
  1443. Join on=(#1{ol_o_id} = #5{ol_o_id} AND #2{ol_d_id} = #6{ol_d_id} AND #3{ol_w_id} = #7{ol_w_id} AND #4{ol_delivery_d} = #8{ol_delivery_d}) type=differential // { arity: 9 }
  1444. implementation
  1445. %0:l0[#1..=#4]KKKK » %1[#0..=#3]KKKK
  1446. ArrangeBy keys=[[#1{ol_o_id}..=#4{ol_delivery_d}]] // { arity: 5 }
  1447. Get l0 // { arity: 5 }
  1448. ArrangeBy keys=[[#0{ol_o_id}..=#3{ol_delivery_d}]] // { arity: 4 }
  1449. Union // { arity: 4 }
  1450. Negate // { arity: 4 }
  1451. Distinct project=[#0{ol_o_id}..=#3{ol_delivery_d}] // { arity: 4 }
  1452. Project (#0{ol_o_id}..=#3{ol_delivery_d}) // { arity: 4 }
  1453. Filter (#10{ol_delivery_d} > #3{ol_delivery_d}) // { arity: 14 }
  1454. Join on=(#0{ol_o_id} = #4{ol_o_id} AND #1{ol_d_id} = #5{ol_d_id} AND #2{ol_w_id} = #6{ol_w_id}) type=differential // { arity: 14 }
  1455. implementation
  1456. %0:l1[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKK » %1:orderline[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]KKKA
  1457. ArrangeBy keys=[[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]] // { arity: 4 }
  1458. Get l1 // { arity: 4 }
  1459. ArrangeBy keys=[[#2{ol_w_id}, #1{ol_d_id}, #0{ol_o_id}]] // { arity: 10 }
  1460. ReadIndex on=orderline fk_orderline_order=[differential join] // { arity: 10 }
  1461. Get l1 // { arity: 4 }
  1462. Used Indexes:
  1463. - materialize.public.fk_order_customer (*** full scan ***)
  1464. - materialize.public.fk_orderline_order (*** full scan ***, differential join)
  1465. - materialize.public.fk_stock_warehouse (*** full scan ***)
  1466. - materialize.public.fk_nation_regionkey (*** full scan ***)
  1467. - materialize.public.fk_supplier_nationkey (*** full scan ***)
  1468. Target cluster: quickstart
  1469. EOF
  1470. # Query 22
  1471. query T multiline
  1472. EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR
  1473. SELECT
  1474. substr(c_state, 1, 1) AS country,
  1475. count(*) AS numcust,
  1476. sum(c_balance) AS totacctbal
  1477. FROM customer
  1478. WHERE substr(c_phone, 1, 1) IN ('1', '2', '3', '4', '5', '6', '7')
  1479. AND c_balance > (
  1480. SELECT avg(c_balance)
  1481. FROM customer
  1482. WHERE c_balance > 0.00
  1483. AND substr(c_phone, 1, 1) IN ('1', '2', '3', '4', '5', '6', '7')
  1484. )
  1485. AND NOT EXISTS (
  1486. SELECT *
  1487. FROM "order"
  1488. WHERE o_c_id = c_id AND o_w_id = c_w_id AND o_d_id = c_d_id
  1489. )
  1490. GROUP BY substr(c_state, 1, 1)
  1491. ORDER BY substr(c_state, 1, 1)
  1492. ----
  1493. Explained Query:
  1494. Finish order_by=[#0 asc nulls_last] output=[#0..=#2]
  1495. With
  1496. cte l0 =
  1497. Project (#0{c_id}..=#2{c_w_id}, #9{c_state}, #16{c_balance}, #22) // { arity: 6 }
  1498. Map (substr(char_to_text(#11{c_phone}), 1, 1)) // { arity: 23 }
  1499. ReadIndex on=customer fk_customer_district=[*** full scan ***] // { arity: 22 }
  1500. cte l1 =
  1501. Project (#0{c_id}..=#4{c_balance}) // { arity: 5 }
  1502. Filter (#4{c_balance} > (#5{sum_c_balance} / bigint_to_numeric(case when (#6{count} = 0) then null else #6{count} end))) // { arity: 7 }
  1503. CrossJoin type=differential // { arity: 7 }
  1504. implementation
  1505. %1[×]UA » %0:l0[×]ef
  1506. ArrangeBy keys=[[]] // { arity: 5 }
  1507. Project (#0{c_id}..=#4{c_balance}) // { arity: 5 }
  1508. Filter ((#5 = "1") OR (#5 = "2") OR (#5 = "3") OR (#5 = "4") OR (#5 = "5") OR (#5 = "6") OR (#5 = "7")) // { arity: 6 }
  1509. Get l0 // { arity: 6 }
  1510. ArrangeBy keys=[[]] // { arity: 2 }
  1511. Reduce aggregates=[sum(#0{c_balance}), count(*)] // { arity: 2 }
  1512. Project (#4{c_balance}) // { arity: 1 }
  1513. Filter (#4{c_balance} > 0) AND ((#5 = "1") OR (#5 = "2") OR (#5 = "3") OR (#5 = "4") OR (#5 = "5") OR (#5 = "6") OR (#5 = "7")) // { arity: 6 }
  1514. Get l0 // { arity: 6 }
  1515. cte l2 =
  1516. Project (#0{c_id}..=#2{c_w_id}) // { arity: 3 }
  1517. Get l1 // { arity: 5 }
  1518. Return // { arity: 3 }
  1519. Reduce group_by=[substr(char_to_text(#0{c_state}), 1, 1)] aggregates=[count(*), sum(#1{c_balance})] // { arity: 3 }
  1520. Project (#3{c_state}, #4{c_balance}) // { arity: 2 }
  1521. Join on=(#0{c_id} = #5{c_id} AND #1{c_d_id} = #6{c_d_id} AND #2{c_w_id} = #7{c_w_id}) type=differential // { arity: 8 }
  1522. implementation
  1523. %0:l1[#0..=#2]UKKK » %1[#0..=#2]KKK
  1524. ArrangeBy keys=[[#0{c_id}..=#2{c_w_id}]] // { arity: 5 }
  1525. Get l1 // { arity: 5 }
  1526. ArrangeBy keys=[[#0{c_id}..=#2{c_w_id}]] // { arity: 3 }
  1527. Union // { arity: 3 }
  1528. Negate // { arity: 3 }
  1529. Project (#0{c_id}..=#2{c_w_id}) // { arity: 3 }
  1530. Join on=(#0{c_id} = #3{o_c_id} AND #1{c_d_id} = #4{o_d_id} AND #2{c_w_id} = #5{o_w_id}) type=differential // { arity: 6 }
  1531. implementation
  1532. %1[#0..=#2]UKKKA » %0:l2[#0..=#2]UKKK
  1533. ArrangeBy keys=[[#0{c_id}..=#2{c_w_id}]] // { arity: 3 }
  1534. Get l2 // { arity: 3 }
  1535. ArrangeBy keys=[[#0{o_c_id}..=#2{o_w_id}]] // { arity: 3 }
  1536. Distinct project=[#2{o_c_id}, #0{o_d_id}, #1{o_w_id}] // { arity: 3 }
  1537. Project (#1{o_d_id}..=#3{o_c_id}) // { arity: 3 }
  1538. Filter (#3{o_c_id}) IS NOT NULL // { arity: 8 }
  1539. ReadIndex on=order fk_order_customer=[*** full scan ***] // { arity: 8 }
  1540. Get l2 // { arity: 3 }
  1541. Used Indexes:
  1542. - materialize.public.fk_customer_district (*** full scan ***)
  1543. - materialize.public.fk_order_customer (*** full scan ***)
  1544. Target cluster: quickstart
  1545. EOF