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)