You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by "keepmeup (via GitHub)" <gi...@apache.org> on 2023/05/15 08:02:27 UTC
[GitHub] [druid] keepmeup opened a new issue, #14278: UnsupportedOperationException is returned when a join association query is performed on a dimension column of the long type.
keepmeup opened a new issue, #14278:
URL: https://github.com/apache/druid/issues/14278
Please provide a detailed title (e.g. "Broker crashes when using TopN query with Bound filter" instead of just "Broker crashes").
### Affected Version
V0.21.0 - latest
### Description
join query sql like this:
`select tb1.integer_01 from query_data tb1 join query_data tb2 on tb1.integer_01=tb2.integer_01 `
query_data is not inline type.
integer_01 column is long type.
when a dimension column (long type) in a datasource does not contain duplicate data rows, failed to run a join query on this column, and reported error msg like UnsupportedOperationException.
the deatil error info as following :
`[org.apache.druid.server.QueryResource] Exception handling request: {class=org.apache.druid.server.QueryResource, exceptionType=class java.lang.UnsupportedOperationException, exceptionMessage=null, query={\"queryType\":\"scan\",\"dataSource\":{\"type\":\"join\",\"left\":{\"type\":\"table\",\"name\":\"query_data\"},\"right\":{\"type\":\"inline\",\"columnNames\":[\"integer_02\"],\"rows\":[[1011321636],[798149180],[1967276246],[981851454],[1131930886],[678057399],[531974338],[910870059],[1354189192],[1852874318],[1423135749],[476052090],[1629345290],[1221025604],[1456168797],[174256503],[2136167612],[939121801],[1311193105],[1041611754],[2042602974],[1811871238],[1567640210],[1812339899],[201732894],[1917945034],[348649510],[1952933797],[656763133],[1570766473],[761034030],[783297435],[900938133],[2008310329],[683880388],[632070346],[265266758],[559246409],[140623286],[1121379007],[1283871449],[1526862571],[1294881462],[283504463],[1014505150],[210258446],[1345371845],[1789161393],
[465946570],[9965594],[1213002863],[473974926],[1867814161],[747880882],[2046826281],[845410732],[195430351],[1140766264],[433656069],[1804244762],[1906022077],[1108026388],[1519759817],[2099249276],[2141155270],[48778464],[1944933484],[522011220],[1808483027],[965865845],[657591721],[368260435],[365302572],[100798112],[1662083764],[1001633540],[2100433580],[717611262],[668829244],[1451930205],[195265403],[1612132668],[837296122],[1538780976],[1731830280],[96135375],[932682338],[324709142],[756193325],[2080763299],[889190595],[1786771821],[1089697379],[931743425],[1323840991],[503638979],[1369257728],[839288835],[1262823817],[1241350637]]},\"rightPrefix\":\"j0.\",\"condition\":\"(\\\"integer_02\\\" == \\\"j0.integer_02\\\")\",\"joinType\":\"INNER\"},\"intervals\":{\"type\":\"segments\",\"segments\":[{\"itvl\":\"2023-05-09T03:05:00.000Z/2023-05-09T03:10:00.000Z\",\"ver\":\"2023-05-09T03:11:22.477Z\",\"part\":0}]},\"virtualColumns\":[],\"resultFormat\":\"compactedList\",\"batchSize\":
20480,\"order\":\"none\",\"filter\":null,\"columns\":[\"integer_02\"],\"legacy\":false,\"context\":{\"defaultTimeout\":300000,\"finalize\":false,\"maxQueuedBytes\":0,\"maxScatterGatherBytes\":2147483648,\"queryFailTime\":1683804840252,\"queryId\":\"f2439d55-d633-4798-8de7-4eae42be7832\",\"sqlQueryId\":\"2e5eca7f-0574-468c-91f5-ed31dda2627f\",\"timeout\":299999},\"descending\":false,\"granularity\":{\"type\":\"all\"}}, peer=8.7.173.27} (java.lang.UnsupportedOperationException)
`
the error stack info in historical log:
`[ROOT][org.apache.druid.server.QueryResource] xxx:test
java.lang.UnsupportedOperationException: null
at org.apache.druid.segment.join.table.MapIndex.findUniqueLong(MapIndex.java:95) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.segment.join.table.IndexedTableJoinMatcher$ConditionMatcherFactory$1.matchSingleRow(IndexedTableJoinMatcher.java:465) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.segment.join.table.IndexedTableJoinMatcher.matchCondition(IndexedTableJoinMatcher.java:193) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.segment.join.HashJoinEngine$1JoinCursor.matchCurrentPosition(HashJoinEngine.java:167) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.segment.join.HashJoinEngine$1JoinCursor.initialize(HashJoinEngine.java:127) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.segment.join.HashJoinEngine.makeJoinCursor(HashJoinEngine.java:219) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.segment.join.HashJoinSegmentStorageAdapter.lambda$makeCursors$0(HashJoinSegmentStorageAdapter.java:267) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.MappingYieldingAccumulator.accumulate(MappingYieldingAccumulator.java:61) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.FilteringYieldingAccumulator.accumulate(FilteringYieldingAccumulator.java:70) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.MappingYieldingAccumulator.accumulate(MappingYieldingAccumulator.java:61) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.BaseSequence.makeYielder(BaseSequence.java:90) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.BaseSequence.toYielder(BaseSequence.java:69) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.MappedSequence.toYielder(MappedSequence.java:49) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:88) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:84) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.SequenceWrapper.wrap(SequenceWrapper.java:55) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence.toYielder(WrappingSequence.java:83) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.FilteredSequence.toYielder(FilteredSequence.java:54) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.MappedSequence.toYielder(MappedSequence.java:49) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:88) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:84) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.SequenceWrapper.wrap(SequenceWrapper.java:55) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence.toYielder(WrappingSequence.java:83) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:88) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:84) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.SequenceWrapper.wrap(SequenceWrapper.java:55) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:88) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:84) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.SequenceWrapper.wrap(SequenceWrapper.java:55) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence.toYielder(WrappingSequence.java:83) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.LazySequence.toYielder(LazySequence.java:46) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:88) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:84) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.SequenceWrapper.wrap(SequenceWrapper.java:55) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence.toYielder(WrappingSequence.java:83) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.query.spec.SpecificSegmentQueryRunner$1.toYielder(SpecificSegmentQueryRunner.java:102) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:88) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:84) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.query.spec.SpecificSegmentQueryRunner.doNamed(SpecificSegmentQueryRunner.java:171) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.query.spec.SpecificSegmentQueryRunner.access$100(SpecificSegmentQueryRunner.java:44) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.query.spec.SpecificSegmentQueryRunner$2.wrap(SpecificSegmentQueryRunner.java:153) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence.toYielder(WrappingSequence.java:83) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:88) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:84) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.query.CPUTimeMetricQueryRunner$1.wrap(CPUTimeMetricQueryRunner.java:78) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence.toYielder(WrappingSequence.java:83) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.ConcatSequence.makeYielder(ConcatSequence.java:84) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.ConcatSequence.toYielder(ConcatSequence.java:64) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.MappedSequence.toYielder(MappedSequence.java:49) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:88) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:84) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.query.CPUTimeMetricQueryRunner$1.wrap(CPUTimeMetricQueryRunner.java:78) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence.toYielder(WrappingSequence.java:83) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.Yielders.each(Yielders.java:32) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.server.QueryResource.doPost(QueryResource.java:235) ~[druid-server-0.21.1-h0.gdd.sop.r50.jar:?]
at sun.reflect.GeneratedMethodAccessor61.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_372]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_372]
at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) ~[jersey-server-1.19.3.jar:1.19.3]
at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) ~[jersey-server-1.19.3.jar:1.19.3]
at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) ~[jersey-server-1.19.3.jar:1.19.3]
at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) ~[jersey-server-1.19.3.jar:1.19.3]
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) ~[jersey-server-1.19.3.jar:1.19.3]
at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) ~[jersey-server-1.19.3.jar:1.19.3]
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542) ~[jersey-server-1.19.3.jar:1.19.3]
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473) ~[jersey-server-1.19.3.jar:1.19.3]
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) ~[jersey-server-1.19.3.jar:1.19.3]
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409) ~[jersey-server-1.19.3.jar:1.19.3]
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409) ~[jersey-servlet-1.19.3.jar:1.19.3]
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558) ~[jersey-servlet-1.19.3.jar:1.19.3]
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733) ~[jersey-servlet-1.19.3.jar:1.19.3]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0]
at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:286) ~[guice-servlet-4.1.0.jar:?]
at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:276) ~[guice-servlet-4.1.0.jar:?]
at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:181) ~[guice-servlet-4.1.0.jar:?]
at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91) ~[guice-servlet-4.1.0.jar:?]
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:85) ~[guice-servlet-4.1.0.jar:?]
at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:120) ~[guice-servlet-4.1.0.jar:?]
at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:135) ~[guice-servlet-4.1.0.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.apache.druid.server.security.PreResponseAuthorizationCheckFilter.doFilter(PreResponseAuthorizationCheckFilter.java:82) ~[druid-server-0.21.1-h0.gdd.sop.r50.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.apache.druid.server.security.AllowHttpMethodsResourceFilter.doFilter(AllowHttpMethodsResourceFilter.java:78) ~[druid-server-0.21.1-h0.gdd.sop.r50.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.apache.druid.server.security.AllowOptionsResourceFilter.doFilter(AllowOptionsResourceFilter.java:75) ~[druid-server-0.21.1-h0.gdd.sop.r50.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.apache.druid.server.security.AllowAllAuthenticator$1.doFilter(AllowAllAuthenticator.java:84) ~[druid-server-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.server.security.AuthenticationWrappingFilter.doFilter(AuthenticationWrappingFilter.java:59) ~[druid-server-0.21.1-h0.gdd.sop.r50.jar:?]
2023-05-11 11:29:00,469 ERROR [qtp1684887757-142[scan_[query_data_olap]_f2439d55-d633-4798-8de7-4eae42be7832]][ROOT][org.apache.druid.server.QueryResource]
java.lang.UnsupportedOperationException: null
at org.apache.druid.segment.join.table.MapIndex.findUniqueLong(MapIndex.java:95) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.segment.join.table.IndexedTableJoinMatcher$ConditionMatcherFactory$1.matchSingleRow(IndexedTableJoinMatcher.java:465) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.segment.join.table.IndexedTableJoinMatcher.matchCondition(IndexedTableJoinMatcher.java:193) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.segment.join.HashJoinEngine$1JoinCursor.matchCurrentPosition(HashJoinEngine.java:167) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.segment.join.HashJoinEngine$1JoinCursor.initialize(HashJoinEngine.java:127) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.segment.join.HashJoinEngine.makeJoinCursor(HashJoinEngine.java:219) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.segment.join.HashJoinSegmentStorageAdapter.lambda$makeCursors$0(HashJoinSegmentStorageAdapter.java:267) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.MappingYieldingAccumulator.accumulate(MappingYieldingAccumulator.java:61) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.FilteringYieldingAccumulator.accumulate(FilteringYieldingAccumulator.java:70) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.MappingYieldingAccumulator.accumulate(MappingYieldingAccumulator.java:61) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.BaseSequence.makeYielder(BaseSequence.java:90) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.BaseSequence.toYielder(BaseSequence.java:69) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.MappedSequence.toYielder(MappedSequence.java:49) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:88) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:84) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.SequenceWrapper.wrap(SequenceWrapper.java:55) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence.toYielder(WrappingSequence.java:83) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.FilteredSequence.toYielder(FilteredSequence.java:54) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.MappedSequence.toYielder(MappedSequence.java:49) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:88) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:84) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.SequenceWrapper.wrap(SequenceWrapper.java:55) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence.toYielder(WrappingSequence.java:83) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:88) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:84) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.SequenceWrapper.wrap(SequenceWrapper.java:55) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:88) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:84) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.SequenceWrapper.wrap(SequenceWrapper.java:55) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence.toYielder(WrappingSequence.java:83) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.LazySequence.toYielder(LazySequence.java:46) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:88) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:84) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.SequenceWrapper.wrap(SequenceWrapper.java:55) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence.toYielder(WrappingSequence.java:83) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.query.spec.SpecificSegmentQueryRunner$1.toYielder(SpecificSegmentQueryRunner.java:102) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:88) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:84) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.query.spec.SpecificSegmentQueryRunner.doNamed(SpecificSegmentQueryRunner.java:171) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.query.spec.SpecificSegmentQueryRunner.access$100(SpecificSegmentQueryRunner.java:44) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.query.spec.SpecificSegmentQueryRunner$2.wrap(SpecificSegmentQueryRunner.java:153) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence.toYielder(WrappingSequence.java:83) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:88) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:84) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.query.CPUTimeMetricQueryRunner$1.wrap(CPUTimeMetricQueryRunner.java:78) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence.toYielder(WrappingSequence.java:83) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.ConcatSequence.makeYielder(ConcatSequence.java:84) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.ConcatSequence.toYielder(ConcatSequence.java:64) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.MappedSequence.toYielder(MappedSequence.java:49) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:88) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence$2.get(WrappingSequence.java:84) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.query.CPUTimeMetricQueryRunner$1.wrap(CPUTimeMetricQueryRunner.java:78) ~[druid-processing-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.WrappingSequence.toYielder(WrappingSequence.java:83) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.java.util.common.guava.Yielders.each(Yielders.java:32) ~[druid-core-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.server.QueryResource.doPost(QueryResource.java:235) ~[druid-server-0.21.1-h0.gdd.sop.r50.jar:?]
at sun.reflect.GeneratedMethodAccessor61.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_372]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_372]
at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) ~[jersey-server-1.19.3.jar:1.19.3]
at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) ~[jersey-server-1.19.3.jar:1.19.3]
at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) ~[jersey-server-1.19.3.jar:1.19.3]
at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) ~[jersey-server-1.19.3.jar:1.19.3]
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) ~[jersey-server-1.19.3.jar:1.19.3]
at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) ~[jersey-server-1.19.3.jar:1.19.3]
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542) ~[jersey-server-1.19.3.jar:1.19.3]
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473) ~[jersey-server-1.19.3.jar:1.19.3]
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) ~[jersey-server-1.19.3.jar:1.19.3]
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409) ~[jersey-server-1.19.3.jar:1.19.3]
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409) ~[jersey-servlet-1.19.3.jar:1.19.3]
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558) ~[jersey-servlet-1.19.3.jar:1.19.3]
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733) ~[jersey-servlet-1.19.3.jar:1.19.3]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0]
at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:286) ~[guice-servlet-4.1.0.jar:?]
at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:276) ~[guice-servlet-4.1.0.jar:?]
at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:181) ~[guice-servlet-4.1.0.jar:?]
at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91) ~[guice-servlet-4.1.0.jar:?]
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:85) ~[guice-servlet-4.1.0.jar:?]
at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:120) ~[guice-servlet-4.1.0.jar:?]
at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:135) ~[guice-servlet-4.1.0.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.apache.druid.server.security.PreResponseAuthorizationCheckFilter.doFilter(PreResponseAuthorizationCheckFilter.java:82) ~[druid-server-0.21.1-h0.gdd.sop.r50.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.apache.druid.server.security.AllowHttpMethodsResourceFilter.doFilter(AllowHttpMethodsResourceFilter.java:78) ~[druid-server-0.21.1-h0.gdd.sop.r50.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.apache.druid.server.security.AllowOptionsResourceFilter.doFilter(AllowOptionsResourceFilter.java:75) ~[druid-server-0.21.1-h0.gdd.sop.r50.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.apache.druid.server.security.AllowAllAuthenticator$1.doFilter(AllowAllAuthenticator.java:84) ~[druid-server-0.21.1-h0.gdd.sop.r50.jar:?]
at org.apache.druid.server.security.AuthenticationWrappingFilter.doFilter(AuthenticationWrappingFilter.java:59) ~[druid-server-0.21.1-h0.gdd.sop.r50.jar:?]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) ~[jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) ~[jetty-io-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[jetty-io-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:555) ~[jetty-io-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:410) ~[jetty-io-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:164) ~[jetty-io-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[jetty-io-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[jetty-io-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) ~[jetty-util-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) ~[jetty-util-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) ~[jetty-util-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) ~[jetty-util-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) ~[jetty-util-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) ~[jetty-util-9.4.51.v20230217.jar:9.4.51.v20230217]
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) ~[jetty-util-9.4.51.v20230217.jar:9.4.51.v20230217]
at java.lang.Thread.run(Thread.java:750) ~[?:1.8.0_372]`
**this should be a bug when join query on a long type column and the column has duplicated row value, the reason maybe this:**
1.missing columnTypes in packets:
join query packets:
`{
'queryType' : 'scan',
'dataSource' : {
'type' : 'join',
'left' : {
'type' : 'table',
'name' : 'ODAEDATASET__DEFAULT_query_data_olap__DEFAULT'
},
'right' : {
'type' : 'inline',
'columnNames' : ['integer_02'], **### // missing columnTypes**
'rows' : [[1011321636], [798149180], [1967276246], [981851454], [1131930886], [678057399], [531974338], [910870059], [1354189192], [1852874318], [1423135749], [476052090], [1629345290], [1221025604], [1456168797], [174256503], [2136167612], [939121801], [1311193105], [1041611754], [2042602974], [1811871238], [1567640210], [1812339899], [201732894], [1917945034], [348649510], [1952933797], [656763133], [1570766473], [761034030], [783297435], [900938133], [2008310329], [683880388], [632070346], [265266758], [559246409], [140623286], [1121379007], [1283871449], [1526862571], [1294881462], [283504463], [1014505150], [210258446], [1345371845], [1789161393], [465946570], [9965594], [1213002863], [473974926], [1867814161], [747880882], [2046826281], [845410732], [195430351], [1140766264], [433656069], [1804244762], [1906022077], [1108026388], [1519759817], [2099249276], [2141155270], [48778464], [1944933484], [522011220], [1808483027], [965865845], [657591721], [368260435], [
365302572], [100798112], [1662083764], [1001633540], [2100433580], [717611262], [668829244], [1451930205], [195265403], [1612132668], [837296122], [1538780976], [1731830280], [96135375], [932682338], [324709142], [756193325], [2080763299], [889190595], [1786771821], [1089697379], [931743425], [1323840991], [503638979], [1369257728], [839288835], [1262823817], [1241350637]]
},
'rightPrefix' : 'j0.',
'condition' : '("integer_02" == "j0.integer_02")',
'joinType' : 'INNER'
},
'intervals' : {
'type' : 'segments',
'segments' : [{
'itvl' : '2023-05-09T03:05:00.000Z/2023-05-09T03:10:00.000Z',
'ver' : '2023-05-09T03:11:22.477Z',
'part' : 0
}
]
},
'virtualColumns' : [],
'resultFormat' : 'compactedList',
'batchSize' : 20480,
'order' : 'none',
'filter' : None,
'columns' : ['__time', 'integer_02'],
'legacy' : False,
'context' : {
'defaultTimeout' : 300000,
'finalize' : False,
'maxQueuedBytes' : 0,
'maxScatterGatherBytes' : 2147483648,
'queryFailTime' : 1683860555990,
'queryId' : 'ca1704f3-6400-4d99-aad0-48edc57e50e6',
'sqlQueryId' : '6c55077b-cf1f-410f-80df-7932d21866e5',
'timeout' : 299999
},
'descending' : False,
'granularity' : {
'type' : 'all'
}
}
`
2.use default string type ,not long type
`org.apache.druid.segment.join.table.RowBasedIndexedTable#RowBasedIndexedTable(java.util.List<RowType>, org.apache.druid.segment.RowAdapter<RowType>, org.apache.druid.segment.column.RowSignature, java.util.Set<java.lang.String>, java.lang.String, byte[])
public RowBasedIndexedTable(
final List<RowType> table,
final RowAdapter<RowType> rowAdapter,
final RowSignature rowSignature,
final Set<String> keyColumns,
final String version,
@Nullable
final byte[] cacheKey
)
{
this.table = table;
this.rowSignature = rowSignature;
this.columnFunctions =
rowSignature.getColumnNames().stream().map(rowAdapter::columnFunction).collect(Collectors.toList());
this.keyColumns = keyColumns;
this.version = version;
this.cacheKey = cacheKey;
if (!ImmutableSet.copyOf(rowSignature.getColumnNames()).containsAll(keyColumns)) {
throw new ISE(
"keyColumns[%s] must all be contained in rowSignature[%s]",
String.join(", ", keyColumns),
rowSignature
);
}
indexes = new ArrayList<>(rowSignature.size());
for (int i = 0; i < rowSignature.size(); i++) {
final String column = rowSignature.getColumnName(i);
final Index m;
if (keyColumns.contains(column)) {
final ValueType keyType =
rowSignature.getColumnType(column).orElse(IndexedTableJoinMatcher.DEFAULT_KEY_TYPE); //**### The rowSignature does not contain the key type. The default string type is used.**
final RowBasedIndexBuilder builder = new RowBasedIndexBuilder(keyType);
final Function<RowType, Object> columnFunction = columnFunctions.get(i);
for (final RowType row : table) {
builder.add(columnFunction.apply(row));
}
m = builder.build();
} else {
m = null;
}
indexes.add(m);
}
}
`
3. build normal hashmap not Long2ObjectOpenHashMap
` public RowBasedIndexBuilder(ValueType keyType)
{
this.keyType = keyType;
if (keyType == ValueType.LONG) {
// We're specializing the type even though we don't specialize usage in this class, for two reasons:
// (1) It's still useful to reduce overall memory footprint.
// (2) MapIndex specifically checks for Long2ObjectMap instances and *does* specialize usage.
final Long2ObjectOpenHashMap<IntList> theMap = new Long2ObjectOpenHashMap<>();
index = (Map) theMap;
} else {
index = new HashMap<>(); **### // return normal hashMap**
}
}
`
4. when singleRowMatch, return unsupportedOpertaionException
`org.apache.druid.segment.join.table.IndexedTableJoinMatcher.ConditionMatcherFactory#makeLongProcessor` ->
`org.apache.druid.segment.join.table.MapIndex#findUniqueLong`
` @Override
public int findUniqueLong(long key)
{
if (isLong2ObjectMap && keysUnique) {
final IntList rows = ((Long2ObjectMap<IntList>) (Map) index).get(key);
assert rows == null || rows.size() == 1;
return rows != null ? rows.getInt(0) : NOT_FOUND;
} else {
throw new UnsupportedOperationException();
}
}`
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org
[GitHub] [druid] keepmeup commented on issue #14278: UnsupportedOperationException is returned when a join association query is performed on a dimension column of the long type.
Posted by "keepmeup (via GitHub)" <gi...@apache.org>.
keepmeup commented on issue #14278:
URL: https://github.com/apache/druid/issues/14278#issuecomment-1548871995
@abhishekagarwal87
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org
[GitHub] [druid] abhishekagarwal87 closed issue #14278: UnsupportedOperationException is returned when a join association query is performed on a dimension column of the long type.
Posted by "abhishekagarwal87 (via GitHub)" <gi...@apache.org>.
abhishekagarwal87 closed issue #14278: UnsupportedOperationException is returned when a join association query is performed on a dimension column of the long type.
URL: https://github.com/apache/druid/issues/14278
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org
[GitHub] [druid] abhishekagarwal87 commented on issue #14278: UnsupportedOperationException is returned when a join association query is performed on a dimension column of the long type.
Posted by "abhishekagarwal87 (via GitHub)" <gi...@apache.org>.
abhishekagarwal87 commented on issue #14278:
URL: https://github.com/apache/druid/issues/14278#issuecomment-1549260086
@keepmeup - its fixed in https://github.com/apache/druid/pull/10942. You should upgrade to 0.22. or a later version.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org