Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changed the ODBC build platform to MacOS 10.15 from latest #229

Closed
wants to merge 13 commits into from
2 changes: 1 addition & 1 deletion .github/workflows/sql-odbc-main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ env:

jobs:
build-mac:
runs-on: macos-latest
runs-on: macos-10.15
defaults:
run:
working-directory: sql-odbc
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/sql-odbc-release-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ env:

jobs:
build-mac:
runs-on: macos-latest
runs-on: macos-11
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was this intentionally different from build?

defaults:
run:
working-directory: sql-odbc
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
import org.opensearch.sql.ast.expression.Not;
import org.opensearch.sql.ast.expression.Or;
import org.opensearch.sql.ast.expression.QualifiedName;
import org.opensearch.sql.ast.expression.Span;
import org.opensearch.sql.ast.expression.UnresolvedAttribute;
import org.opensearch.sql.ast.expression.UnresolvedExpression;
import org.opensearch.sql.ast.expression.When;
Expand All @@ -62,6 +63,7 @@
import org.opensearch.sql.exception.SemanticCheckException;
import org.opensearch.sql.expression.DSL;
import org.opensearch.sql.expression.Expression;
import org.opensearch.sql.expression.NamedExpression;
import org.opensearch.sql.expression.ReferenceExpression;
import org.opensearch.sql.expression.aggregation.AggregationState;
import org.opensearch.sql.expression.aggregation.Aggregator;
Expand All @@ -70,6 +72,7 @@
import org.opensearch.sql.expression.function.BuiltinFunctionName;
import org.opensearch.sql.expression.function.BuiltinFunctionRepository;
import org.opensearch.sql.expression.function.FunctionName;
import org.opensearch.sql.expression.span.SpanExpression;
import org.opensearch.sql.expression.window.aggregation.AggregateWindowFunction;

/**
Expand Down Expand Up @@ -258,6 +261,14 @@ public Expression visitQualifiedName(QualifiedName node, AnalysisContext context
return visitIdentifier(qualifierAnalyzer.unqualified(node), context);
}

@Override
public Expression visitSpan(Span node, AnalysisContext context) {
return new SpanExpression(
node.getField().accept(this, context),
node.getValue().accept(this, context),
node.getUnit());
}

private Expression visitIdentifier(String ident, AnalysisContext context) {
TypeEnvironment typeEnv = context.peek();
ReferenceExpression ref = DSL.ref(ident,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,11 @@
import org.opensearch.sql.ast.AbstractNodeVisitor;
import org.opensearch.sql.ast.expression.Alias;
import org.opensearch.sql.ast.expression.QualifiedName;
import org.opensearch.sql.ast.expression.Span;
import org.opensearch.sql.ast.expression.UnresolvedExpression;
import org.opensearch.sql.expression.DSL;
import org.opensearch.sql.expression.NamedExpression;
import org.opensearch.sql.expression.span.SpanExpression;

/**
* Analyze the Alias node in the {@link AnalysisContext} to construct the list of
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
import org.opensearch.sql.ast.expression.Not;
import org.opensearch.sql.ast.expression.Or;
import org.opensearch.sql.ast.expression.QualifiedName;
import org.opensearch.sql.ast.expression.Span;
import org.opensearch.sql.ast.expression.UnresolvedArgument;
import org.opensearch.sql.ast.expression.UnresolvedAttribute;
import org.opensearch.sql.ast.expression.When;
Expand Down Expand Up @@ -249,4 +250,8 @@ public T visitUnresolvedArgument(UnresolvedArgument node, C context) {
public T visitLimit(Limit node, C context) {
return visitChildren(node, context);
}

public T visitSpan(Span node, C context) {
return visitChildren(node, context);
}
}
6 changes: 6 additions & 0 deletions core/src/main/java/org/opensearch/sql/ast/dsl/AstDSL.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@
import org.opensearch.sql.ast.expression.Not;
import org.opensearch.sql.ast.expression.Or;
import org.opensearch.sql.ast.expression.QualifiedName;
import org.opensearch.sql.ast.expression.Span;
import org.opensearch.sql.ast.expression.SpanUnit;
import org.opensearch.sql.ast.expression.UnresolvedArgument;
import org.opensearch.sql.ast.expression.UnresolvedAttribute;
import org.opensearch.sql.ast.expression.UnresolvedExpression;
Expand Down Expand Up @@ -381,6 +383,10 @@ public static List<Argument> defaultSortFieldArgs() {
return exprList(argument("asc", booleanLiteral(true)), argument("type", nullLiteral()));
}

public static Span span(UnresolvedExpression field, UnresolvedExpression value, SpanUnit unit) {
return new Span(field, value, unit);
}

public static Sort sort(UnresolvedPlan input, Field... sorts) {
return new Sort(input, Arrays.asList(sorts));
}
Expand Down
46 changes: 46 additions & 0 deletions core/src/main/java/org/opensearch/sql/ast/expression/Span.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* The OpenSearch Contributors require contributions made to
* this file be licensed under the Apache-2.0 license or a
* compatible open source license.
*
* Modifications Copyright OpenSearch Contributors. See
* GitHub history for details.
*
*/

package org.opensearch.sql.ast.expression;

import com.google.common.collect.ImmutableList;
import java.util.List;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.ToString;
import org.opensearch.sql.ast.AbstractNodeVisitor;

/**
* Span expression node.
* Params include field expression and the span value.
*/
@Getter
@EqualsAndHashCode(callSuper = false)
@RequiredArgsConstructor
@ToString
public class Span extends UnresolvedExpression {
private final UnresolvedExpression field;
private final UnresolvedExpression value;
private final SpanUnit unit;

@Override
public List<UnresolvedExpression> getChild() {
return ImmutableList.of(field, value);
}

@Override
public <R, C> R accept(AbstractNodeVisitor<R, C> nodeVisitor, C context) {
return nodeVisitor.visitSpan(this, context);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* The OpenSearch Contributors require contributions made to
* this file be licensed under the Apache-2.0 license or a
* compatible open source license.
*
* Modifications Copyright OpenSearch Contributors. See
* GitHub history for details.
*
*/

package org.opensearch.sql.ast.expression;

import com.google.common.collect.ImmutableList;
import java.util.List;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
public enum SpanUnit {
UNKNOWN("unknown"),
NONE(""),
MILLISECOND("ms"),
MS("ms"),
SECOND("s"),
S("s"),
MINUTE("m"),
m("m"),
HOUR("h"),
H("h"),
DAY("d"),
D("d"),
WEEK("w"),
W("w"),
MONTH("M"),
M("M"),
QUARTER("q"),
Q("q"),
YEAR("y"),
Y("y");

private final String name;
private static final List<SpanUnit> SPAN_UNITS;

static {
ImmutableList.Builder<SpanUnit> builder = ImmutableList.builder();
SPAN_UNITS = builder.add(SpanUnit.values()).build();
}

/**
* Util method to get span unit given the unit name.
*/
public static SpanUnit of(String unit) {
switch (unit) {
case "":
return NONE;
case "M":
return M;
case "m":
return m;
default:
return SPAN_UNITS.stream()
.filter(v -> unit.equalsIgnoreCase(v.name()))
.findFirst()
.orElse(UNKNOWN);
}
}

public static String getName(SpanUnit unit) {
return unit.name;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,8 @@ public static ExprValue intervalValue(TemporalAmount value) {
*/
public static ExprValue tupleValue(Map<String, Object> map) {
LinkedHashMap<String, ExprValue> valueMap = new LinkedHashMap<>();
map.forEach((k, v) -> valueMap.put(k, fromObjectValue(v)));
map.forEach((k, v) -> valueMap
.put(k, v instanceof ExprValue ? (ExprValue) v : fromObjectValue(v)));
return new ExprTupleValue(valueMap);
}

Expand Down
6 changes: 6 additions & 0 deletions core/src/main/java/org/opensearch/sql/expression/DSL.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import java.util.Arrays;
import java.util.Collections;
import lombok.RequiredArgsConstructor;
import org.opensearch.sql.ast.expression.SpanUnit;
import org.opensearch.sql.data.model.ExprShortValue;
import org.opensearch.sql.data.model.ExprValue;
import org.opensearch.sql.data.model.ExprValueUtils;
Expand All @@ -39,6 +40,7 @@
import org.opensearch.sql.expression.conditional.cases.WhenClause;
import org.opensearch.sql.expression.function.BuiltinFunctionName;
import org.opensearch.sql.expression.function.BuiltinFunctionRepository;
import org.opensearch.sql.expression.span.SpanExpression;
import org.opensearch.sql.expression.window.ranking.RankingWindowFunction;

@RequiredArgsConstructor
Expand Down Expand Up @@ -128,6 +130,10 @@ public static NamedAggregator named(String name, Aggregator aggregator) {
return new NamedAggregator(name, aggregator);
}

public static SpanExpression span(Expression field, Expression value, String unit) {
return new SpanExpression(field, value, SpanUnit.of(unit));
}

public FunctionExpression abs(Expression... expressions) {
return function(BuiltinFunctionName.ABS, expressions);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@

package org.opensearch.sql.expression;

import org.opensearch.sql.ast.expression.Span;
import org.opensearch.sql.expression.aggregation.Aggregator;
import org.opensearch.sql.expression.aggregation.NamedAggregator;
import org.opensearch.sql.expression.conditional.cases.CaseClause;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* The OpenSearch Contributors require contributions made to
* this file be licensed under the Apache-2.0 license or a
* compatible open source license.
*
* Modifications Copyright OpenSearch Contributors. See
* GitHub history for details.
*
*/

package org.opensearch.sql.expression.span;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.ToString;
import org.opensearch.sql.ast.expression.SpanUnit;
import org.opensearch.sql.data.model.ExprValue;
import org.opensearch.sql.data.type.ExprType;
import org.opensearch.sql.expression.Expression;
import org.opensearch.sql.expression.ExpressionNodeVisitor;
import org.opensearch.sql.expression.env.Environment;

@RequiredArgsConstructor
@Getter
@ToString
@EqualsAndHashCode
public class SpanExpression implements Expression {
private final Expression field;
private final Expression value;
private final SpanUnit unit;

@Override
public ExprValue valueOf(Environment<Expression, ExprValue> valueEnv) {
return value.valueOf(valueEnv);
}

/**
* Return type follows the following table.
* FIELD VALUE RETURN_TYPE
* int/long integer int/long (field type)
* int/long double double
* float/double integer float/double (field type)
* float/double double float/double (field type)
* other any field type
*/
@Override
public ExprType type() {
if (field.type().isCompatible(value.type())) {
return field.type();
} else if (value.type().isCompatible(field.type())) {
return value.type();
} else {
return field.type();
}
}

@Override
public <T, C> T accept(ExpressionNodeVisitor<T, C> visitor, C context) {
return visitor.visitNode(this, context);
}
}
Loading