123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080 |
- # Copyright Materialize, Inc. and contributors. All rights reserved.
- #
- # Use of this software is governed by the Business Source License
- # included in the LICENSE file at the root of this repository.
- #
- # As of the Change Date specified in that file, in accordance with
- # the Business Source License, use of this software will be governed
- # by the Apache License, Version 2.0.
- $ set-arg-default single-replica-cluster=quickstart
- $ postgres-execute connection=postgres://mz_system:materialize@${testdrive.materialize-internal-sql-addr}
- ALTER SYSTEM SET unsafe_enable_table_keys = true
- ALTER SYSTEM SET enable_primary_key_not_enforced = true
- #
- # Test that the knowledge that a given set of fields forms a primary key is used by the optimizer to remove grouping and distinct operations
- #
- # Remove references to internal table identifiers and "materialize.public" strings
- $ set-regex match=(\s\(u\d+\)|materialize\.public\.) replacement=
- $ set keyschema-2keys={
- "type": "record",
- "name": "Key",
- "fields": [
- {"name": "key1", "type": "string"},
- {"name": "key2", "type": "string"}
- ]
- }
- $ set schema={
- "type" : "record",
- "name" : "test",
- "fields" : [
- {"name":"nokey", "type":"string"}
- ]
- }
- $ kafka-create-topic topic=t1
- $ kafka-ingest format=avro topic=t1 key-format=avro key-schema=${keyschema-2keys} schema=${schema}
- > CREATE CONNECTION IF NOT EXISTS csr_conn TO CONFLUENT SCHEMA REGISTRY (
- URL '${testdrive.schema-registry-url}'
- );
- > CREATE CONNECTION kafka_conn
- TO KAFKA (BROKER '${testdrive.kafka-addr}', SECURITY PROTOCOL PLAINTEXT);
- > CREATE SOURCE t1
- IN CLUSTER ${arg.single-replica-cluster}
- FROM KAFKA CONNECTION kafka_conn (TOPIC
- 'testdrive-t1-${testdrive.seed}')
- FORMAT AVRO USING CONFLUENT SCHEMA REGISTRY CONNECTION csr_conn
- ENVELOPE UPSERT;
- > CREATE DEFAULT INDEX ON t1
- # Optimization is possible - no distinct is mentioned in the plan
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key1, key2 FROM t1;
- Explained Query (fast path):
- Project (#0, #1)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT key1, key2 FROM t1;
- Explained Query (fast path):
- Project (#0, #1)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key2, key1 FROM t1;
- Explained Query (fast path):
- Project (#1, #0)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT key2, key1 FROM t1;
- Explained Query (fast path):
- Project (#1, #0)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key2, key1, key2 FROM t1;
- Explained Query (fast path):
- Project (#1, #0, #1)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT key2, key1, key2 FROM t1;
- Explained Query (fast path):
- Project (#1, #0, #1)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT key2, key1 FROM t1 GROUP BY key1, key2;
- Explained Query (fast path):
- Project (#1, #0)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT key2, key1 FROM t1 GROUP BY key1, key2;
- Explained Query (fast path):
- Project (#1, #0)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT key2, key1 FROM t1 GROUP BY key1, key2, key2 || 'a';
- Explained Query (fast path):
- Project (#1, #0)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT key2, key1 FROM t1 GROUP BY key1, key2, key2 || 'a';
- Explained Query (fast path):
- Project (#1, #0)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key1, key2, nokey FROM t1;
- Explained Query (fast path):
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT key1, key2, nokey FROM t1;
- Explained Query (fast path):
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT key1, key2, nokey FROM t1 GROUP BY key1, key2, nokey;
- Explained Query (fast path):
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT key1, key2, nokey FROM t1 GROUP BY key1, key2, nokey;
- Explained Query (fast path):
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT key1, key2 FROM t1 GROUP BY key1, key2 HAVING key1 = 'a';
- Explained Query (fast path):
- Project (#0, #1)
- Filter (#0 = "a")
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT key1, key2 FROM t1 GROUP BY key1, key2 HAVING key1 = 'a';
- Explained Query (fast path):
- Project (#0, #1)
- Filter (#0 = "a")
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- # Optimization not possible - explicit distinct is present in planFor certain types of tests the
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key1 FROM t1;
- Explained Query:
- Distinct project=[#0]
- Project (#0)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT key1 FROM t1;
- Explained Query:
- Distinct project=[#0]
- Project (#0)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key2 FROM t1;
- Explained Query:
- Distinct project=[#0]
- Project (#1)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT key2 FROM t1;
- Explained Query:
- Distinct project=[#0]
- Project (#1)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=14400] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key1, upper(key2) FROM t1;
- Explained Query:
- Distinct project=[#0, upper(#1{key2})]
- Project (#0, #1)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[13500<=version<14400] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key1, upper(key2) FROM t1;
- Explained Query:
- Distinct project=[#0, upper(#1)]
- Project (#0, #1)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT key1, upper(key2) FROM t1;
- Explained Query:
- Distinct project=[#0, upper(#1)]
- Project (#0, #1)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[14400<=version] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key1, key2 || 'a' FROM t1;
- Explained Query:
- Distinct project=[#0, (#1{key2} || "a")]
- Project (#0, #1)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[13500<=version<14400] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key1, key2 || 'a' FROM t1;
- Explained Query:
- Distinct project=[#0, (#1 || "a")]
- Project (#0, #1)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT key1, key2 || 'a' FROM t1;
- Explained Query:
- Distinct project=[#0, (#1 || "a")]
- Project (#0, #1)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT key1 FROM t1 GROUP BY key1;
- Explained Query:
- Distinct project=[#0]
- Project (#0)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT key1 FROM t1 GROUP BY key1;
- Explained Query:
- Distinct project=[#0]
- Project (#0)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT key2 FROM t1 GROUP BY key2;
- Explained Query:
- Distinct project=[#0]
- Project (#1)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT key2 FROM t1 GROUP BY key2;
- Explained Query:
- Distinct project=[#0]
- Project (#1)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- # Make sure that primary key information is inherited from the source
- > CREATE VIEW v1 AS SELECT * FROM t1;
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key1, key2 FROM v1;
- Explained Query (fast path):
- Project (#0, #1)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT key1, key2 FROM v1;
- Explained Query (fast path):
- Project (#0, #1)
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- > CREATE VIEW v2 AS SELECT * FROM t1;
- > CREATE DEFAULT INDEX ON v2;
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key1, key2 FROM v2;
- Explained Query (fast path):
- Project (#0, #1)
- ReadIndex on=v2 v2_primary_idx=[*** full scan ***]
- Used Indexes:
- - v2_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT key1, key2 FROM v2;
- Explained Query (fast path):
- Project (#0, #1)
- ReadIndex on=v2 v2_primary_idx=[*** full scan ***]
- Used Indexes:
- - v2_primary_idx (*** full scan ***)
- Target cluster: quickstart
- # Make sure that having a DISTINCT or GROUP BY confers PK semantics on upstream views
- > CREATE VIEW distinct_view AS SELECT DISTINCT nokey FROM t1;
- > CREATE DEFAULT INDEX ON distinct_view;
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT nokey FROM distinct_view
- Explained Query (fast path):
- ReadIndex on=distinct_view distinct_view_primary_idx=[*** full scan ***]
- Used Indexes:
- - distinct_view_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT nokey FROM distinct_view
- Explained Query (fast path):
- ReadIndex on=distinct_view distinct_view_primary_idx=[*** full scan ***]
- Used Indexes:
- - distinct_view_primary_idx (*** full scan ***)
- Target cluster: quickstart
- > CREATE VIEW group_by_view AS SELECT nokey || 'a' AS f1 , nokey || 'b' AS f2 FROM t1 GROUP BY nokey || 'a', nokey || 'b';
- > CREATE DEFAULT INDEX ON group_by_view;
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT f1, f2 FROM group_by_view;
- Explained Query (fast path):
- ReadIndex on=group_by_view group_by_view_primary_idx=[*** full scan ***]
- Used Indexes:
- - group_by_view_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT f1, f2 FROM group_by_view;
- Explained Query (fast path):
- ReadIndex on=group_by_view group_by_view_primary_idx=[*** full scan ***]
- Used Indexes:
- - group_by_view_primary_idx (*** full scan ***)
- Target cluster: quickstart
- # Redundant table is eliminated from an inner join using PK information
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT a1.* FROM t1 AS a1, t1 AS a2 WHERE a1.key1 = a2.key1 AND a1.key2 = a2.key2;
- Explained Query (fast path):
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT a1.* FROM t1 AS a1, t1 AS a2 WHERE a1.key1 = a2.key1 AND a1.key2 = a2.key2;
- Explained Query (fast path):
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT a1.* FROM v1 AS a1, v1 AS a2 WHERE a1.key1 = a2.key1 AND a1.key2 = a2.key2;
- Explained Query (fast path):
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT a1.* FROM v1 AS a1, v1 AS a2 WHERE a1.key1 = a2.key1 AND a1.key2 = a2.key2;
- Explained Query (fast path):
- ReadIndex on=t1 t1_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT a1.* FROM v2 AS a1, v2 AS a2 WHERE a1.key1 = a2.key1 AND a1.key2 = a2.key2;
- Explained Query (fast path):
- ReadIndex on=v2 v2_primary_idx=[*** full scan ***]
- Used Indexes:
- - v2_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT a1.* FROM v2 AS a1, v2 AS a2 WHERE a1.key1 = a2.key1 AND a1.key2 = a2.key2;
- Explained Query (fast path):
- ReadIndex on=v2 v2_primary_idx=[*** full scan ***]
- Used Indexes:
- - v2_primary_idx (*** full scan ***)
- Target cluster: quickstart
- # Declare a key constraint (PRIMARY KEY NOT ENFORCED); otherwise identical tests as above.
- $ set schema={
- "type" : "record",
- "name" : "test",
- "fields" : [
- {"name":"key1","type":"string"},
- {"name":"key2","type":"string"},
- {"name":"nokey", "type":"string"}
- ]
- }
- $ kafka-create-topic topic=t1-pkne
- $ kafka-ingest format=avro topic=t1-pkne schema=${schema}
- > CREATE SOURCE t1_pkne (PRIMARY KEY (key1, key2) NOT ENFORCED)
- IN CLUSTER ${arg.single-replica-cluster}
- FROM KAFKA CONNECTION kafka_conn (TOPIC
- 'testdrive-t1-pkne-${testdrive.seed}')
- FORMAT AVRO USING CONFLUENT SCHEMA REGISTRY CONNECTION csr_conn
- ENVELOPE NONE;
- > CREATE DEFAULT INDEX ON t1_pkne
- # Optimization is possible - no distinct is mentioned in the plan
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key1, key2 FROM t1_pkne;
- Explained Query (fast path):
- Project (#0, #1)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT key1, key2 FROM t1_pkne;
- Explained Query (fast path):
- Project (#0, #1)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key2, key1 FROM t1_pkne;
- Explained Query (fast path):
- Project (#1, #0)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT key2, key1 FROM t1_pkne;
- Explained Query (fast path):
- Project (#1, #0)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key2, key1, key2 FROM t1_pkne;
- Explained Query (fast path):
- Project (#1, #0, #1)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT key2, key1, key2 FROM t1_pkne;
- Explained Query (fast path):
- Project (#1, #0, #1)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT key2, key1 FROM t1_pkne GROUP BY key1, key2;
- Explained Query (fast path):
- Project (#1, #0)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT key2, key1 FROM t1_pkne GROUP BY key1, key2;
- Explained Query (fast path):
- Project (#1, #0)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT key2, key1 FROM t1_pkne GROUP BY key1, key2, key2 || 'a';
- Explained Query (fast path):
- Project (#1, #0)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT key2, key1 FROM t1_pkne GROUP BY key1, key2, key2 || 'a';
- Explained Query (fast path):
- Project (#1, #0)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key1, key2, nokey FROM t1_pkne;
- Explained Query (fast path):
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT key1, key2, nokey FROM t1_pkne;
- Explained Query (fast path):
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT key1, key2, nokey FROM t1_pkne GROUP BY key1, key2, nokey;
- Explained Query (fast path):
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT key1, key2, nokey FROM t1_pkne GROUP BY key1, key2, nokey;
- Explained Query (fast path):
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT key1, key2 FROM t1_pkne GROUP BY key1, key2 HAVING key1 = 'a';
- Explained Query (fast path):
- Project (#0, #1)
- Filter (#0 = "a")
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT key1, key2 FROM t1_pkne GROUP BY key1, key2 HAVING key1 = 'a';
- Explained Query (fast path):
- Project (#0, #1)
- Filter (#0 = "a")
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- # Optimization not possible - explicit distinct is present in plan
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key1 FROM t1_pkne;
- Explained Query:
- Distinct project=[#0] monotonic
- Project (#0)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT key1 FROM t1_pkne;
- Explained Query:
- Distinct project=[#0] monotonic
- Project (#0)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key2 FROM t1_pkne;
- Explained Query:
- Distinct project=[#0] monotonic
- Project (#1)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT key2 FROM t1_pkne;
- Explained Query:
- Distinct project=[#0] monotonic
- Project (#1)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=14400] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key1, upper(key2) FROM t1_pkne;
- Explained Query:
- Distinct project=[#0, upper(#1{key2})] monotonic
- Project (#0, #1)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[13500<=version<14400] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key1, upper(key2) FROM t1_pkne;
- Explained Query:
- Distinct project=[#0, upper(#1)] monotonic
- Project (#0, #1)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT key1, upper(key2) FROM t1_pkne;
- Explained Query:
- Distinct project=[#0, upper(#1)] monotonic
- Project (#0, #1)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=14400] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key1, key2 || 'a' FROM t1_pkne;
- Explained Query:
- Distinct project=[#0, (#1{key2} || "a")] monotonic
- Project (#0, #1)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[13500<=version<14400] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key1, key2 || 'a' FROM t1_pkne;
- Explained Query:
- Distinct project=[#0, (#1 || "a")] monotonic
- Project (#0, #1)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT key1, key2 || 'a' FROM t1_pkne;
- Explained Query:
- Distinct project=[#0, (#1 || "a")] monotonic
- Project (#0, #1)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT key1 FROM t1_pkne GROUP BY key1;
- Explained Query:
- Distinct project=[#0] monotonic
- Project (#0)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT key1 FROM t1_pkne GROUP BY key1;
- Explained Query:
- Distinct project=[#0] monotonic
- Project (#0)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT key2 FROM t1_pkne GROUP BY key2;
- Explained Query:
- Distinct project=[#0] monotonic
- Project (#1)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT key2 FROM t1_pkne GROUP BY key2;
- Explained Query:
- Distinct project=[#0] monotonic
- Project (#1)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=14400] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT COUNT(DISTINCT key1) FROM t1_pkne;
- Explained Query:
- With
- cte l0 =
- Reduce aggregates=[count(distinct #0{key1})] monotonic
- Project (#0)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Return
- Union
- Get l0
- Map (0)
- Union
- Negate
- Project ()
- Get l0
- Constant
- - ()
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[13500<=version<14400] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT COUNT(DISTINCT key1) FROM t1_pkne;
- Explained Query:
- With
- cte l0 =
- Reduce aggregates=[count(distinct #0)] monotonic
- Project (#0)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Return
- Union
- Get l0
- Map (0)
- Union
- Negate
- Project ()
- Get l0
- Constant
- - ()
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT COUNT(DISTINCT key1) FROM t1_pkne;
- Explained Query:
- With
- cte l0 =
- Reduce aggregates=[count(distinct #0)] monotonic
- Project (#0)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Return
- Union
- Get l0
- Map (0)
- Union
- Negate
- Project ()
- Get l0
- Constant
- - ()
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- # Make sure that primary key information is inherited from the source
- > CREATE VIEW v1_pkne AS SELECT * FROM t1_pkne;
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key1, key2 FROM v1_pkne;
- Explained Query (fast path):
- Project (#0, #1)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT key1, key2 FROM v1_pkne;
- Explained Query (fast path):
- Project (#0, #1)
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- > CREATE VIEW v2_pkne AS SELECT * FROM t1_pkne;
- > CREATE DEFAULT INDEX ON v2_pkne;
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT key1, key2 FROM v2_pkne;
- Explained Query (fast path):
- Project (#0, #1)
- ReadIndex on=v2_pkne v2_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - v2_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT key1, key2 FROM v2_pkne;
- Explained Query (fast path):
- Project (#0, #1)
- ReadIndex on=v2_pkne v2_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - v2_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- # Make sure that having a DISTINCT or GROUP BY confers PK semantics on upstream views
- > CREATE VIEW distinct_view_pkne AS SELECT DISTINCT nokey FROM t1_pkne;
- > CREATE DEFAULT INDEX ON distinct_view_pkne;
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT nokey FROM distinct_view_pkne
- Explained Query (fast path):
- ReadIndex on=distinct_view_pkne distinct_view_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - distinct_view_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT nokey FROM distinct_view_pkne
- Explained Query (fast path):
- ReadIndex on=distinct_view_pkne distinct_view_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - distinct_view_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- > CREATE VIEW group_by_view_pkne AS SELECT nokey || 'a' AS f1 , nokey || 'b' AS f2 FROM t1_pkne GROUP BY nokey || 'a', nokey || 'b';
- > CREATE DEFAULT INDEX ON group_by_view_pkne;
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT DISTINCT f1, f2 FROM group_by_view_pkne;
- Explained Query (fast path):
- ReadIndex on=group_by_view_pkne group_by_view_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - group_by_view_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT DISTINCT f1, f2 FROM group_by_view_pkne;
- Explained Query (fast path):
- ReadIndex on=group_by_view_pkne group_by_view_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - group_by_view_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- # Redundant table is eliminated from an inner join using PK information
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT a1.* FROM t1_pkne AS a1, t1_pkne AS a2 WHERE a1.key1 = a2.key1 AND a1.key2 = a2.key2;
- Explained Query (fast path):
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT a1.* FROM t1_pkne AS a1, t1_pkne AS a2 WHERE a1.key1 = a2.key1 AND a1.key2 = a2.key2;
- Explained Query (fast path):
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT a1.* FROM v1_pkne AS a1, v1_pkne AS a2 WHERE a1.key1 = a2.key1 AND a1.key2 = a2.key2;
- Explained Query (fast path):
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT a1.* FROM v1_pkne AS a1, v1_pkne AS a2 WHERE a1.key1 = a2.key1 AND a1.key2 = a2.key2;
- Explained Query (fast path):
- ReadIndex on=t1_pkne t1_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - t1_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version>=13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) AS VERBOSE TEXT FOR SELECT a1.* FROM v2_pkne AS a1, v2_pkne AS a2 WHERE a1.key1 = a2.key1 AND a1.key2 = a2.key2;
- Explained Query (fast path):
- ReadIndex on=v2_pkne v2_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - v2_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
- ?[version<13500] EXPLAIN OPTIMIZED PLAN WITH(no notices) FOR SELECT a1.* FROM v2_pkne AS a1, v2_pkne AS a2 WHERE a1.key1 = a2.key1 AND a1.key2 = a2.key2;
- Explained Query (fast path):
- ReadIndex on=v2_pkne v2_pkne_primary_idx=[*** full scan ***]
- Used Indexes:
- - v2_pkne_primary_idx (*** full scan ***)
- Target cluster: quickstart
|