This is an automated email from the ASF dual-hosted git repository.
wenchen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/master by this push:
new accde839ead8 [SPARK-50598][SQL] An initial, no-op PR which adds new
parameters to already existing classes UnresolvedWith, CTERelationRef and
CTERelationDef to enable later implementation of recursive CTEs
accde839ead8 is described below
commit accde839ead894cf4878965d42565cca9a7ed2c2
Author: Milan Cupac <[email protected]>
AuthorDate: Wed Dec 18 02:17:35 2024 +0800
[SPARK-50598][SQL] An initial, no-op PR which adds new parameters to
already existing classes UnresolvedWith, CTERelationRef and CTERelationDef to
enable later implementation of recursive CTEs
### What changes were proposed in this pull request?
PR adds new parameters to already existing classes UnresolvedWith,
CTERelationRef and CTERelationDef to enable later implementation of recursive
CTEs.
- Additional parameters are added in pattern matching cases in other files
of mentioned classes as well.
- A large number of trivial changes in tests was required, due to new
parameters introduced to the classes, which are also addressed in this PR.
- More information for reviewers can be found here:
https://docs.google.com/document/d/1qcEJxqoXcr5cSt6HgIQjWQSqhfkSaVYkoDHsg5oxXp4/edit
### Why are the changes needed?
Support for the recursive CTE.
### Does this PR introduce _any_ user-facing change?
No. RECURSIVE keyword is not introduced in this PR.
### How was this patch tested?
The tests failing after the initial change were all in `SQLQueryTestSuite`,
so this patch was tested by running this Test Suite.
### Was this patch authored or co-authored using generative AI tooling?
No.
Closes #49180 from milanisvet/milanrcte2.
Authored-by: Milan Cupac <[email protected]>
Signed-off-by: Wenchen Fan <[email protected]>
---
.../sql/catalyst/analysis/CTESubstitution.scala | 6 +-
...ushdownPredicatesAndPruneColumnsForCTEDef.scala | 6 +-
.../plans/logical/basicLogicalOperators.scala | 17 ++-
.../sql-tests/analyzer-results/cte-command.sql.out | 20 +--
.../sql-tests/analyzer-results/cte-nested.sql.out | 162 ++++++++++-----------
.../analyzer-results/cte-nonlegacy.sql.out | 92 ++++++------
.../sql-tests/analyzer-results/cte.sql.out | 134 ++++++++---------
.../double-quoted-identifiers-enabled.sql.out | 8 +-
.../analyzer-results/identifier-clause.sql.out | 16 +-
.../analyzer-results/join-lateral.sql.out | 8 +-
.../analyzer-results/non-excludable-rule.sql.out | 4 +-
.../postgreSQL/window_part3.sql.out | 16 +-
.../analyzer-results/postgreSQL/with.sql.out | 26 ++--
.../analyzer-results/sql-session-variables.sql.out | 4 +-
.../subquery/exists-subquery/exists-cte.sql.out | 30 ++--
.../in-subquery/in-multiple-columns.sql.out | 6 +-
.../subquery/in-subquery/in-with-cte.sql.out | 84 +++++------
.../scalar-subquery/scalar-subquery-select.sql.out | 38 ++---
.../sql-tests/analyzer-results/transform.sql.out | 6 +-
.../sql-tests/analyzer-results/using-join.sql.out | 8 +-
20 files changed, 351 insertions(+), 340 deletions(-)
diff --git
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CTESubstitution.scala
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CTESubstitution.scala
index d75e7d528d5b..84f6d04eeb1a 100644
---
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CTESubstitution.scala
+++
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CTESubstitution.scala
@@ -123,7 +123,7 @@ object CTESubstitution extends Rule[LogicalPlan] {
startOfQuery: Boolean = true): Unit = {
val resolver = conf.resolver
plan match {
- case UnresolvedWith(child, relations) =>
+ case UnresolvedWith(child, relations, _) =>
val newNames = ArrayBuffer.empty[String]
newNames ++= outerCTERelationNames
relations.foreach {
@@ -149,7 +149,7 @@ object CTESubstitution extends Rule[LogicalPlan] {
plan: LogicalPlan,
cteDefs: ArrayBuffer[CTERelationDef]): LogicalPlan = {
plan.resolveOperatorsUp {
- case UnresolvedWith(child, relations) =>
+ case UnresolvedWith(child, relations, _) =>
val resolvedCTERelations =
resolveCTERelations(relations, isLegacy = true, forceInline = false,
Seq.empty, cteDefs)
substituteCTE(child, alwaysInline = true, resolvedCTERelations)
@@ -202,7 +202,7 @@ object CTESubstitution extends Rule[LogicalPlan] {
var firstSubstituted: Option[LogicalPlan] = None
val newPlan = plan.resolveOperatorsDownWithPruning(
_.containsAnyPattern(UNRESOLVED_WITH, PLAN_EXPRESSION)) {
- case UnresolvedWith(child: LogicalPlan, relations) =>
+ case UnresolvedWith(child: LogicalPlan, relations, _) =>
val resolvedCTERelations =
resolveCTERelations(relations, isLegacy = false, forceInline,
outerCTEDefs, cteDefs) ++
outerCTEDefs
diff --git
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/PushdownPredicatesAndPruneColumnsForCTEDef.scala
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/PushdownPredicatesAndPruneColumnsForCTEDef.scala
index aa13e6a67c51..838827a0e2e1 100644
---
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/PushdownPredicatesAndPruneColumnsForCTEDef.scala
+++
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/PushdownPredicatesAndPruneColumnsForCTEDef.scala
@@ -122,7 +122,7 @@ object PushdownPredicatesAndPruneColumnsForCTEDef extends
Rule[LogicalPlan] {
private def pushdownPredicatesAndAttributes(
plan: LogicalPlan,
cteMap: CTEMap): LogicalPlan = plan.transformWithSubqueries {
- case cteDef @ CTERelationDef(child, id, originalPlanWithPredicates, _) =>
+ case cteDef @ CTERelationDef(child, id, originalPlanWithPredicates, _, _,
_) =>
val (_, _, newPreds, newAttrSet) = cteMap(id)
val originalPlan = originalPlanWithPredicates.map(_._1).getOrElse(child)
val preds = originalPlanWithPredicates.map(_._2).getOrElse(Seq.empty)
@@ -141,7 +141,7 @@ object PushdownPredicatesAndPruneColumnsForCTEDef extends
Rule[LogicalPlan] {
cteDef
}
- case cteRef @ CTERelationRef(cteId, _, output, _, _) =>
+ case cteRef @ CTERelationRef(cteId, _, output, _, _, _) =>
val (cteDef, _, _, newAttrSet) = cteMap(cteId)
if (needsPruning(cteDef.child, newAttrSet)) {
val indices = newAttrSet.toSeq.map(cteDef.output.indexOf)
@@ -170,7 +170,7 @@ object PushdownPredicatesAndPruneColumnsForCTEDef extends
Rule[LogicalPlan] {
object CleanUpTempCTEInfo extends Rule[LogicalPlan] {
override def apply(plan: LogicalPlan): LogicalPlan =
plan.transformWithPruning(_.containsPattern(CTE)) {
- case cteDef @ CTERelationDef(_, _, Some(_), _) =>
+ case cteDef @ CTERelationDef(_, _, Some(_), _, _, _) =>
cteDef.copy(originalPlanWithPredicates = None)
}
}
diff --git
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicLogicalOperators.scala
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicLogicalOperators.scala
index 4636ca59d4e8..a6405f18ad44 100644
---
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicLogicalOperators.scala
+++
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicLogicalOperators.scala
@@ -833,10 +833,12 @@ object View {
* @param child The final query of this CTE.
* @param cteRelations A sequence of pair (alias, the CTE definition) that
this CTE defined
* Each CTE can see the base tables and the previously
defined CTEs only.
+ * @param allowRecursion A boolean flag if recursion is allowed.
*/
case class UnresolvedWith(
child: LogicalPlan,
- cteRelations: Seq[(String, SubqueryAlias)]) extends UnaryNode {
+ cteRelations: Seq[(String, SubqueryAlias)],
+ allowRecursion: Boolean = false) extends UnaryNode {
final override val nodePatterns: Seq[TreePattern] = Seq(UNRESOLVED_WITH)
override def output: Seq[Attribute] = child.output
@@ -862,12 +864,19 @@ case class UnresolvedWith(
* pushdown to help ensure rule idempotency.
* @param underSubquery If true, it means we don't need to add a shuffle for
this CTE relation as
* subquery reuse will be applied to reuse CTE relation
output.
+ * @param recursive If true, then this CTE Definition is recursive - it
contains a self-reference.
+ * @param recursionAnchor A helper plan node that temporary stores the anchor
term of recursive
+ * definitions. In the beginning of recursive
resolution the `ResolveWithCTE`
+ * rule updates this parameter and once it is resolved
the same rule resolves
+ * the recursive [[CTERelationRef]] references and
removes this parameter.
*/
case class CTERelationDef(
child: LogicalPlan,
id: Long = CTERelationDef.newId,
originalPlanWithPredicates: Option[(LogicalPlan, Seq[Expression])] = None,
- underSubquery: Boolean = false) extends UnaryNode {
+ underSubquery: Boolean = false,
+ recursive: Boolean = false,
+ recursionAnchor: Option[LogicalPlan] = None) extends UnaryNode {
final override val nodePatterns: Seq[TreePattern] = Seq(CTE)
@@ -891,13 +900,15 @@ object CTERelationDef {
* de-duplication.
* @param statsOpt The optional statistics inferred from the
corresponding CTE
* definition.
+ * @param recursive If this is a recursive reference.
*/
case class CTERelationRef(
cteId: Long,
_resolved: Boolean,
override val output: Seq[Attribute],
override val isStreaming: Boolean,
- statsOpt: Option[Statistics] = None) extends LeafNode with
MultiInstanceRelation {
+ statsOpt: Option[Statistics] = None,
+ recursive: Boolean = false) extends LeafNode with MultiInstanceRelation {
final override val nodePatterns: Seq[TreePattern] = Seq(CTE)
diff --git
a/sql/core/src/test/resources/sql-tests/analyzer-results/cte-command.sql.out
b/sql/core/src/test/resources/sql-tests/analyzer-results/cte-command.sql.out
index 0b539267e720..926e3cd00304 100644
--- a/sql/core/src/test/resources/sql-tests/analyzer-results/cte-command.sql.out
+++ b/sql/core/src/test/resources/sql-tests/analyzer-results/cte-command.sql.out
@@ -4,13 +4,13 @@ CREATE TABLE cte_tbl USING csv AS WITH s AS (SELECT 42 AS
col) SELECT * FROM s
-- !query analysis
CreateDataSourceTableAsSelectCommand `spark_catalog`.`default`.`cte_tbl`,
ErrorIfExists, [col]
+- WithCTE
- :- CTERelationDef xxxx, false
+ :- CTERelationDef xxxx, false, false
: +- SubqueryAlias s
: +- Project [42 AS col#x]
: +- OneRowRelation
+- Project [col#x]
+- SubqueryAlias s
- +- CTERelationRef xxxx, true, [col#x], false
+ +- CTERelationRef xxxx, true, [col#x], false, false
-- !query
@@ -26,13 +26,13 @@ CREATE TEMPORARY VIEW cte_view AS WITH s AS (SELECT 42 AS
col) SELECT * FROM s
-- !query analysis
CreateViewCommand `cte_view`, WITH s AS (SELECT 42 AS col) SELECT * FROM s,
false, false, LocalTempView, UNSUPPORTED, true
+- WithCTE
- :- CTERelationDef xxxx, false
+ :- CTERelationDef xxxx, false, false
: +- SubqueryAlias s
: +- Project [42 AS col#x]
: +- OneRowRelation
+- Project [col#x]
+- SubqueryAlias s
- +- CTERelationRef xxxx, true, [col#x], false
+ +- CTERelationRef xxxx, true, [col#x], false, false
-- !query
@@ -43,13 +43,13 @@ Project [col#x]
+- View (`cte_view`, [col#x])
+- Project [cast(col#x as int) AS col#x]
+- WithCTE
- :- CTERelationDef xxxx, false
+ :- CTERelationDef xxxx, false, false
: +- SubqueryAlias s
: +- Project [42 AS col#x]
: +- OneRowRelation
+- Project [col#x]
+- SubqueryAlias s
- +- CTERelationRef xxxx, true, [col#x], false
+ +- CTERelationRef xxxx, true, [col#x], false, false
-- !query
@@ -58,13 +58,13 @@ INSERT INTO cte_tbl SELECT * FROM S
-- !query analysis
InsertIntoHadoopFsRelationCommand file:[not included in
comparison]/{warehouse_dir}/cte_tbl, false, CSV, [path=file:[not included in
comparison]/{warehouse_dir}/cte_tbl], Append,
`spark_catalog`.`default`.`cte_tbl`,
org.apache.spark.sql.execution.datasources.InMemoryFileIndex(file:[not included
in comparison]/{warehouse_dir}/cte_tbl), [col]
+- WithCTE
- :- CTERelationDef xxxx, false
+ :- CTERelationDef xxxx, false, false
: +- SubqueryAlias s
: +- Project [43 AS col#x]
: +- OneRowRelation
+- Project [col#x]
+- SubqueryAlias S
- +- CTERelationRef xxxx, true, [col#x], false
+ +- CTERelationRef xxxx, true, [col#x], false, false
-- !query
@@ -80,13 +80,13 @@ INSERT INTO cte_tbl WITH s AS (SELECT 44 AS col) SELECT *
FROM s
-- !query analysis
InsertIntoHadoopFsRelationCommand file:[not included in
comparison]/{warehouse_dir}/cte_tbl, false, CSV, [path=file:[not included in
comparison]/{warehouse_dir}/cte_tbl], Append,
`spark_catalog`.`default`.`cte_tbl`,
org.apache.spark.sql.execution.datasources.InMemoryFileIndex(file:[not included
in comparison]/{warehouse_dir}/cte_tbl), [col]
+- WithCTE
- :- CTERelationDef xxxx, false
+ :- CTERelationDef xxxx, false, false
: +- SubqueryAlias s
: +- Project [44 AS col#x]
: +- OneRowRelation
+- Project [col#x]
+- SubqueryAlias s
- +- CTERelationRef xxxx, true, [col#x], false
+ +- CTERelationRef xxxx, true, [col#x], false, false
-- !query
diff --git
a/sql/core/src/test/resources/sql-tests/analyzer-results/cte-nested.sql.out
b/sql/core/src/test/resources/sql-tests/analyzer-results/cte-nested.sql.out
index 3a9fc5ea1297..0365c4dcd8e0 100644
--- a/sql/core/src/test/resources/sql-tests/analyzer-results/cte-nested.sql.out
+++ b/sql/core/src/test/resources/sql-tests/analyzer-results/cte-nested.sql.out
@@ -7,18 +7,18 @@ WITH t as (
SELECT * FROM t
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t2
: +- Project [1 AS 1#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1#x]
: +- SubqueryAlias t2
-: +- CTERelationRef xxxx, true, [1#x], false
+: +- CTERelationRef xxxx, true, [1#x], false, false
+- Project [1#x]
+- SubqueryAlias t
- +- CTERelationRef xxxx, true, [1#x], false
+ +- CTERelationRef xxxx, true, [1#x], false, false
-- !query
@@ -30,14 +30,14 @@ SELECT max(c) FROM (
Aggregate [max(c#x) AS max(c)#x]
+- SubqueryAlias __auto_generated_subquery_name
+- WithCTE
- :- CTERelationDef xxxx, false
+ :- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1#x AS c#x]
: +- Project [1 AS 1#x]
: +- OneRowRelation
+- Project [c#x]
+- SubqueryAlias t
- +- CTERelationRef xxxx, true, [c#x], false
+ +- CTERelationRef xxxx, true, [c#x], false, false
-- !query
@@ -48,13 +48,13 @@ SELECT (
-- !query analysis
Project [scalar-subquery#x [] AS scalarsubquery()#x]
: +- WithCTE
-: :- CTERelationDef xxxx, false
+: :- CTERelationDef xxxx, false, false
: : +- SubqueryAlias t
: : +- Project [1 AS 1#x]
: : +- OneRowRelation
: +- Project [1#x]
: +- SubqueryAlias t
-: +- CTERelationRef xxxx, true, [1#x], false
+: +- CTERelationRef xxxx, true, [1#x], false, false
+- OneRowRelation
@@ -66,7 +66,7 @@ SELECT (
-- !query analysis
Project [scalar-subquery#x [id#xL] AS scalarsubquery(id)#x]
: +- WithCTE
-: :- CTERelationDef xxxx, false
+: :- CTERelationDef xxxx, false, false
: : +- SubqueryAlias unreferenced
: : +- Project [outer(id#xL)]
: : +- OneRowRelation
@@ -83,7 +83,7 @@ SELECT (
-- !query analysis
Project [scalar-subquery#x [id#xL] AS scalarsubquery(id)#xL]
: +- WithCTE
-: :- CTERelationDef xxxx, false
+: :- CTERelationDef xxxx, false, false
: : +- SubqueryAlias unreferenced
: : +- Project [1 AS 1#x]
: : +- OneRowRelation
@@ -128,22 +128,22 @@ WITH
SELECT * FROM t2
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1 AS 1#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [2 AS 2#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t2
: +- Project [2#x]
: +- SubqueryAlias t
-: +- CTERelationRef xxxx, true, [2#x], false
+: +- CTERelationRef xxxx, true, [2#x], false, false
+- Project [2#x]
+- SubqueryAlias t2
- +- CTERelationRef xxxx, true, [2#x], false
+ +- CTERelationRef xxxx, true, [2#x], false, false
-- !query
@@ -160,29 +160,29 @@ WITH
SELECT * FROM t2
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1#x AS c#x]
: +- Project [1 AS 1#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t2
: +- Project [scalar-subquery#x [] AS scalarsubquery()#x]
: : +- Aggregate [max(c#x) AS max(c)#x]
: : +- SubqueryAlias __auto_generated_subquery_name
: : +- WithCTE
-: : :- CTERelationDef xxxx, false
+: : :- CTERelationDef xxxx, false, false
: : : +- SubqueryAlias t
: : : +- Project [2#x AS c#x]
: : : +- Project [2 AS 2#x]
: : : +- OneRowRelation
: : +- Project [c#x]
: : +- SubqueryAlias t
-: : +- CTERelationRef xxxx, true, [c#x], false
+: : +- CTERelationRef xxxx, true, [c#x], false, false
: +- OneRowRelation
+- Project [scalarsubquery()#x]
+- SubqueryAlias t2
- +- CTERelationRef xxxx, true, [scalarsubquery()#x], false
+ +- CTERelationRef xxxx, true, [scalarsubquery()#x], false, false
-- !query
@@ -199,31 +199,31 @@ WITH
SELECT * FROM t2
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1 AS 1#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [2 AS 2#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [3 AS 3#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t2
: +- Project [3#x]
: +- SubqueryAlias t
-: +- CTERelationRef xxxx, true, [3#x], false
-:- CTERelationDef xxxx, false
+: +- CTERelationRef xxxx, true, [3#x], false, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t2
: +- Project [3#x]
: +- SubqueryAlias t2
-: +- CTERelationRef xxxx, true, [3#x], false
+: +- CTERelationRef xxxx, true, [3#x], false, false
+- Project [3#x]
+- SubqueryAlias t2
- +- CTERelationRef xxxx, true, [3#x], false
+ +- CTERelationRef xxxx, true, [3#x], false, false
-- !query
@@ -234,12 +234,12 @@ SELECT max(c) FROM (
)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1#x AS c#x]
: +- Project [1 AS 1#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [2#x AS c#x]
: +- Project [2 AS 2#x]
@@ -248,7 +248,7 @@ WithCTE
+- SubqueryAlias __auto_generated_subquery_name
+- Project [c#x]
+- SubqueryAlias t
- +- CTERelationRef xxxx, true, [c#x], false
+ +- CTERelationRef xxxx, true, [c#x], false, false
-- !query
@@ -261,12 +261,12 @@ SELECT sum(c) FROM (
)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1#x AS c#x]
: +- Project [1 AS 1#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [2#x AS c#x]
: +- Project [2 AS 2#x]
@@ -277,7 +277,7 @@ WithCTE
+- SubqueryAlias __auto_generated_subquery_name
+- Project [c#x]
+- SubqueryAlias t
- +- CTERelationRef xxxx, true, [c#x], false
+ +- CTERelationRef xxxx, true, [c#x], false, false
-- !query
@@ -291,17 +291,17 @@ SELECT sum(c) FROM (
)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1#x AS c#x]
: +- Project [1 AS 1#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [2#x AS c#x]
: +- Project [2 AS 2#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [3#x AS c#x]
: +- Project [3 AS 3#x]
@@ -312,7 +312,7 @@ WithCTE
+- SubqueryAlias __auto_generated_subquery_name
+- Project [c#x]
+- SubqueryAlias t
- +- CTERelationRef xxxx, true, [c#x], false
+ +- CTERelationRef xxxx, true, [c#x], false, false
-- !query
@@ -323,19 +323,19 @@ SELECT (
)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1 AS 1#x]
: +- OneRowRelation
+- Project [scalar-subquery#x [] AS scalarsubquery()#x]
: +- WithCTE
- : :- CTERelationDef xxxx, false
+ : :- CTERelationDef xxxx, false, false
: : +- SubqueryAlias t
: : +- Project [2 AS 2#x]
: : +- OneRowRelation
: +- Project [2#x]
: +- SubqueryAlias t
- : +- CTERelationRef xxxx, true, [2#x], false
+ : +- CTERelationRef xxxx, true, [2#x], false, false
+- OneRowRelation
@@ -349,20 +349,20 @@ SELECT (
)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1 AS 1#x]
: +- OneRowRelation
+- Project [scalar-subquery#x [] AS scalarsubquery()#x]
: +- Project [scalar-subquery#x [] AS scalarsubquery()#x]
: : +- WithCTE
- : : :- CTERelationDef xxxx, false
+ : : :- CTERelationDef xxxx, false, false
: : : +- SubqueryAlias t
: : : +- Project [2 AS 2#x]
: : : +- OneRowRelation
: : +- Project [2#x]
: : +- SubqueryAlias t
- : : +- CTERelationRef xxxx, true, [2#x], false
+ : : +- CTERelationRef xxxx, true, [2#x], false, false
: +- OneRowRelation
+- OneRowRelation
@@ -378,25 +378,25 @@ SELECT (
)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1 AS 1#x]
: +- OneRowRelation
+- Project [scalar-subquery#x [] AS scalarsubquery()#x]
: +- WithCTE
- : :- CTERelationDef xxxx, false
+ : :- CTERelationDef xxxx, false, false
: : +- SubqueryAlias t
: : +- Project [2 AS 2#x]
: : +- OneRowRelation
: +- Project [scalar-subquery#x [] AS scalarsubquery()#x]
: : +- WithCTE
- : : :- CTERelationDef xxxx, false
+ : : :- CTERelationDef xxxx, false, false
: : : +- SubqueryAlias t
: : : +- Project [3 AS 3#x]
: : : +- OneRowRelation
: : +- Project [3#x]
: : +- SubqueryAlias t
- : : +- CTERelationRef xxxx, true, [3#x], false
+ : : +- CTERelationRef xxxx, true, [3#x], false, false
: +- OneRowRelation
+- OneRowRelation
@@ -410,7 +410,7 @@ WHERE c IN (
)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1#x AS c#x]
: +- Project [1 AS 1#x]
@@ -418,16 +418,16 @@ WithCTE
+- Project [c#x]
+- Filter c#x IN (list#x [])
: +- WithCTE
- : :- CTERelationDef xxxx, false
+ : :- CTERelationDef xxxx, false, false
: : +- SubqueryAlias t
: : +- Project [2#x AS c#x]
: : +- Project [2 AS 2#x]
: : +- OneRowRelation
: +- Project [c#x]
: +- SubqueryAlias t
- : +- CTERelationRef xxxx, true, [c#x], false
+ : +- CTERelationRef xxxx, true, [c#x], false, false
+- SubqueryAlias t
- +- CTERelationRef xxxx, true, [c#x], false
+ +- CTERelationRef xxxx, true, [c#x], false, false
-- !query
@@ -440,22 +440,22 @@ WITH
SELECT * FROM t
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t2
: +- Project [1 AS 1#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1#x]
: +- SubqueryAlias t2
-: +- CTERelationRef xxxx, true, [1#x], false
-:- CTERelationDef xxxx, false
+: +- CTERelationRef xxxx, true, [1#x], false, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t2
: +- Project [2 AS 2#x]
: +- OneRowRelation
+- Project [1#x]
+- SubqueryAlias t
- +- CTERelationRef xxxx, true, [1#x], false
+ +- CTERelationRef xxxx, true, [1#x], false, false
-- !query
@@ -468,22 +468,22 @@ WITH
SELECT * FROM t
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias abc
: +- Project [1 AS 1#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias aBc
: +- Project [2 AS 2#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [2#x]
: +- SubqueryAlias aBC
-: +- CTERelationRef xxxx, true, [2#x], false
+: +- CTERelationRef xxxx, true, [2#x], false, false
+- Project [2#x]
+- SubqueryAlias t
- +- CTERelationRef xxxx, true, [2#x], false
+ +- CTERelationRef xxxx, true, [2#x], false, false
-- !query
@@ -494,19 +494,19 @@ SELECT (
)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias abc
: +- Project [1 AS 1#x]
: +- OneRowRelation
+- Project [scalar-subquery#x [] AS scalarsubquery()#x]
: +- WithCTE
- : :- CTERelationDef xxxx, false
+ : :- CTERelationDef xxxx, false, false
: : +- SubqueryAlias aBc
: : +- Project [2 AS 2#x]
: : +- OneRowRelation
: +- Project [2#x]
: +- SubqueryAlias aBC
- : +- CTERelationRef xxxx, true, [2#x], false
+ : +- CTERelationRef xxxx, true, [2#x], false, false
+- OneRowRelation
@@ -522,23 +522,23 @@ WITH
SELECT * FROM t2
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t1
: +- Project [1 AS 1#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t3
: +- Project [1#x]
: +- SubqueryAlias t1
-: +- CTERelationRef xxxx, true, [1#x], false
-:- CTERelationDef xxxx, false
+: +- CTERelationRef xxxx, true, [1#x], false, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t2
: +- Project [1#x]
: +- SubqueryAlias t3
-: +- CTERelationRef xxxx, true, [1#x], false
+: +- CTERelationRef xxxx, true, [1#x], false, false
+- Project [1#x]
+- SubqueryAlias t2
- +- CTERelationRef xxxx, true, [1#x], false
+ +- CTERelationRef xxxx, true, [1#x], false, false
-- !query
@@ -553,20 +553,20 @@ SELECT * FROM (
)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte_outer
: +- Project [1 AS 1#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte_inner
: +- Project [1#x]
: +- SubqueryAlias cte_outer
-: +- CTERelationRef xxxx, true, [1#x], false
+: +- CTERelationRef xxxx, true, [1#x], false, false
+- Project [1#x]
+- SubqueryAlias __auto_generated_subquery_name
+- Project [1#x]
+- SubqueryAlias cte_inner
- +- CTERelationRef xxxx, true, [1#x], false
+ +- CTERelationRef xxxx, true, [1#x], false, false
-- !query
@@ -586,27 +586,27 @@ SELECT * FROM (
)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte_outer
: +- Project [1 AS 1#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte_inner_inner
: +- Project [1#x]
: +- SubqueryAlias cte_outer
-: +- CTERelationRef xxxx, true, [1#x], false
-:- CTERelationDef xxxx, false
+: +- CTERelationRef xxxx, true, [1#x], false, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte_inner
: +- Project [1#x]
: +- SubqueryAlias __auto_generated_subquery_name
: +- Project [1#x]
: +- SubqueryAlias cte_inner_inner
-: +- CTERelationRef xxxx, true, [1#x], false
+: +- CTERelationRef xxxx, true, [1#x], false, false
+- Project [1#x]
+- SubqueryAlias __auto_generated_subquery_name
+- Project [1#x]
+- SubqueryAlias cte_inner
- +- CTERelationRef xxxx, true, [1#x], false
+ +- CTERelationRef xxxx, true, [1#x], false, false
-- !query
diff --git
a/sql/core/src/test/resources/sql-tests/analyzer-results/cte-nonlegacy.sql.out
b/sql/core/src/test/resources/sql-tests/analyzer-results/cte-nonlegacy.sql.out
index e8640c3cbb6b..53dcd46361dc 100644
---
a/sql/core/src/test/resources/sql-tests/analyzer-results/cte-nonlegacy.sql.out
+++
b/sql/core/src/test/resources/sql-tests/analyzer-results/cte-nonlegacy.sql.out
@@ -7,18 +7,18 @@ WITH t as (
SELECT * FROM t
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t2
: +- Project [1 AS 1#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1#x]
: +- SubqueryAlias t2
-: +- CTERelationRef xxxx, true, [1#x], false
+: +- CTERelationRef xxxx, true, [1#x], false, false
+- Project [1#x]
+- SubqueryAlias t
- +- CTERelationRef xxxx, true, [1#x], false
+ +- CTERelationRef xxxx, true, [1#x], false, false
-- !query
@@ -30,14 +30,14 @@ SELECT max(c) FROM (
Aggregate [max(c#x) AS max(c)#x]
+- SubqueryAlias __auto_generated_subquery_name
+- WithCTE
- :- CTERelationDef xxxx, false
+ :- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1#x AS c#x]
: +- Project [1 AS 1#x]
: +- OneRowRelation
+- Project [c#x]
+- SubqueryAlias t
- +- CTERelationRef xxxx, true, [c#x], false
+ +- CTERelationRef xxxx, true, [c#x], false, false
-- !query
@@ -48,13 +48,13 @@ SELECT (
-- !query analysis
Project [scalar-subquery#x [] AS scalarsubquery()#x]
: +- WithCTE
-: :- CTERelationDef xxxx, false
+: :- CTERelationDef xxxx, false, false
: : +- SubqueryAlias t
: : +- Project [1 AS 1#x]
: : +- OneRowRelation
: +- Project [1#x]
: +- SubqueryAlias t
-: +- CTERelationRef xxxx, true, [1#x], false
+: +- CTERelationRef xxxx, true, [1#x], false, false
+- OneRowRelation
@@ -66,7 +66,7 @@ SELECT (
-- !query analysis
Project [scalar-subquery#x [id#xL] AS scalarsubquery(id)#x]
: +- WithCTE
-: :- CTERelationDef xxxx, false
+: :- CTERelationDef xxxx, false, false
: : +- SubqueryAlias unreferenced
: : +- Project [outer(id#xL)]
: : +- OneRowRelation
@@ -83,7 +83,7 @@ SELECT (
-- !query analysis
Project [scalar-subquery#x [id#xL] AS scalarsubquery(id)#xL]
: +- WithCTE
-: :- CTERelationDef xxxx, false
+: :- CTERelationDef xxxx, false, false
: : +- SubqueryAlias unreferenced
: : +- Project [1 AS 1#x]
: : +- OneRowRelation
@@ -153,29 +153,29 @@ WITH
SELECT * FROM t2
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1#x AS c#x]
: +- Project [1 AS 1#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t2
: +- Project [scalar-subquery#x [] AS scalarsubquery()#x]
: : +- Aggregate [max(c#x) AS max(c)#x]
: : +- SubqueryAlias __auto_generated_subquery_name
: : +- WithCTE
-: : :- CTERelationDef xxxx, false
+: : :- CTERelationDef xxxx, false, false
: : : +- SubqueryAlias t
: : : +- Project [2#x AS c#x]
: : : +- Project [2 AS 2#x]
: : : +- OneRowRelation
: : +- Project [c#x]
: : +- SubqueryAlias t
-: : +- CTERelationRef xxxx, true, [c#x], false
+: : +- CTERelationRef xxxx, true, [c#x], false, false
: +- OneRowRelation
+- Project [scalarsubquery()#x]
+- SubqueryAlias t2
- +- CTERelationRef xxxx, true, [scalarsubquery()#x], false
+ +- CTERelationRef xxxx, true, [scalarsubquery()#x], false, false
-- !query
@@ -211,12 +211,12 @@ SELECT max(c) FROM (
)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1#x AS c#x]
: +- Project [1 AS 1#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [2#x AS c#x]
: +- Project [2 AS 2#x]
@@ -225,7 +225,7 @@ WithCTE
+- SubqueryAlias __auto_generated_subquery_name
+- Project [c#x]
+- SubqueryAlias t
- +- CTERelationRef xxxx, true, [c#x], false
+ +- CTERelationRef xxxx, true, [c#x], false, false
-- !query
@@ -238,12 +238,12 @@ SELECT sum(c) FROM (
)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1#x AS c#x]
: +- Project [1 AS 1#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [2#x AS c#x]
: +- Project [2 AS 2#x]
@@ -254,7 +254,7 @@ WithCTE
+- SubqueryAlias __auto_generated_subquery_name
+- Project [c#x]
+- SubqueryAlias t
- +- CTERelationRef xxxx, true, [c#x], false
+ +- CTERelationRef xxxx, true, [c#x], false, false
-- !query
@@ -268,17 +268,17 @@ SELECT sum(c) FROM (
)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1#x AS c#x]
: +- Project [1 AS 1#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [2#x AS c#x]
: +- Project [2 AS 2#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [3#x AS c#x]
: +- Project [3 AS 3#x]
@@ -289,7 +289,7 @@ WithCTE
+- SubqueryAlias __auto_generated_subquery_name
+- Project [c#x]
+- SubqueryAlias t
- +- CTERelationRef xxxx, true, [c#x], false
+ +- CTERelationRef xxxx, true, [c#x], false, false
-- !query
@@ -384,22 +384,22 @@ WITH
SELECT * FROM t
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t2
: +- Project [1 AS 1#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1#x]
: +- SubqueryAlias t2
-: +- CTERelationRef xxxx, true, [1#x], false
-:- CTERelationDef xxxx, false
+: +- CTERelationRef xxxx, true, [1#x], false, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t2
: +- Project [2 AS 2#x]
: +- OneRowRelation
+- Project [1#x]
+- SubqueryAlias t
- +- CTERelationRef xxxx, true, [1#x], false
+ +- CTERelationRef xxxx, true, [1#x], false, false
-- !query
@@ -454,23 +454,23 @@ WITH
SELECT * FROM t2
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t1
: +- Project [1 AS 1#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t3
: +- Project [1#x]
: +- SubqueryAlias t1
-: +- CTERelationRef xxxx, true, [1#x], false
-:- CTERelationDef xxxx, false
+: +- CTERelationRef xxxx, true, [1#x], false, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t2
: +- Project [1#x]
: +- SubqueryAlias t3
-: +- CTERelationRef xxxx, true, [1#x], false
+: +- CTERelationRef xxxx, true, [1#x], false, false
+- Project [1#x]
+- SubqueryAlias t2
- +- CTERelationRef xxxx, true, [1#x], false
+ +- CTERelationRef xxxx, true, [1#x], false, false
-- !query
@@ -485,20 +485,20 @@ SELECT * FROM (
)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte_outer
: +- Project [1 AS 1#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte_inner
: +- Project [1#x]
: +- SubqueryAlias cte_outer
-: +- CTERelationRef xxxx, true, [1#x], false
+: +- CTERelationRef xxxx, true, [1#x], false, false
+- Project [1#x]
+- SubqueryAlias __auto_generated_subquery_name
+- Project [1#x]
+- SubqueryAlias cte_inner
- +- CTERelationRef xxxx, true, [1#x], false
+ +- CTERelationRef xxxx, true, [1#x], false, false
-- !query
@@ -518,27 +518,27 @@ SELECT * FROM (
)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte_outer
: +- Project [1 AS 1#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte_inner_inner
: +- Project [1#x]
: +- SubqueryAlias cte_outer
-: +- CTERelationRef xxxx, true, [1#x], false
-:- CTERelationDef xxxx, false
+: +- CTERelationRef xxxx, true, [1#x], false, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte_inner
: +- Project [1#x]
: +- SubqueryAlias __auto_generated_subquery_name
: +- Project [1#x]
: +- SubqueryAlias cte_inner_inner
-: +- CTERelationRef xxxx, true, [1#x], false
+: +- CTERelationRef xxxx, true, [1#x], false, false
+- Project [1#x]
+- SubqueryAlias __auto_generated_subquery_name
+- Project [1#x]
+- SubqueryAlias cte_inner
- +- CTERelationRef xxxx, true, [1#x], false
+ +- CTERelationRef xxxx, true, [1#x], false, false
-- !query
diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/cte.sql.out
b/sql/core/src/test/resources/sql-tests/analyzer-results/cte.sql.out
index 9b86c4df62c4..9a221f6a699c 100644
--- a/sql/core/src/test/resources/sql-tests/analyzer-results/cte.sql.out
+++ b/sql/core/src/test/resources/sql-tests/analyzer-results/cte.sql.out
@@ -62,7 +62,7 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
WITH t AS (SELECT 1 FROM t) SELECT * FROM t
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1 AS 1#x]
: +- SubqueryAlias t
@@ -73,7 +73,7 @@ WithCTE
: +- LocalRelation [id#x]
+- Project [1#x]
+- SubqueryAlias t
- +- CTERelationRef xxxx, true, [1#x], false
+ +- CTERelationRef xxxx, true, [1#x], false, false
-- !query
@@ -100,7 +100,7 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
WITH t1 AS (SELECT * FROM t2), t2 AS (SELECT 2 FROM t1) SELECT * FROM t1 cross
join t2
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t1
: +- Project [id#x]
: +- SubqueryAlias t2
@@ -109,17 +109,17 @@ WithCTE
: +- Project [id#x]
: +- SubqueryAlias t
: +- LocalRelation [id#x]
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t2
: +- Project [2 AS 2#x]
: +- SubqueryAlias t1
-: +- CTERelationRef xxxx, true, [id#x], false
+: +- CTERelationRef xxxx, true, [id#x], false, false
+- Project [id#x, 2#x]
+- Join Cross
:- SubqueryAlias t1
- : +- CTERelationRef xxxx, true, [id#x], false
+ : +- CTERelationRef xxxx, true, [id#x], false, false
+- SubqueryAlias t2
- +- CTERelationRef xxxx, true, [2#x], false
+ +- CTERelationRef xxxx, true, [2#x], false, false
-- !query
@@ -134,7 +134,7 @@ FROM CTE1 t1
CROSS JOIN CTE1 t2
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias CTE1
: +- Project [id#x AS id#x]
: +- Join Cross
@@ -157,10 +157,10 @@ WithCTE
+- Join Cross
:- SubqueryAlias t1
: +- SubqueryAlias CTE1
- : +- CTERelationRef xxxx, true, [id#x], false
+ : +- CTERelationRef xxxx, true, [id#x], false, false
+- SubqueryAlias t2
+- SubqueryAlias CTE1
- +- CTERelationRef xxxx, true, [id#x], false
+ +- CTERelationRef xxxx, true, [id#x], false, false
-- !query
@@ -168,7 +168,7 @@ WITH t(x) AS (SELECT 1)
SELECT * FROM t WHERE x = 1
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1#x AS x#x]
: +- Project [1 AS 1#x]
@@ -176,7 +176,7 @@ WithCTE
+- Project [x#x]
+- Filter (x#x = 1)
+- SubqueryAlias t
- +- CTERelationRef xxxx, true, [x#x], false
+ +- CTERelationRef xxxx, true, [x#x], false, false
-- !query
@@ -184,7 +184,7 @@ WITH t(x, y) AS (SELECT 1, 2)
SELECT * FROM t WHERE x = 1 AND y = 2
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1#x AS x#x, 2#x AS y#x]
: +- Project [1 AS 1#x, 2 AS 2#x]
@@ -192,7 +192,7 @@ WithCTE
+- Project [x#x, y#x]
+- Filter ((x#x = 1) AND (y#x = 2))
+- SubqueryAlias t
- +- CTERelationRef xxxx, true, [x#x, y#x], false
+ +- CTERelationRef xxxx, true, [x#x, y#x], false, false
-- !query
@@ -200,14 +200,14 @@ WITH t(x, x) AS (SELECT 1, 2)
SELECT * FROM t
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1#x AS x#x, 2#x AS x#x]
: +- Project [1 AS 1#x, 2 AS 2#x]
: +- OneRowRelation
+- Project [x#x, x#x]
+- SubqueryAlias t
- +- CTERelationRef xxxx, true, [x#x, x#x], false
+ +- CTERelationRef xxxx, true, [x#x, x#x], false, false
-- !query
@@ -300,56 +300,56 @@ WITH w1(c1) AS
SELECT * FROM w1
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias w8
: +- Project [1#x AS c8#x]
: +- Project [1 AS 1#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias w7
: +- Project [c8#x AS c7#x]
: +- Project [c8#x]
: +- SubqueryAlias w8
-: +- CTERelationRef xxxx, true, [c8#x], false
-:- CTERelationDef xxxx, false
+: +- CTERelationRef xxxx, true, [c8#x], false, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias w6
: +- Project [c7#x AS c6#x]
: +- Project [c7#x]
: +- SubqueryAlias w7
-: +- CTERelationRef xxxx, true, [c7#x], false
-:- CTERelationDef xxxx, false
+: +- CTERelationRef xxxx, true, [c7#x], false, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias w5
: +- Project [c6#x AS c5#x]
: +- Project [c6#x]
: +- SubqueryAlias w6
-: +- CTERelationRef xxxx, true, [c6#x], false
-:- CTERelationDef xxxx, false
+: +- CTERelationRef xxxx, true, [c6#x], false, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias w4
: +- Project [c5#x AS c4#x]
: +- Project [c5#x]
: +- SubqueryAlias w5
-: +- CTERelationRef xxxx, true, [c5#x], false
-:- CTERelationDef xxxx, false
+: +- CTERelationRef xxxx, true, [c5#x], false, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias w3
: +- Project [c4#x AS c3#x]
: +- Project [c4#x]
: +- SubqueryAlias w4
-: +- CTERelationRef xxxx, true, [c4#x], false
-:- CTERelationDef xxxx, false
+: +- CTERelationRef xxxx, true, [c4#x], false, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias w2
: +- Project [c3#x AS c2#x]
: +- Project [c3#x]
: +- SubqueryAlias w3
-: +- CTERelationRef xxxx, true, [c3#x], false
-:- CTERelationDef xxxx, false
+: +- CTERelationRef xxxx, true, [c3#x], false, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias w1
: +- Project [c2#x AS c1#x]
: +- Project [c2#x]
: +- SubqueryAlias w2
-: +- CTERelationRef xxxx, true, [c2#x], false
+: +- CTERelationRef xxxx, true, [c2#x], false, false
+- Project [c1#x]
+- SubqueryAlias w1
- +- CTERelationRef xxxx, true, [c1#x], false
+ +- CTERelationRef xxxx, true, [c1#x], false, false
-- !query
@@ -379,14 +379,14 @@ WITH same_name AS (SELECT 42)
SELECT * FROM same_name, (SELECT 10) AS same_name
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias same_name
: +- Project [42 AS 42#x]
: +- OneRowRelation
+- Project [42#x, 10#x]
+- Join Inner
:- SubqueryAlias same_name
- : +- CTERelationRef xxxx, true, [42#x], false
+ : +- CTERelationRef xxxx, true, [42#x], false, false
+- SubqueryAlias same_name
+- Project [10 AS 10#x]
+- OneRowRelation
@@ -419,13 +419,13 @@ WITH q AS (SELECT 'foo' AS x)
SELECT x, typeof(x) FROM q
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias q
: +- Project [foo AS x#x]
: +- OneRowRelation
+- Project [x#x, typeof(x#x) AS typeof(x)#x]
+- SubqueryAlias q
- +- CTERelationRef xxxx, true, [x#x], false
+ +- CTERelationRef xxxx, true, [x#x], false, false
-- !query
@@ -479,13 +479,13 @@ SELECT * FROM
Project [y#x]
+- SubqueryAlias __auto_generated_subquery_name
+- WithCTE
- :- CTERelationDef xxxx, false
+ :- CTERelationDef xxxx, false, false
: +- SubqueryAlias q
: +- Project [1 AS x#x]
: +- OneRowRelation
+- Project [(x#x + 1) AS y#x]
+- SubqueryAlias q
- +- CTERelationRef xxxx, true, [x#x], false
+ +- CTERelationRef xxxx, true, [x#x], false, false
-- !query
@@ -493,13 +493,13 @@ select (with q as (select 1 x) select * from q)
-- !query analysis
Project [scalar-subquery#x [] AS scalarsubquery()#x]
: +- WithCTE
-: :- CTERelationDef xxxx, false
+: :- CTERelationDef xxxx, false, false
: : +- SubqueryAlias q
: : +- Project [1 AS x#x]
: : +- OneRowRelation
: +- Project [x#x]
: +- SubqueryAlias q
-: +- CTERelationRef xxxx, true, [x#x], false
+: +- CTERelationRef xxxx, true, [x#x], false, false
+- OneRowRelation
@@ -508,13 +508,13 @@ select 1 in (with q as (select 1) select * from q)
-- !query analysis
Project [1 IN (list#x []) AS (1 IN (listquery()))#x]
: +- WithCTE
-: :- CTERelationDef xxxx, false
+: :- CTERelationDef xxxx, false, false
: : +- SubqueryAlias q
: : +- Project [1 AS 1#x]
: : +- OneRowRelation
: +- Project [1#x]
: +- SubqueryAlias q
-: +- CTERelationRef xxxx, true, [1#x], false
+: +- CTERelationRef xxxx, true, [1#x], false, false
+- OneRowRelation
@@ -549,11 +549,11 @@ from
T1 z
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias T1
: +- Project [1 AS a#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias T1
: +- Project [2 AS b#x]
: +- OneRowRelation
@@ -562,14 +562,14 @@ WithCTE
:- Join Inner
: :- SubqueryAlias x
: : +- SubqueryAlias T1
- : : +- CTERelationRef xxxx, true, [a#x], false
+ : : +- CTERelationRef xxxx, true, [a#x], false, false
: +- SubqueryAlias y
: +- Project [b#x]
: +- SubqueryAlias T1
- : +- CTERelationRef xxxx, true, [b#x], false
+ : +- CTERelationRef xxxx, true, [b#x], false, false
+- SubqueryAlias z
+- SubqueryAlias T1
- +- CTERelationRef xxxx, true, [a#x], false
+ +- CTERelationRef xxxx, true, [a#x], false, false
-- !query
@@ -580,15 +580,15 @@ from
(WITH TtTt as (select 3 c) select * from ttTT, `tttT_2`)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias TTtt
: +- Project [1 AS a#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias tTTt_2
: +- Project [2 AS a#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias TtTt
: +- Project [3 AS c#x]
: +- OneRowRelation
@@ -597,9 +597,9 @@ WithCTE
+- Project [c#x, a#x]
+- Join Inner
:- SubqueryAlias ttTT
- : +- CTERelationRef xxxx, true, [c#x], false
+ : +- CTERelationRef xxxx, true, [c#x], false, false
+- SubqueryAlias tttT_2
- +- CTERelationRef xxxx, true, [a#x], false
+ +- CTERelationRef xxxx, true, [a#x], false, false
-- !query
@@ -609,13 +609,13 @@ from (select 1 x, 2 y) T
-- !query analysis
Project [scalar-subquery#x [x#x] AS scalarsubquery(x)#x]
: +- WithCTE
-: :- CTERelationDef xxxx, false
+: :- CTERelationDef xxxx, false, false
: : +- SubqueryAlias q
: : +- Project [outer(x#x)]
: : +- OneRowRelation
: +- Project [x#x]
: +- SubqueryAlias q
-: +- CTERelationRef xxxx, true, [x#x], false
+: +- CTERelationRef xxxx, true, [x#x], false, false
+- SubqueryAlias T
+- Project [1 AS x#x, 2 AS y#x]
+- OneRowRelation
@@ -628,13 +628,13 @@ from (select 1 x, 2 y) T
-- !query analysis
Project [scalar-subquery#x [x#x && y#x] AS scalarsubquery(x, y)#x]
: +- WithCTE
-: :- CTERelationDef xxxx, false
+: :- CTERelationDef xxxx, false, false
: : +- SubqueryAlias q
: : +- Project [3 AS z#x]
: : +- OneRowRelation
: +- Project [((outer(x#x) + outer(y#x)) + z#x) AS ((outer(T.x) +
outer(T.y)) + z)#x]
: +- SubqueryAlias q
-: +- CTERelationRef xxxx, true, [z#x], false
+: +- CTERelationRef xxxx, true, [z#x], false, false
+- SubqueryAlias T
+- Project [1 AS x#x, 2 AS y#x]
+- OneRowRelation
@@ -646,20 +646,20 @@ select * from
(with q2 as (select * from q1) select * from q2)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias q1
: +- Project [1 AS x#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias q2
: +- Project [x#x]
: +- SubqueryAlias q1
-: +- CTERelationRef xxxx, true, [x#x], false
+: +- CTERelationRef xxxx, true, [x#x], false, false
+- Project [x#x]
+- SubqueryAlias __auto_generated_subquery_name
+- Project [x#x]
+- SubqueryAlias q2
- +- CTERelationRef xxxx, true, [x#x], false
+ +- CTERelationRef xxxx, true, [x#x], false, false
-- !query
@@ -668,20 +668,20 @@ select * from
(with q1 as (select x+1 from q1) select * from q1)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias q1
: +- Project [1 AS x#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias q1
: +- Project [(x#x + 1) AS (x + 1)#x]
: +- SubqueryAlias q1
-: +- CTERelationRef xxxx, true, [x#x], false
+: +- CTERelationRef xxxx, true, [x#x], false, false
+- Project [(x + 1)#x]
+- SubqueryAlias __auto_generated_subquery_name
+- Project [(x + 1)#x]
+- SubqueryAlias q1
- +- CTERelationRef xxxx, true, [(x + 1)#x], false
+ +- CTERelationRef xxxx, true, [(x + 1)#x], false, false
-- !query
@@ -709,7 +709,7 @@ with cte1 as (Select id as j from t)
select * from cte1 where j = (select max(j) from cte1 as cte2)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte1
: +- Project [id#x AS j#x]
: +- SubqueryAlias t
@@ -723,9 +723,9 @@ WithCTE
: +- Aggregate [max(j#x) AS max(j)#x]
: +- SubqueryAlias cte2
: +- SubqueryAlias cte1
- : +- CTERelationRef xxxx, true, [j#x], false
+ : +- CTERelationRef xxxx, true, [j#x], false, false
+- SubqueryAlias cte1
- +- CTERelationRef xxxx, true, [j#x], false
+ +- CTERelationRef xxxx, true, [j#x], false, false
-- !query
diff --git
a/sql/core/src/test/resources/sql-tests/analyzer-results/double-quoted-identifiers-enabled.sql.out
b/sql/core/src/test/resources/sql-tests/analyzer-results/double-quoted-identifiers-enabled.sql.out
index 22dfeac5fd0b..35713167bc38 100644
---
a/sql/core/src/test/resources/sql-tests/analyzer-results/double-quoted-identifiers-enabled.sql.out
+++
b/sql/core/src/test/resources/sql-tests/analyzer-results/double-quoted-identifiers-enabled.sql.out
@@ -411,14 +411,14 @@ CREATE TEMPORARY VIEW "myview"("c1") AS
-- !query analysis
CreateViewCommand `myview`, [(c1,None)], WITH "v"("a") AS (SELECT 1) SELECT
"a" FROM "v", false, false, LocalTempView, UNSUPPORTED, true
+- WithCTE
- :- CTERelationDef xxxx, false
+ :- CTERelationDef xxxx, false, false
: +- SubqueryAlias v
: +- Project [1#x AS a#x]
: +- Project [1 AS 1#x]
: +- OneRowRelation
+- Project [a#x]
+- SubqueryAlias v
- +- CTERelationRef xxxx, true, [a#x], false
+ +- CTERelationRef xxxx, true, [a#x], false, false
-- !query
@@ -431,14 +431,14 @@ Project [a1#x AS a2#x]
+- View (`myview`, [c1#x])
+- Project [cast(a#x as int) AS c1#x]
+- WithCTE
- :- CTERelationDef xxxx, false
+ :- CTERelationDef xxxx, false, false
: +- SubqueryAlias v
: +- Project [1#x AS a#x]
: +- Project [1 AS 1#x]
: +- OneRowRelation
+- Project [a#x]
+- SubqueryAlias v
- +- CTERelationRef xxxx, true, [a#x], false
+ +- CTERelationRef xxxx, true, [a#x], false, false
-- !query
diff --git
a/sql/core/src/test/resources/sql-tests/analyzer-results/identifier-clause.sql.out
b/sql/core/src/test/resources/sql-tests/analyzer-results/identifier-clause.sql.out
index 20e6ca1e6a2e..9384f17fa74c 100644
---
a/sql/core/src/test/resources/sql-tests/analyzer-results/identifier-clause.sql.out
+++
b/sql/core/src/test/resources/sql-tests/analyzer-results/identifier-clause.sql.out
@@ -1012,17 +1012,17 @@ WITH S(c1, c2) AS (VALUES(1, 2), (2, 3)),
SELECT IDENTIFIER(agg)(IDENTIFIER(col)) FROM IDENTIFIER(tab)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias S
: +- Project [col1#x AS c1#x, col2#x AS c2#x]
: +- LocalRelation [col1#x, col2#x]
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias T
: +- Project [col1#x AS c1#x, col2#x AS c2#x]
: +- LocalRelation [col1#x, col2#x]
+- Aggregate [max(c1#x) AS max(c1)#x]
+- SubqueryAlias T
- +- CTERelationRef xxxx, true, [c1#x, c2#x], false
+ +- CTERelationRef xxxx, true, [c1#x, c2#x], false, false
-- !query
@@ -1031,17 +1031,17 @@ WITH S(c1, c2) AS (VALUES(1, 2), (2, 3)),
SELECT IDENTIFIER('max')(IDENTIFIER('c1')) FROM IDENTIFIER('T')
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias S
: +- Project [col1#x AS c1#x, col2#x AS c2#x]
: +- LocalRelation [col1#x, col2#x]
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias T
: +- Project [col1#x AS c1#x, col2#x AS c2#x]
: +- LocalRelation [col1#x, col2#x]
+- Aggregate [max(c1#x) AS max(c1)#x]
+- SubqueryAlias T
- +- CTERelationRef xxxx, true, [c1#x, c2#x], false
+ +- CTERelationRef xxxx, true, [c1#x, c2#x], false, false
-- !query
@@ -1049,13 +1049,13 @@ WITH ABC(c1, c2) AS (VALUES(1, 2), (2, 3))
SELECT IDENTIFIER('max')(IDENTIFIER('c1')) FROM IDENTIFIER('A' || 'BC')
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias ABC
: +- Project [col1#x AS c1#x, col2#x AS c2#x]
: +- LocalRelation [col1#x, col2#x]
+- Aggregate [max(c1#x) AS max(c1)#x]
+- SubqueryAlias ABC
- +- CTERelationRef xxxx, true, [c1#x, c2#x], false
+ +- CTERelationRef xxxx, true, [c1#x, c2#x], false, false
-- !query
diff --git
a/sql/core/src/test/resources/sql-tests/analyzer-results/join-lateral.sql.out
b/sql/core/src/test/resources/sql-tests/analyzer-results/join-lateral.sql.out
index 5bf893605423..c93109e42836 100644
---
a/sql/core/src/test/resources/sql-tests/analyzer-results/join-lateral.sql.out
+++
b/sql/core/src/test/resources/sql-tests/analyzer-results/join-lateral.sql.out
@@ -1358,14 +1358,14 @@ WITH cte1 AS (
SELECT * FROM cte2
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte1
: +- Project [c1#x]
: +- SubqueryAlias spark_catalog.default.t1
: +- View (`spark_catalog`.`default`.`t1`, [c1#x, c2#x])
: +- Project [cast(col1#x as int) AS c1#x, cast(col2#x as int) AS
c2#x]
: +- LocalRelation [col1#x, col2#x]
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte2
: +- Project [c1#x, c2#x]
: +- LateralJoin lateral-subquery#x [c1#x], Inner
@@ -1377,10 +1377,10 @@ WithCTE
: : +- Project [cast(col1#x as int) AS c1#x,
cast(col2#x as int) AS c2#x]
: : +- LocalRelation [col1#x, col2#x]
: +- SubqueryAlias cte1
-: +- CTERelationRef xxxx, true, [c1#x], false
+: +- CTERelationRef xxxx, true, [c1#x], false, false
+- Project [c1#x, c2#x]
+- SubqueryAlias cte2
- +- CTERelationRef xxxx, true, [c1#x, c2#x], false
+ +- CTERelationRef xxxx, true, [c1#x, c2#x], false, false
-- !query
diff --git
a/sql/core/src/test/resources/sql-tests/analyzer-results/non-excludable-rule.sql.out
b/sql/core/src/test/resources/sql-tests/analyzer-results/non-excludable-rule.sql.out
index 6b2c60f25bae..7f1ca3dda902 100644
---
a/sql/core/src/test/resources/sql-tests/analyzer-results/non-excludable-rule.sql.out
+++
b/sql/core/src/test/resources/sql-tests/analyzer-results/non-excludable-rule.sql.out
@@ -36,7 +36,7 @@ WITH tmp AS (
SELECT id FROM range(3) WHERE id > (SELECT max(id) FROM tmp)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias tmp
: +- Intersect false
: :- Project [id#xL]
@@ -47,7 +47,7 @@ WithCTE
+- Filter (id#xL > scalar-subquery#x [])
: +- Aggregate [max(id#xL) AS max(id)#xL]
: +- SubqueryAlias tmp
- : +- CTERelationRef xxxx, true, [id#xL], false
+ : +- CTERelationRef xxxx, true, [id#xL], false, false
+- Range (0, 3, step=1)
diff --git
a/sql/core/src/test/resources/sql-tests/analyzer-results/postgreSQL/window_part3.sql.out
b/sql/core/src/test/resources/sql-tests/analyzer-results/postgreSQL/window_part3.sql.out
index 9f2dd9bcb178..441b3627bc92 100644
---
a/sql/core/src/test/resources/sql-tests/analyzer-results/postgreSQL/window_part3.sql.out
+++
b/sql/core/src/test/resources/sql-tests/analyzer-results/postgreSQL/window_part3.sql.out
@@ -89,7 +89,7 @@ FROM cte
WINDOW w AS (ORDER BY x rows between 1 preceding and 1 following)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte
: +- Project [id#xL AS x#xL]
: +- Project [id#xL]
@@ -99,7 +99,7 @@ WithCTE
+- Window [sum(x#xL) windowspecdefinition(x#xL ASC NULLS FIRST,
specifiedwindowframe(RowFrame, -1, 1)) AS sum(x) OVER (ORDER BY x ASC NULLS
FIRST ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)#xL], [x#xL ASC NULLS FIRST]
+- Project [x#xL]
+- SubqueryAlias cte
- +- CTERelationRef xxxx, true, [x#xL], false
+ +- CTERelationRef xxxx, true, [x#xL], false, false
-- !query
@@ -111,7 +111,7 @@ FROM cte
WINDOW w AS (ORDER BY x range between 1 preceding and 1 following)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte
: +- Project [id#xL AS x#xL]
: +- Project [id#xL]
@@ -121,7 +121,7 @@ WithCTE
+- Window [sum(x#xL) windowspecdefinition(x#xL ASC NULLS FIRST,
specifiedwindowframe(RangeFrame, cast(-1 as bigint), cast(1 as bigint))) AS
sum(x) OVER (ORDER BY x ASC NULLS FIRST RANGE BETWEEN (- 1) FOLLOWING AND 1
FOLLOWING)#xL], [x#xL ASC NULLS FIRST]
+- Project [x#xL]
+- SubqueryAlias cte
- +- CTERelationRef xxxx, true, [x#xL], false
+ +- CTERelationRef xxxx, true, [x#xL], false, false
-- !query
@@ -134,7 +134,7 @@ FROM cte
WINDOW w AS (ORDER BY x rows between 1 preceding and 1 following)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte
: +- Project [1#xL AS x#xL]
: +- Union false, false
@@ -154,7 +154,7 @@ WithCTE
+- Window [sum(x#xL) windowspecdefinition(x#xL ASC NULLS FIRST,
specifiedwindowframe(RowFrame, -1, 1)) AS sum(x) OVER (ORDER BY x ASC NULLS
FIRST ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)#xL], [x#xL ASC NULLS FIRST]
+- Project [x#xL]
+- SubqueryAlias cte
- +- CTERelationRef xxxx, true, [x#xL], false
+ +- CTERelationRef xxxx, true, [x#xL], false, false
-- !query
@@ -167,7 +167,7 @@ FROM cte
WINDOW w AS (ORDER BY x range between 1 preceding and 1 following)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte
: +- Project [1#xL AS x#xL]
: +- Union false, false
@@ -187,7 +187,7 @@ WithCTE
+- Window [sum(x#xL) windowspecdefinition(x#xL ASC NULLS FIRST,
specifiedwindowframe(RangeFrame, cast(-1 as bigint), cast(1 as bigint))) AS
sum(x) OVER (ORDER BY x ASC NULLS FIRST RANGE BETWEEN (- 1) FOLLOWING AND 1
FOLLOWING)#xL], [x#xL ASC NULLS FIRST]
+- Project [x#xL]
+- SubqueryAlias cte
- +- CTERelationRef xxxx, true, [x#xL], false
+ +- CTERelationRef xxxx, true, [x#xL], false, false
-- !query
diff --git
a/sql/core/src/test/resources/sql-tests/analyzer-results/postgreSQL/with.sql.out
b/sql/core/src/test/resources/sql-tests/analyzer-results/postgreSQL/with.sql.out
index f29b12d5af17..b92e70e91a4b 100644
---
a/sql/core/src/test/resources/sql-tests/analyzer-results/postgreSQL/with.sql.out
+++
b/sql/core/src/test/resources/sql-tests/analyzer-results/postgreSQL/with.sql.out
@@ -4,7 +4,7 @@ WITH q1(x,y) AS (SELECT 1,2)
SELECT * FROM q1, q1 AS q2
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias q1
: +- Project [1#x AS x#x, 2#x AS y#x]
: +- Project [1 AS 1#x, 2 AS 2#x]
@@ -12,10 +12,10 @@ WithCTE
+- Project [x#x, y#x, x#x, y#x]
+- Join Inner
:- SubqueryAlias q1
- : +- CTERelationRef xxxx, true, [x#x, y#x], false
+ : +- CTERelationRef xxxx, true, [x#x, y#x], false, false
+- SubqueryAlias q2
+- SubqueryAlias q1
- +- CTERelationRef xxxx, true, [x#x, y#x], false
+ +- CTERelationRef xxxx, true, [x#x, y#x], false, false
-- !query
@@ -185,7 +185,7 @@ InsertIntoHadoopFsRelationCommand file:[not included in
comparison]/{warehouse_d
with cte(foo) as ( select 42 ) select * from ((select foo from cte)) q
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte
: +- Project [42#x AS foo#x]
: +- Project [42 AS 42#x]
@@ -194,7 +194,7 @@ WithCTE
+- SubqueryAlias q
+- Project [foo#x]
+- SubqueryAlias cte
- +- CTERelationRef xxxx, true, [foo#x], false
+ +- CTERelationRef xxxx, true, [foo#x], false, false
-- !query
@@ -207,11 +207,11 @@ WITH outermost(x) AS (
SELECT * FROM outermost ORDER BY 1
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias innermost
: +- Project [2 AS 2#x]
: +- OneRowRelation
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias outermost
: +- Project [1#x AS x#x]
: +- Distinct
@@ -222,13 +222,13 @@ WithCTE
: +- Union false, false
: :- Project [2#x]
: : +- SubqueryAlias innermost
-: : +- CTERelationRef xxxx, true, [2#x], false
+: : +- CTERelationRef xxxx, true, [2#x], false, false
: +- Project [3 AS 3#x]
: +- OneRowRelation
+- Sort [x#x ASC NULLS FIRST], true
+- Project [x#x]
+- SubqueryAlias outermost
- +- CTERelationRef xxxx, true, [x#x], false
+ +- CTERelationRef xxxx, true, [x#x], false, false
-- !query
@@ -412,13 +412,13 @@ org.apache.spark.sql.catalyst.parser.ParseException
with ordinality as (select 1 as x) select * from ordinality
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias ordinality
: +- Project [1 AS x#x]
: +- OneRowRelation
+- Project [x#x]
+- SubqueryAlias ordinality
- +- CTERelationRef xxxx, true, [x#x], false
+ +- CTERelationRef xxxx, true, [x#x], false, false
-- !query
@@ -453,13 +453,13 @@ with test as (select 42) insert into test select * from
test
InsertIntoHadoopFsRelationCommand file:[not included in
comparison]/{warehouse_dir}/test, false, Parquet, [path=file:[not included in
comparison]/{warehouse_dir}/test], Append, `spark_catalog`.`default`.`test`,
org.apache.spark.sql.execution.datasources.InMemoryFileIndex(file:[not included
in comparison]/{warehouse_dir}/test), [i]
+- Project [cast(42#x as int) AS i#x]
+- WithCTE
- :- CTERelationDef xxxx, false
+ :- CTERelationDef xxxx, false, false
: +- SubqueryAlias test
: +- Project [42 AS 42#x]
: +- OneRowRelation
+- Project [42#x]
+- SubqueryAlias test
- +- CTERelationRef xxxx, true, [42#x], false
+ +- CTERelationRef xxxx, true, [42#x], false, false
-- !query
diff --git
a/sql/core/src/test/resources/sql-tests/analyzer-results/sql-session-variables.sql.out
b/sql/core/src/test/resources/sql-tests/analyzer-results/sql-session-variables.sql.out
index 02e7c39ae83f..da4542fe9bb1 100644
---
a/sql/core/src/test/resources/sql-tests/analyzer-results/sql-session-variables.sql.out
+++
b/sql/core/src/test/resources/sql-tests/analyzer-results/sql-session-variables.sql.out
@@ -2044,13 +2044,13 @@ Project [1 AS 1#x]
WITH v1 AS (SELECT var1 AS c1) SELECT c1 AS `1` FROM v1
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias v1
: +- Project [variablereference(system.session.var1=1) AS c1#x]
: +- OneRowRelation
+- Project [c1#x AS 1#x]
+- SubqueryAlias v1
- +- CTERelationRef xxxx, true, [c1#x], false
+ +- CTERelationRef xxxx, true, [c1#x], false, false
-- !query
diff --git
a/sql/core/src/test/resources/sql-tests/analyzer-results/subquery/exists-subquery/exists-cte.sql.out
b/sql/core/src/test/resources/sql-tests/analyzer-results/subquery/exists-subquery/exists-cte.sql.out
index 7c3678c66c11..f210bc49030f 100644
---
a/sql/core/src/test/resources/sql-tests/analyzer-results/subquery/exists-subquery/exists-cte.sql.out
+++
b/sql/core/src/test/resources/sql-tests/analyzer-results/subquery/exists-subquery/exists-cte.sql.out
@@ -101,7 +101,7 @@ WHERE a.bonus_amt > 30
WHERE a.emp_name = b.emp_name)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias bonus_cte
: +- Project [emp_name#x, bonus_amt#x]
: +- Filter exists#x [emp_name#x]
@@ -133,7 +133,7 @@ WithCTE
: +- Filter (outer(emp_name#x) = emp_name#x)
: +- SubqueryAlias b
: +- SubqueryAlias bonus_cte
- : +- CTERelationRef xxxx, true, [emp_name#x, bonus_amt#x],
false
+ : +- CTERelationRef xxxx, true, [emp_name#x, bonus_amt#x],
false, false
+- SubqueryAlias a
+- SubqueryAlias bonus
+- View (`BONUS`, [emp_name#x, bonus_amt#x])
@@ -162,7 +162,7 @@ WHERE EXISTS (SELECT *
WHERE bonus.emp_name = a.emp_name)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias emp_cte
: +- Project [id#x, emp_name#x, hiredate#x, salary#x, dept_id#x]
: +- Filter ((id#x >= 100) AND (id#x <= 300))
@@ -172,7 +172,7 @@ WithCTE
: +- Project [id#x, emp_name#x, hiredate#x, salary#x,
dept_id#x]
: +- SubqueryAlias EMP
: +- LocalRelation [id#x, emp_name#x, hiredate#x,
salary#x, dept_id#x]
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias dept_cte
: +- Project [dept_id#x, dept_name#x, state#x]
: +- Filter (dept_id#x = 10)
@@ -189,10 +189,10 @@ WithCTE
: +- Join Inner, (dept_id#x = dept_id#x)
: :- SubqueryAlias a
: : +- SubqueryAlias emp_cte
- : : +- CTERelationRef xxxx, true, [id#x, emp_name#x,
hiredate#x, salary#x, dept_id#x], false
+ : : +- CTERelationRef xxxx, true, [id#x, emp_name#x,
hiredate#x, salary#x, dept_id#x], false, false
: +- SubqueryAlias b
: +- SubqueryAlias dept_cte
- : +- CTERelationRef xxxx, true, [dept_id#x, dept_name#x,
state#x], false
+ : +- CTERelationRef xxxx, true, [dept_id#x, dept_name#x,
state#x], false, false
+- SubqueryAlias bonus
+- View (`BONUS`, [emp_name#x, bonus_amt#x])
+- Project [cast(emp_name#x as string) AS emp_name#x,
cast(bonus_amt#x as double) AS bonus_amt#x]
@@ -225,7 +225,7 @@ WHERE e.dept_id = d.dept_id
WHERE e.emp_name = a.emp_name)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias emp_cte
: +- Project [id#x, emp_name#x, hiredate#x, salary#x, dept_id#x]
: +- Filter ((id#x >= 100) AND (id#x <= 300))
@@ -235,7 +235,7 @@ WithCTE
: +- Project [id#x, emp_name#x, hiredate#x, salary#x,
dept_id#x]
: +- SubqueryAlias EMP
: +- LocalRelation [id#x, emp_name#x, hiredate#x,
salary#x, dept_id#x]
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias dept_cte
: +- Project [dept_id#x, dept_name#x, state#x]
: +- Filter (dept_id#x = 10)
@@ -253,10 +253,10 @@ WithCTE
: +- Join LeftOuter, (dept_id#x = dept_id#x)
: :- SubqueryAlias a
: : +- SubqueryAlias emp_cte
- : : +- CTERelationRef xxxx, true, [id#x, emp_name#x,
hiredate#x, salary#x, dept_id#x], false
+ : : +- CTERelationRef xxxx, true, [id#x, emp_name#x,
hiredate#x, salary#x, dept_id#x], false, false
: +- SubqueryAlias b
: +- SubqueryAlias dept_cte
- : +- CTERelationRef xxxx, true, [dept_id#x,
dept_name#x, state#x], false
+ : +- CTERelationRef xxxx, true, [dept_id#x,
dept_name#x, state#x], false, false
+- Join Inner
:- Join Inner
: :- SubqueryAlias b
@@ -268,7 +268,7 @@ WithCTE
: : +- LocalRelation [emp_name#x, bonus_amt#x]
: +- SubqueryAlias e
: +- SubqueryAlias emp_cte
- : +- CTERelationRef xxxx, true, [id#x, emp_name#x,
hiredate#x, salary#x, dept_id#x], false
+ : +- CTERelationRef xxxx, true, [id#x, emp_name#x,
hiredate#x, salary#x, dept_id#x], false, false
+- SubqueryAlias d
+- SubqueryAlias dept
+- View (`DEPT`, [dept_id#x, dept_name#x, state#x])
@@ -299,7 +299,7 @@ WHERE EXISTS (SELECT dept_id,
GROUP BY emp_name
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias empdept
: +- Project [id#x, salary#x, emp_name#x, dept_id#x]
: +- Filter id#x IN (100,200)
@@ -322,7 +322,7 @@ WithCTE
: +- Filter (count(1)#xL > cast(1 as bigint))
: +- Aggregate [dept_id#x], [dept_id#x, max(salary#x) AS
max(salary)#x, count(1) AS count(1)#xL]
: +- SubqueryAlias empdept
- : +- CTERelationRef xxxx, true, [id#x, salary#x,
emp_name#x, dept_id#x], false
+ : +- CTERelationRef xxxx, true, [id#x, salary#x,
emp_name#x, dept_id#x], false, false
+- SubqueryAlias bonus
+- View (`BONUS`, [emp_name#x, bonus_amt#x])
+- Project [cast(emp_name#x as string) AS emp_name#x,
cast(bonus_amt#x as double) AS bonus_amt#x]
@@ -352,7 +352,7 @@ WHERE NOT EXISTS (SELECT dept_id,
GROUP BY emp_name
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias empdept
: +- Project [id#x, salary#x, emp_name#x, dept_id#x]
: +- Filter id#x IN (100,200)
@@ -375,7 +375,7 @@ WithCTE
: +- Filter (count(1)#xL < cast(1 as bigint))
: +- Aggregate [dept_id#x], [dept_id#x, max(salary#x) AS
max(salary)#x, count(1) AS count(1)#xL]
: +- SubqueryAlias empdept
- : +- CTERelationRef xxxx, true, [id#x, salary#x,
emp_name#x, dept_id#x], false
+ : +- CTERelationRef xxxx, true, [id#x, salary#x,
emp_name#x, dept_id#x], false, false
+- SubqueryAlias bonus
+- View (`BONUS`, [emp_name#x, bonus_amt#x])
+- Project [cast(emp_name#x as string) AS emp_name#x,
cast(bonus_amt#x as double) AS bonus_amt#x]
diff --git
a/sql/core/src/test/resources/sql-tests/analyzer-results/subquery/in-subquery/in-multiple-columns.sql.out
b/sql/core/src/test/resources/sql-tests/analyzer-results/subquery/in-subquery/in-multiple-columns.sql.out
index 39748a324e52..85e28de736a0 100644
---
a/sql/core/src/test/resources/sql-tests/analyzer-results/subquery/in-subquery/in-multiple-columns.sql.out
+++
b/sql/core/src/test/resources/sql-tests/analyzer-results/subquery/in-subquery/in-multiple-columns.sql.out
@@ -307,7 +307,7 @@ FROM (
on cte1.t1b = cte2.t1b) s
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte1
: +- Project [t1a#x, t1b#x]
: +- Filter named_struct(t1b, t1b#x, t1d, t1d#xL) IN (list#x [t1c#x])
@@ -330,7 +330,7 @@ WithCTE
+- Project [t1a#x, t1b#x, t1a#x, t1b#x]
+- Join Inner, (t1b#x = t1b#x)
:- SubqueryAlias cte1
- : +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false
+ : +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false, false
+- SubqueryAlias cte2
+- SubqueryAlias cte1
- +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false
+ +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false, false
diff --git
a/sql/core/src/test/resources/sql-tests/analyzer-results/subquery/in-subquery/in-with-cte.sql.out
b/sql/core/src/test/resources/sql-tests/analyzer-results/subquery/in-subquery/in-with-cte.sql.out
index 0074991b4ea6..03a4c3ffd4fc 100644
---
a/sql/core/src/test/resources/sql-tests/analyzer-results/subquery/in-subquery/in-with-cte.sql.out
+++
b/sql/core/src/test/resources/sql-tests/analyzer-results/subquery/in-subquery/in-with-cte.sql.out
@@ -123,7 +123,7 @@ WHERE t1b IN (SELECT cte1.t1b
WHERE cte1.t1b > 0)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte1
: +- Project [t1a#x, t1b#x]
: +- Filter (t1a#x = val1a)
@@ -138,7 +138,7 @@ WithCTE
: +- Project [t1b#x]
: +- Filter (cast(t1b#x as int) > 0)
: +- SubqueryAlias cte1
- : +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false
+ : +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false, false
+- SubqueryAlias t1
+- View (`t1`, [t1a#x, t1b#x, t1c#x, t1d#xL, t1e#x, t1f#x, t1g#x,
t1h#x, t1i#x])
+- Project [cast(t1a#x as string) AS t1a#x, cast(t1b#x as
smallint) AS t1b#x, cast(t1c#x as int) AS t1c#x, cast(t1d#xL as bigint) AS
t1d#xL, cast(t1e#x as float) AS t1e#x, cast(t1f#x as double) AS t1f#x,
cast(t1g#x as double) AS t1g#x, cast(t1h#x as timestamp) AS t1h#x, cast(t1i#x
as date) AS t1i#x]
@@ -177,7 +177,7 @@ GROUP BY t1a, t1b, t1c
HAVING t1c IS NOT NULL
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte1
: +- Project [t1a#x, t1b#x]
: +- SubqueryAlias t1
@@ -197,21 +197,21 @@ WithCTE
: : : :- Project [t1b#x]
: : : : +- Filter (cast(t1b#x as int) > 0)
: : : : +- SubqueryAlias cte1
- : : : : +- CTERelationRef xxxx, true, [t1a#x,
t1b#x], false
+ : : : : +- CTERelationRef xxxx, true, [t1a#x,
t1b#x], false, false
: : : +- Project [t1b#x]
: : : +- Filter (cast(t1b#x as int) > 5)
: : : +- SubqueryAlias cte1
- : : : +- CTERelationRef xxxx, true, [t1a#x,
t1b#x], false
+ : : : +- CTERelationRef xxxx, true, [t1a#x,
t1b#x], false, false
: : +- Intersect false
: : :- Project [t1b#x]
: : : +- SubqueryAlias cte1
- : : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x],
false
+ : : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x],
false, false
: : +- Project [t1b#x]
: : +- SubqueryAlias cte1
- : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x],
false
+ : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x],
false, false
: +- Project [t1b#x]
: +- SubqueryAlias cte1
- : +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false
+ : +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false,
false
+- SubqueryAlias t1
+- View (`t1`, [t1a#x, t1b#x, t1c#x, t1d#xL, t1e#x, t1f#x, t1g#x,
t1h#x, t1i#x])
+- Project [cast(t1a#x as string) AS t1a#x, cast(t1b#x as
smallint) AS t1b#x, cast(t1c#x as int) AS t1c#x, cast(t1d#xL as bigint) AS
t1d#xL, cast(t1e#x as float) AS t1e#x, cast(t1f#x as double) AS t1f#x,
cast(t1g#x as double) AS t1g#x, cast(t1h#x as timestamp) AS t1h#x, cast(t1i#x
as date) AS t1i#x]
@@ -250,7 +250,7 @@ WHERE t1c IN
ON cte1.t1d > cte6.t1d)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte1
: +- Project [t1a#x, t1b#x, t1c#x, t1d#xL, t1e#x]
: +- SubqueryAlias t1
@@ -268,22 +268,22 @@ WithCTE
: : : :- Join FullOuter, (t1c#x = t1c#x)
: : : : :- Join Inner, (t1b#x > t1b#x)
: : : : : :- SubqueryAlias cte1
- : : : : : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x,
t1c#x, t1d#xL, t1e#x], false
+ : : : : : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x,
t1c#x, t1d#xL, t1e#x], false, false
: : : : : +- SubqueryAlias cte2
: : : : : +- SubqueryAlias cte1
- : : : : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x,
t1c#x, t1d#xL, t1e#x], false
+ : : : : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x,
t1c#x, t1d#xL, t1e#x], false, false
: : : : +- SubqueryAlias cte3
: : : : +- SubqueryAlias cte1
- : : : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x,
t1c#x, t1d#xL, t1e#x], false
+ : : : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x,
t1c#x, t1d#xL, t1e#x], false, false
: : : +- SubqueryAlias cte4
: : : +- SubqueryAlias cte1
- : : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1c#x,
t1d#xL, t1e#x], false
+ : : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1c#x,
t1d#xL, t1e#x], false, false
: : +- SubqueryAlias cte5
: : +- SubqueryAlias cte1
- : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1c#x,
t1d#xL, t1e#x], false
+ : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1c#x,
t1d#xL, t1e#x], false, false
: +- SubqueryAlias cte6
: +- SubqueryAlias cte1
- : +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1c#x,
t1d#xL, t1e#x], false
+ : +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1c#x,
t1d#xL, t1e#x], false, false
+- SubqueryAlias t1
+- View (`t1`, [t1a#x, t1b#x, t1c#x, t1d#xL, t1e#x, t1f#x, t1g#x,
t1h#x, t1i#x])
+- Project [cast(t1a#x as string) AS t1a#x, cast(t1b#x as
smallint) AS t1b#x, cast(t1c#x as int) AS t1c#x, cast(t1d#xL as bigint) AS
t1d#xL, cast(t1e#x as float) AS t1e#x, cast(t1f#x as double) AS t1f#x,
cast(t1g#x as double) AS t1g#x, cast(t1h#x as timestamp) AS t1h#x, cast(t1i#x
as date) AS t1i#x]
@@ -316,7 +316,7 @@ FROM (SELECT *
ON cte1.t1b = cte4.t1b) s
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte1
: +- Project [t1a#x, t1b#x]
: +- Filter (t1b#x IN (list#x []) AND (t1a#x = val1b))
@@ -354,16 +354,16 @@ WithCTE
:- Join FullOuter, (t1a#x = t1a#x)
: :- Join Inner, ((cast(t1b#x as int) > 5) AND (t1a#x = t1a#x))
: : :- SubqueryAlias cte1
- : : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false
+ : : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false, false
: : +- SubqueryAlias cte2
: : +- SubqueryAlias cte1
- : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false
+ : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false,
false
: +- SubqueryAlias cte3
: +- SubqueryAlias cte1
- : +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false
+ : +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false, false
+- SubqueryAlias cte4
+- SubqueryAlias cte1
- +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false
+ +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false, false
-- !query
@@ -393,7 +393,7 @@ WHERE t1b IN
GROUP BY t1b
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte1
: +- Project [t1a#x, t1b#x, t1h#x]
: +- Filter t1a#x IN (list#x [t1b#x])
@@ -424,10 +424,10 @@ WithCTE
+- Project [t1a#x, t1b#x]
+- Join Inner, (t1h#x >= t1h#x)
:- SubqueryAlias cte1
- : +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1h#x], false
+ : +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1h#x], false,
false
+- SubqueryAlias cte2
+- SubqueryAlias cte1
- +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1h#x], false
+ +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1h#x],
false, false
-- !query
@@ -453,7 +453,7 @@ FROM (
) s
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte1
: +- Project [t1a#x, t1b#x, t1c#x]
: +- Filter (t1b#x IN (list#x [t1c#x]) AND (t1a#x = val1b))
@@ -485,16 +485,16 @@ WithCTE
:- Join RightOuter, (t1b#x = t1b#x)
: :- Join Inner, (t1a#x = t1a#x)
: : :- SubqueryAlias cte1
- : : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1c#x], false
+ : : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1c#x],
false, false
: : +- SubqueryAlias cte2
: : +- SubqueryAlias cte1
- : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1c#x],
false
+ : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1c#x],
false, false
: +- SubqueryAlias cte3
: +- SubqueryAlias cte1
- : +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1c#x], false
+ : +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1c#x],
false, false
+- SubqueryAlias cte4
+- SubqueryAlias cte1
- +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1c#x], false
+ +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1c#x], false,
false
-- !query
@@ -515,7 +515,7 @@ FROM (SELECT cte1.t1a,
GROUP BY s.t1b
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte1
: +- Project [t1a#x, t1b#x]
: +- Filter t1b#x IN (list#x [t1c#x])
@@ -538,10 +538,10 @@ WithCTE
+- Project [t1a#x, t1b#x]
+- Join RightOuter, (t1a#x = t1a#x)
:- SubqueryAlias cte1
- : +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false
+ : +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false, false
+- SubqueryAlias cte2
+- SubqueryAlias cte1
- +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false
+ +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false, false
-- !query
@@ -569,7 +569,7 @@ WHERE s.t1b IN
ON t1.t1a = cte1.t1a)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte1
: +- Project [t1a#x, t1b#x]
: +- Filter t1b#x IN (list#x [t1c#x])
@@ -599,15 +599,15 @@ WithCTE
: : +- SubqueryAlias t1
: : +- LocalRelation [t1a#x, t1b#x, t1c#x,
t1d#xL, t1e#x, t1f#x, t1g#x, t1h#x, t1i#x]
: +- SubqueryAlias cte1
- : +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false
+ : +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false, false
+- SubqueryAlias s
+- Project [t1b#x]
+- Join LeftOuter, (t1b#x = t1b#x)
:- SubqueryAlias cte1
- : +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false
+ : +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false, false
+- SubqueryAlias cte2
+- SubqueryAlias cte1
- +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false
+ +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false,
false
-- !query
@@ -627,7 +627,7 @@ WHERE t1b NOT IN (SELECT cte1.t1b
t1c > 10
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte1
: +- Project [t1a#x, t1b#x]
: +- Filter (t1a#x = val1d)
@@ -642,7 +642,7 @@ WithCTE
: +- Project [t1b#x]
: +- Filter (cast(t1b#x as int) < 0)
: +- SubqueryAlias cte1
- : +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false
+ : +- CTERelationRef xxxx, true, [t1a#x, t1b#x], false, false
+- SubqueryAlias t1
+- View (`t1`, [t1a#x, t1b#x, t1c#x, t1d#xL, t1e#x, t1f#x, t1g#x,
t1h#x, t1i#x])
+- Project [cast(t1a#x as string) AS t1a#x, cast(t1b#x as
smallint) AS t1b#x, cast(t1c#x as int) AS t1c#x, cast(t1d#xL as bigint) AS
t1d#xL, cast(t1e#x as float) AS t1e#x, cast(t1f#x as double) AS t1f#x,
cast(t1g#x as double) AS t1g#x, cast(t1h#x as timestamp) AS t1h#x, cast(t1i#x
as date) AS t1i#x]
@@ -683,7 +683,7 @@ WHERE t1b NOT IN
ORDER BY t1c DESC
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias cte1
: +- Project [t1a#x, t1b#x, t1c#x, t1d#xL, t1h#x]
: +- Filter NOT t1d#xL IN (list#x [])
@@ -722,16 +722,16 @@ WithCTE
: :- Join RightOuter, (t1b#x = t1b#x)
: : :- Join Inner, (t1a#x = t1a#x)
: : : :- SubqueryAlias cte1
- : : : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1c#x,
t1d#xL, t1h#x], false
+ : : : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1c#x,
t1d#xL, t1h#x], false, false
: : : +- SubqueryAlias cte2
: : : +- SubqueryAlias cte1
- : : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x,
t1c#x, t1d#xL, t1h#x], false
+ : : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x,
t1c#x, t1d#xL, t1h#x], false, false
: : +- SubqueryAlias cte3
: : +- SubqueryAlias cte1
- : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1c#x,
t1d#xL, t1h#x], false
+ : : +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1c#x,
t1d#xL, t1h#x], false, false
: +- SubqueryAlias cte4
: +- SubqueryAlias cte1
- : +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1c#x,
t1d#xL, t1h#x], false
+ : +- CTERelationRef xxxx, true, [t1a#x, t1b#x, t1c#x,
t1d#xL, t1h#x], false, false
+- SubqueryAlias t1
+- View (`t1`, [t1a#x, t1b#x, t1c#x, t1d#xL, t1e#x, t1f#x, t1g#x,
t1h#x, t1i#x])
+- Project [cast(t1a#x as string) AS t1a#x, cast(t1b#x as
smallint) AS t1b#x, cast(t1c#x as int) AS t1c#x, cast(t1d#xL as bigint) AS
t1d#xL, cast(t1e#x as float) AS t1e#x, cast(t1f#x as double) AS t1f#x,
cast(t1g#x as double) AS t1g#x, cast(t1h#x as timestamp) AS t1h#x, cast(t1i#x
as date) AS t1i#x]
diff --git
a/sql/core/src/test/resources/sql-tests/analyzer-results/subquery/scalar-subquery/scalar-subquery-select.sql.out
b/sql/core/src/test/resources/sql-tests/analyzer-results/subquery/scalar-subquery/scalar-subquery-select.sql.out
index 72e230f9bb88..3b1ffa94c17f 100644
---
a/sql/core/src/test/resources/sql-tests/analyzer-results/subquery/scalar-subquery/scalar-subquery-select.sql.out
+++
b/sql/core/src/test/resources/sql-tests/analyzer-results/subquery/scalar-subquery/scalar-subquery-select.sql.out
@@ -617,13 +617,13 @@ SELECT c1, (WITH t AS (SELECT 1 AS a) SELECT a + c1 FROM
t) FROM t1
-- !query analysis
Project [c1#x, scalar-subquery#x [c1#x] AS scalarsubquery(c1)#x]
: +- WithCTE
-: :- CTERelationDef xxxx, false
+: :- CTERelationDef xxxx, false, false
: : +- SubqueryAlias t
: : +- Project [1 AS a#x]
: : +- OneRowRelation
: +- Project [(a#x + outer(c1#x)) AS (a + outer(t1.c1))#x]
: +- SubqueryAlias t
-: +- CTERelationRef xxxx, true, [a#x], false
+: +- CTERelationRef xxxx, true, [a#x], false, false
+- SubqueryAlias t1
+- View (`t1`, [c1#x, c2#x])
+- Project [cast(c1#x as int) AS c1#x, cast(c2#x as int) AS c2#x]
@@ -636,7 +636,7 @@ SELECT c1, (WITH t AS (SELECT * FROM t2 WHERE c1 = t1.c1)
SELECT SUM(c2) FROM t)
-- !query analysis
Project [c1#x, scalar-subquery#x [c1#x] AS scalarsubquery(c1)#xL]
: +- WithCTE
-: :- CTERelationDef xxxx, false
+: :- CTERelationDef xxxx, false, false
: : +- SubqueryAlias t
: : +- Project [c1#x, c2#x]
: : +- Filter (c1#x = outer(c1#x))
@@ -647,7 +647,7 @@ Project [c1#x, scalar-subquery#x [c1#x] AS
scalarsubquery(c1)#xL]
: : +- LocalRelation [c1#x, c2#x]
: +- Aggregate [sum(c2#x) AS sum(c2)#xL]
: +- SubqueryAlias t
-: +- CTERelationRef xxxx, true, [c1#x, c2#x], false
+: +- CTERelationRef xxxx, true, [c1#x, c2#x], false, false
+- SubqueryAlias t1
+- View (`t1`, [c1#x, c2#x])
+- Project [cast(c1#x as int) AS c1#x, cast(c2#x as int) AS c2#x]
@@ -664,7 +664,7 @@ SELECT c1, (
-- !query analysis
Project [c1#x, scalar-subquery#x [c1#x] AS scalarsubquery(c1)#xL]
: +- WithCTE
-: :- CTERelationDef xxxx, false
+: :- CTERelationDef xxxx, false, false
: : +- SubqueryAlias t3
: : +- Project [(c1#x + 1) AS c1#x, (c2#x + 1) AS c2#x]
: : +- SubqueryAlias t2
@@ -672,15 +672,15 @@ Project [c1#x, scalar-subquery#x [c1#x] AS
scalarsubquery(c1)#xL]
: : +- Project [cast(c1#x as int) AS c1#x, cast(c2#x as int)
AS c2#x]
: : +- SubqueryAlias t2
: : +- LocalRelation [c1#x, c2#x]
-: :- CTERelationDef xxxx, false
+: :- CTERelationDef xxxx, false, false
: : +- SubqueryAlias t4
: : +- Project [c1#x, c2#x]
: : +- Filter (outer(c1#x) = c1#x)
: : +- SubqueryAlias t3
-: : +- CTERelationRef xxxx, true, [c1#x, c2#x], false
+: : +- CTERelationRef xxxx, true, [c1#x, c2#x], false, false
: +- Aggregate [sum(c2#x) AS sum(c2)#xL]
: +- SubqueryAlias t4
-: +- CTERelationRef xxxx, true, [c1#x, c2#x], false
+: +- CTERelationRef xxxx, true, [c1#x, c2#x], false, false
+- SubqueryAlias t1
+- View (`t1`, [c1#x, c2#x])
+- Project [cast(c1#x as int) AS c1#x, cast(c2#x as int) AS c2#x]
@@ -697,7 +697,7 @@ SELECT c1, (
-- !query analysis
Project [c1#x, scalar-subquery#x [c1#x] AS scalarsubquery(c1)#xL]
: +- WithCTE
-: :- CTERelationDef xxxx, false
+: :- CTERelationDef xxxx, false, false
: : +- SubqueryAlias t
: : +- Project [c1#x, c2#x]
: : +- SubqueryAlias t2
@@ -713,10 +713,10 @@ Project [c1#x, scalar-subquery#x [c1#x] AS
scalarsubquery(c1)#xL]
: +- Union false, false
: :- Project [c1#x, c2#x]
: : +- SubqueryAlias t
-: : +- CTERelationRef xxxx, true, [c1#x, c2#x], false
+: : +- CTERelationRef xxxx, true, [c1#x, c2#x],
false, false
: +- Project [c2#x, c1#x]
: +- SubqueryAlias t
-: +- CTERelationRef xxxx, true, [c1#x, c2#x], false
+: +- CTERelationRef xxxx, true, [c1#x, c2#x],
false, false
+- SubqueryAlias t1
+- View (`t1`, [c1#x, c2#x])
+- Project [cast(c1#x as int) AS c1#x, cast(c2#x as int) AS c2#x]
@@ -732,7 +732,7 @@ SELECT * FROM t1 WHERE c1 > (
)
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias v
: +- Project [c1#x, c2#x]
: +- SubqueryAlias t2
@@ -743,7 +743,7 @@ WithCTE
+- Project [c1#x, c2#x]
+- Filter (cast(c1#x as bigint) > scalar-subquery#x [c1#x])
: +- WithCTE
- : :- CTERelationDef xxxx, false
+ : :- CTERelationDef xxxx, false, false
: : +- SubqueryAlias t
: : +- Project [c1#x, c2#x]
: : +- SubqueryAlias t2
@@ -756,9 +756,9 @@ WithCTE
: : +- Aggregate [sum(c2#x) AS sum(c2)#xL]
: : +- Filter (c1#x = outer(c1#x))
: : +- SubqueryAlias t
- : : +- CTERelationRef xxxx, true, [c1#x, c2#x], false
+ : : +- CTERelationRef xxxx, true, [c1#x, c2#x],
false, false
: +- SubqueryAlias v
- : +- CTERelationRef xxxx, true, [c1#x, c2#x], false
+ : +- CTERelationRef xxxx, true, [c1#x, c2#x], false, false
+- SubqueryAlias t1
+- View (`t1`, [c1#x, c2#x])
+- Project [cast(c1#x as int) AS c1#x, cast(c2#x as int) AS c2#x]
@@ -771,7 +771,7 @@ WITH t AS (SELECT 1 AS a)
SELECT c1, (SELECT a FROM t WHERE a = c1) FROM t1
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t
: +- Project [1 AS a#x]
: +- OneRowRelation
@@ -779,7 +779,7 @@ WithCTE
: +- Project [a#x]
: +- Filter (a#x = outer(c1#x))
: +- SubqueryAlias t
- : +- CTERelationRef xxxx, true, [a#x], false
+ : +- CTERelationRef xxxx, true, [a#x], false, false
+- SubqueryAlias t1
+- View (`t1`, [c1#x, c2#x])
+- Project [cast(c1#x as int) AS c1#x, cast(c2#x as int) AS c2#x]
@@ -1019,7 +1019,7 @@ SELECT (SELECT sum(1) FROM T WHERE a = col OR upper(col)=
'Y')
FROM (SELECT null as col) as foo
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias T
: +- Project [1 AS a#x]
: +- OneRowRelation
@@ -1027,7 +1027,7 @@ WithCTE
: +- Aggregate [sum(1) AS sum(1)#xL]
: +- Filter ((a#x = cast(outer(col#x) as int)) OR
(upper(cast(outer(col#x) as string)) = Y))
: +- SubqueryAlias T
- : +- CTERelationRef xxxx, true, [a#x], false
+ : +- CTERelationRef xxxx, true, [a#x], false, false
+- SubqueryAlias foo
+- Project [null AS col#x]
+- OneRowRelation
diff --git
a/sql/core/src/test/resources/sql-tests/analyzer-results/transform.sql.out
b/sql/core/src/test/resources/sql-tests/analyzer-results/transform.sql.out
index f0d3b8b999a2..04e019fdbaa4 100644
--- a/sql/core/src/test/resources/sql-tests/analyzer-results/transform.sql.out
+++ b/sql/core/src/test/resources/sql-tests/analyzer-results/transform.sql.out
@@ -874,7 +874,7 @@ WITH temp AS (
SELECT t1.b FROM temp t1 JOIN temp t2 ON t1.b = t2.b
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias temp
: +- ScriptTransformation cat, [b#x],
ScriptInputOutputSchema(List(),List(),None,None,List(),List(),None,None,false)
: +- Project [a#x]
@@ -888,10 +888,10 @@ WithCTE
+- Join Inner, (b#x = b#x)
:- SubqueryAlias t1
: +- SubqueryAlias temp
- : +- CTERelationRef xxxx, true, [b#x], false
+ : +- CTERelationRef xxxx, true, [b#x], false, false
+- SubqueryAlias t2
+- SubqueryAlias temp
- +- CTERelationRef xxxx, true, [b#x], false
+ +- CTERelationRef xxxx, true, [b#x], false, false
-- !query
diff --git
a/sql/core/src/test/resources/sql-tests/analyzer-results/using-join.sql.out
b/sql/core/src/test/resources/sql-tests/analyzer-results/using-join.sql.out
index 5a74c4be107e..89f988fe2b61 100644
--- a/sql/core/src/test/resources/sql-tests/analyzer-results/using-join.sql.out
+++ b/sql/core/src/test/resources/sql-tests/analyzer-results/using-join.sql.out
@@ -817,12 +817,12 @@ FROM t1 FULL OUTER JOIN t2 USING (key)
WHERE t1.key NOT LIKE 'bb.%'
-- !query analysis
WithCTE
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t1
: +- Project [key#x]
: +- SubqueryAlias t
: +- LocalRelation [key#x]
-:- CTERelationDef xxxx, false
+:- CTERelationDef xxxx, false, false
: +- SubqueryAlias t2
: +- Project [key#x]
: +- SubqueryAlias t
@@ -833,6 +833,6 @@ WithCTE
+- Project [coalesce(key#x, key#x) AS key#x, key#x, key#x, key#x]
+- Join FullOuter, (key#x = key#x)
:- SubqueryAlias t1
- : +- CTERelationRef xxxx, true, [key#x], false
+ : +- CTERelationRef xxxx, true, [key#x], false, false
+- SubqueryAlias t2
- +- CTERelationRef xxxx, true, [key#x], false
+ +- CTERelationRef xxxx, true, [key#x], false, false
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]