Vishal Wakchaure created CALCITE-6016:
-----------------------------------------

             Summary: Cannot execute SQL on Snowflake connection with error : 
java.lang.IllegalArgumentException: Multiple entries with same key: 
CLASSES=JdbcTable {CLASSES} and CLASSES=JdbcTable {CLASSES}
                 Key: CALCITE-6016
                 URL: https://issues.apache.org/jira/browse/CALCITE-6016
             Project: Calcite
          Issue Type: Bug
          Components: jdbc-adapter
    Affects Versions: 1.35.0
            Reporter: Vishal Wakchaure


_Can be similar to : https://issues.apache.org/jira/browse/DRILL-7415_

I am connected to Snowflake datasource using calcite connection and I am trying 
to execute SQL using a statement.

I have only single table in database.

 

My code :
{code:java}
public static boolean getSnowflakeConnection() throws SQLException {
    String modelPath = "/Users/A200118159/Documents/Code/TestSpringBoot 
2/src/main/resources/models/snowflake_model.json"; 
//"/Users/A200118159/test/snowflake_model.json";
    Properties properties = new Properties();
    properties.setProperty("model", modelPath);
    properties.setProperty("caseSensitive", "false");

// Create a Calcite connection
    Connection connection = DriverManager.getConnection("jdbc:calcite:", 
properties);
    CalciteConnection calciteConnection = 
connection.unwrap(CalciteConnection.class);


    Statement statement = calciteConnection.createStatement();
    ResultSet resultSet = statement.executeQuery("SELECT * FROM PRODUCTS");

    printTable(resultSet);
    calciteConnection.close();
    return true;
  } {code}
Snowflake Model File:
{code:java}
{
  "version": "1.0",
  "defaultSchema": "Snowflake",
  "schemas": [
    {
      "name": "Snowflake",
      "type": "custom",
      "factory": "org.apache.calcite.adapter.jdbc.JdbcSchema$Factory",
      "operand": {
        "jdbcUser": "argus",
        "jdbcPassword": "Argus123",
        "jdbcUrl": 
"jdbc:snowflake://er14275.ap-southeast-1.snowflakecomputing.com/?warehouse=COMPUTE_WH&db=ARGUS_DATA&schema=ARGUS_SCHEMA",
        "jdbcDriver": "net.snowflake.client.jdbc.SnowflakeDriver"
      }
    }
  ]
} {code}
But I am getting below error:

java.lang.IllegalArgumentException: Multiple entries with same key: 
CLASSES=JdbcTable \{CLASSES} and CLASSES=JdbcTable \{CLASSES}
    at 
com.google.common.collect.ImmutableMap.checkNoConflict(ImmutableMap.java:136) 
~[guava-19.0.jar:na]
    at 
com.google.common.collect.RegularImmutableMap.checkNoConflictInKeyBucket(RegularImmutableMap.java:98)
 ~[guava-19.0.jar:na]
    at 
com.google.common.collect.RegularImmutableMap.fromEntryArray(RegularImmutableMap.java:84)
 ~[guava-19.0.jar:na]
    at 
com.google.common.collect.ImmutableMap$Builder.build(ImmutableMap.java:295) 
~[guava-19.0.jar:na]
    at 
org.apache.calcite.adapter.jdbc.JdbcSchema.computeTables(JdbcSchema.java:305) 
~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.adapter.jdbc.JdbcSchema.getTableMap(JdbcSchema.java:361) 
~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.adapter.jdbc.JdbcSchema.getTableNames(JdbcSchema.java:489) 
~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.jdbc.CachingCalciteSchema$2.build(CachingCalciteSchema.java:86)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.jdbc.CachingCalciteSchema$2.build(CachingCalciteSchema.java:83)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.jdbc.CachingCalciteSchema$AbstractCached.get(CachingCalciteSchema.java:318)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.jdbc.CachingCalciteSchema.getImplicitTable(CachingCalciteSchema.java:142)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at org.apache.calcite.jdbc.CalciteSchema.getTable(CalciteSchema.java:295) 
~[calcite-core-1.35.0.jar:1.35.0]
    at org.apache.calcite.sql.validate.EmptyScope.resolve_(EmptyScope.java:144) 
~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.sql.validate.EmptyScope.resolveTable(EmptyScope.java:101) 
~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.sql.validate.DelegatingScope.resolveTable(DelegatingScope.java:230)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.sql.validate.IdentifierNamespace.resolveImpl(IdentifierNamespace.java:116)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.sql.validate.IdentifierNamespace.validateImpl(IdentifierNamespace.java:188)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:88)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1144)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1115)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3456)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3435)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3792)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:61)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:88)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1144)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1115)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:282) 
~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:1090)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:796)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:598)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:257) 
~[calcite-core-1.35.0.jar:1.35.0]
    at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:220) 
~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:665)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:519)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:487)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:236)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:630)
 ~[calcite-core-1.35.0.jar:1.35.0]
    at 
org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:677)
 ~[avatica-core-1.23.0.jar:1.23.0]
    at 
org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:157)
 ~[avatica-core-1.23.0.jar:1.23.0]
    at 
org.apache.calcite.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:228)
 ~[avatica-core-1.23.0.jar:1.23.0]
    at 
com.viwa.TestSpringBoot.service.ProductService.getSnowflakeConnection(ProductService.java:77)
 ~[classes/:na]
    at 
com.viwa.TestSpringBoot.controller.ProductController.connectSnowflake(ProductController.java:59)
 ~[classes/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
~[na:1.8.0_351]
    at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
~[na:1.8.0_351]
    at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[na:1.8.0_351]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_351]
    at 
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
 ~[spring-web-5.3.24.jar:5.3.24]
    at 
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
 ~[spring-web-5.3.24.jar:5.3.24]
    at 
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
 ~[spring-webmvc-5.3.24.jar:5.3.24]
    at 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
 ~[spring-webmvc-5.3.24.jar:5.3.24]
    at 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
 ~[spring-webmvc-5.3.24.jar:5.3.24]
    at 
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
 ~[spring-webmvc-5.3.24.jar:5.3.24]
    at 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071)
 ~[spring-webmvc-5.3.24.jar:5.3.24]
    at 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964)
 ~[spring-webmvc-5.3.24.jar:5.3.24]
    at 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
 ~[spring-webmvc-5.3.24.jar:5.3.24]
    at 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
 ~[spring-webmvc-5.3.24.jar:5.3.24]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:670) 
~[tomcat-embed-core-9.0.70.jar:4.0.FR]
    at 
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
 ~[spring-webmvc-5.3.24.jar:5.3.24]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:779) 
~[tomcat-embed-core-9.0.70.jar:4.0.FR]
    at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
 ~[tomcat-embed-core-9.0.70.jar:9.0.70]
    at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
 ~[tomcat-embed-core-9.0.70.jar:9.0.70]
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 
~[tomcat-embed-websocket-9.0.70.jar:9.0.70]
    at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
 ~[tomcat-embed-core-9.0.70.jar:9.0.70]
    at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
 ~[tomcat-embed-core-9.0.70.jar:9.0.70]
    at 
org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
 ~[spring-web-5.3.24.jar:5.3.24]
    at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
 ~[spring-web-5.3.24.jar:5.3.24]
    at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
 ~[tomcat-embed-core-9.0.70.jar:9.0.70]
    at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
 ~[tomcat-embed-core-9.0.70.jar:9.0.70]
    at 
org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
 ~[spring-web-5.3.24.jar:5.3.24]
    at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
 ~[spring-web-5.3.24.jar:5.3.24]
    at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
 ~[tomcat-embed-core-9.0.70.jar:9.0.70]
    at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
 ~[tomcat-embed-core-9.0.70.jar:9.0.70]
    at 
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
 ~[spring-web-5.3.24.jar:5.3.24]
    at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
 ~[spring-web-5.3.24.jar:5.3.24]
    at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
 ~[tomcat-embed-core-9.0.70.jar:9.0.70]
    at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
 ~[tomcat-embed-core-9.0.70.jar:9.0.70]
    at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177)
 ~[tomcat-embed-core-9.0.70.jar:9.0.70]
    at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
 [tomcat-embed-core-9.0.70.jar:9.0.70]
    at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
 [tomcat-embed-core-9.0.70.jar:9.0.70]
    at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) 
[tomcat-embed-core-9.0.70.jar:9.0.70]
    at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) 
[tomcat-embed-core-9.0.70.jar:9.0.70]
    at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
 [tomcat-embed-core-9.0.70.jar:9.0.70]
    at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) 
[tomcat-embed-core-9.0.70.jar:9.0.70]
    at 
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) 
[tomcat-embed-core-9.0.70.jar:9.0.70]
    at 
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
 [tomcat-embed-core-9.0.70.jar:9.0.70]
    at 
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:891)
 [tomcat-embed-core-9.0.70.jar:9.0.70]
    at 
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1784)
 [tomcat-embed-core-9.0.70.jar:9.0.70]
    at 
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 
[tomcat-embed-core-9.0.70.jar:9.0.70]
    at 
org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
 [tomcat-embed-core-9.0.70.jar:9.0.70]
    at 
org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
 [tomcat-embed-core-9.0.70.jar:9.0.70]
    at 
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
 [tomcat-embed-core-9.0.70.jar:9.0.70]
    at java.lang.Thread.run(Thread.java:750) [na:1.8.0_351]



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to