From 818ce51964a17a0fa629dc399f696554a082cd27 Mon Sep 17 00:00:00 2001 From: Gian Merlino Date: Wed, 21 Feb 2018 09:59:56 -0800 Subject: [PATCH] SQL: Fix selecting BOOLEAN type in JDBC. (#5401) --- .../io/druid/sql/calcite/rel/QueryMaker.java | 2 ++ .../sql/avatica/DruidAvaticaHandlerTest.java | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/sql/src/main/java/io/druid/sql/calcite/rel/QueryMaker.java b/sql/src/main/java/io/druid/sql/calcite/rel/QueryMaker.java index ed006a8b95a..3c063f82b36 100644 --- a/sql/src/main/java/io/druid/sql/calcite/rel/QueryMaker.java +++ b/sql/src/main/java/io/druid/sql/calcite/rel/QueryMaker.java @@ -385,6 +385,8 @@ public class QueryMaker return ColumnMetaData.Rep.of(Float.class); } else if (sqlType == SqlTypeName.DOUBLE || sqlType == SqlTypeName.DECIMAL) { return ColumnMetaData.Rep.of(Double.class); + } else if (sqlType == SqlTypeName.BOOLEAN) { + return ColumnMetaData.Rep.of(Boolean.class); } else if (sqlType == SqlTypeName.OTHER) { return ColumnMetaData.Rep.of(Object.class); } else { diff --git a/sql/src/test/java/io/druid/sql/avatica/DruidAvaticaHandlerTest.java b/sql/src/test/java/io/druid/sql/avatica/DruidAvaticaHandlerTest.java index 05698019013..b36bbd8a9be 100644 --- a/sql/src/test/java/io/druid/sql/avatica/DruidAvaticaHandlerTest.java +++ b/sql/src/test/java/io/druid/sql/avatica/DruidAvaticaHandlerTest.java @@ -41,12 +41,12 @@ import io.druid.java.util.common.Pair; import io.druid.java.util.common.StringUtils; import io.druid.math.expr.ExprMacroTable; import io.druid.server.DruidNode; -import io.druid.server.security.NoopEscalator; import io.druid.server.security.AuthConfig; import io.druid.server.security.AuthTestUtils; import io.druid.server.security.AuthenticatorMapper; import io.druid.server.security.AuthorizerMapper; import io.druid.server.security.Escalator; +import io.druid.server.security.NoopEscalator; import io.druid.sql.calcite.planner.Calcites; import io.druid.sql.calcite.planner.DruidOperatorTable; import io.druid.sql.calcite.planner.PlannerConfig; @@ -287,6 +287,21 @@ public class DruidAvaticaHandlerTest ); } + @Test + public void testSelectBoolean() throws Exception + { + final ResultSet resultSet = client.createStatement().executeQuery( + "SELECT dim2, dim2 IS NULL AS isnull FROM druid.foo LIMIT 1" + ); + + Assert.assertEquals( + ImmutableList.of( + ImmutableMap.of("dim2", "a", "isnull", false) + ), + getRows(resultSet) + ); + } + @Test public void testExplainSelectCount() throws Exception {