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&nbsp; is the
>> best choice!
>> 
>> 
>> 
>> ---Original---
>> From: "Gavin Ray"<ray.gavi...@gmail.com&gt;
>> Date: Mon, Feb 21, 2022 01:52 AM
>> To: "dev"<dev@calcite.apache.org&gt;;
>> 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&gt; 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&gt;
>> wrote:
>> 
>> &gt; Hi,
>> &gt; When using&nbsp; reflectiveSchema we must define a static Java class
>> for the
>> &gt; schema object, but in our use case the actual data to query is
>> dynamic,
>> &gt; define JAVA class for each data combination is impossible, we have an
>> idea
>> &gt; that can we make a JSONSchema which accepts a Map<String,
>> &gt; List<JSONObject&gt;&gt;, so that each List will be mapped to a table
>> , and each
>> &gt; JSONObject mapped to a row, JSONObject keys will be column names. Is
>> there
>> &gt; anything similar with this?
>> &gt;
>> &gt;
>> &gt; Regards

Reply via email to