38
38
import static java .util .Collections .unmodifiableMap ;
39
39
import static org .elasticsearch .xpack .ql .TestUtils .buildNodeAndVersions ;
40
40
import static org .elasticsearch .xpack .ql .TestUtils .readResource ;
41
- import static org .elasticsearch .xpack .ql .execution .search .QlSourceBuilder .SWITCH_TO_FIELDS_API_VERSION ;
42
41
43
42
public class SqlSearchIT extends ESRestTestCase {
44
43
@@ -56,9 +55,7 @@ public class SqlSearchIT extends ESRestTestCase {
56
55
private static List <TestNode > newNodes ;
57
56
private static List <TestNode > bwcNodes ;
58
57
private static Version bwcVersion ;
59
- private static Version newVersion ;
60
58
private static boolean isBwcNodeBeforeFieldsApiInQL ;
61
- private static boolean isBwcNodeBeforeFieldsApiInES ;
62
59
63
60
@ Before
64
61
public void createIndex () throws IOException {
@@ -68,9 +65,7 @@ public void createIndex() throws IOException {
68
65
newNodes = new ArrayList <>(nodes .getNewNodes ());
69
66
bwcNodes = new ArrayList <>(nodes .getBWCNodes ());
70
67
bwcVersion = nodes .getBWCNodes ().get (0 ).getVersion ();
71
- newVersion = nodes .getNewNodes ().get (0 ).getVersion ();
72
68
isBwcNodeBeforeFieldsApiInQL = bwcVersion .before (FIELDS_API_QL_INTRODUCTION );
73
- isBwcNodeBeforeFieldsApiInES = bwcVersion .before (SWITCH_TO_FIELDS_API_VERSION );
74
69
75
70
String mappings = readResource (SqlSearchIT .class .getResourceAsStream ("/all_field_types.json" ));
76
71
createIndex (
@@ -142,7 +137,7 @@ public void testAllTypesWithRequestToUpgradedNodes() throws Exception {
142
137
(builder , fieldValues ) -> {
143
138
Float randomFloat = randomFloat ();
144
139
builder .append ("," );
145
- if (isBwcNodeBeforeFieldsApiInQL && isBwcNodeBeforeFieldsApiInES ) {
140
+ if (isBwcNodeBeforeFieldsApiInQL ) {
146
141
builder .append ("\" geo_point_field\" :{\" lat\" :\" 37.386483\" , \" lon\" :\" -122.083843\" }," );
147
142
fieldValues .put ("geo_point_field" , "POINT (-122.08384302444756 37.38648299127817)" );
148
143
builder .append ("\" float_field\" :" + randomFloat + "," );
@@ -256,20 +251,38 @@ private void assertAllTypesWithNodes(Map<String, Object> expectedResponse, List<
256
251
) {
257
252
@ SuppressWarnings ("unchecked" )
258
253
List <Map <String , Object >> columns = (List <Map <String , Object >>) expectedResponse .get ("columns" );
254
+
259
255
String intervalYearMonth = "INTERVAL '150' YEAR AS interval_year, " ;
260
256
String intervalDayTime = "INTERVAL '163' MINUTE AS interval_minute, " ;
261
-
262
257
// get all fields names from the expected response built earlier, skipping the intervals as they execute locally
263
258
// and not taken from the index itself
264
- String fieldsList = columns .stream ().map (m -> (String ) m .get ("name" )).filter (str -> str .startsWith ("interval" ) == false )
265
- .collect (Collectors .toList ()).stream ().collect (Collectors .joining (", " ));
259
+ String fieldsList = columns .stream ()
260
+ .map (m -> (String ) m .get ("name" ))
261
+ .filter (str -> str .startsWith ("interval" ) == false )
262
+ .collect (Collectors .toList ())
263
+ .stream ()
264
+ .collect (Collectors .joining (", " ));
266
265
String query = "SELECT " + intervalYearMonth + intervalDayTime + fieldsList + " FROM " + index + " ORDER BY id" ;
266
+
267
267
Request request = new Request ("POST" , "_sql" );
268
- request .setJsonEntity ("{\" query\" :\" " + query + "\" }" );
269
- assertBusy (() -> { assertResponse (expectedResponse , runSql (client , request )); });
268
+ request .setJsonEntity (SqlCompatIT .sqlQueryEntityWithOptionalMode (query , bwcVersion ));
269
+ assertBusy (() -> {
270
+ assertResponse (expectedResponse , dropDisplaySizes (runSql (client , request )));
271
+ });
270
272
}
271
273
}
272
274
275
+ private Map <String , Object > dropDisplaySizes (Map <String , Object > response ) {
276
+ // in JDBC mode, display_size will be part of the response, so remove it because it's not part of the expected response
277
+ @ SuppressWarnings ("unchecked" )
278
+ List <Map <String , Object >> columns = (List <Map <String , Object >>) response .get ("columns" );
279
+ List <Map <String , Object >> columnsWithoutDisplaySizes = columns .stream ()
280
+ .peek (column -> column .remove ("display_size" ))
281
+ .collect (Collectors .toList ());
282
+ response .put ("columns" , columnsWithoutDisplaySizes );
283
+ return response ;
284
+ }
285
+
273
286
private void assertResponse (Map <String , Object > expected , Map <String , Object > actual ) {
274
287
if (false == expected .equals (actual )) {
275
288
NotEqualMessageBuilder message = new NotEqualMessageBuilder ();
0 commit comments