Skip to content

Commit 098b45c

Browse files
authored
Merge branch 'main' into feature/headtop-limit
Signed-off-by: Simeon Widdis <[email protected]>
2 parents 5dc69ad + 95a21b3 commit 098b45c

File tree

55 files changed

+3347
-406
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+3347
-406
lines changed

.gitignore

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,5 +52,7 @@ http-client.env.json
5252
/doctest/opensearch-job-scheduler/
5353
.factorypath
5454

55-
# Claude Code files
56-
.claude/
55+
# Coding agent files (could be symlinks)
56+
.claude
57+
.clinerules
58+
memory-bank

common/src/main/java/org/opensearch/sql/common/setting/Settings.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public enum Key {
3737
CALCITE_PUSHDOWN_ENABLED("plugins.calcite.pushdown.enabled"),
3838
CALCITE_PUSHDOWN_ROWCOUNT_ESTIMATION_FACTOR(
3939
"plugins.calcite.pushdown.rowcount.estimation.factor"),
40+
CALCITE_SUPPORT_ALL_JOIN_TYPES("plugins.calcite.all_join_types.allowed"),
4041

4142
/** Query Settings. */
4243
FIELD_TYPE_TOLERANCE("plugins.query.field_type_tolerance"),

core/src/main/java/org/opensearch/sql/ast/expression/Argument.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,24 @@ public static class ArgumentMap {
3939
private final Map<String, Literal> map;
4040

4141
public ArgumentMap(List<Argument> arguments) {
42-
this.map =
43-
arguments.stream()
44-
.collect(java.util.stream.Collectors.toMap(Argument::getArgName, Argument::getValue));
42+
if (arguments == null || arguments.isEmpty()) {
43+
this.map = Map.of();
44+
} else {
45+
this.map =
46+
arguments.stream()
47+
.collect(
48+
java.util.stream.Collectors.toMap(Argument::getArgName, Argument::getValue));
49+
}
4550
}
4651

4752
public static ArgumentMap of(List<Argument> arguments) {
4853
return new ArgumentMap(arguments);
4954
}
5055

56+
public static ArgumentMap empty() {
57+
return new ArgumentMap(null);
58+
}
59+
5160
/**
5261
* Get argument value by name.
5362
*

core/src/main/java/org/opensearch/sql/ast/expression/Literal.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,8 @@ public <R, C> R accept(AbstractNodeVisitor<R, C> nodeVisitor, C context) {
4646
public String toString() {
4747
return String.valueOf(value);
4848
}
49+
50+
public static Literal TRUE = new Literal(true, DataType.BOOLEAN);
51+
public static Literal FALSE = new Literal(false, DataType.BOOLEAN);
52+
public static Literal ZERO = new Literal(Integer.valueOf("0"), DataType.INTEGER);
4953
}

core/src/main/java/org/opensearch/sql/ast/tree/Join.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
import lombok.RequiredArgsConstructor;
1616
import lombok.ToString;
1717
import org.opensearch.sql.ast.AbstractNodeVisitor;
18+
import org.opensearch.sql.ast.expression.Argument;
19+
import org.opensearch.sql.ast.expression.Field;
1820
import org.opensearch.sql.ast.expression.UnresolvedExpression;
1921

2022
@ToString
@@ -28,20 +30,26 @@ public class Join extends UnresolvedPlan {
2830
private final JoinType joinType;
2931
private final Optional<UnresolvedExpression> joinCondition;
3032
private final JoinHint joinHint;
33+
private final Optional<List<Field>> joinFields;
34+
private final Argument.ArgumentMap argumentMap;
3135

3236
public Join(
3337
UnresolvedPlan right,
3438
Optional<String> leftAlias,
3539
Optional<String> rightAlias,
3640
JoinType joinType,
3741
Optional<UnresolvedExpression> joinCondition,
38-
JoinHint joinHint) {
42+
JoinHint joinHint,
43+
Optional<List<Field>> joinFields,
44+
Argument.ArgumentMap argumentMap) {
3945
this.right = right;
4046
this.leftAlias = leftAlias;
4147
this.rightAlias = rightAlias;
4248
this.joinType = joinType;
4349
this.joinCondition = joinCondition;
4450
this.joinHint = joinHint;
51+
this.joinFields = joinFields;
52+
this.argumentMap = argumentMap;
4553
}
4654

4755
@Override
@@ -89,6 +97,11 @@ public enum JoinType {
8997
FULL
9098
}
9199

100+
/** RIGHT, CROSS, FULL are performance sensitive join types */
101+
public static List<JoinType> highCostJoinTypes() {
102+
return List.of(JoinType.RIGHT, JoinType.CROSS, JoinType.FULL);
103+
}
104+
92105
@Getter
93106
@RequiredArgsConstructor
94107
public static class JoinHint {

0 commit comments

Comments
 (0)