From 46f20ee02ca6e70209e55398e8fe580786292421 Mon Sep 17 00:00:00 2001 From: Yury-Fridlyand Date: Wed, 11 Jan 2023 11:29:40 -0800 Subject: [PATCH] Remove `TextKeywordValue`. Signed-off-by: Yury-Fridlyand --- .../data/type/OpenSearchDataType.java | 2 +- .../value/OpenSearchExprTextKeywordValue.java | 28 ------------------ .../OpenSearchDataTypeRecognitionTest.java | 29 ++++++++++++++----- .../OpenSearchExprTextKeywordValueTest.java | 20 ------------- .../value/OpenSearchExprValueFactoryTest.java | 4 +-- 5 files changed, 24 insertions(+), 59 deletions(-) delete mode 100644 opensearch/src/main/java/org/opensearch/sql/opensearch/data/value/OpenSearchExprTextKeywordValue.java delete mode 100644 opensearch/src/test/java/org/opensearch/sql/opensearch/data/value/OpenSearchExprTextKeywordValueTest.java diff --git a/opensearch/src/main/java/org/opensearch/sql/opensearch/data/type/OpenSearchDataType.java b/opensearch/src/main/java/org/opensearch/sql/opensearch/data/type/OpenSearchDataType.java index 82af57cebe..9de4677900 100644 --- a/opensearch/src/main/java/org/opensearch/sql/opensearch/data/type/OpenSearchDataType.java +++ b/opensearch/src/main/java/org/opensearch/sql/opensearch/data/type/OpenSearchDataType.java @@ -157,7 +157,7 @@ protected OpenSearchDataType() { @Override public String typeName() { - if (type == null) { + if (exprCoreType != ExprCoreType.UNKNOWN || type == null) { return exprCoreType.typeName(); } return type.toString().toLowerCase(); diff --git a/opensearch/src/main/java/org/opensearch/sql/opensearch/data/value/OpenSearchExprTextKeywordValue.java b/opensearch/src/main/java/org/opensearch/sql/opensearch/data/value/OpenSearchExprTextKeywordValue.java deleted file mode 100644 index 01187bfca8..0000000000 --- a/opensearch/src/main/java/org/opensearch/sql/opensearch/data/value/OpenSearchExprTextKeywordValue.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - - -package org.opensearch.sql.opensearch.data.value; - -import org.opensearch.sql.data.model.ExprStringValue; -import org.opensearch.sql.data.type.ExprType; -import org.opensearch.sql.opensearch.data.type.OpenSearchTextType; - -/** - * Expression Text Keyword Value, it is an extension of the ExprValue by OpenSearch. - * This mostly represents a multi-field in OpenSearch which has a text field and a - * keyword field inside to preserve the original text. - */ -public class OpenSearchExprTextKeywordValue extends ExprStringValue { - - public OpenSearchExprTextKeywordValue(String value) { - super(value); - } - - @Override - public ExprType type() { - return new OpenSearchTextType(); - } -} diff --git a/opensearch/src/test/java/org/opensearch/sql/opensearch/data/type/OpenSearchDataTypeRecognitionTest.java b/opensearch/src/test/java/org/opensearch/sql/opensearch/data/type/OpenSearchDataTypeRecognitionTest.java index f3ccaf4933..f55c6039df 100644 --- a/opensearch/src/test/java/org/opensearch/sql/opensearch/data/type/OpenSearchDataTypeRecognitionTest.java +++ b/opensearch/src/test/java/org/opensearch/sql/opensearch/data/type/OpenSearchDataTypeRecognitionTest.java @@ -12,36 +12,49 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import org.opensearch.sql.data.model.ExprValue; +import org.opensearch.sql.data.type.ExprType; import org.opensearch.sql.expression.DSL; import org.opensearch.sql.expression.config.ExpressionConfig; import org.opensearch.sql.opensearch.data.value.OpenSearchExprBinaryValue; import org.opensearch.sql.opensearch.data.value.OpenSearchExprGeoPointValue; import org.opensearch.sql.opensearch.data.value.OpenSearchExprIpValue; -import org.opensearch.sql.opensearch.data.value.OpenSearchExprTextKeywordValue; import org.opensearch.sql.opensearch.data.value.OpenSearchExprTextValue; public class OpenSearchDataTypeRecognitionTest { private final DSL dsl = new ExpressionConfig().dsl(new ExpressionConfig().functionRepository()); - @ParameterizedTest + @ParameterizedTest(name = "{2}") @MethodSource("types") - public void typeof(String expected, ExprValue value) { + public void typeof(String expected, ExprValue value, String testName) { assertEquals(expected, typeofGetValue(value)); } private static Stream types() { // TODO: ARRAY and new types return Stream.of( - Arguments.of("text", new OpenSearchExprTextValue("A")), - Arguments.of("binary", new OpenSearchExprBinaryValue("A")), - Arguments.of("ip", new OpenSearchExprIpValue("A")), - Arguments.of("text", new OpenSearchExprTextKeywordValue("A")), - Arguments.of("geo_point", new OpenSearchExprGeoPointValue(0d, 0d)) + Arguments.of("text", new OpenSearchExprTextValue("A"), "text without fields"), + Arguments.of("binary", new OpenSearchExprBinaryValue("A"), "binary"), + Arguments.of("ip", new OpenSearchExprIpValue("A"), "ip"), + Arguments.of("text", new TestTextWithFieldValue("Hello World"), "text with fields"), + Arguments.of("geo_point", new OpenSearchExprGeoPointValue(0d, 0d), "geo point") ); } private String typeofGetValue(ExprValue input) { return dsl.typeof(DSL.literal(input)).valueOf().stringValue(); } + + static class TestTextWithFieldValue extends OpenSearchExprTextValue { + public TestTextWithFieldValue(String value) { + super(value); + } + + @Override + public ExprType type() { + var type = OpenSearchDataType.of(OpenSearchDataType.Type.Text); + type.getFields().put("words", OpenSearchDataType.of(OpenSearchDataType.Type.Keyword)); + return type; + } + } } diff --git a/opensearch/src/test/java/org/opensearch/sql/opensearch/data/value/OpenSearchExprTextKeywordValueTest.java b/opensearch/src/test/java/org/opensearch/sql/opensearch/data/value/OpenSearchExprTextKeywordValueTest.java deleted file mode 100644 index d5d155b5f4..0000000000 --- a/opensearch/src/test/java/org/opensearch/sql/opensearch/data/value/OpenSearchExprTextKeywordValueTest.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - - -package org.opensearch.sql.opensearch.data.value; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -import org.junit.jupiter.api.Test; -import org.opensearch.sql.opensearch.data.type.OpenSearchTextType; - -class OpenSearchExprTextKeywordValueTest { - - @Test - public void testTypeOfExprTextKeywordValue() { - assertEquals(new OpenSearchTextType(), new OpenSearchExprTextKeywordValue("A").type()); - } -} diff --git a/opensearch/src/test/java/org/opensearch/sql/opensearch/data/value/OpenSearchExprValueFactoryTest.java b/opensearch/src/test/java/org/opensearch/sql/opensearch/data/value/OpenSearchExprValueFactoryTest.java index cd58e49453..0034c9417d 100644 --- a/opensearch/src/test/java/org/opensearch/sql/opensearch/data/value/OpenSearchExprValueFactoryTest.java +++ b/opensearch/src/test/java/org/opensearch/sql/opensearch/data/value/OpenSearchExprValueFactoryTest.java @@ -169,9 +169,9 @@ public void constructText() { assertEquals(new OpenSearchExprTextValue("text"), constructFromObject("textV", "text")); - assertEquals(new OpenSearchExprTextKeywordValue("text"), + assertEquals(new OpenSearchExprTextValue("text"), tupleValue("{\"textKeywordV\":\"text\"}").get("textKeywordV")); - assertEquals(new OpenSearchExprTextKeywordValue("text"), + assertEquals(new OpenSearchExprTextValue("text"), constructFromObject("textKeywordV", "text")); }