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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to