Skip to content

Commit 1083a44

Browse files
Merge remote-tracking branch 'upstream/main' into dev-make-time-n-date
Signed-off-by: Yury Fridlyand <yuryf@bitquilltech.com>
1 parent 42c3b2b commit 1083a44

84 files changed

Lines changed: 3238 additions & 446 deletions

File tree

Some content is hidden

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

.github/workflows/draft-release-notes-workflow.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ jobs:
1616
with:
1717
config-name: draft-release-notes-config.yml
1818
tag: (None)
19-
version: 2.1.0.0
19+
version: 2.2.0.0
2020
env:
2121
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/sql-odbc-release-workflow.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ env:
1212
ODBC_BUILD_PATH: "./build/odbc/build"
1313
AWS_SDK_INSTALL_PATH: "./build/aws-sdk/install"
1414
PLUGIN_NAME: opensearch-sql-odbc
15-
OD_VERSION: 2.1.0.0
15+
OD_VERSION: 2.2.0.0
1616

1717
jobs:
1818
build-mac:

.github/workflows/sql-workbench-release-workflow.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ on:
88
env:
99
PLUGIN_NAME: query-workbench-dashboards
1010
OPENSEARCH_VERSION: 'main'
11-
OPENSEARCH_PLUGIN_VERSION: 2.1.0.0
11+
OPENSEARCH_PLUGIN_VERSION: 2.2.0.0
1212

1313
jobs:
1414

.github/workflows/sql-workbench-test-and-build-workflow.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on: [pull_request, push]
55
env:
66
PLUGIN_NAME: query-workbench-dashboards
77
OPENSEARCH_VERSION: 'main'
8-
OPENSEARCH_PLUGIN_VERSION: 2.1.0.0
8+
OPENSEARCH_PLUGIN_VERSION: 2.2.0.0
99

1010
jobs:
1111

@@ -22,45 +22,45 @@ jobs:
2222
with:
2323
repository: opensearch-project/Opensearch-Dashboards
2424
ref: ${{ env.OPENSEARCH_VERSION }}
25-
path: sql/OpenSearch-Dashboards
25+
path: OpenSearch-Dashboards
2626

2727
- name: Setup Node
2828
uses: actions/setup-node@v2
2929
with:
30-
node-version-file: "./OpenSearch-Dashboards/.nvmrc"
30+
node-version-file: "../OpenSearch-Dashboards/.nvmrc"
3131
registry-url: 'https://registry.npmjs.org'
3232

3333
- name: Move Workbench to Plugins Dir
3434
run: |
35-
mv workbench OpenSearch-Dashboards/plugins
35+
mv workbench ../OpenSearch-Dashboards/plugins
3636
3737
- name: OpenSearch Dashboards Plugin Bootstrap
3838
uses: nick-invision/retry@v1
3939
with:
4040
timeout_minutes: 60
4141
max_attempts: 3
42-
command: cd OpenSearch-Dashboards/plugins/workbench; yarn osd bootstrap
42+
command: cd ../OpenSearch-Dashboards/plugins/workbench; yarn osd bootstrap
4343

4444
- name: Test
4545
run: |
46-
cd OpenSearch-Dashboards/plugins/workbench
46+
cd ../OpenSearch-Dashboards/plugins/workbench
4747
yarn test:jest --coverage
4848
4949
- name: Upload coverage
5050
uses: codecov/codecov-action@v1
5151
with:
5252
flags: query-workbench
53-
directory: ./OpenSearch-Dashboards/plugins/workbench
53+
directory: ../OpenSearch-Dashboards/plugins/workbench
5454
token: ${{ secrets.CODECOV_TOKEN }}
5555

5656
- name: Build Artifact
5757
run: |
58-
cd OpenSearch-Dashboards/plugins/workbench
58+
cd ../OpenSearch-Dashboards/plugins/workbench
5959
yarn build
6060
mv ./build/*.zip ./build/${{ env.PLUGIN_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}.zip
6161
6262
- name: Upload Artifact
6363
uses: actions/upload-artifact@v1
6464
with:
6565
name: workbench
66-
path: OpenSearch-Dashboards/plugins/workbench/build
66+
path: ../OpenSearch-Dashboards/plugins/workbench/build

build.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66

77
buildscript {
88
ext {
9-
opensearch_version = System.getProperty("opensearch.version", "2.1.0-SNAPSHOT")
9+
opensearch_version = System.getProperty("opensearch.version", "2.2.0-SNAPSHOT")
10+
spring_version = "5.3.22"
11+
jackson_version = "2.13.3"
1012
isSnapshot = "true" == System.getProperty("build.snapshot", "true")
1113
buildVersionQualifier = System.getProperty("build.version_qualifier", "")
1214
version_tokens = opensearch_version.tokenize('-')

common/src/main/java/org/opensearch/sql/common/utils/LogUtils.java renamed to common/src/main/java/org/opensearch/sql/common/utils/QueryContext.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,14 @@
77
package org.opensearch.sql.common.utils;
88

99
import java.util.Map;
10+
import java.util.Optional;
1011
import java.util.UUID;
1112
import org.apache.logging.log4j.ThreadContext;
1213

1314
/**
14-
* Utility class for generating/accessing the request id from logging context.
15+
* Utility class for recording and accessing context for the query being executed.
1516
*/
16-
public class LogUtils {
17+
public class QueryContext {
1718

1819
/**
1920
* The key of the request id in the context map.
@@ -29,17 +30,22 @@ public class LogUtils {
2930
* call this method twice on the same thread within the lifetime of the request.
3031
* </p>
3132
*/
32-
public static void addRequestId() {
33-
ThreadContext.put(REQUEST_ID_KEY, UUID.randomUUID().toString());
33+
public static String addRequestId() {
34+
var id = UUID.randomUUID().toString();
35+
ThreadContext.put(REQUEST_ID_KEY, id);
36+
return id;
3437
}
3538

3639
/**
3740
* Get RequestID.
3841
* @return the current request id from {@link ThreadContext}.
3942
*/
4043
public static String getRequestId() {
41-
final String requestId = ThreadContext.get(REQUEST_ID_KEY);
42-
return requestId;
44+
var id = ThreadContext.get(REQUEST_ID_KEY);
45+
if (null == id) {
46+
id = addRequestId();
47+
}
48+
return id;
4349
}
4450

4551
/**
@@ -57,7 +63,7 @@ public static Runnable withCurrentContext(final Runnable task) {
5763
};
5864
}
5965

60-
private LogUtils() {
66+
private QueryContext() {
6167
throw new AssertionError(
6268
getClass().getCanonicalName() + " is a utility class and must not be initialized");
6369
}

core/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,16 +40,16 @@ repositories {
4040

4141
dependencies {
4242
api group: 'com.google.guava', name: 'guava', version: '31.0.1-jre'
43-
api group: 'org.springframework', name: 'spring-context', version: '5.2.20.RELEASE'
44-
api group: 'org.springframework', name: 'spring-beans', version: '5.2.20.RELEASE'
43+
api group: 'org.springframework', name: 'spring-context', version: "${spring_version}"
44+
api group: 'org.springframework', name: 'spring-beans', version: "${spring_version}"
4545
api group: 'org.apache.commons', name: 'commons-lang3', version: '3.10'
4646
api group: 'com.facebook.presto', name: 'presto-matching', version: '0.240'
4747
api group: 'org.apache.commons', name: 'commons-math3', version: '3.6.1'
4848
api project(':common')
4949

5050
testImplementation('org.junit.jupiter:junit-jupiter:5.6.2')
5151
testImplementation group: 'org.hamcrest', name: 'hamcrest-library', version: '2.1'
52-
testImplementation group: 'org.springframework', name: 'spring-test', version: '5.2.20.RELEASE'
52+
testImplementation group: 'org.springframework', name: 'spring-test', version: "${spring_version}"
5353
testImplementation group: 'org.mockito', name: 'mockito-core', version: '3.12.4'
5454
testImplementation group: 'org.mockito', name: 'mockito-junit-jupiter', version: '3.12.4'
5555
}

core/src/main/java/org/opensearch/sql/analysis/Analyzer.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,12 @@ public LogicalPlan visitProject(Project node, AnalysisContext context) {
292292
child = windowAnalyzer.analyze(expr, context);
293293
}
294294

295+
for (UnresolvedExpression expr : node.getProjectList()) {
296+
HighlightAnalyzer highlightAnalyzer = new HighlightAnalyzer(expressionAnalyzer, child);
297+
child = highlightAnalyzer.analyze(expr, context);
298+
299+
}
300+
295301
List<NamedExpression> namedExpressions =
296302
selectExpressionAnalyzer.analyze(node.getProjectList(), context,
297303
new ExpressionReferenceOptimizer(expressionAnalyzer.getRepository(), child));

core/src/main/java/org/opensearch/sql/analysis/ExpressionAnalyzer.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@
1111
import java.util.ArrayList;
1212
import java.util.Arrays;
1313
import java.util.Collections;
14-
import java.util.LinkedHashMap;
1514
import java.util.List;
16-
import java.util.Map;
1715
import java.util.Optional;
1816
import java.util.stream.Collectors;
1917
import lombok.Getter;
@@ -29,6 +27,7 @@
2927
import org.opensearch.sql.ast.expression.EqualTo;
3028
import org.opensearch.sql.ast.expression.Field;
3129
import org.opensearch.sql.ast.expression.Function;
30+
import org.opensearch.sql.ast.expression.HighlightFunction;
3231
import org.opensearch.sql.ast.expression.In;
3332
import org.opensearch.sql.ast.expression.Interval;
3433
import org.opensearch.sql.ast.expression.Literal;
@@ -44,12 +43,12 @@
4443
import org.opensearch.sql.ast.expression.WindowFunction;
4544
import org.opensearch.sql.ast.expression.Xor;
4645
import org.opensearch.sql.common.antlr.SyntaxCheckException;
47-
import org.opensearch.sql.data.model.ExprTupleValue;
4846
import org.opensearch.sql.data.model.ExprValueUtils;
4947
import org.opensearch.sql.data.type.ExprType;
5048
import org.opensearch.sql.exception.SemanticCheckException;
5149
import org.opensearch.sql.expression.DSL;
5250
import org.opensearch.sql.expression.Expression;
51+
import org.opensearch.sql.expression.HighlightExpression;
5352
import org.opensearch.sql.expression.LiteralExpression;
5453
import org.opensearch.sql.expression.NamedArgumentExpression;
5554
import org.opensearch.sql.expression.NamedExpression;
@@ -191,6 +190,12 @@ public Expression visitWindowFunction(WindowFunction node, AnalysisContext conte
191190
return expr;
192191
}
193192

193+
@Override
194+
public Expression visitHighlight(HighlightFunction node, AnalysisContext context) {
195+
Expression expr = node.getHighlightField().accept(this, context);
196+
return new HighlightExpression(expr);
197+
}
198+
194199
@Override
195200
public Expression visitIn(In node, AnalysisContext context) {
196201
return visitIn(node.getField(), node.getValueList(), context);
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/*
2+
* Copyright OpenSearch Contributors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package org.opensearch.sql.analysis;
7+
8+
import lombok.RequiredArgsConstructor;
9+
import org.opensearch.sql.ast.AbstractNodeVisitor;
10+
import org.opensearch.sql.ast.expression.Alias;
11+
import org.opensearch.sql.ast.expression.HighlightFunction;
12+
import org.opensearch.sql.ast.expression.UnresolvedExpression;
13+
import org.opensearch.sql.expression.Expression;
14+
import org.opensearch.sql.planner.logical.LogicalHighlight;
15+
import org.opensearch.sql.planner.logical.LogicalPlan;
16+
17+
/**
18+
* Analyze the highlight in the {@link AnalysisContext} to construct the {@link
19+
* LogicalPlan}.
20+
*/
21+
@RequiredArgsConstructor
22+
public class HighlightAnalyzer extends AbstractNodeVisitor<LogicalPlan, AnalysisContext> {
23+
private final ExpressionAnalyzer expressionAnalyzer;
24+
private final LogicalPlan child;
25+
26+
public LogicalPlan analyze(UnresolvedExpression projectItem, AnalysisContext context) {
27+
LogicalPlan highlight = projectItem.accept(this, context);
28+
return (highlight == null) ? child : highlight;
29+
}
30+
31+
@Override
32+
public LogicalPlan visitAlias(Alias node, AnalysisContext context) {
33+
if (!(node.getDelegated() instanceof HighlightFunction)) {
34+
return null;
35+
}
36+
37+
HighlightFunction unresolved = (HighlightFunction) node.getDelegated();
38+
Expression field = expressionAnalyzer.analyze(unresolved.getHighlightField(), context);
39+
return new LogicalHighlight(child, field);
40+
}
41+
}

0 commit comments

Comments
 (0)