Skip to content

Commit d67cd6f

Browse files
committed
[SQL] Test checking that a single rolling aggregate is generated for SUM
Signed-off-by: Mihai Budiu <mbudiu@feldera.com>
1 parent 2665d14 commit d67cd6f

File tree

1 file changed

+35
-0
lines changed
  • sql-to-dbsp-compiler/SQL-compiler/src/test/java/org/dbsp/sqlCompiler/compiler/sql/simple

1 file changed

+35
-0
lines changed

sql-to-dbsp-compiler/SQL-compiler/src/test/java/org/dbsp/sqlCompiler/compiler/sql/simple/Regression2Tests.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package org.dbsp.sqlCompiler.compiler.sql.simple;
22

3+
import org.dbsp.sqlCompiler.circuit.DBSPCircuit;
34
import org.dbsp.sqlCompiler.circuit.annotation.OperatorHash;
45
import org.dbsp.sqlCompiler.circuit.operator.DBSPAggregateLinearPostprocessOperator;
6+
import org.dbsp.sqlCompiler.circuit.operator.DBSPAggregateOperatorBase;
57
import org.dbsp.sqlCompiler.circuit.operator.DBSPChainAggregateOperator;
8+
import org.dbsp.sqlCompiler.circuit.operator.DBSPPartitionedRollingAggregateOperator;
9+
import org.dbsp.sqlCompiler.circuit.operator.DBSPSimpleOperator;
610
import org.dbsp.sqlCompiler.circuit.operator.DBSPStreamAggregateOperator;
711
import org.dbsp.sqlCompiler.compiler.DBSPCompiler;
812
import org.dbsp.sqlCompiler.circuit.operator.DBSPWindowOperator;
@@ -12,6 +16,7 @@
1216
import org.dbsp.sqlCompiler.compiler.visitors.outer.CircuitVisitor;
1317
import org.dbsp.sqlCompiler.ir.aggregate.DBSPFold;
1418
import org.dbsp.sqlCompiler.ir.aggregate.DBSPMinMax;
19+
import org.dbsp.sqlCompiler.ir.aggregate.IAggregate;
1520
import org.dbsp.util.HashString;
1621
import org.dbsp.util.NullPrintStream;
1722
import org.dbsp.util.Utilities;
@@ -458,6 +463,36 @@ public void endVisit() {
458463
TestUtil.assertMessagesContain(compiler, "Column 'z' of table 't' is unused");
459464
}
460465

466+
@Test
467+
public void issue2234() {
468+
var ccs = this.getCCS("""
469+
CREATE TABLE transaction_with_customer(id INT, amt INT64, cc_num VARCHAR, unix_time INT64);
470+
CREATE VIEW FEATURE AS
471+
SELECT
472+
id,
473+
SUM(amt) OVER window_60_minute AS trans500_60min
474+
FROM transaction_with_customer as t
475+
WINDOW
476+
window_60_minute AS (PARTITION BY cc_num ORDER BY t.unix_time RANGE BETWEEN 3600 PRECEDING AND CURRENT ROW);""");
477+
ccs.visit(new CircuitVisitor(ccs.compiler) {
478+
int aggregates = 0;
479+
480+
@Override
481+
public void postorder(DBSPSimpleOperator operator) {
482+
if (operator.is(DBSPAggregateOperatorBase.class)) {
483+
Assert.assertTrue(operator.is(DBSPPartitionedRollingAggregateOperator.class));
484+
this.aggregates++;
485+
}
486+
}
487+
488+
@Override
489+
public void endVisit() {
490+
Assert.assertEquals(1, this.aggregates);
491+
super.endVisit();
492+
}
493+
});
494+
}
495+
461496
@Test
462497
public void testEmptyAggregate() {
463498
// After optimization an aggregate is completely removed

0 commit comments

Comments
 (0)