Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 47EDD200B52 for ; Mon, 25 Jul 2016 19:59:49 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 46A22160A7D; Mon, 25 Jul 2016 17:59:49 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 8E4E2160A67 for ; Mon, 25 Jul 2016 19:59:48 +0200 (CEST) Received: (qmail 36906 invoked by uid 500); 25 Jul 2016 17:59:47 -0000 Mailing-List: contact commits-help@calcite.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@calcite.apache.org Delivered-To: mailing list commits@calcite.apache.org Received: (qmail 36897 invoked by uid 99); 25 Jul 2016 17:59:47 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 25 Jul 2016 17:59:47 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 8CDA4E00A7; Mon, 25 Jul 2016 17:59:47 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: jhyde@apache.org To: commits@calcite.apache.org Message-Id: <7cbd9dd9ab0b41c18da519750f639b49@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: calcite git commit: [CALCITE-1324] Druid metadata query throws exception if there are non-standard aggregators (Martin Karlsch) Date: Mon, 25 Jul 2016 17:59:47 +0000 (UTC) archived-at: Mon, 25 Jul 2016 17:59:49 -0000 Repository: calcite Updated Branches: refs/heads/master d1f4f885c -> 6002cd280 [CALCITE-1324] Druid metadata query throws exception if there are non-standard aggregators (Martin Karlsch) Close apache/calcite#259 Project: http://git-wip-us.apache.org/repos/asf/calcite/repo Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/6002cd28 Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/6002cd28 Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/6002cd28 Branch: refs/heads/master Commit: 6002cd2809250cdfa095235fe79a30c41218b6b6 Parents: d1f4f88 Author: Martin Karlsch Authored: Thu Jul 21 12:53:15 2016 +0200 Committer: Julian Hyde Committed: Mon Jul 25 10:09:50 2016 -0700 ---------------------------------------------------------------------- .../adapter/druid/DruidConnectionImpl.java | 23 +++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/calcite/blob/6002cd28/druid/src/main/java/org/apache/calcite/adapter/druid/DruidConnectionImpl.java ---------------------------------------------------------------------- diff --git a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidConnectionImpl.java b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidConnectionImpl.java index 02069df..3e4afd3 100644 --- a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidConnectionImpl.java +++ b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidConnectionImpl.java @@ -30,6 +30,7 @@ import org.apache.calcite.util.Holder; import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.type.CollectionType; @@ -341,6 +342,19 @@ class DruidConnectionImpl implements DruidConnection { }; } + private boolean isSupportedType(String type) { + if (type.startsWith("long")) { + return true; + } + if (type.startsWith("double")) { + return true; + } + if (type.equals("hyperUnique")) { + return true; + } + return false; + } + /** Reads segment metadata, and populates a list of columns and metrics. */ void metadata(String dataSourceName, List intervals, Map fieldBuilder, Set metricNameBuilder) { @@ -353,7 +367,8 @@ class DruidConnectionImpl implements DruidConnection { } try (InputStream in0 = post(url, data, requestHeaders, 10000, 1800000); InputStream in = traceResponse(in0)) { - final ObjectMapper mapper = new ObjectMapper(); + final ObjectMapper mapper = new ObjectMapper() + .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); final CollectionType listType = mapper.getTypeFactory().constructCollectionType(List.class, JsonSegmentMetadata.class); @@ -361,11 +376,17 @@ class DruidConnectionImpl implements DruidConnection { in.close(); for (JsonSegmentMetadata o : list) { for (Map.Entry entry : o.columns.entrySet()) { + if (!isSupportedType(entry.getValue().type)) { + continue; + } fieldBuilder.put(entry.getKey(), entry.getValue().sqlType()); } if (o.aggregators != null) { for (Map.Entry entry : o.aggregators.entrySet()) { + if (!isSupportedType(entry.getValue().type)) { + continue; + } fieldBuilder.put(entry.getKey(), entry.getValue().sqlType()); metricNameBuilder.add(entry.getKey()); }