diff --git a/build.gradle b/build.gradle index f997e355e3..948f3a2fad 100644 --- a/build.gradle +++ b/build.gradle @@ -194,7 +194,7 @@ afterEvaluate { url 'https://opendistro.github.io/elasticsearch/downloads' summary ''' SQL plugin for OpenDistro for Elasticsearch. - Reference documentation can be found at https://opendistro.github.io/elasticsearch/docs. + Reference documentation can be found at https://opendistro.github.io/for-elasticsearch-docs/. '''.stripIndent().replace('\n', ' ').trim() } diff --git a/pom.xml b/pom.xml index 9a3c3b0fd9..c42357c591 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,7 @@ 4.0.0 com.amazon.opendistroforelasticsearch opendistro-sql - 6.7.1.0 + 7.0.1.0 jar Open Distro for Elasticsearch SQL opendistro-sql @@ -27,7 +27,7 @@ UTF-8 **/MainTestSuite.class opendistro-sql - 6.7.1 + 7.0.1 com.amazon.opendistroforelasticsearch.sql.plugin.SqlPlug diff --git a/src/main/java/com/amazon/opendistroforelasticsearch/sql/executor/join/ElasticUtils.java b/src/main/java/com/amazon/opendistroforelasticsearch/sql/executor/join/ElasticUtils.java index 26b9a48c65..b27e988b4a 100644 --- a/src/main/java/com/amazon/opendistroforelasticsearch/sql/executor/join/ElasticUtils.java +++ b/src/main/java/com/amazon/opendistroforelasticsearch/sql/executor/join/ElasticUtils.java @@ -122,7 +122,10 @@ public static XContentBuilder hitsAsStringResultZeroCopy(List results /** Code copy from SearchHits */ private static void toXContent(XContentBuilder builder, Params params, List hits, ElasticJoinExecutor executor) throws IOException { builder.startObject(SearchHits.Fields.HITS); - builder.field(SearchHits.Fields.TOTAL, hits.size()); + builder.field(SearchHits.Fields.TOTAL, ImmutableMap.of( + "value", hits.size(), + "relation", Relation.EQUAL_TO + )); builder.field(SearchHits.Fields.MAX_SCORE, 1.0f); builder.field(SearchHits.Fields.HITS); builder.startArray(); diff --git a/src/main/java/com/amazon/opendistroforelasticsearch/sql/utils/SQLFunctions.java b/src/main/java/com/amazon/opendistroforelasticsearch/sql/utils/SQLFunctions.java index 9821d03e60..f14dd420e8 100644 --- a/src/main/java/com/amazon/opendistroforelasticsearch/sql/utils/SQLFunctions.java +++ b/src/main/java/com/amazon/opendistroforelasticsearch/sql/utils/SQLFunctions.java @@ -334,7 +334,7 @@ private static Tuple date_format(SQLExpr field, String pattern, private static Tuple dateFunctionTemplate(String methodName, SQLExpr field) { String name = randomize(methodName); - return new Tuple<>(name, def(name, doc(field) + ".date." + methodName)); + return new Tuple<>(name, def(name, doc(field) + ".value." + methodName)); } public static Tuple add(SQLExpr a, SQLExpr b) { diff --git a/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/AggregationTest.java b/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/AggregationTest.java index 92dddbd822..9242189784 100644 --- a/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/AggregationTest.java +++ b/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/AggregationTest.java @@ -554,7 +554,7 @@ public void testSubAggregations() throws Exception { } } - Assert.assertEquals(response.getHits().getTotalHits(), 1000); + Assert.assertEquals(response.getHits().getTotalHits().value, 1000); Assert.assertEquals(response.getHits().getHits().length, 10); } @@ -581,7 +581,7 @@ public void testSimpleSubAggregations() throws Exception { } } - Assert.assertEquals(response.getHits().getTotalHits(), 1000); + Assert.assertEquals(response.getHits().getTotalHits().value, 1000); Assert.assertEquals(response.getHits().getHits().length, 10); } diff --git a/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/DateFormatTest.java b/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/DateFormatTest.java index 79285c69fe..c384794186 100644 --- a/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/DateFormatTest.java +++ b/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/DateFormatTest.java @@ -50,7 +50,7 @@ public class DateFormatTest { @Test public void equalTo() { assertThat( - query(SELECT_FROM + "WHERE date_format(insert_time, 'YYYY-MM-dd', 'UTC') = '2014-08-17'"), + query(SELECT_FROM + "WHERE date_format(insert_time, 'yyyy-MM-dd', 'UTC') = '2014-08-17'"), containsInAnyOrder("2014-08-17") ); } @@ -58,7 +58,7 @@ public void equalTo() { @Test public void lessThan() { assertThat( - query(SELECT_FROM + "WHERE date_format(insert_time, 'YYYY-MM-dd', 'UTC') < '2014-08-18'"), + query(SELECT_FROM + "WHERE date_format(insert_time, 'yyyy-MM-dd', 'UTC') < '2014-08-18'"), containsInAnyOrder("2014-08-17") ); } @@ -66,7 +66,7 @@ public void lessThan() { @Test public void lessThanOrEqualTo() { assertThat( - query(SELECT_FROM + "WHERE date_format(insert_time, 'YYYY-MM-dd', 'UTC') <= '2014-08-18'"), + query(SELECT_FROM + "WHERE date_format(insert_time, 'yyyy-MM-dd', 'UTC') <= '2014-08-18' LIMIT 1000"), containsInAnyOrder("2014-08-17", "2014-08-18") ); } @@ -74,7 +74,7 @@ public void lessThanOrEqualTo() { @Test public void greaterThan() { assertThat( - query(SELECT_FROM + "WHERE date_format(insert_time, 'YYYY-MM-dd', 'UTC') > '2014-08-23'"), + query(SELECT_FROM + "WHERE date_format(insert_time, 'yyyy-MM-dd', 'UTC') > '2014-08-23'"), containsInAnyOrder("2014-08-24") ); } @@ -86,7 +86,7 @@ public void greaterThan() { @Test public void greaterThanOrEqualTo() { assertThat( - query(SELECT_FROM + "WHERE date_format(insert_time, 'YYYY-MM-dd', 'UTC') >= '2014-08-23' LIMIT 1000"), + query(SELECT_FROM + "WHERE date_format(insert_time, 'yyyy-MM-dd', 'UTC') >= '2014-08-23' LIMIT 2000"), containsInAnyOrder("2014-08-23", "2014-08-24") ); } @@ -95,8 +95,8 @@ public void greaterThanOrEqualTo() { public void and() { assertThat( query(SELECT_FROM + - "WHERE date_format(insert_time, 'YYYY-MM-dd', 'UTC') >= '2014-08-21' " + - "AND date_format(insert_time, 'YYYY-MM-dd', 'UTC') <= '2014-08-23' LIMIT 1000"), + "WHERE date_format(insert_time, 'yyyy-MM-dd', 'UTC') >= '2014-08-21' " + + "AND date_format(insert_time, 'yyyy-MM-dd', 'UTC') <= '2014-08-23' LIMIT 3000"), containsInAnyOrder("2014-08-21", "2014-08-22", "2014-08-23") ); } @@ -105,8 +105,9 @@ public void and() { public void or() { assertThat( query(SELECT_FROM + - "WHERE date_format(insert_time, 'YYYY-MM-dd', 'UTC') < '2014-08-18' " + - "OR date_format(insert_time, 'YYYY-MM-dd', 'UTC') > '2014-08-23'"), + "WHERE date_format(insert_time, 'yyyy-MM-dd', 'UTC') < '2014-08-18' " + + "OR date_format(insert_time, 'yyyy-MM-dd', 'UTC') > '2014-08-23'" + + "LIMIT 3000"), containsInAnyOrder("2014-08-17", "2014-08-24") ); } diff --git a/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/DeleteTest.java b/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/DeleteTest.java index 05c1c8d120..6fe6d4804e 100644 --- a/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/DeleteTest.java +++ b/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/DeleteTest.java @@ -53,7 +53,7 @@ public void deleteAllTest() throws SqlParseException, SQLFeatureNotSupportedExce SearchRequestBuilder request = MainTestSuite.getClient().prepareSearch(TEST_INDEX_ACCOUNT_TEMP); request.setTypes("temp_account"); SearchResponse response = request.setQuery(QueryBuilders.matchAllQuery()).get(); - assertThat(response.getHits().getTotalHits(), equalTo(0L)); + assertThat(response.getHits().getTotalHits().value, equalTo(0L)); } @@ -64,7 +64,7 @@ public void deleteWithConditionTest() throws SqlParseException, SQLFeatureNotSup SearchRequestBuilder request = MainTestSuite.getClient().prepareSearch(TEST_INDEX_PHRASE); request.setTypes("phrase"); SearchResponse response = request.setQuery(QueryBuilders.matchAllQuery()).get(); - assertThat(response.getHits().getTotalHits(), equalTo(5L)); + assertThat(response.getHits().getTotalHits().value, equalTo(5L)); } diff --git a/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/MainTestSuite.java b/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/MainTestSuite.java index 5fe8bfc18a..2386ebab58 100644 --- a/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/MainTestSuite.java +++ b/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/MainTestSuite.java @@ -514,7 +514,7 @@ public static void prepareOdbcIndex(){ "\t\t\"properties\":{\n" + "\t\t\t\"odbc_time\":{\n" + "\t\t\t\t\"type\":\"date\",\n" + - "\t\t\t\t\"format\": \"{'ts' ''yyyy-MM-dd HH:mm:ss.SSS''}\"\n" + + "\t\t\t\t\"format\": \"'{ts' ''yyyy-MM-dd HH:mm:ss.SSS'''}'\"\n" + "\t\t\t},\n" + "\t\t\t\"docCount\":{\n" + "\t\t\t\t\"type\":\"text\"\n" + diff --git a/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/PreparedStatementTest.java b/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/PreparedStatementTest.java index b12a4488a4..510746d8ad 100644 --- a/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/PreparedStatementTest.java +++ b/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/PreparedStatementTest.java @@ -23,6 +23,7 @@ import com.amazon.opendistroforelasticsearch.sql.request.SqlRequest; import com.amazon.opendistroforelasticsearch.sql.request.SqlRequestFactory; import org.elasticsearch.action.search.SearchResponse; +import org.elasticsearch.common.bytes.BytesArray; import org.elasticsearch.common.xcontent.NamedXContentRegistry; import org.elasticsearch.http.HttpChannel; import org.elasticsearch.http.HttpRequest; @@ -34,6 +35,7 @@ import java.sql.SQLFeatureNotSupportedException; +import static org.elasticsearch.rest.RestRequest.Method.POST; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.greaterThan; import static org.junit.Assert.assertTrue; @@ -78,7 +80,9 @@ public void search() { private SearchHits query(String request) { try { final HttpRequest httpRequest = mock(HttpRequest.class); - when (httpRequest.uri()).thenReturn(""); + when(httpRequest.uri()).thenReturn("uri"); + when(httpRequest.method()).thenReturn(POST); + when(httpRequest.content()).thenReturn(new BytesArray(request)); SqlRequest sqlRequest = SqlRequestFactory.getSqlRequest(RestRequest.request(NamedXContentRegistry.EMPTY, httpRequest, mock(HttpChannel.class))); diff --git a/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/QueryTest.java b/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/QueryTest.java index f94112dabf..ca4a77c313 100644 --- a/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/QueryTest.java +++ b/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/QueryTest.java @@ -48,14 +48,14 @@ public class QueryTest { @Test public void searchTypeTest() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT * FROM %s/phrase LIMIT 1000", TEST_INDEX_PHRASE)); - Assert.assertEquals(6, response.getTotalHits()); + Assert.assertEquals(6, response.getTotalHits().value); } @Test public void multipleFromTest() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT * FROM %s/account, %s/account_two LIMIT 2000", TEST_INDEX_BANK, TEST_INDEX_BANK_TWO)); - Assert.assertEquals(14, response.getTotalHits()); + Assert.assertEquals(14, response.getTotalHits().value); } @Test @@ -112,7 +112,7 @@ public void equallityTest() throws SqlParseException, SQLFeatureNotSupportedExce SearchHit[] hits = response.getHits(); // assert the results is correct according to accounts.json data. - Assert.assertEquals(1, response.getTotalHits()); + Assert.assertEquals(1, response.getTotalHits().value); Assert.assertEquals("Nogal", hits[0].getSourceAsMap().get("city")); } @@ -125,7 +125,7 @@ public void equallityTest_phrase() throws SqlParseException, SQLFeatureNotSuppor SearchHit[] hits = response.getHits(); // assert the results is correct according to accounts.json data. - Assert.assertEquals(1, response.getTotalHits()); + Assert.assertEquals(1, response.getTotalHits().value); Assert.assertEquals("quick fox here", hits[0].getSourceAsMap().get("phrase")); } @@ -196,7 +196,7 @@ public void lessThanOrEqualTest() throws IOException, SqlParseException, SQLFeat public void orTest() throws IOException, SqlParseException, SQLFeatureNotSupportedException { SearchHits response = query(String.format("SELECT * FROM %s/account WHERE match_phrase(gender, 'F') OR match_phrase(gender, 'M') LIMIT 1000", TEST_INDEX_ACCOUNT)); // Assert all documents from accounts.json is returned. - Assert.assertEquals(1000, response.getTotalHits()); + Assert.assertEquals(1000, response.getTotalHits().value); } @@ -217,7 +217,7 @@ public void likeTest() throws IOException, SqlParseException, SQLFeatureNotSuppo SearchHit[] hits = response.getHits(); // assert the results is correct according to accounts.json data. - Assert.assertEquals(1, response.getTotalHits()); + Assert.assertEquals(1, response.getTotalHits().value); Assert.assertEquals("Amber", hits[0].getSourceAsMap().get("firstname")); } @@ -227,7 +227,7 @@ public void notLikeTest() throws IOException, SqlParseException, SQLFeatureNotSu SearchHit[] hits = response.getHits(); // assert we got hits - Assert.assertNotEquals(0, response.getTotalHits()); + Assert.assertNotEquals(0, response.getTotalHits().value); for (SearchHit hit : hits) { Assert.assertFalse(hit.getSourceAsMap().get("firstname").toString().toLowerCase().startsWith("amb")); } @@ -247,23 +247,23 @@ public void regexpQueryTest() throws SqlParseException, SQLFeatureNotSupportedEx @Test public void doubleNotTest() throws IOException, SqlParseException, SQLFeatureNotSupportedException { SearchHits response1 = query(String.format("SELECT * FROM %s/account WHERE not gender like 'm' and not gender like 'f'", TEST_INDEX_ACCOUNT)); - Assert.assertEquals(0, response1.getTotalHits()); + Assert.assertEquals(0, response1.getTotalHits().value); SearchHits response2 = query(String.format("SELECT * FROM %s/account WHERE not gender like 'm' and gender not like 'f'", TEST_INDEX_ACCOUNT)); - Assert.assertEquals(0, response2.getTotalHits()); + Assert.assertEquals(0, response2.getTotalHits().value); SearchHits response3 = query(String.format("SELECT * FROM %s/account WHERE gender not like 'm' and gender not like 'f'", TEST_INDEX_ACCOUNT)); - Assert.assertEquals(0, response3.getTotalHits()); + Assert.assertEquals(0, response3.getTotalHits().value); SearchHits response4 = query(String.format("SELECT * FROM %s/account WHERE gender like 'm' and not gender like 'f'", TEST_INDEX_ACCOUNT)); // assert there are results and they all have gender 'm' - Assert.assertNotEquals(0, response4.getTotalHits()); + Assert.assertNotEquals(0, response4.getTotalHits().value); for (SearchHit hit : response4.getHits()) { Assert.assertEquals("m", hit.getSourceAsMap().get("gender").toString().toLowerCase()); } SearchHits response5 = query(String.format("SELECT * FROM %s/account WHERE NOT (gender = 'm' OR gender = 'f')", TEST_INDEX_ACCOUNT)); - Assert.assertEquals(0, response5.getTotalHits()); + Assert.assertEquals(0, response5.getTotalHits().value); } @Test @@ -326,7 +326,7 @@ public void inTest() throws IOException, SqlParseException, SQLFeatureNotSupport public void inTestWithStrings() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT phrase FROM %s/phrase WHERE phrase IN ('quick', 'fox') LIMIT 1000", TEST_INDEX_PHRASE)); SearchHit[] hits = response.getHits(); - Assert.assertEquals(4, response.getTotalHits()); + Assert.assertEquals(4, response.getTotalHits().value); for(SearchHit hit : hits) { String phrase = (String) hit.getSourceAsMap().get("phrase"); assertThat(phrase, isOneOf("quick fox here", "fox brown", "quick fox" , "brown fox")); @@ -337,7 +337,7 @@ public void inTestWithStrings() throws IOException, SqlParseException, SQLFeatur public void inTermsTestWithIdentifiersTreatLikeStrings() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT name FROM %s/gotCharacters WHERE name.firstname = IN_TERMS(daenerys,eddard) LIMIT 1000", TEST_INDEX_GAME_OF_THRONES)); SearchHit[] hits = response.getHits(); - Assert.assertEquals(2, response.getTotalHits()); + Assert.assertEquals(2, response.getTotalHits().value); for(SearchHit hit : hits) { String firstname = ((Map) hit.getSourceAsMap().get("name")).get("firstname").toString(); assertThat(firstname, isOneOf("Daenerys", "Eddard")); @@ -347,7 +347,7 @@ public void inTermsTestWithIdentifiersTreatLikeStrings() throws IOException, Sql public void inTermsTestWithStrings() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT name FROM %s/gotCharacters WHERE name.firstname = IN_TERMS('daenerys','eddard') LIMIT 1000", TEST_INDEX_GAME_OF_THRONES)); SearchHit[] hits = response.getHits(); - Assert.assertEquals(2, response.getTotalHits()); + Assert.assertEquals(2, response.getTotalHits().value); for(SearchHit hit : hits) { String firstname = ((Map) hit.getSourceAsMap().get("name")).get("firstname").toString(); assertThat(firstname, isOneOf("Daenerys", "Eddard")); @@ -358,7 +358,7 @@ public void inTermsTestWithStrings() throws IOException, SqlParseException, SQLF public void inTermsTestWithNumbers() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT name FROM %s/gotCharacters WHERE name.ofHisName = IN_TERMS(4,2) LIMIT 1000", TEST_INDEX_GAME_OF_THRONES)); SearchHit[] hits = response.getHits(); - Assert.assertEquals(1, response.getTotalHits()); + Assert.assertEquals(1, response.getTotalHits().value); SearchHit hit = hits[0]; String firstname = ((Map) hit.getSourceAsMap().get("name")).get("firstname").toString(); Assert.assertEquals("Brandon",firstname); @@ -369,7 +369,7 @@ public void inTermsTestWithNumbers() throws IOException, SqlParseException, SQLF public void termQueryWithNumber() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT name FROM %s/gotCharacters WHERE name.ofHisName = term(4) LIMIT 1000", TEST_INDEX_GAME_OF_THRONES)); SearchHit[] hits = response.getHits(); - Assert.assertEquals(1, response.getTotalHits()); + Assert.assertEquals(1, response.getTotalHits().value); SearchHit hit = hits[0]; String firstname = ((Map) hit.getSourceAsMap().get("name")).get("firstname").toString(); Assert.assertEquals("Brandon",firstname); @@ -379,7 +379,7 @@ public void termQueryWithNumber() throws IOException, SqlParseException, SQLFeat public void termQueryWithStringIdentifier() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT name FROM %s/gotCharacters WHERE name.firstname = term(brandon) LIMIT 1000", TEST_INDEX_GAME_OF_THRONES)); SearchHit[] hits = response.getHits(); - Assert.assertEquals(1, response.getTotalHits()); + Assert.assertEquals(1, response.getTotalHits().value); SearchHit hit = hits[0]; String firstname = ((Map) hit.getSourceAsMap().get("name")).get("firstname").toString(); Assert.assertEquals("Brandon",firstname); @@ -389,7 +389,7 @@ public void termQueryWithStringIdentifier() throws IOException, SqlParseExceptio public void termQueryWithStringLiteral() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT name FROM %s/gotCharacters WHERE name.firstname = term('brandon') LIMIT 1000", TEST_INDEX_GAME_OF_THRONES)); SearchHit[] hits = response.getHits(); - Assert.assertEquals(1, response.getTotalHits()); + Assert.assertEquals(1, response.getTotalHits().value); SearchHit hit = hits[0]; String firstname = ((Map) hit.getSourceAsMap().get("name")).get("firstname").toString(); Assert.assertEquals("Brandon",firstname); @@ -479,7 +479,7 @@ public void missFilterSearch() throws IOException, SqlParseException, SQLFeature SearchHit[] hits = response.getHits(); // should be 2 according to the data. - Assert.assertEquals(response.getTotalHits(), 4); + Assert.assertEquals(response.getTotalHits().value, 4); for(SearchHit hit : hits) { assertThat(hit.getSourceAsMap(), not(hasKey("insert_time2"))); } @@ -491,7 +491,7 @@ public void notMissFilterSearch() throws IOException, SqlParseException, SQLFeat SearchHit[] hits = response.getHits(); // should be 2 according to the data. - Assert.assertEquals(response.getTotalHits(), 2); + Assert.assertEquals(response.getTotalHits().value, 2); for(SearchHit hit : hits) { assertThat(hit.getSourceAsMap(), hasKey("insert_time2")); } @@ -585,25 +585,25 @@ public void orderByAscFieldWithSpaceTest() throws IOException, SqlParseException @Test public void testMultipartWhere() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT * FROM %s/account WHERE (firstname LIKE 'opal' OR firstname like 'rodriquez') AND (state like 'oh' OR state like 'hi')", TEST_INDEX_ACCOUNT)); - Assert.assertEquals(2, response.getTotalHits()); + Assert.assertEquals(2, response.getTotalHits().value); } @Test public void testMultipartWhere2() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT * FROM %s/account where ((account_number > 200 and account_number < 300) or gender like 'm') and (state like 'hi' or address like 'avenue')", TEST_INDEX_ACCOUNT)); - Assert.assertEquals(127, response.getTotalHits()); + Assert.assertEquals(127, response.getTotalHits().value); } @Test public void testMultipartWhere3() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT * FROM %s/account where ((account_number > 25 and account_number < 75) and age >35 ) and (state like 'md' or (address like 'avenue' or address like 'street'))", TEST_INDEX_ACCOUNT)); - Assert.assertEquals(7, response.getTotalHits()); + Assert.assertEquals(7, response.getTotalHits().value); } @Test public void filterPolygonTest() throws SQLFeatureNotSupportedException, SqlParseException, InterruptedException { SearchHits results = query(String.format("SELECT * FROM %s/location WHERE GEO_INTERSECTS(place,'POLYGON ((102 2, 103 2, 103 3, 102 3, 102 2))')", TEST_INDEX_LOCATION)); - org.junit.Assert.assertEquals(1,results.getTotalHits()); + org.junit.Assert.assertEquals(1,results.getTotalHits().value); SearchHit result = results.getAt(0); Assert.assertEquals("bigSquare",result.getSourceAsMap().get("description")); } @@ -611,14 +611,14 @@ public void filterPolygonTest() throws SQLFeatureNotSupportedException, SqlParse @Test public void boundingBox() throws SQLFeatureNotSupportedException, SqlParseException, InterruptedException { SearchHits results = query(String.format("SELECT * FROM %s/location WHERE GEO_BOUNDING_BOX(center,100.0,1.0,101,0.0)", TEST_INDEX_LOCATION)); - org.junit.Assert.assertEquals(1,results.getTotalHits()); + org.junit.Assert.assertEquals(1,results.getTotalHits().value); SearchHit result = results.getAt(0); Assert.assertEquals("square",result.getSourceAsMap().get("description")); } @Test public void geoDistance() throws SQLFeatureNotSupportedException, SqlParseException, InterruptedException { SearchHits results = query(String.format("SELECT * FROM %s/location WHERE GEO_DISTANCE(center,'1km',100.5,0.500001)", TEST_INDEX_LOCATION)); - org.junit.Assert.assertEquals(1,results.getTotalHits()); + org.junit.Assert.assertEquals(1,results.getTotalHits().value); SearchHit result = results.getAt(0); Assert.assertEquals("square",result.getSourceAsMap().get("description")); } @@ -644,7 +644,7 @@ public void geoDistance() throws SQLFeatureNotSupportedException, SqlParseExcept @Test public void geoPolygon() throws SQLFeatureNotSupportedException, SqlParseException, InterruptedException { SearchHits results = query(String.format("SELECT * FROM %s/location WHERE GEO_POLYGON(center,100,0,100.5,2,101.0,0)", TEST_INDEX_LOCATION)); - org.junit.Assert.assertEquals(1,results.getTotalHits()); + org.junit.Assert.assertEquals(1,results.getTotalHits().value); SearchHit result = results.getAt(0); Assert.assertEquals("square",result.getSourceAsMap().get("description")); } @@ -652,19 +652,19 @@ public void geoPolygon() throws SQLFeatureNotSupportedException, SqlParseExcepti @Test public void escapedCharactersCheck() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT * FROM %s/gotCharacters where MATCH_PHRASE(nickname, 'Daenerys \"Stormborn\"') LIMIT 1000", TEST_INDEX_GAME_OF_THRONES)); - Assert.assertEquals(1, response.getTotalHits()); + Assert.assertEquals(1, response.getTotalHits().value); } @Test public void complexObjectSearch() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT * FROM %s/gotCharacters where match_phrase(name.firstname, 'Jaime') LIMIT 1000", TEST_INDEX_GAME_OF_THRONES)); - Assert.assertEquals(1, response.getTotalHits()); + Assert.assertEquals(1, response.getTotalHits().value); } @Test public void complexObjectReutrnField() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT parents.father FROM %s/gotCharacters where match_phrase(name.firstname, 'Brandon') LIMIT 1000", TEST_INDEX_GAME_OF_THRONES)); - Assert.assertEquals(1, response.getTotalHits()); + Assert.assertEquals(1, response.getTotalHits().value); Map sourceAsMap = response.getHits()[0].getSourceAsMap(); Assert.assertEquals("Eddard",((HashMap)sourceAsMap.get("parents")).get("father")); } @@ -687,7 +687,7 @@ public void complexObjectReutrnField() throws IOException, SqlParseException, SQ public void notLikeTests() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ //cant use string.format cause of %d SearchHits response = query("SELECT name FROM " +TEST_INDEX_GAME_OF_THRONES + "/gotCharacters where name.firstname not like '%d' and name is not null LIMIT 1000"); - Assert.assertEquals(3, response.getTotalHits()); + Assert.assertEquals(3, response.getTotalHits().value); for(SearchHit hit : response.getHits()) { Map sourceAsMap = hit.getSourceAsMap(); String name = ((HashMap) sourceAsMap.get("name")).get("firstname").toString(); @@ -698,13 +698,13 @@ public void notLikeTests() throws IOException, SqlParseException, SQLFeatureNotS @Test public void isNullTest() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query("SELECT name FROM " +TEST_INDEX_GAME_OF_THRONES + "/gotCharacters where nickname IS NULL LIMIT 1000"); - Assert.assertEquals(6, response.getTotalHits()); + Assert.assertEquals(6, response.getTotalHits().value); } @Test public void isNotNullTest() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query("SELECT name FROM " +TEST_INDEX_GAME_OF_THRONES + "/gotCharacters where nickname IS NOT NULL LIMIT 1000"); - Assert.assertEquals(1, response.getTotalHits()); + Assert.assertEquals(1, response.getTotalHits().value); } @@ -715,7 +715,7 @@ public void useScrollNoParams() throws IOException, SqlParseException, SQLFeatur SearchHits hits = response.getHits(); //default is 50 , es5.0 functionality now returns docs on first scroll Assert.assertEquals(50,hits.getHits().length); - Assert.assertEquals(1000,hits.getTotalHits()); + Assert.assertEquals(1000,hits.getTotalHits().value); } @Test @@ -724,7 +724,7 @@ public void useScrollWithParams() throws IOException, SqlParseException, SQLFeat Assert.assertNotNull(response.getScrollId()); SearchHits hits = response.getHits(); Assert.assertEquals(10,hits.getHits().length); - Assert.assertEquals(1000,hits.getTotalHits()); + Assert.assertEquals(1000,hits.getTotalHits().value); } @@ -734,7 +734,7 @@ public void useScrollWithOrderByAndParams() throws IOException, SqlParseExceptio Assert.assertNotNull(response.getScrollId()); SearchHits hits = response.getHits(); Assert.assertEquals(5,hits.getHits().length); - Assert.assertEquals(1000,hits.getTotalHits()); + Assert.assertEquals(1000,hits.getTotalHits().value); for(SearchHit hit : hits){ Assert.assertEquals(20,hit.getSourceAsMap().get("age")); } @@ -815,13 +815,13 @@ public void idsQuerySubQueryIds() throws SqlParseException, SQLFeatureNotSupport @Test public void nestedEqualsTestFieldNormalField() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT * FROM %s/nestedType where nested(message.info)='b'", TEST_INDEX_NESTED_TYPE)); - Assert.assertEquals(1, response.getTotalHits()); + Assert.assertEquals(1, response.getTotalHits().value); } @Test public void nestedEqualsTestFieldInsideArrays() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT * FROM %s/nestedType where nested(message.info) = 'a'", TEST_INDEX_NESTED_TYPE)); - Assert.assertEquals(2, response.getTotalHits()); + Assert.assertEquals(2, response.getTotalHits().value); } // @Test @@ -833,49 +833,49 @@ public void nestedEqualsTestFieldInsideArrays() throws IOException, SqlParseExce @Test public void complexNestedQueryBothOnSameObject() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT * FROM %s/nestedType where nested('message',message.info = 'a' and message.author ='i' ) ", TEST_INDEX_NESTED_TYPE)); - Assert.assertEquals(1, response.getTotalHits()); + Assert.assertEquals(1, response.getTotalHits().value); } @Test public void complexNestedQueryNotBothOnSameObject() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT * FROM %s/nestedType where nested('message',message.info = 'a' and message.author ='h' ) ", TEST_INDEX_NESTED_TYPE)); - Assert.assertEquals(0, response.getTotalHits()); + Assert.assertEquals(0, response.getTotalHits().value); } @Test public void nestedOnInTermsQuery() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT * FROM %s/nestedType where nested(message.info) = IN_TERMS(a,b)", TEST_INDEX_NESTED_TYPE)); - Assert.assertEquals(3, response.getTotalHits()); + Assert.assertEquals(3, response.getTotalHits().value); } @Test public void childrenEqualsTestFieldNormalField() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT * FROM %s/joinType where children(childrenType, info)='b'", TEST_INDEX_JOIN_TYPE)); - Assert.assertEquals(1, response.getTotalHits()); + Assert.assertEquals(1, response.getTotalHits().value); } @Test public void childrenOnInQuery() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT * FROM %s/joinType where children(childrenType, info) in ('a','b')", TEST_INDEX_JOIN_TYPE)); - Assert.assertEquals(2, response.getTotalHits()); + Assert.assertEquals(2, response.getTotalHits().value); } @Test public void complexChildrenQueryBothOnSameObject() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT * FROM %s/joinType where children(childrenType, info = 'a' and author ='e' ) ", TEST_INDEX_JOIN_TYPE)); - Assert.assertEquals(1, response.getTotalHits()); + Assert.assertEquals(1, response.getTotalHits().value); } @Test public void complexChildrenQueryNotBothOnSameObject() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT * FROM %s/joinType where children(childrenType, info = 'a' and author ='j' ) ", TEST_INDEX_JOIN_TYPE)); - Assert.assertEquals(0, response.getTotalHits()); + Assert.assertEquals(0, response.getTotalHits().value); } @Test public void childrenOnInTermsQuery() throws IOException, SqlParseException, SQLFeatureNotSupportedException{ SearchHits response = query(String.format("SELECT * FROM %s/joinType where children(childrenType, info) = IN_TERMS(a,b)", TEST_INDEX_JOIN_TYPE)); - Assert.assertEquals(2, response.getTotalHits()); + Assert.assertEquals(2, response.getTotalHits().value); } /** We are not going to support Hints as it is not part of standard SQL */ diff --git a/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/SQLFunctionsTest.java b/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/SQLFunctionsTest.java index 11284c2fea..dfe6a4c17e 100644 --- a/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/SQLFunctionsTest.java +++ b/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/SQLFunctionsTest.java @@ -257,7 +257,7 @@ public void functionLogs() throws Exception { @Test public void functionPow() throws Exception { String query = "SELECT pow(account_number, 2) as key,"+ - "abs(age - 60) as new_age from " + TEST_INDEX_ACCOUNT + "/account limit 1"; + "abs(age - 60) as new_age from " + TEST_INDEX_ACCOUNT + "/account WHERE firstname = 'Virginia' and lastname='Ayala' limit 1"; CSVResult csvResult = getCsvResult(false, query); List content = csvResult.getLines(); Assert.assertTrue(content.toString().contains("625")); diff --git a/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/TestsConstants.java b/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/TestsConstants.java index fcebfee627..b34f3e1593 100644 --- a/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/TestsConstants.java +++ b/src/test/java/com/amazon/opendistroforelasticsearch/sql/intgtest/TestsConstants.java @@ -41,5 +41,5 @@ public class TestsConstants { public final static String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"; public final static String TS_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS"; - public final static String SIMPLE_DATE_FORMAT = "YYYY-MM-dd"; + public final static String SIMPLE_DATE_FORMAT = "yyyy-MM-dd"; } diff --git a/src/test/java/com/amazon/opendistroforelasticsearch/sql/unittest/DateFunctionsTest.java b/src/test/java/com/amazon/opendistroforelasticsearch/sql/unittest/DateFunctionsTest.java index 7fdd4f891f..b3fb33e013 100644 --- a/src/test/java/com/amazon/opendistroforelasticsearch/sql/unittest/DateFunctionsTest.java +++ b/src/test/java/com/amazon/opendistroforelasticsearch/sql/unittest/DateFunctionsTest.java @@ -48,7 +48,7 @@ public void yearInSelect() { assertTrue( scriptContainsString( scriptField, - "doc['creationDate'].date.year")); + "doc['creationDate'].value.year")); } @Test @@ -60,7 +60,7 @@ public void yearInWhere() { assertTrue( scriptContainsString( scriptFilter, - "doc['creationDate'].date.year")); + "doc['creationDate'].value.year")); assertTrue( scriptHasPattern( scriptFilter, @@ -75,7 +75,7 @@ public void weekOfYearInSelect() { assertTrue( scriptContainsString( scriptField, - "doc['creationDate'].date.weekOfWeekyear")); + "doc['creationDate'].value.weekOfWeekyear")); } @Test @@ -87,7 +87,7 @@ public void weekOfYearInWhere() { assertTrue( scriptContainsString( scriptFilter, - "doc['creationDate'].date.weekOfWeekyear")); + "doc['creationDate'].value.weekOfWeekyear")); assertTrue( scriptHasPattern( scriptFilter, @@ -102,7 +102,7 @@ public void dayOfMonth() { assertTrue( scriptContainsString( scriptField, - "doc['creationDate'].date.dayOfMonth")); + "doc['creationDate'].value.dayOfMonth")); } @Test @@ -113,7 +113,7 @@ public void hourOfDay() { assertTrue( scriptContainsString( scriptField, - "doc['creationDate'].date.hourOfDay")); + "doc['creationDate'].value.hourOfDay")); } @Test @@ -124,7 +124,7 @@ public void secondOfMinute() { assertTrue( scriptContainsString( scriptField, - "doc['creationDate'].date.secondOfMinute")); + "doc['creationDate'].value.secondOfMinute")); } } diff --git a/src/test/resources/join_objects.json b/src/test/resources/join_objects.json index ed142621fd..a1fdc86850 100644 --- a/src/test/resources/join_objects.json +++ b/src/test/resources/join_objects.json @@ -6,13 +6,13 @@ {"messageTile": "c", "join_field": "parentType"} {"index":{"_type": "joinType", "_id":"4"}} {"messageTile": "d", "join_field": "parentType"} -{"index":{"_type": "joinType", "_id":"5", "_routing": "1"}} +{"index":{"_type": "joinType", "_id":"5", "routing": "1"}} {"info":"a","author":"e","dayOfWeek":1, "join_field": {"name": "childrenType", "parent": "1"}} -{"index":{"_type": "joinType", "_id":"6", "_routing": "2"}} +{"index":{"_type": "joinType", "_id":"6", "routing": "2"}} {"info":"b","author":"f","dayOfWeek":2, "join_field": {"name": "childrenType", "parent": "2"}} -{"index":{"_type": "joinType", "_id":"7", "_routing": "3"}} +{"index":{"_type": "joinType", "_id":"7", "routing": "3"}} {"info":"c","author":"g","dayOfWeek":1, "join_field": {"name": "childrenType", "parent": "3"}} -{"index":{"_type": "joinType", "_id":"8", "_routing": "4"}} +{"index":{"_type": "joinType", "_id":"8", "routing": "4"}} {"info":"d","author":"h","dayOfWeek":3, "join_field": {"name": "childrenType", "parent": "4"}} -{"index":{"_type": "joinType", "_id":"9", "_routing": "1"}} +{"index":{"_type": "joinType", "_id":"9", "routing": "1"}} {"info":"a","author":"h","dayOfWeek":3, "join_field": {"name": "childrenType", "parent": "1"}}