diff --git a/sql/src/main/java/io/crate/action/sql/query/SortSymbolVisitor.java b/sql/src/main/java/io/crate/action/sql/query/SortSymbolVisitor.java index 3324e68b104a..b3afa9af0b2c 100644 --- a/sql/src/main/java/io/crate/action/sql/query/SortSymbolVisitor.java +++ b/sql/src/main/java/io/crate/action/sql/query/SortSymbolVisitor.java @@ -146,7 +146,9 @@ public SortField visitFunction(final Function function, final SortSymbolContext final Input functionInput = inputs.get(0); @SuppressWarnings("unchecked") final List expressions = inputContext.docLevelExpressions(); - final SortField.Type type = LUCENE_TYPE_MAP.get(function.valueType()); + // our boolean functions return booleans, no BytesRefs, handle them differently + // this is a hack, but that is how it worked before, so who cares :) + final SortField.Type type = function.valueType().equals(DataTypes.BOOLEAN) ? null : LUCENE_TYPE_MAP.get(function.valueType()); final SortField.Type reducedType = MoreObjects.firstNonNull(type, SortField.Type.DOC); return new SortField(function.toString(), new IndexFieldData.XFieldComparatorSource() { diff --git a/sql/src/test/java/io/crate/integrationtests/PartitionedTableIntegrationTest.java b/sql/src/test/java/io/crate/integrationtests/PartitionedTableIntegrationTest.java index bbac96a005cc..161f2667c97c 100644 --- a/sql/src/test/java/io/crate/integrationtests/PartitionedTableIntegrationTest.java +++ b/sql/src/test/java/io/crate/integrationtests/PartitionedTableIntegrationTest.java @@ -1765,6 +1765,8 @@ public void testGroupOnDynamicColumn() throws Exception { execute("insert into event (day) values ('2015-01-03')"); execute("insert into event (day, sessionid) values ('2015-01-01', 'hello')"); execute("refresh table event"); + waitNoPendingTasksOnAll(); + execute("select sessionid from event group by sessionid order by sessionid"); assertThat(response.rows().length, Is.is(2)); assertThat((String)response.rows()[0][0], Is.is("hello")); diff --git a/sql/src/test/java/io/crate/integrationtests/QueryThenFetchIntegrationTest.java b/sql/src/test/java/io/crate/integrationtests/QueryThenFetchIntegrationTest.java index f05a4027e253..e3a3789c8bd2 100644 --- a/sql/src/test/java/io/crate/integrationtests/QueryThenFetchIntegrationTest.java +++ b/sql/src/test/java/io/crate/integrationtests/QueryThenFetchIntegrationTest.java @@ -39,14 +39,17 @@ public class QueryThenFetchIntegrationTest extends SQLTransportIntegrationTest { @Test public void testCrateSearchServiceSupportsOrderByOnFunctionWithBooleanReturnType() throws Exception { - execute("create table t (name string) with (number_of_replicas = 0)"); - execute("insert into t (name) values ('Marvin'), ('Trillian')"); + execute("create table t (name string, b byte) with (number_of_replicas = 0)"); + execute("insert into t (name, b) values ('Marvin', 0), ('Trillian', 1), ('Arthur', 2), ('Max', 3)"); execute("refresh table t"); ensureGreen(); - execute("select * from t order by substr(name, 1, 1) = 'M'"); - assertThat(((String) response.rows()[0][0]), is("Trillian")); - assertThat(((String) response.rows()[1][0]), is("Marvin")); + execute("select * from t order by substr(name, 1, 1) = 'M', b"); + assertThat(TestingHelpers.printedTable(response.rows()), is( + "1| Trillian\n" + + "2| Arthur\n" + + "0| Marvin\n" + + "3| Max\n")); } @Test