@@ -968,11 +968,48 @@ public void testTopLevelFilterBoolMerged() throws IOException {
968968 }
969969
970970 public void testWideIndexWithFieldsTrimmed () throws IOException {
971- createWideIndex (10000 );
971+ createLoadIndexWithFieldAndDocumentCounts (10000 , 1 ); // create an index with 10k fields and 1 document
972972 var query = requestObjectBuilder ().query (format (null , "from {}" , testIndexName ()));
973973 Map <String , Object > result = runEsql (query );
974974 var columns = as (result .get ("columns" ), List .class );
975+ var values = as (result .get ("values" ), List .class );
975976 assertEquals (WIDE_INDEX_DEFAULT_FIELD_NUMBER , columns .size ());
977+ assertEquals (1 , values .size ());
978+
979+ query = requestObjectBuilder ().query (format (null , "from {} | keep f1, f2" , testIndexName ()));
980+ result = runEsql (query );
981+ columns = as (result .get ("columns" ), List .class );
982+ values = as (result .get ("values" ), List .class );
983+ assertEquals (2 , columns .size ());
984+ assertEquals (1 , values .size ());
985+
986+ query = requestObjectBuilder ().query (format (null , "from {} | drop f1, f2" , testIndexName ()));
987+ result = runEsql (query );
988+ columns = as (result .get ("columns" ), List .class );
989+ values = as (result .get ("values" ), List .class );
990+ assertEquals (9998 , columns .size ());
991+ assertEquals (1 , values .size ());
992+
993+ query = requestObjectBuilder ().query (format (null , "from {} | where f1 > 0" , testIndexName ()));
994+ result = runEsql (query );
995+ columns = as (result .get ("columns" ), List .class );
996+ values = as (result .get ("values" ), List .class );
997+ assertEquals (10000 , columns .size ());
998+ assertEquals (1 , values .size ());
999+
1000+ query = requestObjectBuilder ().query (format (null , "from {} | eval x = 0" , testIndexName ()));
1001+ result = runEsql (query );
1002+ columns = as (result .get ("columns" ), List .class );
1003+ values = as (result .get ("values" ), List .class );
1004+ assertEquals (10001 , columns .size ());
1005+ assertEquals (1 , values .size ());
1006+
1007+ query = requestObjectBuilder ().query (format (null , "from {} | stats max(f1)" , testIndexName ()));
1008+ result = runEsql (query );
1009+ columns = as (result .get ("columns" ), List .class );
1010+ values = as (result .get ("values" ), List .class );
1011+ assertEquals (1 , columns .size ());
1012+ assertEquals (1 , values .size ());
9761013 }
9771014
9781015 private static String queryWithComplexFieldNames (int field ) {
@@ -1540,16 +1577,33 @@ protected void indexTimestampData(int shards) throws IOException {
15401577 Assert .assertEquals ("{\" errors\" :false}" , EntityUtils .toString (response .getEntity (), StandardCharsets .UTF_8 ));
15411578 }
15421579
1543- private static void createWideIndex (int fieldNumber ) throws IOException {
1544- String settings = String .format ("\" settings\" :{\" index.mapping.total_fields.limit\" :%d}" , fieldNumber );
1580+ private static void createLoadIndexWithFieldAndDocumentCounts (int fieldCount , int documentCount ) throws IOException {
1581+ String settings = String .format ("\" settings\" :{\" index.mapping.total_fields.limit\" :%d}" , fieldCount );
15451582 StringBuilder mappings = new StringBuilder ();
15461583 mappings .append (String .format ("\" mappings\" : { \" properties\" : {\" f%d\" : {\" type\" : \" integer\" }" , 1 ));
1547- for (int i = 2 ; i <= fieldNumber ; i ++) {
1584+ for (int i = 2 ; i <= fieldCount ; i ++) {
15481585 mappings .append (String .format (", \" f%d\" :{\" type\" : \" integer\" }" , i ));
15491586 }
15501587 mappings .append ("}}" );
15511588 Request request = new Request ("PUT" , "/" + testIndexName ());
15521589 request .setJsonEntity ("{" + settings + ", " + mappings + "}" );
15531590 assertEquals (200 , client ().performRequest (request ).getStatusLine ().getStatusCode ());
1591+
1592+ if (documentCount > 0 ) {
1593+ request = new Request ("POST" , "/" + testIndexName () + "/_bulk" );
1594+ request .addParameter ("refresh" , "true" );
1595+
1596+ StringBuilder bulk = new StringBuilder ();
1597+ for (int i = 1 ; i <= documentCount ; i ++) {
1598+ bulk .append ("{\" index\" :{}}\n " );
1599+ bulk .append (String .format ("{\" f%d\" :%d" , 1 , 1 ));
1600+ for (int j = 2 ; j <= fieldCount ; j ++) {
1601+ bulk .append (String .format (",\" f%d\" :%d" , j , j ));
1602+ }
1603+ bulk .append ("}\n " );
1604+ }
1605+ request .setJsonEntity (bulk .toString ());
1606+ assertEquals (200 , client ().performRequest (request ).getStatusLine ().getStatusCode ());
1607+ }
15541608 }
15551609}
0 commit comments