diff --git a/yaml-tests/src/test/java/CascadesQueryTests.java b/yaml-tests/src/test/java/CascadesQueryTests.java new file mode 100644 index 0000000000..2e6810db66 --- /dev/null +++ b/yaml-tests/src/test/java/CascadesQueryTests.java @@ -0,0 +1,635 @@ +/* + * CascadesQueryTests.java + * + * This source file is part of the FoundationDB open source project + * + * Copyright 2015-2026 Apple Inc. and the FoundationDB project authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import com.apple.foundationdb.relational.yamltests.MaintainYamlTestConfig; +import com.apple.foundationdb.relational.yamltests.YamlTest; +import com.apple.foundationdb.relational.yamltests.YamlTestConfigFilters; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.TestTemplate; + +/** + * Query-planning coverage ported from the Cascades tests in {@code fdb-record-layer-core}'s + * {@code com.apple.foundationdb.record.provider.foundationdb.query} package. + * + *
+ * Those tests drive the Cascades planner through the {@code RecordQuery} builder API; the SQL layer + * drives the same planner from SQL text, so most of them can be expressed declaratively here + * instead. Each yamsql file corresponds to one source test class, and every query carries a comment + * naming the source test method it came from. Where a source class needs more than one index + * configuration the file is split, with the variant named in a suffix — the planner has to be forced + * into a plan by the schema it is given, and {@code USE INDEX} cannot stand in for a missing index + * because a hinted query drops the primary-scan candidate entirely. + *
+ * + *+ * See {@code cascades-query-tests/README.md} for the source-class mapping, the authoring + * conventions, and the list of tests that cannot be ported. + *
+ */ +@YamlTest +@MaintainYamlTestConfig(YamlTestConfigFilters.CORRECT_EXPECTATIONS) +class CascadesQueryTests { + private static final String PREFIX = "cascades-query-tests"; + + @TestTemplate + void andQueryToIntersectionChoiceUnique(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/and-query-to-intersection-choice-unique.yamsql"); + } + + @TestTemplate + void andQueryToIntersectionChoice(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/and-query-to-intersection-choice.yamsql"); + } + + @TestTemplate + void andQueryToIntersectionCompoundPk(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/and-query-to-intersection-compound-pk.yamsql"); + } + + @TestTemplate + void andQueryToIntersectionNumValue2(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/and-query-to-intersection-num-value-2.yamsql"); + } + + @TestTemplate + @Disabled("Intersection of two covering scans returns 2 rows instead of 10; the planner treats the legs as " + + "compatibly ordered by reasoning from all the query's equality-bound predicates rather than the ones " + + "each leg applies. This file holds only that one query, so a per-query supported_version sentinel " + + "would leave the test block with no executables (TestBlock.parse:409). See the file header.") + void andQueryToIntersectionTwoCovering(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/and-query-to-intersection-two-covering.yamsql"); + } + + @TestTemplate + void andQueryToIntersection(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/and-query-to-intersection.yamsql"); + } + + @TestTemplate + void coveringIndexAdditionalFilter(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/covering-index-additional-filter.yamsql"); + } + + @TestTemplate + void coveringIndexConcatenated(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/covering-index-concatenated.yamsql"); + } + + @TestTemplate + void coveringIndexHeaderCompoundPk(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/covering-index-header-compound-pk.yamsql"); + } + + @TestTemplate + void coveringIndexHeaderConcatenatedValue(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/covering-index-header-concatenated-value.yamsql"); + } + + @TestTemplate + void coveringIndexHeaderMulti(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/covering-index-header-multi.yamsql"); + } + + @TestTemplate + void coveringIndexHeaderNotCovering(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/covering-index-header-not-covering.yamsql"); + } + + @TestTemplate + void coveringIndexHeaderValue(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/covering-index-header-value.yamsql"); + } + + @TestTemplate + void coveringIndexMultiValue(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/covering-index-multi-value.yamsql"); + } + + @TestTemplate + void coveringIndexMulti(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/covering-index-multi.yamsql"); + } + + @TestTemplate + void coveringIndexPrimaryKey(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/covering-index-primary-key.yamsql"); + } + + @TestTemplate + void coveringIndex(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/covering-index.yamsql"); + } + + @TestTemplate + void filterCoalescingMultiIndex(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/filter-coalescing-multi-index.yamsql"); + } + + @TestTemplate + void filterCoalescing(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/filter-coalescing.yamsql"); + } + + @TestTemplate + void inQueryCompoundIndex(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/in-query-compound-index.yamsql"); + } + + @TestTemplate + void inQueryHeader(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/in-query-header.yamsql"); + } + + @TestTemplate + void inQueryMultiIndex(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/in-query-multi-index.yamsql"); + } + + @TestTemplate + void inQuery(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/in-query.yamsql"); + } + + @TestTemplate + void multiFieldIndexSelectionPrefixScalar(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/multi-field-index-selection-prefix-scalar.yamsql"); + } + + @TestTemplate + void multiFieldIndexSelectionWiderCovering(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/multi-field-index-selection-wider-covering.yamsql"); + } + + @TestTemplate + void multiFieldIndexSelection(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/multi-field-index-selection.yamsql"); + } + + @TestTemplate + void orQueryToUnionCompoundPkOrdered(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/or-query-to-union-compound-pk-ordered.yamsql"); + } + + @TestTemplate + void orQueryToUnionCompoundPk(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/or-query-to-union-compound-pk.yamsql"); + } + + @TestTemplate + void orQueryToUnionCovering(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/or-query-to-union-covering.yamsql"); + } + + @TestTemplate + void orQueryToUnionNoIndex(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/or-query-to-union-no-index.yamsql"); + } + + @TestTemplate + void orQueryToUnionOrderedAnd(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/or-query-to-union-ordered-and.yamsql"); + } + + @TestTemplate + void orQueryToUnionOrdered(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/or-query-to-union-ordered.yamsql"); + } + + @TestTemplate + void orQueryToUnionProtoOnly(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/or-query-to-union-proto-only.yamsql"); + } + + @TestTemplate + void orQueryToUnionUnorderableAnd(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/or-query-to-union-unorderable-and.yamsql"); + } + + @TestTemplate + void orQueryToUnion(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/or-query-to-union.yamsql"); + } + + @TestTemplate + void orderingQueryTwoIndexes(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/ordering-query-two-indexes.yamsql"); + } + + @TestTemplate + void orderingQuery(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/ordering-query.yamsql"); + } + + @TestTemplate + void repeatedFieldQueryOnlyIndex(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/repeated-field-query-only-index.yamsql"); + } + + @TestTemplate + void repeatedFieldQuery(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/repeated-field-query.yamsql"); + } + + @TestTemplate + void returnedRecordLimit(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/returned-record-limit.yamsql"); + } + + @TestTemplate + void sortIndexSelectionNested(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/sort-index-selection-nested.yamsql"); + } + + @TestTemplate + void sortIndexSelectionPrimaryKey(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/sort-index-selection-primary-key.yamsql"); + } + + @TestTemplate + void sortIndexSelectionUnique(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/sort-index-selection-unique.yamsql"); + } + + @TestTemplate + void sortIndexSelection(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/sort-index-selection.yamsql"); + } + + @TestTemplate + void sparseIndexImplied(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/sparse-index-implied.yamsql"); + } + + @TestTemplate + void sparseIndexNotImplied(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/sparse-index-not-implied.yamsql"); + } + + @TestTemplate + void sparseIndexOrPredicate(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/sparse-index-or-predicate.yamsql"); + } + + @TestTemplate + void recordStoreRepeatedQuery(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/record-store-repeated-query.yamsql"); + } + + @TestTemplate + void inQueryOrCompound(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/in-query-or-compound.yamsql"); + } + + @TestTemplate + void inQueryOr(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/in-query-or.yamsql"); + } + + @TestTemplate + void inQueryUnionIntersectionNoNv3(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/in-query-union-intersection-no-nv3.yamsql"); + } + + @TestTemplate + void inQueryUnionIntersection(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/in-query-union-intersection.yamsql"); + } + + @TestTemplate + void inQueryUnionSargable(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/in-query-union-sargable.yamsql"); + } + + @TestTemplate + void orQueryToUnionKeyWithValue(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/or-query-to-union-key-with-value.yamsql"); + } + + @TestTemplate + void orQueryToUnionSplitContinuations(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/or-query-to-union-split-continuations.yamsql"); + } + + @TestTemplate + void orQueryToUnionStr3Index(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/or-query-to-union-str-3-index.yamsql"); + } + + @TestTemplate + @Disabled("OR of two overlapping IN lists raises ClassCastException: ByteString cannot be cast to Comparable. " + + "This file holds only that one query, so a per-query supported_version sentinel would leave the test " + + "block with no executables (TestBlock.parse:409). See the file header.") + void inQueryOrOverlap(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/in-query-or-overlap.yamsql"); + } + + @TestTemplate + void nestedFieldQueryComplex(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/nested-field-query-complex.yamsql"); + } + + @TestTemplate + void nestedFieldQueryConcatNested(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/nested-field-query-concat-nested.yamsql"); + } + + @TestTemplate + @Disabled("EXISTS over an unnested array returns the outer row once per matching element: ev1, ev3, ev3 where " + + "the answer is ev1, ev3. This file holds only that one query, so a per-query supported_version " + + "sentinel would leave the test block with no executables (TestBlock.parse:409). See the file header.") + void nestedFieldQueryDoublyNested(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/nested-field-query-doubly-nested.yamsql"); + } + + @TestTemplate + void nestedFieldQueryHierarchical(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/nested-field-query-hierarchical.yamsql"); + } + + @TestTemplate + void nestedFieldQueryNestedMap(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/nested-field-query-nested-map.yamsql"); + } + + @TestTemplate + void nestedFieldQueryNestedPk(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/nested-field-query-nested-pk.yamsql"); + } + + @TestTemplate + void nestedFieldQueryReviewerBetween(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/nested-field-query-reviewer-between.yamsql"); + } + + @TestTemplate + void nestedFieldQueryReviewerEmailHometown(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/nested-field-query-reviewer-email-hometown.yamsql"); + } + + @TestTemplate + void nestedFieldQueryReviewerHometownEmail(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/nested-field-query-reviewer-hometown-email.yamsql"); + } + + @TestTemplate + void nestedFieldQueryReviewerSchoolConcat(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/nested-field-query-reviewer-school-concat.yamsql"); + } + + @TestTemplate + void nestedFieldQueryReviewerSortedInequality(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/nested-field-query-reviewer-sorted-inequality.yamsql"); + } + + @TestTemplate + void nestedFieldQueryReviewerSorted(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/nested-field-query-reviewer-sorted.yamsql"); + } + + @TestTemplate + void nestedFieldQueryReviewer(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/nested-field-query-reviewer.yamsql"); + } + + @TestTemplate + void nestedFieldQuery(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/nested-field-query.yamsql"); + } + + @TestTemplate + void groupByQueryAggregateIndex(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/group-by-query-aggregate-index.yamsql"); + } + + @TestTemplate + void groupByQueryBothIndexes(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/group-by-query-both-indexes.yamsql"); + } + + @TestTemplate + void groupByQueryNoIndex(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/group-by-query-no-index.yamsql"); + } + + @TestTemplate + void groupByQuery(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/group-by-query.yamsql"); + } + + @TestTemplate + void permutedMinMaxNumValue2(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/permuted-min-max-num-value-2.yamsql"); + } + + @TestTemplate + void permutedMinMaxOrderingKeys(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/permuted-min-max-ordering-keys.yamsql"); + } + + @TestTemplate + void permutedMinMaxRepeater(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/permuted-min-max-repeater.yamsql"); + } + + @TestTemplate + void permutedMinMaxStrValue(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/permuted-min-max-str-value.yamsql"); + } + + @TestTemplate + void permutedMinMax(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/permuted-min-max.yamsql"); + } + + @TestTemplate + void simpleQueryGraphHints(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/simple-query-graph-hints.yamsql"); + } + + @TestTemplate + void simpleQueryGraphJoins(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/simple-query-graph-joins.yamsql"); + } + + @TestTemplate + void simpleQueryGraphNameTagIndex(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/simple-query-graph-name-tag-index.yamsql"); + } + + @TestTemplate + void simpleQueryGraphTagIndex(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/simple-query-graph-tag-index.yamsql"); + } + + @TestTemplate + void simpleQueryGraph(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/simple-query-graph.yamsql"); + } + + @TestTemplate + void longArithmeticFunctionsBinary(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/long-arithmetic-functions-binary.yamsql"); + } + + @TestTemplate + void longArithmeticFunctionsComplex(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/long-arithmetic-functions-complex.yamsql"); + } + + @TestTemplate + void longArithmeticFunctionsMask1(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/long-arithmetic-functions-mask-1.yamsql"); + } + + @TestTemplate + void longArithmeticFunctionsMask2(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/long-arithmetic-functions-mask-2.yamsql"); + } + + @TestTemplate + void longArithmeticFunctionsTwoColumn(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/long-arithmetic-functions-two-column.yamsql"); + } + + @TestTemplate + void longArithmeticFunctionsUniqueMask4(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/long-arithmetic-functions-unique-mask-4.yamsql"); + } + + @TestTemplate + void longArithmeticFunctions(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/long-arithmetic-functions.yamsql"); + } + + @TestTemplate + void modificationQuery(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/modification-query.yamsql"); + } + + @TestTemplate + void recordStoreQueryContinuation(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/record-store-query-continuation.yamsql"); + } + + @TestTemplate + void recordStoreQueryEvenOdd(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/record-store-query-even-odd.yamsql"); + } + + @TestTemplate + void recordStoreQueryExcludeNull(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/record-store-query-exclude-null.yamsql"); + } + + @TestTemplate + void recordStoreQueryNull(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/record-store-query-null.yamsql"); + } + + @TestTemplate + void recordStoreQuery(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/record-store-query.yamsql"); + } + + @TestTemplate + void recordTypeKey(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/record-type-key.yamsql"); + } + + @TestTemplate + void recursiveQueriesForest(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/recursive-queries-forest.yamsql"); + } + + @TestTemplate + void recursiveQueriesMultiples(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/recursive-queries-multiples.yamsql"); + } + + @TestTemplate + void recursiveQueries(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/recursive-queries.yamsql"); + } + + @TestTemplate + void versionsQueryLongRecord(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/versions-query-long-record.yamsql"); + } + + @TestTemplate + void versionsQueryOtherRecord(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/versions-query-other-record.yamsql"); + } + + @TestTemplate + void versionsQuery(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/versions-query.yamsql"); + } + + @TestTemplate + void restrictedIndexDisabled(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/restricted-index-disabled.yamsql"); + } + + @TestTemplate + void restrictedIndexWriteOnly(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/restricted-index-write-only.yamsql"); + } + + @TestTemplate + void orQueryToUnionNestedPredicates(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/or-query-to-union-nested-predicates.yamsql"); + } + + @TestTemplate + void repeatedFieldQueryPrefixRepeated(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/repeated-field-query-prefix-repeated.yamsql"); + } + + @TestTemplate + void repeatedFieldQueryPrefixRepeatedNested(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/repeated-field-query-prefix-repeated-nested.yamsql"); + } + + @TestTemplate + void recordStoreRepeatedQuerySumByRepeated(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/record-store-repeated-query-sum-by-repeated.yamsql"); + } + + @TestTemplate + void returnedRecordLimitNoFilter(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/returned-record-limit-no-filter.yamsql"); + } + + @TestTemplate + void inQuerySortedExtraUnorderedColumns(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/in-query-sorted-extra-unordered-columns.yamsql"); + } + + @TestTemplate + void orQueryToUnionExtraRepeatedColumn(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/or-query-to-union-extra-repeated-column.yamsql"); + } + + @TestTemplate + void inQueryConstantValue(YamlTest.Runner runner) throws Exception { + runner.runYamsql(PREFIX + "/in-query-constant-value.yamsql"); + } +} diff --git a/yaml-tests/src/test/resources/cascades-query-tests/MIGRATION.md b/yaml-tests/src/test/resources/cascades-query-tests/MIGRATION.md new file mode 100644 index 0000000000..cf79b7f42e --- /dev/null +++ b/yaml-tests/src/test/resources/cascades-query-tests/MIGRATION.md @@ -0,0 +1,835 @@ +# Migration map: `fdb-record-layer-core` query tests to `cascades-query-tests` + +Generated as part of moving the Cascades-planner query tests out of `fdb-record-layer-core` and into +the declarative yamsql suite. **The core tests are untouched** — retiring them is a separate, later +step, so every source method listed here still exists and still runs. + +New tests live in `yaml-tests/src/test/resources/cascades-query-tests/| Predicate Filter |
| WHERE q2.STR_VALUE_INDEXED EQUALS promote(@c7 AS STRING) AND q2.NUM_VALUE_2 EQUALS promote(@c15 AS INT) AND q2.NUM_VALUE_3_INDEXED GREATER_THAN_OR_EQUALS promote(@c20 AS INT) AND q2.NUM_VALUE_3_INDEXED LESS_THAN_OR_EQUALS promote(@c25 AS INT) |
| Index Scan |
| comparisons: [EQUALS promote(@c11 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_UNIQUE |
| Predicate Filter |
| WHERE q2.STR_VALUE_INDEXED EQUALS promote(@c7 AS STRING) AND q2.NUM_VALUE_UNIQUE EQUALS promote(@c11 AS INT) |
| Index Scan |
| comparisons: [EQUALS promote(@c15 AS INT), [GREATER_THAN_OR_EQUALS promote(@c20 AS INT) && LESS_THAN_OR_EQUALS promote(@c25 AS INT)]] |
| Index |
| INDEX_2_3 |
| Fetch Records |
| Intersection |
| COMPARE BY (_.NUM_VALUE_UNIQUE) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING), EQUALS promote(@c11 AS INT)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING), EQUALS promote(@c15 AS INT)] |
| Index |
| STR_VALUE_2_INDEX |
| Index |
| STR_VALUE_3_INDEX |
| Fetch Records |
| Intersection |
| COMPARE BY (_.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c11 AS INT)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c15 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_2 |
| Predicate Filter |
| WHERE q2.STR_VALUE_INDEXED LIKE @c7 ESCAPE 'null' |
| Fetch Records |
| Intersection |
| COMPARE BY (_.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c11 AS INT)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c15 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_2 |
| Value Computation |
| MAP (q141.STR_VALUE_INDEXED AS STR_VALUE_INDEXED, q141.NUM_VALUE_3_INDEXED AS NUM_VALUE_3_INDEXED) |
| Intersection |
| COMPARE BY (_.NUM_VALUE_2, _.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c9 AS STRING)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c13 AS INT)] |
| Index |
| MULTI_VAL_VAL_3 |
| Index |
| MULTI_VAL_3_VAL |
| Fetch Records |
| Intersection |
| COMPARE BY (_.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c11 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Predicate Filter |
| WHERE q2.STR_VALUE_INDEXED LIKE @c7 ESCAPE 'null' |
| Index Scan |
| comparisons: [EQUALS promote(@c11 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Fetch Records |
| Intersection |
| COMPARE BY (_.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c11 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Value Computation |
| MAP (q126.NUM_VALUE_3_INDEXED AS NUM_VALUE_3_INDEXED) |
| Predicate Filter |
| WHERE q121.NUM_VALUE_2 LESS_THAN promote(@c11 AS INT) |
| Covering Index Scan |
| comparisons: [[LESS_THAN promote(@c7 AS INT)]] |
| Index |
| MULTI_INDEX |
| Value Computation |
| MAP (q147.NUM_VALUE_2 AS NUM_VALUE_2, q147.NUM_VALUE_3_INDEXED AS NUM_VALUE_3_INDEXED) |
| Covering Index Scan |
| comparisons: [[GREATER_THAN promote(@c9 AS INT) && LESS_THAN promote(@c13 AS INT)]] |
| Index |
| MY_SIMPLE_RECORD_2_3 |
| Value Computation |
| MAP (q66.HEADER.REC_NO AS REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c9 AS STRING)] |
| Index |
| MY_RECORD_STR_VALUE |
| Value Computation |
| MAP (q49.HEADER.PATH AS PATH, q49.HEADER.REC_NO AS REC_NO, q49.STR_VALUE AS STR_VALUE) |
| Predicate Filter |
| WHERE q45.STR_VALUE LIKE @c15 ESCAPE 'null' |
| Covering Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_RECORD_STR_VALUE |
| Value Computation |
| MAP (q66.HEADER.NUM AS NUM, q66.HEADER.PATH AS PATH) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c13 AS STRING)] |
| Index |
| MY_RECORD_STR_VALUE |
| Fetch Records |
| Predicate Filter |
| WHERE q58.HEADER.NUM EQUALS promote(@c13 AS INT) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING)] |
| Index |
| MULTI |
| Value Computation |
| MAP (q66.HEADER.REC_NO AS REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c9 AS STRING)] |
| Index |
| MY_RECORD_STR_VALUE |
| Value Computation |
| MAP (q66.HEADER.PATH AS PATH) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c9 AS STRING)] |
| Index |
| MY_RECORD_STR_VALUE |
| Value Computation |
| MAP (q59.NUM_VALUE_UNIQUE AS NUM_VALUE_UNIQUE, q59.NUM_VALUE_2 AS NUM_VALUE_2) |
| Covering Index Scan |
| comparisons: [[GREATER_THAN promote(@c9 AS INT)]] |
| Index |
| MULTI_INDEX_VALUE |
| Value Computation |
| MAP (q59.NUM_VALUE_UNIQUE AS NUM_VALUE_UNIQUE, q59.NUM_VALUE_2 AS NUM_VALUE_2) |
| Covering Index Scan |
| comparisons: [[GREATER_THAN promote(@c9 AS INT)]] |
| Index |
| MULTI_INDEX |
| Value Computation |
| MAP (q164.NUM_VALUE_2 AS NUM_VALUE_2) |
| Covering Index Scan |
| comparisons: [[GREATER_THAN_OR_EQUALS promote(@c8 AS LONG)]] |
| Index |
| PRIMARY_KEY_INDEX |
| Value Computation |
| MAP (q59.NUM_VALUE_UNIQUE AS NUM_VALUE_UNIQUE) |
| Covering Index Scan |
| comparisons: [[GREATER_THAN promote(@c7 AS INT)]] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_UNIQUE |
| Value Computation |
| MAP (q44.NUM_VALUE_3_INDEXED AS NUM_VALUE_3_INDEXED) |
| Covering Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Value Computation |
| MAP (q2.NUM_VALUE_UNIQUE AS NUM_VALUE_UNIQUE, q2.NUM_VALUE_3_INDEXED AS NUM_VALUE_3_INDEXED) |
| Index Scan |
| comparisons: [[GREATER_THAN promote(@c9 AS INT)]] |
| direction: reversed |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_UNIQUE |
| Value Computation |
| MAP (q71.NUM_VALUE_3_INDEXED AS NUM_VALUE_3_INDEXED) |
| Covering Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Value Computation |
| MAP (q2.NUM_VALUE_3_INDEXED AS NUM_VALUE_3_INDEXED) |
| Predicate Filter |
| WHERE q2.NUM_VALUE_2 LESS_THAN promote(@c11 AS INT) |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING), EQUALS promote(@c11 AS INT)] |
| Index |
| MULTI_INDEX |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING), [GREATER_THAN promote(@c21 AS INT) && GREATER_THAN_OR_EQUALS promote(@c12 AS INT) && LESS_THAN_OR_EQUALS promote(@c17 AS INT)]] |
| Index |
| MULTI_INDEX |
| Index Scan |
| comparisons: [[GREATER_THAN_OR_EQUALS promote(@c8 AS INT) && LESS_THAN_OR_EQUALS promote(@c13 AS INT)]] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Value Computation |
| MAP (q6._0 AS NUM_VALUE_2, q6._1 AS STR_VALUE_INDEXED, q6._2 AS TOTAL) |
| Index Scan |
| scan type: BY_GROUP |
| range: <-∞, ∞> |
| Index |
| AGG_INDEX |
| Value Computation |
| MAP (q6._0 AS NUM_VALUE_2, q6._1 AS STR_VALUE_INDEXED, q6._2 AS TOTAL) |
| Index Scan |
| scan type: BY_GROUP |
| comparisons: [[GREATER_THAN_OR_EQUALS promote(@c17 AS INT)]] |
| Index |
| AGG_INDEX |
| Value Computation |
| MAP (q6._0 AS NUM_VALUE_2, q6._1 AS STR_VALUE_INDEXED, q6._2 AS TOTAL) |
| Index Scan |
| scan type: BY_GROUP |
| comparisons: [[GREATER_THAN_OR_EQUALS promote(@c17 AS INT) && LESS_THAN_OR_EQUALS promote(@c27 AS INT)]] |
| Index |
| AGG_INDEX |
| Value Computation |
| MAP (q6._0 AS NUM_VALUE_2, q6._1 AS STR_VALUE_INDEXED, q6._2 AS TOTAL) |
| Index Scan |
| scan type: BY_GROUP |
| range: <-∞, ∞> |
| Index |
| AGG_INDEX |
| Value Computation |
| MAP (q6._0 AS NUM_VALUE_2, q6._1 AS STR_VALUE_INDEXED, q6._2 AS TOTAL) |
| Index Scan |
| scan type: BY_GROUP |
| comparisons: [[GREATER_THAN_OR_EQUALS promote(@c17 AS INT)]] |
| Index |
| AGG_INDEX |
| Value Computation |
| MAP (q6._0 AS NUM_VALUE_2, q6._1 AS STR_VALUE_INDEXED, q6._2 AS TOTAL) |
| Index Scan |
| scan type: BY_GROUP |
| comparisons: [[GREATER_THAN_OR_EQUALS promote(@c17 AS INT) && LESS_THAN_OR_EQUALS promote(@c27 AS INT)]] |
| Index |
| AGG_INDEX |
| Value Computation |
| MAP (q6._0._0 AS NUM_VALUE_2, q6._0._1 AS STR_VALUE_INDEXED, q6._1._0 AS TOTAL) |
| Streaming Aggregate |
| COLLECT (sum_i(q78._0.NUM_VALUE_3_INDEXED) AS _0) |
| GROUP BY (q78._0.NUM_VALUE_2 AS _0, q78._0.STR_VALUE_INDEXED AS _1) |
| Value Computation |
| MAP (q2 AS _0) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_2 |
| Value Computation |
| MAP (q6._0._0 AS NUM_VALUE_2, q6._0._1 AS STR_VALUE_INDEXED, q6._1._0 AS TOTAL) |
| Streaming Aggregate |
| COLLECT (sum_i(q87._0.NUM_VALUE_3_INDEXED) AS _0) |
| GROUP BY (q87._0.NUM_VALUE_2 AS _0, q87._0.STR_VALUE_INDEXED AS _1) |
| Value Computation |
| MAP (q2 AS _0) |
| Index Scan |
| comparisons: [[GREATER_THAN_OR_EQUALS promote(@c17 AS INT)]] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_2 |
| Fetch Records |
| In Union |
| COMPARE BY (_.STR_VALUE_INDEXED, _.REC_NO, _.NUM_VALUE_3_INDEXED) |
| Values |
| VALUES([__corr_q51 IN arrayDistinct(@c7)] |
| Covering Index Scan |
| comparisons: [EQUALS q51] |
| Index |
| COMPOUND_INDEX |
| Fetch Records |
| In Union |
| COMPARE BY (_.STR_VALUE_INDEXED, _.REC_NO, _.NUM_VALUE_3_INDEXED) |
| Values |
| VALUES([__corr_q58 IN arrayDistinct(@c7)] |
| Covering Index Scan |
| comparisons: [EQUALS q58, [GREATER_THAN promote(@c17 AS STRING) && LESS_THAN promote(@c21 AS STRING)]] |
| Index |
| COMPOUND_INDEX |
| Nested Loop Join |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS LONG), EQUALS q45] |
| Index |
| IND |
| Table Function |
| EXPLODE(arrayDistinct(@c15)) |
| Nested Loop Join |
| Nested Loop Join |
| Table Function |
| EXPLODE(arrayDistinct(@c19)) |
| Index Scan |
| comparisons: [EQUALS q45, EQUALS q47] |
| Index |
| IND |
| Table Function |
| EXPLODE(arrayDistinct(promote(@c9 AS ARRAY(LONG)))) |
| Fetch Records |
| In Union |
| COMPARE BY (_.HEADER.REC_NO, _.HEADER.PATH, _.STR_VALUE) |
| Values |
| VALUES([__corr_q36 IN arrayDistinct(promote(@c9 AS ARRAY(LONG))), __corr_q38 IN arrayDistinct(@c19)] |
| Covering Index Scan |
| comparisons: [EQUALS q36, EQUALS q38] |
| Index |
| IND |
| Fetch Records |
| In Union |
| COMPARE BY (_.NUM_VALUE_UNIQUE, _.REC_NO, _.NUM_VALUE_2, _.NUM_VALUE_3_INDEXED) |
| Values |
| VALUES([__corr_q30 IN arrayDistinct(@c11)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT), EQUALS q30] |
| Index |
| MULTI_INDEX |
| Fetch Records |
| In Union |
| COMPARE BY (_.NUM_VALUE_UNIQUE, _.REC_NO, _.NUM_VALUE_2, _.NUM_VALUE_3_INDEXED) |
| Values |
| VALUES([__corr_q30 IN arrayDistinct(@c11)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT), EQUALS q30] |
| Index |
| MULTI_INDEX |
| Fetch Records |
| In Union |
| COMPARE BY (_.NUM_VALUE_UNIQUE, _.REC_NO, _.NUM_VALUE_2, _.NUM_VALUE_3_INDEXED) |
| Values |
| VALUES([__corr_q30 IN arrayDistinct(@c11)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT), EQUALS q30] |
| Index |
| MULTI_INDEX |
| Fetch Records |
| In Union |
| COMPARE BY (_.NUM_VALUE_UNIQUE, _.REC_NO, _.NUM_VALUE_2, _.NUM_VALUE_3_INDEXED) |
| Values |
| VALUES([__corr_q30 IN arrayDistinct(@c11)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT), EQUALS q30] |
| Index |
| MULTI_INDEX |
| Fetch Records |
| In Union |
| COMPARE BY (_.NUM_VALUE_UNIQUE, _.REC_NO, _.NUM_VALUE_2, _.NUM_VALUE_3_INDEXED) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT), EQUALS q30] |
| Values |
| VALUES([__corr_q30 IN arrayDistinct(@c11)] |
| Index |
| MULTI_INDEX |
| In Union |
| COMPARE BY (_.NUM_VALUE_UNIQUE) |
| Value Computation |
| MAP (q48.NUM_VALUE_UNIQUE AS NUM_VALUE_UNIQUE) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT), EQUALS q30] |
| Index |
| MULTI_INDEX |
| Values |
| VALUES([__corr_q30 IN arrayDistinct(@c11)] |
| In Union |
| COMPARE BY (_.NUM_VALUE_UNIQUE) |
| Value Computation |
| MAP (q48.NUM_VALUE_UNIQUE AS NUM_VALUE_UNIQUE) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT), EQUALS q30] |
| Index |
| MULTI_INDEX |
| Values |
| VALUES([__corr_q30 IN arrayDistinct(@c11)] |
| In Union |
| COMPARE BY (_.NUM_VALUE_UNIQUE) |
| Value Computation |
| MAP (q48.NUM_VALUE_UNIQUE AS NUM_VALUE_UNIQUE) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT), EQUALS q30] |
| Index |
| MULTI_INDEX |
| Values |
| VALUES([__corr_q30 IN arrayDistinct(@c11)] |
| In Union |
| COMPARE BY (_.NUM_VALUE_UNIQUE) |
| Value Computation |
| MAP (q48.NUM_VALUE_UNIQUE AS NUM_VALUE_UNIQUE) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT), EQUALS q30] |
| Index |
| MULTI_INDEX |
| Values |
| VALUES([__corr_q30 IN arrayDistinct(@c11)] |
| In Union |
| COMPARE BY (_.NUM_VALUE_UNIQUE) |
| Value Computation |
| MAP (q48.NUM_VALUE_UNIQUE AS NUM_VALUE_UNIQUE) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT), EQUALS q30] |
| Index |
| MULTI_INDEX |
| Values |
| VALUES([__corr_q30 IN arrayDistinct(@c11)] |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO) |
| Nested Loop Join |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING), EQUALS promote(@c11 AS INT), EQUALS q229] |
| Table Function |
| EXPLODE(arrayDistinct(@c16)) |
| Index |
| MULTI_INDEX |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING), EQUALS promote(@c11 AS INT), [GREATER_THAN_OR_EQUALS promote(@c25 AS INT)]] |
| Index |
| MULTI_INDEX |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_UNIQUE, _.REC_NO) |
| Nested Loop Join |
| Table Function |
| EXPLODE(arrayDistinct(@c7)) |
| Index Scan |
| comparisons: [EQUALS q150] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_UNIQUE |
| Index Scan |
| comparisons: [[GREATER_THAN promote(@c17 AS INT)]] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_UNIQUE |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_UNIQUE, _.REC_NO) |
| Index Scan |
| comparisons: [[LESS_THAN promote(@c7 AS INT)]] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_UNIQUE |
| In Union |
| COMPARE BY (_.NUM_VALUE_UNIQUE, _.REC_NO, _.NUM_VALUE_2) |
| Values |
| VALUES([__corr_q1146 IN arrayDistinct(@c16)] |
| Predicate Filter |
| WHERE q2.NUM_VALUE_2 EQUALS q1146 |
| Index Scan |
| comparisons: [[GREATER_THAN promote(@c12 AS INT)]] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_UNIQUE |
| Fetch Records |
| Union Distinct |
| COMPARE BY (_.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING)] |
| In Union |
| COMPARE BY (_.REC_NO, _.NUM_VALUE_3_INDEXED) |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Values |
| VALUES([__corr_q97 IN arrayDistinct(@c11)] |
| Covering Index Scan |
| comparisons: [EQUALS q97] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Predicate Filter |
| WHERE q2.NUM_VALUE_2 IN @c7 |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Predicate Filter |
| WHERE q2.NUM_VALUE_2 IN @c7 |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| In Union |
| COMPARE BY (_.NUM_VALUE_UNIQUE, _.STR_VALUE_INDEXED, _.REC_NO) |
| Value Computation |
| MAP (q126.NUM_VALUE_UNIQUE AS NUM_VALUE_UNIQUE, q126.STR_VALUE_INDEXED AS STR_VALUE_INDEXED, q126.REC_NO AS REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c11 AS INT), EQUALS q70] |
| Index |
| INDEX_FOR_IN_UNION |
| Values |
| VALUES([__corr_q70 IN arrayDistinct(@c15)] |
| In Union |
| COMPARE BY (_.NUM_VALUE_UNIQUE, _.STR_VALUE_INDEXED, _.REC_NO) |
| Value Computation |
| MAP (q126.NUM_VALUE_UNIQUE AS NUM_VALUE_UNIQUE, q126.STR_VALUE_INDEXED AS STR_VALUE_INDEXED, q126.REC_NO AS REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c11 AS INT), EQUALS q70] |
| direction: reversed |
| Index |
| INDEX_FOR_IN_UNION |
| Values |
| VALUES([__corr_q70 IN arrayDistinct(@c15)] |
| In Union |
| COMPARE BY (_.NUM_VALUE_UNIQUE, _.STR_VALUE_INDEXED, _.NUM_VALUE_3_INDEXED, _.REC_NO) |
| Value Computation |
| MAP (q126.NUM_VALUE_UNIQUE AS NUM_VALUE_UNIQUE, q126.STR_VALUE_INDEXED AS STR_VALUE_INDEXED, q126.NUM_VALUE_3_INDEXED AS NUM_VALUE_3_INDEXED, q126.REC_NO AS REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c13 AS INT), EQUALS q70] |
| Index |
| INDEX_FOR_IN_UNION |
| Values |
| VALUES([__corr_q70 IN arrayDistinct(@c17)] |
| In Union |
| COMPARE BY (_.NUM_VALUE_UNIQUE, _.STR_VALUE_INDEXED, _.NUM_VALUE_3_INDEXED, _.REC_NO) |
| Value Computation |
| MAP (q126.NUM_VALUE_UNIQUE AS NUM_VALUE_UNIQUE, q126.STR_VALUE_INDEXED AS STR_VALUE_INDEXED, q126.NUM_VALUE_3_INDEXED AS NUM_VALUE_3_INDEXED, q126.REC_NO AS REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c13 AS INT), EQUALS q70] |
| direction: reversed |
| Index |
| INDEX_FOR_IN_UNION |
| Values |
| VALUES([__corr_q70 IN arrayDistinct(@c17)] |
| In Union |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO, _.NUM_VALUE_2) |
| In Union |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO, _.STR_VALUE_INDEXED) |
| Values |
| VALUES([__corr_q43 IN arrayDistinct(@c15)] |
| Fetch Records |
| Intersection |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS q43] |
| Covering Index Scan |
| comparisons: [EQUALS q41] |
| Index |
| STR_VALUE_NUM_VALUE3 |
| Index |
| NUM_VALUE2_NUM_VALUE3 |
| Values |
| VALUES([__corr_q41 IN arrayDistinct(@c7)] |
| In Union |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO, _.NUM_VALUE_2) |
| In Union |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO, _.STR_VALUE_INDEXED) |
| Values |
| VALUES([__corr_q43 IN arrayDistinct(@c15)] |
| Fetch Records |
| Intersection |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS q43] |
| Covering Index Scan |
| comparisons: [EQUALS q41] |
| Index |
| STR_VALUE_NUM_VALUE3 |
| Index |
| NUM_VALUE2_NUM_VALUE3 |
| Values |
| VALUES([__corr_q41 IN arrayDistinct(@c7)] |
| In Union |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO, _.NUM_VALUE_2) |
| In Union |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO, _.STR_VALUE_INDEXED) |
| Fetch Records |
| Values |
| VALUES([__corr_q43 IN arrayDistinct(@c15)] |
| Intersection |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS q43] |
| Covering Index Scan |
| comparisons: [EQUALS q41] |
| Index |
| STR_VALUE_NUM_VALUE3 |
| Index |
| NUM_VALUE2_NUM_VALUE3 |
| Values |
| VALUES([__corr_q41 IN arrayDistinct(@c7)] |
| In Union |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO, _.NUM_VALUE_2) |
| In Union |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO, _.STR_VALUE_INDEXED) |
| Fetch Records |
| Values |
| VALUES([__corr_q59 IN arrayDistinct(@c15)] |
| Intersection |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS q59] |
| Covering Index Scan |
| comparisons: [EQUALS q57] |
| Index |
| STR_VALUE_NUM_VALUE3 |
| Index |
| NUM_VALUE2_NUM_VALUE3 |
| Values |
| VALUES([__corr_q57 IN arrayDistinct(@c7)] |
| In Union |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO, _.NUM_VALUE_2) |
| In Union |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO, _.STR_VALUE_INDEXED) |
| Values |
| VALUES([__corr_q59 IN arrayDistinct(@c15)] |
| Fetch Records |
| Intersection |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS q59] |
| Covering Index Scan |
| comparisons: [EQUALS q57] |
| Index |
| STR_VALUE_NUM_VALUE3 |
| Index |
| NUM_VALUE2_NUM_VALUE3 |
| Values |
| VALUES([__corr_q57 IN arrayDistinct(@c7)] |
| In Union |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO, _.NUM_VALUE_2) |
| In Union |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO, _.STR_VALUE_INDEXED) |
| Values |
| VALUES([__corr_q59 IN arrayDistinct(@c15)] |
| Fetch Records |
| Intersection |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS q59] |
| Covering Index Scan |
| comparisons: [EQUALS q57] |
| Index |
| STR_VALUE_NUM_VALUE3 |
| Index |
| NUM_VALUE2_NUM_VALUE3 |
| Values |
| VALUES([__corr_q57 IN arrayDistinct(@c7)] |
| In Union |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO, _.STR_VALUE_INDEXED, _.NUM_VALUE_2) |
| Predicate Filter |
| WHERE q2.STR_VALUE_INDEXED EQUALS q53 |
| Index Scan |
| comparisons: [EQUALS q51] |
| Index |
| NUM_VALUE2_NUM_VALUE3 |
| Values |
| VALUES([__corr_q51 IN arrayDistinct(@c7), __corr_q53 IN arrayDistinct(@c15)] |
| In Union |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO, _.STR_VALUE_INDEXED, _.NUM_VALUE_2) |
| Predicate Filter |
| WHERE q2.STR_VALUE_INDEXED EQUALS q53 |
| Index Scan |
| comparisons: [EQUALS q51] |
| Index |
| NUM_VALUE2_NUM_VALUE3 |
| Values |
| VALUES([__corr_q51 IN arrayDistinct(@c7), __corr_q53 IN arrayDistinct(@c15)] |
| In Union |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO, _.STR_VALUE_INDEXED, _.NUM_VALUE_2) |
| Predicate Filter |
| WHERE q2.STR_VALUE_INDEXED EQUALS q53 |
| Index Scan |
| comparisons: [EQUALS q51] |
| Index |
| NUM_VALUE2_NUM_VALUE3 |
| Values |
| VALUES([__corr_q51 IN arrayDistinct(@c7), __corr_q53 IN arrayDistinct(@c15)] |
| Predicate Filter |
| WHERE q2.NUM_VALUE_2 IN @c7 |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Predicate Filter |
| WHERE q2.NUM_VALUE_2 IN @c7 |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Fetch Records |
| In Union |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO) |
| Values |
| VALUES([__corr_q48 IN arrayDistinct(@c7)] |
| Covering Index Scan |
| comparisons: [EQUALS q48] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Nested Loop Join |
| Index Scan |
| comparisons: [EQUALS q48] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Table Function |
| EXPLODE(arrayDistinct(@c7)) |
| Value Computation |
| MAP (q6.REC_NO AS REC_NO) |
| Nested Loop Join |
| Table Function |
| EXPLODE(arrayDistinct(@c7)) |
| Value Computation |
| MAP (q91.REC_NO AS REC_NO, q91.NUM_VALUE_3_INDEXED AS NUM_VALUE_3_INDEXED) |
| Covering Index Scan |
| comparisons: [EQUALS q55] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Fetch Records |
| In Union |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO) |
| Values |
| VALUES([__corr_q48 IN arrayDistinct(@c7)] |
| Covering Index Scan |
| comparisons: [EQUALS q48] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Predicate Filter |
| WHERE q2.NUM_VALUE_3_INDEXED IN @c7 |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Fetch Records |
| Predicate Filter |
| WHERE NOT q71.NUM_VALUE_3_INDEXED IN @c8 |
| Covering Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_BINARY_FUNCTION_ADD |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_BINARY_FUNCTION_ADD |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_BINARY_FUNCTION_SUB |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_BINARY_FUNCTION_SUB |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_BINARY_FUNCTION_MUL |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_BINARY_FUNCTION_MUL |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_BINARY_FUNCTION_DIV |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_BINARY_FUNCTION_DIV |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_BINARY_FUNCTION_MOD |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_BINARY_FUNCTION_MOD |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_BINARY_FUNCTION_BITAND |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_BINARY_FUNCTION_BITAND |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_BINARY_FUNCTION_BITOR |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_BINARY_FUNCTION_BITOR |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_BINARY_FUNCTION_BITXOR |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_BINARY_FUNCTION_BITXOR |
| Predicate Filter |
| WHERE q2.NUM_VALUE_2 & @c7 EQUALS promote(@c9 AS INT) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Predicate Filter |
| WHERE q2.NUM_VALUE_2 & @c7 EQUALS promote(@c9 AS INT) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Predicate Filter |
| WHERE q2.NUM_VALUE_2 & @c7 EQUALS promote(@c9 AS INT) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_2_BITAND_2 |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_2_BITAND_2 |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_2_BITAND_2 |
| Value Computation |
| MAP (q2.NUM_VALUE_2 + q2.NUM_VALUE_3_INDEXED AS SUM, q2.REC_NO AS REC_NO) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_UNIQUE |
| Value Computation |
| MAP (q86.REC_NO AS REC_NO) |
| Predicate Filter |
| WHERE q2.NUM_VALUE_UNIQUE & @c7 EQUALS promote(@c9 AS INT) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Value Computation |
| MAP (q86.REC_NO AS REC_NO) |
| Predicate Filter |
| WHERE q2.NUM_VALUE_UNIQUE & @c7 EQUALS promote(@c9 AS INT) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Value Computation |
| MAP (q86.REC_NO AS REC_NO) |
| Predicate Filter |
| WHERE q2.NUM_VALUE_UNIQUE & @c7 EQUALS promote(@c9 AS INT) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Value Computation |
| MAP (q86.REC_NO AS REC_NO) |
| Predicate Filter |
| WHERE q2.NUM_VALUE_UNIQUE & @c7 EQUALS promote(@c9 AS INT) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Value Computation |
| MAP (q86.REC_NO AS REC_NO) |
| Predicate Filter |
| WHERE q2.NUM_VALUE_UNIQUE & @c7 EQUALS promote(@c9 AS INT) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Value Computation |
| MAP (q86.REC_NO AS REC_NO) |
| Predicate Filter |
| WHERE q2.NUM_VALUE_UNIQUE & @c7 EQUALS promote(@c9 AS INT) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Value Computation |
| MAP (q86.REC_NO AS REC_NO) |
| Predicate Filter |
| WHERE q2.NUM_VALUE_UNIQUE & @c7 EQUALS promote(@c9 AS INT) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Value Computation |
| MAP (q86.REC_NO AS REC_NO) |
| Predicate Filter |
| WHERE q2.NUM_VALUE_UNIQUE & @c7 EQUALS promote(@c9 AS INT) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Value Computation |
| MAP (q86.REC_NO AS REC_NO) |
| Predicate Filter |
| WHERE q2.NUM_VALUE_UNIQUE & @c7 EQUALS promote(@c9 AS INT) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_2_ADD_NUM_VALUE_3_INDEXED |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_2_ADD_NUM_VALUE_3_INDEXED |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_2_ADD_NUM_VALUE_3_INDEXED |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_2_ADD_NUM_VALUE_3_INDEXED |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_2_ADD_NUM_VALUE_3_INDEXED |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_2_ADD_NUM_VALUE_3_INDEXED |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_2_ADD_NUM_VALUE_3_INDEXED |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_2_ADD_NUM_VALUE_3_INDEXED |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_2_ADD_NUM_VALUE_3_INDEXED |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_2_ADD_NUM_VALUE_3_INDEXED |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_2_ADD_NUM_VALUE_3_INDEXED |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_2_ADD_NUM_VALUE_3_INDEXED |
| Index |
| PREFIX_SCALAR |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT), EQUALS promote(@c7 AS INT)] |
| Index |
| PREFIX_SCALAR |
| Value Computation |
| MAP (q182.STR_VALUE_INDEXED AS STR_VALUE_INDEXED, q182.NUM_VALUE_2 AS NUM_VALUE_2, q182.NUM_VALUE_3_INDEXED AS NUM_VALUE_3_INDEXED) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c11 AS STRING), [GREATER_THAN_OR_EQUALS promote(@c16 AS INT)]] |
| Index |
| WIDER |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING), EQUALS promote(@c15 AS INT), EQUALS promote(@c11 AS INT)] |
| Index |
| MULTI_INDEX |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING), EQUALS promote(@c11 AS INT), [GREATER_THAN_OR_EQUALS promote(@c16 AS INT) && LESS_THAN_OR_EQUALS promote(@c21 AS INT)]] |
| Index |
| MULTI_INDEX |
| Index Scan |
| comparisons: [EQUALS promote(@c8 AS STRING), EQUALS promote(@c12 AS INT), [GREATER_THAN_OR_EQUALS promote(@c19 AS INT) && LESS_THAN_OR_EQUALS promote(@c24 AS INT)]] |
| Index |
| MULTI_INDEX |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING), EQUALS promote(@c11 AS INT), [GREATER_THAN_OR_EQUALS promote(@c16 AS INT)]] |
| Index |
| MULTI_INDEX |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING)] |
| Index |
| MULTI_INDEX |
| Index Scan |
| comparisons: [EQUALS promote(@c11 AS STRING), EQUALS promote(@c23 AS LONG), EQUALS promote(@c40 AS LONG), EQUALS promote(@c46 AS INT)] |
| Index |
| COMPLEX |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| VERSIONS |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT), EQUALS promote(@c15 AS INT)] |
| Index |
| VERSIONS |
| Index Scan |
| comparisons: [[GREATER_THAN promote(@c9 AS INT)]] |
| Index |
| VERSIONS |
| Type Filter |
| WHERE record IS [MY_HIERARCHICAL_RECORD] |
| Scan |
| comparisons: [EQUALS promote(@c7 AS STRING)] |
| Primary Storage |
| record types: [MY_HIERARCHICAL_RECORD] |
| Fetch Records |
| Predicate Filter |
| WHERE q41.PARENT_PATH LIKE @c7 ESCAPE 'null' |
| Covering Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_HIERARCHICAL_RECORD_NUM_VALUE_INDEXED |
| Nested Loop Join |
| FLATMAP q2 |
| Index Scan |
| comparisons: [EQUALS promote(@c11 AS LONG), EQUALS promote(@c30 AS STRING)] |
| Index |
| KEY_INDEX |
| Predicate Filter |
| WHERE q8 NOT_NULL |
| Value Computation |
| FIRST $q8 OR NULL |
| Value Computation |
| MAP (@c11 AS _0) |
| Predicate Filter |
| WHERE q4.KEY EQUALS promote(@c30 AS STRING) AND q4.VALUE NOT_EQUALS promote(@c37 AS STRING) |
| Value Computation |
| EXPLODE q2.MAP.ENTRY |
| Type Filter |
| WHERE record IS [MY_RECORD] |
| Scan |
| comparisons: [EQUALS promote(@c9 AS STRING), EQUALS promote(@c15 AS LONG)] |
| Primary Storage |
| record types: [MY_RECORD] |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING), [GREATER_THAN promote(@c13 AS LONG) && LESS_THAN promote(@c19 AS LONG)]] |
| Index |
| STATS_SCHOOL |
| Index Scan |
| comparisons: [EQUALS promote(@c20 AS STRING), EQUALS promote(@c16 AS STRING), [LESS_THAN_OR_EQUALS promote(@c10 AS LONG)]] |
| Index |
| EMAIL_HOMETOWN |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS STRING), EQUALS promote(@c20 AS STRING), [LESS_THAN_OR_EQUALS promote(@c10 AS LONG)]] |
| Index |
| EMAIL_HOMETOWN |
| Fetch Records |
| Predicate Filter |
| WHERE q104.EMAIL EQUALS promote(@c19 AS STRING) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c9 AS STRING), EQUALS promote(@c15 AS STRING)] |
| Index |
| HOMETOWN_EMAIL |
| Index Scan |
| comparisons: [EQUALS promote(@c15 AS STRING), [GREATER_THAN promote(@c9 AS LONG)]] |
| Index |
| STATS_SCHOOL |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT), EQUALS promote(@c13 AS LONG), [GREATER_THAN promote(@c19 AS STRING)]] |
| Index |
| STATS_CAT_SCHOOL_EMAIL |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT), [GREATER_THAN promote(@c13 AS LONG)]] |
| Index |
| STATS_CAT_SCHOOL_EMAIL |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT), [GREATER_THAN promote(@c13 AS LONG)]] |
| Index |
| STATS_CAT_SCHOOL_EMAIL |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT), EQUALS promote(@c13 AS LONG)] |
| Index |
| STATS_CAT_SCHOOL_EMAIL |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT), EQUALS promote(@c13 AS LONG)] |
| Index |
| STATS_CAT_SCHOOL_EMAIL |
| Predicate Filter |
| WHERE q2.STATS.SCHOOL_NAME EQUALS promote(@c15 AS STRING) |
| Index Scan |
| comparisons: [[GREATER_THAN promote(@c9 AS LONG)]] |
| Index |
| STATS_SCHOOL |
| Predicate Filter |
| WHERE q2.STATS.SCHOOL_NAME LESS_THAN promote(@c16 AS STRING) AND q2.STATS.HOMETOWN LIKE @c22 ESCAPE 'null' |
| Index Scan |
| comparisons: [[LESS_THAN_OR_EQUALS promote(@c10 AS LONG)]] |
| Index |
| STATS_SCHOOL |
| Index Scan |
| comparisons: [[GREATER_THAN promote(@c22 AS INT)]] |
| Index |
| REVIEW_RATING |
| Index Scan |
| comparisons: [EQUALS promote(@c22 AS STRING), [GREATER_THAN_OR_EQUALS promote(@c29 AS INT)]] |
| Index |
| TAG |
| Nested Loop Join |
| FLATMAP q2 |
| Index Scan |
| comparisons: [EQUALS promote(@c22 AS INT)] |
| Index |
| REVIEW_RATING |
| Predicate Filter |
| WHERE q8 NOT_NULL |
| Value Computation |
| FIRST $q8 OR NULL |
| Value Computation |
| MAP (@c28 AS _0) |
| Predicate Filter |
| WHERE q4.RATING EQUALS promote(@c22 AS INT) AND q4.REVIEWER EQUALS promote(@c28 AS LONG) |
| Value Computation |
| EXPLODE q2.REVIEWS |
| Fetch Records |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.STR_VALUE_INDEXED, _.NUM_VALUE_UNIQUE) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c11 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Fetch Records |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.NUM_VALUE_UNIQUE) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING), [GREATER_THAN promote(@c16 AS INT)]] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING), EQUALS promote(@c12 AS INT)] |
| Index |
| STR_VALUE_3_INDEX |
| Index |
| STR_VALUE_3_INDEX |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_2, _.REC_NO) |
| Fetch Records |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_2, _.REC_NO) |
| Covering Index Scan |
| comparisons: [[GREATER_THAN_OR_EQUALS promote(@c13 AS INT) && LESS_THAN_OR_EQUALS promote(@c18 AS INT)]] |
| Predicate Filter |
| WHERE q4555.NUM_VALUE_3_INDEXED LESS_THAN_OR_EQUALS promote(@c25 AS INT) |
| Index |
| COVERING_INDEX |
| Covering Index Scan |
| comparisons: [[GREATER_THAN_OR_EQUALS promote(@c30 AS INT)]] |
| Index |
| COVERING_INDEX |
| Predicate Filter |
| WHERE q2.STR_VALUE_INDEXED LIKE @c7 ESCAPE 'null' |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| COVERING_INDEX |
| Value Computation |
| MAP (q6.NUM_VALUE_UNIQUE AS NUM_VALUE_UNIQUE, q6.NUM_VALUE_3_INDEXED AS NUM_VALUE_3_INDEXED) |
| Value Computation |
| MAP (q109.NUM_VALUE_UNIQUE AS NUM_VALUE_UNIQUE, q109.NUM_VALUE_3_INDEXED AS NUM_VALUE_3_INDEXED, q109.NUM_VALUE_2 AS NUM_VALUE_2) |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_2, _.NUM_VALUE_3_INDEXED, _.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c13 AS INT)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| SIMPLE_KEY_WITH_VALUE |
| Index |
| SIMPLE_KEY_WITH_VALUE |
| Value Computation |
| MAP (q6.NUM_VALUE_UNIQUE AS NUM_VALUE_UNIQUE, q6.NUM_VALUE_3_INDEXED AS NUM_VALUE_3_INDEXED) |
| Value Computation |
| MAP (q109.NUM_VALUE_UNIQUE AS NUM_VALUE_UNIQUE, q109.NUM_VALUE_3_INDEXED AS NUM_VALUE_3_INDEXED, q109.NUM_VALUE_2 AS NUM_VALUE_2) |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_2, _.NUM_VALUE_3_INDEXED, _.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| direction: reversed |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c13 AS INT)] |
| direction: reversed |
| Index |
| SIMPLE_KEY_WITH_VALUE |
| Index |
| SIMPLE_KEY_WITH_VALUE |
| Value Computation |
| MAP (q6.NUM_VALUE_UNIQUE AS NUM_VALUE_UNIQUE, q6.NUM_VALUE_3_INDEXED AS NUM_VALUE_3_INDEXED) |
| Value Computation |
| MAP (q108.NUM_VALUE_UNIQUE AS NUM_VALUE_UNIQUE, q108.NUM_VALUE_3_INDEXED AS NUM_VALUE_3_INDEXED, q108.NUM_VALUE_2 AS NUM_VALUE_2, q108.REC_NO AS REC_NO) |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_2, _.REC_NO, _.NUM_VALUE_3_INDEXED) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c13 AS INT)] |
| Index |
| SIMPLE_KEY_WITH_VALUE |
| Index |
| SIMPLE_KEY_WITH_VALUE |
| Value Computation |
| MAP (q6.NUM_VALUE_UNIQUE AS NUM_VALUE_UNIQUE, q6.NUM_VALUE_3_INDEXED AS NUM_VALUE_3_INDEXED) |
| Value Computation |
| MAP (q108.NUM_VALUE_UNIQUE AS NUM_VALUE_UNIQUE, q108.NUM_VALUE_3_INDEXED AS NUM_VALUE_3_INDEXED, q108.NUM_VALUE_2 AS NUM_VALUE_2, q108.REC_NO AS REC_NO) |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_2, _.REC_NO, _.NUM_VALUE_3_INDEXED) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| direction: reversed |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c13 AS INT)] |
| direction: reversed |
| Index |
| SIMPLE_KEY_WITH_VALUE |
| Index |
| SIMPLE_KEY_WITH_VALUE |
| Value Computation |
| MAP (q100.STATS.START_DATE AS START_DATE, q100.STATS.HOMETOWN AS HOMETOWN, q100.ID AS ID, q100.NAME AS NAME) |
| Union Distinct |
| COMPARE BY (_.STATS.START_DATE, _.NAME, _.STATS.HOMETOWN, _.ID) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c17 AS INT), EQUALS promote(@c24 AS STRING)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c17 AS INT), EQUALS promote(@c30 AS STRING)] |
| Index |
| REVIEWER_CATGORY_STATS |
| Index |
| REVIEWER_CATGORY_STATS |
| Value Computation |
| MAP (q100.STATS.START_DATE AS START_DATE, q100.STATS.HOMETOWN AS HOMETOWN, q100.ID AS ID, q100.NAME AS NAME) |
| Union Distinct |
| COMPARE BY (_.STATS.START_DATE, _.NAME, _.STATS.HOMETOWN, _.ID) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c17 AS INT), EQUALS promote(@c30 AS STRING)] |
| direction: reversed |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c17 AS INT), EQUALS promote(@c24 AS STRING)] |
| direction: reversed |
| Index |
| REVIEWER_CATGORY_STATS |
| Index |
| REVIEWER_CATGORY_STATS |
| Value Computation |
| MAP (q158.STATS.START_DATE AS START_DATE, q158.STATS.HOMETOWN AS HOMETOWN, q158.ID AS ID, q158.NAME AS NAME) |
| Union Distinct |
| COMPARE BY (_.STATS.START_DATE, _.STATS.HOMETOWN, _.NAME, _.ID) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c17 AS INT), EQUALS promote(@c30 AS STRING)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c17 AS INT), EQUALS promote(@c24 AS STRING)] |
| Index |
| REVIEWER_CATGORY_STATS |
| Index |
| REVIEWER_CATGORY_STATS |
| Value Computation |
| MAP (q158.STATS.START_DATE AS START_DATE, q158.STATS.HOMETOWN AS HOMETOWN, q158.ID AS ID, q158.NAME AS NAME) |
| Union Distinct |
| COMPARE BY (_.STATS.START_DATE, _.STATS.HOMETOWN, _.NAME, _.ID) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c17 AS INT), EQUALS promote(@c24 AS STRING)] |
| direction: reversed |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c17 AS INT), EQUALS promote(@c30 AS STRING)] |
| direction: reversed |
| Index |
| REVIEWER_CATGORY_STATS |
| Index |
| REVIEWER_CATGORY_STATS |
| Predicate Filter |
| WHERE q2.NUM_VALUE_3_INDEXED EQUALS promote(@c12 AS INT) OR q2.NUM_VALUE_3_INDEXED EQUALS promote(@c16 AS INT) OR q2.NUM_VALUE_3_INDEXED EQUALS promote(@c20 AS INT) |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING)] |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Fetch Records |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_2, _.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING)] |
| Intersection |
| COMPARE BY (_.NUM_VALUE_2, _.REC_NO) |
| Index |
| STR_2 |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c16 AS INT)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c12 AS INT)] |
| Index |
| NU_2 |
| Index |
| N3_2 |
| Fetch Records |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.NUM_VALUE_2, _.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING), EQUALS promote(@c12 AS INT)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING), EQUALS promote(@c16 AS INT)] |
| Index |
| MULTI_INDEX |
| Index |
| MULTI_INDEX |
| Fetch Records |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_2, _.NUM_VALUE_3_INDEXED, _.STR_VALUE_INDEXED, _.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c11 AS STRING)] |
| Index |
| MULTI_INDEX |
| Index |
| MULTI_INDEX |
| Fetch Records |
| Union Distinct |
| COMPARE BY (_.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c11 AS INT)] |
| direction: reversed |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING)] |
| direction: reversed |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Fetch Records |
| Union Distinct |
| COMPARE BY (_.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c11 AS STRING)] |
| direction: reversed |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT)] |
| direction: reversed |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Fetch Records |
| Union Distinct |
| COMPARE BY (_.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c15 AS INT)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c11 AS INT)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Fetch Records |
| Union Distinct |
| COMPARE BY (_.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c15 AS STRING)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c11 AS INT)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Fetch Records |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING), EQUALS promote(@c11 AS INT), EQUALS promote(@c11 AS INT)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING), EQUALS promote(@c11 AS INT), [GREATER_THAN_OR_EQUALS promote(@c22 AS INT) && LESS_THAN_OR_EQUALS promote(@c27 AS INT)]] |
| Index |
| MULTI_INDEX |
| Index |
| MULTI_INDEX |
| Fetch Records |
| Union Distinct |
| COMPARE BY (_.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c11 AS INT)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Union Distinct |
| COMPARE BY (_.REC_NO) |
| Fetch Records |
| Union Distinct |
| COMPARE BY (_.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c11 AS INT)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Predicate Filter |
| WHERE q2.NUM_VALUE_2 EQUALS promote(@c11 AS INT) |
| Index Scan |
| comparisons: [EQUALS promote(@c20 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO) |
| Predicate Filter |
| WHERE q2.STR_VALUE_INDEXED EQUALS promote(@c7 AS STRING) |
| Index Scan |
| comparisons: [[GREATER_THAN promote(@c13 AS INT) && LESS_THAN promote(@c17 AS INT)]] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Predicate Filter |
| WHERE q2.STR_VALUE_INDEXED EQUALS promote(@c7 AS STRING) |
| Index Scan |
| comparisons: [[GREATER_THAN promote(@c23 AS INT) && LESS_THAN promote(@c27 AS INT)]] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Predicate Filter |
| WHERE q2.STR_VALUE_INDEXED EQUALS promote(@c7 AS STRING) |
| Index Scan |
| comparisons: [[GREATER_THAN promote(@c33 AS INT) && LESS_THAN promote(@c37 AS INT)]] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Predicate Filter |
| WHERE q2.STR_VALUE_INDEXED EQUALS promote(@c7 AS STRING) |
| Index Scan |
| comparisons: [[GREATER_THAN promote(@c43 AS INT) && LESS_THAN promote(@c47 AS INT)]] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Predicate Filter |
| WHERE q2.STR_VALUE_INDEXED EQUALS promote(@c7 AS STRING) |
| Index Scan |
| comparisons: [[GREATER_THAN promote(@c53 AS INT) && LESS_THAN promote(@c57 AS INT)]] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Predicate Filter |
| WHERE q2.STR_VALUE_INDEXED EQUALS promote(@c7 AS STRING) |
| Index Scan |
| comparisons: [[GREATER_THAN promote(@c63 AS INT) && LESS_THAN promote(@c67 AS INT)]] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Predicate Filter |
| WHERE q2.STR_VALUE_INDEXED EQUALS promote(@c7 AS STRING) |
| Index Scan |
| comparisons: [[GREATER_THAN promote(@c73 AS INT) && LESS_THAN promote(@c77 AS INT)]] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Predicate Filter |
| WHERE q2.STR_VALUE_INDEXED EQUALS promote(@c7 AS STRING) |
| Index Scan |
| comparisons: [[GREATER_THAN promote(@c83 AS INT) && LESS_THAN promote(@c87 AS INT)]] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Predicate Filter |
| WHERE q2.STR_VALUE_INDEXED EQUALS promote(@c7 AS STRING) |
| Index Scan |
| comparisons: [[GREATER_THAN promote(@c93 AS INT) && LESS_THAN promote(@c97 AS INT)]] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Fetch Records |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c15 AS INT)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c11 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Fetch Records |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c8 AS STRING), [GREATER_THAN promote(@c12 AS INT)]] |
| Covering Index Scan |
| comparisons: [[LESS_THAN promote(@c17 AS INT)]] |
| Index |
| STR_VALUE_3_INDEX |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Fetch Records |
| Unordered Primary Key Distinct |
| Union All |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING), [GREATER_THAN_OR_EQUALS promote(@c18 AS INT)]] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING), [LESS_THAN_OR_EQUALS promote(@c13 AS INT)]] |
| Index |
| MULTI_INDEX_2 |
| Index |
| MULTI_INDEX |
| Fetch Records |
| Union Distinct |
| COMPARE BY (_.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c11 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Fetch Records |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c15 AS INT)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c11 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Fetch Records |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c15 AS INT)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c11 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Fetch Records |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO) |
| Covering Index Scan |
| comparisons: [[GREATER_THAN promote(@c15 AS INT)]] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c11 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Fetch Records |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_3_INDEXED, _.REC_NO) |
| Covering Index Scan |
| comparisons: [[LESS_THAN promote(@c7 AS INT)]] |
| Covering Index Scan |
| comparisons: [[GREATER_THAN promote(@c11 AS INT)]] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Fetch Records |
| Union Distinct |
| COMPARE BY (_.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c11 AS INT)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c15 AS INT)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING)] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Fetch Records |
| Unordered Primary Key Distinct |
| Union All |
| Covering Index Scan |
| comparisons: [[LESS_THAN promote(@c7 AS STRING)]] |
| Covering Index Scan |
| comparisons: [[GREATER_THAN promote(@c11 AS INT)]] |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Fetch Records |
| Union Distinct |
| COMPARE BY (_.REC_NO) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING)] |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c11 AS INT)] |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_2, to_ordered_bytes(_.STR_VALUE_INDEXED, DESC_NULLS_LAST), _.REC_NO) |
| Index Scan |
| comparisons: [EQUALS promote(@c8 AS INT), EQUALS promote(@c12 AS STRING), EQUALS promote(@c16 AS INT)] |
| Index |
| NUM_VALUE_2_STR_VALUE_NUM_VALUE_3_INDEXED |
| Index Scan |
| comparisons: [EQUALS promote(@c21 AS INT)] |
| Index |
| ORDERED_STR_VALUE |
| Index Scan |
| comparisons: [EQUALS promote(@c25 AS INT)] |
| Index |
| ORDERED_STR_VALUE |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_2, to_ordered_bytes(_.STR_VALUE_INDEXED, DESC_NULLS_LAST), _.REC_NO) |
| Predicate Filter |
| WHERE q2.NUM_VALUE_3_INDEXED GREATER_THAN promote(@c16 AS INT) |
| Index Scan |
| comparisons: [EQUALS promote(@c8 AS INT), EQUALS to_ordered_bytes(promote(@c12 AS STRING), DESC_NULLS_LAST)] |
| Index |
| ORDERED_STR_VALUE |
| Index Scan |
| comparisons: [EQUALS promote(@c21 AS INT)] |
| Index |
| ORDERED_STR_VALUE |
| Index Scan |
| comparisons: [EQUALS promote(@c25 AS INT)] |
| Index |
| ORDERED_STR_VALUE |
| Union Distinct |
| COMPARE BY (_.NUM_VALUE_2, to_ordered_bytes(_.STR_VALUE_INDEXED, DESC_NULLS_LAST), _.REC_NO) |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT)] |
| Index |
| ORDERED_STR_VALUE |
| Index Scan |
| comparisons: [EQUALS promote(@c11 AS INT)] |
| Index |
| ORDERED_STR_VALUE |
| Index Scan |
| comparisons: [EQUALS promote(@c15 AS INT)] |
| Index |
| ORDERED_STR_VALUE |
| Value Computation |
| MAP (q6.STR_VALUE_INDEXED AS STR_VALUE_INDEXED) |
| Value Computation |
| MAP (q62.STR_VALUE_INDEXED AS STR_VALUE_INDEXED, q62.NUM_VALUE_2 AS NUM_VALUE_2) |
| Covering Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT), [LESS_THAN to_ordered_bytes(promote(@c11 AS STRING), DESC_NULLS_LAST)]] |
| Index |
| ORDERED_STR_VALUE |
| Value Computation |
| MAP (q6._0 AS NUM_VALUE_2, q6._1 AS NUM_VALUE_3_INDEXED, q6._2 AS M) |
| Index Scan |
| scan type: BY_GROUP |
| range: <-∞, ∞> |
| Index |
| MAX_NUM_VALUE_UNIQUE_BY_2_AND_3 |
| Value Computation |
| MAP (q6._0 AS NUM_VALUE_2, q6._1 AS NUM_VALUE_3_INDEXED, q6._2 AS M) |
| Index Scan |
| scan type: BY_GROUP |
| range: <-∞, ∞> |
| direction: reversed |
| Index |
| MAX_NUM_VALUE_UNIQUE_BY_2_AND_3 |
| Value Computation |
| MAP (q6._1 AS NUM_VALUE_3_INDEXED, q6._2 AS M) |
| Index Scan |
| scan type: BY_GROUP |
| comparisons: [EQUALS promote(@c14 AS INT)] |
| Index |
| MAX_NUM_VALUE_UNIQUE_BY_2_AND_3 |
| Value Computation |
| MAP (q6._1 AS NUM_VALUE_3_INDEXED, q6._2 AS M) |
| Index Scan |
| scan type: BY_GROUP |
| comparisons: [EQUALS promote(@c14 AS INT)] |
| Index |
| MAX_NUM_VALUE_UNIQUE_BY_2_AND_3 |
| Value Computation |
| MAP (q6._1 AS NUM_VALUE_3_INDEXED, q6._2 AS M) |
| Index Scan |
| scan type: BY_GROUP |
| comparisons: [EQUALS promote(@c14 AS INT)] |
| Index |
| MAX_NUM_VALUE_UNIQUE_BY_2_AND_3 |
| Value Computation |
| MAP (q6._1 AS NUM_VALUE_3_INDEXED, q6._2 AS M) |
| Index Scan |
| scan type: BY_GROUP |
| comparisons: [EQUALS promote(@c14 AS INT)] |
| Index |
| MAX_NUM_VALUE_UNIQUE_BY_2_AND_3 |
| Value Computation |
| MAP (q6._1 AS NUM_VALUE_3_INDEXED, q6._2 AS M) |
| Index Scan |
| scan type: BY_GROUP |
| comparisons: [EQUALS promote(@c14 AS INT)] |
| Index |
| MAX_NUM_VALUE_UNIQUE_BY_2_AND_3 |
| Value Computation |
| MAP (q6._1 AS NUM_VALUE_3_INDEXED, q6._2 AS M) |
| Index Scan |
| scan type: BY_GROUP |
| comparisons: [EQUALS promote(@c14 AS INT)] |
| Index |
| MAX_NUM_VALUE_UNIQUE_BY_2_AND_3 |
| Value Computation |
| MAP (q6._1 AS NUM_VALUE_3_INDEXED, q6._2 AS M) |
| Index Scan |
| scan type: BY_GROUP |
| comparisons: [EQUALS promote(@c14 AS INT)] |
| Index |
| MAX_NUM_VALUE_UNIQUE_BY_2_AND_3 |
| Value Computation |
| MAP (q6._1 AS NUM_VALUE_3_INDEXED, q6._2 AS M) |
| Index Scan |
| scan type: BY_GROUP |
| comparisons: [EQUALS promote(@c14 AS INT)] |
| direction: reversed |
| Index |
| MAX_NUM_VALUE_UNIQUE_BY_2_AND_3 |
| Value Computation |
| MAP (q6._1 AS NUM_VALUE_3_INDEXED, q6._2 AS M) |
| Index Scan |
| scan type: BY_GROUP |
| comparisons: [EQUALS promote(@c14 AS INT), [LESS_THAN promote(@c24 AS INT)]] |
| Index |
| MAX_NUM_VALUE_UNIQUE_BY_2_AND_3 |
| Value Computation |
| MAP (q6._1 AS NUM_VALUE_3_INDEXED, q6._2 AS M) |
| Index Scan |
| scan type: BY_GROUP |
| comparisons: [EQUALS promote(@c14 AS INT), [LESS_THAN promote(@c24 AS INT)]] |
| Index |
| MAX_NUM_VALUE_UNIQUE_BY_2_AND_3 |
| Value Computation |
| MAP (q6._1 AS NUM_VALUE_3_INDEXED, q6._2 AS M) |
| Index Scan |
| scan type: BY_GROUP |
| comparisons: [EQUALS promote(@c14 AS INT), [LESS_THAN promote(@c24 AS INT)]] |
| direction: reversed |
| Index |
| MAX_NUM_VALUE_UNIQUE_BY_2_AND_3 |
| In Union |
| COMPARE BY (_.M, _.NUM_VALUE_2, _.NUM_VALUE_3_INDEXED) |
| Value Computation |
| MAP (q6._0 AS NUM_VALUE_2, q6._1 AS NUM_VALUE_3_INDEXED, q6._2 AS M) |
| Index Scan |
| scan type: BY_GROUP |
| comparisons: [EQUALS q57] |
| direction: reversed |
| Index |
| MAX_NUM_VALUE_UNIQUE_BY_2_AND_3 |
| Values |
| VALUES([__corr_q57 IN arrayDistinct(@c21)] |
| In Union |
| COMPARE BY (_.M, _.NUM_VALUE_2, _.NUM_VALUE_3_INDEXED) |
| Value Computation |
| MAP (q6._0 AS NUM_VALUE_2, q6._1 AS NUM_VALUE_3_INDEXED, q6._2 AS M) |
| Index Scan |
| scan type: BY_GROUP |
| comparisons: [EQUALS q57] |
| direction: reversed |
| Index |
| MAX_NUM_VALUE_UNIQUE_BY_2_AND_3 |
| Values |
| VALUES([__corr_q57 IN arrayDistinct(@c21)] |
| In Union |
| COMPARE BY (_.M, _.NUM_VALUE_2, _.NUM_VALUE_3_INDEXED) |
| Value Computation |
| MAP (q6._0 AS NUM_VALUE_2, q6._1 AS NUM_VALUE_3_INDEXED, q6._2 AS M) |
| Index Scan |
| scan type: BY_GROUP |
| comparisons: [EQUALS q57] |
| direction: reversed |
| Index |
| MAX_NUM_VALUE_UNIQUE_BY_2_AND_3 |
| Values |
| VALUES([__corr_q57 IN arrayDistinct(@c21)] |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING)] |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Predicate Filter |
| WHERE q2.NUM_VALUE_2 EQUALS promote(@c7 AS INT) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING)] |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Index Scan |
| comparisons: [[LESS_THAN promote(@c7 AS INT)]] |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Fetch Records |
| Predicate Filter |
| WHERE q74.STR_VALUE_INDEXED NOT_EQUALS promote(@c8 AS STRING) |
| Covering Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Index Scan |
| range: ((null), ∞> |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING), EQUALS promote(@c11 AS INT)] |
| Index |
| MULTI_INDEX |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING), EQUALS promote(@c11 AS INT)] |
| Index |
| MULTI_INDEX |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS STRING), EQUALS promote(@c19 AS INT), EQUALS promote(@c15 AS INT)] |
| Index |
| MULTI_INDEX |
| Value Computation |
| MAP (q10._1 AS NUM_VALUE_3_INDEXED, q10._2 AS TOTAL) |
| Index Scan |
| scan type: BY_GROUP |
| comparisons: [EQUALS @c34] |
| Index |
| REPEATED_GROUP_SUM |
| Value Computation |
| MAP (q10._1 AS NUM_VALUE_3_INDEXED, q10._2 AS TOTAL) |
| Index Scan |
| scan type: BY_GROUP |
| comparisons: [EQUALS @c43] |
| Index |
| REPEATED_GROUP_SUM |
| Index Scan |
| comparisons: [EQUALS @c20] |
| Index |
| REPEATER_INDEX |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Scan |
| comparisons: [IS MY_SIMPLE_RECORD, [LESS_THAN promote(@c7 AS LONG)]] |
| Primary Storage |
| record types: [MY_OTHER_RECORD, MY_SIMPLE_RECORD] |
| Scan |
| comparisons: [IS MY_SIMPLE_RECORD, [GREATER_THAN promote(@c7 AS LONG) && LESS_THAN promote(@c11 AS LONG)]] |
| Primary Storage |
| record types: [MY_OTHER_RECORD, MY_SIMPLE_RECORD] |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Nested Loop Join |
| RECURSIVE derived(q14, q16) |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Value Computation |
| MAP (q219.ID AS ID, q219.PARENT AS PARENT) |
| Index |
| PARENT_ID_IDX |
| Covering Index Scan |
| comparisons: [EQUALS q8.ID] |
| Index |
| PARENT_ID_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Nested Loop Join |
| RECURSIVE derived(q14, q16) |
| Value Computation |
| MAP (q219.ID AS ID, q219.PARENT AS PARENT) |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Covering Index Scan |
| comparisons: [EQUALS q8.ID] |
| Index |
| PARENT_ID_IDX |
| Index |
| PARENT_ID_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Nested Loop Join |
| RECURSIVE derived(q14, q16) |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Value Computation |
| MAP (q219.ID AS ID, q219.PARENT AS PARENT) |
| Index |
| PARENT_ID_IDX |
| Covering Index Scan |
| comparisons: [EQUALS q8.ID] |
| Index |
| PARENT_ID_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Recursive Union |
| Modification |
| TempTableInsert |
| Modification |
| TempTableInsert |
| Nested Loop Join |
| FLATMAP (q10.ID AS ID, q10.PARENT AS PARENT) |
| Temporary Buffer |
| DESCENDANTSforInsert |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Temporary Buffer |
| DESCENDANTSforInsert |
| Temp Table Scan |
| DESCENDANTSforScan |
| Index Scan |
| comparisons: [EQUALS q8.ID] |
| Index |
| PARENT_ID_IDX |
| Index |
| PARENT_ID_IDX |
| Value Computation |
| MAP (q20.ID AS ID) |
| Recursive Union |
| Modification |
| TempTableInsert |
| Modification |
| TempTableInsert |
| Value Computation |
| MAP (q2.ID AS ID) |
| Temporary Buffer |
| MULTIPLESforInsert |
| Value Computation |
| MAP (q43.ID * @c18 AS ID) |
| Temporary Buffer |
| MULTIPLESforInsert |
| Type Filter |
| WHERE record IS [SEED] |
| Predicate Filter |
| WHERE q8.ID * @c18 LESS_THAN promote(@c29 AS LONG) |
| Scan |
| range: <-∞, ∞> |
| Temp Table Scan |
| MULTIPLESforScan |
| Primary Storage |
| record types: [SEED] |
| Value Computation |
| MAP (q20.ID AS ID) |
| Recursive Union |
| Modification |
| TempTableInsert |
| Modification |
| TempTableInsert |
| Value Computation |
| MAP (q2.ID AS ID) |
| Temporary Buffer |
| MULTIPLESforInsert |
| Value Computation |
| MAP (q43.ID * @c18 AS ID) |
| Temporary Buffer |
| MULTIPLESforInsert |
| Type Filter |
| WHERE record IS [SEED] |
| Predicate Filter |
| WHERE q8.ID * @c18 LESS_THAN promote(@c29 AS LONG) |
| Scan |
| range: <-∞, ∞> |
| Temp Table Scan |
| MULTIPLESforScan |
| Primary Storage |
| record types: [SEED] |
| Value Computation |
| MAP (q20.ID AS ID) |
| Recursive Union |
| Modification |
| TempTableInsert |
| Modification |
| TempTableInsert |
| Temporary Buffer |
| MULTIPLESforInsert |
| Value Computation |
| MAP (q2.ID AS ID) |
| Value Computation |
| MAP (q43.ID * @c18 AS ID) |
| Temporary Buffer |
| MULTIPLESforInsert |
| Type Filter |
| WHERE record IS [SEED] |
| Predicate Filter |
| WHERE q8.ID * @c18 LESS_THAN promote(@c29 AS LONG) |
| Scan |
| range: <-∞, ∞> |
| Temp Table Scan |
| MULTIPLESforScan |
| Primary Storage |
| record types: [SEED] |
| Value Computation |
| MAP (q20.ID AS ID) |
| Recursive Union |
| Modification |
| TempTableInsert |
| Modification |
| TempTableInsert |
| Value Computation |
| MAP (q43.ID * @c18 AS ID) |
| Temporary Buffer |
| MULTIPLESforInsert |
| Value Computation |
| MAP (q2.ID AS ID) |
| Temporary Buffer |
| MULTIPLESforInsert |
| Predicate Filter |
| WHERE q8.ID * @c18 LESS_THAN promote(@c29 AS LONG) |
| Type Filter |
| WHERE record IS [SEED] |
| Temp Table Scan |
| MULTIPLESforScan |
| Scan |
| range: <-∞, ∞> |
| Primary Storage |
| record types: [SEED] |
| Value Computation |
| MAP (q20.ID AS ID) |
| Recursive Union |
| Modification |
| TempTableInsert |
| Modification |
| TempTableInsert |
| Value Computation |
| MAP (q2.ID AS ID) |
| Temporary Buffer |
| MULTIPLESforInsert |
| Temporary Buffer |
| MULTIPLESforInsert |
| Value Computation |
| MAP (q43.ID * @c18 AS ID) |
| Type Filter |
| WHERE record IS [SEED] |
| Predicate Filter |
| WHERE q8.ID * @c18 LESS_THAN promote(@c29 AS LONG) |
| Scan |
| range: <-∞, ∞> |
| Temp Table Scan |
| MULTIPLESforScan |
| Primary Storage |
| record types: [SEED] |
| Value Computation |
| MAP (q20.ID AS ID) |
| Recursive Union |
| Modification |
| TempTableInsert |
| Modification |
| TempTableInsert |
| Value Computation |
| MAP (q2.ID AS ID) |
| Temporary Buffer |
| MULTIPLESforInsert |
| Temporary Buffer |
| MULTIPLESforInsert |
| Value Computation |
| MAP (q43.ID * @c18 AS ID) |
| Type Filter |
| WHERE record IS [SEED] |
| Predicate Filter |
| WHERE q8.ID * @c18 LESS_THAN promote(@c29 AS LONG) |
| Scan |
| range: <-∞, ∞> |
| Temp Table Scan |
| MULTIPLESforScan |
| Primary Storage |
| record types: [SEED] |
| Value Computation |
| MAP (q20.ID AS ID) |
| Recursive Union |
| Modification |
| TempTableInsert |
| Modification |
| TempTableInsert |
| Value Computation |
| MAP (q43.ID * @c22 AS ID) |
| Temporary Buffer |
| MULTIPLESforInsert |
| Temporary Buffer |
| MULTIPLESforInsert |
| Type Filter |
| WHERE record IS [SEED] |
| Predicate Filter |
| WHERE q8.ID * @c22 LESS_THAN promote(@c12 AS LONG) |
| Scan |
| comparisons: [[GREATER_THAN promote(@c12 AS LONG)]] |
| Temp Table Scan |
| MULTIPLESforScan |
| Primary Storage |
| record types: [SEED] |
| Value Computation |
| MAP (q20.ID AS ID) |
| Recursive Union |
| Modification |
| TempTableInsert |
| Modification |
| TempTableInsert |
| Temporary Buffer |
| MULTIPLESforInsert |
| Type Filter |
| WHERE record IS [SEED] |
| Temporary Buffer |
| MULTIPLESforInsert |
| Value Computation |
| MAP (q43.ID * @c22 AS ID) |
| Scan |
| comparisons: [[GREATER_THAN promote(@c12 AS LONG)]] |
| Predicate Filter |
| WHERE q8.ID * @c22 LESS_THAN promote(@c12 AS LONG) |
| Primary Storage |
| record types: [SEED] |
| Temp Table Scan |
| MULTIPLESforScan |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Nested Loop Join |
| RECURSIVE derived(q14, q16) |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Value Computation |
| MAP (q233.ID AS ID, q233.PARENT AS PARENT) |
| Index |
| ID_PARENT_IDX |
| Covering Index Scan |
| comparisons: [EQUALS q8.PARENT] |
| Index |
| ID_PARENT_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Nested Loop Join |
| RECURSIVE derived(q14, q16) |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Value Computation |
| MAP (q233.ID AS ID, q233.PARENT AS PARENT) |
| Index |
| ID_PARENT_IDX |
| Covering Index Scan |
| comparisons: [EQUALS q8.PARENT] |
| Index |
| ID_PARENT_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Recursive Union |
| Modification |
| TempTableInsert |
| Modification |
| TempTableInsert |
| Temporary Buffer |
| ANCESTORSforInsert |
| Nested Loop Join |
| FLATMAP (q10.ID AS ID, q10.PARENT AS PARENT) |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Temporary Buffer |
| ANCESTORSforInsert |
| Index Scan |
| comparisons: [EQUALS q8.PARENT] |
| Temp Table Scan |
| ANCESTORSforScan |
| Index |
| ID_PARENT_IDX |
| Index |
| ID_PARENT_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Nested Loop Join |
| RECURSIVE derived(q14, q16) |
| Value Computation |
| MAP (q452.ID AS ID, q452.PARENT AS PARENT) |
| Nested Loop Join |
| Covering Index Scan |
| comparisons: [EQUALS q8.PARENT] |
| Table Function |
| EXPLODE(arrayDistinct(promote(@c14 AS ARRAY(LONG)))) |
| Index Scan |
| comparisons: [EQUALS q175] |
| Index |
| ID_PARENT_IDX |
| Index |
| ID_PARENT_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Nested Loop Join |
| RECURSIVE derived(q14, q16) |
| Nested Loop Join |
| Value Computation |
| MAP (q452.ID AS ID, q452.PARENT AS PARENT) |
| Table Function |
| EXPLODE(arrayDistinct(promote(@c14 AS ARRAY(LONG)))) |
| Index Scan |
| comparisons: [EQUALS q175] |
| Covering Index Scan |
| comparisons: [EQUALS q8.PARENT] |
| Index |
| ID_PARENT_IDX |
| Index |
| ID_PARENT_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Recursive Union |
| Modification |
| TempTableInsert |
| Modification |
| TempTableInsert |
| Nested Loop Join |
| Temporary Buffer |
| ANCESTORSforInsert |
| Nested Loop Join |
| FLATMAP (q10.ID AS ID, q10.PARENT AS PARENT) |
| Temporary Buffer |
| ANCESTORSforInsert |
| Index Scan |
| comparisons: [EQUALS q175] |
| Table Function |
| EXPLODE(arrayDistinct(promote(@c14 AS ARRAY(LONG)))) |
| Index Scan |
| comparisons: [EQUALS q8.PARENT] |
| Temp Table Scan |
| ANCESTORSforScan |
| Index |
| ID_PARENT_IDX |
| Index |
| ID_PARENT_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Nested Loop Join |
| RECURSIVE derived(q14, q16) |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Value Computation |
| MAP (q233.ID AS ID, q233.PARENT AS PARENT) |
| Index |
| ID_PARENT_IDX |
| Covering Index Scan |
| comparisons: [EQUALS q8.PARENT] |
| Index |
| ID_PARENT_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Nested Loop Join |
| RECURSIVE derived(q14, q16) |
| Value Computation |
| MAP (q233.ID AS ID, q233.PARENT AS PARENT) |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Covering Index Scan |
| comparisons: [EQUALS q8.PARENT] |
| Index |
| ID_PARENT_IDX |
| Index |
| ID_PARENT_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Recursive Union |
| Modification |
| TempTableInsert |
| Modification |
| TempTableInsert |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Temporary Buffer |
| ANCESTORSforInsert |
| Nested Loop Join |
| FLATMAP (q10.ID AS ID, q10.PARENT AS PARENT) |
| Temporary Buffer |
| ANCESTORSforInsert |
| Index |
| ID_PARENT_IDX |
| Temp Table Scan |
| ANCESTORSforScan |
| Index Scan |
| comparisons: [EQUALS q8.PARENT] |
| Index |
| ID_PARENT_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Nested Loop Join |
| RECURSIVE derived(q14, q16) |
| Value Computation |
| MAP (q251.ID AS ID, q251.PARENT AS PARENT) |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Predicate Filter |
| WHERE q8.ID EQUALS q245.PARENT |
| Index |
| ID_PARENT_IDX |
| Covering Index Scan |
| range: <-∞, ∞> |
| Index |
| ID_PARENT_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Nested Loop Join |
| RECURSIVE derived(q14, q16) |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Value Computation |
| MAP (q251.ID AS ID, q251.PARENT AS PARENT) |
| Index |
| ID_PARENT_IDX |
| Predicate Filter |
| WHERE q8.ID EQUALS q245.PARENT |
| Covering Index Scan |
| range: <-∞, ∞> |
| Index |
| ID_PARENT_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Nested Loop Join |
| RECURSIVE derived(q14, q16) |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Value Computation |
| MAP (q251.ID AS ID, q251.PARENT AS PARENT) |
| Index |
| ID_PARENT_IDX |
| Predicate Filter |
| WHERE q8.ID EQUALS q245.PARENT |
| Covering Index Scan |
| range: <-∞, ∞> |
| Index |
| ID_PARENT_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Recursive Union |
| Modification |
| TempTableInsert |
| Modification |
| TempTableInsert |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Temporary Buffer |
| DESCENDANTSforInsert |
| Temporary Buffer |
| DESCENDANTSforInsert |
| Nested Loop Join |
| FLATMAP (q10.ID AS ID, q10.PARENT AS PARENT) |
| Index |
| ID_PARENT_IDX |
| Predicate Filter |
| WHERE q8.ID EQUALS q10.PARENT |
| Index Scan |
| range: <-∞, ∞> |
| Temp Table Scan |
| DESCENDANTSforScan |
| Index |
| PARENT_ID_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Nested Loop Join |
| RECURSIVE derived(q14, q16) |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Value Computation |
| MAP (q251.ID AS ID, q251.PARENT AS PARENT) |
| Index |
| ID_PARENT_IDX |
| Predicate Filter |
| WHERE q8.ID EQUALS q245.PARENT |
| Covering Index Scan |
| range: <-∞, ∞> |
| Index |
| ID_PARENT_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Nested Loop Join |
| RECURSIVE derived(q14, q16) |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Value Computation |
| MAP (q251.ID AS ID, q251.PARENT AS PARENT) |
| Index |
| ID_PARENT_IDX |
| Predicate Filter |
| WHERE q8.ID EQUALS q245.PARENT |
| Covering Index Scan |
| range: <-∞, ∞> |
| Index |
| ID_PARENT_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Nested Loop Join |
| RECURSIVE derived(q14, q16) |
| Value Computation |
| MAP (q251.ID AS ID, q251.PARENT AS PARENT) |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Predicate Filter |
| WHERE q8.ID EQUALS q245.PARENT |
| Index |
| ID_PARENT_IDX |
| Covering Index Scan |
| range: <-∞, ∞> |
| Index |
| ID_PARENT_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Recursive Union |
| Modification |
| TempTableInsert |
| Modification |
| TempTableInsert |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Temporary Buffer |
| DESCENDANTSforInsert |
| Nested Loop Join |
| FLATMAP (q10.ID AS ID, q10.PARENT AS PARENT) |
| Temporary Buffer |
| DESCENDANTSforInsert |
| Index |
| ID_PARENT_IDX |
| Index Scan |
| range: <-∞, ∞> |
| Predicate Filter |
| WHERE q8.ID EQUALS q10.PARENT |
| Index |
| PARENT_ID_IDX |
| Temp Table Scan |
| DESCENDANTSforScan |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Nested Loop Join |
| RECURSIVE derived(q14, q16) |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Value Computation |
| MAP (q233.ID AS ID, q233.PARENT AS PARENT) |
| Index |
| ID_PARENT_IDX |
| Covering Index Scan |
| comparisons: [EQUALS q8.PARENT] |
| Index |
| ID_PARENT_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Nested Loop Join |
| RECURSIVE derived(q14, q16) |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Value Computation |
| MAP (q233.ID AS ID, q233.PARENT AS PARENT) |
| Index |
| ID_PARENT_IDX |
| Covering Index Scan |
| comparisons: [EQUALS q8.PARENT] |
| Index |
| ID_PARENT_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Recursive Union |
| Modification |
| TempTableInsert |
| Modification |
| TempTableInsert |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Temporary Buffer |
| ANCESTORSforInsert |
| Temporary Buffer |
| ANCESTORSforInsert |
| Nested Loop Join |
| FLATMAP (q10.ID AS ID, q10.PARENT AS PARENT) |
| Index |
| ID_PARENT_IDX |
| Temp Table Scan |
| ANCESTORSforScan |
| Index Scan |
| comparisons: [EQUALS q8.PARENT] |
| Index |
| ID_PARENT_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Nested Loop Join |
| RECURSIVE derived(q14, q16) |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Value Computation |
| MAP (q235.ID AS ID, q235.PARENT AS PARENT) |
| Index |
| ID_PARENT_IDX |
| Covering Index Scan |
| comparisons: [EQUALS q8.ID] |
| Index |
| PARENT_ID_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Nested Loop Join |
| RECURSIVE derived(q14, q16) |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Value Computation |
| MAP (q235.ID AS ID, q235.PARENT AS PARENT) |
| Index |
| ID_PARENT_IDX |
| Covering Index Scan |
| comparisons: [EQUALS q8.ID] |
| Index |
| PARENT_ID_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Nested Loop Join |
| RECURSIVE derived(q14, q16) |
| Value Computation |
| MAP (q235.ID AS ID, q235.PARENT AS PARENT) |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Covering Index Scan |
| comparisons: [EQUALS q8.ID] |
| Index |
| ID_PARENT_IDX |
| Index |
| PARENT_ID_IDX |
| Value Computation |
| MAP (q20.ID AS ID, q20.PARENT AS PARENT) |
| Recursive Union |
| Modification |
| TempTableInsert |
| Modification |
| TempTableInsert |
| Index Scan |
| comparisons: [EQUALS promote(@c14 AS LONG)] |
| Temporary Buffer |
| DESCENDANTSforInsert |
| Nested Loop Join |
| FLATMAP (q10.ID AS ID, q10.PARENT AS PARENT) |
| Temporary Buffer |
| DESCENDANTSforInsert |
| Index |
| ID_PARENT_IDX |
| Temp Table Scan |
| DESCENDANTSforScan |
| Index Scan |
| comparisons: [EQUALS q8.ID] |
| Index |
| PARENT_ID_IDX |
| Value Computation |
| MAP (q2.REC_NO AS REC_NO) |
| Type Filter |
| WHERE record IS [MY_SIMPLE_RECORD] |
| Scan |
| range: <-∞, ∞> |
| Primary Storage |
| record types: [MY_SIMPLE_RECORD] |
| Predicate Filter |
| WHERE q2.HEADER.PATH LIKE @c9 ESCAPE 'null' |
| Type Filter |
| WHERE record IS [MY_RECORD] |
| Scan |
| range: <-∞, ∞> |
| Primary Storage |
| record types: [MY_RECORD] |
| Predicate Filter |
| WHERE q2.NUM_VALUE_2 EQUALS promote(@c7 AS INT) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Index Scan |
| comparisons: [EQUALS promote(@c11 AS INT), EQUALS @c11] |
| Index |
| PREFIX_REPEATED |
| Index Scan |
| comparisons: [EQUALS @c20] |
| Index |
| REPEATER_FANOUT |
| Predicate Filter |
| WHERE q2.STR_VALUE_INDEXED EQUALS promote(@c7 AS STRING) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_UNIQUE |
| Predicate Filter |
| WHERE q2.NUM_VALUE_3_INDEXED GREATER_THAN_OR_EQUALS promote(@c8 AS INT) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Fetch Records |
| Predicate Filter |
| WHERE q70.NUM_VALUE_2 EQUALS promote(@c7 AS INT) |
| Covering Index Scan |
| range: <-∞, ∞> |
| direction: reversed |
| Index |
| MULTI_INDEX |
| Fetch Records |
| Predicate Filter |
| WHERE q97.NUM_VALUE_2 EQUALS promote(@c7 AS INT) |
| Covering Index Scan |
| range: <-∞, ∞> |
| Index |
| MULTI_INDEX |
| Value Computation |
| MAP (q78.NAME AS NAMENEW, q78.REST_NO AS RESTNONEW) |
| Predicate Filter |
| WHERE q74.REST_NO GREATER_THAN promote(@c18 AS LONG) |
| Covering Index Scan |
| range: <-∞, ∞> |
| Index |
| RESTAURANT_RECORD_NAME |
| Nested Loop Join |
| FLATMAP (q10.NAME AS REVIEWERNAME, q4.RATING AS REVIEWRATING) |
| Nested Loop Join |
| FLATMAP q4 |
| Index Scan |
| comparisons: [EQUALS promote(@c37 AS STRING)] |
| Value Computation |
| EXPLODE q2.REVIEWS |
| Index |
| RESTAURANT_RECORD_NAME |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| RESTAURANT_REVIEWER_NAME |
| Nested Loop Join |
| FLATMAP (q212._0.NAME AS REVIEWERNAME, q212._1.RATING AS REVIEWRATING) |
| Index Scan |
| comparisons: [EQUALS promote(@c37 AS STRING)] |
| Index |
| RESTAURANT_RECORD_NAME |
| Nested Loop Join |
| FLATMAP q216 |
| Value Computation |
| EXPLODE q2.REVIEWS |
| Value Computation |
| MAP (q10 AS _0, q4 AS _1) |
| Type Filter |
| WHERE record IS [RESTAURANT_REVIEWER] |
| Scan |
| comparisons: [EQUALS q4.REVIEWER] |
| Primary Storage |
| record types: [RESTAURANT_REVIEWER, RESTAURANT_RECORD] |
| Nested Loop Join |
| FLATMAP (q881._0.NAME AS REVIEWER1NAME, q881._1.NAME AS REVIEWER2NAME, q8.NAME AS RESTAURANTNAME, q8.REST_NO AS RESTAURANTNO) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| RESTAURANT_RECORD_NAME |
| Nested Loop Join |
| FLATMAP (q2 AS _0, q4 AS _1) |
| Index Scan |
| range: <-∞, ∞> |
| Nested Loop Join |
| FLATMAP q2 |
| Index |
| RESTAURANT_REVIEWER_NAME |
| Index Scan |
| range: <-∞, ∞> |
| Nested Loop Join |
| FLATMAP (1 AS _0) |
| Index |
| RESTAURANT_REVIEWER_NAME |
| Predicate Filter |
| WHERE q14 NOT_NULL |
| Predicate Filter |
| WHERE q20 NOT_NULL |
| Value Computation |
| FIRST $q14 OR NULL |
| Value Computation |
| FIRST $q20 OR NULL |
| Value Computation |
| MAP (@c40 AS _0) |
| Value Computation |
| MAP (@c40 AS _0) |
| Predicate Filter |
| WHERE q10.REVIEWER EQUALS q2.ID |
| Predicate Filter |
| WHERE q16.REVIEWER EQUALS q4.ID |
| Value Computation |
| EXPLODE q8.REVIEWS |
| Value Computation |
| EXPLODE q8.REVIEWS |
| Nested Loop Join |
| FLATMAP (q2.REST_NO AS REST_NO) |
| Nested Loop Join |
| Table Function |
| EXPLODE(arrayDistinct(@c13)) |
| Index Scan |
| comparisons: [EQUALS q137] |
| Index |
| RESTAURANT_RECORD_NAME |
| Value Computation |
| MAP (1 AS _0) |
| Predicate Filter |
| WHERE q8 NOT_NULL |
| Value Computation |
| FIRST $q8 OR NULL |
| Nested Loop Join |
| FLATMAP (@c20 AS _0) |
| Predicate Filter |
| WHERE q4.VALUE EQUALS q84 |
| Value Computation |
| EXPLODE arrayDistinct(@c32) |
| Value Computation |
| EXPLODE q2.TAGS |
| Value Computation |
| MAP (q2.NAME AS NAMENEW, q2.REST_NO AS RESTNONEW) |
| Type Filter |
| WHERE record IS [RESTAURANT_RECORD] |
| Scan |
| comparisons: [[GREATER_THAN promote(@c13 AS LONG)]] |
| Primary Storage |
| record types: [RESTAURANT_REVIEWER, RESTAURANT_RECORD] |
| Value Computation |
| MAP (q2.NAME AS NAMENEW, q2.REST_NO AS RESTNONEW) |
| Type Filter |
| WHERE record IS [RESTAURANT_RECORD] |
| Scan |
| comparisons: [[GREATER_THAN promote(@c13 AS LONG)]] |
| direction: reversed |
| Primary Storage |
| record types: [RESTAURANT_REVIEWER, RESTAURANT_RECORD] |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_RECORD_HEADER_NUM |
| Index Scan |
| comparisons: [[LESS_THAN promote(@c9 AS INT)]] |
| Index |
| MY_RECORD_HEADER_NUM |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS INT)] |
| Index |
| MY_RECORD_HEADER_NUM |
| Index Scan |
| comparisons: [IS_NULL, [GREATER_THAN promote(@c13 AS STRING)]] |
| Index |
| MY_RECORD_HEADER_NUM |
| Fetch Records |
| Predicate Filter |
| WHERE q32.HEADER.REC_NO GREATER_THAN promote(@c9 AS LONG) |
| Covering Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_RECORD_HEADER_NUM |
| Fetch Records |
| Predicate Filter |
| WHERE q43.HEADER.REC_NO GREATER_THAN promote(@c9 AS LONG) |
| Covering Index Scan |
| comparisons: [[LESS_THAN promote(@c15 AS INT)]] |
| Index |
| MY_RECORD_HEADER_NUM |
| Type Filter |
| WHERE record IS [MY_SIMPLE_RECORD] |
| Scan |
| range: <-∞, ∞> |
| Primary Storage |
| record types: [MY_SIMPLE_RECORD] |
| Type Filter |
| WHERE record IS [MY_SIMPLE_RECORD] |
| Scan |
| range: <-∞, ∞> |
| direction: reversed |
| Primary Storage |
| record types: [MY_SIMPLE_RECORD] |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_UNIQUE |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_UNIQUE |
| Index Scan |
| range: <-∞, ∞> |
| direction: reversed |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_UNIQUE |
| Predicate Filter |
| WHERE q2.STR_VALUE_INDEXED EQUALS promote(@c7 AS STRING) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_NUM_VALUE_3_INDEXED |
| Index Scan |
| range: <-∞, ∞> |
| direction: reversed |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Value Computation |
| MAP (q140.NUM_VALUE_2 AS NUM_VALUE_2) |
| Covering Index Scan |
| comparisons: [[GREATER_THAN promote(@c7 AS INT)]] |
| Index |
| SPARSE_INDEX |
| Value Computation |
| MAP (q88.NUM_VALUE_2 AS NUM_VALUE_2) |
| Predicate Filter |
| WHERE q2.NUM_VALUE_2 GREATER_THAN promote(@c7 AS INT) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Value Computation |
| MAP (q140.NUM_VALUE_2 AS NUM_VALUE_2) |
| Covering Index Scan |
| comparisons: [[GREATER_THAN promote(@c7 AS INT)]] |
| Index |
| SPARSE_INDEX |
| Value Computation |
| MAP (q2.__ROW_VERSION AS VERSION, q2.REC_NO AS REC_NO) |
| Type Filter |
| WHERE record IS [MY_LONG_RECORD] |
| Scan |
| range: <-∞, ∞> |
| Primary Storage |
| record types: [MY_LONG_RECORD] |
| Value Computation |
| MAP (q27.__ROW_VERSION AS VERSION, q27.REC_NO AS REC_NO) |
| Predicate Filter |
| WHERE q2.NUM_VALUE_2 EQUALS promote(@c11 AS INT) |
| Type Filter |
| WHERE record IS [MY_OTHER_RECORD] |
| Scan |
| range: <-∞, ∞> |
| Primary Storage |
| record types: [MY_OTHER_RECORD] |
| Value Computation |
| MAP (q6.REC_NO AS REC_NO, q6.STR_VALUE_INDEXED AS STR_VALUE_INDEXED, q6.NUM_VALUE_UNIQUE AS NUM_VALUE_UNIQUE, q6.NUM_VALUE_2 AS NUM_VALUE_2, q6.NUM_VALUE_3_INDEXED AS NUM_VALUE_3_INDEXED, q6.REPEATER AS REPEATER) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| VERSION_INDEX |
| Value Computation |
| MAP (q2.REC_NO AS REC_NO, q2.__ROW_VERSION AS __ROW_VERSION) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| VERSION_INDEX |
| Value Computation |
| MAP (q6.REC_NO AS REC_NO, q6.STR_VALUE_INDEXED AS STR_VALUE_INDEXED, q6.NUM_VALUE_UNIQUE AS NUM_VALUE_UNIQUE, q6.NUM_VALUE_2 AS NUM_VALUE_2, q6.NUM_VALUE_3_INDEXED AS NUM_VALUE_3_INDEXED, q6.REPEATER AS REPEATER) |
| Index Scan |
| comparisons: [EQUALS promote(@c7 AS INT)] |
| Index |
| VERSION_BY_NUM_VALUE_2_INDEX |
| Value Computation |
| MAP (q2.REC_NO AS REC_NO, q2.__ROW_VERSION AS __ROW_VERSION) |
| Index Scan |
| comparisons: [EQUALS promote(@c9 AS STRING)] |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |
| Value Computation |
| MAP (q2.__ROW_VERSION AS VERSION, q2.REC_NO AS NUMBER) |
| Index Scan |
| range: <-∞, ∞> |
| Index |
| VERSION_INDEX |
| Value Computation |
| MAP (q2.__ROW_VERSION AS VERSION, q2.REC_NO AS REC_NO) |
| Index Scan |
| comparisons: [EQUALS promote(@c11 AS STRING)] |
| Index |
| MY_SIMPLE_RECORD_STR_VALUE_INDEXED |