diff --git a/.editorconfig b/.editorconfig index ea43016b4b70..d7e51acbd562 100644 --- a/.editorconfig +++ b/.editorconfig @@ -48,3 +48,6 @@ ij_java_ternary_operation_signs_on_next_line = true ij_java_use_single_class_imports = true ij_java_wrap_long_lines = true ij_java_align_multiline_parameters = false + +[*.xml] +indent_size = 2 diff --git a/core/src/test/java/org/apache/calcite/test/DiffRepository.java b/core/src/test/java/org/apache/calcite/test/DiffRepository.java index 9eaabc3729d7..65c2529477a6 100644 --- a/core/src/test/java/org/apache/calcite/test/DiffRepository.java +++ b/core/src/test/java/org/apache/calcite/test/DiffRepository.java @@ -25,6 +25,7 @@ import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; +import com.google.common.collect.ImmutableSortedSet; import org.junit.jupiter.api.Assertions; import org.opentest4j.AssertionFailedError; @@ -42,11 +43,12 @@ import java.io.IOException; import java.io.Writer; import java.net.URL; +import java.util.AbstractList; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; import java.util.Objects; -import java.util.Set; +import java.util.SortedMap; +import java.util.TreeMap; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; @@ -171,8 +173,10 @@ public class DiffRepository { private final DiffRepository baseRepository; private final int indent; + private final ImmutableSortedSet outOfOrderTests; private Document doc; private final Element root; + private final URL refFile; private final File logFile; private final Filter filter; @@ -183,17 +187,17 @@ public class DiffRepository { * @param logFile Log file * @param baseRepository Parent repository or null * @param filter Filter or null + * @param indent Indentation of XML file */ - private DiffRepository( - URL refFile, - File logFile, - DiffRepository baseRepository, - Filter filter) { + private DiffRepository(URL refFile, File logFile, + DiffRepository baseRepository, Filter filter, int indent) { this.baseRepository = baseRepository; this.filter = filter; + this.indent = indent; if (refFile == null) { throw new IllegalArgumentException("url must not be null"); } + this.refFile = refFile; this.logFile = logFile; // Load the document. @@ -213,13 +217,10 @@ private DiffRepository( flushDoc(); } this.root = doc.getDocumentElement(); - validate(this.root); + outOfOrderTests = validate(this.root); } catch (ParserConfigurationException | SAXException e) { throw new RuntimeException("error while creating xml parser", e); } - indent = logFile.getPath().contains("RelOptRulesTest") - || logFile.getPath().contains("SqlToRelConverterTest") - || logFile.getPath().contains("SqlLimitsTest") ? 4 : 2; } //~ Methods ---------------------------------------------------------------- @@ -373,6 +374,13 @@ private synchronized Element getTestCaseElement( + "test case in the base repository, but does " + "not specify 'overrides=true'"); } + if (outOfOrderTests.contains(testCaseName)) { + flushDoc(); + throw new IllegalArgumentException("TestCase '" + testCaseName + + "' is out of order in the reference file: " + + Sources.of(refFile).file() + "\n" + + "To fix, copy the generated log file: " + logFile + "\n"); + } return testCase; } if (elements != null) { @@ -530,26 +538,48 @@ private void flushDoc() { } } - /** Validates the root element. */ - private static void validate(Element root) { + /** Validates the root element. + * + *

Returns the set of test names that are out of order in the reference + * file (empty if the reference file is fully sorted). */ + private static ImmutableSortedSet validate(Element root) { if (!root.getNodeName().equals(ROOT_TAG)) { throw new RuntimeException("expected root element of type '" + ROOT_TAG + "', but found '" + root.getNodeName() + "'"); } - // Make sure that there are no duplicate test cases. - final Set testCases = new HashSet<>(); + // Make sure that there are no duplicate test cases, and count how many + // tests are out of order. + final SortedMap testCases = new TreeMap<>(); final NodeList childNodes = root.getChildNodes(); + final List outOfOrderNames = new ArrayList<>(); + String previousName = null; for (int i = 0; i < childNodes.getLength(); i++) { Node child = childNodes.item(i); if (child.getNodeName().equals(TEST_CASE_TAG)) { Element testCase = (Element) child; final String name = testCase.getAttribute(TEST_CASE_NAME_ATTR); - if (!testCases.add(name)) { + if (testCases.put(name, testCase) != null) { throw new RuntimeException("TestCase '" + name + "' is duplicate"); } + if (previousName != null + && previousName.compareTo(name) > 0) { + outOfOrderNames.add(name); + } + previousName = name; + } + } + + // If any nodes were out of order, rebuild the document in sorted order. + if (!outOfOrderNames.isEmpty()) { + for (Node testCase : testCases.values()) { + root.removeChild(testCase); + } + for (Node testCase : testCases.values()) { + root.appendChild(testCase); } } + return ImmutableSortedSet.copyOf(outOfOrderNames); } /** @@ -629,9 +659,6 @@ private static void writeNode(Node node, XmlOutput out) { Node child = childNodes.item(i); writeNode(child, out); } - - // writeNode(((Document) node).getDocumentElement(), - // out); break; case Node.ELEMENT_NODE: @@ -719,20 +746,19 @@ public static DiffRepository lookup(Class clazz) { return lookup(clazz, null); } - /** - * Finds the repository instance for a given class and inheriting from - * a given repository. - * - * @param clazz Test case class - * @param baseRepository Base class of test class - * @return The diff repository shared between test cases in this class. - */ + @Deprecated // to be removed before 1.28 public static DiffRepository lookup( Class clazz, DiffRepository baseRepository) { return lookup(clazz, baseRepository, null); } + @Deprecated // to be removed before 1.28 + public static DiffRepository lookup(Class clazz, + DiffRepository baseRepository, Filter filter) { + return lookup(clazz, baseRepository, filter, 2); + } + /** * Finds the repository instance for a given class. * @@ -756,12 +782,13 @@ public static DiffRepository lookup( * @param clazz Test case class * @param baseRepository Base repository * @param filter Filters each string returned by the repository - * @return The diff repository shared between test cases in this class. + * @param indent Indent of the XML file (usually 2) + * + * @return The diff repository shared between test cases in this class */ public static DiffRepository lookup(Class clazz, - DiffRepository baseRepository, - Filter filter) { - final Key key = new Key(clazz, baseRepository, filter); + DiffRepository baseRepository, Filter filter, int indent) { + final Key key = new Key(clazz, baseRepository, filter, indent); return REPOSITORY_CACHE.getUnchecked(key); } @@ -792,11 +819,14 @@ private static class Key { private final Class clazz; private final DiffRepository baseRepository; private final Filter filter; + private final int indent; - Key(Class clazz, DiffRepository baseRepository, Filter filter) { + Key(Class clazz, DiffRepository baseRepository, Filter filter, + int indent) { this.clazz = Objects.requireNonNull(clazz, "clazz"); this.baseRepository = baseRepository; this.filter = filter; + this.indent = indent; } @Override public int hashCode() { @@ -817,7 +847,20 @@ DiffRepository toRepo() { final String logFilePath = refFilePath.replace(".xml", "_actual.xml"); final File logFile = new File(logFilePath); assert !refFilePath.equals(logFile.getAbsolutePath()); - return new DiffRepository(refFile, logFile, baseRepository, filter); + return new DiffRepository(refFile, logFile, baseRepository, filter, + indent); } } + + private static Iterable iterate(NodeList nodeList) { + return new AbstractList() { + @Override public Node get(int index) { + return nodeList.item(index); + } + + @Override public int size() { + return nodeList.getLength(); + } + }; + } } diff --git a/core/src/test/java/org/apache/calcite/util/TestUtil.java b/core/src/test/java/org/apache/calcite/util/TestUtil.java index 4337ba3c38f3..410619b11385 100644 --- a/core/src/test/java/org/apache/calcite/util/TestUtil.java +++ b/core/src/test/java/org/apache/calcite/util/TestUtil.java @@ -18,13 +18,16 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Suppliers; +import com.google.common.collect.ImmutableSortedSet; import org.junit.jupiter.api.Assertions; import java.io.PrintWriter; import java.io.StringWriter; import java.lang.reflect.InvocationTargetException; +import java.util.List; import java.util.Objects; +import java.util.SortedSet; import java.util.function.Supplier; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -298,6 +301,20 @@ private static int computeGuavaMajorVersion() { .bestVersion; } + /** Given a list, returns the number of elements that are not between an + * element that is less and an element that is greater. */ + public static > SortedSet outOfOrderItems(List list) { + E previous = null; + final ImmutableSortedSet.Builder b = ImmutableSortedSet.naturalOrder(); + for (E e : list) { + if (previous != null && previous.compareTo(e) > 0) { + b.add(e); + } + previous = e; + } + return b.build(); + } + /** Checks if exceptions have give substring. That is handy to prevent logging SQL text twice */ public static boolean hasMessage(Throwable t, String substring) { while (t != null) { diff --git a/core/src/test/java/org/apache/calcite/util/TestUtilTest.java b/core/src/test/java/org/apache/calcite/util/TestUtilTest.java index 04b1b7f09440..79056be35d62 100644 --- a/core/src/test/java/org/apache/calcite/util/TestUtilTest.java +++ b/core/src/test/java/org/apache/calcite/util/TestUtilTest.java @@ -16,8 +16,18 @@ */ package org.apache.calcite.util; +import org.apache.calcite.util.mapping.IntPair; + +import com.google.common.collect.ImmutableMap; + import org.junit.jupiter.api.Test; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.SortedSet; +import java.util.stream.Collectors; + import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -122,4 +132,33 @@ private void testJavaVersion(int expectedMajorVersion, String versionString) { // can't handle nines that start right after the point very well. oh well. assertThat(TestUtil.correctRoundedFloat("12.999999"), is("12.")); } + + /** Tests {@link TestUtil#outOfOrderItems(List)}. */ + @Test void testOutOfOrderItems() { + final List list = + new ArrayList<>(Arrays.asList("a", "g", "b", "c", "e", "d")); + final SortedSet distance = TestUtil.outOfOrderItems(list); + assertThat(distance.toString(), is("[b, d]")); + + list.add("f"); + final SortedSet distance2 = TestUtil.outOfOrderItems(list); + assertThat(distance2.toString(), is("[b, d]")); + + list.add(1, "b"); + final SortedSet distance3 = TestUtil.outOfOrderItems(list); + assertThat(distance3.toString(), is("[b, d]")); + + list.add(1, "c"); + final SortedSet distance4 = TestUtil.outOfOrderItems(list); + assertThat(distance4.toString(), is("[b, d]")); + + list.add(0, "z"); + final SortedSet distance5 = TestUtil.outOfOrderItems(list); + assertThat(distance5.toString(), is("[a, b, d]")); + } + + private long totalDistance(ImmutableMap map) { + return map.entrySet().stream() + .collect(Collectors.summarizingInt(e -> e.getValue().target)).getSum(); + } } diff --git a/core/src/test/resources/org/apache/calcite/sql/test/SqlPrettyWriterTest.xml b/core/src/test/resources/org/apache/calcite/sql/test/SqlPrettyWriterTest.xml index 84a38b6e6d9b..c9204886214f 100644 --- a/core/src/test/resources/org/apache/calcite/sql/test/SqlPrettyWriterTest.xml +++ b/core/src/test/resources/org/apache/calcite/sql/test/SqlPrettyWriterTest.xml @@ -16,28 +16,34 @@ ~ limitations under the License. --> - + - 5 -GROUP BY `Z`, `ZZ` -WINDOW `W` AS (PARTITION BY `C`), -`W1` AS (PARTITION BY `C`, `D` ORDER BY `A`, `B` RANGE BETWEEN INTERVAL '2:2' HOUR TO MINUTE PRECEDING AND INTERVAL '1' DAY FOLLOWING)) -ORDER BY `GG`]]> + - + 5 GROUP BY `Z`, `ZZ` WINDOW `W` AS (PARTITION BY `C`), `W1` AS (PARTITION BY `C`, `D` ORDER BY `A`, `B` RANGE BETWEEN INTERVAL '2:2' HOUR TO MINUTE PRECEDING AND INTERVAL '1' DAY FOLLOWING)) +ORDER BY `GG`]]> + + + + + 5 +GROUP BY `Z`, `ZZ` +WINDOW `W` AS (PARTITION BY `C`), +`W1` AS (PARTITION BY `C`, `D` ORDER BY `A`, `B` RANGE BETWEEN INTERVAL '2:2' HOUR TO MINUTE PRECEDING AND INTERVAL '1' DAY FOLLOWING)) ORDER BY `GG`]]> @@ -56,6 +62,16 @@ ELSE 7 END]]> + + + + + + + + + + - - - - - - 5 - GROUP BY `Z`, `ZZ` - WINDOW `W` AS (PARTITION BY `C`), - `W1` AS (PARTITION BY `C`, `D` ORDER BY `A`, `B` RANGE BETWEEN INTERVAL '2:2' HOUR TO MINUTE PRECEDING AND INTERVAL '1' DAY FOLLOWING)) -ORDER BY `GG`]]> - - 5 GROUP BY `Z`, `ZZ` WINDOW `W` AS (PARTITION BY `C`), `W1` AS (PARTITION BY `C`, `D` ORDER BY `A`, `B` RANGE BETWEEN INTERVAL '2:2' HOUR TO MINUTE PRECEDING AND INTERVAL '1' DAY FOLLOWING)) ORDER BY `GG`]]> - + - 5 @@ -190,113 +189,40 @@ FROM (SELECT * ORDER BY `GG`]]> - + - 5 - GROUP BY `Z`, - `ZZ` - WINDOW `W` AS (PARTITION BY `C`), - `W1` AS (PARTITION BY `C`, `D` ORDER BY `A`, `B` RANGE BETWEEN INTERVAL '2:2' HOUR TO MINUTE PRECEDING AND INTERVAL '1' DAY FOLLOWING)) -ORDER BY `GG`]]> - - - - - 5 - GROUP BY - `Z`, - `ZZ` - WINDOW - `W` AS (PARTITION BY `C`), - `W1` AS (PARTITION BY `C`, `D` ORDER BY `A`, `B` RANGE BETWEEN INTERVAL '2:2' HOUR TO MINUTE PRECEDING AND INTERVAL '1' DAY FOLLOWING)) -ORDER BY - `GG`]]> - - - - - 5 - group by `Z`, `ZZ` - window `W` as (partition by `C`), - `W1` as (partition by `C`, `D` order by `A`, `B` range between interval '2:2' hour to minute preceding and interval '1' day following)) -order by `GG`]]> - - - - - 5)) GROUP BY `Z`, `ZZ` WINDOW `W` AS (PARTITION BY `C`), `W1` AS (PARTITION BY `C`, `D` ORDER BY `A`, `B` RANGE BETWEEN INTERVAL '2:2' HOUR TO MINUTE PRECEDING AND INTERVAL '1' DAY FOLLOWING)) ORDER BY `GG`]]> - - - 5 - GROUP BY Z, ZZ - WINDOW W AS (PARTITION BY C), - W1 AS (PARTITION BY C, D ORDER BY A, B RANGE BETWEEN INTERVAL '2:2' HOUR TO MINUTE PRECEDING AND INTERVAL '1' DAY FOLLOWING)) -ORDER BY GG]]> + + + - - 5 - GROUP BY `Z`, `ZZ` - WINDOW `W` AS (PARTITION BY `C`), - `W1` AS (PARTITION BY `C`, `D` ORDER BY `A`, `B` RANGE BETWEEN INTERVAL '2:2' HOUR TO MINUTE PRECEDING AND INTERVAL '1' DAY FOLLOWING)) +FROM (SELECT * + FROM `T` + WHERE `X` = `Y` AND `A` > 5 + GROUP BY `Z`, `ZZ` + WINDOW `W` AS (PARTITION BY `C`), + `W1` AS (PARTITION BY `C`, `D` ORDER BY `A`, `B` RANGE BETWEEN INTERVAL '2:2' HOUR TO MINUTE PRECEDING AND INTERVAL '1' DAY FOLLOWING)) ORDER BY `GG`]]> - - - - - - - - - - - + - + @@ -348,6 +274,18 @@ FROM LEFT JOIN `Z` USING (`A`)]]> + + + 5 + group by `Z`, `ZZ` + window `W` as (partition by `C`), + `W1` as (partition by `C`, `D` order by `A`, `B` range between interval '2:2' hour to minute preceding and interval '1' day following)) +order by `GG`]]> + + + + + + + + + + 5 + GROUP BY Z, ZZ + WINDOW W AS (PARTITION BY C), + W1 AS (PARTITION BY C, D ORDER BY A, B RANGE BETWEEN INTERVAL '2:2' HOUR TO MINUTE PRECEDING AND INTERVAL '1' DAY FOLLOWING)) +ORDER BY GG]]> + + + + + 5)) + GROUP BY `Z`, `ZZ` + WINDOW `W` AS (PARTITION BY `C`), + `W1` AS (PARTITION BY `C`, `D` ORDER BY `A`, `B` RANGE BETWEEN INTERVAL '2:2' HOUR TO MINUTE PRECEDING AND INTERVAL '1' DAY FOLLOWING)) +ORDER BY `GG`]]> + + + + + 5 + GROUP BY `Z`, + `ZZ` + WINDOW `W` AS (PARTITION BY `C`), + `W1` AS (PARTITION BY `C`, `D` ORDER BY `A`, `B` RANGE BETWEEN INTERVAL '2:2' HOUR TO MINUTE PRECEDING AND INTERVAL '1' DAY FOLLOWING)) +ORDER BY `GG`]]> + + + + + 5 + GROUP BY + `Z`, + `ZZ` + WINDOW + `W` AS (PARTITION BY `C`), + `W1` AS (PARTITION BY `C`, `D` ORDER BY `A`, `B` RANGE BETWEEN INTERVAL '2:2' HOUR TO MINUTE PRECEDING AND INTERVAL '1' DAY FOLLOWING)) +ORDER BY + `GG`]]> + + - - - - - - - - - - - - - `Z`]]> - - (`W` * `X` + `Y`) * `Z`)]]> + + + `Z`]]> + + diff --git a/core/src/test/resources/org/apache/calcite/test/HepPlannerTest.xml b/core/src/test/resources/org/apache/calcite/test/HepPlannerTest.xml index 1e3e4ad29510..4b99cba51a7c 100644 --- a/core/src/test/resources/org/apache/calcite/test/HepPlannerTest.xml +++ b/core/src/test/resources/org/apache/calcite/test/HepPlannerTest.xml @@ -16,30 +16,25 @@ ~ limitations under the License. --> - + - + - + @@ -57,16 +52,15 @@ LogicalUnion(all=[false]) @@ -100,7 +94,7 @@ LogicalAggregate(group=[{0}]) ]]> - + @@ -118,21 +112,62 @@ LogicalUnion(all=[false]) + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - @@ -198,35 +215,22 @@ LogicalProject(NAME=[$1]) ]]> - + - + - - - - - - - - diff --git a/core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml b/core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml index 0c113e8c5b0a..0005a68017a2 100644 --- a/core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml +++ b/core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml @@ -16,9 +16,32 @@ ~ limitations under the License. --> - - - + + + + + + + + + + + + + - - - + + - - - + + ($7, 70)], $f25=[=($7, 20)]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + 3]]> + + + ($2, 3)]) + LogicalAggregate(group=[{0, 1}], agg#0=[COUNT()]) + LogicalProject(SAL=[$5], JOB=[$2]) + LogicalFilter(condition=[AND(IS NULL($5), =($2, 'Clerk'))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + ($2, 3)]) + LogicalProject(SAL=[$0], JOB=['Clerk':VARCHAR(10)], $f2=[$1]) + LogicalAggregate(group=[{0}], agg#0=[COUNT()]) + LogicalProject(SAL=[$5]) + LogicalFilter(condition=[AND(IS NULL($5), =($2, 'Clerk'))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + 3]]> + + + ($2, 3)]) + LogicalAggregate(group=[{0, 1}], agg#0=[COUNT()]) + LogicalProject(SAL=[$5], HIREDATE=[$4]) + LogicalFilter(condition=[AND(IS NULL($5), =($4, CURRENT_TIMESTAMP))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + ($2, 3)]) + LogicalProject(SAL=[$0], HIREDATE=[CURRENT_TIMESTAMP], $f2=[$1]) + LogicalAggregate(group=[{0}], agg#0=[COUNT()]) + LogicalProject(SAL=[$5]) + LogicalFilter(condition=[AND(IS NULL($5), =($4, CURRENT_TIMESTAMP))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + - - - + + - - - + + - - - - - + + + + - - - + + - - - - - + + + + - - - + + - - - + + - - - - - + + + + - - - + + - - - + + - - - - - 1000 then null else false end) as caseCol from emp) -where NOT(caseCol)]]> - - - ($5, 1000), null, false)]) + + + + + + + + - - - ($5, 1000), null)]) + + + - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - - - - - - - - - + + + + + + + - - - + + - - - - - + + + + + + + - - - + + - - - + + + + + + + - - - - - + + - - - + + + + + + + + + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + - - - - - - - - + + + + + - - - + + + + + + + + + + - - - - - - - - + + + + + + + - - - + + - - - - - ALL (select deptno from dept)]]> - - - + + + + + + + + + + - - - ($10, 0)), AND(>($10, $11), null, <>($10, 0), IS NOT TRUE(<=($0, $9))), AND(<=($0, $9), <>($10, 0), IS NOT TRUE(<=($0, $9)), <=($10, $11)))):BOOLEAN NOT NULL)]) - LogicalJoin(condition=[true], joinType=[inner]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalProject(m=[$0], c=[$1], d=[$1]) - LogicalAggregate(group=[{}], m=[MAX($0)], c=[COUNT()]) - LogicalProject(DEPTNO=[$0]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + + + + + + + + - - - ($10, 0)), AND(>($10, $11), null, <>($10, 0), IS NOT TRUE(<=($0, $9))), AND(<=($0, $9), <>($10, 0), IS NOT TRUE(<=($0, $9)), <=($10, $11)))):BOOLEAN NOT NULL)]) - LogicalJoin(condition=[true], joinType=[inner]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalProject(m=[$0], c=[$1], d=[$1]) - LogicalAggregate(group=[{}], m=[MAX($0)], c=[COUNT()]) - LogicalProject(DEPTNO=[$0]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + + + - - - - - ANY ( - select deptno from emp) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ALL (select deptno from dept)]]> + + + + + + ($10, 0)), AND(>($10, $11), null, <>($10, 0), IS NOT TRUE(<=($0, $9))), AND(<=($0, $9), <>($10, 0), IS NOT TRUE(<=($0, $9)), <=($10, $11)))):BOOLEAN NOT NULL)]) + LogicalJoin(condition=[true], joinType=[inner]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalProject(m=[$0], c=[$1], d=[$1]) + LogicalAggregate(group=[{}], m=[MAX($0)], c=[COUNT()]) + LogicalProject(DEPTNO=[$0]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) +]]> + + + ($10, 0)), AND(>($10, $11), null, <>($10, 0), IS NOT TRUE(<=($0, $9))), AND(<=($0, $9), <>($10, 0), IS NOT TRUE(<=($0, $9)), <=($10, $11)))):BOOLEAN NOT NULL)]) + LogicalJoin(condition=[true], joinType=[inner]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalProject(m=[$0], c=[$1], d=[$1]) + LogicalAggregate(group=[{}], m=[MAX($0)], c=[COUNT()]) + LogicalProject(DEPTNO=[$0]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + ANY ( + select deptno from emp) from dept]]> - - - + + SOME($0, { LogicalProject(DEPTNO=[$7]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) })]) LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - + + ($0, $2)), <>($3, 0)), AND(>($3, $4), null, <>($3, 0), IS NOT TRUE(>($0, $2))), AND(>($0, $2), <>($3, 0), IS NOT TRUE(>($0, $2)), <=($3, $4)))):BOOLEAN NOT NULL]) LogicalJoin(condition=[true], joinType=[inner]) LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) @@ -638,9 +1145,9 @@ LogicalProject(NAME=[$1], EXPR$1=[CAST(OR(AND(IS TRUE(>($0, $2)), <>($3, 0)), AN LogicalProject(DEPTNO=[$7]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + ($0, $2)), <>($3, 0)), AND(>($3, $4), null, <>($3, 0), IS NOT TRUE(>($0, $2))), AND(>($0, $2), <>($3, 0), IS NOT TRUE(>($0, $2)), <=($3, $4)))):BOOLEAN NOT NULL]) LogicalJoin(condition=[true], joinType=[inner]) LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) @@ -649,25 +1156,25 @@ LogicalProject(NAME=[$1], EXPR$1=[CAST(OR(AND(IS TRUE(>($0, $2)), <>($3, 0)), AN LogicalProject(DEPTNO=[$7]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - + + + + - - - + + - - - + + ($2, 0)), AND(<($3, $2), null, <>($2, 0), IS NULL($5)))]) LogicalJoin(condition=[=($1, $4)], joinType=[left]) LogicalJoin(condition=[true], joinType=[inner]) @@ -679,9 +1186,9 @@ LogicalProject(DEPTNO=[$0], EXPR$1=[OR(AND(IS NOT NULL($5), <>($2, 0)), AND(<($3 LogicalProject(MGR=[$3], i=[true]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + ($2, 0)), AND(<($3, $2), null, <>($2, 0), IS NULL($5)))]) LogicalJoin(condition=[=($1, $4)], joinType=[left]) LogicalJoin(condition=[true], joinType=[inner]) @@ -693,62 +1200,356 @@ LogicalProject(DEPTNO=[$0], EXPR$1=[OR(AND(IS NOT NULL($5), <>($2, 0)), AND(<($3 LogicalProject(MGR=[$3], i=[true]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - 1000 then empno else sal end = 1]]> - - - ($5, 1000), $0, $5), 1)]) + + + + + + + + - - - ($5, 1000), =($0, 1)), =($5, 1))]) + + + + + + + + + + + - - - - - 'abc' then ename - else null - end as ename from emp - )]]> - - - ($1, 'abc'), $1, null:VARCHAR(20))):DOUBLE, 5), 0.0:DOUBLE, CASE(IS NOT NULL(CAST(CASE(>($1, 'abc'), $1, null:VARCHAR(20))):DOUBLE), CAST(CAST(CASE(>($1, 'abc'), $1, null:VARCHAR(20))):DOUBLE):DOUBLE NOT NULL, 1.0:DOUBLE))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + - - - ($1, 'abc'), $1, null:VARCHAR(20))):DOUBLE, 5), 0.0:DOUBLE, CASE(IS NOT NULL(CAST(CASE(>($1, 'abc'), $1, null:VARCHAR(20))):DOUBLE), CAST(CAST(CASE(>($1, 'abc'), $1, null:VARCHAR(20))):DOUBLE):DOUBLE NOT NULL, 1.0:DOUBLE))]) + + + + + + + + + + + + + 20)]]> + + + ($0, 20))], joinType=[anti]) + LogicalTableScan(table=[[scott, EMP]]) + LogicalTableScan(table=[[scott, DEPT]]) +]]> + + + + + + + + + + + + + 1000 then empno else sal end = 1]]> + + + ($5, 1000), $0, $5), 1)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + ($5, 1000), =($0, 1)), =($5, 1))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + 'abc' then ename + else null + end as ename from emp + )]]> + + + ($1, 'abc'), $1, null:VARCHAR(20))):DOUBLE, 5), 0.0:DOUBLE, CASE(IS NOT NULL(CAST(CASE(>($1, 'abc'), $1, null:VARCHAR(20))):DOUBLE), CAST(CAST(CASE(>($1, 'abc'), $1, null:VARCHAR(20))):DOUBLE):DOUBLE NOT NULL, 1.0:DOUBLE))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + ($1, 'abc'), $1, null:VARCHAR(20))):DOUBLE, 5), 0.0:DOUBLE, CASE(IS NOT NULL(CAST(CASE(>($1, 'abc'), $1, null:VARCHAR(20))):DOUBLE), CAST(CAST(CASE(>($1, 'abc'), $1, null:VARCHAR(20))):DOUBLE):DOUBLE NOT NULL, 1.0:DOUBLE))]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + (select avg(sal) from emp e2 where e1.empno = e2.empno)]]> - - - + + ($1, $5))], joinType=[inner]) LogicalJoin(condition=[=($2, $3)], joinType=[inner]) @@ -762,11 +1563,105 @@ LogicalProject(EMPNO=[$0]) LogicalProject(EMPNO=[$0], SAL=[$5]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ($5, $12))], joinType=[inner]) @@ -779,37 +1674,137 @@ LogicalProject(EMPNO=[$0]) LogicalProject(EMPNO=[$0], SAL=[$5]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - - - - - + + + + - - - + + - - - + + - - - + + - - - - - - - - - - - - - - - - - - - + + + + - - - + + - - - + + - - - + + - - - - - + + + + d.deptno) as i0, (select min(0) from emp where deptno = d.deptno and ename = 'SMITH') as i1 from dept as d]]> - - - + + - - - + + - - - - - - - - + + + + + + + + + + + + + + + + + + (select avg(sal) from emp e2 where e1.empno = e2.empno) +order by e1.empno]]> + + + ($5, $12))], joinType=[inner]) + LogicalJoin(condition=[=($7, $9)], joinType=[inner]) + LogicalFilter(condition=[<($7, 10)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalFilter(condition=[<($0, 15)]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + LogicalAggregate(group=[{0}], EXPR$0=[AVG($1)]) + LogicalProject(EMPNO=[$0], SAL=[$5]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + ($5, $12))], joinType=[inner]) + LogicalJoin(condition=[=($7, $9)], joinType=[inner]) + LogicalFilter(condition=[<($7, 10)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalFilter(condition=[<($0, 15)]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + LogicalAggregate(group=[{0}], EXPR$0=[AVG($1)]) + LogicalProject(EMPNO=[$0], SAL=[$5]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - + + + + + + + - - - + + - - - + + + + + + + - - - - - - - - + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + - - - + + - - - + + - - - - - + + + + - - - + + - - - + + - - - - - 1000) -FROM emp]]> - - - ($5, 1000)]) + + + + + + + + - - - ($5, 1000)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + - - - - - + + + + 1000 is true as c, sal < 500 is true as d, comm from emp)]]> - - - + + ($5, 1000)], D=[<($5, 500)]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + ($5, 1000)], D=[<($5, 500)]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - 1000) + + + + + 1000) FROM emp GROUP BY deptno]]> - - - + + ($5, 1000)]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + ($5, 1000)]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + 1000) +FROM emp]]> + + + ($5, 1000)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + ($5, 1000)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - + + + + 30]]> + + + (+($0, $1), 30)]) + LogicalUnion(all=[true]) + LogicalProject(X=[$0], Y=[$1]) + LogicalValues(tuples=[[{ 10, 1 }, { 30, 3 }]]) + LogicalProject(EXPR$0=[$0], EXPR$1=[$1]) + LogicalValues(tuples=[[{ 20, 2 }]]) +]]> + + + + + + + + 50 intersect select * from (values (30, 3))]]> - - - + + - - - + + - - - - - - - - - - - + + + + + + + - - - - - - - - - - - + + - - - - - - - - + + + + 30 +except +select * from (values (20, 2)) +except +select * from (values (40, 4))]]> + + + ($0, 30)]) + LogicalValues(tuples=[[{ 30, 3 }]]) + LogicalProject(EXPR$0=[$0], EXPR$1=[$1]) + LogicalValues(tuples=[[{ 20, 2 }]]) + LogicalProject(EXPR$0=[$0], EXPR$1=[$1]) + LogicalValues(tuples=[[{ 40, 4 }]]) ]]> - - - + + - - - - - 100]]> - - - ($7, 100)]) - LogicalJoin(condition=[=($0, $9)], joinType=[full]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + 30 +except +select * from (values (40, 4)) +except +select * from (values (50, 5)) as t (x, y) where x > 50]]> + + + ($0, 30)]) + LogicalValues(tuples=[[{ 20, 2 }]]) + LogicalProject(EXPR$0=[$0], EXPR$1=[$1]) + LogicalValues(tuples=[[{ 40, 4 }]]) + LogicalProject(X=[$0], Y=[$1]) + LogicalFilter(condition=[>($0, 50)]) + LogicalValues(tuples=[[{ 50, 5 }]]) ]]> - - - ($5, 100)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + - - - - - 100]]> - - - ($7, 100))]) - LogicalJoin(condition=[=($0, $9)], joinType=[full]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + 50))]]> + + + (+($0, $1), 50)]) + LogicalValues(tuples=[[{ 10, 1 }, { 30, 3 }]]) ]]> - - - ($5, 100)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + - - - - - 100]]> - - - ($7, 100)]) - LogicalJoin(condition=[=($0, $9)], joinType=[left]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + 50))]]> + + + (+($0, $1), 50)]) + LogicalValues(tuples=[[{ 10, 1 }, { 30, 3 }]]) ]]> - - - ($5, 100)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + - - - - - - - - + + + + + + + - - - + + - - - - - e.mgr -where d.deptno > e.mgr]]> - - - ($0, $5)]) - LogicalJoin(condition=[AND(=($0, $9), >($0, $5))], joinType=[inner]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + - - - ($0, $5))], joinType=[inner]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + 10.0]]]> + + + ($0, 10)]) + LogicalTableScan(table=[[CATALOG, SALES, CUSTOMER]]) ]]> - - - + + ($t0, $t3)], proj#0..2=[{exprs}], $condition=[$t4]) + EnumerableTableScan(table=[[CATALOG, SALES, CUSTOMER]]) ]]> - - - - - - - - + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - - - - - - - - - + + + + + + + - - - + + - - - - - - - - - - - + + + + + + + - - - - - - - - + + - - - - - - - - - - - + + + + 100) +or emp.sal < 100]]> + + + ($0, 100)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +})), <($5, 100))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + ($0, 100)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + 100)]]> + + + ($0, 100)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +}))], joinType=[left]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - - - - - - + + - - - ($0, 100)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - - - - + + - - - - - 100 union all select deptno from dept d2 where deptno > 20)]]> - - - ($0, 100)]) - LogicalTableScan(table=[[scott, DEPT]]) - LogicalProject(DEPTNO=[$0]) - LogicalFilter(condition=[>($0, 20)]) - LogicalTableScan(table=[[scott, DEPT]]) + + + + + + + + - - - ($0, 100)]) - LogicalTableScan(table=[[scott, DEPT]]) - LogicalProject(DEPTNO=[$0]) - LogicalFilter(condition=[>($0, 20)]) - LogicalTableScan(table=[[scott, DEPT]]) + + + - - - - - 20)]]> - - - ($0, 20)]) - LogicalTableScan(table=[[scott, DEPT]]) + + + + + + + + - - - ($0, 20)]) - LogicalTableScan(table=[[scott, DEPT]]) + + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - 7 or d.deptno<>8]]> - - - ($0, 7), <>($0, 8))]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + + + + + 3]]> + + + ($9, 3)]) + LogicalJoin(condition=[=($7, $9)], joinType=[left]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - + + ($9, 3)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - - - 7 or e.mgr<>8]]> - - - + + + + + + + ($3, 7), <>($3, 8))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalFilter(condition=[IS NOT NULL($9)]) + LogicalCorrelate(correlation=[$cor0], joinType=[left], requiredColumns=[{7}]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalAggregate(group=[{}], agg#0=[MIN($0)]) + LogicalProject($f0=[true]) + LogicalFilter(condition=[=($cor0.DEPTNO, $0)]) + LogicalProject(TWICEDEPTNO=[*($0, 2)]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + - - - ($7, 8))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + - - - - - 3 + CAST(NULL AS INTEGER)]]> - - - (+(1, 2), +(3, null))]) - LogicalValues(tuples=[[{ 1, 2 }]]) + + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - 30 -except -select * from (values (20, 2)) -except -select * from (values (40, 4))]]> - - - ($0, 30)]) - LogicalValues(tuples=[[{ 30, 3 }]]) - LogicalProject(EXPR$0=[$0], EXPR$1=[$1]) - LogicalValues(tuples=[[{ 20, 2 }]]) - LogicalProject(EXPR$0=[$0], EXPR$1=[$1]) - LogicalValues(tuples=[[{ 40, 4 }]]) + + + + + 100]]> + + + ($7, 100))]) + LogicalJoin(condition=[=($0, $9)], joinType=[full]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + ($5, 100)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - 30 -except -select * from (values (40, 4)) -except -select * from (values (50, 5)) as t (x, y) where x > 50]]> - - - ($0, 30)]) - LogicalValues(tuples=[[{ 20, 2 }]]) - LogicalProject(EXPR$0=[$0], EXPR$1=[$1]) - LogicalValues(tuples=[[{ 40, 4 }]]) - LogicalProject(X=[$0], Y=[$1]) - LogicalFilter(condition=[>($0, 50)]) - LogicalValues(tuples=[[{ 50, 5 }]]) + + + + + + + + - - - + + - - - - - 50))]]> - - - (+($0, $1), 50)]) - LogicalValues(tuples=[[{ 10, 1 }, { 30, 3 }]]) + + + + + 100]]> + + + ($7, 100)]) + LogicalJoin(condition=[=($0, $9)], joinType=[full]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + ($5, 100)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - 50))]]> - - - (+($0, $1), 50)]) - LogicalValues(tuples=[[{ 10, 1 }, { 30, 3 }]]) + + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + - - - + + - - - - - - - - + + - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - 30]]> - - - (+($0, $1), 30)]) - LogicalUnion(all=[true]) - LogicalProject(X=[$0], Y=[$1]) - LogicalValues(tuples=[[{ 10, 1 }, { 30, 3 }]]) - LogicalProject(EXPR$0=[$0], EXPR$1=[$1]) - LogicalValues(tuples=[[{ 20, 2 }]]) + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + - - - + + + + - - - - - - - - + + + + - - - + + + + - - - - - - - - + + + + - - - + + + + - - - - - - - - + + + + 10 +right join dept c on b.deptno > 10 ]]> - - - + + ($0, 10)], >=[>($0, 10)]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + LogicalProject(DEPTNO=[$0]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - - - - - - + + ($2, 10)], joinType=[right]) + LogicalJoin(condition=[>($2, 10)], joinType=[left]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + + + + - - - + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + 10 and cast(null as boolean) + from dept) as b +on a.name = b.name]]> + + + ($0, 10), null)]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) +]]> + + + ($2, 10), null)]) + LogicalJoin(condition=[=($1, $3)], joinType=[left]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + ($5, 1000))]) + LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]]) + LogicalFilter(condition=[=($1, $0)]) + LogicalAggregate(group=[{0, 1, 2}]) + LogicalProject(SAL=[$5], SAL0=[$8], $f9=[$9]) + LogicalJoin(condition=[OR(=($8, $5), $9)], joinType=[inner]) + LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], SLACKER=[$8]) + LogicalFilter(condition=[AND(=($7, 20), >($5, 1000))]) + LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]]) + LogicalAggregate(group=[{0, 1}]) + LogicalProject(SAL=[$5], $f9=[=($5, 4)]) + LogicalFilter(condition=[AND(=($7, 20), >($5, 1000))]) + LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]]) +]]> + + + ($5, 1000)]) + LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], SLACKER=[$8], SAL0=[$5], $f9=[=($5, 4)]) + LogicalFilter(condition=[AND(=($7, 20), >($5, 1000))]) + LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]]) + LogicalFilter(condition=[=($1, $0)]) + LogicalAggregate(group=[{0, 1, 2}]) + LogicalProject(SAL=[$5], SAL0=[$8], $f9=[$9]) + LogicalJoin(condition=[OR(=($8, $5), $9)], joinType=[inner]) + LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], SLACKER=[$8]) + LogicalFilter(condition=[AND(=($7, 20), >($5, 1000))]) + LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]]) + LogicalAggregate(group=[{0, 1}]) + LogicalProject(SAL=[$5], $f9=[=($5, 4)]) + LogicalFilter(condition=[AND(=($7, 20), >($5, 1000))]) + LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]]) +]]> + + + + + + + + - - - + + + + + + + - - - - - + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - + + + + - - - + + - - - - - + + + + 100]]> + + + ($7, 100)]) + LogicalJoin(condition=[=($0, $9)], joinType=[left]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + ($5, 100)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - + + + + + + + - - - + + - - - - - - - - + + + + 3) where ename LIKE 'bar']]> + + + ($9, 3)]) + LogicalJoin(condition=[=($7, $9)], joinType=[left]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - + + ($9, 3))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - - - - - - + + + + + + + + + + - - - + + + + - - - - - + + - - - + + - - - - - - - - + + + + + + + + + + - - - + + + + - - - - - - - - + + - - - + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - + + - - - + + + + - - - - - - - - + + - - - + + - - - + + + + - - - - - - - - + + - - - + + - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + - - - - - - - - + + - - - + + + + - - - - - - - - + + - - - + + - - - - - - - - - - - - - + + + + - - - + + - - - - - - - - + + - - - + + + + + + + - - - - - + + + + + + + - - - + + - - - - - - - - + + + + - - - + + - - - + + - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - + + - - - - - + + + + - - - - - - - - + + - - - + + - - - - - - - - + + + + + + + + + + - - - - - - - - ($5, 1000))]) - LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]]) - LogicalFilter(condition=[=($1, $0)]) - LogicalAggregate(group=[{0, 1, 2}]) - LogicalProject(SAL=[$5], SAL0=[$8], $f9=[$9]) - LogicalJoin(condition=[OR(=($8, $5), $9)], joinType=[inner]) - LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], SLACKER=[$8]) - LogicalFilter(condition=[AND(=($7, 20), >($5, 1000))]) - LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]]) - LogicalAggregate(group=[{0, 1}]) - LogicalProject(SAL=[$5], $f9=[=($5, 4)]) - LogicalFilter(condition=[AND(=($7, 20), >($5, 1000))]) - LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]]) + + + + + + + + - - - ($5, 1000)]) - LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], SLACKER=[$8], SAL0=[$5], $f9=[=($5, 4)]) - LogicalFilter(condition=[AND(=($7, 20), >($5, 1000))]) - LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]]) - LogicalFilter(condition=[=($1, $0)]) - LogicalAggregate(group=[{0, 1, 2}]) - LogicalProject(SAL=[$5], SAL0=[$8], $f9=[$9]) - LogicalJoin(condition=[OR(=($8, $5), $9)], joinType=[inner]) - LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], SLACKER=[$8]) - LogicalFilter(condition=[AND(=($7, 20), >($5, 1000))]) - LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]]) - LogicalAggregate(group=[{0, 1}]) - LogicalProject(SAL=[$5], $f9=[=($5, 4)]) - LogicalFilter(condition=[AND(=($7, 20), >($5, 1000))]) - LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]]) + + + - - - - - - - - + + + + + + + - - - + + - - - - - + + + + + + + - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - + + + + - - - + + ($5, 1000))]) LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]]) ]]> - - - + + ($5, 1000))]) LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]]) ]]> - - - - - + + + + - - - + + ($5, 1000))]) LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]]) ]]> - - - + + ($5, 1000))]) LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]]) ]]> - - - - - - - - + + + + ($3, 0), >(CASE(>($3, 0), /($7, $3), null:INTEGER), 1))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + ($3, 0), CASE(>($3, 0), >(/($7, $3), 1), false))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + 0 and case when MGR > 0 then deptno / MGR else null end > 1]]> + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 20) -group by deptno]]> - - - ($7, 20)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - ($7, 20)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - - - - - - - - - - - - 5000)group by ename, sal, deptno]]> - - - ($1, 5000)]) - LogicalProject(ENAME=[$1], SAL=[$5], DEPTNO=[$7]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - ($1, 5000)]) - LogicalAggregate(group=[{0, 1, 2}]) - LogicalProject(ENAME=[$1], SAL=[$5], DEPTNO=[$7]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - 5000)group by rollup(ename, sal, deptno)]]> - - - ($1, 5000)]) - LogicalProject(ENAME=[$1], SAL=[$5], DEPTNO=[$7]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - ($1, 5000)]) - LogicalAggregate(group=[{0, 1, 2}]) - LogicalProject(ENAME=[$1], SAL=[$5], DEPTNO=[$7]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3) where ename LIKE 'bar']]> - - - ($9, 3)]) - LogicalJoin(condition=[=($7, $9)], joinType=[left]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) -]]> - - - ($9, 3))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) -]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - '12' -group by emp.deptno]]> - - - ($0, CAST('12'):INTEGER NOT NULL)]) - LogicalAggregate(group=[{5, 7}], EXPR$1=[COUNT()]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - ($5, 12)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - - - - - - - - - - - - 7]]> - - - ($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - ($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalFilter(condition=[>($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - 7) d -inner join sales.emp e on d.deptno = e.deptno]]> - - - ($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - ($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalFilter(condition=[>($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - 7 -group by deptno) d inner join sales.emp e on d.deptno = e.deptno]]> - - - ($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - ($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalFilter(condition=[>($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - 7 -union all select deptno from sales.emp where deptno > 10) d -inner join sales.emp e on d.deptno = e.deptno]]> - - - ($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalProject(DEPTNO=[$7]) - LogicalFilter(condition=[>($7, 10)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - ($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalProject(DEPTNO=[$7]) - LogicalFilter(condition=[>($7, 10)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalFilter(condition=[>($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - 7]]> - - - ($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - ($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalFilter(condition=[>($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalFilter(condition=[>($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - 7 -union all select deptno from sales.emp) e -on d.deptno = e.deptno]]> - - - ($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalProject(DEPTNO=[$7]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - ($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalProject(DEPTNO=[$7]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - 7 group by deptno) d -inner join sales.emp e on d.deptno = e.deptno -inner join sales.emp f on e.deptno = f.deptno]]> - - - ($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - ($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalFilter(condition=[>($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalFilter(condition=[>($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - 7 and e.deptno > 9]]> - - - ($16, 9)]) - LogicalJoin(condition=[=($7, $16)], joinType=[left]) - LogicalFilter(condition=[>($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - ($16, 9)]) - LogicalJoin(condition=[=($7, $16)], joinType=[left]) - LogicalFilter(condition=[>($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalFilter(condition=[>($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - 7 and e.deptno > 9]]> - - - ($7, 7)]) - LogicalJoin(condition=[=($7, $16)], joinType=[right]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalFilter(condition=[>($7, 9)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - ($7, 7)]) - LogicalJoin(condition=[=($7, $16)], joinType=[right]) - LogicalFilter(condition=[>($7, 9)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalFilter(condition=[>($7, 9)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - 7 and e.deptno > 9]]> - - - ($7, 7), >($16, 9))]) - LogicalJoin(condition=[=($7, $16)], joinType=[full]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - ($7, 7), >($16, 9))]) - LogicalJoin(condition=[=($7, $16)], joinType=[full]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - 7) d -inner join sales.emp e on d.deptno = e.deptno]]> - - - ($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - ($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - 7) d -inner join sales.emp e on d.deptno = e.deptno]]> - - - ($6, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - ($6, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalFilter(condition=[>($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - 10]]> - - - - - - - - - - - 10]]> - - - ($6, 10))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - ($6, 10))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - 7 -union all -select deptno from sales.emp where deptno > 10 -union all -select deptno from sales.emp where deptno > 1) d -inner join sales.emp e on d.deptno = e.deptno]]> - - - ($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalProject(DEPTNO=[$7]) - LogicalFilter(condition=[>($7, 10)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalProject(DEPTNO=[$7]) - LogicalFilter(condition=[>($7, 1)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - ($7, 7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalProject(DEPTNO=[$7]) - LogicalFilter(condition=[>($7, 10)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalProject(DEPTNO=[$7]) - LogicalFilter(condition=[>($7, 1)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalFilter(condition=[>($7, 1)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - 7 or empno < 10 -union all -select empno, deptno from sales.emp where deptno > 10 or empno < deptno -union all -select empno, deptno from sales.emp where deptno > 1) d -inner join sales.emp e on d.deptno = e.deptno]]> - - - ($7, 7), <($0, 10))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalProject(EMPNO=[$0], DEPTNO=[$7]) - LogicalFilter(condition=[OR(>($7, 10), <($0, $7))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalProject(EMPNO=[$0], DEPTNO=[$7]) - LogicalFilter(condition=[>($7, 1)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - ($7, 7), <($0, 10))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalProject(EMPNO=[$0], DEPTNO=[$7]) - LogicalFilter(condition=[OR(>($7, 10), <($0, $7))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalProject(EMPNO=[$0], DEPTNO=[$7]) - LogicalFilter(condition=[>($7, 1)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - - - - - - - - - - - - 1]]> - - - (2, 1)]) - TableAccessRel(table=[[CATALOG, SALES, EMP]]) - TableAccessRel(table=[[CATALOG, SALES, EMP]]) -]]> - - - (2, 1)]) - TableAccessRel(table=[[CATALOG, SALES, EMP]]) - TableAccessRel(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - 7 and e.sal = e.deptno and d.comm = d.deptno -and d.comm + d.deptno > d.comm/2]]> - - - ($7, 7), =($6, $7), >(+($6, $7), /($6, 2)))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalFilter(condition=[=($5, $7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - ($7, 7), =($6, $7), >(+($6, $7), /($6, 2)))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalFilter(condition=[>($7, 7)]) - LogicalFilter(condition=[=($5, $7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - - - - - - - - - - - - empno]]> - - - (+($7, 5), $0)]) - LogicalFilter(condition=[=($7, 10)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - (15, $0)]) - LogicalFilter(condition=[=($7, 10)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + - - - - - - - - + + + + - - - + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - - - - - - - - + + + + + + + + + + + + + + + + + + - - - + + - - - - - 10) -where empno > 3 and deptno > 5]]> - - - ($0, 3), >($7, 5))]) - LogicalFilter(condition=[>($7, 10)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + + + + - - - ($0, 3)]) - LogicalFilter(condition=[>($7, 10)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - 100]]> - - - ($7, 100))]) - LogicalJoin(condition=[=($0, $9)], joinType=[left]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + + + + - - - ($5, 100)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + - - - - - 20)]]> - - - ($0, 20))], joinType=[anti]) - LogicalTableScan(table=[[scott, EMP]]) - LogicalTableScan(table=[[scott, DEPT]]) + + + + + + + + - - - - - - - - + + - - - - - 20)]]> - - - ($0, 20))], joinType=[semi]) - LogicalTableScan(table=[[scott, EMP]]) - LogicalTableScan(table=[[scott, DEPT]]) + + + + + + + + - - - - - + + - - - - - 100)]]> - - - + + + + + + + ($5, 100)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - ($5, 100)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + - - - - - 100)) s join customer.account on s.deptno = account.acctno]]> - - - + + + + + + + + + + + + + + + ($5, 100)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) + LogicalJoin(condition=[true], joinType=[inner]) + LogicalTableScan(table=[[scott, DEPT]]) + LogicalAggregate(group=[{}], DUMMY_COUNT=[COUNT()]) + LogicalTableScan(table=[[scott, EMP]]) ]]> - - - + + ($0, 100)]) - LogicalProject(SAL=[$5], DEPTNO=[$7]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalProject(ACCTNO=[$0]) - LogicalTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) + LogicalJoin(condition=[true], joinType=[inner]) + LogicalProject(DEPTNO=[$0]) + LogicalTableScan(table=[[scott, DEPT]]) + LogicalAggregate(group=[{}], DUMMY=[COUNT()]) + LogicalProject(EMPNO=[$0]) + LogicalTableScan(table=[[scott, EMP]]) +]]> + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + empno]]> + + + (+($7, 5), $0)]) + LogicalFilter(condition=[=($7, 10)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + (15, $0)]) + LogicalFilter(condition=[=($7, 10)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + 5000)group by ename, sal, deptno]]> + + + ($1, 5000)]) + LogicalProject(ENAME=[$1], SAL=[$5], DEPTNO=[$7]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + ($1, 5000)]) + LogicalAggregate(group=[{0, 1, 2}]) + LogicalProject(ENAME=[$1], SAL=[$5], DEPTNO=[$7]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + + + 5000)group by rollup(ename, sal, deptno)]]> + + + ($1, 5000)]) + LogicalProject(ENAME=[$1], SAL=[$5], DEPTNO=[$7]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + ($1, 5000)]) + LogicalAggregate(group=[{0, 1, 2}]) + LogicalProject(ENAME=[$1], SAL=[$5], DEPTNO=[$7]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + + + + + + - - - - - - - - + + - - - + + + + e.mgr +where d.deptno > e.mgr]]> + + + ($0, $5)]) + LogicalJoin(condition=[AND(=($0, $9), >($0, $5))], joinType=[inner]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + ($0, $5))], joinType=[inner]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - 'b' group by dept.name) dept1 -where dept1.c1 > 'c' and (dept1.c2 > 30 or dept1.c1 < 'z')]]> - - - ($0, 'c'), OR(>($1, 30), <($0, 'z')))]) - LogicalAggregate(group=[{0}], C2=[COUNT()]) - LogicalProject(C1=[$1]) - LogicalFilter(condition=[>($1, 'b')]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + + + + + + + + - - - ($1, 30), <($0, 'z'))]) - LogicalAggregate(group=[{0}], C2=[COUNT()]) - LogicalFilter(condition=[>($0, 'c')]) - LogicalProject(C1=[$1]) - LogicalFilter(condition=[>($1, 'b')]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + + + - - - - - 10 -right join dept c on b.deptno > 10 + + + + + + + + - - - ($2, 10)]) - LogicalJoin(condition=[$4], joinType=[left]) + + + ($0, 10)]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) +]]> + + + + + + + + - - - ($2, 10)]) - LogicalProject(DEPTNO=[$0], NAME=[$1], DEPTNO0=[CAST($2):INTEGER], NAME0=[CAST($3):VARCHAR(10)], $f2=[CAST($4):BOOLEAN]) - LogicalJoin(condition=[true], joinType=[inner]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) - LogicalProject(DEPTNO=[$0], NAME=[$1], $f2=[>($0, 10)]) - LogicalFilter(condition=[>($0, 10)]) - LogicalFilter(condition=[>($0, 10)]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + + + - - - - - + + + + + + + - - - + + - - - + + + + + + + - - - - - + + - - - + + + + - - - + + - - - - - 10 -right join dept c on b.deptno > 10 + + + - - - ($0, 10)], >=[>($0, 10)]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) - LogicalProject(DEPTNO=[$0]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + + + + + - - - ($2, 10)], joinType=[right]) - LogicalJoin(condition=[>($2, 10)], joinType=[left]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + + + - - - - - - - - + + - - - + + + + - - - - - - - - + + - - - + + + + + + + + + + - - - - - - - - + + - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + + + + + + - - - - - - - - + + + + + + + - - - + + - - - - - 10 and cast(null as boolean) - from dept) as b -on a.name = b.name]]> - - - + + + + + + + ($0, 10), null)]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - ($2, 10), null)]) - LogicalJoin(condition=[=($1, $3)], joinType=[left]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + + + - - - - - - - - - - - + + + + + + + - - - - - + + - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + + + - - - + + - - - - - 3 + CAST(NULL AS INTEGER)]]> - - - (+(1, 2), +(3, null))]) - LogicalValues(tuples=[[{ 1, 2 }]]) + + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - + + + + - - - + + - - - + + - - - - - + + + + - - - + + + - - - + + - - - - - - - - + + + + + + + - - - + + + + + + + + + + - - - - - - - - + + - - - + + + + + + + + + + - - - - - - - - + + + + + + + + + + - - - + + + + + + + + + + + + + + + 20) +group by deptno]]> + + + ($7, 20)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + ($7, 20)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + - - - + + - - - + + + + + + + - - - - - + + - - - + + + + + + + - - - + + - - - - - + + + + + + + - - - + + - - - + + + + '12' +group by emp.deptno]]> + + + ($0, CAST('12'):INTEGER NOT NULL)]) + LogicalAggregate(group=[{5, 7}], EXPR$1=[COUNT()]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + ($5, 12)]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalAggregate(group=[{3, 5}], HIREDATE1=[MAX($4)], COMM1=[SUM($6)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - - - - - - - - - - - - - - - - - - + + + + 1]]> + + + ($1, 1)]) + LogicalAggregate(group=[{0}], agg#0=[COUNT()]) + LogicalProject(DEPTNO=[$7]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) -]]> - - - - - - - - - - - + + ($1, 1)]) + LogicalAggregate(group=[{0}], agg#0=[COUNT()]) + LogicalProject(DEPTNO=[$7]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - + + + + 'b' group by dept.name) dept1 +where dept1.c1 > 'c' and (dept1.c2 > 30 or dept1.c1 < 'z')]]> + + + ($0, 'c'), OR(>($1, 30), <($0, 'z')))]) + LogicalAggregate(group=[{0}], C2=[COUNT()]) + LogicalProject(C1=[$1]) + LogicalFilter(condition=[>($1, 'b')]) LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - - - - - - - - - + + ($1, 30), <($0, 'z'))]) + LogicalAggregate(group=[{0}], C2=[COUNT()]) + LogicalFilter(condition=[>($0, 'c')]) + LogicalProject(C1=[$1]) + LogicalFilter(condition=[>($1, 'b')]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + 10 +right join dept c on b.deptno > 10 ]]> - - - + + ($2, 10)]) + LogicalJoin(condition=[$4], joinType=[left]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + LogicalProject(DEPTNO=[$0], NAME=[$1], $f2=[>($0, 10)]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - - - - - - + + ($2, 10)]) + LogicalProject(DEPTNO=[$0], NAME=[$1], DEPTNO0=[CAST($2):INTEGER], NAME0=[CAST($3):VARCHAR(10)], $f2=[CAST($4):BOOLEAN]) + LogicalJoin(condition=[true], joinType=[inner]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + LogicalProject(DEPTNO=[$0], NAME=[$1], $f2=[>($0, 10)]) + LogicalFilter(condition=[>($0, 10)]) + LogicalFilter(condition=[>($0, 10)]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - + + + + + + + - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - TIMESTAMP '2018-01-01 00:00:00']]> - - - ($1, 2018-01-01 00:00:00)]) - LogicalProject(SAL=[$5], T=[CURRENT_TIMESTAMP]) + + + + + + + + + + + - - - ($1, 2018-01-01 00:00:00)]) - LogicalProject(SAL=[$5], T=[CURRENT_TIMESTAMP]) + + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - 10 and empno<=10]]> - - - ($0, 10), <=($0, 10))]) + + + + + + + + - - - + + - - - - - - - - + + + + 20)]]> + + + ($0, 20)]) + LogicalTableScan(table=[[scott, DEPT]]) ]]> - - - + + ($0, 20)]) + LogicalTableScan(table=[[scott, DEPT]]) ]]> - - - - - - - - + + + + 100 union all select deptno from dept d2 where deptno > 20)]]> + + + ($0, 100)]) + LogicalTableScan(table=[[scott, DEPT]]) + LogicalProject(DEPTNO=[$0]) + LogicalFilter(condition=[>($0, 20)]) + LogicalTableScan(table=[[scott, DEPT]]) ]]> - - - + + ($0, 100)]) + LogicalTableScan(table=[[scott, DEPT]]) + LogicalProject(DEPTNO=[$0]) + LogicalFilter(condition=[>($0, 20)]) + LogicalTableScan(table=[[scott, DEPT]]) ]]> - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + + + + - - - + + + + + + + - - - - - 0.5]]> - - - ($1, 10)]) - LogicalProject(SAL=[$5], N=[NDC()]) - LogicalTableScan(table=[[scott, EMP]]) -]]> - - - ($1, 10)]) - LogicalProject(SAL=[$5], N=[NDC()]) - LogicalTableScan(table=[[scott, EMP]]) + + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - 1]]> - - - ($1, 1)]) - LogicalAggregate(group=[{0}], agg#0=[COUNT()]) - LogicalProject(DEPTNO=[$7]) + + + + + + + + - - - ($1, 1)]) - LogicalAggregate(group=[{0}], agg#0=[COUNT()]) - LogicalProject(DEPTNO=[$7]) + + + + + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - - - - + + - - - - - - - - - - - + + + + + + + - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + + + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + - - - - - - - - + + + + 20)]]> + + + ($0, 20))], joinType=[semi]) + LogicalTableScan(table=[[scott, EMP]]) + LogicalTableScan(table=[[scott, DEPT]]) ]]> - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - - - - - - - - - + + + + + + + - - - + + - - - - - + + + + + + + - - - + + - - - + + + + + + + - - - - - + + - - - + + + + + + + - - - + + - - - - - + + + + + + + - - - + + - - - + + + + + + + - - - - - + + - - - + + + + + + + - - - + + - - - - - - - - + + + + - - - + + - - - - - - - - + + - - - + + + + - - - - - - - - + + - - - + + - - - - - - - - + + + + - - - + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - + + - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + + + + - - - + + + + + + + - - - - - - - - - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + + + + + + + + + + + + - - - + + - - - - - - - - + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + 7 or d.deptno<>8]]> + + + ($0, 7), <>($0, 8))]) LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - + + - - - - - - - - + + + + 7 or e.mgr<>8]]> + + + ($3, 7), <>($3, 8))]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + ($7, 8))]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + TIMESTAMP '2018-01-01 00:00:00']]> + + + ($1, 2018-01-01 00:00:00)]) + LogicalProject(SAL=[$5], T=[CURRENT_TIMESTAMP]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + ($1, 2018-01-01 00:00:00)]) + LogicalProject(SAL=[$5], T=[CURRENT_TIMESTAMP]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + 3 + CAST(NULL AS INTEGER)]]> + + + (+(1, 2), +(3, null))]) + LogicalValues(tuples=[[{ 1, 2 }]]) +]]> + + + + + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + + + + + + + + + - - - - - - - - + + - - - + + + + 10 and empno<=10]]> + + + ($0, 10), <=($0, 10))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + - - - + + + + 0.5]]> + + + ($1, 10)]) + LogicalProject(SAL=[$5], N=[NDC()]) + LogicalTableScan(table=[[scott, EMP]]) ]]> - - - - - 100) using (deptno)]]> - - - ($5, 100)]) + + + ($1, 10)]) + LogicalProject(SAL=[$5], N=[NDC()]) + LogicalTableScan(table=[[scott, EMP]]) +]]> + + + + + + + + - - - ($5, 100)]) + + + - - - - - 100) using (deptno)]]> - - - ($5, 100)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + + + + - - - - - 100) using (deptno)]]> - - - ($5, 100)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + - - - + + + + + + + - - - - - 100) using (deptno)]]> - - - ($5, 100)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + - - - - - - - - + + + + 3 + CAST(NULL AS INTEGER)]]> + + + (+(1, 2), +(3, null))]) + LogicalValues(tuples=[[{ 1, 2 }]]) ]]> - - - + + + + + + + + + + - - - - - - - - + + - - - + + + + cast (100.0 as decimal(4, 1))]]> + + + ($5, 100.0:DECIMAL(4, 1))]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalAggregate(group=[{}], agg#0=[SINGLE_VALUE($0)]) - LogicalProject(DEPTNO=[$7]) - LogicalFilter(condition=[<($0, 20)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - - - - - - - + + ($t10, $t12)], proj#0..8=[{exprs}], $condition=[$t13]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalFilter(condition=[=($cor0.EMPNO, $0)]) - LogicalProject(DEPTNO=[$0], i=[true]) - LogicalFilter(condition=[=($cor0.JOB, $1)]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - + + + + + + + - - - - - SOME (select deptno from dept)]]> - - - SOME($0, { -LogicalProject(DEPTNO=[$0]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) -})]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + - - - ($0, $9)), <>($10, 0)), AND(>($10, $11), null, <>($10, 0), IS NOT TRUE(>($0, $9))), AND(>($0, $9), <>($10, 0), IS NOT TRUE(>($0, $9)), <=($10, $11)))]) - LogicalJoin(condition=[true], joinType=[inner]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalProject(m=[$0], c=[$1], d=[$1]) - LogicalAggregate(group=[{}], m=[MIN($0)], c=[COUNT()]) - LogicalProject(DEPTNO=[$0]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + + + + + + + + - - - ($0, $9)), <>($10, 0)), AND(>($10, $11), null, <>($10, 0), IS NOT TRUE(>($0, $9))), AND(>($0, $9), <>($10, 0), IS NOT TRUE(>($0, $9)), <=($10, $11)))]) - LogicalJoin(condition=[true], joinType=[inner]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalProject(m=[$0], c=[$1], d=[$1]) - LogicalAggregate(group=[{}], m=[MIN($0)], c=[COUNT()]) - LogicalProject(DEPTNO=[$0]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + + + - - - - - - - - + + + + 1000 then null else false end) as caseCol from emp) +where NOT(caseCol)]]> + + + ($5, 1000), null, false)]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalProject(DEPTNO=[$0], NAME=[$1]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - + + ($5, 1000), null)]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalSort(sort0=[$1], dir0=[ASC]) - LogicalProject(DEPTNO=[$0], NAME=[$1]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + - - - - - - - - + + + + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + + + + + + + + + - - - - - - - - + + - - - + + + + + + + + + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - 100)]]> - - - + + + + + + + + + + ($0, 100)]) + LogicalProject(DEPTNO=[$0], NAME=[$1]) + LogicalFilter(condition=[false]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) +]]> + + + + + + + + + + + + + + - - - + + + + ($0, 100)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalJoin(condition=[=($7, $8)], joinType=[semi]) + LogicalTableScan(table=[[scott, EMP]]) + LogicalValues(tuples=[[]]) +]]> + + + + + + + + + + + + + + - - - - - ANY ( + + + + + ANY ( select deptno from dept where emp.job = dept.name) from emp ]]> - - - + + SOME($0, { LogicalProject(DEPTNO=[$0]) LogicalFilter(condition=[=($cor0.JOB, $1)]) @@ -11102,9 +10975,9 @@ LogicalProject(DEPTNO=[$0]) })]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + ($0, $9)), IS NOT TRUE(OR(IS NULL($12), =($10, 0)))), AND(IS TRUE(>($10, $11)), null, IS NOT TRUE(OR(IS NULL($12), =($10, 0))), IS NOT TRUE(>($0, $9))), AND(>($0, $9), IS NOT TRUE(OR(IS NULL($12), =($10, 0))), IS NOT TRUE(>($0, $9)), IS NOT TRUE(>($10, $11))))):BOOLEAN NOT NULL]) LogicalCorrelate(correlation=[$cor0], joinType=[left], requiredColumns=[{2}]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) @@ -11114,9 +10987,9 @@ LogicalProject(EXPR$0=[CAST(OR(AND(IS TRUE(>($0, $9)), IS NOT TRUE(OR(IS NULL($1 LogicalFilter(condition=[=($cor0.JOB, $1)]) LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - + + ($0, $9)), IS NOT TRUE(OR(IS NULL($12), =($10, 0)))), AND(IS TRUE(>($10, $11)), null, IS NOT TRUE(OR(IS NULL($12), =($10, 0))), IS NOT TRUE(>($0, $9))), AND(>($0, $9), IS NOT TRUE(OR(IS NULL($12), =($10, 0))), IS NOT TRUE(>($0, $9)), IS NOT TRUE(>($10, $11))))):BOOLEAN NOT NULL]) LogicalJoin(condition=[=($2, $13)], joinType=[left]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) @@ -11125,223 +10998,382 @@ LogicalProject(EXPR$0=[CAST(OR(AND(IS TRUE(>($0, $9)), IS NOT TRUE(OR(IS NULL($1 LogicalProject(NAME=[$1], DEPTNO=[$0]) LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - - - 1]]> - - - (ITEM($0, 'N_NATIONKEY'), 1)]) - LogicalProject(**=[$0]) - LogicalTableScan(table=[[CATALOG, SALES, CUSTOMER]]) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100) using (deptno)]]> + + + ($5, 100)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + ($5, 100)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + 100)]]> + + + ($5, 100)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + ($5, 100)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + 100) using (deptno)]]> + + + ($5, 100)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + 100) using (deptno)]]> + + + ($5, 100)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + - - - (ITEM($0, 'N_NATIONKEY'), 1)]) - EnumerableTableScan(table=[[CATALOG, SALES, CUSTOMER]]) + + + + + 100) using (deptno)]]> + + + ($5, 100)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - + + + + 100)) s join customer.account on s.deptno = account.acctno]]> + + + ($5, 100)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) ]]> - - - - - - - - + + ($0, 100)]) + LogicalProject(SAL=[$5], DEPTNO=[$7]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalProject(ACCTNO=[$0]) + LogicalTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) ]]> - - - + + + + 10) +where empno > 3 and deptno > 5]]> + + + ($0, 3), >($7, 5))]) + LogicalFilter(condition=[>($7, 10)]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalAggregate(group=[{0}]) - LogicalProject(i=[true]) - LogicalFilter(condition=[<($0, 20)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - - - - - - - + + ($0, 3)]) + LogicalFilter(condition=[>($7, 10)]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + + + + - - - + + + + + + + + + + + + + + + - - - - - 100) -or emp.sal < 100]]> - - - ($0, 100)]) + + + - - - ($0, 100)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - - - - + + + + SOME (select deptno from dept)]]> + + + SOME($0, { +LogicalProject(DEPTNO=[$0]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) +})]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - - - - + + ($0, $9)), <>($10, 0)), AND(>($10, $11), null, <>($10, 0), IS NOT TRUE(>($0, $9))), AND(>($0, $9), <>($10, 0), IS NOT TRUE(>($0, $9)), <=($10, $11)))]) + LogicalJoin(condition=[true], joinType=[inner]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalProject(m=[$0], c=[$1], d=[$1]) + LogicalAggregate(group=[{}], m=[MIN($0)], c=[COUNT()]) + LogicalProject(DEPTNO=[$0]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - + + ($0, $9)), <>($10, 0)), AND(>($10, $11), null, <>($10, 0), IS NOT TRUE(>($0, $9))), AND(>($0, $9), <>($10, 0), IS NOT TRUE(>($0, $9)), <=($10, $11)))]) + LogicalJoin(condition=[true], joinType=[inner]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalProject(m=[$0], c=[$1], d=[$1]) + LogicalAggregate(group=[{}], m=[MIN($0)], c=[COUNT()]) + LogicalProject(DEPTNO=[$0]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - - - + + + + - - - + + - - - + + - - - + + - - - - - + + + + - - - + + - - - + + - - - + + - - - - - + + + + - - - + + - - - + + - - - - - + + + + - - - + + - - - + + - - - - - + + + + - - - + + - - - + + - - - - - + + + + - - - + + - - - + + - - - - - + + + + - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - 3]]> - - - ($2, 3)]) - LogicalAggregate(group=[{0, 1}], agg#0=[COUNT()]) - LogicalProject(SAL=[$5], JOB=[$2]) - LogicalFilter(condition=[AND(IS NULL($5), =($2, 'Clerk'))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + + + + - - - ($2, 3)]) - LogicalProject(SAL=[$0], JOB=['Clerk':VARCHAR(10)], $f2=[$1]) - LogicalAggregate(group=[{0}], agg#0=[COUNT()]) - LogicalProject(SAL=[$5]) - LogicalFilter(condition=[AND(IS NULL($5), =($2, 'Clerk'))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + - - - - - 3]]> - - - ($2, 3)]) - LogicalAggregate(group=[{0, 1}], agg#0=[COUNT()]) - LogicalProject(SAL=[$5], HIREDATE=[$4]) - LogicalFilter(condition=[AND(IS NULL($5), =($4, CURRENT_TIMESTAMP))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + + + + - - - ($2, 3)]) - LogicalProject(SAL=[$0], HIREDATE=[CURRENT_TIMESTAMP], $f2=[$1]) - LogicalAggregate(group=[{0}], agg#0=[COUNT()]) - LogicalProject(SAL=[$5]) - LogicalFilter(condition=[AND(IS NULL($5), =($4, CURRENT_TIMESTAMP))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + - - - - - - - - + + + + + + + - - - + + + + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + + + + + + + - - - - - + + + + - - - + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - + + + + + + + - - - - - e.deptno)]]> - - - ($7, $cor0.DEPTNO)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -})], variablesSet=[[$cor0]]) - LogicalJoin(condition=[=($7, $9)], joinType=[inner]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + + + - - - ($7, $cor0.DEPTNO)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + + + + - - - - - - - - + + - - - + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - - - - - - + + + + + + + - - - + + - - - + + + + 100]]> + + + ($7, 100))]) + LogicalJoin(condition=[=($0, $9)], joinType=[left]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalAggregate(group=[{0, 1}]) - LogicalProject(DEPTNO=[$7], $f9=[+($5, 1)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + ($5, 100)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + + + 1]]> + + + (ITEM($0, 'N_NATIONKEY'), 1)]) + LogicalProject(**=[$0]) + LogicalTableScan(table=[[CATALOG, SALES, CUSTOMER]]) ]]> - - - + + (ITEM($0, 'N_NATIONKEY'), 1)]) + EnumerableTableScan(table=[[CATALOG, SALES, CUSTOMER]]) ]]> - - - - - - - - + + + + + + + - - - + + - - - + + + + + + + - - - - - - - - + + - - - + + + + 7 +group by deptno) d inner join sales.emp e on d.deptno = e.deptno]]> + + + ($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + ($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalFilter(condition=[>($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + 7 and e.sal = e.deptno and d.comm = d.deptno +and d.comm + d.deptno > d.comm/2]]> + + + ($7, 7), =($6, $7), >(+($6, $7), /($6, 2)))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalFilter(condition=[=($5, $7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - + + ($7, 7), =($6, $7), >(+($6, $7), /($6, 2)))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalFilter(condition=[>($7, 7)]) + LogicalFilter(condition=[=($5, $7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + + + 10]]> + + + - - - + + - - - - - + + + + + + + - - - + + - - - - - + + + + 1]]> + + + (2, 1)]) + TableAccessRel(table=[[CATALOG, SALES, EMP]]) + TableAccessRel(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + (2, 1)]) + TableAccessRel(table=[[CATALOG, SALES, EMP]]) + TableAccessRel(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + 7 and e.deptno > 9]]> + + + ($7, 7), >($16, 9))]) + LogicalJoin(condition=[=($7, $16)], joinType=[full]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalAggregate(group=[{}], agg#0=[MIN($0)]) - LogicalProject($f0=[true]) - LogicalFilter(condition=[=($cor0.DEPTNO, +(*(2, $7), 30))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + ($7, 7), >($16, 9))]) + LogicalJoin(condition=[=($7, $16)], joinType=[full]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalAggregate(group=[{}], agg#0=[MIN($0)]) - LogicalProject($f0=[true]) - LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8]) - LogicalFilter(condition=[=($cor0.DEPTNO, $9)]) - LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f9=[+(*(2, $7), 30)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - 0) + + + + + 7]]> + + + ($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + ($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalFilter(condition=[>($7, 7)]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalAggregate(group=[{}], agg#0=[MIN($0)]) - LogicalProject($f0=[true]) - LogicalFilter(condition=[>(+($cor0.DEPTNO, +($7, 30)), 0)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - = (30+e2.deptno)) + + + + + 7]]> + + + ($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + ($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalFilter(condition=[>($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalFilter(condition=[>($7, 7)]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalAggregate(group=[{}], agg#0=[MIN($0)]) - LogicalProject($f0=[true]) - LogicalFilter(condition=[AND(<(+($0, 50), 20), >=($cor0.DEPTNO, +(30, $7)))]) +]]> + + + + + 7 group by deptno) d +inner join sales.emp e on d.deptno = e.deptno +inner join sales.emp f on e.deptno = f.deptno]]> + + + ($7, 7)]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + ($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalFilter(condition=[>($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalFilter(condition=[>($7, 7)]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalAggregate(group=[{}], agg#0=[MIN($0)]) - LogicalProject($f0=[true]) - LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8]) - LogicalFilter(condition=[AND(<(+($0, 50), 20), >=($cor0.DEPTNO, $9))]) - LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f9=[+(30, $7)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - 2 and e1.ename= e2.ename)]]> - - - ($2, 2), =($cor0.ENAME, $0))]) - LogicalProject(ENAME=[$1], EMPNO=[$0], R=[$5]) + + + + + 7 and e.deptno > 9]]> + + + ($16, 9)]) + LogicalJoin(condition=[=($7, $16)], joinType=[left]) + LogicalFilter(condition=[>($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + ($16, 9)]) + LogicalJoin(condition=[=($7, $16)], joinType=[left]) + LogicalFilter(condition=[>($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalFilter(condition=[>($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + 10]]> + + + ($6, 10))]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -}))], variablesSet=[[$cor0]]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - ($2, 2), =($cor0.ENAME, $0))]) - LogicalProject(ENAME=[$1], EMPNO=[$0], R=[$5]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalFilter(condition=[=($cor0.EMPNO, $0)]) - LogicalProject(EMPNO=[$1], i=[true]) - LogicalFilter(condition=[AND(>($2, 2), =($cor0.ENAME, $0))]) - LogicalProject(ENAME=[$1], EMPNO=[$0], R=[$5]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + ($6, 10))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + + + 7) d +inner join sales.emp e on d.deptno = e.deptno]]> + + + ($7, 7)]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalProject(c=[$1], ck=[$1], ENAME=[$0]) - LogicalAggregate(group=[{0}], c=[COUNT()]) - LogicalProject(ENAME=[$0]) - LogicalFilter(condition=[>($2, 2)]) - LogicalProject(ENAME=[$1], EMPNO=[$0], R=[$5]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalProject(EMPNO=[$1], i=[true], ENAME=[$0]) - LogicalFilter(condition=[>($2, 2)]) - LogicalProject(ENAME=[$1], EMPNO=[$0], R=[$5]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - - - - - - - + + ($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + 7) d +inner join sales.emp e on d.deptno = e.deptno]]> + + + ($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + ($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalFilter(condition=[>($7, 7)]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + + + 7) d +inner join sales.emp e on d.deptno = e.deptno]]> + + + ($6, 7)]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + ($6, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalFilter(condition=[>($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + + + 7 and e.deptno > 9]]> + + + ($7, 7)]) + LogicalJoin(condition=[=($7, $16)], joinType=[right]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalFilter(condition=[>($7, 9)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + ($7, 7)]) + LogicalJoin(condition=[=($7, $16)], joinType=[right]) + LogicalFilter(condition=[>($7, 9)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalFilter(condition=[>($7, 9)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + + + 7 +union all select deptno from sales.emp where deptno > 10) d +inner join sales.emp e on d.deptno = e.deptno]]> + + + ($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalProject(DEPTNO=[$7]) + LogicalFilter(condition=[>($7, 10)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + ($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalProject(DEPTNO=[$7]) + LogicalFilter(condition=[>($7, 10)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalFilter(condition=[>($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + + + 7 +union all +select deptno from sales.emp where deptno > 10 +union all +select deptno from sales.emp where deptno > 1) d +inner join sales.emp e on d.deptno = e.deptno]]> + + + ($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalProject(DEPTNO=[$7]) + LogicalFilter(condition=[>($7, 10)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalProject(DEPTNO=[$7]) + LogicalFilter(condition=[>($7, 1)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - + + ($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalProject(DEPTNO=[$7]) + LogicalFilter(condition=[>($7, 10)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalProject(DEPTNO=[$7]) + LogicalFilter(condition=[>($7, 1)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalFilter(condition=[>($7, 1)]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalAggregate(group=[{}], agg#0=[MIN($0)]) - LogicalProject($f0=[true]) - LogicalFilter(condition=[=($cor0.DEPTNO, $0)]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - + + + + 7 or empno < 10 +union all +select empno, deptno from sales.emp where deptno > 10 or empno < deptno +union all +select empno, deptno from sales.emp where deptno > 1) d +inner join sales.emp e on d.deptno = e.deptno]]> + + + ($7, 7), <($0, 10))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) LogicalProject(EMPNO=[$0], DEPTNO=[$7]) + LogicalFilter(condition=[OR(>($7, 10), <($0, $7))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalProject(EMPNO=[$0], DEPTNO=[$7]) + LogicalFilter(condition=[>($7, 1)]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalProject($f0=[$0]) - LogicalAggregate(group=[{}], agg#0=[MIN($0)]) - LogicalProject($f0=[true]) - LogicalFilter(condition=[=($cor2.DEPTNO, $0)]) - LogicalProject(DEPTNO=[$0]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) -]]> - - - - - - - - - - - - - - - - - - ($3, 0), >(CASE(>($3, 0), /($7, $3), null:INTEGER), 1))]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - ($3, 0), CASE(>($3, 0), >(/($7, $3), 1), false))]) + + + ($7, 7), <($0, 10))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalProject(EMPNO=[$0], DEPTNO=[$7]) + LogicalFilter(condition=[OR(>($7, 10), <($0, $7))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalProject(EMPNO=[$0], DEPTNO=[$7]) + LogicalFilter(condition=[>($7, 1)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - 0 and case when MGR > 0 then deptno / MGR else null end > 1]]> - - - - - - - - + + + + 7 +union all select deptno from sales.emp) e +on d.deptno = e.deptno]]> + + + ($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalProject(DEPTNO=[$7]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + ($7, 7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalProject(DEPTNO=[$7]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + + + 0)]]> + + + (+($cor0.DEPTNO, +($7, 30)), 0)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + = (30+e2.deptno))]]> + + + =($cor0.DEPTNO, +(30, $7)))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + =($cor0.DEPTNO, $9))]) + LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f9=[+(30, $7)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3]]> - - - ($9, 3)]) - LogicalJoin(condition=[=($7, $9)], joinType=[left]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + + + + - - - ($9, 3)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + + + - - - - - ANY ( + + + + + ANY ( select deptno from dept where emp.job = dept.name) ]]> - - - + + SOME($0, { LogicalProject(DEPTNO=[$0]) @@ -13032,9 +12962,9 @@ LogicalProject(DEPTNO=[$0]) })], variablesSet=[[$cor0]]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + ($0, $9)), IS NOT TRUE(OR(IS NULL($12), =($10, 0)))), AND(IS TRUE(>($10, $11)), null, IS NOT TRUE(OR(IS NULL($12), =($10, 0))), IS NOT TRUE(>($0, $9))), AND(>($0, $9), IS NOT TRUE(OR(IS NULL($12), =($10, 0))), IS NOT TRUE(>($0, $9)), IS NOT TRUE(>($10, $11))))]) @@ -13046,9 +12976,9 @@ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$ LogicalFilter(condition=[=($cor0.JOB, $1)]) LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - + + ($0, $9), IS NOT TRUE(OR(IS NULL($12), =($10, 0)))), AND(>($0, $9), IS NOT TRUE(OR(IS NULL($12), =($10, 0))), IS NOT TRUE(>($0, $9)), IS NOT TRUE(>($10, $11))))]) LogicalJoin(condition=[=($2, $13)], joinType=[left]) @@ -13058,353 +12988,413 @@ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$ LogicalProject(NAME=[$1], DEPTNO=[$0]) LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - - - - - - - - - + + + + + + + - - - - - - - - + + - - - - - - - - + + - - - - - (select avg(sal) from emp e2 where e1.empno = e2.empno) -order by e1.empno]]> - - - ($5, $12))], joinType=[inner]) - LogicalJoin(condition=[=($7, $9)], joinType=[inner]) - LogicalFilter(condition=[<($7, 10)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalFilter(condition=[<($0, 15)]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) - LogicalAggregate(group=[{0}], EXPR$0=[AVG($1)]) - LogicalProject(EMPNO=[$0], SAL=[$5]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + + + + - - - ($5, $12))], joinType=[inner]) - LogicalJoin(condition=[=($7, $9)], joinType=[inner]) - LogicalFilter(condition=[<($7, 10)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalFilter(condition=[<($0, 15)]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) - LogicalAggregate(group=[{0}], EXPR$0=[AVG($1)]) - LogicalProject(EMPNO=[$0], SAL=[$5]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + - - - - - cast (100.0 as decimal(4, 1))]]> - - - ($5, 100.0:DECIMAL(4, 1))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + - - - ($t10, $t12)], proj#0..8=[{exprs}], $condition=[$t13]) + + + + + + + + - - - - - 10.0]]]> - - - ($0, 10)]) - LogicalTableScan(table=[[CATALOG, SALES, CUSTOMER]]) -]]> - - - ($t0, $t3)], proj#0..2=[{exprs}], $condition=[$t4]) - EnumerableTableScan(table=[[CATALOG, SALES, CUSTOMER]]) + + + - - - - - - - - + + - - - - - - - - - - - + + + + e.deptno)]]> + + + ($7, $cor0.DEPTNO)]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - - - - - - - + + ($7, $cor0.DEPTNO)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + + + + - - - + + - - - - - - - - + + - - - + + + + 2 and e1.ename= e2.ename)]]> + + + ($2, 2), =($cor0.ENAME, $0))]) + LogicalProject(ENAME=[$1], EMPNO=[$0], R=[$5]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +}))], variablesSet=[[$cor0]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + ($2, 2), =($cor0.ENAME, $0))]) + LogicalProject(ENAME=[$1], EMPNO=[$0], R=[$5]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalFilter(condition=[=($cor0.EMPNO, $0)]) + LogicalProject(EMPNO=[$1], i=[true]) + LogicalFilter(condition=[AND(>($2, 2), =($cor0.ENAME, $0))]) + LogicalProject(ENAME=[$1], EMPNO=[$0], R=[$5]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - + + ($2, 2)]) + LogicalProject(ENAME=[$1], EMPNO=[$0], R=[$5]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalProject(EMPNO=[$1], i=[true], ENAME=[$0]) + LogicalFilter(condition=[>($2, 2)]) + LogicalProject(ENAME=[$1], EMPNO=[$0], R=[$5]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - + + + + + + + - - - + + - - - + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + + + + + + - - - - - + + + + - - - + + - - - + + ($5, 0), =($3, $4)), 'more than one distinct value in agg UNIQUE_VALUE'))]) + LogicalAggregate(group=[{0, 2}], groups=[[{0, 2}, {0}]], agg#0=[$SUM0($1)], agg#1=[MIN($1)], agg#2=[MAX($1)], agg#3=[GROUPING($0, $2)]) LogicalProject(DEPTNO=[$7], SAL=[$5], JOB=[$2]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - + + + + - - - + + - - - + + - - - - - + + + + - - - + + - - - + + ($5, 0), =($3, $4)), 'more than one distinct value in agg UNIQUE_VALUE'))]) - LogicalAggregate(group=[{0, 2}], groups=[[{0, 2}, {0}]], agg#0=[$SUM0($1)], agg#1=[MIN($1)], agg#2=[MAX($1)], agg#3=[GROUPING($0, $2)]) + LogicalProject(DEPTNO=[$0], $f2=[$2], $f3=[$3], $f5=[=($4, 1)], $f6=[=($4, 0)]) + LogicalAggregate(group=[{0, 2}], groups=[[{0, 2}, {0}]], agg#0=[$SUM0($1)], agg#1=[MIN($1)], agg#2=[GROUPING($0, $2)]) LogicalProject(DEPTNO=[$7], SAL=[$5], JOB=[$2]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - + + diff --git a/core/src/test/resources/org/apache/calcite/test/SqlHintsConverterTest.xml b/core/src/test/resources/org/apache/calcite/test/SqlHintsConverterTest.xml index 658e7cf454e1..4bb56c21cdb5 100644 --- a/core/src/test/resources/org/apache/calcite/test/SqlHintsConverterTest.xml +++ b/core/src/test/resources/org/apache/calcite/test/SqlHintsConverterTest.xml @@ -16,84 +16,61 @@ ~ limitations under the License. --> - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - + + - - - - - + + + + + + + + + + + + ( select /*+ resource(cpu='2') */ avg(e2.sal) from emp e2 where e2.deptno = d1.deptno)]]> - - - + + - - - - - + + + + ( @@ -101,9 +78,9 @@ select /*+ properties(k1='v1', k2='v2'), index(ename), no_hash_join */ avg(e2.sal) from emp e2 where e2.deptno = d1.deptno)]]> - - - + + - - - - - + + + + ( @@ -124,9 +101,9 @@ select /*+ resource(cpu='2'), index(ename), no_hash_join */ avg(e2.sal) from emp e2 where e2.deptno = d1.deptno)]]> - - - + + - - - - - + + + + ( select /*+ resource(cpu='2') */ avg(e2.sal) from emp e2 where e2.deptno = d1.deptno)]]> - - - + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + - - - - - + + + + - - - + + - - - - - + + + + - - - + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + - - - - - + + + + - - - + + - - + + diff --git a/core/src/test/resources/org/apache/calcite/test/SqlLimitsTest.xml b/core/src/test/resources/org/apache/calcite/test/SqlLimitsTest.xml index c662841d589b..35bbf4371276 100644 --- a/core/src/test/resources/org/apache/calcite/test/SqlLimitsTest.xml +++ b/core/src/test/resources/org/apache/calcite/test/SqlLimitsTest.xml @@ -16,9 +16,9 @@ ~ limitations under the License. --> - - - + + - - + + diff --git a/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml b/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml index 25e7b6bcec78..fa6780f02f26 100644 --- a/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml +++ b/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml @@ -16,513 +16,558 @@ ~ limitations under the License. --> - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + (SELECT min(emp.empno) FROM emp) +]]> + + + ($1, $2)]) + LogicalJoin(condition=[true], joinType=[left]) + LogicalAggregate(group=[{0}], agg#0=[MAX($1)]) + LogicalProject(DEPTNO=[$7], EMPNO=[$0]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalAggregate(group=[{}], EXPR$0=[MIN($0)]) + LogicalProject(EMPNO=[$0]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + (SELECT min(emp.empno) FROM emp) as b +from emp +group by deptno +]]> + + + ($1, $2)]) + LogicalJoin(condition=[true], joinType=[left]) + LogicalAggregate(group=[{0}], agg#0=[MAX($1)]) + LogicalProject(DEPTNO=[$7], EMPNO=[$0]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalAggregate(group=[{}], EXPR$0=[MIN($0)]) + LogicalProject(EMPNO=[$0]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + - - - + + - - - - - + + + + - - - + + - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + '' or job IN ('810000', '820000') +GROUP by deptno, job]]> + + + ($2, ''), =($2, '810000'), =($2, '820000'))]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + ($0, 1)]) LogicalAggregate(group=[{}], E=[COUNT()]) LogicalProject(EMPNO=[$0]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - 1]]> - - - - - all (10, 20)]]> - - - ($7, 10), >($7, 20))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + 1]]> + + + + + + + + - - - - - + + + + + + + - - - - - - - - + + + + - - - - - - - - ($1, 10)]) - LogicalAggregate(group=[{}], EXPR$0=[SUM($0)], agg#1=[SUM($1)]) - LogicalProject($f0=[+($5, $5)], SAL=[$5]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + + + + - - - 10]]> - - - - - + + + + + + + all (10, 20)]]> + + + ($7, 10), >($7, 20))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + - - - + + - - - - - + + + + - - - + + - - - - - + + + + - - - + + - - - - - + + + + - - - + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1) -]]> - - - ($0, 1)]) - LogicalSnapshot(period=[$cor0.ROWTIME]) - LogicalTableScan(table=[[CATALOG, SALES, PRODUCTS_TEMPORAL]]) -]]> - - - - - - - - - - - - - - - - + + + + + + + - - - - - + + + + - - - + + - - - - - - - - - - - - - + + + + - - - + + - - - - - + + + + - - - + + - - - - - - - - - - - - - - - - - - - - - (COUNT(DISTINCT $7) OVER (ORDER BY $0 ROWS 10 PRECEDING), 0), $SUM0(DISTINCT $7) OVER (ORDER BY $0 ROWS 10 PRECEDING), null:INTEGER)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + (select avg(e2.sal) from emp e2 + where e2.deptno = d1.deptno group by cube(comm, mgr))]]> + + + ($5, $12))], joinType=[inner]) + LogicalJoin(condition=[=($7, $9)], joinType=[inner]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + LogicalAggregate(group=[{0}], agg#0=[SINGLE_VALUE($1)]) + LogicalProject(DEPTNO=[$2], EXPR$0=[$3]) + LogicalAggregate(group=[{0, 1, 2}], groups=[[{0, 1, 2}, {0, 2}, {1, 2}, {2}]], EXPR$0=[AVG($3)]) + LogicalProject(COMM=[$6], MGR=[$3], DEPTNO=[$7], SAL=[$5]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + - - - + + - - - - - + + + + + + + - - - - - - - - + + + + (select avg(e2.sal) from emp e2 + where e2.deptno = d1.deptno)]]> + + + ($5, $12))], joinType=[inner]) + LogicalJoin(condition=[=($7, $9)], joinType=[inner]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + LogicalAggregate(group=[{0}], EXPR$0=[AVG($1)]) + LogicalProject(DEPTNO=[$7], SAL=[$5]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + + + + - - - - - - - - + + + + (select avg(sal) from emp e2 where e1.empno = e2.empno)]]> + + + ($5, $12))], joinType=[inner]) + LogicalJoin(condition=[=($7, $9)], joinType=[inner]) + LogicalFilter(condition=[<($7, 10)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalFilter(condition=[<($0, 15)]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + LogicalAggregate(group=[{0}], EXPR$0=[AVG($1)]) + LogicalProject(EMPNO=[$0], SAL=[$5]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + (select avg(sal) from emp e2 where e1.empno = e2.empno)]]> + + + ($5, $SCALAR_QUERY({ +LogicalAggregate(group=[{}], EXPR$0=[AVG($0)]) + LogicalProject(SAL=[$5]) + LogicalFilter(condition=[=($cor0.EMPNO, $0)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +})))], variablesSet=[[$cor0]]) + LogicalJoin(condition=[true], joinType=[inner]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - - - - - - + + + + 10]]> + + + ($0, 10)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + - - - - - - - - ($0, 20)]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) - LogicalValues(tuples=[[{ 45 }, { 67 }]]) + + + - - - 20 union all - values (45), (67))]]> - - - - - + + + + - - - - - - - - + + - - - - - - - - + + + + 1) ]]> - - - - - - - - (COUNT($5) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), 0), $SUM0($5) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), null:INTEGER)], EXPR$1=[CASE(>(COUNT($7) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), 0), $SUM0($7) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), null:INTEGER)], EXPR$2=[CASE(>=(COUNT() OVER (PARTITION BY $2 ORDER BY $4 ROWS 3 PRECEDING), 2), CASE(>(COUNT($7) OVER (PARTITION BY $2 ORDER BY $4 ROWS 3 PRECEDING), 0), $SUM0($7) OVER (PARTITION BY $2 ORDER BY $4 ROWS 3 PRECEDING), null:INTEGER), null:NULL)]) - LogicalFilter(condition=[>(-($7, $5), 999)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + ($0, 1)]) + LogicalSnapshot(period=[$cor0.ROWTIME]) + LogicalTableScan(table=[[CATALOG, SALES, PRODUCTS_TEMPORAL]]) ]]> - - - 999 -window w1 as (partition by job order by hiredate rows 2 preceding), - w2 as (partition by job order by hiredate rows 3 preceding disallow partial), - w3 as (partition by job order by hiredate range interval '1' second preceding)]]> - - - - - + + + + + + + - - - - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - + + + + + + + - - - - - - - - ($4, 1), >($5, 1))]) - LogicalProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4.X], Y=[$4.Y], unit=[$4.unit], M=[$5.M], A=[$5.SUB.A], B=[$5.SUB.B]) - LogicalTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]]) + + + + + + + + - - - 1 - and coord.y > 1 - ) as view -where - fname = 'john']]> - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - - - - - (COUNT($5) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), 0), $SUM0($5) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), null:INTEGER)], EXPR$1=[CAST(/(CASE(>(COUNT($5) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), 0), $SUM0($5) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), null:INTEGER), COUNT($5) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING))):INTEGER]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - - - - + + + + + + + - - - - - - - - - - - + + + + + + + - - - - - - - - + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - + + + + - - - + + - - - - - - - - + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + + + - - - - - + + + + - - - + + - - - - - 5]]> - - - ($0, 5)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + + + + - - - - - 5]]> - - - ($0, 5)]) - LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10]) - LogicalJoin(condition=[=($7, $9)], joinType=[inner]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) -]]> - - - - - + + + + + + + - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - + + + + + + + - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - (COUNT($5) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), 0), $SUM0($5) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), null:INTEGER)], EXPR$1=[/(CASE(>(COUNT(CAST($5):REAL NOT NULL) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), 0), $SUM0(CAST($5):REAL NOT NULL) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), null:REAL), COUNT(CAST($5):REAL NOT NULL) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + - - - - - - - - + + + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + ($1, 10)]) + LogicalAggregate(group=[{}], EXPR$0=[SUM($0)], agg#1=[SUM($1)]) + LogicalProject($f0=[+($5, $5)], SAL=[$5]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - 5]]> - - - ($0, 5)]) - Sample(mode=[bernoulli], rate=[0.5], repeatableSeed=[-]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + 10]]> + + + + + 10]]> + + + (+($1, $2), 10)]) + LogicalAggregate(group=[{0}], agg#0=[SUM($1)], agg#1=[SUM($2)]) + LogicalProject(DEPTNO=[$7], $f1=[CASE(SEARCH($7, Sarg[1, 2]), 0, 1)], $f2=[CASE(SEARCH($7, Sarg[3, 4]), 0, 1)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - 5]]> - - - ($0, 5)]) - Sample(mode=[bernoulli], rate=[0.5], repeatableSeed=[99]) - LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10]) - LogicalJoin(condition=[=($7, $9)], joinType=[inner]) - Sample(mode=[bernoulli], rate=[0.1], repeatableSeed=[1]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + + + + + 0)]]> + + + ($1, 0)]) + LogicalAggregate(group=[{0}], agg#0=[SUM($0)]) + LogicalProject(DEPTNO=[$0]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - - - 5]]> - - - ($0, 5)]) - Sample(mode=[system], rate=[0.5], repeatableSeed=[-]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + + + + - - - - - 5]]> - - - ($0, 5)]) - Sample(mode=[system], rate=[0.5], repeatableSeed=[99]) - LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10]) - LogicalJoin(condition=[=($7, $9)], joinType=[inner]) - Sample(mode=[system], rate=[0.1], repeatableSeed=[1]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + + + + + + + + - - - - - - - - + + + + - - - - - 10]]> - - - + + ($0, 10)]) + LogicalFilter(condition=[=($7, $cor0.DEPTNO)]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - - - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - + + - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + - - - 2 +and deptno in ( + select case when true then deptno else null end from emp)]]> + + + ($2, 2), IN($0, { +LogicalProject(EXPR$0=[CAST($7):INTEGER]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +}))]) + LogicalAggregate(group=[{0}], S=[SUM($1)], agg#1=[COUNT()]) + LogicalProject(DEPTNO=[$7], SAL=[$5]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + + + + ($2, 0)), AND(<($3, $2), null, <>($2, 0), IS NULL($6)))]) + LogicalJoin(condition=[=($4, $5)], joinType=[left]) + LogicalProject(DEPTNO=[$0], NAME=[$1], $f0=[$2], $f1=[$3], DEPTNO0=[$0]) + LogicalJoin(condition=[true], joinType=[inner]) LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + LogicalAggregate(group=[{}], agg#0=[COUNT()], agg#1=[COUNT($0)]) + LogicalProject(EXPR$0=[CAST($7):INTEGER], $f1=[true]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalAggregate(group=[{0}], agg#0=[MIN($1)]) + LogicalProject(EXPR$0=[CAST($7):INTEGER], $f1=[true]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - 5 -and (deptno = 8 or empno < 100)]]> - - - ($7, 5), OR(=($7, 8), <($0, 100)))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - 10) -select empno from emp2 where deptno < 30 -union all -select deptno from emp]]> - - - ($7, 10)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalProject(DEPTNO=[$7]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + + + + ($5, 1000)]) + LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[null:VARCHAR(10)], MGR=[null:INTEGER], HIREDATE=[null:TIMESTAMP(0)], SAL=[null:INTEGER], COMM=[null:INTEGER], DEPTNO=[20], SLACKER=[null:BOOLEAN]) + LogicalValues(tuples=[[{ 10, 'Fred' }]]) ]]> - - - - - = emp.deptno) - select 1 from dept2 where deptno <= emp.deptno)]]> - - - =($0, $cor1.DEPTNO)]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) -]]> - - - - - 10) select count(*) from dept2) as c -from emp]]> - - - ($0, 10)]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + + + + + + + + - - - - - - - - + + + + + + + ($5, 1000)]) + LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[null:VARCHAR(10)], MGR=[null:INTEGER], HIREDATE=[null:TIMESTAMP(0)], SAL=[null:INTEGER], COMM=[null:INTEGER], DEPTNO=[20], SLACKER=[null:BOOLEAN]) + LogicalValues(tuples=[[{ 150, 'Fred' }]]) ]]> - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - = emp.deptno) - select 1 from dept2 where deptno <= emp.deptno)]]> - - - =($0, $2)], joinType=[inner]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) - LogicalAggregate(group=[{0}]) - LogicalProject(DEPTNO=[$7]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - 10) -select x from w where x < 30 union all select deptno from dept]]> - - - ($0, 10)]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) - LogicalProject(DEPTNO=[$0]) + + + + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - ($2, 0)), AND(<($3, $2), null, <>($2, 0), IS NULL($6)))]) - LogicalJoin(condition=[=($4, $5)], joinType=[left]) - LogicalProject(DEPTNO=[$0], NAME=[$1], $f0=[$2], $f1=[$3], DEPTNO0=[$0]) - LogicalJoin(condition=[true], joinType=[inner]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) - LogicalAggregate(group=[{}], agg#0=[COUNT()], agg#1=[COUNT($0)]) - LogicalProject(EXPR$0=[CAST($7):INTEGER], $f1=[true]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalAggregate(group=[{0}], agg#0=[MIN($1)]) - LogicalProject(EXPR$0=[CAST($7):INTEGER], $f1=[true]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + + + + - - - - - - - - =($10, $9)))]) - LogicalJoin(condition=[=($11, $12)], joinType=[left]) - LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f0=[$9], $f1=[$10], DEPTNO0=[$7]) - LogicalJoin(condition=[true], joinType=[inner]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalAggregate(group=[{}], agg#0=[COUNT()], agg#1=[COUNT($0)]) - LogicalProject(EXPR$0=[CAST($0):INTEGER], $f1=[true]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) - LogicalAggregate(group=[{0}], agg#0=[MIN($1)]) - LogicalProject(EXPR$0=[CAST($0):INTEGER], $f1=[true]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + + + + + + + + - - - - - - - - + + + + dept.deptno + 5)]]> + + + ($0, +($cor0.DEPTNO0, 5))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +}))], joinType=[left]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + 5)]]> + + + ($0, 5)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +}))], joinType=[left]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - - - 5) -from emp]]> - - - ($3, 5)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - =($10, $9)))]) - LogicalJoin(condition=[=($11, $12)], joinType=[left]) - LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f0=[$9], $f1=[$10], DEPTNO0=[$7]) - LogicalJoin(condition=[true], joinType=[inner]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalAggregate(group=[{}], agg#0=[COUNT()], agg#1=[COUNT($0)]) - LogicalProject(MGR=[$3], $f1=[true]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalAggregate(group=[{0}], agg#0=[MIN($1)]) - LogicalProject(MGR=[$3], $f1=[true]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - prev(up.mgr)) as mr]]> - - - (PREV(UP.$3, 0), PREV(UP.$3, 1))]], inputFields=[[EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, SLACKER]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + + + + - - - - - prev(up.mgr)) as mr]]> - - - (PREV(UP.$3, 0), PREV(UP.$3, 1))]], inputFields=[[EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, SLACKER]]) + + + + + + + + - - - - - prev(up.mgr)) as mr]]> - - - (PREV(UP.$3, 0), PREV(UP.$3, 1))]], inputFields=[[EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, SLACKER]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + + + + - - - - - prev(up.mgr)) as mr]]> - - - (PREV(UP.$3, 0), PREV(UP.$3, 1))]], inputFields=[[EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, SLACKER]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + + + + - - - - - NEXT(up.mgr) - ) mr]]> - - - (PREV(UP.$3, 0), NEXT(PREV(UP.$3, 0), 1))]], inputFields=[[EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, SLACKER]]) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + prev(up.mgr)) as mr]]> + + + (PREV(UP.$3, 0), PREV(UP.$3, 1))]], inputFields=[[EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, SLACKER]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + prev(up.mgr)) as mr]]> + + + (PREV(UP.$3, 0), PREV(UP.$3, 1))]], inputFields=[[EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, SLACKER]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + prev(up.mgr)) as mr]]> + + + (PREV(UP.$3, 0), PREV(UP.$3, 1))]], inputFields=[[EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, SLACKER]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + prev(up.mgr)) as mr]]> + + + (PREV(UP.$3, 0), PREV(UP.$3, 1))]], inputFields=[[EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, SLACKER]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + prev(up.mgr)) as mr]]> + + + (PREV(UP.$3, 0), PREV(UP.$3, 1))]], inputFields=[[EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, SLACKER]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + NEXT(up.mgr) + ) mr]]> + + + (PREV(UP.$3, 0), NEXT(PREV(UP.$3, 0), 1))]], inputFields=[[EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, SLACKER]]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - + + + + PREV(DOWN.mgr) ) AS T]]> - - - + + (PREV(UP.$3, 0), LAST(DOWN.$3, 1))]], inputFields=[[EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, SLACKER]]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - + + + + PREV(LAST(DOWN.mgr, 1), 1) ) AS T]]> - - - + + (PREV(UP.$3, 0), PREV(LAST(DOWN.$3, 1), 1))]], inputFields=[[EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, SLACKER]]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - + + + + NEXT(up.mgr) ) mr]]> - - - + + (PREV(UP.$3, 0), NEXT(PREV(UP.$3, 0), 1))]], inputFields=[[EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, SLACKER]]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - 15 - ELSE - UP.mgr > 20 - END -) AS T]]> - - - (PREV(UP.$3, 0), 15), >(PREV(UP.$3, 0), 20))]], inputFields=[[EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, SLACKER]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - + + + + - - - + + - - - - - - - - - - - - - + + + + - - - + + - - - - - - - - + + + + + + + - - - - - - - - + + + + 5 +and (deptno = 8 or empno < 100)]]> + + + ($7, 5), OR(=($7, 8), <($0, 100)))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + - - - - - prev(up.mgr)) as mr]]> - - - (PREV(UP.$3, 0), PREV(UP.$3, 1))]], inputFields=[[EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, SLACKER]]) + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + - - - - - - - - + + + + - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - + + + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - + + + + - - - + + - - - - - + + + + - - - + + - - - - - + + + + - - - + + - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - (select min(deptno) * 2 + 10 from EMP)]]> - - - ($7, $9)]) - LogicalJoin(condition=[true], joinType=[left]) + + + + + + + + - - - - - (values 10)]]> - - - ($7, $9)]) - LogicalJoin(condition=[true], joinType=[left]) + LogicalAggregate(group=[{}], agg#0=[MIN($0)]) + LogicalProject($f0=[true]) + LogicalFilter(condition=[=($cor0.DEPTNO, $0)]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) +]]> + + + + + + + + + + + + + + + + =($10, $9)))]) + LogicalJoin(condition=[=($11, $12)], joinType=[left]) + LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f0=[$9], $f1=[$10], DEPTNO0=[$7]) + LogicalJoin(condition=[true], joinType=[inner]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalAggregate(group=[{}], agg#0=[COUNT()], agg#1=[COUNT($0)]) + LogicalProject(EXPR$0=[CAST($0):INTEGER], $f1=[true]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + LogicalAggregate(group=[{0}], agg#0=[MIN($1)]) + LogicalProject(EXPR$0=[CAST($0):INTEGER], $f1=[true]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) +]]> + + + + + 5) +from emp]]> + + + ($3, 5)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - (select deptno -from EMP order by deptno limit 1)]]> - - - ($7, $9)]) - LogicalJoin(condition=[true], joinType=[left]) + + + + + + + + - - - - - - - - + + + + + + + - - - - - 10]]> - - - (+($1, $2), 10)]) - LogicalAggregate(group=[{0}], agg#0=[SUM($1)], agg#1=[SUM($2)]) - LogicalProject(DEPTNO=[$7], $f1=[CASE(SEARCH($7, Sarg[1, 2]), 0, 1)], $f2=[CASE(SEARCH($7, Sarg[3, 4]), 0, 1)]) + + + + + + + + =($10, $9)))]) + LogicalJoin(condition=[=($11, $12)], joinType=[left]) + LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f0=[$9], $f1=[$10], DEPTNO0=[$7]) + LogicalJoin(condition=[true], joinType=[inner]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - 0)]]> - - - ($1, 0)]) - LogicalAggregate(group=[{0}], agg#0=[SUM($0)]) - LogicalProject(DEPTNO=[$0]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - - - (SELECT min(emp.empno) FROM emp) + + + + + + + + - - - + + + + + + + ($1, $2)]) - LogicalJoin(condition=[true], joinType=[left]) - LogicalAggregate(group=[{0}], agg#0=[MAX($1)]) - LogicalProject(DEPTNO=[$7], EMPNO=[$0]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalAggregate(group=[{}], EXPR$0=[MIN($0)]) - LogicalProject(EMPNO=[$0]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) +}))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - (SELECT min(emp.empno) FROM emp) as b -from emp -group by deptno + + + + + + + + - - - ($1, $2)]) - LogicalJoin(condition=[true], joinType=[left]) - LogicalAggregate(group=[{0}], agg#0=[MAX($1)]) - LogicalProject(DEPTNO=[$7], EMPNO=[$0]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalAggregate(group=[{}], EXPR$0=[MIN($0)]) - LogicalProject(EMPNO=[$0]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + - - - - - - - - + + + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - 100]]> - - - ($0, 100)]) - LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], SLACKER=[$8]) - LogicalFilter(condition=[AND(=($7, 20), >($5, 1000))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - ($5, 1000)]) - LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[null:VARCHAR(10)], MGR=[null:INTEGER], HIREDATE=[null:TIMESTAMP(0)], SAL=[null:INTEGER], COMM=[null:INTEGER], DEPTNO=[20], SLACKER=[null:BOOLEAN]) - LogicalValues(tuples=[[{ 150, 'Fred' }]]) + + + + + + + + - - - - - - - - ($5, 1000)]) - LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[null:VARCHAR(10)], MGR=[null:INTEGER], HIREDATE=[null:TIMESTAMP(0)], SAL=[null:INTEGER], COMM=[null:INTEGER], DEPTNO=[20], SLACKER=[null:BOOLEAN]) - LogicalValues(tuples=[[{ 10, 'Fred' }]]) + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + (COUNT($5) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), 0), $SUM0($5) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), null:INTEGER)], EXPR$1=[CAST(/(CASE(>(COUNT($5) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), 0), $SUM0($5) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), null:INTEGER), COUNT($5) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING))):INTEGER]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + + + + + + + (COUNT($5) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), 0), $SUM0($5) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), null:INTEGER)], EXPR$1=[/(CASE(>(COUNT(CAST($5):REAL NOT NULL) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), 0), $SUM0(CAST($5):REAL NOT NULL) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), null:REAL), COUNT(CAST($5):REAL NOT NULL) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + - - - - - - - - + + + + + + + + + + - - - - - + + + + (COUNT($5) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), 0), $SUM0($5) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), null:INTEGER)], EXPR$1=[CASE(>(COUNT($7) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), 0), $SUM0($7) OVER (PARTITION BY $2 ORDER BY $4 ROWS 2 PRECEDING), null:INTEGER)], EXPR$2=[CASE(>=(COUNT() OVER (PARTITION BY $2 ORDER BY $4 ROWS 3 PRECEDING), 2), CASE(>(COUNT($7) OVER (PARTITION BY $2 ORDER BY $4 ROWS 3 PRECEDING), 0), $SUM0($7) OVER (PARTITION BY $2 ORDER BY $4 ROWS 3 PRECEDING), null:INTEGER), null:NULL)]) + LogicalFilter(condition=[>(-($7, $5), 999)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (select avg(sal) from emp e2 where e1.empno = e2.empno)]]> - - - ($5, $12))], joinType=[inner]) - LogicalJoin(condition=[=($7, $9)], joinType=[inner]) - LogicalFilter(condition=[<($7, 10)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalFilter(condition=[<($0, 15)]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) - LogicalAggregate(group=[{0}], EXPR$0=[AVG($1)]) - LogicalProject(EMPNO=[$0], SAL=[$5]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - (select avg(e2.sal) from emp e2 - where e2.deptno = d1.deptno)]]> - - - ($5, $12))], joinType=[inner]) - LogicalJoin(condition=[=($7, $9)], joinType=[inner]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) - LogicalAggregate(group=[{0}], EXPR$0=[AVG($1)]) - LogicalProject(DEPTNO=[$7], SAL=[$5]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - - - - - - - - - - - - - - - - - (select avg(e2.sal) from emp e2 - where e2.deptno = d1.deptno group by cube(comm, mgr))]]> - - - ($5, $12))], joinType=[inner]) - LogicalJoin(condition=[=($7, $9)], joinType=[inner]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) - LogicalAggregate(group=[{0}], agg#0=[SINGLE_VALUE($1)]) - LogicalProject(DEPTNO=[$2], EXPR$0=[$3]) - LogicalAggregate(group=[{0, 1, 2}], groups=[[{0, 1, 2}, {0, 2}, {1, 2}, {2}]], EXPR$0=[AVG($3)]) - LogicalProject(COMM=[$6], MGR=[$3], DEPTNO=[$7], SAL=[$5]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - - - - - - - - - - - - - - - - - - - - 999 +window w1 as (partition by job order by hiredate rows 2 preceding), + w2 as (partition by job order by hiredate rows 3 preceding disallow partial), + w3 as (partition by job order by hiredate range interval '1' second preceding)]]> + + + + + + + + - - - - - - - - + + + + - - - - - - - - + + - - - - - - - - + + + + - - - - - - - - + + - - - - - + + + + - - - + + - - - - - + + + + - - - + + - - - - - + + + + 15 + ELSE + UP.mgr > 20 + END +) AS T]]> + + + (PREV(UP.$3, 0), 15), >(PREV(UP.$3, 0), 20))]], inputFields=[[EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, SLACKER]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + + + + + + + + + + + + + + + + + - - - + + - - - - - + + + + - - - + + - - - - - - - - + + + + + + + - - - - - some ( - select deptno from dept)]]> - - - SOME($7, { -LogicalProject(DEPTNO=[$0]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) -})]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - some (10, 20)]]> - - - ($7, 10), >($7, 20))]) + + + + + + + + - - - - - + + + + + + + + + + + + 5 group by n_regionkey]]> + + + (ITEM($0, 'N_NATIONKEY'), 5)]) + LogicalProject(**=[$0]) + LogicalTableScan(table=[[CATALOG, SALES, NATION]]) +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + 5]]> + + + ($0, 5)]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + 5]]> + + + ($0, 5)]) + Sample(mode=[bernoulli], rate=[0.5], repeatableSeed=[-]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + 5]]> + + + ($0, 5)]) + Sample(mode=[bernoulli], rate=[0.5], repeatableSeed=[99]) + LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10]) + LogicalJoin(condition=[=($7, $9)], joinType=[inner]) + Sample(mode=[bernoulli], rate=[0.1], repeatableSeed=[1]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - - - - - - + + + + 5]]> + + + ($0, 5)]) + LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10]) + LogicalJoin(condition=[=($7, $9)], joinType=[inner]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) +]]> + + + + + 5]]> + + + ($0, 5)]) + Sample(mode=[system], rate=[0.5], repeatableSeed=[-]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + 5]]> + + + ($0, 5)]) + Sample(mode=[system], rate=[0.5], repeatableSeed=[99]) + LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10]) + LogicalJoin(condition=[=($7, $9)], joinType=[inner]) + Sample(mode=[system], rate=[0.1], repeatableSeed=[1]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + ($4, 1), >($5, 1))]) + LogicalProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4.X], Y=[$4.Y], unit=[$4.unit], M=[$5.M], A=[$5.SUB.A], B=[$5.SUB.B]) + LogicalTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]]) ]]> - - - - - - - - + + 1 + and coord.y > 1 + ) as view +where + fname = 'john']]> + + + + + + + + - - - - - - - - + + + + + + + - - - - - table Shipments, - TIMECOL => descriptor(rowtime), - SIZE => INTERVAL '1' MINUTE))]]> - - - + + + + + + + - - - - - table Shipments, - SIZE => INTERVAL '1' MINUTE, - TIMECOL => descriptor(rowtime)))]]> - - - + + + + (COUNT(DISTINCT $7) OVER (ORDER BY $0 ROWS 10 PRECEDING), 0), $SUM0(DISTINCT $7) OVER (ORDER BY $0 ROWS 10 PRECEDING), null:INTEGER)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + - - - - - - - - + + + + + + + - - - - - - - - + + + + - - - - - table Shipments, - TIMECOL => descriptor(rowtime), - SLIDE => INTERVAL '1' MINUTE, - SIZE => INTERVAL '2' MINUTE))]]> - - - - - - - - table Shipments, - SLIDE => INTERVAL '1' MINUTE, - TIMECOL => descriptor(rowtime), - SIZE => INTERVAL '2' MINUTE))]]> - - - - - - - - - - - + + + + + + + 100]]> + + + ($0, 100)]) + LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], SLACKER=[$8]) + LogicalFilter(condition=[AND(=($7, 20), >($5, 1000))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + + + + - - - - - table Shipments, - TIMECOL => descriptor(rowtime), - KEY => descriptor(orderId), - SIZE => INTERVAL '10' MINUTE))]]> - - - + + + + + + + - - - - - table Shipments, - KEY => descriptor(orderId), - TIMECOL => descriptor(rowtime), - SIZE => INTERVAL '10' MINUTE))]]> - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + some ( + select deptno from dept)]]> + + + SOME($7, { +LogicalProject(DEPTNO=[$0]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) +})]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +]]> + + + + + 0) as everyempnogtzero + FROM emp AS e group by e.sal]]> + + + ($0, 0)]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalAggregate(group=[{0}]) - LogicalProject(EMPNO=[$0]) - LogicalFilter(condition=[=($0, 2)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + some (10, 20)]]> + + + ($7, 10), >($7, 20))]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - + + + + - - - + + - - - - - 10) select count(*) from dept2) as c -from emp]]> - - - ($0, 10)]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) -})]) + + + + + + + + - - - - - = emp.deptno) - select 1 from dept2 where deptno <= emp.deptno)]]> - - - =($0, $cor1.DEPTNO)]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) -})], variablesSet=[[$cor1]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + (select min(deptno) * 2 + 10 from EMP)]]> + + + ($7, $9)]) + LogicalJoin(condition=[true], joinType=[left]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalProject(EXPR$0=[+(*($0, 2), 10)]) + LogicalAggregate(group=[{}], agg#0=[MIN($0)]) + LogicalProject(DEPTNO=[$7]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - + + + + (select deptno +from EMP order by deptno limit 1)]]> + + + ($7, $9)]) + LogicalJoin(condition=[true], joinType=[left]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalSort(sort0=[$0], dir0=[ASC], fetch=[1]) + LogicalProject(DEPTNO=[$7]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + - - - - - - - - = emp.deptno) - select 1 from dept2 where deptno <= emp.deptno)]]> - - - + + =($0, $cor1.DEPTNO)]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) -})], variablesSet=[[$cor1]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - - - - - - - - - 5)]]> - - - + + + + (values 10)]]> + + + ($0, 5)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -}))], joinType=[left]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + LogicalFilter(condition=[>($7, $9)]) + LogicalJoin(condition=[true], joinType=[left]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalValues(tuples=[[{ 10 }]]) ]]> - - - - - dept.deptno + 5)]]> - - - ($0, +($cor0.DEPTNO0, 5))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -}))], joinType=[left]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + + + + + + + + - - - - - 2 -and deptno in ( - select case when true then deptno else null end from emp)]]> - - - ($2, 2), IN($0, { -LogicalProject(EXPR$0=[CAST($7):INTEGER]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -}))]) - LogicalAggregate(group=[{0}], S=[SUM($1)], agg#1=[COUNT()]) - LogicalProject(DEPTNO=[$7], SAL=[$5]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - + + + + + + + - - - + + + + + + + - - - - - - - - + + + + table Shipments, + TIMECOL => descriptor(rowtime), + SLIDE => INTERVAL '1' MINUTE, + SIZE => INTERVAL '2' MINUTE))]]> + + + - - - - - e.deptno)]]> - - - ($7, $cor0.DEPTNO)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -})], variablesSet=[[$cor0]]) - LogicalJoin(condition=[=($7, $9)], joinType=[inner]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + + + + + table Shipments, + SLIDE => INTERVAL '1' MINUTE, + TIMECOL => descriptor(rowtime), + SIZE => INTERVAL '2' MINUTE))]]> + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + table Shipments, + TIMECOL => descriptor(rowtime), + KEY => descriptor(orderId), + SIZE => INTERVAL '10' MINUTE))]]> + + + - - - - - - - - + + + + table Shipments, + KEY => descriptor(orderId), + TIMECOL => descriptor(rowtime), + SIZE => INTERVAL '10' MINUTE))]]> + + + - - - - - (select avg(sal) from emp e2 where e1.empno = e2.empno)]]> - - - ($5, $SCALAR_QUERY({ -LogicalAggregate(group=[{}], EXPR$0=[AVG($0)]) - LogicalProject(SAL=[$5]) - LogicalFilter(condition=[=($cor0.EMPNO, $0)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -})))], variablesSet=[[$cor0]]) - LogicalJoin(condition=[true], joinType=[inner]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + table Shipments, + TIMECOL => descriptor(rowtime), + SIZE => INTERVAL '1' MINUTE))]]> + + + - - - - - - - - + + + + table Shipments, + SIZE => INTERVAL '1' MINUTE, + TIMECOL => descriptor(rowtime)))]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - 5 group by n_regionkey]]> - - - (ITEM($0, 'N_NATIONKEY'), 5)]) - LogicalProject(**=[$0]) - LogicalTableScan(table=[[CATALOG, SALES, NATION]]) + + + + + + + + - - - - - - - - + + + + - - - - - - - - + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + - - - - - - - - + + + + + + + - - - + + + + + + + + + + - - - - - - - - + + + + ($0, 20)]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + LogicalValues(tuples=[[{ 45 }, { 67 }]]) +]]> + + + 20 union all + values (45), (67))]]> + + + + + - - - - - - - - (COUNT(ITEM($0, 'N_NATIONKEY')) OVER (PARTITION BY ITEM($0, 'REGION') ORDER BY ITEM($0, 'N_NATIONKEY')), 0), $SUM0(ITEM($0, 'N_NATIONKEY')) OVER (PARTITION BY ITEM($0, 'REGION') ORDER BY ITEM($0, 'N_NATIONKEY')), null:ANY)]) - LogicalTableScan(table=[[CATALOG, SALES, NATION]]) + + + + + + + + - - - - - - - - + + + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - + + + + - - - - - - - - + + + + + + + + + + - - - - - 0) as everyempnogtzero - FROM emp AS e group by e.sal]]> - - - ($0, 0)]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + + + + + - - - - - - - - + + + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - + + + + - - - + + + - - - - - 2000) as s2 -from emp -join dept using (deptno) -group by dept.deptno]]> - - - ($5, 2000)]) + + + + + + + + + + + + + e.deptno)]]> + + + ($7, $cor0.DEPTNO)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +})], variablesSet=[[$cor0]]) LogicalJoin(condition=[=($7, $9)], joinType=[inner]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - - - - - - - - - - - - - - + + + + - - - - - - - - + + - - - - - - - - + + + + - - - - - - - - + + - - - - - - - - + + + + - - - - - - - - + + - - - - - - - - + + + + - - - - - - - - + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + (COUNT(ITEM($0, 'N_NATIONKEY')) OVER (PARTITION BY ITEM($0, 'REGION') ORDER BY ITEM($0, 'N_NATIONKEY')), 0), $SUM0(ITEM($0, 'N_NATIONKEY')) OVER (PARTITION BY ITEM($0, 'REGION') ORDER BY ITEM($0, 'N_NATIONKEY')), null:ANY)]) + LogicalTableScan(table=[[CATALOG, SALES, NATION]]) ]]> - - - - - - - - + + + + + + + - - - - - - - - + + + + 10) +select x from w where x < 30 union all select deptno from dept]]> + + + ($0, 10)]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + LogicalProject(DEPTNO=[$0]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) +]]> + + + + + + + + + + + + + 10) select count(*) from dept2) as c +from emp]]> + + + ($0, 10)]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - - - - - - + + + + 10) select count(*) from dept2) as c +from emp]]> + + + ($0, 10)]) LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) +})]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + = emp.deptno) + select 1 from dept2 where deptno <= emp.deptno)]]> + + + =($0, $cor1.DEPTNO)]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) ]]> - - - - - - - - + + + + = emp.deptno) + select 1 from dept2 where deptno <= emp.deptno)]]> + + + =($0, $2)], joinType=[inner]) + LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) + LogicalAggregate(group=[{0}]) + LogicalProject(DEPTNO=[$7]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + = emp.deptno) + select 1 from dept2 where deptno <= emp.deptno)]]> + + + =($0, $cor1.DEPTNO)]) LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) +})], variablesSet=[[$cor1]]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - + + + + = emp.deptno) + select 1 from dept2 where deptno <= emp.deptno)]]> + + + =($0, $cor1.DEPTNO)]) LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) -]]> - - - - - '' or job IN ('810000', '820000') -GROUP by deptno, job]]> - - - ($2, ''), =($2, '810000'), =($2, '820000'))]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - + + + + 10) +select empno from emp2 where deptno < 30 +union all +select deptno from emp]]> + + + ($7, 10)]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalProject(DEPTNO=[$7]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - + + + + + + + - - - + + + + + + + - - - - - - - - + + + + + + + - - - + + + + 2000) as s2 +from emp +join dept using (deptno) +group by dept.deptno]]> + + + ($5, 2000)]) + LogicalJoin(condition=[=($7, $9)], joinType=[inner]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) -})))], variablesSet=[[$cor0]]) - LogicalJoin(condition=[true], joinType=[inner]) LogicalTableScan(table=[[CATALOG, SALES, DEPT]]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - - - - - - - - - - - + + + + + + + - - + + diff --git a/core/src/test/resources/org/apache/calcite/test/TopDownOptTest.xml b/core/src/test/resources/org/apache/calcite/test/TopDownOptTest.xml index db646a6ffb5e..a8315af10511 100644 --- a/core/src/test/resources/org/apache/calcite/test/TopDownOptTest.xml +++ b/core/src/test/resources/org/apache/calcite/test/TopDownOptTest.xml @@ -16,1540 +16,1529 @@ ~ limitations under the License. --> - + - + s.acctno and r.email ($0, $10), <($3, $11))], joinType=[left]) + LogicalProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4.X], Y=[$4.Y], unit=[$4.unit], M=[$5.M], A=[$5.SUB.A], B=[$5.SUB.B]) + LogicalTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]]) + LogicalTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) ]]> ($0, $10), <($3, $11))], joinType=[left], batchSize=[100]) + EnumerableSort(sort0=[$0], sort1=[$3], dir0=[DESC], dir1=[DESC]) + EnumerableProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4.X], Y=[$4.Y], unit=[$4.unit], M=[$5.M], A=[$5.SUB.A], B=[$5.SUB.B]) + EnumerableTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]]) + EnumerableFilter(condition=[OR(AND(>($cor0.CONTACTNO, $0), <($cor0.EMAIL, $1)), AND(>($cor1.CONTACTNO, $0), <($cor1.EMAIL, $1)), AND(>($cor2.CONTACTNO, $0), <($cor2.EMAIL, $1)), AND(>($cor3.CONTACTNO, $0), <($cor3.EMAIL, $1)), AND(>($cor4.CONTACTNO, $0), <($cor4.EMAIL, $1)), AND(>($cor5.CONTACTNO, $0), <($cor5.EMAIL, $1)), AND(>($cor6.CONTACTNO, $0), <($cor6.EMAIL, $1)), AND(>($cor7.CONTACTNO, $0), <($cor7.EMAIL, $1)), AND(>($cor8.CONTACTNO, $0), <($cor8.EMAIL, $1)), AND(>($cor9.CONTACTNO, $0), <($cor9.EMAIL, $1)), AND(>($cor10.CONTACTNO, $0), <($cor10.EMAIL, $1)), AND(>($cor11.CONTACTNO, $0), <($cor11.EMAIL, $1)), AND(>($cor12.CONTACTNO, $0), <($cor12.EMAIL, $1)), AND(>($cor13.CONTACTNO, $0), <($cor13.EMAIL, $1)), AND(>($cor14.CONTACTNO, $0), <($cor14.EMAIL, $1)), AND(>($cor15.CONTACTNO, $0), <($cor15.EMAIL, $1)), AND(>($cor16.CONTACTNO, $0), <($cor16.EMAIL, $1)), AND(>($cor17.CONTACTNO, $0), <($cor17.EMAIL, $1)), AND(>($cor18.CONTACTNO, $0), <($cor18.EMAIL, $1)), AND(>($cor19.CONTACTNO, $0), <($cor19.EMAIL, $1)), AND(>($cor20.CONTACTNO, $0), <($cor20.EMAIL, $1)), AND(>($cor21.CONTACTNO, $0), <($cor21.EMAIL, $1)), AND(>($cor22.CONTACTNO, $0), <($cor22.EMAIL, $1)), AND(>($cor23.CONTACTNO, $0), <($cor23.EMAIL, $1)), AND(>($cor24.CONTACTNO, $0), <($cor24.EMAIL, $1)), AND(>($cor25.CONTACTNO, $0), <($cor25.EMAIL, $1)), AND(>($cor26.CONTACTNO, $0), <($cor26.EMAIL, $1)), AND(>($cor27.CONTACTNO, $0), <($cor27.EMAIL, $1)), AND(>($cor28.CONTACTNO, $0), <($cor28.EMAIL, $1)), AND(>($cor29.CONTACTNO, $0), <($cor29.EMAIL, $1)), AND(>($cor30.CONTACTNO, $0), <($cor30.EMAIL, $1)), AND(>($cor31.CONTACTNO, $0), <($cor31.EMAIL, $1)), AND(>($cor32.CONTACTNO, $0), <($cor32.EMAIL, $1)), AND(>($cor33.CONTACTNO, $0), <($cor33.EMAIL, $1)), AND(>($cor34.CONTACTNO, $0), <($cor34.EMAIL, $1)), AND(>($cor35.CONTACTNO, $0), <($cor35.EMAIL, $1)), AND(>($cor36.CONTACTNO, $0), <($cor36.EMAIL, $1)), AND(>($cor37.CONTACTNO, $0), <($cor37.EMAIL, $1)), AND(>($cor38.CONTACTNO, $0), <($cor38.EMAIL, $1)), AND(>($cor39.CONTACTNO, $0), <($cor39.EMAIL, $1)), AND(>($cor40.CONTACTNO, $0), <($cor40.EMAIL, $1)), AND(>($cor41.CONTACTNO, $0), <($cor41.EMAIL, $1)), AND(>($cor42.CONTACTNO, $0), <($cor42.EMAIL, $1)), AND(>($cor43.CONTACTNO, $0), <($cor43.EMAIL, $1)), AND(>($cor44.CONTACTNO, $0), <($cor44.EMAIL, $1)), AND(>($cor45.CONTACTNO, $0), <($cor45.EMAIL, $1)), AND(>($cor46.CONTACTNO, $0), <($cor46.EMAIL, $1)), AND(>($cor47.CONTACTNO, $0), <($cor47.EMAIL, $1)), AND(>($cor48.CONTACTNO, $0), <($cor48.EMAIL, $1)), AND(>($cor49.CONTACTNO, $0), <($cor49.EMAIL, $1)), AND(>($cor50.CONTACTNO, $0), <($cor50.EMAIL, $1)), AND(>($cor51.CONTACTNO, $0), <($cor51.EMAIL, $1)), AND(>($cor52.CONTACTNO, $0), <($cor52.EMAIL, $1)), AND(>($cor53.CONTACTNO, $0), <($cor53.EMAIL, $1)), AND(>($cor54.CONTACTNO, $0), <($cor54.EMAIL, $1)), AND(>($cor55.CONTACTNO, $0), <($cor55.EMAIL, $1)), AND(>($cor56.CONTACTNO, $0), <($cor56.EMAIL, $1)), AND(>($cor57.CONTACTNO, $0), <($cor57.EMAIL, $1)), AND(>($cor58.CONTACTNO, $0), <($cor58.EMAIL, $1)), AND(>($cor59.CONTACTNO, $0), <($cor59.EMAIL, $1)), AND(>($cor60.CONTACTNO, $0), <($cor60.EMAIL, $1)), AND(>($cor61.CONTACTNO, $0), <($cor61.EMAIL, $1)), AND(>($cor62.CONTACTNO, $0), <($cor62.EMAIL, $1)), AND(>($cor63.CONTACTNO, $0), <($cor63.EMAIL, $1)), AND(>($cor64.CONTACTNO, $0), <($cor64.EMAIL, $1)), AND(>($cor65.CONTACTNO, $0), <($cor65.EMAIL, $1)), AND(>($cor66.CONTACTNO, $0), <($cor66.EMAIL, $1)), AND(>($cor67.CONTACTNO, $0), <($cor67.EMAIL, $1)), AND(>($cor68.CONTACTNO, $0), <($cor68.EMAIL, $1)), AND(>($cor69.CONTACTNO, $0), <($cor69.EMAIL, $1)), AND(>($cor70.CONTACTNO, $0), <($cor70.EMAIL, $1)), AND(>($cor71.CONTACTNO, $0), <($cor71.EMAIL, $1)), AND(>($cor72.CONTACTNO, $0), <($cor72.EMAIL, $1)), AND(>($cor73.CONTACTNO, $0), <($cor73.EMAIL, $1)), AND(>($cor74.CONTACTNO, $0), <($cor74.EMAIL, $1)), AND(>($cor75.CONTACTNO, $0), <($cor75.EMAIL, $1)), AND(>($cor76.CONTACTNO, $0), <($cor76.EMAIL, $1)), AND(>($cor77.CONTACTNO, $0), <($cor77.EMAIL, $1)), AND(>($cor78.CONTACTNO, $0), <($cor78.EMAIL, $1)), AND(>($cor79.CONTACTNO, $0), <($cor79.EMAIL, $1)), AND(>($cor80.CONTACTNO, $0), <($cor80.EMAIL, $1)), AND(>($cor81.CONTACTNO, $0), <($cor81.EMAIL, $1)), AND(>($cor82.CONTACTNO, $0), <($cor82.EMAIL, $1)), AND(>($cor83.CONTACTNO, $0), <($cor83.EMAIL, $1)), AND(>($cor84.CONTACTNO, $0), <($cor84.EMAIL, $1)), AND(>($cor85.CONTACTNO, $0), <($cor85.EMAIL, $1)), AND(>($cor86.CONTACTNO, $0), <($cor86.EMAIL, $1)), AND(>($cor87.CONTACTNO, $0), <($cor87.EMAIL, $1)), AND(>($cor88.CONTACTNO, $0), <($cor88.EMAIL, $1)), AND(>($cor89.CONTACTNO, $0), <($cor89.EMAIL, $1)), AND(>($cor90.CONTACTNO, $0), <($cor90.EMAIL, $1)), AND(>($cor91.CONTACTNO, $0), <($cor91.EMAIL, $1)), AND(>($cor92.CONTACTNO, $0), <($cor92.EMAIL, $1)), AND(>($cor93.CONTACTNO, $0), <($cor93.EMAIL, $1)), AND(>($cor94.CONTACTNO, $0), <($cor94.EMAIL, $1)), AND(>($cor95.CONTACTNO, $0), <($cor95.EMAIL, $1)), AND(>($cor96.CONTACTNO, $0), <($cor96.EMAIL, $1)), AND(>($cor97.CONTACTNO, $0), <($cor97.EMAIL, $1)), AND(>($cor98.CONTACTNO, $0), <($cor98.EMAIL, $1)), AND(>($cor99.CONTACTNO, $0), <($cor99.EMAIL, $1)))]) + EnumerableTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) ]]> - + - + s.ename and r.job ($0, $3), <($1, $4))], joinType=[inner]) + LogicalSort(sort0=[$0], sort1=[$1], sort2=[$2], dir0=[DESC], dir1=[DESC], dir2=[ASC], fetch=[10]) + LogicalProject(ENAME=[$1], JOB=[$2], MGR=[$3]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> ($0, $3), <($1, $4))], joinType=[inner], batchSize=[100]) + EnumerableLimit(fetch=[10]) + EnumerableSort(sort0=[$0], sort1=[$1], sort2=[$2], dir0=[DESC], dir1=[DESC], dir2=[ASC]) + EnumerableProject(ENAME=[$1], JOB=[$2], MGR=[$3]) + EnumerableTableScan(table=[[CATALOG, SALES, EMP]]) + EnumerableFilter(condition=[OR(AND(>($cor0.ENAME, $0), <($cor0.JOB, $1)), AND(>($cor1.ENAME, $0), <($cor1.JOB, $1)), AND(>($cor2.ENAME, $0), <($cor2.JOB, $1)), AND(>($cor3.ENAME, $0), <($cor3.JOB, $1)), AND(>($cor4.ENAME, $0), <($cor4.JOB, $1)), AND(>($cor5.ENAME, $0), <($cor5.JOB, $1)), AND(>($cor6.ENAME, $0), <($cor6.JOB, $1)), AND(>($cor7.ENAME, $0), <($cor7.JOB, $1)), AND(>($cor8.ENAME, $0), <($cor8.JOB, $1)), AND(>($cor9.ENAME, $0), <($cor9.JOB, $1)), AND(>($cor10.ENAME, $0), <($cor10.JOB, $1)), AND(>($cor11.ENAME, $0), <($cor11.JOB, $1)), AND(>($cor12.ENAME, $0), <($cor12.JOB, $1)), AND(>($cor13.ENAME, $0), <($cor13.JOB, $1)), AND(>($cor14.ENAME, $0), <($cor14.JOB, $1)), AND(>($cor15.ENAME, $0), <($cor15.JOB, $1)), AND(>($cor16.ENAME, $0), <($cor16.JOB, $1)), AND(>($cor17.ENAME, $0), <($cor17.JOB, $1)), AND(>($cor18.ENAME, $0), <($cor18.JOB, $1)), AND(>($cor19.ENAME, $0), <($cor19.JOB, $1)), AND(>($cor20.ENAME, $0), <($cor20.JOB, $1)), AND(>($cor21.ENAME, $0), <($cor21.JOB, $1)), AND(>($cor22.ENAME, $0), <($cor22.JOB, $1)), AND(>($cor23.ENAME, $0), <($cor23.JOB, $1)), AND(>($cor24.ENAME, $0), <($cor24.JOB, $1)), AND(>($cor25.ENAME, $0), <($cor25.JOB, $1)), AND(>($cor26.ENAME, $0), <($cor26.JOB, $1)), AND(>($cor27.ENAME, $0), <($cor27.JOB, $1)), AND(>($cor28.ENAME, $0), <($cor28.JOB, $1)), AND(>($cor29.ENAME, $0), <($cor29.JOB, $1)), AND(>($cor30.ENAME, $0), <($cor30.JOB, $1)), AND(>($cor31.ENAME, $0), <($cor31.JOB, $1)), AND(>($cor32.ENAME, $0), <($cor32.JOB, $1)), AND(>($cor33.ENAME, $0), <($cor33.JOB, $1)), AND(>($cor34.ENAME, $0), <($cor34.JOB, $1)), AND(>($cor35.ENAME, $0), <($cor35.JOB, $1)), AND(>($cor36.ENAME, $0), <($cor36.JOB, $1)), AND(>($cor37.ENAME, $0), <($cor37.JOB, $1)), AND(>($cor38.ENAME, $0), <($cor38.JOB, $1)), AND(>($cor39.ENAME, $0), <($cor39.JOB, $1)), AND(>($cor40.ENAME, $0), <($cor40.JOB, $1)), AND(>($cor41.ENAME, $0), <($cor41.JOB, $1)), AND(>($cor42.ENAME, $0), <($cor42.JOB, $1)), AND(>($cor43.ENAME, $0), <($cor43.JOB, $1)), AND(>($cor44.ENAME, $0), <($cor44.JOB, $1)), AND(>($cor45.ENAME, $0), <($cor45.JOB, $1)), AND(>($cor46.ENAME, $0), <($cor46.JOB, $1)), AND(>($cor47.ENAME, $0), <($cor47.JOB, $1)), AND(>($cor48.ENAME, $0), <($cor48.JOB, $1)), AND(>($cor49.ENAME, $0), <($cor49.JOB, $1)), AND(>($cor50.ENAME, $0), <($cor50.JOB, $1)), AND(>($cor51.ENAME, $0), <($cor51.JOB, $1)), AND(>($cor52.ENAME, $0), <($cor52.JOB, $1)), AND(>($cor53.ENAME, $0), <($cor53.JOB, $1)), AND(>($cor54.ENAME, $0), <($cor54.JOB, $1)), AND(>($cor55.ENAME, $0), <($cor55.JOB, $1)), AND(>($cor56.ENAME, $0), <($cor56.JOB, $1)), AND(>($cor57.ENAME, $0), <($cor57.JOB, $1)), AND(>($cor58.ENAME, $0), <($cor58.JOB, $1)), AND(>($cor59.ENAME, $0), <($cor59.JOB, $1)), AND(>($cor60.ENAME, $0), <($cor60.JOB, $1)), AND(>($cor61.ENAME, $0), <($cor61.JOB, $1)), AND(>($cor62.ENAME, $0), <($cor62.JOB, $1)), AND(>($cor63.ENAME, $0), <($cor63.JOB, $1)), AND(>($cor64.ENAME, $0), <($cor64.JOB, $1)), AND(>($cor65.ENAME, $0), <($cor65.JOB, $1)), AND(>($cor66.ENAME, $0), <($cor66.JOB, $1)), AND(>($cor67.ENAME, $0), <($cor67.JOB, $1)), AND(>($cor68.ENAME, $0), <($cor68.JOB, $1)), AND(>($cor69.ENAME, $0), <($cor69.JOB, $1)), AND(>($cor70.ENAME, $0), <($cor70.JOB, $1)), AND(>($cor71.ENAME, $0), <($cor71.JOB, $1)), AND(>($cor72.ENAME, $0), <($cor72.JOB, $1)), AND(>($cor73.ENAME, $0), <($cor73.JOB, $1)), AND(>($cor74.ENAME, $0), <($cor74.JOB, $1)), AND(>($cor75.ENAME, $0), <($cor75.JOB, $1)), AND(>($cor76.ENAME, $0), <($cor76.JOB, $1)), AND(>($cor77.ENAME, $0), <($cor77.JOB, $1)), AND(>($cor78.ENAME, $0), <($cor78.JOB, $1)), AND(>($cor79.ENAME, $0), <($cor79.JOB, $1)), AND(>($cor80.ENAME, $0), <($cor80.JOB, $1)), AND(>($cor81.ENAME, $0), <($cor81.JOB, $1)), AND(>($cor82.ENAME, $0), <($cor82.JOB, $1)), AND(>($cor83.ENAME, $0), <($cor83.JOB, $1)), AND(>($cor84.ENAME, $0), <($cor84.JOB, $1)), AND(>($cor85.ENAME, $0), <($cor85.JOB, $1)), AND(>($cor86.ENAME, $0), <($cor86.JOB, $1)), AND(>($cor87.ENAME, $0), <($cor87.JOB, $1)), AND(>($cor88.ENAME, $0), <($cor88.JOB, $1)), AND(>($cor89.ENAME, $0), <($cor89.JOB, $1)), AND(>($cor90.ENAME, $0), <($cor90.JOB, $1)), AND(>($cor91.ENAME, $0), <($cor91.JOB, $1)), AND(>($cor92.ENAME, $0), <($cor92.JOB, $1)), AND(>($cor93.ENAME, $0), <($cor93.JOB, $1)), AND(>($cor94.ENAME, $0), <($cor94.JOB, $1)), AND(>($cor95.ENAME, $0), <($cor95.JOB, $1)), AND(>($cor96.ENAME, $0), <($cor96.JOB, $1)), AND(>($cor97.ENAME, $0), <($cor97.JOB, $1)), AND(>($cor98.ENAME, $0), <($cor98.JOB, $1)), AND(>($cor99.ENAME, $0), <($cor99.JOB, $1)))]) + EnumerableTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> - + - + - + - + - + - + - + - + - + - + - + +sales.emp r full outer join sales.bonus s on r.ename=s.ename and r.job=s.job +order by r.job desc nulls last, r.ename nulls first]]> - + +(select contactno, email from customer.contact_peek) r inner join +(select acctno, type from customer.account) s +on r.contactno=s.acctno and r.email=s.type +order by r.contactno desc, r.email desc]]> - - - +EnumerableHashJoin(condition=[AND(=($0, $2), =($1, $3))], joinType=[inner]) + EnumerableSort(sort0=[$0], sort1=[$1], dir0=[DESC], dir1=[DESC]) + EnumerableProject(CONTACTNO=[$0], EMAIL=[$3]) + EnumerableTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]]) + EnumerableProject(ACCTNO=[$0], TYPE=[$1]) + EnumerableTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) +]]> + + + +(select contactno, email from customer.contact_peek) r left outer join +(select acctno, type from customer.account) s +on r.contactno=s.acctno and r.email=s.type +order by r.contactno desc, r.email desc]]> - + +customer.contact_peek r left outer join +customer.account s +on r.contactno=s.acctno and r.email=s.type +order by r.fname desc]]> - + - + - + +(select ename, job, mgr from sales.emp order by ename desc, job desc, mgr limit 10) r +join sales.bonus s on r.ename=s.ename and r.job=s.job +order by r.ename desc, r.job desc]]> - + - + - + - 1000 -order by mgr desc, ename]]> + ($3, 1000)]) - LogicalAggregate(group=[{0, 1, 2}], MAX_SAL=[MAX($3)]) - LogicalProject(ENAME=[$1], JOB=[$2], MGR=[$3], SAL=[$5]) +LogicalSort(sort0=[$2], dir0=[ASC]) + LogicalProject(ENAME=[$0], JOB=[$1], MGR=[$2], ENAME0=[$3], JOB0=[$4], SAL=[$5], COMM=[$6]) + LogicalJoin(condition=[AND(=($0, $3), =($1, $4))], joinType=[inner]) + LogicalSort(sort0=[$2], dir0=[DESC], fetch=[10]) + LogicalProject(ENAME=[$1], JOB=[$2], MGR=[$3]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> ($3, 1000)]) - EnumerableSortedAggregate(group=[{1, 2, 3}], MAX_SAL=[MAX($5)]) - EnumerableSort(sort0=[$3], sort1=[$1], sort2=[$2], dir0=[DESC], dir1=[ASC], dir2=[ASC]) - EnumerableTableScan(table=[[CATALOG, SALES, EMP]]) +EnumerableSort(sort0=[$2], dir0=[ASC]) + EnumerableHashJoin(condition=[AND(=($0, $3), =($1, $4))], joinType=[inner]) + EnumerableLimit(fetch=[10]) + EnumerableSort(sort0=[$2], dir0=[DESC]) + EnumerableProject(ENAME=[$1], JOB=[$2], MGR=[$3]) + EnumerableTableScan(table=[[CATALOG, SALES, EMP]]) + EnumerableTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> - + 1000) r +(select ename, job, max(sal) from sales.emp group by ename, job) r join sales.bonus s on r.job=s.job and r.ename=s.ename]]> (CAST($1):INTEGER NOT NULL, 1000)]) - LogicalAggregate(group=[{0, 1}], MAX_SAL=[MAX($2)]) - LogicalProject(ENAME=[$1], JOB=[$2], SAL=[$5]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalAggregate(group=[{0, 1}], EXPR$2=[MAX($2)]) + LogicalProject(ENAME=[$1], JOB=[$2], SAL=[$5]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) LogicalTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> (CAST($2):INTEGER NOT NULL, 1000)]) - EnumerableTableScan(table=[[CATALOG, SALES, EMP]]) + EnumerableTableScan(table=[[CATALOG, SALES, EMP]]) EnumerableSort(sort0=[$1], sort1=[$0], dir0=[ASC], dir1=[ASC]) EnumerableTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - + + - - - + + + + customer.contact_peek r left outer join +customer.account s +on r.contactno>s.acctno and r.email ($0, $10), <($3, $11))], joinType=[left]) + LogicalProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4.X], Y=[$4.Y], unit=[$4.unit], M=[$5.M], A=[$5.SUB.A], B=[$5.SUB.B]) + LogicalTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]]) + LogicalTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) ]]> ($0, $10), <($3, $11))], joinType=[left]) + EnumerableSort(sort0=[$0], sort1=[$3], dir0=[DESC], dir1=[DESC]) + EnumerableProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4.X], Y=[$4.Y], unit=[$4.unit], M=[$5.M], A=[$5.SUB.A], B=[$5.SUB.B]) + EnumerableTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]]) + EnumerableTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) ]]> - - - - - - + + s.acctno and r.email + + + ($0, $10), <($3, $11))], joinType=[left]) + LogicalProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4.X], Y=[$4.Y], unit=[$4.unit], M=[$5.M], A=[$5.SUB.A], B=[$5.SUB.B]) + LogicalTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]]) + LogicalTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) ]]> - - - + + ($0, $10), <($3, $11))], joinType=[left]) + EnumerableSort(sort0=[$1], dir0=[DESC]) + EnumerableProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4.X], Y=[$4.Y], unit=[$4.unit], M=[$5.M], A=[$5.SUB.A], B=[$5.SUB.B]) + EnumerableTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]]) + EnumerableTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) ]]> - - - - - - - - + + + + s.acctno and r.email + + + ($0, $10), <($3, $11))], joinType=[left]) + LogicalProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4.X], Y=[$4.Y], unit=[$4.unit], M=[$5.M], A=[$5.SUB.A], B=[$5.SUB.B]) + LogicalTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]]) + LogicalTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) ]]> - - - + + ($0, $10), <($3, $11))], joinType=[left]) + EnumerableProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4.X], Y=[$4.Y], unit=[$4.unit], M=[$5.M], A=[$5.SUB.A], B=[$5.SUB.B]) + EnumerableTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]]) + EnumerableTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) ]]> - - - - - - - - + + + + s.acctno and r.email + + + ($0, $10), <($3, $11))], joinType=[right]) + LogicalProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4.X], Y=[$4.Y], unit=[$4.unit], M=[$5.M], A=[$5.SUB.A], B=[$5.SUB.B]) + LogicalTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]]) + LogicalTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) ]]> - - - + + ($0, $10), <($3, $11))], joinType=[right]) + EnumerableProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4.X], Y=[$4.Y], unit=[$4.unit], M=[$5.M], A=[$5.SUB.A], B=[$5.SUB.B]) + EnumerableTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]]) + EnumerableTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) ]]> - - - + + + +(select ename, job, mgr from sales.emp order by ename desc, job desc, mgr limit 10) r +join sales.bonus s on r.ename>s.ename and r.job ($0, $3), <($1, $4))], joinType=[inner]) + LogicalSort(sort0=[$0], sort1=[$1], sort2=[$2], dir0=[DESC], dir1=[DESC], dir2=[ASC], fetch=[10]) + LogicalProject(ENAME=[$1], JOB=[$2], MGR=[$3]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> ($0, $3), <($1, $4))], joinType=[inner]) + EnumerableLimit(fetch=[10]) + EnumerableSort(sort0=[$0], sort1=[$1], sort2=[$2], dir0=[DESC], dir1=[DESC], dir2=[ASC]) + EnumerableProject(ENAME=[$1], JOB=[$2], MGR=[$3]) + EnumerableTableScan(table=[[CATALOG, SALES, EMP]]) + EnumerableTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> - + +(select ename, job, mgr from sales.emp order by mgr limit 10) r +join sales.bonus s on r.ename>s.ename and r.job ($0, $3), <($1, $4))], joinType=[inner]) + LogicalSort(sort0=[$2], dir0=[ASC], fetch=[10]) + LogicalProject(ENAME=[$1], JOB=[$2], MGR=[$3]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> ($0, $3), <($1, $4))], joinType=[inner]) + EnumerableLimit(fetch=[10]) + EnumerableSort(sort0=[$2], dir0=[ASC]) + EnumerableProject(ENAME=[$1], JOB=[$2], MGR=[$3]) + EnumerableTableScan(table=[[CATALOG, SALES, EMP]]) + EnumerableTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> - + - + s.ename and r.job ($0, $3), <($1, $4))], joinType=[inner]) + LogicalSort(sort0=[$2], dir0=[ASC], fetch=[10]) + LogicalProject(ENAME=[$1], JOB=[$2], MGR=[$3]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> ($0, $3), <($1, $4))], joinType=[inner]) + EnumerableLimit(fetch=[10]) + EnumerableSort(sort0=[$2], dir0=[ASC]) + EnumerableProject(ENAME=[$1], JOB=[$2], MGR=[$3]) + EnumerableTableScan(table=[[CATALOG, SALES, EMP]]) EnumerableTableScan(table=[[CATALOG, SALES, BONUS]]) - EnumerableSortedAggregate(group=[{1, 2}], EXPR$2=[MAX($5)]) - EnumerableSort(sort0=[$2], sort1=[$1], dir0=[ASC], dir1=[ASC]) - EnumerableTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - + - + - + - + - + - + - + +(select ename, job, max_sal + 1 from +(select ename, job, max(sal) as max_sal from sales.emp group by ename, job) t) r +join sales.bonus s on r.job=s.job and r.ename=s.ename]]> - + - + + + + + + + + + + + + - + - + - + - + - + - + - + - + 1000 +order by mgr desc, ename]]> ($3, 1000)]) + LogicalAggregate(group=[{0, 1, 2}], MAX_SAL=[MAX($3)]) + LogicalProject(ENAME=[$1], JOB=[$2], MGR=[$3], SAL=[$5]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> ($t3, $t4)], proj#0..3=[{exprs}], $condition=[$t5]) + EnumerableSortedAggregate(group=[{1, 2, 3}], MAX_SAL=[MAX($5)]) + EnumerableSort(sort0=[$3], sort1=[$1], sort2=[$2], dir0=[DESC], dir1=[ASC], dir2=[ASC]) + EnumerableTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - + - s.ename and r.job + 1000 +order by mgr desc, ename]]> ($0, $3), <($1, $4))], joinType=[inner]) - LogicalSort(sort0=[$0], sort1=[$1], sort2=[$2], dir0=[DESC], dir1=[DESC], dir2=[ASC], fetch=[10]) - LogicalProject(ENAME=[$1], JOB=[$2], MGR=[$3]) +LogicalSort(sort0=[$2], sort1=[$0], dir0=[DESC], dir1=[ASC]) + LogicalProject(ENAME=[$0], JOB=[$1], MGR=[$2], MAX_SAL=[$3]) + LogicalFilter(condition=[>($3, 1000)]) + LogicalAggregate(group=[{0, 1, 2}], MAX_SAL=[MAX($3)]) + LogicalProject(ENAME=[$1], JOB=[$2], MGR=[$3], SAL=[$5]) LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> ($0, $3), <($1, $4))], joinType=[inner]) - EnumerableLimit(fetch=[10]) - EnumerableSort(sort0=[$0], sort1=[$1], sort2=[$2], dir0=[DESC], dir1=[DESC], dir2=[ASC]) - EnumerableProject(ENAME=[$1], JOB=[$2], MGR=[$3]) - EnumerableTableScan(table=[[CATALOG, SALES, EMP]]) - EnumerableTableScan(table=[[CATALOG, SALES, BONUS]]) +EnumerableFilter(condition=[>($3, 1000)]) + EnumerableSortedAggregate(group=[{1, 2, 3}], MAX_SAL=[MAX($5)]) + EnumerableSort(sort0=[$3], sort1=[$1], sort2=[$2], dir0=[DESC], dir1=[ASC], dir2=[ASC]) + EnumerableTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - + s.ename and r.job +(select ename, job, max_sal from +(select ename, job, max(sal) as max_sal from sales.emp group by ename, job) t where job > 1000) r +join sales.bonus s on r.job=s.job and r.ename=s.ename]]> ($0, $3), <($1, $4))], joinType=[inner]) - LogicalSort(sort0=[$2], dir0=[ASC], fetch=[10]) - LogicalProject(ENAME=[$1], JOB=[$2], MGR=[$3]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) - LogicalTableScan(table=[[CATALOG, SALES, BONUS]]) +LogicalProject(ENAME=[$0], JOB=[$1], MAX_SAL=[$2], ENAME0=[$3], JOB0=[$4], SAL=[$5], COMM=[$6]) + LogicalJoin(condition=[AND(=($1, $4), =($0, $3))], joinType=[inner]) + LogicalProject(ENAME=[$0], JOB=[$1], MAX_SAL=[$2]) + LogicalFilter(condition=[>(CAST($1):INTEGER NOT NULL, 1000)]) + LogicalAggregate(group=[{0, 1}], MAX_SAL=[MAX($2)]) + LogicalProject(ENAME=[$1], JOB=[$2], SAL=[$5]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> ($0, $3), <($1, $4))], joinType=[inner]) - EnumerableLimit(fetch=[10]) - EnumerableSort(sort0=[$2], dir0=[ASC]) - EnumerableProject(ENAME=[$1], JOB=[$2], MGR=[$3]) +EnumerableMergeJoin(condition=[AND(=($1, $4), =($0, $3))], joinType=[inner]) + EnumerableSortedAggregate(group=[{1, 2}], MAX_SAL=[MAX($5)]) + EnumerableSort(sort0=[$2], sort1=[$1], dir0=[ASC], dir1=[ASC]) + EnumerableFilter(condition=[>(CAST($2):INTEGER NOT NULL, 1000)]) EnumerableTableScan(table=[[CATALOG, SALES, EMP]]) - EnumerableTableScan(table=[[CATALOG, SALES, BONUS]]) + EnumerableSort(sort0=[$1], sort1=[$0], dir0=[ASC], dir1=[ASC]) + EnumerableTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> - + s.ename and r.job +sales.emp r join sales.bonus s on r.ename=s.ename and r.job=s.job +order by r.job desc nulls last, r.ename nulls first]]> ($0, $3), <($1, $4))], joinType=[inner]) - LogicalSort(sort0=[$2], dir0=[ASC], fetch=[10]) - LogicalProject(ENAME=[$1], JOB=[$2], MGR=[$3]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +LogicalSort(sort0=[$2], sort1=[$1], dir0=[DESC-nulls-last], dir1=[ASC-nulls-first]) + LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], ENAME0=[$9], JOB0=[$10], SAL0=[$11], COMM0=[$12]) + LogicalJoin(condition=[AND(=($1, $9), =($2, $10))], joinType=[inner]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) LogicalTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> ($0, $3), <($1, $4))], joinType=[inner]) - EnumerableLimit(fetch=[10]) - EnumerableSort(sort0=[$2], dir0=[ASC]) - EnumerableProject(ENAME=[$1], JOB=[$2], MGR=[$3]) - EnumerableTableScan(table=[[CATALOG, SALES, EMP]]) +EnumerableMergeJoin(condition=[AND(=($1, $9), =($2, $10))], joinType=[inner]) + EnumerableSort(sort0=[$2], sort1=[$1], dir0=[DESC-nulls-last], dir1=[ASC-nulls-first]) + EnumerableTableScan(table=[[CATALOG, SALES, EMP]]) + EnumerableSort(sort0=[$1], sort1=[$0], dir0=[DESC-nulls-last], dir1=[ASC-nulls-first]) EnumerableTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> - + s.acctno and r.email +sales.emp r join sales.bonus s on r.ename=s.ename and r.job=s.job +order by s.job desc nulls last, s.ename nulls first]]> ($0, $10), <($3, $11))], joinType=[left]) - LogicalProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4.X], Y=[$4.Y], unit=[$4.unit], M=[$5.M], A=[$5.SUB.A], B=[$5.SUB.B]) - LogicalTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]]) - LogicalTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) +LogicalSort(sort0=[$10], sort1=[$9], dir0=[DESC-nulls-last], dir1=[ASC-nulls-first]) + LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], ENAME0=[$9], JOB0=[$10], SAL0=[$11], COMM0=[$12]) + LogicalJoin(condition=[AND(=($1, $9), =($2, $10))], joinType=[inner]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> ($0, $10), <($3, $11))], joinType=[left]) - EnumerableSort(sort0=[$0], sort1=[$3], dir0=[DESC], dir1=[DESC]) - EnumerableProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4.X], Y=[$4.Y], unit=[$4.unit], M=[$5.M], A=[$5.SUB.A], B=[$5.SUB.B]) - EnumerableTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]]) - EnumerableTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) +EnumerableMergeJoin(condition=[AND(=($1, $9), =($2, $10))], joinType=[inner]) + EnumerableSort(sort0=[$2], sort1=[$1], dir0=[DESC-nulls-last], dir1=[ASC-nulls-first]) + EnumerableTableScan(table=[[CATALOG, SALES, EMP]]) + EnumerableSort(sort0=[$1], sort1=[$0], dir0=[DESC-nulls-last], dir1=[ASC-nulls-first]) + EnumerableTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> - + - s.acctno and r.email + ($0, $10), <($3, $11))], joinType=[left]) - LogicalProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4.X], Y=[$4.Y], unit=[$4.unit], M=[$5.M], A=[$5.SUB.A], B=[$5.SUB.B]) - LogicalTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]]) - LogicalTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) +LogicalSort(sort0=[$10], dir0=[DESC-nulls-last]) + LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], ENAME0=[$9], JOB0=[$10], SAL0=[$11], COMM0=[$12]) + LogicalJoin(condition=[AND(=($1, $9), =($2, $10))], joinType=[inner]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> ($0, $10), <($3, $11))], joinType=[left]) - EnumerableSort(sort0=[$1], dir0=[DESC]) - EnumerableProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4.X], Y=[$4.Y], unit=[$4.unit], M=[$5.M], A=[$5.SUB.A], B=[$5.SUB.B]) - EnumerableTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]]) - EnumerableTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) +EnumerableMergeJoin(condition=[AND(=($1, $9), =($2, $10))], joinType=[inner]) + EnumerableSort(sort0=[$2], sort1=[$1], dir0=[DESC-nulls-last], dir1=[ASC]) + EnumerableTableScan(table=[[CATALOG, SALES, EMP]]) + EnumerableSort(sort0=[$1], sort1=[$0], dir0=[DESC-nulls-last], dir1=[ASC]) + EnumerableTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> - + s.acctno and r.email +sales.emp r join sales.bonus s on r.ename=s.ename and r.job=s.job and r.sal = s.sal +order by s.sal, s.ename desc nulls last]]> ($0, $10), <($3, $11))], joinType=[left]) - LogicalProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4.X], Y=[$4.Y], unit=[$4.unit], M=[$5.M], A=[$5.SUB.A], B=[$5.SUB.B]) - LogicalTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]]) - LogicalTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) +LogicalSort(sort0=[$11], sort1=[$9], dir0=[ASC], dir1=[DESC-nulls-last]) + LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], ENAME0=[$9], JOB0=[$10], SAL0=[$11], COMM0=[$12]) + LogicalJoin(condition=[AND(=($1, $9), =($2, $10), =($5, $11))], joinType=[inner]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> ($0, $10), <($3, $11))], joinType=[left]) - EnumerableProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4.X], Y=[$4.Y], unit=[$4.unit], M=[$5.M], A=[$5.SUB.A], B=[$5.SUB.B]) - EnumerableTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]]) - EnumerableTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) +EnumerableMergeJoin(condition=[AND(=($1, $9), =($2, $10), =($5, $11))], joinType=[inner]) + EnumerableSort(sort0=[$5], sort1=[$1], sort2=[$2], dir0=[ASC], dir1=[DESC-nulls-last], dir2=[ASC]) + EnumerableTableScan(table=[[CATALOG, SALES, EMP]]) + EnumerableSort(sort0=[$2], sort1=[$0], sort2=[$1], dir0=[ASC], dir1=[DESC-nulls-last], dir2=[ASC]) + EnumerableTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> - + - s.acctno and r.email + ($0, $10), <($3, $11))], joinType=[right]) - LogicalProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4.X], Y=[$4.Y], unit=[$4.unit], M=[$5.M], A=[$5.SUB.A], B=[$5.SUB.B]) - LogicalTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]]) - LogicalTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) +LogicalSort(sort0=[$10], sort1=[$9], sort2=[$11], dir0=[DESC-nulls-last], dir1=[ASC], dir2=[DESC]) + LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], ENAME0=[$9], JOB0=[$10], SAL0=[$11], COMM0=[$12]) + LogicalJoin(condition=[AND(=($1, $9), =($2, $10))], joinType=[inner]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) + LogicalTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> ($0, $10), <($3, $11))], joinType=[right]) - EnumerableProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4.X], Y=[$4.Y], unit=[$4.unit], M=[$5.M], A=[$5.SUB.A], B=[$5.SUB.B]) - EnumerableTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]]) - EnumerableTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) +EnumerableMergeJoin(condition=[AND(=($1, $9), =($2, $10))], joinType=[inner]) + EnumerableSort(sort0=[$2], sort1=[$1], dir0=[DESC-nulls-last], dir1=[ASC]) + EnumerableTableScan(table=[[CATALOG, SALES, EMP]]) + EnumerableSort(sort0=[$1], sort1=[$0], sort2=[$2], dir0=[DESC-nulls-last], dir1=[ASC], dir2=[DESC]) + EnumerableTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> - + - + - + - + - + - + - + - + - + - + - + - s.acctno and r.email + ($0, $10), <($3, $11))], joinType=[left]) - LogicalProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4.X], Y=[$4.Y], unit=[$4.unit], M=[$5.M], A=[$5.SUB.A], B=[$5.SUB.B]) - LogicalTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]]) - LogicalTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) +LogicalAggregate(group=[{0, 1, 2}]) + LogicalProject(ENAME=[$0], EXPR$1=[*($2, -2)], MGR=[$1]) + LogicalSort(sort0=[$0], sort1=[$1], sort2=[$2], dir0=[ASC], dir1=[ASC], dir2=[ASC], fetch=[100]) + LogicalProject(ENAME=[$1], MGR=[$3], SAL=[$5]) + LogicalTableScan(table=[[CATALOG, SALES, EMP]]) ]]> ($0, $10), <($3, $11))], joinType=[left], batchSize=[100]) - EnumerableSort(sort0=[$0], sort1=[$3], dir0=[DESC], dir1=[DESC]) - EnumerableProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4.X], Y=[$4.Y], unit=[$4.unit], M=[$5.M], A=[$5.SUB.A], B=[$5.SUB.B]) - EnumerableTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]]) - EnumerableFilter(condition=[OR(AND(>($cor0.CONTACTNO, $0), <($cor0.EMAIL, $1)), AND(>($cor1.CONTACTNO, $0), <($cor1.EMAIL, $1)), AND(>($cor2.CONTACTNO, $0), <($cor2.EMAIL, $1)), AND(>($cor3.CONTACTNO, $0), <($cor3.EMAIL, $1)), AND(>($cor4.CONTACTNO, $0), <($cor4.EMAIL, $1)), AND(>($cor5.CONTACTNO, $0), <($cor5.EMAIL, $1)), AND(>($cor6.CONTACTNO, $0), <($cor6.EMAIL, $1)), AND(>($cor7.CONTACTNO, $0), <($cor7.EMAIL, $1)), AND(>($cor8.CONTACTNO, $0), <($cor8.EMAIL, $1)), AND(>($cor9.CONTACTNO, $0), <($cor9.EMAIL, $1)), AND(>($cor10.CONTACTNO, $0), <($cor10.EMAIL, $1)), AND(>($cor11.CONTACTNO, $0), <($cor11.EMAIL, $1)), AND(>($cor12.CONTACTNO, $0), <($cor12.EMAIL, $1)), AND(>($cor13.CONTACTNO, $0), <($cor13.EMAIL, $1)), AND(>($cor14.CONTACTNO, $0), <($cor14.EMAIL, $1)), AND(>($cor15.CONTACTNO, $0), <($cor15.EMAIL, $1)), AND(>($cor16.CONTACTNO, $0), <($cor16.EMAIL, $1)), AND(>($cor17.CONTACTNO, $0), <($cor17.EMAIL, $1)), AND(>($cor18.CONTACTNO, $0), <($cor18.EMAIL, $1)), AND(>($cor19.CONTACTNO, $0), <($cor19.EMAIL, $1)), AND(>($cor20.CONTACTNO, $0), <($cor20.EMAIL, $1)), AND(>($cor21.CONTACTNO, $0), <($cor21.EMAIL, $1)), AND(>($cor22.CONTACTNO, $0), <($cor22.EMAIL, $1)), AND(>($cor23.CONTACTNO, $0), <($cor23.EMAIL, $1)), AND(>($cor24.CONTACTNO, $0), <($cor24.EMAIL, $1)), AND(>($cor25.CONTACTNO, $0), <($cor25.EMAIL, $1)), AND(>($cor26.CONTACTNO, $0), <($cor26.EMAIL, $1)), AND(>($cor27.CONTACTNO, $0), <($cor27.EMAIL, $1)), AND(>($cor28.CONTACTNO, $0), <($cor28.EMAIL, $1)), AND(>($cor29.CONTACTNO, $0), <($cor29.EMAIL, $1)), AND(>($cor30.CONTACTNO, $0), <($cor30.EMAIL, $1)), AND(>($cor31.CONTACTNO, $0), <($cor31.EMAIL, $1)), AND(>($cor32.CONTACTNO, $0), <($cor32.EMAIL, $1)), AND(>($cor33.CONTACTNO, $0), <($cor33.EMAIL, $1)), AND(>($cor34.CONTACTNO, $0), <($cor34.EMAIL, $1)), AND(>($cor35.CONTACTNO, $0), <($cor35.EMAIL, $1)), AND(>($cor36.CONTACTNO, $0), <($cor36.EMAIL, $1)), AND(>($cor37.CONTACTNO, $0), <($cor37.EMAIL, $1)), AND(>($cor38.CONTACTNO, $0), <($cor38.EMAIL, $1)), AND(>($cor39.CONTACTNO, $0), <($cor39.EMAIL, $1)), AND(>($cor40.CONTACTNO, $0), <($cor40.EMAIL, $1)), AND(>($cor41.CONTACTNO, $0), <($cor41.EMAIL, $1)), AND(>($cor42.CONTACTNO, $0), <($cor42.EMAIL, $1)), AND(>($cor43.CONTACTNO, $0), <($cor43.EMAIL, $1)), AND(>($cor44.CONTACTNO, $0), <($cor44.EMAIL, $1)), AND(>($cor45.CONTACTNO, $0), <($cor45.EMAIL, $1)), AND(>($cor46.CONTACTNO, $0), <($cor46.EMAIL, $1)), AND(>($cor47.CONTACTNO, $0), <($cor47.EMAIL, $1)), AND(>($cor48.CONTACTNO, $0), <($cor48.EMAIL, $1)), AND(>($cor49.CONTACTNO, $0), <($cor49.EMAIL, $1)), AND(>($cor50.CONTACTNO, $0), <($cor50.EMAIL, $1)), AND(>($cor51.CONTACTNO, $0), <($cor51.EMAIL, $1)), AND(>($cor52.CONTACTNO, $0), <($cor52.EMAIL, $1)), AND(>($cor53.CONTACTNO, $0), <($cor53.EMAIL, $1)), AND(>($cor54.CONTACTNO, $0), <($cor54.EMAIL, $1)), AND(>($cor55.CONTACTNO, $0), <($cor55.EMAIL, $1)), AND(>($cor56.CONTACTNO, $0), <($cor56.EMAIL, $1)), AND(>($cor57.CONTACTNO, $0), <($cor57.EMAIL, $1)), AND(>($cor58.CONTACTNO, $0), <($cor58.EMAIL, $1)), AND(>($cor59.CONTACTNO, $0), <($cor59.EMAIL, $1)), AND(>($cor60.CONTACTNO, $0), <($cor60.EMAIL, $1)), AND(>($cor61.CONTACTNO, $0), <($cor61.EMAIL, $1)), AND(>($cor62.CONTACTNO, $0), <($cor62.EMAIL, $1)), AND(>($cor63.CONTACTNO, $0), <($cor63.EMAIL, $1)), AND(>($cor64.CONTACTNO, $0), <($cor64.EMAIL, $1)), AND(>($cor65.CONTACTNO, $0), <($cor65.EMAIL, $1)), AND(>($cor66.CONTACTNO, $0), <($cor66.EMAIL, $1)), AND(>($cor67.CONTACTNO, $0), <($cor67.EMAIL, $1)), AND(>($cor68.CONTACTNO, $0), <($cor68.EMAIL, $1)), AND(>($cor69.CONTACTNO, $0), <($cor69.EMAIL, $1)), AND(>($cor70.CONTACTNO, $0), <($cor70.EMAIL, $1)), AND(>($cor71.CONTACTNO, $0), <($cor71.EMAIL, $1)), AND(>($cor72.CONTACTNO, $0), <($cor72.EMAIL, $1)), AND(>($cor73.CONTACTNO, $0), <($cor73.EMAIL, $1)), AND(>($cor74.CONTACTNO, $0), <($cor74.EMAIL, $1)), AND(>($cor75.CONTACTNO, $0), <($cor75.EMAIL, $1)), AND(>($cor76.CONTACTNO, $0), <($cor76.EMAIL, $1)), AND(>($cor77.CONTACTNO, $0), <($cor77.EMAIL, $1)), AND(>($cor78.CONTACTNO, $0), <($cor78.EMAIL, $1)), AND(>($cor79.CONTACTNO, $0), <($cor79.EMAIL, $1)), AND(>($cor80.CONTACTNO, $0), <($cor80.EMAIL, $1)), AND(>($cor81.CONTACTNO, $0), <($cor81.EMAIL, $1)), AND(>($cor82.CONTACTNO, $0), <($cor82.EMAIL, $1)), AND(>($cor83.CONTACTNO, $0), <($cor83.EMAIL, $1)), AND(>($cor84.CONTACTNO, $0), <($cor84.EMAIL, $1)), AND(>($cor85.CONTACTNO, $0), <($cor85.EMAIL, $1)), AND(>($cor86.CONTACTNO, $0), <($cor86.EMAIL, $1)), AND(>($cor87.CONTACTNO, $0), <($cor87.EMAIL, $1)), AND(>($cor88.CONTACTNO, $0), <($cor88.EMAIL, $1)), AND(>($cor89.CONTACTNO, $0), <($cor89.EMAIL, $1)), AND(>($cor90.CONTACTNO, $0), <($cor90.EMAIL, $1)), AND(>($cor91.CONTACTNO, $0), <($cor91.EMAIL, $1)), AND(>($cor92.CONTACTNO, $0), <($cor92.EMAIL, $1)), AND(>($cor93.CONTACTNO, $0), <($cor93.EMAIL, $1)), AND(>($cor94.CONTACTNO, $0), <($cor94.EMAIL, $1)), AND(>($cor95.CONTACTNO, $0), <($cor95.EMAIL, $1)), AND(>($cor96.CONTACTNO, $0), <($cor96.EMAIL, $1)), AND(>($cor97.CONTACTNO, $0), <($cor97.EMAIL, $1)), AND(>($cor98.CONTACTNO, $0), <($cor98.EMAIL, $1)), AND(>($cor99.CONTACTNO, $0), <($cor99.EMAIL, $1)))]) - EnumerableTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]]) +EnumerableSortedAggregate(group=[{0, 1, 2}]) + EnumerableSort(sort0=[$0], sort1=[$1], sort2=[$2], dir0=[ASC], dir1=[ASC], dir2=[ASC]) + EnumerableProject(ENAME=[$0], EXPR$1=[*($2, -2)], MGR=[$1]) + EnumerableLimit(fetch=[100]) + EnumerableSort(sort0=[$0], sort1=[$1], sort2=[$2], dir0=[ASC], dir1=[ASC], dir2=[ASC]) + EnumerableProject(ENAME=[$1], MGR=[$3], SAL=[$5]) + EnumerableTableScan(table=[[CATALOG, SALES, EMP]]) ]]> - + s.ename and r.job - - - ($0, $3), <($1, $4))], joinType=[inner]) - LogicalSort(sort0=[$0], sort1=[$1], sort2=[$2], dir0=[DESC], dir1=[DESC], dir2=[ASC], fetch=[10]) - LogicalProject(ENAME=[$1], JOB=[$2], MGR=[$3]) +(select ename, cast(job as varchar) as job, sal + 1 from +(select ename, job, sal from sales.emp limit 100) t) r +join sales.bonus s on r.job=s.job and r.ename=s.ename]]> + + + ($0, $3), <($1, $4))], joinType=[inner], batchSize=[100]) - EnumerableLimit(fetch=[10]) - EnumerableSort(sort0=[$0], sort1=[$1], sort2=[$2], dir0=[DESC], dir1=[DESC], dir2=[ASC]) - EnumerableProject(ENAME=[$1], JOB=[$2], MGR=[$3]) - EnumerableTableScan(table=[[CATALOG, SALES, EMP]]) - EnumerableFilter(condition=[OR(AND(>($cor0.ENAME, $0), <($cor0.JOB, $1)), AND(>($cor1.ENAME, $0), <($cor1.JOB, $1)), AND(>($cor2.ENAME, $0), <($cor2.JOB, $1)), AND(>($cor3.ENAME, $0), <($cor3.JOB, $1)), AND(>($cor4.ENAME, $0), <($cor4.JOB, $1)), AND(>($cor5.ENAME, $0), <($cor5.JOB, $1)), AND(>($cor6.ENAME, $0), <($cor6.JOB, $1)), AND(>($cor7.ENAME, $0), <($cor7.JOB, $1)), AND(>($cor8.ENAME, $0), <($cor8.JOB, $1)), AND(>($cor9.ENAME, $0), <($cor9.JOB, $1)), AND(>($cor10.ENAME, $0), <($cor10.JOB, $1)), AND(>($cor11.ENAME, $0), <($cor11.JOB, $1)), AND(>($cor12.ENAME, $0), <($cor12.JOB, $1)), AND(>($cor13.ENAME, $0), <($cor13.JOB, $1)), AND(>($cor14.ENAME, $0), <($cor14.JOB, $1)), AND(>($cor15.ENAME, $0), <($cor15.JOB, $1)), AND(>($cor16.ENAME, $0), <($cor16.JOB, $1)), AND(>($cor17.ENAME, $0), <($cor17.JOB, $1)), AND(>($cor18.ENAME, $0), <($cor18.JOB, $1)), AND(>($cor19.ENAME, $0), <($cor19.JOB, $1)), AND(>($cor20.ENAME, $0), <($cor20.JOB, $1)), AND(>($cor21.ENAME, $0), <($cor21.JOB, $1)), AND(>($cor22.ENAME, $0), <($cor22.JOB, $1)), AND(>($cor23.ENAME, $0), <($cor23.JOB, $1)), AND(>($cor24.ENAME, $0), <($cor24.JOB, $1)), AND(>($cor25.ENAME, $0), <($cor25.JOB, $1)), AND(>($cor26.ENAME, $0), <($cor26.JOB, $1)), AND(>($cor27.ENAME, $0), <($cor27.JOB, $1)), AND(>($cor28.ENAME, $0), <($cor28.JOB, $1)), AND(>($cor29.ENAME, $0), <($cor29.JOB, $1)), AND(>($cor30.ENAME, $0), <($cor30.JOB, $1)), AND(>($cor31.ENAME, $0), <($cor31.JOB, $1)), AND(>($cor32.ENAME, $0), <($cor32.JOB, $1)), AND(>($cor33.ENAME, $0), <($cor33.JOB, $1)), AND(>($cor34.ENAME, $0), <($cor34.JOB, $1)), AND(>($cor35.ENAME, $0), <($cor35.JOB, $1)), AND(>($cor36.ENAME, $0), <($cor36.JOB, $1)), AND(>($cor37.ENAME, $0), <($cor37.JOB, $1)), AND(>($cor38.ENAME, $0), <($cor38.JOB, $1)), AND(>($cor39.ENAME, $0), <($cor39.JOB, $1)), AND(>($cor40.ENAME, $0), <($cor40.JOB, $1)), AND(>($cor41.ENAME, $0), <($cor41.JOB, $1)), AND(>($cor42.ENAME, $0), <($cor42.JOB, $1)), AND(>($cor43.ENAME, $0), <($cor43.JOB, $1)), AND(>($cor44.ENAME, $0), <($cor44.JOB, $1)), AND(>($cor45.ENAME, $0), <($cor45.JOB, $1)), AND(>($cor46.ENAME, $0), <($cor46.JOB, $1)), AND(>($cor47.ENAME, $0), <($cor47.JOB, $1)), AND(>($cor48.ENAME, $0), <($cor48.JOB, $1)), AND(>($cor49.ENAME, $0), <($cor49.JOB, $1)), AND(>($cor50.ENAME, $0), <($cor50.JOB, $1)), AND(>($cor51.ENAME, $0), <($cor51.JOB, $1)), AND(>($cor52.ENAME, $0), <($cor52.JOB, $1)), AND(>($cor53.ENAME, $0), <($cor53.JOB, $1)), AND(>($cor54.ENAME, $0), <($cor54.JOB, $1)), AND(>($cor55.ENAME, $0), <($cor55.JOB, $1)), AND(>($cor56.ENAME, $0), <($cor56.JOB, $1)), AND(>($cor57.ENAME, $0), <($cor57.JOB, $1)), AND(>($cor58.ENAME, $0), <($cor58.JOB, $1)), AND(>($cor59.ENAME, $0), <($cor59.JOB, $1)), AND(>($cor60.ENAME, $0), <($cor60.JOB, $1)), AND(>($cor61.ENAME, $0), <($cor61.JOB, $1)), AND(>($cor62.ENAME, $0), <($cor62.JOB, $1)), AND(>($cor63.ENAME, $0), <($cor63.JOB, $1)), AND(>($cor64.ENAME, $0), <($cor64.JOB, $1)), AND(>($cor65.ENAME, $0), <($cor65.JOB, $1)), AND(>($cor66.ENAME, $0), <($cor66.JOB, $1)), AND(>($cor67.ENAME, $0), <($cor67.JOB, $1)), AND(>($cor68.ENAME, $0), <($cor68.JOB, $1)), AND(>($cor69.ENAME, $0), <($cor69.JOB, $1)), AND(>($cor70.ENAME, $0), <($cor70.JOB, $1)), AND(>($cor71.ENAME, $0), <($cor71.JOB, $1)), AND(>($cor72.ENAME, $0), <($cor72.JOB, $1)), AND(>($cor73.ENAME, $0), <($cor73.JOB, $1)), AND(>($cor74.ENAME, $0), <($cor74.JOB, $1)), AND(>($cor75.ENAME, $0), <($cor75.JOB, $1)), AND(>($cor76.ENAME, $0), <($cor76.JOB, $1)), AND(>($cor77.ENAME, $0), <($cor77.JOB, $1)), AND(>($cor78.ENAME, $0), <($cor78.JOB, $1)), AND(>($cor79.ENAME, $0), <($cor79.JOB, $1)), AND(>($cor80.ENAME, $0), <($cor80.JOB, $1)), AND(>($cor81.ENAME, $0), <($cor81.JOB, $1)), AND(>($cor82.ENAME, $0), <($cor82.JOB, $1)), AND(>($cor83.ENAME, $0), <($cor83.JOB, $1)), AND(>($cor84.ENAME, $0), <($cor84.JOB, $1)), AND(>($cor85.ENAME, $0), <($cor85.JOB, $1)), AND(>($cor86.ENAME, $0), <($cor86.JOB, $1)), AND(>($cor87.ENAME, $0), <($cor87.JOB, $1)), AND(>($cor88.ENAME, $0), <($cor88.JOB, $1)), AND(>($cor89.ENAME, $0), <($cor89.JOB, $1)), AND(>($cor90.ENAME, $0), <($cor90.JOB, $1)), AND(>($cor91.ENAME, $0), <($cor91.JOB, $1)), AND(>($cor92.ENAME, $0), <($cor92.JOB, $1)), AND(>($cor93.ENAME, $0), <($cor93.JOB, $1)), AND(>($cor94.ENAME, $0), <($cor94.JOB, $1)), AND(>($cor95.ENAME, $0), <($cor95.JOB, $1)), AND(>($cor96.ENAME, $0), <($cor96.JOB, $1)), AND(>($cor97.ENAME, $0), <($cor97.JOB, $1)), AND(>($cor98.ENAME, $0), <($cor98.JOB, $1)), AND(>($cor99.ENAME, $0), <($cor99.JOB, $1)))]) - EnumerableTableScan(table=[[CATALOG, SALES, BONUS]]) +EnumerableProject(ENAME=[$0], JOB=[$1], EXPR$2=[$2], ENAME0=[$3], JOB0=[$4], SAL=[$5], COMM=[$6]) + EnumerableMergeJoin(condition=[AND(=($1, $7), =($0, $3))], joinType=[inner]) + EnumerableProject(ENAME=[$0], JOB=[CAST($1):VARCHAR NOT NULL], EXPR$2=[+($2, 1)]) + EnumerableSort(sort0=[$1], sort1=[$0], dir0=[ASC], dir1=[ASC]) + EnumerableLimit(fetch=[100]) + EnumerableProject(ENAME=[$1], JOB=[$2], SAL=[$5]) + EnumerableTableScan(table=[[CATALOG, SALES, EMP]]) + EnumerableSort(sort0=[$4], sort1=[$0], dir0=[ASC], dir1=[ASC]) + EnumerableProject(ENAME=[$0], JOB=[$1], SAL=[$2], COMM=[$3], JOB0=[CAST($1):VARCHAR NOT NULL]) + EnumerableTableScan(table=[[CATALOG, SALES, BONUS]]) ]]> - + - + - + - + - + - + - + +(select ename, sal * -1 as sal, max_job from +(select ename, sal, max(job) as max_job from sales.emp group by ename, sal) t) r +join sales.bonus s on r.sal=s.sal and r.ename=s.ename]]> - + - + - + - + @@ -1564,72 +1553,83 @@ LogicalSort(sort0=[$0], sort1=[$1], sort2=[$2], dir0=[DESC], dir1=[DESC], dir2=[ - + - + - + - + - + - 1000 -order by mgr desc, ename]]> + ($3, 1000)]) - LogicalAggregate(group=[{0, 1, 2}], MAX_SAL=[MAX($3)]) - LogicalProject(ENAME=[$1], JOB=[$2], MGR=[$3], SAL=[$5]) - LogicalTableScan(table=[[CATALOG, SALES, EMP]]) +LogicalSort(sort0=[$1], sort1=[$0], dir0=[ASC], dir1=[ASC]) + LogicalProject(A=[$0], B=[$1]) + LogicalValues(tuples=[[{ 1, 1 }, { 2, 1 }, { 1, 2 }, { 2, 2 }]]) ]]> ($t3, $t4)], proj#0..3=[{exprs}], $condition=[$t5]) - EnumerableSortedAggregate(group=[{1, 2, 3}], MAX_SAL=[MAX($5)]) - EnumerableSort(sort0=[$3], sort1=[$1], sort2=[$2], dir0=[DESC], dir1=[ASC], dir2=[ASC]) - EnumerableTableScan(table=[[CATALOG, SALES, EMP]]) +EnumerableValues(tuples=[[{ 1, 1 }, { 2, 1 }, { 1, 2 }, { 2, 2 }]]) +]]> + + + + + + + + + + + diff --git a/core/src/test/resources/org/apache/calcite/test/TypeCoercionConverterTest.xml b/core/src/test/resources/org/apache/calcite/test/TypeCoercionConverterTest.xml index 2f06f7ca25bd..9aed98d28572 100644 --- a/core/src/test/resources/org/apache/calcite/test/TypeCoercionConverterTest.xml +++ b/core/src/test/resources/org/apache/calcite/test/TypeCoercionConverterTest.xml @@ -16,108 +16,118 @@ ~ limitations under the License. --> - + +1<'1' as f0, +1<='1' as f1, +1>'1' as f2, +1>='1' as f3, +1='1' as f4, +t1_date > t1_timestamp as f5, +'2' is not distinct from 2 as f6, +'2019-09-23' between t1_date and t1_timestamp as f7, +cast('2019-09-23' as date) between t1_date and t1_timestamp as f8 +from t1]]> (CAST($8):TIMESTAMP(0) NOT NULL, $7)], F6=[true], F7=[AND(>=(2019-09-23 00:00:00, CAST($8):TIMESTAMP(0) NOT NULL), <=(2019-09-23 00:00:00, $7))], F8=[AND(>=(2019-09-23 00:00:00, CAST($8):TIMESTAMP(0) NOT NULL), <=(2019-09-23 00:00:00, $7))]) + LogicalTableScan(table=[[CATALOG, SALES, T1]]) ]]> - + +1=true as f0, +1.0=true as f1, +0.0=true=true as f2, +1.23=t1_boolean as f3, +t1_smallint=t1_boolean as f4, +10000000000=true as f5 +from t1]]> - + - + - + - 0 then t2_bigint else t2_decimal end from t2]]> + + + + + + + + - + '1' as f2, -1>='1' as f3, -1='1' as f4, -t1_date > t1_timestamp as f5, -'2' is not distinct from 2 as f6, -'2019-09-23' between t1_date and t1_timestamp as f7, -cast('2019-09-23' as date) between t1_date and t1_timestamp as f8 -from t1]]> +1 in ('1', '2', '3') as f0, +(1, 2) in (('1', '2')) as f1, +(1, 2) in (('1', '2'), ('3', '4')) as f2 +from (values (true, true, true))]]> (CAST($8):TIMESTAMP(0) NOT NULL, $7)], F6=[true], F7=[AND(>=(2019-09-23 00:00:00, CAST($8):TIMESTAMP(0) NOT NULL), <=(2019-09-23 00:00:00, $7))], F8=[AND(>=(2019-09-23 00:00:00, CAST($8):TIMESTAMP(0) NOT NULL), <=(2019-09-23 00:00:00, $7))]) - LogicalTableScan(table=[[CATALOG, SALES, T1]]) +LogicalValues(tuples=[[{ true, true, true }]]) ]]> - + - + ($2, 0)]) + LogicalTableScan(table=[[CATALOG, SALES, T2]]) ]]> - + - + @@ -141,27 +151,17 @@ LogicalUnion(all=[false]) ]]> - - - 0 then t2_bigint else t2_decimal end from t2]]> - - - - - - + - + ($2, 0)]) - LogicalTableScan(table=[[CATALOG, SALES, T2]]) +LogicalUnion(all=[false]) + LogicalProject(EXPR$0=[CAST($0):VARCHAR NOT NULL], EXPR$1=[$1]) + LogicalValues(tuples=[[{ 1, '3' }]]) + LogicalProject(EXPR$0=[$0], EXPR$1=[CAST($1):VARCHAR NOT NULL]) + LogicalValues(tuples=[[{ '2', 4 }]]) ]]>