Skip to content

Commit a6defce

Browse files
committed
revert to qualifiedname
1 parent 66ad7fc commit a6defce

File tree

9 files changed

+30
-29
lines changed

9 files changed

+30
-29
lines changed

partiql-ast/api/partiql-ast.api

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ public final class org/partiql/ast/Ast {
219219
public static synthetic fun upsert$default (Lorg/partiql/ast/Identifier;Lorg/partiql/ast/Identifier$Simple;Lorg/partiql/ast/dml/InsertSource;ILjava/lang/Object;)Lorg/partiql/ast/dml/Upsert;
220220
public static final fun windowClause (Ljava/util/List;)Lorg/partiql/ast/WindowClause;
221221
public static final fun windowClauseDefinition (Lorg/partiql/ast/Identifier$Simple;Lorg/partiql/ast/WindowSpecification;)Lorg/partiql/ast/WindowClause$Definition;
222-
public static final fun windowPartition (Lorg/partiql/ast/expr/Expr;)Lorg/partiql/ast/WindowPartition;
222+
public static final fun windowPartition (Lorg/partiql/ast/Identifier;)Lorg/partiql/ast/WindowPartition;
223223
public static final fun windowSpecification (Lorg/partiql/ast/Identifier$Simple;Ljava/util/List;Lorg/partiql/ast/OrderBy;)Lorg/partiql/ast/WindowSpecification;
224224
public static final fun with (Ljava/util/List;Z)Lorg/partiql/ast/With;
225225
public static final fun withListElement (Lorg/partiql/ast/Identifier$Simple;Lorg/partiql/ast/expr/ExprQuerySet;Ljava/util/List;)Lorg/partiql/ast/WithListElement;
@@ -1753,18 +1753,18 @@ public class org/partiql/ast/WindowFunctionType$RowNumber$Builder {
17531753
}
17541754

17551755
public final class org/partiql/ast/WindowPartition : org/partiql/ast/AstNode {
1756-
public fun <init> (Lorg/partiql/ast/expr/Expr;)V
1756+
public fun <init> (Lorg/partiql/ast/Identifier;)V
17571757
public fun accept (Lorg/partiql/ast/AstVisitor;Ljava/lang/Object;)Ljava/lang/Object;
17581758
public static fun builder ()Lorg/partiql/ast/WindowPartition$Builder;
17591759
public fun equals (Ljava/lang/Object;)Z
17601760
public fun getChildren ()Ljava/util/List;
1761-
public fun getColumnReference ()Lorg/partiql/ast/expr/Expr;
1761+
public fun getColumnReference ()Lorg/partiql/ast/Identifier;
17621762
public fun hashCode ()I
17631763
}
17641764

17651765
public class org/partiql/ast/WindowPartition$Builder {
17661766
public fun build ()Lorg/partiql/ast/WindowPartition;
1767-
public fun columnReference (Lorg/partiql/ast/expr/Expr;)Lorg/partiql/ast/WindowPartition$Builder;
1767+
public fun columnReference (Lorg/partiql/ast/Identifier;)Lorg/partiql/ast/WindowPartition$Builder;
17681768
public fun toString ()Ljava/lang/String;
17691769
}
17701770

partiql-ast/src/main/java/org/partiql/ast/WindowPartition.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import lombok.Builder;
44
import lombok.EqualsAndHashCode;
55
import org.jetbrains.annotations.NotNull;
6-
import org.partiql.ast.expr.Expr;
76

87
import java.util.ArrayList;
98
import java.util.List;
@@ -18,13 +17,13 @@
1817
@Deprecated
1918
public final class WindowPartition extends AstNode {
2019

21-
private final Expr columnReference;
20+
private final Identifier columnReference;
2221

2322
/**
2423
* Constructs a new window partition backed by a column reference.
2524
* @param columnReference the column reference backing the window partition
2625
*/
27-
public WindowPartition(@NotNull Expr columnReference) {
26+
public WindowPartition(@NotNull Identifier columnReference) {
2827
this.columnReference = columnReference;
2928
}
3029

@@ -33,7 +32,7 @@ public WindowPartition(@NotNull Expr columnReference) {
3332
* @return the column reference backing the window partition
3433
*/
3534
@NotNull
36-
public Expr getColumnReference() {
35+
public Identifier getColumnReference() {
3736
return this.columnReference;
3837
}
3938

partiql-ast/src/main/java/org/partiql/ast/sql/SqlDialect.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ public abstract class SqlDialect : AstVisitor<SqlBlock, SqlBlock>() {
253253

254254
@Deprecated("This feature is experimental and is subject to change.")
255255
override fun visitWindowPartition(node: WindowPartition, tail: SqlBlock): SqlBlock {
256-
return visitExprWrapped(node.columnReference, tail)
256+
return visitIdentifier(node.columnReference, tail)
257257
}
258258

259259
@Deprecated("This feature is experimental and is subject to change.")

partiql-ast/src/main/kotlin/org/partiql/ast/Ast.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ public object Ast {
323323

324324
@JvmStatic
325325
@Deprecated("This feature is experimental and is subject to change")
326-
public fun windowPartition(columnReference: Expr): WindowPartition {
326+
public fun windowPartition(columnReference: Identifier): WindowPartition {
327327
return WindowPartition(columnReference)
328328
}
329329

partiql-ast/src/main/kotlin/org/partiql/ast/AstRewriter.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -872,9 +872,9 @@ public abstract class AstRewriter<C> : AstVisitor<AstNode, C>() {
872872
}
873873

874874
override fun visitWindowPartition(node: WindowPartition, ctx: C): AstNode {
875-
val columnReference = visitExpr(node.columnReference, ctx) as Expr
876-
return if (columnReference !== node.columnReference) {
877-
WindowPartition(columnReference)
875+
val identifier = visitIdentifier(node.columnReference, ctx) as Identifier
876+
return if (identifier !== node.columnReference) {
877+
WindowPartition(identifier)
878878
} else {
879879
node
880880
}

partiql-ast/src/test/kotlin/org/partiql/ast/sql/SqlDialectTest.kt

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4122,7 +4122,7 @@ class SqlDialectTest {
41224122
type = WindowFunctionType.Rank(),
41234123
spec = windowSpecification(
41244124
null,
4125-
listOf(windowPartition(v("department"))),
4125+
listOf(windowPartition(Identifier.of(regular("department")))),
41264126
orderBy(listOf(sort(v("salary"), Order.DESC(), Nulls.LAST())))
41274127
)
41284128
),
@@ -4187,7 +4187,7 @@ class SqlDialectTest {
41874187
type = WindowFunctionType.Rank(),
41884188
spec = windowSpecification(
41894189
null,
4190-
listOf(windowPartition(v("department"))),
4190+
listOf(windowPartition(Identifier.of(regular("department")))),
41914191
orderBy(listOf(sort(v("age"), Order.ASC(), Nulls.LAST())))
41924192
)
41934193
)
@@ -4198,7 +4198,7 @@ class SqlDialectTest {
41984198
type = WindowFunctionType.DenseRank(),
41994199
spec = windowSpecification(
42004200
null,
4201-
listOf(windowPartition(v("department"))),
4201+
listOf(windowPartition(Identifier.of(regular("department")))),
42024202
orderBy(
42034203
listOf(
42044204
sort(v("age"), Order.ASC(), Nulls.LAST()),
@@ -4230,7 +4230,7 @@ class SqlDialectTest {
42304230
),
42314231
spec = windowSpecification(
42324232
null,
4233-
listOf(windowPartition(v("department"))),
4233+
listOf(windowPartition(Identifier.regular("department"))),
42344234
orderBy(listOf(sort(v("age"), Order.ASC(), Nulls.LAST())))
42354235
)
42364236
)
@@ -4246,7 +4246,7 @@ class SqlDialectTest {
42464246
),
42474247
spec = windowSpecification(
42484248
null,
4249-
listOf(windowPartition(v("department"))),
4249+
listOf(windowPartition(Identifier.regular("department"))),
42504250
orderBy(listOf(sort(v("age"), Order.DESC(), Nulls.LAST())))
42514251
)
42524252
)
@@ -4358,8 +4358,8 @@ class SqlDialectTest {
43584358
spec = windowSpecification(
43594359
null,
43604360
listOf(
4361-
windowPartition(v("ticker")),
4362-
windowPartition(v("month"))
4361+
windowPartition(Identifier.regular("ticker")),
4362+
windowPartition(Identifier.regular("month"))
43634363
),
43644364
orderBy(listOf(sort(v("date"), Order.ASC(), Nulls.LAST())))
43654365
)
@@ -4402,7 +4402,7 @@ class SqlDialectTest {
44024402
regular("w"),
44034403
windowSpecification(
44044404
null,
4405-
listOf(windowPartition(v("dept"))),
4405+
listOf(windowPartition(Identifier.regular("dept"))),
44064406
orderBy(listOf(sort(v("age"), Order.ASC(), Nulls.LAST())))
44074407
)
44084408
),
@@ -4448,8 +4448,8 @@ class SqlDialectTest {
44484448
windowSpecification(
44494449
null,
44504450
listOf(
4451-
windowPartition(v("dept")),
4452-
windowPartition(v("region"))
4451+
windowPartition(Identifier.regular("dept")),
4452+
windowPartition(Identifier.regular("region"))
44534453
),
44544454
orderBy(listOf(sort(v("salary"), Order.DESC(), Nulls.FIRST())))
44554455
)
@@ -4497,7 +4497,7 @@ class SqlDialectTest {
44974497
regular("w1"),
44984498
windowSpecification(
44994499
null,
4500-
listOf(windowPartition(v("dept"))),
4500+
listOf(windowPartition(Identifier.regular("dept"))),
45014501
orderBy(listOf(sort(v("salary"), Order.DESC(), Nulls.FIRST())))
45024502
)
45034503
)
@@ -4544,7 +4544,7 @@ class SqlDialectTest {
45444544
regular("w1"),
45454545
windowSpecification(
45464546
null,
4547-
listOf(windowPartition(v("dept"))),
4547+
listOf(windowPartition(Identifier.regular("dept"))),
45484548
orderBy(listOf(sort(v("salary"), Order.DESC(), Nulls.FIRST())))
45494549
)
45504550
),

partiql-parser/src/main/antlr/PartiQLParser.g4

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1077,7 +1077,7 @@ windowPartitionClause: PARTITION BY col+=windowPartitionColumnReference (COMMA c
10771077
* <basic identifier chain>
10781078
* | MODULE <period> <qualified identifier> <period> <column name>
10791079
*/
1080-
windowPartitionColumnReference: expr;
1080+
windowPartitionColumnReference: qualifiedName;
10811081

10821082
cast
10831083
: CAST PAREN_LEFT expr AS type PAREN_RIGHT;

partiql-parser/src/main/kotlin/org/partiql/parser/internal/PartiQLParserDefault.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2049,8 +2049,8 @@ internal class PartiQLParserDefault : PartiQLParser {
20492049
}
20502050

20512051
override fun visitWindowPartitionColumnReference(ctx: GeneratedParser.WindowPartitionColumnReferenceContext) = translate(ctx) {
2052-
val columnReference = visitExpr(ctx.expr())
2053-
WindowPartition(columnReference)
2052+
val id = visitQualifiedName(ctx.qualifiedName())
2053+
WindowPartition(id)
20542054
}
20552055

20562056
override fun visitWindowSpecification(ctx: GeneratedParser.WindowSpecificationContext) = translate(ctx) {

partiql-planner/src/main/kotlin/org/partiql/planner/internal/transforms/RelConverter.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ import org.partiql.planner.internal.ir.rexOpSelect
9494
import org.partiql.planner.internal.ir.rexOpStruct
9595
import org.partiql.planner.internal.ir.rexOpStructField
9696
import org.partiql.planner.internal.ir.rexOpVarLocal
97+
import org.partiql.planner.internal.ir.rexOpVarUnresolved
9798
import org.partiql.planner.internal.transforms.AggregationTransform.syntheticAgg
9899
import org.partiql.planner.internal.typer.CompilerType
99100
import org.partiql.planner.internal.typer.PlanTyper.Companion.toCType
@@ -567,7 +568,8 @@ internal object RelConverter {
567568
val rel = windows.getAll().foldRight(input) { window, current ->
568569
val orderBy = window.spec.orderClause?.sorts?.map { convertSort(it) } ?: emptyList()
569570
val partitions = window.spec.partitionClause?.map {
570-
it.columnReference.toRex(env)
571+
val op = rexOpVarUnresolved(AstToPlan.convert(it.columnReference), Rex.Op.Var.Scope.LOCAL)
572+
rex(PType.dynamic().toCType(), op)
571573
} ?: emptyList()
572574
val functionNodes = window.functions.map { convertWindowFunction(it) }
573575
val functionBindings = window.functionBindings.map { relBinding(it, PType.dynamic().toCType(), null) }

0 commit comments

Comments
 (0)