Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f2691f8

Browse files
committed
feat: Implement the query planner
- refactor all names to fix package name collisions
1 parent 9c285b6 commit f2691f8

35 files changed

+419
-93
lines changed

glint/src/main/java/co/clflushopt/glint/query/logical/expr/AggregateExpr.java

+4
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ public AggregateExpr(String name, LogicalExpr expr) {
1818
this.expr = expr;
1919
}
2020

21+
public LogicalExpr getExpr() {
22+
return expr;
23+
}
24+
2125
@Override
2226
public Field toField(LogicalPlan plan) {
2327
return new Field(name, expr.toField(plan).dataType());

glint/src/main/java/co/clflushopt/glint/query/logical/expr/AliasExpr.java

+8
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@ public AliasExpr(LogicalExpr expr, String alias) {
1717
this.alias = alias;
1818
}
1919

20+
public LogicalExpr getExpr() {
21+
return this.expr;
22+
}
23+
24+
public String getAlias() {
25+
return this.alias;
26+
}
27+
2028
@Override
2129
public Field toField(LogicalPlan plan) {
2230
return new Field(expr.toField(plan).name(), expr.toField(plan).dataType());

glint/src/main/java/co/clflushopt/glint/query/logical/expr/CastExpr.java

+8
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@ public CastExpr(LogicalExpr expr, ArrowType dataType) {
2020
this.dataType = dataType;
2121
}
2222

23+
public LogicalExpr getExpr() {
24+
return this.expr;
25+
}
26+
27+
public ArrowType getDataType() {
28+
return this.dataType;
29+
}
30+
2331
@Override
2432
public Field toField(LogicalPlan plan) {
2533
return new Field(expr.toField(plan).name(), dataType);

glint/src/main/java/co/clflushopt/glint/query/logical/expr/ColumnExpr.java

+4
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ public ColumnExpr(String name) {
1616
this.name = name;
1717
}
1818

19+
public String getName() {
20+
return name;
21+
}
22+
1923
@Override
2024
public Field toField(LogicalPlan plan) {
2125
return plan.getSchema().getFields().stream().filter(field -> field.name() == name)

glint/src/main/java/co/clflushopt/glint/query/logical/expr/ColumnIndex.java

+4
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ public ColumnIndex(Integer index) {
1313
this.index = index;
1414
}
1515

16+
public Integer getIndex() {
17+
return index;
18+
}
19+
1620
@Override
1721
public Field toField(LogicalPlan plan) {
1822
return plan.getSchema().getFields().get(this.index);

glint/src/main/java/co/clflushopt/glint/query/logical/expr/LiteralDouble.java

+4
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,8 @@ public Field toField(LogicalPlan plan) {
2323
public String toString() {
2424
return value.toString();
2525
}
26+
27+
public Double getValue() {
28+
return value;
29+
}
2630
}

glint/src/main/java/co/clflushopt/glint/query/logical/expr/LiteralLong.java

+4
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,8 @@ public Field toField(LogicalPlan plan) {
2323
public String toString() {
2424
return value.toString();
2525
}
26+
27+
public Long getValue() {
28+
return value;
29+
}
2630
}

glint/src/main/java/co/clflushopt/glint/query/logical/expr/LiteralString.java

+3
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,7 @@ public String toString() {
2424
return "'" + literal + "'";
2525
}
2626

27+
public String getValue() {
28+
return literal;
29+
}
2730
}

glint/src/main/java/co/clflushopt/glint/query/logical/plan/Aggregate.java

+12
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,18 @@ public Aggregate(LogicalPlan input, List<LogicalExpr> groupBy, List<AggregateExp
2525
this.aggregateExpr = aggregates;
2626
}
2727

28+
public List<LogicalExpr> getGroupExpr() {
29+
return groupExpr;
30+
}
31+
32+
public List<AggregateExpr> getAggregateExpr() {
33+
return aggregateExpr;
34+
}
35+
36+
public LogicalPlan getInput() {
37+
return input;
38+
}
39+
2840
@Override
2941
public Schema getSchema() {
3042
return new Schema(Stream

glint/src/main/java/co/clflushopt/glint/query/logical/plan/Projection.java

+8
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ public Projection(LogicalPlan input, List<LogicalExpr> expr) {
2222
this.expr = expr;
2323
}
2424

25+
public List<LogicalExpr> getExpr() {
26+
return expr;
27+
}
28+
29+
public LogicalPlan getInput() {
30+
return input;
31+
}
32+
2533
@Override
2634
public Schema getSchema() {
2735
return new Schema(expr.stream().map(e -> e.toField(input)).toList());

glint/src/main/java/co/clflushopt/glint/query/logical/plan/Scan.java

+8
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,14 @@ public Scan(String path, DataSource dataSource, List<String> projections) {
2424
this.schema = infer();
2525
}
2626

27+
public DataSource getDataSource() {
28+
return dataSource;
29+
}
30+
31+
public List<String> getProjections() {
32+
return projections;
33+
}
34+
2735
@Override
2836
public Schema getSchema() {
2937
return schema;

glint/src/main/java/co/clflushopt/glint/query/logical/plan/Selection.java

+8
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@ public Selection(LogicalPlan input, LogicalExpr expr) {
2020
this.expr = expr;
2121
}
2222

23+
public LogicalExpr getExpr() {
24+
return expr;
25+
}
26+
27+
public LogicalPlan getInput() {
28+
return input;
29+
}
30+
2331
@Override
2432
public Schema getSchema() {
2533
// Schema is inherited from the parent plan.

glint/src/main/java/co/clflushopt/glint/query/physical/expr/LiteralDoubleExpr.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import co.clflushopt.glint.types.LiteralValueVector;
66
import co.clflushopt.glint.types.RecordBatch;
77

8-
public class LiteralDoubleExpr implements Expr {
8+
public class LiteralDoubleExpr implements PhysicalExpr {
99
private double value;
1010

1111
public LiteralDoubleExpr(double value) {

glint/src/main/java/co/clflushopt/glint/query/physical/expr/LiteralIntExpr.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import co.clflushopt.glint.types.LiteralValueVector;
66
import co.clflushopt.glint.types.RecordBatch;
77

8-
public class LiteralIntExpr implements Expr {
8+
public class LiteralIntExpr implements PhysicalExpr {
99
private int value;
1010

1111
public LiteralIntExpr(int value) {

glint/src/main/java/co/clflushopt/glint/query/physical/expr/LiteralLongExpr.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import co.clflushopt.glint.types.LiteralValueVector;
66
import co.clflushopt.glint.types.RecordBatch;
77

8-
public class LiteralLongExpr implements Expr {
8+
public class LiteralLongExpr implements PhysicalExpr {
99
private long value;
1010

1111
public LiteralLongExpr(long value) {

glint/src/main/java/co/clflushopt/glint/query/physical/expr/LiteralStringExpr.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import co.clflushopt.glint.types.LiteralValueVector;
66
import co.clflushopt.glint.types.RecordBatch;
77

8-
public class LiteralStringExpr implements Expr {
8+
public class LiteralStringExpr implements PhysicalExpr {
99
private String value;
1010

1111
public LiteralStringExpr(String value) {

glint/src/main/java/co/clflushopt/glint/query/physical/expr/AggregateExpr.java renamed to glint/src/main/java/co/clflushopt/glint/query/physical/expr/PhysicalAggregateExpr.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
* AggregateExpr
99
*/
10-
public interface AggregateExpr {
10+
public interface PhysicalAggregateExpr {
1111

1212
/**
1313
* Get the accumulator for the aggregate expression.
@@ -21,5 +21,5 @@ public interface AggregateExpr {
2121
*
2222
* @return
2323
*/
24-
public Expr getInputExpr();
24+
public PhysicalExpr getInputExpr();
2525
}

glint/src/main/java/co/clflushopt/glint/query/physical/expr/BinaryExpr.java renamed to glint/src/main/java/co/clflushopt/glint/query/physical/expr/PhysicalBinaryExpr.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@
1010
*
1111
* BinaryExpr
1212
*/
13-
public abstract class BinaryExpr implements Expr {
14-
protected Expr left;
15-
protected Expr right;
13+
public abstract class PhysicalBinaryExpr implements PhysicalExpr {
14+
protected PhysicalExpr left;
15+
protected PhysicalExpr right;
1616

17-
public BinaryExpr(Expr left, Expr right) {
17+
public PhysicalBinaryExpr(PhysicalExpr left, PhysicalExpr right) {
1818
this.left = left;
1919
this.right = right;
2020
}

glint/src/main/java/co/clflushopt/glint/query/physical/expr/BooleanExpr.java renamed to glint/src/main/java/co/clflushopt/glint/query/physical/expr/PhysicalBooleanExpr.java

+20-20
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212
/**
1313
* Base class for boolean expression evaluation in the physical plan.
1414
*/
15-
public abstract class BooleanExpr implements Expr {
16-
protected final Expr left;
17-
protected final Expr right;
15+
public abstract class PhysicalBooleanExpr implements PhysicalExpr {
16+
protected final PhysicalExpr left;
17+
protected final PhysicalExpr right;
1818

19-
protected BooleanExpr(Expr left, Expr right) {
19+
protected PhysicalBooleanExpr(PhysicalExpr left, PhysicalExpr right) {
2020
this.left = left;
2121
this.right = right;
2222
}
@@ -63,8 +63,8 @@ private static boolean toBool(Object value) {
6363
throw new IllegalStateException("Cannot convert to boolean: " + value);
6464
}
6565

66-
public static class AndExpression extends BooleanExpr {
67-
public AndExpression(Expr left, Expr right) {
66+
public static class AndExpression extends PhysicalBooleanExpr {
67+
public AndExpression(PhysicalExpr left, PhysicalExpr right) {
6868
super(left, right);
6969
}
7070

@@ -74,8 +74,8 @@ protected boolean evaluate(Object left, Object right, ArrowType type) {
7474
}
7575
}
7676

77-
public static class OrExpression extends BooleanExpr {
78-
public OrExpression(Expr left, Expr right) {
77+
public static class OrExpression extends PhysicalBooleanExpr {
78+
public OrExpression(PhysicalExpr left, PhysicalExpr right) {
7979
super(left, right);
8080
}
8181

@@ -85,8 +85,8 @@ protected boolean evaluate(Object left, Object right, ArrowType type) {
8585
}
8686
}
8787

88-
public static class EqExpression extends BooleanExpr {
89-
public EqExpression(Expr left, Expr right) {
88+
public static class EqExpression extends PhysicalBooleanExpr {
89+
public EqExpression(PhysicalExpr left, PhysicalExpr right) {
9090
super(left, right);
9191
}
9292

@@ -112,8 +112,8 @@ protected boolean evaluate(Object left, Object right, ArrowType type) {
112112
}
113113
}
114114

115-
public static class NeqExpression extends BooleanExpr {
116-
public NeqExpression(Expr left, Expr right) {
115+
public static class NeqExpression extends PhysicalBooleanExpr {
116+
public NeqExpression(PhysicalExpr left, PhysicalExpr right) {
117117
super(left, right);
118118
}
119119

@@ -139,8 +139,8 @@ protected boolean evaluate(Object left, Object right, ArrowType type) {
139139
}
140140
}
141141

142-
public static class LtExpression extends BooleanExpr {
143-
public LtExpression(Expr left, Expr right) {
142+
public static class LtExpression extends PhysicalBooleanExpr {
143+
public LtExpression(PhysicalExpr left, PhysicalExpr right) {
144144
super(left, right);
145145
}
146146

@@ -166,8 +166,8 @@ protected boolean evaluate(Object left, Object right, ArrowType type) {
166166
}
167167
}
168168

169-
public static class GtExpression extends BooleanExpr {
170-
public GtExpression(Expr left, Expr right) {
169+
public static class GtExpression extends PhysicalBooleanExpr {
170+
public GtExpression(PhysicalExpr left, PhysicalExpr right) {
171171
super(left, right);
172172
}
173173

@@ -193,8 +193,8 @@ protected boolean evaluate(Object left, Object right, ArrowType type) {
193193
}
194194
}
195195

196-
public static class LteExpression extends BooleanExpr {
197-
public LteExpression(Expr left, Expr right) {
196+
public static class LteExpression extends PhysicalBooleanExpr {
197+
public LteExpression(PhysicalExpr left, PhysicalExpr right) {
198198
super(left, right);
199199
}
200200

@@ -222,8 +222,8 @@ protected boolean evaluate(Object left, Object right, ArrowType type) {
222222
}
223223
}
224224

225-
public static class GteExpression extends BooleanExpr {
226-
public GteExpression(Expr left, Expr right) {
225+
public static class GteExpression extends PhysicalBooleanExpr {
226+
public GteExpression(PhysicalExpr left, PhysicalExpr right) {
227227
super(left, right);
228228
}
229229

glint/src/main/java/co/clflushopt/glint/query/physical/expr/CastExpr.java renamed to glint/src/main/java/co/clflushopt/glint/query/physical/expr/PhysicalCastExpr.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,16 @@
1414
*
1515
* CastExpr
1616
*/
17-
public class CastExpr implements Expr {
18-
private Expr expression;
17+
public class PhysicalCastExpr implements PhysicalExpr {
18+
private PhysicalExpr expression;
1919
private ArrowType type;
2020

2121
/**
2222
* Create a new `CAST` expression.
2323
*
2424
* @param expression the expression to cast.
2525
*/
26-
public CastExpr(Expr expression, ArrowType type) {
26+
public PhysicalCastExpr(PhysicalExpr expression, ArrowType type) {
2727
this.expression = expression;
2828
this.type = type;
2929
}

glint/src/main/java/co/clflushopt/glint/query/physical/expr/ColumnExpr.java renamed to glint/src/main/java/co/clflushopt/glint/query/physical/expr/PhysicalColumnExpr.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
*
99
* ColumnExpr
1010
*/
11-
public class ColumnExpr implements Expr {
11+
public class PhysicalColumnExpr implements PhysicalExpr {
1212
private int index;
1313

14-
public ColumnExpr(int index) {
14+
public PhysicalColumnExpr(int index) {
1515
this.index = index;
1616
}
1717

glint/src/main/java/co/clflushopt/glint/query/physical/expr/Expr.java renamed to glint/src/main/java/co/clflushopt/glint/query/physical/expr/PhysicalExpr.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
* Expr
1010
*/
11-
public interface Expr {
11+
public interface PhysicalExpr {
1212

1313
/**
1414
* Evaluate the expression.

0 commit comments

Comments
 (0)