We found the answer, we should pass total milliseconds of the day for SQL Time.
------------------ Original ------------------ From: "xiaobo ";<guxiaobo1...@qq.com>; Send time: Thursday, Feb 24, 2022 8:48 PM To: "dev"<dev@calcite.apache.org>; Subject: Re: dynamic reflective schema What we want to do is mapping Java LocalTime to SQL Time, from the csv adapter example we know that we should pass a long value for SQL Time, but we can't convert a Java LocalTime to Java Date to call it's getTime method like the CSV adapter, then what value should we calculate from Java LocalTime for SQL Time. ------------------ Original ------------------ From: "xiaobo ";<guxiaobo1...@qq.com>; Send time: Thursday, Feb 24, 2022 12:26 PM To: "dev"<dev@calcite.apache.org>; Subject: Re: dynamic reflective schema our adapter now supports string,boolean,bigdecimal,long,localdate,localdatetime, and we want to support localtime too, what value should we convert from localtime data , the total seconds since the start of a day? ---Original--- From: "xiaobo "<guxiaobo1...@qq.com> Date: Thu, Feb 24, 2022 12:20 PM To: "dev"<dev@calcite.apache.org>; Subject: Re: dynamic reflective schema yes, we call the getRowType(RelDataTypeFactory typeFactory) method in scan method , is this the correct way? ---Original--- From: "Gavin Ray"<ray.gavi...@gmail.com> Date: Thu, Feb 24, 2022 00:21 AM To: "dev"<dev@calcite.apache.org>; Subject: Re: dynamic reflective schema Xiabo, Your code seems to work for me, I ran the test case and it passes, see the image below: https://i.imgur.com/D0ajyQH.png On Wed, Feb 23, 2022 at 2:33 AM xiaobo <guxiaobo1...@qq.com.invalid> wrote: > we have put the test coding on github > > > https://github.com/guxiaobo/calcite-json-adapter/tree/main/src/test/java/org/apache/calcite/adapter/json/test > > > > > > ------------------ Original ------------------ > From: "xiaobo ";<guxiaobo1...@qq.com>; > Send time: Wednesday, Feb 23, 2022 3:11 PM > To: "dev"<dev@calcite.apache.org>; > > Subject: Re: dynamic reflective schema > > > > here is the full output with calcite.debug=true, we know the problem is > because the getRowType(RelDataTypeFactory typeFactory) method is not > called by the framework, but don't know why. > > > 2022-02-23 15:02:42.228 INFO 78585 --- [ main] > c.x.javatest.JavaTestApplication : Starting JavaTestApplication > using Java 11.0.13 on LindadeMacBook-Air.local with PID 78585 > (/Users/linda/Documents/Github/sw-smart-risk/sw-pbcm/sw-pbcm-test/java-test-proj/target/classes > started by linda in > /Users/linda/Documents/Github/sw-smart-risk/sw-pbcm/sw-pbcm-test/java-test-proj) > 2022-02-23 15:02:42.234 INFO 78585 --- [ main] > c.x.javatest.JavaTestApplication : No active profile set, falling > back to default profiles: default > 2022-02-23 15:02:43.230 WARN 78585 --- [ main] > o.m.s.mapper.ClassPathMapperScanner : No MyBatis mapper was found in > '[com.xsmartware.javatest]' package. Please check your configuration. > 2022-02-23 15:02:44.064 INFO 78585 --- [ main] > o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): > 8080 (http) > 2022-02-23 15:02:44.082 INFO 78585 --- [ main] > o.apache.catalina.core.StandardService : Starting service [Tomcat] > 2022-02-23 15:02:44.082 INFO 78585 --- [ main] > org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache > Tomcat/9.0.56] > 2022-02-23 15:02:44.291 INFO 78585 --- [ main] > o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded > WebApplicationContext > 2022-02-23 15:02:44.292 INFO 78585 --- [ main] > w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: > initialization completed in 1970 ms > 2022-02-23 15:02:45.374 INFO 78585 --- [ main] > o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 > (http) with context path '' > 2022-02-23 15:02:45.393 INFO 78585 --- [ main] > c.x.javatest.JavaTestApplication : Started JavaTestApplication in > 3.77 seconds (JVM running for 5.146) > /* > * Licensed to the Apache Software Foundation (ASF) under one or more > * contributor license agreements. See the NOTICE file distributed with > * this work for additional information regarding copyright ownership. > * The ASF licenses this file to you under the Apache License, Version 2.0 > * (the "License"); you may not use this file except in compliance with > * the License. You may obtain a copy of the License at > * > * http://www.apache.org/licenses/LICENSE-2.0 > * > * Unless required by applicable law or agreed to in writing, software > * distributed under the License is distributed on an "AS IS" BASIS, > * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > * See the License for the specific language governing permissions and > * limitations under the License. > */ > package org.apache.calcite.rel.metadata.janino; > > public final class GeneratedMetadata_CollationHandler > implements > org.apache.calcite.rel.metadata.BuiltInMetadata.Collation.Handler { > private final Object methodKey0 = > new > org.apache.calcite.rel.metadata.janino.DescriptiveCacheKey("ImmutableList > Handler.collations()"); > public final org.apache.calcite.rel.metadata.RelMdCollation provider0; > public GeneratedMetadata_CollationHandler( > org.apache.calcite.rel.metadata.RelMdCollation provider0) { > this.provider0 = provider0; > } > public org.apache.calcite.rel.metadata.MetadataDef getDef() { > return provider0.getDef(); > } > public com.google.common.collect.ImmutableList collations( > org.apache.calcite.rel.RelNode r, > org.apache.calcite.rel.metadata.RelMetadataQuery mq) { > while (r instanceof > org.apache.calcite.rel.metadata.DelegatingMetadataRel) { > r = ((org.apache.calcite.rel.metadata.DelegatingMetadataRel) > r).getMetadataDelegateRel(); > } > final Object key; > key = methodKey0; > final Object v = mq.map.get(r, key); > if (v != null) { > if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { > throw new > org.apache.calcite.rel.metadata.CyclicMetadataException(); > } > if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { > return null; > } > return (com.google.common.collect.ImmutableList) v; > } > mq.map.put(r, key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); > try { > final com.google.common.collect.ImmutableList x = collations_(r, mq); > mq.map.put(r, key, > org.apache.calcite.rel.metadata.NullSentinel.mask(x)); > return x; > } catch (java.lang.Exception e) { > mq.map.row(r).clear(); > throw e; > } > } > > private com.google.common.collect.ImmutableList collations_( > org.apache.calcite.rel.RelNode r, > org.apache.calcite.rel.metadata.RelMetadataQuery mq) { > if (r instanceof > org.apache.calcite.adapter.enumerable.EnumerableCorrelate) { > return > provider0.collations((org.apache.calcite.adapter.enumerable.EnumerableCorrelate) > r, mq); > } else if (r instanceof > org.apache.calcite.adapter.enumerable.EnumerableHashJoin) { > return > provider0.collations((org.apache.calcite.adapter.enumerable.EnumerableHashJoin) > r, mq); > } else if (r instanceof > org.apache.calcite.adapter.enumerable.EnumerableMergeJoin) { > return > provider0.collations((org.apache.calcite.adapter.enumerable.EnumerableMergeJoin) > r, mq); > } else if (r instanceof > org.apache.calcite.adapter.enumerable.EnumerableMergeUnion) { > return > provider0.collations((org.apache.calcite.adapter.enumerable.EnumerableMergeUnion) > r, mq); > } else if (r instanceof > org.apache.calcite.adapter.enumerable.EnumerableNestedLoopJoin) { > return > provider0.collations((org.apache.calcite.adapter.enumerable.EnumerableNestedLoopJoin) > r, mq); > } else if (r instanceof > org.apache.calcite.adapter.jdbc.JdbcToEnumerableConverter) { > return > provider0.collations((org.apache.calcite.adapter.jdbc.JdbcToEnumerableConverter) > r, mq); > } else if (r instanceof org.apache.calcite.plan.hep.HepRelVertex) { > return > provider0.collations((org.apache.calcite.plan.hep.HepRelVertex) r, mq); > } else if (r instanceof org.apache.calcite.plan.volcano.RelSubset) { > return > provider0.collations((org.apache.calcite.plan.volcano.RelSubset) r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Calc) { > return provider0.collations((org.apache.calcite.rel.core.Calc) r, > mq); > } else if (r instanceof org.apache.calcite.rel.core.Filter) { > return provider0.collations((org.apache.calcite.rel.core.Filter) r, > mq); > } else if (r instanceof org.apache.calcite.rel.core.Match) { > return provider0.collations((org.apache.calcite.rel.core.Match) r, > mq); > } else if (r instanceof org.apache.calcite.rel.core.Project) { > return provider0.collations((org.apache.calcite.rel.core.Project) r, > mq); > } else if (r instanceof org.apache.calcite.rel.core.Sort) { > return provider0.collations((org.apache.calcite.rel.core.Sort) r, > mq); > } else if (r instanceof org.apache.calcite.rel.core.SortExchange) { > return > provider0.collations((org.apache.calcite.rel.core.SortExchange) r, mq); > } else if (r instanceof org.apache.calcite.rel.core.TableModify) { > return > provider0.collations((org.apache.calcite.rel.core.TableModify) r, mq); > } else if (r instanceof org.apache.calcite.rel.core.TableScan) { > return provider0.collations((org.apache.calcite.rel.core.TableScan) > r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Values) { > return provider0.collations((org.apache.calcite.rel.core.Values) r, > mq); > } else if (r instanceof org.apache.calcite.rel.core.Window) { > return provider0.collations((org.apache.calcite.rel.core.Window) r, > mq); > } else if (r instanceof org.apache.calcite.rel.RelNode) { > return provider0.collations((org.apache.calcite.rel.RelNode) r, mq); > } else { > throw new java.lang.IllegalArgumentException("No handler for > method [public abstract com.google.common.collect.ImmutableList > org.apache.calcite.rel.metadata.BuiltInMetadata$Collation$Handler.collations(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.metadata.RelMetadataQuery)] > applied to argument of type [" + r.getClass() + "]; we recommend you create > a catch-all (RelNode) handler"); > } > } > > } > > /* > * Licensed to the Apache Software Foundation (ASF) under one or more > * contributor license agreements. See the NOTICE file distributed with > * this work for additional information regarding copyright ownership. > * The ASF licenses this file to you under the Apache License, Version 2.0 > * (the "License"); you may not use this file except in compliance with > * the License. You may obtain a copy of the License at > * > * http://www.apache.org/licenses/LICENSE-2.0 > * > * Unless required by applicable law or agreed to in writing, software > * distributed under the License is distributed on an "AS IS" BASIS, > * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > * See the License for the specific language governing permissions and > * limitations under the License. > */ > package org.apache.calcite.rel.metadata.janino; > > public final class GeneratedMetadata_NonCumulativeCostHandler > implements > org.apache.calcite.rel.metadata.BuiltInMetadata.NonCumulativeCost.Handler { > private final Object methodKey0 = > new > org.apache.calcite.rel.metadata.janino.DescriptiveCacheKey("RelOptCost > Handler.getNonCumulativeCost()"); > public final > org.apache.calcite.rel.metadata.RelMdPercentageOriginalRows$RelMdNonCumulativeCost > provider0; > public GeneratedMetadata_NonCumulativeCostHandler( > > org.apache.calcite.rel.metadata.RelMdPercentageOriginalRows$RelMdNonCumulativeCost > provider0) { > this.provider0 = provider0; > } > public org.apache.calcite.rel.metadata.MetadataDef getDef() { > return provider0.getDef(); > } > public org.apache.calcite.plan.RelOptCost getNonCumulativeCost( > org.apache.calcite.rel.RelNode r, > org.apache.calcite.rel.metadata.RelMetadataQuery mq) { > while (r instanceof > org.apache.calcite.rel.metadata.DelegatingMetadataRel) { > r = ((org.apache.calcite.rel.metadata.DelegatingMetadataRel) > r).getMetadataDelegateRel(); > } > final Object key; > key = methodKey0; > final Object v = mq.map.get(r, key); > if (v != null) { > if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { > throw new > org.apache.calcite.rel.metadata.CyclicMetadataException(); > } > if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { > return null; > } > return (org.apache.calcite.plan.RelOptCost) v; > } > mq.map.put(r, key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); > try { > final org.apache.calcite.plan.RelOptCost x = > getNonCumulativeCost_(r, mq); > mq.map.put(r, key, > org.apache.calcite.rel.metadata.NullSentinel.mask(x)); > return x; > } catch (java.lang.Exception e) { > mq.map.row(r).clear(); > throw e; > } > } > > private org.apache.calcite.plan.RelOptCost getNonCumulativeCost_( > org.apache.calcite.rel.RelNode r, > org.apache.calcite.rel.metadata.RelMetadataQuery mq) { > if (r instanceof org.apache.calcite.rel.RelNode) { > return > provider0.getNonCumulativeCost((org.apache.calcite.rel.RelNode) r, mq); > } else { > throw new java.lang.IllegalArgumentException("No handler for > method [public abstract org.apache.calcite.plan.RelOptCost > org.apache.calcite.rel.metadata.BuiltInMetadata$NonCumulativeCost$Handler.getNonCumulativeCost(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.metadata.RelMetadataQuery)] > applied to argument of type [" + r.getClass() + "]; we recommend you create > a catch-all (RelNode) handler"); > } > } > > } > > /* > * Licensed to the Apache Software Foundation (ASF) under one or more > * contributor license agreements. See the NOTICE file distributed with > * this work for additional information regarding copyright ownership. > * The ASF licenses this file to you under the Apache License, Version 2.0 > * (the "License"); you may not use this file except in compliance with > * the License. You may obtain a copy of the License at > * > * http://www.apache.org/licenses/LICENSE-2.0 > * > * Unless required by applicable law or agreed to in writing, software > * distributed under the License is distributed on an "AS IS" BASIS, > * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > * See the License for the specific language governing permissions and > * limitations under the License. > */ > package org.apache.calcite.rel.metadata.janino; > > public final class GeneratedMetadata_NodeTypesHandler > implements > org.apache.calcite.rel.metadata.BuiltInMetadata.NodeTypes.Handler { > private final Object methodKey0 = > new > org.apache.calcite.rel.metadata.janino.DescriptiveCacheKey("Multimap > Handler.getNodeTypes()"); > public final org.apache.calcite.rel.metadata.RelMdNodeTypes provider0; > public GeneratedMetadata_NodeTypesHandler( > org.apache.calcite.rel.metadata.RelMdNodeTypes provider0) { > this.provider0 = provider0; > } > public org.apache.calcite.rel.metadata.MetadataDef getDef() { > return provider0.getDef(); > } > public com.google.common.collect.Multimap getNodeTypes( > org.apache.calcite.rel.RelNode r, > org.apache.calcite.rel.metadata.RelMetadataQuery mq) { > while (r instanceof > org.apache.calcite.rel.metadata.DelegatingMetadataRel) { > r = ((org.apache.calcite.rel.metadata.DelegatingMetadataRel) > r).getMetadataDelegateRel(); > } > final Object key; > key = methodKey0; > final Object v = mq.map.get(r, key); > if (v != null) { > if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { > throw new > org.apache.calcite.rel.metadata.CyclicMetadataException(); > } > if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { > return null; > } > return (com.google.common.collect.Multimap) v; > } > mq.map.put(r, key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); > try { > final com.google.common.collect.Multimap x = getNodeTypes_(r, mq); > mq.map.put(r, key, > org.apache.calcite.rel.metadata.NullSentinel.mask(x)); > return x; > } catch (java.lang.Exception e) { > mq.map.row(r).clear(); > throw e; > } > } > > private com.google.common.collect.Multimap getNodeTypes_( > org.apache.calcite.rel.RelNode r, > org.apache.calcite.rel.metadata.RelMetadataQuery mq) { > if (r instanceof org.apache.calcite.plan.volcano.RelSubset) { > return > provider0.getNodeTypes((org.apache.calcite.plan.volcano.RelSubset) r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Aggregate) { > return > provider0.getNodeTypes((org.apache.calcite.rel.core.Aggregate) r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Calc) { > return provider0.getNodeTypes((org.apache.calcite.rel.core.Calc) r, > mq); > } else if (r instanceof org.apache.calcite.rel.core.Correlate) { > return > provider0.getNodeTypes((org.apache.calcite.rel.core.Correlate) r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Exchange) { > return provider0.getNodeTypes((org.apache.calcite.rel.core.Exchange) > r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Filter) { > return provider0.getNodeTypes((org.apache.calcite.rel.core.Filter) > r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Intersect) { > return > provider0.getNodeTypes((org.apache.calcite.rel.core.Intersect) r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Join) { > return provider0.getNodeTypes((org.apache.calcite.rel.core.Join) r, > mq); > } else if (r instanceof org.apache.calcite.rel.core.Match) { > return provider0.getNodeTypes((org.apache.calcite.rel.core.Match) r, > mq); > } else if (r instanceof org.apache.calcite.rel.core.Minus) { > return provider0.getNodeTypes((org.apache.calcite.rel.core.Minus) r, > mq); > } else if (r instanceof org.apache.calcite.rel.core.Project) { > return provider0.getNodeTypes((org.apache.calcite.rel.core.Project) > r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Sample) { > return provider0.getNodeTypes((org.apache.calcite.rel.core.Sample) > r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Sort) { > return provider0.getNodeTypes((org.apache.calcite.rel.core.Sort) r, > mq); > } else if (r instanceof org.apache.calcite.rel.core.TableModify) { > return > provider0.getNodeTypes((org.apache.calcite.rel.core.TableModify) r, mq); > } else if (r instanceof org.apache.calcite.rel.core.TableScan) { > return > provider0.getNodeTypes((org.apache.calcite.rel.core.TableScan) r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Union) { > return provider0.getNodeTypes((org.apache.calcite.rel.core.Union) r, > mq); > } else if (r instanceof org.apache.calcite.rel.core.Values) { > return provider0.getNodeTypes((org.apache.calcite.rel.core.Values) > r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Window) { > return provider0.getNodeTypes((org.apache.calcite.rel.core.Window) > r, mq); > } else if (r instanceof org.apache.calcite.rel.RelNode) { > return provider0.getNodeTypes((org.apache.calcite.rel.RelNode) r, > mq); > } else { > throw new java.lang.IllegalArgumentException("No handler for > method [public abstract com.google.common.collect.Multimap > org.apache.calcite.rel.metadata.BuiltInMetadata$NodeTypes$Handler.getNodeTypes(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.metadata.RelMetadataQuery)] > applied to argument of type [" + r.getClass() + "]; we recommend you create > a catch-all (RelNode) handler"); > } > } > > } > > /* > * Licensed to the Apache Software Foundation (ASF) under one or more > * contributor license agreements. See the NOTICE file distributed with > * this work for additional information regarding copyright ownership. > * The ASF licenses this file to you under the Apache License, Version 2.0 > * (the "License"); you may not use this file except in compliance with > * the License. You may obtain a copy of the License at > * > * http://www.apache.org/licenses/LICENSE-2.0 > * > * Unless required by applicable law or agreed to in writing, software > * distributed under the License is distributed on an "AS IS" BASIS, > * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > * See the License for the specific language governing permissions and > * limitations under the License. > */ > package org.apache.calcite.rel.metadata.janino; > > public final class GeneratedMetadata_PredicatesHandler > implements > org.apache.calcite.rel.metadata.BuiltInMetadata.Predicates.Handler { > private final Object methodKey0 = > new > org.apache.calcite.rel.metadata.janino.DescriptiveCacheKey("RelOptPredicateList > Handler.getPredicates()"); > public final org.apache.calcite.rel.metadata.RelMdPredicates provider0; > public GeneratedMetadata_PredicatesHandler( > org.apache.calcite.rel.metadata.RelMdPredicates provider0) { > this.provider0 = provider0; > } > public org.apache.calcite.rel.metadata.MetadataDef getDef() { > return provider0.getDef(); > } > public org.apache.calcite.plan.RelOptPredicateList getPredicates( > org.apache.calcite.rel.RelNode r, > org.apache.calcite.rel.metadata.RelMetadataQuery mq) { > while (r instanceof > org.apache.calcite.rel.metadata.DelegatingMetadataRel) { > r = ((org.apache.calcite.rel.metadata.DelegatingMetadataRel) > r).getMetadataDelegateRel(); > } > final Object key; > key = methodKey0; > final Object v = mq.map.get(r, key); > if (v != null) { > if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { > throw new > org.apache.calcite.rel.metadata.CyclicMetadataException(); > } > if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { > return null; > } > return (org.apache.calcite.plan.RelOptPredicateList) v; > } > mq.map.put(r, key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); > try { > final org.apache.calcite.plan.RelOptPredicateList x = > getPredicates_(r, mq); > mq.map.put(r, key, > org.apache.calcite.rel.metadata.NullSentinel.mask(x)); > return x; > } catch (java.lang.Exception e) { > mq.map.row(r).clear(); > throw e; > } > } > > private org.apache.calcite.plan.RelOptPredicateList getPredicates_( > org.apache.calcite.rel.RelNode r, > org.apache.calcite.rel.metadata.RelMetadataQuery mq) { > if (r instanceof org.apache.calcite.plan.volcano.RelSubset) { > return > provider0.getPredicates((org.apache.calcite.plan.volcano.RelSubset) r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Aggregate) { > return > provider0.getPredicates((org.apache.calcite.rel.core.Aggregate) r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Exchange) { > return > provider0.getPredicates((org.apache.calcite.rel.core.Exchange) r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Filter) { > return provider0.getPredicates((org.apache.calcite.rel.core.Filter) > r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Intersect) { > return > provider0.getPredicates((org.apache.calcite.rel.core.Intersect) r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Join) { > return provider0.getPredicates((org.apache.calcite.rel.core.Join) r, > mq); > } else if (r instanceof org.apache.calcite.rel.core.Minus) { > return provider0.getPredicates((org.apache.calcite.rel.core.Minus) > r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Project) { > return provider0.getPredicates((org.apache.calcite.rel.core.Project) > r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Sort) { > return provider0.getPredicates((org.apache.calcite.rel.core.Sort) r, > mq); > } else if (r instanceof org.apache.calcite.rel.core.TableModify) { > return > provider0.getPredicates((org.apache.calcite.rel.core.TableModify) r, mq); > } else if (r instanceof org.apache.calcite.rel.core.TableScan) { > return > provider0.getPredicates((org.apache.calcite.rel.core.TableScan) r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Union) { > return provider0.getPredicates((org.apache.calcite.rel.core.Union) > r, mq); > } else if (r instanceof org.apache.calcite.rel.RelNode) { > return provider0.getPredicates((org.apache.calcite.rel.RelNode) r, > mq); > } else { > throw new java.lang.IllegalArgumentException("No handler for > method [public abstract org.apache.calcite.plan.RelOptPredicateList > org.apache.calcite.rel.metadata.BuiltInMetadata$Predicates$Handler.getPredicates(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.metadata.RelMetadataQuery)] > applied to argument of type [" + r.getClass() + "]; we recommend you create > a catch-all (RelNode) handler"); > } > } > > } > > /* > * Licensed to the Apache Software Foundation (ASF) under one or more > * contributor license agreements. See the NOTICE file distributed with > * this work for additional information regarding copyright ownership. > * The ASF licenses this file to you under the Apache License, Version 2.0 > * (the "License"); you may not use this file except in compliance with > * the License. You may obtain a copy of the License at > * > * http://www.apache.org/licenses/LICENSE-2.0 > * > * Unless required by applicable law or agreed to in writing, software > * distributed under the License is distributed on an "AS IS" BASIS, > * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > * See the License for the specific language governing permissions and > * limitations under the License. > */ > package org.apache.calcite.rel.metadata.janino; > > public final class GeneratedMetadata_RowCountHandler > implements > org.apache.calcite.rel.metadata.BuiltInMetadata.RowCount.Handler { > private final Object methodKey0 = > new > org.apache.calcite.rel.metadata.janino.DescriptiveCacheKey("Double > Handler.getRowCount()"); > public final org.apache.calcite.rel.metadata.RelMdRowCount provider0; > public GeneratedMetadata_RowCountHandler( > org.apache.calcite.rel.metadata.RelMdRowCount provider0) { > this.provider0 = provider0; > } > public org.apache.calcite.rel.metadata.MetadataDef getDef() { > return provider0.getDef(); > } > public java.lang.Double getRowCount( > org.apache.calcite.rel.RelNode r, > org.apache.calcite.rel.metadata.RelMetadataQuery mq) { > while (r instanceof > org.apache.calcite.rel.metadata.DelegatingMetadataRel) { > r = ((org.apache.calcite.rel.metadata.DelegatingMetadataRel) > r).getMetadataDelegateRel(); > } > final Object key; > key = methodKey0; > final Object v = mq.map.get(r, key); > if (v != null) { > if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { > throw new > org.apache.calcite.rel.metadata.CyclicMetadataException(); > } > if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { > return null; > } > return (java.lang.Double) v; > } > mq.map.put(r, key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); > try { > final java.lang.Double x = getRowCount_(r, mq); > mq.map.put(r, key, > org.apache.calcite.rel.metadata.NullSentinel.mask(x)); > return x; > } catch (java.lang.Exception e) { > mq.map.row(r).clear(); > throw e; > } > } > > private java.lang.Double getRowCount_( > org.apache.calcite.rel.RelNode r, > org.apache.calcite.rel.metadata.RelMetadataQuery mq) { > if (r instanceof > org.apache.calcite.adapter.enumerable.EnumerableLimit) { > return > provider0.getRowCount((org.apache.calcite.adapter.enumerable.EnumerableLimit) > r, mq); > } else if (r instanceof org.apache.calcite.plan.volcano.RelSubset) { > return > provider0.getRowCount((org.apache.calcite.plan.volcano.RelSubset) r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Aggregate) { > return provider0.getRowCount((org.apache.calcite.rel.core.Aggregate) > r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Calc) { > return provider0.getRowCount((org.apache.calcite.rel.core.Calc) r, > mq); > } else if (r instanceof org.apache.calcite.rel.core.Exchange) { > return provider0.getRowCount((org.apache.calcite.rel.core.Exchange) > r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Filter) { > return provider0.getRowCount((org.apache.calcite.rel.core.Filter) r, > mq); > } else if (r instanceof org.apache.calcite.rel.core.Intersect) { > return provider0.getRowCount((org.apache.calcite.rel.core.Intersect) > r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Join) { > return provider0.getRowCount((org.apache.calcite.rel.core.Join) r, > mq); > } else if (r instanceof org.apache.calcite.rel.core.Minus) { > return provider0.getRowCount((org.apache.calcite.rel.core.Minus) r, > mq); > } else if (r instanceof org.apache.calcite.rel.core.Project) { > return provider0.getRowCount((org.apache.calcite.rel.core.Project) > r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Sort) { > return provider0.getRowCount((org.apache.calcite.rel.core.Sort) r, > mq); > } else if (r instanceof org.apache.calcite.rel.core.TableModify) { > return > provider0.getRowCount((org.apache.calcite.rel.core.TableModify) r, mq); > } else if (r instanceof org.apache.calcite.rel.core.TableScan) { > return provider0.getRowCount((org.apache.calcite.rel.core.TableScan) > r, mq); > } else if (r instanceof org.apache.calcite.rel.core.Union) { > return provider0.getRowCount((org.apache.calcite.rel.core.Union) r, > mq); > } else if (r instanceof org.apache.calcite.rel.core.Values) { > return provider0.getRowCount((org.apache.calcite.rel.core.Values) r, > mq); > } else if (r instanceof org.apache.calcite.rel.SingleRel) { > return provider0.getRowCount((org.apache.calcite.rel.SingleRel) r, > mq); > } else if (r instanceof org.apache.calcite.rel.RelNode) { > return provider0.getRowCount((org.apache.calcite.rel.RelNode) r, mq); > } else { > throw new java.lang.IllegalArgumentException("No handler for > method [public abstract java.lang.Double > org.apache.calcite.rel.metadata.BuiltInMetadata$RowCount$Handler.getRowCount(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.metadata.RelMetadataQuery)] > applied to argument of type [" + r.getClass() + "]; we recommend you create > a catch-all (RelNode) handler"); > } > } > > } > > /* > * Licensed to the Apache Software Foundation (ASF) under one or more > * contributor license agreements. See the NOTICE file distributed with > * this work for additional information regarding copyright ownership. > * The ASF licenses this file to you under the Apache License, Version 2.0 > * (the "License"); you may not use this file except in compliance with > * the License. You may obtain a copy of the License at > * > * http://www.apache.org/licenses/LICENSE-2.0 > * > * Unless required by applicable law or agreed to in writing, software > * distributed under the License is distributed on an "AS IS" BASIS, > * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > * See the License for the specific language governing permissions and > * limitations under the License. > */ > package org.apache.calcite.rel.metadata.janino; > > public final class GeneratedMetadata_DistinctRowCountHandler > implements > org.apache.calcite.rel.metadata.BuiltInMetadata.DistinctRowCount.Handler { > private final Object methodKey0 = > new > org.apache.calcite.rel.metadata.janino.DescriptiveCacheKey("Double > Handler.getDistinctRowCount(RelNode, RelMetadataQuery, ImmutableBitSet, > RexNode)"); > public final org.apache.calcite.rel.metadata.RelMdDistinctRowCount > provider0; > public GeneratedMetadata_DistinctRowCountHandler( > org.apache.calcite.rel.metadata.RelMdDistinctRowCount provider0) { > this.provider0 = provider0; > } > public org.apache.calcite.rel.metadata.MetadataDef getDef() { > return provider0.getDef(); > } > public java.lang.Double getDistinctRowCount( > org.apache.calcite.rel.RelNode r, > org.apache.calcite.rel.metadata.RelMetadataQuery mq, > org.apache.calcite.util.ImmutableBitSet a2, > org.apache.calcite.rex.RexNode a3) { > while (r instanceof > org.apache.calcite.rel.metadata.DelegatingMetadataRel) { > r = ((org.apache.calcite.rel.metadata.DelegatingMetadataRel) > r).getMetadataDelegateRel(); > } > final Object key; > key = org.apache.calcite.runtime.FlatLists.of(methodKey0, > org.apache.calcite.rel.metadata.NullSentinel.mask(a2), a3); > final Object v = mq.map.get(r, key); > if (v != null) { > if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { > throw new > org.apache.calcite.rel.metadata.CyclicMetadataException(); > } > if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { > return null; > } > return (java.lang.Double) v; > } > mq.map.put(r, key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); > try { > final java.lang.Double x = getDistinctRowCount_(r, mq, a2, a3); > mq.map.put(r, key, > org.apache.calcite.rel.metadata.NullSentinel.mask(x)); > return x; > } catch (java.lang.Exception e) { > mq.map.row(r).clear(); > throw e; > } > } > > private java.lang.Double getDistinctRowCount_( > org.apache.calcite.rel.RelNode r, > org.apache.calcite.rel.metadata.RelMetadataQuery mq, > org.apache.calcite.util.ImmutableBitSet a2, > org.apache.calcite.rex.RexNode a3) { > if (r instanceof org.apache.calcite.plan.volcano.RelSubset) { > return > provider0.getDistinctRowCount((org.apache.calcite.plan.volcano.RelSubset) > r, mq, a2, a3); > } else if (r instanceof org.apache.calcite.rel.core.Aggregate) { > return > provider0.getDistinctRowCount((org.apache.calcite.rel.core.Aggregate) r, > mq, a2, a3); > } else if (r instanceof org.apache.calcite.rel.core.Exchange) { > return > provider0.getDistinctRowCount((org.apache.calcite.rel.core.Exchange) r, mq, > a2, a3); > } else if (r instanceof org.apache.calcite.rel.core.Filter) { > return > provider0.getDistinctRowCount((org.apache.calcite.rel.core.Filter) r, mq, > a2, a3); > } else if (r instanceof org.apache.calcite.rel.core.Join) { > return > provider0.getDistinctRowCount((org.apache.calcite.rel.core.Join) r, mq, a2, > a3); > } else if (r instanceof org.apache.calcite.rel.core.Project) { > return > provider0.getDistinctRowCount((org.apache.calcite.rel.core.Project) r, mq, > a2, a3); > } else if (r instanceof org.apache.calcite.rel.core.Sort) { > return > provider0.getDistinctRowCount((org.apache.calcite.rel.core.Sort) r, mq, a2, > a3); > } else if (r instanceof org.apache.calcite.rel.core.TableModify) { > return > provider0.getDistinctRowCount((org.apache.calcite.rel.core.TableModify) r, > mq, a2, a3); > } else if (r instanceof org.apache.calcite.rel.core.Union) { > return > provider0.getDistinctRowCount((org.apache.calcite.rel.core.Union) r, mq, > a2, a3); > } else if (r instanceof org.apache.calcite.rel.core.Values) { > return > provider0.getDistinctRowCount((org.apache.calcite.rel.core.Values) r, mq, > a2, a3); > } else if (r instanceof org.apache.calcite.rel.RelNode) { > return > provider0.getDistinctRowCount((org.apache.calcite.rel.RelNode) r, mq, a2, > a3); > } else { > throw new java.lang.IllegalArgumentException("No handler for > method [public abstract java.lang.Double > org.apache.calcite.rel.metadata.BuiltInMetadata$DistinctRowCount$Handler.getDistinctRowCount(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.metadata.RelMetadataQuery,org.apache.calcite.util.ImmutableBitSet,org.apache.calcite.rex.RexNode)] > applied to argument of type [" + r.getClass() + "]; we recommend you create > a catch-all (RelNode) handler"); > } > } > > } > > /* > * Licensed to the Apache Software Foundation (ASF) under one or more > * contributor license agreements. See the NOTICE file distributed with > * this work for additional information regarding copyright ownership. > * The ASF licenses this file to you under the Apache License, Version 2.0 > * (the "License"); you may not use this file except in compliance with > * the License. You may obtain a copy of the License at > * > * http://www.apache.org/licenses/LICENSE-2.0 > * > * Unless required by applicable law or agreed to in writing, software > * distributed under the License is distributed on an "AS IS" BASIS, > * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > * See the License for the specific language governing permissions and > * limitations under the License. > */ > package org.apache.calcite.rel.metadata.janino; > > public final class GeneratedMetadata_ColumnUniquenessHandler > implements > org.apache.calcite.rel.metadata.BuiltInMetadata.ColumnUniqueness.Handler { > private final Object methodKey0 = > new > org.apache.calcite.rel.metadata.janino.DescriptiveCacheKey("Boolean > Handler.areColumnsUnique(RelNode, RelMetadataQuery, ImmutableBitSet, > boolean)"); > public final org.apache.calcite.rel.metadata.RelMdColumnUniqueness > provider0; > public GeneratedMetadata_ColumnUniquenessHandler( > org.apache.calcite.rel.metadata.RelMdColumnUniqueness provider0) { > this.provider0 = provider0; > } > public org.apache.calcite.rel.metadata.MetadataDef getDef() { > return provider0.getDef(); > } > public java.lang.Boolean areColumnsUnique( > org.apache.calcite.rel.RelNode r, > org.apache.calcite.rel.metadata.RelMetadataQuery mq, > org.apache.calcite.util.ImmutableBitSet a2, > boolean a3) { > while (r instanceof > org.apache.calcite.rel.metadata.DelegatingMetadataRel) { > r = ((org.apache.calcite.rel.metadata.DelegatingMetadataRel) > r).getMetadataDelegateRel(); > } > final Object key; > key = org.apache.calcite.runtime.FlatLists.of(methodKey0, > org.apache.calcite.rel.metadata.NullSentinel.mask(a2), a3); > final Object v = mq.map.get(r, key); > if (v != null) { > if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { > throw new > org.apache.calcite.rel.metadata.CyclicMetadataException(); > } > if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { > return null; > } > return (java.lang.Boolean) v; > } > mq.map.put(r, key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); > try { > final java.lang.Boolean x = areColumnsUnique_(r, mq, a2, a3); > mq.map.put(r, key, > org.apache.calcite.rel.metadata.NullSentinel.mask(x)); > return x; > } catch (java.lang.Exception e) { > mq.map.row(r).clear(); > throw e; > } > } > > private java.lang.Boolean areColumnsUnique_( > org.apache.calcite.rel.RelNode r, > org.apache.calcite.rel.metadata.RelMetadataQuery mq, > org.apache.calcite.util.ImmutableBitSet a2, > boolean a3) { > if (r instanceof org.apache.calcite.plan.volcano.RelSubset) { > return > provider0.areColumnsUnique((org.apache.calcite.plan.volcano.RelSubset) r, > mq, a2, a3); > } else if (r instanceof org.apache.calcite.rel.convert.Converter) { > return > provider0.areColumnsUnique((org.apache.calcite.rel.convert.Converter) r, > mq, a2, a3); > } else if (r instanceof org.apache.calcite.rel.core.Aggregate) { > return > provider0.areColumnsUnique((org.apache.calcite.rel.core.Aggregate) r, mq, > a2, a3); > } else if (r instanceof org.apache.calcite.rel.core.Calc) { > return provider0.areColumnsUnique((org.apache.calcite.rel.core.Calc) > r, mq, a2, a3); > } else if (r instanceof org.apache.calcite.rel.core.Correlate) { > return > provider0.areColumnsUnique((org.apache.calcite.rel.core.Correlate) r, mq, > a2, a3); > } else if (r instanceof org.apache.calcite.rel.core.Exchange) { > return > provider0.areColumnsUnique((org.apache.calcite.rel.core.Exchange) r, mq, > a2, a3); > } else if (r instanceof org.apache.calcite.rel.core.Filter) { > return > provider0.areColumnsUnique((org.apache.calcite.rel.core.Filter) r, mq, a2, > a3); > } else if (r instanceof org.apache.calcite.rel.core.Intersect) { > return > provider0.areColumnsUnique((org.apache.calcite.rel.core.Intersect) r, mq, > a2, a3); > } else if (r instanceof org.apache.calcite.rel.core.Join) { > return provider0.areColumnsUnique((org.apache.calcite.rel.core.Join) > r, mq, a2, a3); > } else if (r instanceof org.apache.calcite.rel.core.Minus) { > return > provider0.areColumnsUnique((org.apache.calcite.rel.core.Minus) r, mq, a2, > a3); > } else if (r instanceof org.apache.calcite.rel.core.Project) { > return > provider0.areColumnsUnique((org.apache.calcite.rel.core.Project) r, mq, a2, > a3); > } else if (r instanceof org.apache.calcite.rel.core.SetOp) { > return > provider0.areColumnsUnique((org.apache.calcite.rel.core.SetOp) r, mq, a2, > a3); > } else if (r instanceof org.apache.calcite.rel.core.Sort) { > return provider0.areColumnsUnique((org.apache.calcite.rel.core.Sort) > r, mq, a2, a3); > } else if (r instanceof org.apache.calcite.rel.core.TableModify) { > return > provider0.areColumnsUnique((org.apache.calcite.rel.core.TableModify) r, mq, > a2, a3); > } else if (r instanceof org.apache.calcite.rel.core.TableScan) { > return > provider0.areColumnsUnique((org.apache.calcite.rel.core.TableScan) r, mq, > a2, a3); > } else if (r instanceof org.apache.calcite.rel.core.Values) { > return > provider0.areColumnsUnique((org.apache.calcite.rel.core.Values) r, mq, a2, > a3); > } else if (r instanceof org.apache.calcite.rel.RelNode) { > return provider0.areColumnsUnique((org.apache.calcite.rel.RelNode) > r, mq, a2, a3); > } else { > throw new java.lang.IllegalArgumentException("No handler for > method [public abstract java.lang.Boolean > org.apache.calcite.rel.metadata.BuiltInMetadata$ColumnUniqueness$Handler.areColumnsUnique(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.metadata.RelMetadataQuery,org.apache.calcite.util.ImmutableBitSet,boolean)] > applied to argument of type [" + r.getClass() + "]; we recommend you create > a catch-all (RelNode) handler"); > } > } > > } > > > /* 1 */ public static class Record1_0 implements java.io.Serializable { > /* 2 */ public long f0; > /* 3 */ public Record1_0() {} > /* 4 */ public boolean equals(Object o) { > /* 5 */ if (this == o) { > /* 6 */ return true; > /* 7 */ } > /* 8 */ if (!(o instanceof Record1_0)) { > /* 9 */ return false; > /* 10 */ } > /* 11 */ return this.f0 == ((Record1_0) o).f0; > /* 12 */ } > /* 13 */ > /* 14 */ public int hashCode() { > /* 15 */ int h = 0; > /* 16 */ h = org.apache.calcite.runtime.Utilities.hash(h, this.f0); > /* 17 */ return h; > /* 18 */ } > /* 19 */ > /* 20 */ public int compareTo(Record1_0 that) { > /* 21 */ final int c; > /* 22 */ c = org.apache.calcite.runtime.Utilities.compare(this.f0, > that.f0); > /* 23 */ if (c != 0) { > /* 24 */ return c; > /* 25 */ } > /* 26 */ return 0; > /* 27 */ } > /* 28 */ > /* 29 */ public String toString() { > /* 30 */ return "{f0=" + this.f0 + "}"; > /* 31 */ } > /* 32 */ > /* 33 */ } > /* 34 */ > /* 35 */ public org.apache.calcite.linq4j.Enumerable bind(final > org.apache.calcite.DataContext root) { > /* 36 */ java.util.List accumulatorAdders = new java.util.LinkedList(); > /* 37 */ accumulatorAdders.add(new > org.apache.calcite.linq4j.function.Function2() { > /* 38 */ public Record1_0 apply(Record1_0 acc, Object[] in) { > /* 39 */ acc.f0++; > /* 40 */ return acc; > /* 41 */ } > /* 42 */ public Record1_0 apply(Object acc, Object in) { > /* 43 */ return apply( > /* 44 */ (Record1_0) acc, > /* 45 */ (Object[]) in); > /* 46 */ } > /* 47 */ } > /* 48 */ ); > /* 49 */ org.apache.calcite.adapter.enumerable.AggregateLambdaFactory > lambdaFactory = new > org.apache.calcite.adapter.enumerable.BasicAggregateLambdaFactory( > /* 50 */ new org.apache.calcite.linq4j.function.Function0() { > /* 51 */ public Object apply() { > /* 52 */ long COUNTa0s0; > /* 53 */ COUNTa0s0 = 0L; > /* 54 */ Record1_0 record0; > /* 55 */ record0 = new Record1_0(); > /* 56 */ record0.f0 = COUNTa0s0; > /* 57 */ return record0; > /* 58 */ } > /* 59 */ } > /* 60 */ , > /* 61 */ accumulatorAdders); > /* 62 */ return > org.apache.calcite.linq4j.Linq4j.singletonEnumerable(org.apache.calcite.schema.Schemas.enumerable((org.apache.calcite.schema.ScannableTable) > root.getRootSchema().getSubSchema("js").getTable("t1"), > root).aggregate(lambdaFactory.accumulatorInitializer().apply(), > lambdaFactory.accumulatorAdder(), > lambdaFactory.singleGroupResultSelector(new > org.apache.calcite.linq4j.function.Function1() { > /* 63 */ public long apply(Record1_0 acc) { > /* 64 */ return acc.f0; > /* 65 */ } > /* 66 */ public Object apply(Object acc) { > /* 67 */ return apply( > /* 68 */ (Record1_0) acc); > /* 69 */ } > /* 70 */ } > /* 71 */ ))); > /* 72 */ } > /* 73 */ > /* 74 */ > /* 75 */ public Class getElementType() { > /* 76 */ return long.class; > /* 77 */ } > /* 78 */ > /* 79 */ > 2022-02-23 15:02:59.636 INFO 78585 --- [ main] > ConditionEvaluationReportLoggingListener : > > Error starting ApplicationContext. To display the conditions report re-run > your application with 'debug' enabled. > 2022-02-23 15:02:59.703 ERROR 78585 --- [ main] > o.s.boot.SpringApplication : Application run failed > > java.lang.IllegalStateException: Failed to execute ApplicationRunner > at > org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:761) > ~[spring-boot-2.6.2.jar:2.6.2] > at > org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:748) > ~[spring-boot-2.6.2.jar:2.6.2] > at > org.springframework.boot.SpringApplication.run(SpringApplication.java:309) > ~[spring-boot-2.6.2.jar:2.6.2] > at > org.springframework.boot.SpringApplication.run(SpringApplication.java:1301) > ~[spring-boot-2.6.2.jar:2.6.2] > at > org.springframework.boot.SpringApplication.run(SpringApplication.java:1290) > ~[spring-boot-2.6.2.jar:2.6.2] > at > com.xsmartware.javatest.JavaTestApplication.main(JavaTestApplication.java:9) > ~[classes/:na] > Caused by: java.sql.SQLException: Error while executing SQL "select > count(*) from js.t1": null > at > org.apache.calcite.avatica.Helper.createException(Helper.java:56) > ~[avatica-core-1.20.0.jar:1.20.0] > at > org.apache.calcite.avatica.Helper.createException(Helper.java:41) > ~[avatica-core-1.20.0.jar:1.20.0] > at > org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:163) > ~[avatica-core-1.20.0.jar:1.20.0] > at > org.apache.calcite.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:227) > ~[avatica-core-1.20.0.jar:1.20.0] > at com.xsmartware.common.util.SQLUtil.exeGetLong(SQLUtil.java:42) > ~[classes/:na] > at > com.xsmartware.javatest.calcite.CalCiteTest.test10(CalCiteTest.java:145) > ~[classes/:na] > at > com.xsmartware.javatest.calcite.CalCiteTest.run(CalCiteTest.java:114) > ~[classes/:na] > at > org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:758) > ~[spring-boot-2.6.2.jar:2.6.2] > ... 5 common frames omitted > Caused by: java.lang.NullPointerException: null > at > org.apache.calcite.adapter.json.JsonEnumerator.<init>(JsonEnumerator.java:49) > ~[classes/:na] > at > org.apache.calcite.adapter.json.JsonScannableTable$1.enumerator(JsonScannableTable.java:48) > ~[classes/:na] > at > org.apache.calcite.linq4j.EnumerableDefaults.aggregate(EnumerableDefaults.java:130) > ~[calcite-linq4j-1.29.0.jar:1.29.0] > at > org.apache.calcite.linq4j.DefaultEnumerable.aggregate(DefaultEnumerable.java:107) > ~[calcite-linq4j-1.29.0.jar:1.29.0] > at Baz.bind(Baz.java:62) ~[na:na] > at > org.apache.calcite.jdbc.CalcitePrepare$CalciteSignature.enumerable(CalcitePrepare.java:363) > ~[calcite-core-1.29.0.jar:1.29.0] > at > org.apache.calcite.jdbc.CalciteConnectionImpl.enumerable(CalciteConnectionImpl.java:338) > ~[calcite-core-1.29.0.jar:1.29.0] > at > org.apache.calcite.jdbc.CalciteMetaImpl._createIterable(CalciteMetaImpl.java:578) > ~[calcite-core-1.29.0.jar:1.29.0] > at > org.apache.calcite.jdbc.CalciteMetaImpl.createIterable(CalciteMetaImpl.java:569) > ~[calcite-core-1.29.0.jar:1.29.0] > at > org.apache.calcite.avatica.AvaticaResultSet.execute(AvaticaResultSet.java:184) > ~[avatica-core-1.20.0.jar:1.20.0] > at > org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.java:64) > ~[calcite-core-1.29.0.jar:1.29.0] > at > org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.java:43) > ~[calcite-core-1.29.0.jar:1.29.0] > at > org.apache.calcite.avatica.AvaticaConnection$1.execute(AvaticaConnection.java:666) > ~[avatica-core-1.20.0.jar:1.20.0] > at > org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:638) > ~[calcite-core-1.29.0.jar:1.29.0] > at > org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:674) > ~[avatica-core-1.20.0.jar:1.20.0] > at > org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:156) > ~[avatica-core-1.20.0.jar:1.20.0] > ... 10 common frames omitted > > > > > > ------------------ Original ------------------ > From: "Julian Hyde";<jhyde.apa...@gmail.com>; > Send time: Wednesday, Feb 23, 2022 8:27 AM > To: "dev"<dev@calcite.apache.org>; > > Subject: Re: dynamic reflective schema > > > > Every time I see "at Baz.bind” I am reminded that I should have chosen a > better name for that class than ‘Baz’. :) > > I figured ‘it’s generated, no one is ever going to know its name’. How > wrong I was. The stack traces are all over the internet. > > Julian > > > > On Feb 22, 2022, at 3:32 PM, Scott Reynolds <sdrreyno...@gmail.com> > wrote: > > > > Whenever I see "at Baz.bind(Unknown Source)" I am reminded how important > it > > is, when debugging, to set the System Property calcite.debug = true > > > https://github.com/apache/calcite/blob/a8a6569e6ba75efe9d5725c49338a7f181d3ab5c/core/src/main/java/org/apache/calcite/config/CalciteSystemProperty.java#L59 > > > > That will get you a good stack trace and will help you figure out the > > generated code is attempting to do. > > > > On Tue, Feb 22, 2022 at 5:35 AM xiaobo <guxiaobo1...@qq.com.invalid> > wrote: > > > >> we have static data conbination use cases , reflective shcema is > the > >> best choice! > >> > >> > >> > >> ---Original--- > >> From: "Gavin Ray"<ray.gavi...@gmail.com> > >> Date: Mon, Feb 21, 2022 01:52 AM > >> To: "dev"<dev@calcite.apache.org>; > >> Subject: Re: dynamic reflective schema > >> > >> > >> Ah, you don't want to use ReflectiveSchema, it's a simple schema type > meant > >> for easily making test schemas > >> > >> You want to extend from "AbstractSchema" and override the function > >> "Map<String, Table> getTableMap()" > >> For the "Table" type, you probably want to use "JsonScannableTable" > >> > >> The CsvSchema example does exactly this, if you want to see an example > >> implementation: > >> > >> > https://github.com/apache/calcite/blob/4bc916619fd286b2c0cc4d5c653c96a68801d74e/example/csv/src/main/java/org/apache/calcite/adapter/csv/CsvSchema.java#L69-L106 > >> > >> Hope this helps =) > >> > >> > >> > >> On Sat, Feb 19, 2022 at 11:03 PM xiaobo <guxiaobo1...@qq.com.invalid > > > >> wrote: > >> > >> > Hi, > >> > When using reflectiveSchema we must define a static Java > class > >> for the > >> > schema object, but in our use case the actual data to query is > >> dynamic, > >> > define JAVA class for each data combination is impossible, we have > an > >> idea > >> > that can we make a JSONSchema which accepts a Map<String, > >> > List<JSONObject>>, so that each List will be mapped to a > table > >> , and each > >> > JSONObject mapped to a row, JSONObject keys will be column names. > Is > >> there > >> > anything similar with this? > >> > > >> > > >> > Regards