You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jb...@apache.org on 2016/02/08 00:43:11 UTC
lucene-solr git commit: SOLR-8654: SQL: Unlimited SELECT without an
ORDER BY should sort by _version_ desc
Repository: lucene-solr
Updated Branches:
refs/heads/master f77feb718 -> a01c518b9
SOLR-8654: SQL: Unlimited SELECT without an ORDER BY should sort by _version_ desc
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/a01c518b
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/a01c518b
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/a01c518b
Branch: refs/heads/master
Commit: a01c518b94f3cf871210252ff0b40f66c65741d4
Parents: f77feb7
Author: jbernste <jb...@apache.org>
Authored: Sun Feb 7 18:16:32 2016 -0500
Committer: jbernste <jb...@apache.org>
Committed: Sun Feb 7 18:17:21 2016 -0500
----------------------------------------------------------------------
.../org/apache/solr/handler/SQLHandler.java | 11 ++--
.../solr/collection1/conf/schema-sql.xml | 2 +-
.../org/apache/solr/handler/TestSQLHandler.java | 53 ++++++++++++++++++++
3 files changed, 58 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a01c518b/solr/core/src/java/org/apache/solr/handler/SQLHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/SQLHandler.java b/solr/core/src/java/org/apache/solr/handler/SQLHandler.java
index 8324c85..a017f58 100644
--- a/solr/core/src/java/org/apache/solr/handler/SQLHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SQLHandler.java
@@ -612,11 +612,12 @@ public class SQLHandler extends RequestHandlerBase implements SolrCoreAware {
}
} else {
if(sqlVisitor.limit < 0) {
- throw new IOException("order by is required for unlimited select statements.");
+ siBuf.append("_version_ desc");
+ fl = fl+",_version_";
} else {
siBuf.append("score desc");
if(!score) {
- fl = fl+(",score");
+ fl = fl+",score";
}
}
}
@@ -640,11 +641,7 @@ public class SQLHandler extends RequestHandlerBase implements SolrCoreAware {
tupleStream = new CloudSolrStream(zkHost, collection, params);
}
- if(sqlVisitor.hasColumnAliases) {
- return new SelectStream(tupleStream, sqlVisitor.columnAliases);
- } else {
- return tupleStream;
- }
+ return new SelectStream(tupleStream, sqlVisitor.columnAliases);
}
private static boolean sortsEqual(Bucket[] buckets, String direction, List<SortItem> sortItems, Map<String, String> reverseColumnAliases) {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a01c518b/solr/core/src/test-files/solr/collection1/conf/schema-sql.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-sql.xml b/solr/core/src/test-files/solr/collection1/conf/schema-sql.xml
index 25a9bc0..bf16327 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-sql.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-sql.xml
@@ -499,7 +499,7 @@
<field name="tlong" type="tlong" indexed="true" stored="true" />
- <field name="_version_" type="long" indexed="true" stored="true"/>
+ <field name="_version_" type="long" indexed="true" docValues="true" stored="true"/>
<!-- Dynamic field definitions. If a field name is not found, dynamicFields
will be used if the name matches any of the patterns.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a01c518b/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 e376c18..0e5cbaf 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestSQLHandler.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestSQLHandler.java
@@ -281,6 +281,59 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
assert(tuple.getLong("field_i") == 7);
assert(tuple.get("str_s").equals("a"));
+
+ params = new HashMap();
+ params.put(CommonParams.QT, "/sql");
+
+ //Test unlimited unsorted result. Should sort on _version_ desc
+ params.put("stmt", "select 'id', field_i, str_s from collection1 where 'text'='XXXX'");
+
+ solrStream = new SolrStream(jetty.url, params);
+ 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"));
+
+
params = new HashMap();
params.put(CommonParams.QT, "/sql");
params.put("stmt", "select id, field_i, str_s from collection1 where text='XXXX' order by field_i desc limit 1");