You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2018/12/12 08:57:25 UTC
[1/2] lucene-solr:master: SOLR-13040: Fix TestSQLHandler,
remove delete core calls.
Repository: lucene-solr
Updated Branches:
refs/heads/master ec1bd0da2 -> bcdc6dadb
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bcdc6dad/solr/core/src/test/org/apache/solr/handler/TestSQLHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/TestSQLHandler.java b/solr/core/src/test/org/apache/solr/handler/TestSQLHandler.java
index 21c8a72..eff3a6c 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestSQLHandler.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestSQLHandler.java
@@ -59,7 +59,7 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
protected String getCloudSolrConfig() {
return "solrconfig-sql.xml";
}
-
+
@Override
protected String getCloudSchemaFile() {
return schemaString;
@@ -80,14 +80,10 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
resetExceptionIgnores();
}
- private void delete() throws Exception {
- deleteCore();
- }
-
@Test
- @AwaitsFix(bugUrl="https://issues.apache.org/jira/browse/SOLR-13040")
public void doTest() throws Exception {
- cloudClient.waitForState(DEFAULT_COLLECTION, 30, TimeUnit.SECONDS, SolrCloudTestCase.activeClusterShape(sliceCount, 4));
+ cloudClient.waitForState(DEFAULT_COLLECTION, 30, TimeUnit.SECONDS,
+ SolrCloudTestCase.activeClusterShape(sliceCount, 4));
testBasicSelect();
testWhere();
@@ -109,2073 +105,1985 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
}
private void testBasicSelect() throws Exception {
- try {
- CloudJettyRunner jetty = this.cloudJettys.get(0);
- del("*:*");
+ CloudJettyRunner jetty = this.cloudJettys.get(0);
- commit();
+ del("*:*");
- indexDoc(sdoc("id", "1", "text", "XXXX XXXX", "str_s", "a", "field_i", "7", "field_i_p", "7",
- "field_f_p", "7.5", "field_d_p", "7.5", "field_l_p", "7"));
- indexDoc(sdoc("id", "2", "text", "XXXX XXXX", "str_s", "b", "field_i", "8", "field_i_p", "8",
- "field_f_p", "8.5", "field_d_p", "8.5","field_l_p", "8" ));
- indexDoc(sdoc("id", "3", "text", "XXXX XXXX", "str_s", "a", "field_i", "20", "field_i_p", "20",
- "field_f_p", "20.5", "field_d_p", "20.5", "field_l_p", "20"));
- indexDoc(sdoc("id", "4", "text", "XXXX XXXX", "str_s", "b", "field_i", "11", "field_i_p", "11",
- "field_f_p", "11.5", "field_d_p", "11.5", "field_l_p", "11"));
- indexDoc(sdoc("id", "5", "text", "XXXX XXXX", "str_s", "c", "field_i", "30","field_i_p", "30", "" +
- "field_f_p", "30.5", "field_d_p", "30.5", "field_l_p", "30"));
- indexDoc(sdoc("id", "6", "text", "XXXX XXXX", "str_s", "c", "field_i", "40", "field_i_p", "40",
- "field_f_p", "40.5", "field_d_p", "40.5", "field_l_p", "40"));
- indexDoc(sdoc("id", "7", "text", "XXXX XXXX", "str_s", "c", "field_i", "50", "field_i_p", "50",
- "field_f_p", "50.5", "field_d_p", "50.5", "field_l_p", "50"));
- indexDoc(sdoc("id", "8", "text", "XXXX XXXX", "str_s", "c", "field_i", "60", "field_i_p", "60",
- "field_f_p", "60.5", "field_d_p", "60.5", "field_l_p", "60"));
- commit();
+ commit();
+ indexDoc(sdoc("id", "1", "text", "XXXX XXXX", "str_s", "a", "field_i", "7", "field_i_p", "7",
+ "field_f_p", "7.5", "field_d_p", "7.5", "field_l_p", "7"));
+ indexDoc(sdoc("id", "2", "text", "XXXX XXXX", "str_s", "b", "field_i", "8", "field_i_p", "8",
+ "field_f_p", "8.5", "field_d_p", "8.5", "field_l_p", "8"));
+ indexDoc(sdoc("id", "3", "text", "XXXX XXXX", "str_s", "a", "field_i", "20", "field_i_p", "20",
+ "field_f_p", "20.5", "field_d_p", "20.5", "field_l_p", "20"));
+ indexDoc(sdoc("id", "4", "text", "XXXX XXXX", "str_s", "b", "field_i", "11", "field_i_p", "11",
+ "field_f_p", "11.5", "field_d_p", "11.5", "field_l_p", "11"));
+ indexDoc(sdoc("id", "5", "text", "XXXX XXXX", "str_s", "c", "field_i", "30", "field_i_p", "30", "" +
+ "field_f_p", "30.5", "field_d_p", "30.5", "field_l_p", "30"));
+ indexDoc(sdoc("id", "6", "text", "XXXX XXXX", "str_s", "c", "field_i", "40", "field_i_p", "40",
+ "field_f_p", "40.5", "field_d_p", "40.5", "field_l_p", "40"));
+ indexDoc(sdoc("id", "7", "text", "XXXX XXXX", "str_s", "c", "field_i", "50", "field_i_p", "50",
+ "field_f_p", "50.5", "field_d_p", "50.5", "field_l_p", "50"));
+ indexDoc(sdoc("id", "8", "text", "XXXX XXXX", "str_s", "c", "field_i", "60", "field_i_p", "60",
+ "field_f_p", "60.5", "field_d_p", "60.5", "field_l_p", "60"));
+ commit();
- System.out.println("############# testBasicSelect() ############");
+ System.out.println("############# testBasicSelect() ############");
- SolrParams sParams = mapParams(CommonParams.QT, "/sql",
- "stmt", "select id, field_i, str_s, field_i_p, field_f_p, field_d_p, field_l_p from collection1 where (text='(XXXX)' OR text='XXXX') AND text='XXXX' order by field_i desc");
+ SolrParams sParams = mapParams(CommonParams.QT, "/sql",
+ "stmt",
+ "select id, field_i, str_s, field_i_p, field_f_p, field_d_p, field_l_p from collection1 where (text='(XXXX)' OR text='XXXX') AND text='XXXX' order by field_i desc");
- SolrStream solrStream = new SolrStream(jetty.url, sParams);
- List<Tuple> tuples = getTuples(solrStream);
+ SolrStream solrStream = new SolrStream(jetty.url, sParams);
+ List<Tuple> tuples = getTuples(solrStream);
- assert(tuples.size() == 8);
- Tuple tuple;
+ assert (tuples.size() == 8);
+ Tuple tuple;
- tuple = tuples.get(0);
- assertEquals(tuple.getLong("id").longValue(),8);
- assertEquals(tuple.getLong("field_i").longValue(), 60);
- assert(tuple.get("str_s").equals("c"));
- assertEquals(tuple.getLong("field_i_p").longValue(), 60L);
- assertEquals(tuple.getDouble("field_f_p"), 60.5, 0.0);
- assertEquals(tuple.getDouble("field_d_p"), 60.5, 0.0);
- assertEquals(tuple.getLong("field_l_p").longValue(), 60);
+ tuple = tuples.get(0);
+ assertEquals(tuple.getLong("id").longValue(), 8);
+ assertEquals(tuple.getLong("field_i").longValue(), 60);
+ assert (tuple.get("str_s").equals("c"));
+ assertEquals(tuple.getLong("field_i_p").longValue(), 60L);
+ assertEquals(tuple.getDouble("field_f_p"), 60.5, 0.0);
+ assertEquals(tuple.getDouble("field_d_p"), 60.5, 0.0);
+ assertEquals(tuple.getLong("field_l_p").longValue(), 60);
+
+ tuple = tuples.get(1);
+ assertEquals(tuple.getLong("id").longValue(), 7);
+ assertEquals(tuple.getLong("field_i").longValue(), 50);
+ assert (tuple.get("str_s").equals("c"));
+ assertEquals(tuple.getLong("field_i_p").longValue(), 50);
+ assertEquals(tuple.getDouble("field_f_p"), 50.5, 0.0);
+ assertEquals(tuple.getDouble("field_d_p"), 50.5, 0.0);
+ assertEquals(tuple.getLong("field_l_p").longValue(), 50);
+
+ tuple = tuples.get(2);
+ assertEquals(tuple.getLong("id").longValue(), 6);
+ assertEquals(tuple.getLong("field_i").longValue(), 40);
+ assert (tuple.get("str_s").equals("c"));
+ assertEquals(tuple.getLong("field_i_p").longValue(), 40);
+ assertEquals(tuple.getDouble("field_f_p"), 40.5, 0.0);
+ assertEquals(tuple.getDouble("field_d_p"), 40.5, 0.0);
+ assertEquals(tuple.getLong("field_l_p").longValue(), 40);
+
+ tuple = tuples.get(3);
+ assertEquals(tuple.getLong("id").longValue(), 5);
+ assertEquals(tuple.getLong("field_i").longValue(), 30);
+ assert (tuple.get("str_s").equals("c"));
+ assertEquals(tuple.getLong("field_i_p").longValue(), 30);
+ assertEquals(tuple.getDouble("field_f_p"), 30.5, 0.0);
+ assertEquals(tuple.getDouble("field_d_p"), 30.5, 0.0);
+ assertEquals(tuple.getLong("field_l_p").longValue(), 30);
+
+ tuple = tuples.get(4);
+ assertEquals(tuple.getLong("id").longValue(), 3);
+ assertEquals(tuple.getLong("field_i").longValue(), 20);
+ assert (tuple.get("str_s").equals("a"));
+ assertEquals(tuple.getLong("field_i_p").longValue(), 20);
+ assertEquals(tuple.getDouble("field_f_p"), 20.5, 0.0);
+ assertEquals(tuple.getDouble("field_d_p"), 20.5, 0.0);
+ assertEquals(tuple.getLong("field_l_p").longValue(), 20);
+
+ tuple = tuples.get(5);
+ assertEquals(tuple.getLong("id").longValue(), 4);
+ assertEquals(tuple.getLong("field_i").longValue(), 11);
+ assert (tuple.get("str_s").equals("b"));
+ assertEquals(tuple.getLong("field_i_p").longValue(), 11);
+ assertEquals(tuple.getDouble("field_f_p"), 11.5, 0.0);
+ assertEquals(tuple.getDouble("field_d_p"), 11.5, 0.0);
+ assertEquals(tuple.getLong("field_l_p").longValue(), 11);
+
+ tuple = tuples.get(6);
+ assertEquals(tuple.getLong("id").longValue(), 2);
+ assertEquals(tuple.getLong("field_i").longValue(), 8);
+ assert (tuple.get("str_s").equals("b"));
+ assertEquals(tuple.getLong("field_i_p").longValue(), 8);
+ assertEquals(tuple.getDouble("field_f_p"), 8.5, 0.0);
+ assertEquals(tuple.getDouble("field_d_p"), 8.5, 0.0);
+ assertEquals(tuple.getLong("field_l_p").longValue(), 8);
+
+ tuple = tuples.get(7);
+ assertEquals(tuple.getLong("id").longValue(), 1);
+ assertEquals(tuple.getLong("field_i").longValue(), 7);
+ assert (tuple.get("str_s").equals("a"));
+ assertEquals(tuple.getLong("field_i_p").longValue(), 7);
+ assertEquals(tuple.getDouble("field_f_p"), 7.5, 0.0);
+ assertEquals(tuple.getDouble("field_d_p"), 7.5, 0.0);
+ assertEquals(tuple.getLong("field_l_p").longValue(), 7);
+
+ // Assert field order
+ assertResponseContains(clients.get(0), sParams,
+ "{\"docs\":[{\"id\":\"8\",\"field_i\":60,\"str_s\":\"c\",\"field_i_p\":60,\"field_f_p\":60.5,\"field_d_p\":60.5,\"field_l_p\":60}");
+
+ // Test unlimited unsorted result. Should sort on _version_ desc
+ sParams = mapParams(CommonParams.QT, "/sql", "stmt",
+ "select id, field_i, str_s from collection1 where text='XXXX'");
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuples = getTuples(solrStream);
+ assert (tuples.size() == 8);
+ tuple = tuples.get(0);
+ assert (tuple.getLong("id") == 8);
+ assert (tuple.getLong("field_i") == 60);
+ assert (tuple.get("str_s").equals("c"));
+
+ tuple = tuples.get(1);
+ assert (tuple.getLong("id") == 7);
+ assert (tuple.getLong("field_i") == 50);
+ assert (tuple.get("str_s").equals("c"));
+
+ tuple = tuples.get(2);
+ assert (tuple.getLong("id") == 6);
+ assert (tuple.getLong("field_i") == 40);
+ assert (tuple.get("str_s").equals("c"));
+
+ tuple = tuples.get(3);
+ assert (tuple.getLong("id") == 5);
+ assert (tuple.getLong("field_i") == 30);
+ assert (tuple.get("str_s").equals("c"));
+
+ tuple = tuples.get(4);
+ assert (tuple.getLong("id") == 4);
+ assert (tuple.getLong("field_i") == 11);
+ assert (tuple.get("str_s").equals("b"));
+
+ tuple = tuples.get(5);
+ assert (tuple.getLong("id") == 3);
+ assert (tuple.getLong("field_i") == 20);
+ assert (tuple.get("str_s").equals("a"));
+
+ tuple = tuples.get(6);
+ assert (tuple.getLong("id") == 2);
+ assert (tuple.getLong("field_i") == 8);
+ assert (tuple.get("str_s").equals("b"));
+
+ tuple = tuples.get(7);
+ assert (tuple.getLong("id") == 1);
+ assert (tuple.getLong("field_i") == 7);
+ assert (tuple.get("str_s").equals("a"));
- tuple = tuples.get(1);
- assertEquals(tuple.getLong("id").longValue(), 7);
- assertEquals(tuple.getLong("field_i").longValue(), 50);
- assert(tuple.get("str_s").equals("c"));
- assertEquals(tuple.getLong("field_i_p").longValue(), 50);
- assertEquals(tuple.getDouble("field_f_p"), 50.5, 0.0);
- assertEquals(tuple.getDouble("field_d_p"), 50.5, 0.0);
- assertEquals(tuple.getLong("field_l_p").longValue(), 50);
+ sParams = mapParams(CommonParams.QT, "/sql",
+ "stmt", "select id, field_i, str_s from collection1 where text='XXXX' order by field_i desc limit 1");
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuples = getTuples(solrStream);
+ assert (tuples.size() == 1);
+ tuple = tuples.get(0);
+ assert (tuple.getLong("id") == 8);
+ assert (tuple.getLong("field_i") == 60);
+ assert (tuple.get("str_s").equals("c"));
- tuple = tuples.get(2);
- assertEquals(tuple.getLong("id").longValue(),6);
- assertEquals(tuple.getLong("field_i").longValue(), 40);
- assert(tuple.get("str_s").equals("c"));
- assertEquals(tuple.getLong("field_i_p").longValue(), 40);
- assertEquals(tuple.getDouble("field_f_p"), 40.5, 0.0);
- assertEquals(tuple.getDouble("field_d_p"), 40.5, 0.0);
- assertEquals(tuple.getLong("field_l_p").longValue(), 40);
+ sParams = mapParams(CommonParams.QT, "/sql", "stmt",
+ "select id, field_i, str_s from collection1 where text='XXXX' AND id='(1 2 3)' order by field_i desc");
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuples = getTuples(solrStream);
+ assert (tuples.size() == 3);
+ tuple = tuples.get(0);
+ assert (tuple.getLong("id") == 3);
+ assert (tuple.getLong("field_i") == 20);
+ assert (tuple.get("str_s").equals("a"));
+ tuple = tuples.get(1);
+ assert (tuple.getLong("id") == 2);
+ assert (tuple.getLong("field_i") == 8);
+ assert (tuple.get("str_s").equals("b"));
- tuple = tuples.get(3);
- assertEquals(tuple.getLong("id").longValue(), 5);
- assertEquals(tuple.getLong("field_i").longValue(), 30);
- assert(tuple.get("str_s").equals("c"));
- assertEquals(tuple.getLong("field_i_p").longValue(), 30);
- assertEquals(tuple.getDouble("field_f_p"), 30.5, 0.0);
- assertEquals(tuple.getDouble("field_d_p"), 30.5, 0.0);
- assertEquals(tuple.getLong("field_l_p").longValue(), 30);
+ tuple = tuples.get(2);
+ assert (tuple.getLong("id") == 1);
+ assert (tuple.getLong("field_i") == 7);
+ assert (tuple.get("str_s").equals("a"));
+ sParams = mapParams(CommonParams.QT, "/sql",
+ "stmt",
+ "select id as myId, field_i as myInt, str_s as myString from collection1 where text='XXXX' AND id='(1 2 3)' order by myInt desc");
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuples = getTuples(solrStream);
+ assert (tuples.size() == 3);
- tuple = tuples.get(4);
- assertEquals(tuple.getLong("id").longValue(),3);
- assertEquals(tuple.getLong("field_i").longValue(), 20);
- assert(tuple.get("str_s").equals("a"));
- assertEquals(tuple.getLong("field_i_p").longValue(), 20);
- assertEquals(tuple.getDouble("field_f_p"), 20.5, 0.0);
- assertEquals(tuple.getDouble("field_d_p"), 20.5, 0.0);
- assertEquals(tuple.getLong("field_l_p").longValue(), 20);
+ tuple = tuples.get(0);
+ assert (tuple.getLong("myId") == 3);
+ assert (tuple.getLong("myInt") == 20);
+ assert (tuple.get("myString").equals("a"));
+ tuple = tuples.get(1);
+ assert (tuple.getLong("myId") == 2);
+ assert (tuple.getLong("myInt") == 8);
+ assert (tuple.get("myString").equals("b"));
+ tuple = tuples.get(2);
+ assert (tuple.getLong("myId") == 1);
+ assert (tuple.getLong("myInt") == 7);
+ assert (tuple.get("myString").equals("a"));
+ sParams = mapParams(CommonParams.QT, "/sql",
+ "stmt",
+ "select id as myId, field_i as myInt, str_s as myString from collection1 where text='XXXX' AND id='(1 2 3)' order by field_i desc");
- tuple = tuples.get(5);
- assertEquals(tuple.getLong("id").longValue(), 4);
- assertEquals(tuple.getLong("field_i").longValue(), 11);
- assert(tuple.get("str_s").equals("b"));
- assertEquals(tuple.getLong("field_i_p").longValue(), 11);
- assertEquals(tuple.getDouble("field_f_p"), 11.5, 0.0);
- assertEquals(tuple.getDouble("field_d_p"), 11.5, 0.0);
- assertEquals(tuple.getLong("field_l_p").longValue(), 11);
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuples = getTuples(solrStream);
+ assert (tuples.size() == 3);
+ tuple = tuples.get(0);
+ assert (tuple.getLong("myId") == 3);
+ assert (tuple.getLong("myInt") == 20);
+ assert (tuple.get("myString").equals("a"));
+ tuple = tuples.get(1);
+ assert (tuple.getLong("myId") == 2);
+ assert (tuple.getLong("myInt") == 8);
+ assert (tuple.get("myString").equals("b"));
- tuple = tuples.get(6);
- assertEquals(tuple.getLong("id").longValue(), 2);
- assertEquals(tuple.getLong("field_i").longValue(), 8);
- assert(tuple.get("str_s").equals("b"));
- assertEquals(tuple.getLong("field_i_p").longValue(), 8);
- assertEquals(tuple.getDouble("field_f_p"), 8.5, 0.0);
- assertEquals(tuple.getDouble("field_d_p"), 8.5, 0.0);
- assertEquals(tuple.getLong("field_l_p").longValue(), 8);
+ tuple = tuples.get(2);
+ assert (tuple.getLong("myId") == 1);
+ assert (tuple.getLong("myInt") == 7);
+ assert (tuple.get("myString").equals("a"));
+ // Test after reload SOLR-9059//
+ Replica leader = getShardLeader("collection1", "shard1", 30 /* timeout secs */);
+ // reload collection and wait to see the core report it has been reloaded
+ boolean wasReloaded = reloadCollection(leader, "collection1");
+ assertTrue(wasReloaded);
+ sParams = mapParams(CommonParams.QT, "/sql",
+ "stmt",
+ "select id as myId, field_i as myInt, str_s as myString from collection1 where text='XXXX' AND id='(1 2 3)' order by field_i desc");
- tuple = tuples.get(7);
- assertEquals(tuple.getLong("id").longValue(), 1);
- assertEquals(tuple.getLong("field_i").longValue(), 7);
- assert(tuple.get("str_s").equals("a"));
- assertEquals(tuple.getLong("field_i_p").longValue(), 7);
- assertEquals(tuple.getDouble("field_f_p"), 7.5, 0.0);
- assertEquals(tuple.getDouble("field_d_p"), 7.5, 0.0);
- assertEquals(tuple.getLong("field_l_p").longValue(), 7);
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuples = getTuples(solrStream);
+ assert (tuples.size() == 3);
+ tuple = tuples.get(0);
+ assert (tuple.getLong("myId") == 3);
+ assert (tuple.getLong("myInt") == 20);
+ assert (tuple.get("myString").equals("a"));
- //Assert field order
- assertResponseContains(clients.get(0), sParams, "{\"docs\":[{\"id\":\"8\",\"field_i\":60,\"str_s\":\"c\",\"field_i_p\":60,\"field_f_p\":60.5,\"field_d_p\":60.5,\"field_l_p\":60}");
+ tuple = tuples.get(1);
+ assert (tuple.getLong("myId") == 2);
+ assert (tuple.getLong("myInt") == 8);
+ assert (tuple.get("myString").equals("b"));
- //Test unlimited unsorted result. Should sort on _version_ desc
- sParams = mapParams(CommonParams.QT, "/sql", "stmt", "select id, field_i, str_s from collection1 where text='XXXX'");
+ tuple = tuples.get(2);
+ assert (tuple.getLong("myId") == 1);
+ assert (tuple.getLong("myInt") == 7);
+ assert (tuple.get("myString").equals("a"));
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
+ // SOLR-8845 - Test to make sure that 1 = 0 works for things like Spark SQL
+ sParams = mapParams(CommonParams.QT, "/sql",
+ "stmt", "select id, field_i, str_s from collection1 where 1 = 0");
- assert(tuples.size() == 8);
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuples = getTuples(solrStream);
- tuple = tuples.get(0);
- assert(tuple.getLong("id") == 8);
- assert(tuple.getLong("field_i") == 60);
- assert(tuple.get("str_s").equals("c"));
+ assertEquals(0, tuples.size());
- tuple = tuples.get(1);
- assert(tuple.getLong("id") == 7);
- assert(tuple.getLong("field_i") == 50);
- assert(tuple.get("str_s").equals("c"));
+ }
- tuple = tuples.get(2);
- assert(tuple.getLong("id") == 6);
- assert(tuple.getLong("field_i") == 40);
- assert(tuple.get("str_s").equals("c"));
+ private void testWhere() throws Exception {
- tuple = tuples.get(3);
- assert(tuple.getLong("id") == 5);
- assert(tuple.getLong("field_i") == 30);
- assert(tuple.get("str_s").equals("c"));
+ CloudJettyRunner jetty = this.cloudJettys.get(0);
- tuple = tuples.get(4);
- assert(tuple.getLong("id") == 4);
- assert(tuple.getLong("field_i") == 11);
- assert(tuple.get("str_s").equals("b"));
+ del("*:*");
- tuple = tuples.get(5);
- assert(tuple.getLong("id") == 3);
- assert(tuple.getLong("field_i") == 20);
- assert(tuple.get("str_s").equals("a"));
+ commit();
- tuple = tuples.get(6);
- assert(tuple.getLong("id") == 2);
- assert(tuple.getLong("field_i") == 8);
- assert(tuple.get("str_s").equals("b"));
+ indexDoc(sdoc("id", "1", "text", "XXXX XXXX", "str_s", "a", "field_i", "7"));
+ indexDoc(sdoc("id", "2", "text", "XXXX XXXX", "str_s", "b", "field_i", "8"));
+ indexDoc(sdoc("id", "3", "text", "XXXX XXXX", "str_s", "a", "field_i", "20"));
+ indexDoc(sdoc("id", "4", "text", "XXXX XXXX", "str_s", "b", "field_i", "11"));
+ indexDoc(sdoc("id", "5", "text", "XXXX XXXX", "str_s", "c", "field_i", "30"));
+ indexDoc(sdoc("id", "6", "text", "XXXX XXXX", "str_s", "c", "field_i", "40"));
+ indexDoc(sdoc("id", "7", "text", "XXXX XXXX", "str_s", "c", "field_i", "50"));
+ indexDoc(sdoc("id", "8", "text", "XXXX XXXX", "str_s", "c", "field_i", "60"));
+ commit();
- tuple = tuples.get(7);
- assert(tuple.getLong("id") == 1);
- assert(tuple.getLong("field_i") == 7);
- assert(tuple.get("str_s").equals("a"));
+ // Equals
+ SolrParams sParams = mapParams(CommonParams.QT, "/sql",
+ "stmt", "select id from collection1 where id = 1 order by id asc");
+ SolrStream solrStream = new SolrStream(jetty.url, sParams);
+ List<Tuple> tuples = getTuples(solrStream);
- sParams = mapParams(CommonParams.QT, "/sql",
- "stmt", "select id, field_i, str_s from collection1 where text='XXXX' order by field_i desc limit 1");
+ assertEquals(1, tuples.size());
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
+ Tuple tuple = tuples.get(0);
+ assertEquals("1", tuple.get("id"));
- assert(tuples.size() == 1);
+ // Not Equals <>
+ sParams = mapParams(CommonParams.QT, "/sql",
+ "stmt", "select id from collection1 where id <> 1 order by id asc limit 10");
- tuple = tuples.get(0);
- assert(tuple.getLong("id") == 8);
- assert(tuple.getLong("field_i") == 60);
- assert(tuple.get("str_s").equals("c"));
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuples = getTuples(solrStream);
- sParams = mapParams(CommonParams.QT, "/sql", "stmt", "select id, field_i, str_s from collection1 where text='XXXX' AND id='(1 2 3)' order by field_i desc");
+ assertEquals(7, tuples.size());
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
+ tuple = tuples.get(0);
+ assertEquals("2", tuple.get("id"));
+ tuple = tuples.get(1);
+ assertEquals("3", tuple.get("id"));
+ tuple = tuples.get(2);
+ assertEquals("4", tuple.get("id"));
+ tuple = tuples.get(3);
+ assertEquals("5", tuple.get("id"));
+ tuple = tuples.get(4);
+ assertEquals("6", tuple.get("id"));
+ tuple = tuples.get(5);
+ assertEquals("7", tuple.get("id"));
+ tuple = tuples.get(6);
+ assertEquals("8", tuple.get("id"));
+
+ // TODO requires different Calcite SQL conformance level
+ // Not Equals !=
+ // sParams = mapParams(CommonParams.QT, "/sql",
+ // "stmt", "select id from collection1 where id != 1 order by id asc limit 10");
+ //
+ // solrStream = new SolrStream(jetty.url, sParams);
+ // tuples = getTuples(solrStream);
+ //
+ // assertEquals(7, tuples.size());
+ //
+ // tuple = tuples.get(0);
+ // assertEquals(2L, tuple.get("id"));
+ // tuple = tuples.get(1);
+ // assertEquals(3L, tuple.get("id"));
+ // tuple = tuples.get(2);
+ // assertEquals(4L, tuple.get("id"));
+ // tuple = tuples.get(3);
+ // assertEquals(5L, tuple.get("id"));
+ // tuple = tuples.get(4);
+ // assertEquals(6L, tuple.get("id"));
+ // tuple = tuples.get(5);
+ // assertEquals(7L, tuple.get("id"));
+ // tuple = tuples.get(6);
+ // assertEquals(8L, tuple.get("id"));
+
+ // Less than
+ sParams = mapParams(CommonParams.QT, "/sql",
+ "stmt", "select id from collection1 where id < 2 order by id asc");
- assert(tuples.size() == 3);
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuples = getTuples(solrStream);
- tuple = tuples.get(0);
- assert(tuple.getLong("id") == 3);
- assert(tuple.getLong("field_i") == 20);
- assert(tuple.get("str_s").equals("a"));
+ assertEquals(1, tuples.size());
- tuple = tuples.get(1);
- assert(tuple.getLong("id") == 2);
- assert(tuple.getLong("field_i") == 8);
- assert(tuple.get("str_s").equals("b"));
+ tuple = tuples.get(0);
+ assertEquals("1", tuple.get("id"));
- tuple = tuples.get(2);
- assert(tuple.getLong("id") == 1);
- assert(tuple.getLong("field_i") == 7);
- assert(tuple.get("str_s").equals("a"));
+ // Less than equal
+ sParams = mapParams(CommonParams.QT, "/sql",
+ "stmt", "select id from collection1 where id <= 2 order by id asc");
- sParams = mapParams(CommonParams.QT, "/sql",
- "stmt", "select id as myId, field_i as myInt, str_s as myString from collection1 where text='XXXX' AND id='(1 2 3)' order by myInt desc");
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuples = getTuples(solrStream);
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
+ assertEquals(2, tuples.size());
- assert(tuples.size() == 3);
+ tuple = tuples.get(0);
+ assertEquals("1", tuple.get("id"));
+ tuple = tuples.get(1);
+ assertEquals("2", tuple.get("id"));
- tuple = tuples.get(0);
- assert(tuple.getLong("myId") == 3);
- assert(tuple.getLong("myInt") == 20);
- assert(tuple.get("myString").equals("a"));
+ // Greater than
+ sParams = mapParams(CommonParams.QT, "/sql",
+ "stmt", "select id from collection1 where id > 7 order by id asc");
- tuple = tuples.get(1);
- assert(tuple.getLong("myId") == 2);
- assert(tuple.getLong("myInt") == 8);
- assert(tuple.get("myString").equals("b"));
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuples = getTuples(solrStream);
- tuple = tuples.get(2);
- assert(tuple.getLong("myId") == 1);
- assert(tuple.getLong("myInt") == 7);
- assert(tuple.get("myString").equals("a"));
+ assertEquals(1, tuples.size());
- sParams = mapParams(CommonParams.QT, "/sql",
- "stmt", "select id as myId, field_i as myInt, str_s as myString from collection1 where text='XXXX' AND id='(1 2 3)' order by field_i desc");
+ tuple = tuples.get(0);
+ assertEquals("8", tuple.get("id"));
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
+ // Greater than equal
+ sParams = mapParams(CommonParams.QT, "/sql",
+ "stmt", "select id from collection1 where id >= 7 order by id asc");
- assert(tuples.size() == 3);
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuples = getTuples(solrStream);
- tuple = tuples.get(0);
- assert(tuple.getLong("myId") == 3);
- assert(tuple.getLong("myInt") == 20);
- assert(tuple.get("myString").equals("a"));
+ assertEquals(2, tuples.size());
- tuple = tuples.get(1);
- assert(tuple.getLong("myId") == 2);
- assert(tuple.getLong("myInt") == 8);
- assert(tuple.get("myString").equals("b"));
+ tuple = tuples.get(0);
+ assertEquals("7", tuple.get("id"));
+ tuple = tuples.get(1);
+ assertEquals("8", tuple.get("id"));
- tuple = tuples.get(2);
- assert(tuple.getLong("myId") == 1);
- assert(tuple.getLong("myInt") == 7);
- assert(tuple.get("myString").equals("a"));
+ }
- //Test after reload SOLR-9059//
- Replica leader = getShardLeader("collection1", "shard1", 30 /* timeout secs */);
+ private void testMixedCaseFields() throws Exception {
- // reload collection and wait to see the core report it has been reloaded
- boolean wasReloaded = reloadCollection(leader, "collection1");
- assertTrue(wasReloaded);
+ CloudJettyRunner jetty = this.cloudJettys.get(0);
- sParams = mapParams(CommonParams.QT, "/sql",
- "stmt", "select id as myId, field_i as myInt, str_s as myString from collection1 where text='XXXX' AND id='(1 2 3)' order by field_i desc");
+ del("*:*");
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
+ commit();
- assert(tuples.size() == 3);
+ indexDoc(sdoc("id", "1", "Text_t", "XXXX XXXX", "Str_s", "a", "Field_i", "7"));
+ indexDoc(sdoc("id", "2", "Text_t", "XXXX XXXX", "Str_s", "b", "Field_i", "8"));
+ indexDoc(sdoc("id", "3", "Text_t", "XXXX XXXX", "Str_s", "a", "Field_i", "20"));
+ indexDoc(sdoc("id", "4", "Text_t", "XXXX XXXX", "Str_s", "b", "Field_i", "11"));
+ indexDoc(sdoc("id", "5", "Text_t", "XXXX XXXX", "Str_s", "c", "Field_i", "30"));
+ indexDoc(sdoc("id", "6", "Text_t", "XXXX XXXX", "Str_s", "c", "Field_i", "40"));
+ indexDoc(sdoc("id", "7", "Text_t", "XXXX XXXX", "Str_s", "c", "Field_i", "50"));
+ indexDoc(sdoc("id", "8", "Text_t", "XXXX XXXX", "Str_s", "c", "Field_i", "60"));
+ commit();
- tuple = tuples.get(0);
- assert(tuple.getLong("myId") == 3);
- assert(tuple.getLong("myInt") == 20);
- assert(tuple.get("myString").equals("a"));
+ SolrParams sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
+ "stmt", "select id, Field_i, Str_s from collection1 where Text_t='XXXX' order by Field_i desc");
- tuple = tuples.get(1);
- assert(tuple.getLong("myId") == 2);
- assert(tuple.getLong("myInt") == 8);
- assert(tuple.get("myString").equals("b"));
+ SolrStream solrStream = new SolrStream(jetty.url, sParams);
+ List<Tuple> tuples = getTuples(solrStream);
- tuple = tuples.get(2);
- assert(tuple.getLong("myId") == 1);
- assert(tuple.getLong("myInt") == 7);
- assert(tuple.get("myString").equals("a"));
+ assert (tuples.size() == 8);
- // SOLR-8845 - Test to make sure that 1 = 0 works for things like Spark SQL
- sParams = mapParams(CommonParams.QT, "/sql",
- "stmt", "select id, field_i, str_s from collection1 where 1 = 0");
+ Tuple tuple;
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
+ tuple = tuples.get(0);
+ assert (tuple.getLong("id") == 8);
+ assert (tuple.getLong("Field_i") == 60);
+ assert (tuple.get("Str_s").equals("c"));
+
+ tuple = tuples.get(1);
+ assert (tuple.getLong("id") == 7);
+ assert (tuple.getLong("Field_i") == 50);
+ assert (tuple.get("Str_s").equals("c"));
+
+ tuple = tuples.get(2);
+ assert (tuple.getLong("id") == 6);
+ assert (tuple.getLong("Field_i") == 40);
+ assert (tuple.get("Str_s").equals("c"));
+
+ tuple = tuples.get(3);
+ assert (tuple.getLong("id") == 5);
+ assert (tuple.getLong("Field_i") == 30);
+ assert (tuple.get("Str_s").equals("c"));
+
+ tuple = tuples.get(4);
+ assert (tuple.getLong("id") == 3);
+ assert (tuple.getLong("Field_i") == 20);
+ assert (tuple.get("Str_s").equals("a"));
+
+ tuple = tuples.get(5);
+ assert (tuple.getLong("id") == 4);
+ assert (tuple.getLong("Field_i") == 11);
+ assert (tuple.get("Str_s").equals("b"));
+
+ tuple = tuples.get(6);
+ assert (tuple.getLong("id") == 2);
+ assert (tuple.getLong("Field_i") == 8);
+ assert (tuple.get("Str_s").equals("b"));
+
+ tuple = tuples.get(7);
+ assert (tuple.getLong("id") == 1);
+ assert (tuple.getLong("Field_i") == 7);
+ assert (tuple.get("Str_s").equals("a"));
+
+ // TODO get sum(Field_i) as named one
+ sParams = mapParams(CommonParams.QT, "/sql",
+ "stmt",
+ "select Str_s, sum(Field_i) from collection1 where id='(1 8)' group by Str_s having (sum(Field_i) = 7 OR sum(Field_i) = 60) order by sum(Field_i) desc");
- assertEquals(0, tuples.size());
- } finally {
- delete();
- }
- }
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuples = getTuples(solrStream);
+
+ assert (tuples.size() == 2);
+
+ tuple = tuples.get(0);
+ assert (tuple.get("Str_s").equals("c"));
+ assert (tuple.getDouble("EXPR$1") == 60);
+
+ tuple = tuples.get(1);
+ assert (tuple.get("Str_s").equals("a"));
+ assert (tuple.getDouble("EXPR$1") == 7);
+
+ sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
+ "stmt",
+ "select Str_s, sum(Field_i) from collection1 where id='(1 8)' group by Str_s having (sum(Field_i) = 7 OR sum(Field_i) = 60) order by sum(Field_i) desc");
+
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuples = getTuples(solrStream);
+
+ assert (tuples.size() == 2);
+
+ tuple = tuples.get(0);
+ assert (tuple.get("Str_s").equals("c"));
+ assert (tuple.getDouble("EXPR$1") == 60);
+
+ tuple = tuples.get(1);
+ assert (tuple.get("Str_s").equals("a"));
+ assert (tuple.getDouble("EXPR$1") == 7);
- private void testWhere() throws Exception {
- try {
- CloudJettyRunner jetty = this.cloudJettys.get(0);
-
- del("*:*");
-
- commit();
-
- indexDoc(sdoc("id", "1", "text", "XXXX XXXX", "str_s", "a", "field_i", "7"));
- indexDoc(sdoc("id", "2", "text", "XXXX XXXX", "str_s", "b", "field_i", "8"));
- indexDoc(sdoc("id", "3", "text", "XXXX XXXX", "str_s", "a", "field_i", "20"));
- indexDoc(sdoc("id", "4", "text", "XXXX XXXX", "str_s", "b", "field_i", "11"));
- indexDoc(sdoc("id", "5", "text", "XXXX XXXX", "str_s", "c", "field_i", "30"));
- indexDoc(sdoc("id", "6", "text", "XXXX XXXX", "str_s", "c", "field_i", "40"));
- indexDoc(sdoc("id", "7", "text", "XXXX XXXX", "str_s", "c", "field_i", "50"));
- indexDoc(sdoc("id", "8", "text", "XXXX XXXX", "str_s", "c", "field_i", "60"));
- commit();
-
- // Equals
- SolrParams sParams = mapParams(CommonParams.QT, "/sql",
- "stmt", "select id from collection1 where id = 1 order by id asc");
-
- SolrStream solrStream = new SolrStream(jetty.url, sParams);
- List<Tuple> tuples = getTuples(solrStream);
-
- assertEquals(1, tuples.size());
-
- Tuple tuple = tuples.get(0);
- assertEquals("1", tuple.get("id"));
-
- // Not Equals <>
- sParams = mapParams(CommonParams.QT, "/sql",
- "stmt", "select id from collection1 where id <> 1 order by id asc limit 10");
-
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
-
- assertEquals(7, tuples.size());
-
- tuple = tuples.get(0);
- assertEquals("2", tuple.get("id"));
- tuple = tuples.get(1);
- assertEquals("3", tuple.get("id"));
- tuple = tuples.get(2);
- assertEquals("4", tuple.get("id"));
- tuple = tuples.get(3);
- assertEquals("5", tuple.get("id"));
- tuple = tuples.get(4);
- assertEquals("6", tuple.get("id"));
- tuple = tuples.get(5);
- assertEquals("7", tuple.get("id"));
- tuple = tuples.get(6);
- assertEquals("8", tuple.get("id"));
-
- // TODO requires different Calcite SQL conformance level
- // Not Equals !=
-// sParams = mapParams(CommonParams.QT, "/sql",
-// "stmt", "select id from collection1 where id != 1 order by id asc limit 10");
-//
-// solrStream = new SolrStream(jetty.url, sParams);
-// tuples = getTuples(solrStream);
-//
-// assertEquals(7, tuples.size());
-//
-// tuple = tuples.get(0);
-// assertEquals(2L, tuple.get("id"));
-// tuple = tuples.get(1);
-// assertEquals(3L, tuple.get("id"));
-// tuple = tuples.get(2);
-// assertEquals(4L, tuple.get("id"));
-// tuple = tuples.get(3);
-// assertEquals(5L, tuple.get("id"));
-// tuple = tuples.get(4);
-// assertEquals(6L, tuple.get("id"));
-// tuple = tuples.get(5);
-// assertEquals(7L, tuple.get("id"));
-// tuple = tuples.get(6);
-// assertEquals(8L, tuple.get("id"));
-
- // Less than
- sParams = mapParams(CommonParams.QT, "/sql",
- "stmt", "select id from collection1 where id < 2 order by id asc");
-
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
-
- assertEquals(1, tuples.size());
-
- tuple = tuples.get(0);
- assertEquals("1", tuple.get("id"));
-
- // Less than equal
- sParams = mapParams(CommonParams.QT, "/sql",
- "stmt", "select id from collection1 where id <= 2 order by id asc");
-
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
-
- assertEquals(2, tuples.size());
-
- tuple = tuples.get(0);
- assertEquals("1", tuple.get("id"));
- tuple = tuples.get(1);
- assertEquals("2", tuple.get("id"));
-
- // Greater than
- sParams = mapParams(CommonParams.QT, "/sql",
- "stmt", "select id from collection1 where id > 7 order by id asc");
-
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
-
- assertEquals(1, tuples.size());
-
- tuple = tuples.get(0);
- assertEquals("8", tuple.get("id"));
-
- // Greater than equal
- sParams = mapParams(CommonParams.QT, "/sql",
- "stmt", "select id from collection1 where id >= 7 order by id asc");
-
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
-
- assertEquals(2, tuples.size());
-
- tuple = tuples.get(0);
- assertEquals("7", tuple.get("id"));
- tuple = tuples.get(1);
- assertEquals("8", tuple.get("id"));
-
- } finally {
- delete();
- }
}
- private void testMixedCaseFields() throws Exception {
- try {
+ private void testSQLException() throws Exception {
- CloudJettyRunner jetty = this.cloudJettys.get(0);
+ CloudJettyRunner jetty = this.cloudJettys.get(0);
- del("*:*");
+ del("*:*");
- commit();
+ commit();
- indexDoc(sdoc("id", "1", "Text_t", "XXXX XXXX", "Str_s", "a", "Field_i", "7"));
- indexDoc(sdoc("id", "2", "Text_t", "XXXX XXXX", "Str_s", "b", "Field_i", "8"));
- indexDoc(sdoc("id", "3", "Text_t", "XXXX XXXX", "Str_s", "a", "Field_i", "20"));
- indexDoc(sdoc("id", "4", "Text_t", "XXXX XXXX", "Str_s", "b", "Field_i", "11"));
- indexDoc(sdoc("id", "5", "Text_t", "XXXX XXXX", "Str_s", "c", "Field_i", "30"));
- indexDoc(sdoc("id", "6", "Text_t", "XXXX XXXX", "Str_s", "c", "Field_i", "40"));
- indexDoc(sdoc("id", "7", "Text_t", "XXXX XXXX", "Str_s", "c", "Field_i", "50"));
- indexDoc(sdoc("id", "8", "Text_t", "XXXX XXXX", "Str_s", "c", "Field_i", "60"));
- commit();
+ indexDoc(sdoc("id", "1", "text", "XXXX XXXX", "str_s", "a", "field_i", "7"));
+ indexDoc(sdoc("id", "2", "text", "XXXX XXXX", "str_s", "b", "field_i", "8"));
+ indexDoc(sdoc("id", "3", "text", "XXXX XXXX", "str_s", "a", "field_i", "20"));
+ indexDoc(sdoc("id", "4", "text", "XXXX XXXX", "str_s", "b", "field_i", "11"));
+ indexDoc(sdoc("id", "5", "text", "XXXX XXXX", "str_s", "c", "field_i", "30"));
+ indexDoc(sdoc("id", "6", "text", "XXXX XXXX", "str_s", "c", "field_i", "40"));
+ indexDoc(sdoc("id", "7", "text", "XXXX XXXX", "str_s", "c", "field_i", "50"));
+ indexDoc(sdoc("id", "8", "text", "XXXX XXXX", "str_s", "c", "field_i", "60"));
+ commit();
- SolrParams sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
- "stmt", "select id, Field_i, Str_s from collection1 where Text_t='XXXX' order by Field_i desc");
+ SolrParams sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
+ "stmt", "select id, str_s from collection1 where text='XXXX' order by field_iff desc");
- SolrStream solrStream = new SolrStream(jetty.url, sParams);
- List<Tuple> tuples = getTuples(solrStream);
+ SolrStream solrStream = new SolrStream(jetty.url, sParams);
+ Tuple tuple = getTuple(new ExceptionStream(solrStream));
+ assert (tuple.EOF);
+ assert (tuple.EXCEPTION);
+ assert (tuple.getException().contains("Column 'field_iff' not found in any table"));
- assert(tuples.size() == 8);
+ sParams = mapParams(CommonParams.QT, "/sql",
+ "stmt", "select id, field_iff, str_s from collection1 where text='XXXX' order by field_iff desc");
- Tuple tuple;
-
- tuple = tuples.get(0);
- assert(tuple.getLong("id") == 8);
- assert(tuple.getLong("Field_i") == 60);
- assert(tuple.get("Str_s").equals("c"));
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuple = getTuple(new ExceptionStream(solrStream));
+ assert (tuple.EOF);
+ assert (tuple.EXCEPTION);
- tuple = tuples.get(1);
- assert(tuple.getLong("id") == 7);
- assert(tuple.getLong("Field_i") == 50);
- assert(tuple.get("Str_s").equals("c"));
+ assert (tuple.getException().contains("Column 'field_iff' not found in any table"));
- tuple = tuples.get(2);
- assert(tuple.getLong("id") == 6);
- assert(tuple.getLong("Field_i") == 40);
- assert(tuple.get("Str_s").equals("c"));
+ sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
+ "stmt",
+ "select str_s, count(*), sum(field_iff), min(field_i), max(field_i), cast(avg(1.0 * field_i) as float) from collection1 where text='XXXX' group by str_s having ((sum(field_iff) = 19) AND (min(field_i) = 8))");
- tuple = tuples.get(3);
- assert(tuple.getLong("id") == 5);
- assert(tuple.getLong("Field_i") == 30);
- assert(tuple.get("Str_s").equals("c"));
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuple = getTuple(new ExceptionStream(solrStream));
+ assert (tuple.EOF);
+ assert (tuple.EXCEPTION);
+ assert (tuple.getException().contains("Column 'field_iff' not found in any table"));
- tuple = tuples.get(4);
- assert(tuple.getLong("id") == 3);
- assert(tuple.getLong("Field_i") == 20);
- assert(tuple.get("Str_s").equals("a"));
+ sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
+ "stmt",
+ "select str_s, count(*), blah(field_i), min(field_i), max(field_i), cast(avg(1.0 * field_i) as float) from collection1 where text='XXXX' group by str_s having ((sum(field_i) = 19) AND (min(field_i) = 8))");
- tuple = tuples.get(5);
- assert(tuple.getLong("id") == 4);
- assert(tuple.getLong("Field_i") == 11);
- assert(tuple.get("Str_s").equals("b"));
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuple = getTuple(new ExceptionStream(solrStream));
+ assert (tuple.EOF);
+ assert (tuple.EXCEPTION);
+ assert (tuple.getException().contains("No match found for function signature blah"));
- tuple = tuples.get(6);
- assert(tuple.getLong("id") == 2);
- assert(tuple.getLong("Field_i") == 8);
- assert(tuple.get("Str_s").equals("b"));
+ }
- tuple = tuples.get(7);
- assert(tuple.getLong("id") == 1);
- assert(tuple.getLong("Field_i") == 7);
- assert(tuple.get("Str_s").equals("a"));
+ private void testBasicGrouping() throws Exception {
- // TODO get sum(Field_i) as named one
- sParams = mapParams(CommonParams.QT, "/sql",
- "stmt", "select Str_s, sum(Field_i) from collection1 where id='(1 8)' group by Str_s having (sum(Field_i) = 7 OR sum(Field_i) = 60) order by sum(Field_i) desc");
+ CloudJettyRunner jetty = this.cloudJettys.get(0);
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
+ del("*:*");
- assert(tuples.size() == 2);
+ commit();
- tuple = tuples.get(0);
- assert(tuple.get("Str_s").equals("c"));
- assert(tuple.getDouble("EXPR$1") == 60);
+ indexr("id", "1", "text", "XXXX XXXX", "str_s", "a", "field_i", "7");
+ indexr("id", "2", "text", "XXXX XXXX", "str_s", "b", "field_i", "8");
+ indexr("id", "3", "text", "XXXX XXXX", "str_s", "a", "field_i", "20");
+ indexr("id", "4", "text", "XXXX XXXX", "str_s", "b", "field_i", "11");
+ indexr("id", "5", "text", "XXXX XXXX", "str_s", "c", "field_i", "30");
+ indexr("id", "6", "text", "XXXX XXXX", "str_s", "c", "field_i", "40");
+ indexr("id", "7", "text", "XXXX XXXX", "str_s", "c", "field_i", "50");
+ indexr("id", "8", "text", "XXXX XXXX", "str_s", "c", "field_i", "60");
+ indexr("id", "9", "text", "XXXX XXXY", "str_s", "d", "field_i", "70");
+ commit();
- tuple = tuples.get(1);
- assert(tuple.get("Str_s").equals("a"));
- assert(tuple.getDouble("EXPR$1") == 7);
+ SolrParams sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
+ "stmt",
+ "select str_s, count(*), sum(field_i), min(field_i), max(field_i), avg(field_i) from collection1 where text='XXXX' group by str_s order by sum(field_i) asc limit 2");
- sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
- "stmt", "select Str_s, sum(Field_i) from collection1 where id='(1 8)' group by Str_s having (sum(Field_i) = 7 OR sum(Field_i) = 60) order by sum(Field_i) desc");
+ SolrStream solrStream = new SolrStream(jetty.url, sParams);
+ List<Tuple> tuples = getTuples(solrStream);
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
+ // Only two results because of the limit.
+ assert (tuples.size() == 2);
+ Tuple tuple;
- assert(tuples.size() == 2);
+ tuple = tuples.get(0);
+ assert (tuple.get("str_s").equals("b"));
+ assert (tuple.getDouble("EXPR$1") == 2); // count(*)
+ assert (tuple.getDouble("EXPR$2") == 19); // sum(field_i)
+ assert (tuple.getDouble("EXPR$3") == 8); // min(field_i)
+ assert (tuple.getDouble("EXPR$4") == 11); // max(field_i)
+ assert (tuple.getDouble("EXPR$5") == 10); // avg(field_i)
+
+ tuple = tuples.get(1);
+ assert (tuple.get("str_s").equals("a"));
+ assert (tuple.getDouble("EXPR$1") == 2); // count(*)
+ assert (tuple.getDouble("EXPR$2") == 27); // sum(field_i)
+ assert (tuple.getDouble("EXPR$3") == 7); // min(field_i)
+ assert (tuple.getDouble("EXPR$4") == 20); // max(field_i)
+ assert (tuple.getDouble("EXPR$5") == 14); // avg(field_i)
+
+ sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
+ "stmt",
+ "select str_s, count(*), sum(field_i), min(field_i), max(field_i), cast(avg(1.0 * field_i) as float) as blah from collection1 where text='XXXX' group by str_s order by sum(field_i) asc limit 2");
- tuple = tuples.get(0);
- assert(tuple.get("Str_s").equals("c"));
- assert(tuple.getDouble("EXPR$1") == 60);
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuples = getTuples(solrStream);
- tuple = tuples.get(1);
- assert(tuple.get("Str_s").equals("a"));
- assert(tuple.getDouble("EXPR$1") == 7);
- } finally {
- delete();
- }
- }
+ // Only two results because of the limit.
+ assert (tuples.size() == 2);
- private void testSQLException() throws Exception {
- try {
+ tuple = tuples.get(0);
+ assert (tuple.get("str_s").equals("b"));
+ assert (tuple.getDouble("EXPR$1") == 2); // count(*)
+ assert (tuple.getDouble("EXPR$2") == 19); // sum(field_i)
+ assert (tuple.getDouble("EXPR$3") == 8); // min(field_i)
+ assert (tuple.getDouble("EXPR$4") == 11); // max(field_i)
+ assert (tuple.getDouble("blah") == 9.5); // avg(field_i)
+
+ tuple = tuples.get(1);
+ assert (tuple.get("str_s").equals("a"));
+ assert (tuple.getDouble("EXPR$1") == 2); // count(*)
+ assert (tuple.getDouble("EXPR$2") == 27); // sum(field_i)
+ assert (tuple.getDouble("EXPR$3") == 7); // min(field_i)
+ assert (tuple.getDouble("EXPR$4") == 20); // max(field_i)
+ assert (tuple.getDouble("blah") == 13.5); // avg(field_i)
+
+ sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
+ "stmt",
+ "select str_s as myString, count(*), sum(field_i) as mySum, min(field_i), max(field_i), avg(field_i) from collection1 where text='XXXX' group by str_s order by mySum asc limit 2");
- CloudJettyRunner jetty = this.cloudJettys.get(0);
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuples = getTuples(solrStream);
- del("*:*");
+ // Only two results because of the limit.
+ assert (tuples.size() == 2);
- commit();
+ tuple = tuples.get(0);
+ assert (tuple.get("myString").equals("b"));
+ assert (tuple.getDouble("EXPR$1") == 2); // count(*)
+ assert (tuple.getDouble("mySum") == 19);
+ assert (tuple.getDouble("EXPR$3") == 8); // min(field_i)
+ assert (tuple.getDouble("EXPR$4") == 11); // max(field_i)
+ assert (tuple.getDouble("EXPR$5") == 10); // avg(field_i)
+
+ tuple = tuples.get(1);
+ assert (tuple.get("myString").equals("a"));
+ assert (tuple.getDouble("EXPR$1") == 2); // count(*)
+ assert (tuple.getDouble("mySum") == 27);
+ assert (tuple.getDouble("EXPR$3") == 7); // min(field_i)
+ assert (tuple.getDouble("EXPR$4") == 20); // max(field_i)
+ assert (tuple.getDouble("EXPR$5") == 14); // avg(field_i)
+
+ sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
+ "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), "
+ + "avg(field_i) from collection1 where (text='XXXX' AND NOT ((text='XXXY') AND (text='XXXY' OR text='XXXY'))) "
+ + "group by str_s order by str_s desc");
- indexDoc(sdoc("id", "1", "text", "XXXX XXXX", "str_s", "a", "field_i", "7"));
- indexDoc(sdoc("id", "2", "text", "XXXX XXXX", "str_s", "b", "field_i", "8"));
- indexDoc(sdoc("id", "3", "text", "XXXX XXXX", "str_s", "a", "field_i", "20"));
- indexDoc(sdoc("id", "4", "text", "XXXX XXXX", "str_s", "b", "field_i", "11"));
- indexDoc(sdoc("id", "5", "text", "XXXX XXXX", "str_s", "c", "field_i", "30"));
- indexDoc(sdoc("id", "6", "text", "XXXX XXXX", "str_s", "c", "field_i", "40"));
- indexDoc(sdoc("id", "7", "text", "XXXX XXXX", "str_s", "c", "field_i", "50"));
- indexDoc(sdoc("id", "8", "text", "XXXX XXXX", "str_s", "c", "field_i", "60"));
- commit();
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuples = getTuples(solrStream);
- SolrParams sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
- "stmt", "select id, str_s from collection1 where text='XXXX' order by field_iff desc");
+ // The sort by and order by match and no limit is applied. All the Tuples should be returned in
+ // this scenario.
- SolrStream solrStream = new SolrStream(jetty.url, sParams);
- Tuple tuple = getTuple(new ExceptionStream(solrStream));
- assert(tuple.EOF);
- assert(tuple.EXCEPTION);
- assert(tuple.getException().contains("Column 'field_iff' not found in any table"));
+ assert (tuples.size() == 3);
- sParams = mapParams(CommonParams.QT, "/sql",
- "stmt", "select id, field_iff, str_s from collection1 where text='XXXX' order by field_iff desc");
+ tuple = tuples.get(0);
+ assert (tuple.get("str_s").equals("c"));
+ assert (tuple.getDouble("EXPR$1") == 4); // count(*)
+ assert (tuple.getDouble("EXPR$2") == 180); // sum(field_i)
+ assert (tuple.getDouble("EXPR$3") == 30); // min(field_i)
+ assert (tuple.getDouble("EXPR$4") == 60); // max(field_i)
+ assert (tuple.getDouble("EXPR$5") == 45); // avg(field_i)
+
+ tuple = tuples.get(1);
+ assert (tuple.get("str_s").equals("b"));
+ assert (tuple.getDouble("EXPR$1") == 2); // count(*)
+ assert (tuple.getDouble("EXPR$2") == 19); // sum(field_i)
+ assert (tuple.getDouble("EXPR$3") == 8); // min(field_i)
+ assert (tuple.getDouble("EXPR$4") == 11); // max(field_i)
+ assert (tuple.getDouble("EXPR$5") == 10D); // avg(field_i)
+
+ tuple = tuples.get(2);
+ assert (tuple.get("str_s").equals("a"));
+ assert (tuple.getDouble("EXPR$1") == 2); // count(*)
+ assert (tuple.getDouble("EXPR$2") == 27); // sum(field_i)
+ assert (tuple.getDouble("EXPR$3") == 7); // min(field_i)
+ assert (tuple.getDouble("EXPR$4") == 20); // max(field_i)
+
+ assert (tuple.getDouble("EXPR$5") == 14); // avg(field_i)
+
+ sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
+ "stmt", "select str_s as myString, count(*) as myCount, sum(field_i) as mySum, min(field_i) as myMin, "
+ + "max(field_i) as myMax, avg(field_i) as myAvg from collection1 "
+ + "where (text='XXXX' AND NOT (text='XXXY')) group by str_s order by str_s desc");
- solrStream = new SolrStream(jetty.url, sParams);
- tuple = getTuple(new ExceptionStream(solrStream));
- assert(tuple.EOF);
- assert(tuple.EXCEPTION);
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuples = getTuples(solrStream);
- assert(tuple.getException().contains("Column 'field_iff' not found in any table"));
+ // The sort by and order by match and no limit is applied. All the Tuples should be returned in
+ // this scenario.
- sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
- "stmt", "select str_s, count(*), sum(field_iff), min(field_i), max(field_i), cast(avg(1.0 * field_i) as float) from collection1 where text='XXXX' group by str_s having ((sum(field_iff) = 19) AND (min(field_i) = 8))");
+ assert (tuples.size() == 3);
- solrStream = new SolrStream(jetty.url, sParams);
- tuple = getTuple(new ExceptionStream(solrStream));
- assert(tuple.EOF);
- assert(tuple.EXCEPTION);
- assert(tuple.getException().contains("Column 'field_iff' not found in any table"));
+ tuple = tuples.get(0);
+ assert (tuple.get("myString").equals("c"));
+ assert (tuple.getDouble("myCount") == 4);
+ assert (tuple.getDouble("mySum") == 180);
+ assert (tuple.getDouble("myMin") == 30);
+ assert (tuple.getDouble("myMax") == 60);
+ assert (tuple.getDouble("myAvg") == 45);
+
+ tuple = tuples.get(1);
+ assert (tuple.get("myString").equals("b"));
+ assert (tuple.getDouble("myCount") == 2);
+ assert (tuple.getDouble("mySum") == 19);
+ assert (tuple.getDouble("myMin") == 8);
+ assert (tuple.getDouble("myMax") == 11);
+ assert (tuple.getDouble("myAvg") == 10);
+
+ tuple = tuples.get(2);
+ assert (tuple.get("myString").equals("a"));
+ assert (tuple.getDouble("myCount") == 2);
+ assert (tuple.getDouble("mySum") == 27);
+ assert (tuple.getDouble("myMin") == 7);
+ assert (tuple.getDouble("myMax") == 20);
+ assert (tuple.getDouble("myAvg") == 14);
+
+ sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
+ "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), avg(field_i) " +
+ "from collection1 where text='XXXX' group by str_s having sum(field_i) = 19");
- sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
- "stmt", "select str_s, count(*), blah(field_i), min(field_i), max(field_i), cast(avg(1.0 * field_i) as float) from collection1 where text='XXXX' group by str_s having ((sum(field_i) = 19) AND (min(field_i) = 8))");
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuples = getTuples(solrStream);
- solrStream = new SolrStream(jetty.url, sParams);
- tuple = getTuple(new ExceptionStream(solrStream));
- assert(tuple.EOF);
- assert(tuple.EXCEPTION);
- assert(tuple.getException().contains("No match found for function signature blah"));
- } finally {
- delete();
- }
- }
+ assert (tuples.size() == 1);
- private void testBasicGrouping() throws Exception {
- try {
-
- CloudJettyRunner jetty = this.cloudJettys.get(0);
-
- del("*:*");
-
- commit();
-
- indexr("id", "1", "text", "XXXX XXXX", "str_s", "a", "field_i", "7");
- indexr("id", "2", "text", "XXXX XXXX", "str_s", "b", "field_i", "8");
- indexr("id", "3", "text", "XXXX XXXX", "str_s", "a", "field_i", "20");
- indexr("id", "4", "text", "XXXX XXXX", "str_s", "b", "field_i", "11");
- indexr("id", "5", "text", "XXXX XXXX", "str_s", "c", "field_i", "30");
- indexr("id", "6", "text", "XXXX XXXX", "str_s", "c", "field_i", "40");
- indexr("id", "7", "text", "XXXX XXXX", "str_s", "c", "field_i", "50");
- indexr("id", "8", "text", "XXXX XXXX", "str_s", "c", "field_i", "60");
- indexr("id", "9", "text", "XXXX XXXY", "str_s", "d", "field_i", "70");
- commit();
-
- SolrParams sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
- "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), avg(field_i) from collection1 where text='XXXX' group by str_s order by sum(field_i) asc limit 2");
-
- SolrStream solrStream = new SolrStream(jetty.url, sParams);
- List<Tuple> tuples = getTuples(solrStream);
-
- //Only two results because of the limit.
- assert(tuples.size() == 2);
- Tuple tuple;
-
- tuple = tuples.get(0);
- assert(tuple.get("str_s").equals("b"));
- assert(tuple.getDouble("EXPR$1") == 2); //count(*)
- assert(tuple.getDouble("EXPR$2") == 19); //sum(field_i)
- assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
- assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
- assert(tuple.getDouble("EXPR$5") == 10); //avg(field_i)
-
- tuple = tuples.get(1);
- assert(tuple.get("str_s").equals("a"));
- assert(tuple.getDouble("EXPR$1") == 2); //count(*)
- assert(tuple.getDouble("EXPR$2") == 27); //sum(field_i)
- assert(tuple.getDouble("EXPR$3") == 7); //min(field_i)
- assert(tuple.getDouble("EXPR$4") == 20); //max(field_i)
- assert(tuple.getDouble("EXPR$5") == 14); //avg(field_i)
-
-
- sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
- "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), cast(avg(1.0 * field_i) as float) as blah from collection1 where text='XXXX' group by str_s order by sum(field_i) asc limit 2");
-
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
-
- //Only two results because of the limit.
- assert(tuples.size() == 2);
-
- tuple = tuples.get(0);
- assert(tuple.get("str_s").equals("b"));
- assert(tuple.getDouble("EXPR$1") == 2); //count(*)
- assert(tuple.getDouble("EXPR$2") == 19); //sum(field_i)
- assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
- assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
- assert(tuple.getDouble("blah") == 9.5); //avg(field_i)
-
- tuple = tuples.get(1);
- assert(tuple.get("str_s").equals("a"));
- assert(tuple.getDouble("EXPR$1") == 2); //count(*)
- assert(tuple.getDouble("EXPR$2") == 27); //sum(field_i)
- assert(tuple.getDouble("EXPR$3") == 7); //min(field_i)
- assert(tuple.getDouble("EXPR$4") == 20); //max(field_i)
- assert(tuple.getDouble("blah") == 13.5); //avg(field_i)
-
- sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
- "stmt", "select str_s as myString, count(*), sum(field_i) as mySum, min(field_i), max(field_i), avg(field_i) from collection1 where text='XXXX' group by str_s order by mySum asc limit 2");
-
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
-
- //Only two results because of the limit.
- assert(tuples.size() == 2);
-
- tuple = tuples.get(0);
- assert(tuple.get("myString").equals("b"));
- assert(tuple.getDouble("EXPR$1") == 2); //count(*)
- assert(tuple.getDouble("mySum") == 19);
- assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
- assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
- assert(tuple.getDouble("EXPR$5") == 10); //avg(field_i)
-
- tuple = tuples.get(1);
- assert(tuple.get("myString").equals("a"));
- assert(tuple.getDouble("EXPR$1") == 2); //count(*)
- assert(tuple.getDouble("mySum") == 27);
- assert(tuple.getDouble("EXPR$3") == 7); //min(field_i)
- assert(tuple.getDouble("EXPR$4") == 20); //max(field_i)
- assert(tuple.getDouble("EXPR$5") == 14); //avg(field_i)
-
- sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
- "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), "
- + "avg(field_i) from collection1 where (text='XXXX' AND NOT ((text='XXXY') AND (text='XXXY' OR text='XXXY'))) "
- + "group by str_s order by str_s desc");
-
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
-
- //The sort by and order by match and no limit is applied. All the Tuples should be returned in
- //this scenario.
-
- assert(tuples.size() == 3);
-
- tuple = tuples.get(0);
- assert(tuple.get("str_s").equals("c"));
- assert(tuple.getDouble("EXPR$1") == 4); //count(*)
- assert(tuple.getDouble("EXPR$2") == 180); //sum(field_i)
- assert(tuple.getDouble("EXPR$3") == 30); //min(field_i)
- assert(tuple.getDouble("EXPR$4") == 60); //max(field_i)
- assert(tuple.getDouble("EXPR$5") == 45); //avg(field_i)
-
- tuple = tuples.get(1);
- assert(tuple.get("str_s").equals("b"));
- assert(tuple.getDouble("EXPR$1") == 2); //count(*)
- assert(tuple.getDouble("EXPR$2") == 19); //sum(field_i)
- assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
- assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
- assert(tuple.getDouble("EXPR$5") == 10D); //avg(field_i)
-
- tuple = tuples.get(2);
- assert(tuple.get("str_s").equals("a"));
- assert(tuple.getDouble("EXPR$1") == 2); //count(*)
- assert(tuple.getDouble("EXPR$2") == 27); //sum(field_i)
- assert(tuple.getDouble("EXPR$3") == 7); //min(field_i)
- assert(tuple.getDouble("EXPR$4") == 20); //max(field_i)
-
- assert(tuple.getDouble("EXPR$5") == 14); //avg(field_i)
-
- sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
- "stmt", "select str_s as myString, count(*) as myCount, sum(field_i) as mySum, min(field_i) as myMin, "
- + "max(field_i) as myMax, avg(field_i) as myAvg from collection1 "
- + "where (text='XXXX' AND NOT (text='XXXY')) group by str_s order by str_s desc");
-
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
-
- //The sort by and order by match and no limit is applied. All the Tuples should be returned in
- //this scenario.
-
- assert(tuples.size() == 3);
-
- tuple = tuples.get(0);
- assert(tuple.get("myString").equals("c"));
- assert(tuple.getDouble("myCount") == 4);
- assert(tuple.getDouble("mySum") == 180);
- assert(tuple.getDouble("myMin") == 30);
- assert(tuple.getDouble("myMax") == 60);
- assert(tuple.getDouble("myAvg") == 45);
-
- tuple = tuples.get(1);
- assert(tuple.get("myString").equals("b"));
- assert(tuple.getDouble("myCount") == 2);
- assert(tuple.getDouble("mySum") == 19);
- assert(tuple.getDouble("myMin") == 8);
- assert(tuple.getDouble("myMax") == 11);
- assert(tuple.getDouble("myAvg") == 10);
-
- tuple = tuples.get(2);
- assert(tuple.get("myString").equals("a"));
- assert(tuple.getDouble("myCount") == 2);
- assert(tuple.getDouble("mySum") == 27);
- assert(tuple.getDouble("myMin") == 7);
- assert(tuple.getDouble("myMax") == 20);
- assert(tuple.getDouble("myAvg") == 14);
-
- sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
- "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), avg(field_i) " +
- "from collection1 where text='XXXX' group by str_s having sum(field_i) = 19");
-
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
-
- assert(tuples.size() == 1);
-
- tuple = tuples.get(0);
- assert(tuple.get("str_s").equals("b"));
- assert(tuple.getDouble("EXPR$1") == 2); //count(*)
- assert(tuple.getDouble("EXPR$2") == 19); //sum(field_i)
- assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
- assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
- assert(tuple.getDouble("EXPR$5") == 10); //avg(field_i)
-
- sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
- "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), avg(field_i) " +
- "from collection1 where text='XXXX' group by str_s having ((sum(field_i) = 19) AND (min(field_i) = 8))");
-
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
-
- assert(tuples.size() == 1);
-
- tuple = tuples.get(0);
- assert(tuple.get("str_s").equals("b"));
- assert(tuple.getDouble("EXPR$1") == 2); //count(*)
- assert(tuple.getDouble("EXPR$2") == 19); //sum(field_i)
- assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
- assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
- assert(tuple.getDouble("EXPR$5") == 10); //avg(field_i)
-
- sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
- "stmt", "select str_s, count(*), sum(field_i) as mySum, min(field_i), max(field_i), " +
- "avg(field_i) from collection1 where text='XXXX' group by str_s " +
- "having ((sum(field_i) = 19) AND (min(field_i) = 8))");
-
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
-
- assert(tuples.size() == 1);
-
- tuple = tuples.get(0);
- assert(tuple.get("str_s").equals("b"));
- assert(tuple.getDouble("EXPR$1") == 2); //count(*)
- assert(tuple.getDouble("mySum") == 19);
- assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
- assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
- assert(tuple.getDouble("EXPR$5") == 10); //avg(field_i)
-
- sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
- "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), " +
- "avg(field_i) from collection1 where text='XXXX' group by str_s " +
- "having ((sum(field_i) = 19) AND (min(field_i) = 100))");
-
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
-
- assert(tuples.size() == 0);
- } finally {
- delete();
- }
- }
+ tuple = tuples.get(0);
+ assert (tuple.get("str_s").equals("b"));
+ assert (tuple.getDouble("EXPR$1") == 2); // count(*)
+ assert (tuple.getDouble("EXPR$2") == 19); // sum(field_i)
+ assert (tuple.getDouble("EXPR$3") == 8); // min(field_i)
+ assert (tuple.getDouble("EXPR$4") == 11); // max(field_i)
+ assert (tuple.getDouble("EXPR$5") == 10); // avg(field_i)
+ sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
+ "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), avg(field_i) " +
+ "from collection1 where text='XXXX' group by str_s having ((sum(field_i) = 19) AND (min(field_i) = 8))");
- private void testBasicGroupingTint() throws Exception {
- try {
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuples = getTuples(solrStream);
+
+ assert (tuples.size() == 1);
+
+ tuple = tuples.get(0);
+ assert (tuple.get("str_s").equals("b"));
+ assert (tuple.getDouble("EXPR$1") == 2); // count(*)
+ assert (tuple.getDouble("EXPR$2") == 19); // sum(field_i)
+ assert (tuple.getDouble("EXPR$3") == 8); // min(field_i)
+ assert (tuple.getDouble("EXPR$4") == 11); // max(field_i)
+ assert (tuple.getDouble("EXPR$5") == 10); // avg(field_i)
+
+ sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
+ "stmt", "select str_s, count(*), sum(field_i) as mySum, min(field_i), max(field_i), " +
+ "avg(field_i) from collection1 where text='XXXX' group by str_s " +
+ "having ((sum(field_i) = 19) AND (min(field_i) = 8))");
+
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuples = getTuples(solrStream);
+
+ assert (tuples.size() == 1);
- CloudJettyRunner jetty = this.cloudJettys.get(0);
+ tuple = tuples.get(0);
+ assert (tuple.get("str_s").equals("b"));
+ assert (tuple.getDouble("EXPR$1") == 2); // count(*)
+ assert (tuple.getDouble("mySum") == 19);
+ assert (tuple.getDouble("EXPR$3") == 8); // min(field_i)
+ assert (tuple.getDouble("EXPR$4") == 11); // max(field_i)
+ assert (tuple.getDouble("EXPR$5") == 10); // avg(field_i)
+
+ sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
+ "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), " +
+ "avg(field_i) from collection1 where text='XXXX' group by str_s " +
+ "having ((sum(field_i) = 19) AND (min(field_i) = 100))");
- del("*:*");
+ solrStream = new SolrStream(jetty.url, sParams);
+ tuples = getTuples(solrStream);
- commit();
+ assert (tuples.size() == 0);
- indexr("id", "1", "text", "XXXX XXXX", "str_s", "a", "field_ti", "7");
- indexr("id", "2", "text", "XXXX XXXX", "str_s", "b", "field_ti", "8");
- indexr("id", "3", "text", "XXXX XXXX", "str_s", "a", "field_ti", "20");
- indexr("id", "4", "text", "XXXX XXXX", "str_s", "b", "field_ti", "11");
- indexr("id", "5", "text", "XXXX XXXX", "str_s", "c", "field_ti", "30");
- indexr("id", "6", "text", "XXXX XXXX", "str_s", "c", "field_ti", "40");
- indexr("id", "7", "text", "XXXX XXXX", "str_s", "c", "field_ti", "50");
- indexr("id", "8", "text", "XXXX XXXX", "str_s", "c", "field_ti", "60");
- indexr("id", "9", "text", "XXXX XXXY", "str_s", "d", "field_ti", "70");
- commit();
+ }
- SolrParams sParams = mapParams(CommonParams.QT, "/sql",
- "stmt", "select str_s, count(*), sum(field_ti), min(field_ti), max(field_ti), avg(field_ti) from collection1 where text='XXXX' group by str_s order by sum(field_ti) asc limit 2");
+ private void testBasicGroupingTint() throws Exception {
- SolrStream solrStream = new SolrStream(jetty.url, sParams);
- List<Tuple> tuples = getTuples(solrStream);
+ CloudJettyRunner jetty = this.cloudJettys.get(0);
- //Only two results because of the limit.
- assert(tuples.size() == 2);
- Tuple tuple;
+ del("*:*");
- tuple = tuples.get(0);
- assert(tuple.get("str_s").equals("b"));
- assert(tuple.getDouble("EXPR$1") == 2); //count(*)
- assert(tuple.getDouble("EXPR$2") == 19); //sum(field_i)
- assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
- assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
- assert(tuple.getDouble("EXPR$5") == 10); //avg(field_i)
+ commit();
- tuple = tuples.get(1);
- assert(tuple.get("str_s").equals("a"));
- assert(tuple.getDouble("EXPR$1") == 2); //count(*)
- assert(tuple.getDouble("EXPR$2") == 27); //sum(field_i)
- assert(tuple.getDouble("EXPR$3") == 7); //min(field_i)
- assert(tuple.getDouble("EXPR$4") == 20); //max(field_i)
- assert(tuple.getDouble("EXPR$5") == 14); //avg(field_i)
+ indexr("id", "1", "text", "XXXX XXXX", "str_s", "a", "field_ti", "7");
+ indexr("id", "2", "text", "XXXX XXXX", "str_s", "b", "field_ti", "8");
+ indexr("id", "3", "text", "XXXX XXXX", "str_s", "a", "field_ti", "20");
+ indexr("id", "4", "text", "XXXX XXXX", "str_s", "b", "field_ti", "11");
+ indexr("id", "5", "text", "XXXX XXXX", "str_s", "c", "field_ti", "30");
+ indexr("id", "6", "text", "XXXX XXXX", "str_s", "c", "field_ti", "40");
+ indexr("id", "7", "text", "XXXX XXXX", "str_s", "c", "field_ti", "50");
+ indexr("id", "8", "text", "XXXX XXXX", "str_s", "c", "field_ti", "60");
+ indexr("id", "9", "text", "XXXX XXXY", "str_s", "d", "field_ti", "70");
+ commit();
+ SolrParams sParams = mapParams(CommonParams.QT, "/sql",
+ "stmt",
+ "select str_s, count(*), sum(field_ti), min(field_ti), max(field_ti), avg(field_ti) from collection1 where text='XXXX' group by str_s order by sum(field_ti) asc limit 2");
+ SolrStream solrStream = new SolrStream(jetty.url, sParams);
+ List<Tuple> tuples = getTuples(solrStream);
+
+ // Only two results because of the limit.
+ assert (tuples.size() == 2);
+ Tuple tuple;
+
+ tuple = tuples.get(0);
+ assert (tuple.get("str_s").equals("b"));
+ assert (tuple.getDouble("EXPR$1") == 2); // count(*)
+ assert (tuple.getDouble("EXPR$2") == 19); // sum(field_i)
+ assert (tuple.getDouble("EXPR$3") == 8); // min(field_i)
+ assert (tuple.getDouble("EXPR$4") == 11); // max(field_i)
+ assert (tuple.getDouble("EXPR$5") == 10); // avg(field_i)
+
+ tuple = tuples.get(1);
+ assert (tuple.get("str_s").equals("a"));
+ assert (tuple.getDouble("EXPR$1") == 2); // count(*)
+ assert (tuple.getDouble("EXPR$2") == 27); // sum(field_i)
+ assert (tuple.getDouble("EXPR$3") == 7); // min(field_i)
+ assert (tuple.getDouble("EXPR$4") == 20); // max(field_i)
+ assert (tuple.getDouble("EXPR$5") == 14); // avg(field_i)
- } finally {
- delete();
- }
}
private void testBasicGroupingIntLongPoints() throws Exception {
- try {
-
- Random random = random();
- int r = random.nextInt(2);
- String[] intOrLong = {"field_i_p", "field_l_p"};
- String[] facetOrMap = {"facet", "map_reduce"};
- String field = intOrLong[r];
- r = random.nextInt(2);
- String mode = facetOrMap[r];
- CloudJettyRunner jetty = this.cloudJettys.get(0);
-
- del("*:*");
-
- commit();
-
- indexr("id", "1", "text", "XXXX XXXX", "str_s", "a", field, "7");
- indexr("id", "2", "text", "XXXX XXXX", "str_s", "b", field, "8");
- indexr("id", "3", "text", "XXXX XXXX", "str_s", "a", field, "20");
- indexr("id", "4", "text", "XXXX XXXX", "str_s", "b", field, "11");
- indexr("id", "5", "text", "XXXX XXXX", "str_s", "c", field, "30");
- indexr("id", "6", "text", "XXXX XXXX", "str_s", "c", field, "40");
- indexr("id", "7", "text", "XXXX XXXX", "str_s", "c", field, "50");
- indexr("id", "8", "text", "XXXX XXXX", "str_s", "c", field, "60");
- indexr("id", "9", "text", "XXXX XXXY", "str_s", "d", field, "70");
- commit();
-
- SolrParams sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", mode,
- "stmt", "select str_s, count(*), sum("+field+"), min("+field+"), max("+field+"), avg("+field+") from collection1 where text='XXXX' group by str_s order by sum("+field+") asc limit 2");
-
- SolrStream solrStream = new SolrStream(jetty.url, sParams);
- List<Tuple> tuples = getTuples(solrStream);
-
- //Only two results because of the limit.
- assert(tuples.size() == 2);
- Tuple tuple;
-
- tuple = tuples.get(0);
- assert(tuple.get("str_s").equals("b"));
- assert(tuple.getDouble("EXPR$1") == 2); //count(*)
- assert(tuple.getDouble("EXPR$2") == 19); //sum(field_i)
- assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
- assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
- assert(tuple.getDouble("EXPR$5") == 10); //avg(field_i)
-
- tuple = tuples.get(1);
- assert(tuple.get("str_s").equals("a"));
- assert(tuple.getDouble("EXPR$1") == 2); //count(*)
- assert(tuple.getDouble("EXPR$2") == 27); //sum(field_i)
- assert(tuple.getDouble("EXPR$3") == 7); //min(field_i)
- assert(tuple.getDouble("EXPR$4") == 20); //max(field_i)
- assert(tuple.getDouble("EXPR$5") == 14); //avg(field_i)
-
-
-
- } finally {
- delete();
- }
- }
- private void testBasicGroupingFloatDoublePoints() throws Exception {
- try {
-
- Random random = random();
- int r = random.nextInt(2);
- String[] intOrLong = {"field_f_p", "field_d_p"};
- String[] facetOrMap = {"facet", "map_reduce"};
- String field = intOrLong[r];
- r = random.nextInt(2);
- String mode = facetOrMap[r];
-
- CloudJettyRunner jetty = this.cloudJettys.get(0);
-
- del("*:*");
-
- commit();
-
- indexr("id", "1", "text", "XXXX XXXX", "str_s", "a", field, "7.0");
- indexr("id", "2", "text", "XXXX XXXX", "str_s", "b", field, "8.0");
- indexr("id", "3", "text", "XXXX XXXX", "str_s", "a", field, "20.0");
- indexr("id", "4", "text", "XXXX XXXX", "str_s", "b", field, "11.0");
- indexr("id", "5", "text", "XXXX XXXX", "str_s", "c", field, "30.0");
- indexr("id", "6", "text", "XXXX XXXX", "str_s", "c", field, "40.0");
- indexr("id", "7", "text", "XXXX XXXX", "str_s", "c", field, "50.0");
- indexr("id", "8", "text", "XXXX XXXX", "str_s", "c", field, "60.0");
- indexr("id", "9", "text", "XXXX XXXY", "str_s", "d", field, "70.0");
- commit();
-
- SolrParams sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", mode,
- "stmt", "select str_s, count(*), sum("+field+"), min("+field+"), max("+field+"), avg("+field+") from collection1 where text='XXXX' group by str_s order by sum("+field+") asc limit 2");
-
- SolrStream solrStream = new SolrStream(jetty.url, sParams);
- List<Tuple> tuples = getTuples(solrStream);
-
- //Only two results because of the limit.
- assert(tuples.size() == 2);
- Tuple tuple;
-
- tuple = tuples.get(0);
- assert(tuple.get("str_s").equals("b"));
- assertEquals(tuple.getDouble("EXPR$1"), 2, 0.0); //count(*)
- assertEquals(tuple.getDouble("EXPR$2"), 19, 0.0); //sum(field_i)
- assertEquals(tuple.getDouble("EXPR$3"), 8, 0.0); //min(field_i)
- assertEquals(tuple.getDouble("EXPR$4"), 11, 0.0); //max(field_i)
- assertEquals(tuple.getDouble("EXPR$5"), 9.5, 0.0); //avg(field_i)
-
- tuple = tuples.get(1);
- assert(tuple.get("str_s").equals("a"));
- assertEquals(tuple.getDouble("EXPR$1"), 2, 0.0); //count(*)
- assertEquals(tuple.getDouble("EXPR$2"), 27, 0.0); //sum(field_i)
- assertEquals(tuple.getDouble("EXPR$3"), 7, 0.0); //min(field_i)
- assertEquals(tuple.getDouble("EXPR$4"), 20, 0.0); //max(field_i)
- assertEquals(tuple.getDouble("EXPR$5"), 13.5, 0.0); //avg(field_i)
-
-
-
- } finally {
- delete();
- }
- }
+ Random random = random();
+ int r = random.nextInt(2);
+ String[] intOrLong = {"field_i_p", "field_l_p"};
+ String[] facetOrMap = {"facet", "map_reduce"};
+ String field = intOrLong[r];
+ r = random.nextInt(2);
+ String mode = facetOrMap[r];
+ CloudJettyRunner jetty = this.cloudJettys.get(0);
- private void testSelectDistinctFacets() throws Exception {
- try {
- CloudJettyRunner jetty = this.cloudJettys.get(0);
+ del("*:*");
- del("*:*");
+ commit();
- commit();
+ indexr("id", "1", "text", "XXXX XXXX", "str_s", "a", field, "7");
+ indexr("id", "2", "text", "XXXX XXXX", "str_s", "b", field, "8");
+ indexr("id", "3", "text", "XXXX XXXX", "str_s", "a", field, "20");
+ indexr("id", "4", "text", "XXXX XXXX", "str_s", "b", field, "11");
+ indexr("id", "5", "text", "XXXX XXXX", "str_s", "c", field, "30");
+ indexr("id", "6", "text", "XXXX XXXX", "str_s", "c", field, "40");
+ indexr("id", "7", "text", "XXXX XXXX", "str_s", "c", field, "50");
+ indexr("id", "8", "text", "XXXX XXXX", "str_s", "c", field, "60");
+ indexr("id", "9", "text", "XXXX XXXY", "str_s", "d", field, "70");
+ commit();
- indexr("id", "1", "text", "XXXX XXXX", "str_s", "a", "field_i", "1");
- indexr("id", "2", "text", "XXXX XXXX", "str_s", "b", "field_i", "2");
- indexr("id", "3", "text", "XXXX XXXX", "str_s", "a", "field_i", "20");
- indexr("id", "4", "text", "XXXX XXXX", "str_s", "b", "field_i", "2");
- indexr("id", "5", "text", "XXXX XXXX", "str_s", "c", "field_i", "30");
- indexr("id", "6", "text", "XXXX XXXX", "str_s", "c", "field_i", "30");
- indexr("id", "7", "text", "XXXX XXXX", "str_s", "c", "field_i", "50");
- indexr("id", "8", "text", "XXXX XXXX", "str_s", "c", "field_i", "60");
- commit();
+ SolrParams sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", mode,
+ "stmt", "select str_s, count(*), sum(" + field + "), min(" + field + "), max(" + field + "), avg(" + field
+ + ") from collection1 where text='XXXX' group by str_s order by sum(" + field + ") asc limit 2");
- SolrParams sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "facet",
- "stmt", "select distinct str_s, field_i from collection1 order by str_s asc, field_i asc");
+ SolrStream solrStream = new SolrStream(jetty.url, sParams);
+ List<Tuple> tuples = getTuples(solrStream);
- System.out.println("######## selectDistinctFacets #######");
+ // Only two results because of the limit.
+ assert (tuples.size() == 2);
+ Tuple tuple;
- SolrStream solrStream = new SolrStream(jetty.url, sParams);
- List<Tuple> tuples = getTuples(solrStream);
+ tuple = tuples.get(0);
+ assert (tuple.get("str_s").equals("b"));
+ assert (tuple.getDouble("EXPR$1") == 2); // count(*)
+ assert (tuple.getDouble("EXPR$2") == 19); // sum(field_i)
+ assert (tuple.getDouble("EXPR$3") == 8); // min(field_i)
+ assert (tuple.getDouble("EXPR$4") == 11); // max(field_i)
+ assert (tuple.getDouble("EXPR$5") == 10); // avg(field_i)
+
+ tuple = tuples.get(1);
+ assert (tuple.get("str_s").equals("a"));
+ assert (tuple.getDouble("EXPR$1") == 2); // count(*)
+ assert (tuple.getDouble("EXPR$2") == 27); // sum(field_i)
+ assert (tuple.getDouble("EXPR$3") == 7); // min(field_i)
+ assert (tuple.getDouble("EXPR$4") == 20); // max(field_i)
+ assert (tuple.getDouble("EXPR$5") == 14); // avg(field_i)
- //assert(false);
- assert(tuples.size() == 6);
+ }
- Tuple tuple;
+ private void testBasicGroupingFloatDoublePoints() throws Exception {
- tuple = tuples.get(0);
- assert(tuple.get("str_s").equals("a"));
- assert(tuple.getLong("field_i") == 1);
+ Random random = random();
+ int r = random.nextInt(2);
+ String[] intOrLong = {"field_f_p", "field_d_p"};
+ String[] facetOrMap = {"facet", "map_reduce"};
+ String field = intOrLong[r];
+ r = random.nextInt(2);
+ String mode = facetOrMap[r];
- tuple = tuples.get(1);
- assert(tuple.get("str_s").equals("a"));
- assert(tuple.getLong("field_i") == 20);
+ CloudJettyRunner jetty = this.cloudJettys.get(0);
- tuple = tuples.get(2);
- assert(tuple.get("str_s").equals("b"));
- assert(tuple.getLong("field_i") == 2);
+ del("*:*");
- tuple = tuples.get(3);
- assert(tuple.get("str_s").equals("c"));
- assert(tuple.getLong("field_i") == 30);
+ commit();
- tuple = tuples.get(4);
- assert(tuple.get("str_s").equals("c"));
- assert(tuple.getLong("field_i") == 50);
+ indexr("id", "1", "text", "XXXX XXXX", "str_s", "a", field, "7.0");
+ indexr("id", "2", "text", "XXXX XXXX", "str_s", "b", field, "8.0");
+ indexr("id", "3", "text", "XXXX XXXX", "str_s", "a", field, "20.0");
+ indexr("id", "4", "text", "XXXX XXXX", "str_s", "b", field, "11.0");
+ indexr("id", "5", "text", "XXXX XXXX", "str_s", "c", field, "30.0");
+ indexr("id", "6", "text", "XXXX XXXX", "str_s", "c", field, "40.0");
+ indexr("id", "7", "text", "XXXX XXXX", "str_s", "c", field, "50.0");
+ indexr("id", "8", "text", "XXXX XXXX", "str_s", "c", field, "60.0");
+ indexr("id", "9", "text", "XXXX XXXY", "str_s", "d", field, "70.0");
+ commit();
- tuple = tuples.get(5);
- assert(tuple.get("str_s").equals("c"));
- assert(tuple.getLong("field_i") == 60);
+ SolrParams sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", mode,
+ "stmt", "select str_s, count(*), sum(" + field + "), min(" + field + "), max(" + field + "), avg(" + field
+ + ") from collection1 where text='XXXX' group by str_s order by sum(" + field + ") asc limit 2");
+ SolrStream solrStream = new SolrStream(jetty.url, sParams);
+ List<Tuple> tuples = getTuples(solrStream);
- //reverse the sort
- sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "facet",
- "stmt", "select distinct str_s, field_i from collection1 order by str_s desc, field_i desc");
+ // Only two results because of the limit.
+ assert (tuples.size() == 2);
+ Tuple tuple;
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
+ tuple = tuples.get(0);
+ assert (tuple.get("str_s").equals("b"));
+ assertEquals(tuple.getDouble("EXPR$1"), 2, 0.0); // count(*)
+ assertEquals(tuple.getDouble("EXPR$2"), 19, 0.0); // sum(field_i)
+ assertEquals(tuple.getDouble("EXPR$3"), 8, 0.0); // min(field_i)
+ assertEquals(tuple.getDouble("EXPR$4"), 11, 0.0); // max(field_i)
+ assertEquals(tuple.getDouble("EXPR$5"), 9.5, 0.0); // avg(field_i)
+
+ tuple = tuples.get(1);
+ assert (tuple.get("str_s").equals("a"));
+ assertEquals(tuple.getDouble("EXPR$1"), 2, 0.0); // count(*)
+ assertEquals(tuple.getDouble("EXPR$2"), 27, 0.0); // sum(field_i)
+ assertEquals(tuple.getDouble("EXPR$3"), 7, 0.0); // min(field_i)
+ assertEquals(tuple.getDouble("EXPR$4"), 20, 0.0); // max(field_i)
+ assertEquals(tuple.getDouble("EXPR$5"), 13.5, 0.0); // avg(field_i)
- assert(tuples.size() == 6);
+ }
- tuple = tuples.get(0);
- assert(tuple.get("str_s").equals("c"));
- assert(tuple.getLong("field_i") == 60);
+ private void testSelectDistinctFacets() throws Exception {
- tuple = tuples.get(1);
- assert(tuple.get("str_s").equals("c"));
- assert(tuple.getLong("field_i") == 50);
+ CloudJettyRunner jetty = this.cloudJettys.get(0);
+ del("*:*");
- tuple = tuples.get(2);
- assert(tuple.get("str_s").equals("c"));
- assert(tuple.getLong("field_i") == 30);
+ commit();
- tuple = tuples.get(3);
- assert(tuple.get("str_s").equals("b"));
- assert(tuple.getLong("field_i") == 2);
+ indexr("id", "1", "text", "XXXX XXXX", "str_s", "a", "field_i", "1");
+ indexr("id", "2", "text", "XXXX XXXX", "str_s", "b", "field_i", "2");
+ indexr("id", "3", "text", "XXXX XXXX", "str_s", "a", "field_i", "20");
+ indexr("id", "4", "text", "XXXX XXXX", "str_s", "b", "field_i", "2");
+ indexr("id", "5", "text", "XXXX XXXX", "str_s", "c", "field_i", "30");
+ indexr("id", "6", "text", "XXXX XXXX", "str_s", "c", "field_i", "30");
+ indexr("id", "7", "text", "XXXX XXXX", "str_s", "c", "field_i", "50");
+ indexr("id", "8", "text", "XXXX XXXX", "str_s", "c", "field_i", "60");
+ commit();
+ SolrParams sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "facet",
+ "stmt", "select distinct str_s, field_i from collection1 order by str_s asc, field_i asc");
- tuple = tuples.get(4);
- assert(tuple.get("str_s").equals("a"));
- assert(tuple.getLong("field_i") == 20);
+ System.out.println("######## selectDistinctFacets #######");
- tuple = tuples.get(5);
- assert(tuple.get("str_s").equals("a"));
- assert(tuple.getLong("field_i") == 1);
+ SolrStream solrStream = new SolrStream(jetty.url, sParams);
+ List<Tuple> tuples = getTuples(solrStream);
+ // assert(false);
+ assert (tuples.size() == 6);
- //reverse the sort
- sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "facet",
- "stmt", "select distinct str_s as myString, field_i as myInt from collection1 order by str_s desc, myInt desc");
+ Tuple tuple;
- solrStream = new SolrStream(jetty.url, sParams);
- tuples = getTuples(solrStream);
+ tuple = tuples.get(0);
+ assert (tuple.get("str_s").equals("a"));
+ assert (tuple.getLong("field_i") == 1);
- assert(tuples.size() == 6);
+ tuple = tuples.get(1);
+ assert (tuple.get("str_s").equals("a"));
+ assert (tuple.getLong("field_i") == 20);
- tuple = tuples.get(0);
- assert(tuple.get("myString").equals("c"));
- assert(tuple.getLong("myInt") == 60);
+ tuple = tuples.get(2);
+ assert (tuple.get("str_s").equals("b"));
+ assert (tuple.getLong("field_i") == 2);
- tuple = tuples.get(1);
- assert(tuple.get("myString").equals("c"));
- assert(tuple.getLong("myInt") == 50);
+ tuple = tuples.get(3);
+ assert (tuple.get("str_s").equals("c"));
+ assert (tuple.getLong("field_i") == 30);
+ tuple = tuples.get(4);
+ assert (tuple.get("str_s").equals("c"));
+ assert (tuple.getLong("field_i") == 50);
- tuple = tu
<TRUNCATED>
[2/2] lucene-solr:master: SOLR-13040: Fix TestSQLHandler,
remove delete core calls.
Posted by ma...@apache.org.
SOLR-13040: Fix TestSQLHandler, remove delete core calls.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/bcdc6dad
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/bcdc6dad
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/bcdc6dad
Branch: refs/heads/master
Commit: bcdc6dadbb0dabfac6fc21c341c0adb35694b335
Parents: ec1bd0d
Author: markrmiller <ma...@apache.org>
Authored: Wed Dec 12 02:01:24 2018 -0600
Committer: markrmiller <ma...@apache.org>
Committed: Wed Dec 12 02:06:26 2018 -0600
----------------------------------------------------------------------
.../org/apache/solr/handler/TestSQLHandler.java | 4040 +++++++++---------
1 file changed, 1967 insertions(+), 2073 deletions(-)
----------------------------------------------------------------------