[
https://issues.apache.org/jira/browse/CALCITE-1533?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15741121#comment-15741121
]
Prasad V S commented on CALCITE-1533:
-------------------------------------
Ya i'm able to select from the table. I have mentioned that in the code only.
> While executing DML queries says table not found
> -------------------------------------------------
>
> Key: CALCITE-1533
> URL: https://issues.apache.org/jira/browse/CALCITE-1533
> Project: Calcite
> Issue Type: Bug
> Components: jdbc-adapter
> Reporter: Prasad V S
> Assignee: Julian Hyde
>
> I took latest update of CALCITE-1527 still im not able to execute DML queries
> Code :
> BasicDataSource dataSource = new BasicDataSource();
>
> /* SQL Server */
> dataSource.setUrl("jdbc:sqlserver://111.11.11.1:1433");
> dataSource.setUsername("xxxxxxx");
> dataSource.setPassword("xxxxxxxxx");
> dataSource.setDefaultCatalog("TRUNKDB");
>
> dataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
> Class.forName("org.apache.calcite.jdbc.Driver");
> Connection connection =
> DriverManager.getConnection("jdbc:calcite:");
> CalciteConnection calciteConnection =
> connection.unwrap(CalciteConnection.class);
> SchemaPlus rootSchema = calciteConnection.getRootSchema();
>
> /*JDBC Schema*/
> JdbcSchema jdbcSchema = JdbcSchema.create(rootSchema, "TRUNKDB",
> dataSource, null, "dbo");
> rootSchema.add("TRUNKDB", jdbcSchema);
> Statement statement = connection.createStatement();
> // Select statement is working
> ResultSet resultSet = statement.executeQuery("select * from
> \"TRUNKDB\".\"survey\"");
>
> final StringBuilder buf = new StringBuilder();
> while (resultSet.next()) {
> int n = resultSet.getMetaData().getColumnCount();
> for (int i = 1; i <= n; i++) {
> buf.append(i > 1 ? "; " : "")
> .append(resultSet.getMetaData().getColumnLabel(i))
> .append("=")
> .append(resultSet.getObject(i));
> }
> System.out.println(buf.toString());
> buf.setLength(0);
> }
> //insert statement is not working
> int resultSetd1 = statement.executeUpdate("INSERT INTO
> \"TRUNKDB\".\"survey\"(\"id\",\"name\" ) values (1,'s')");
>
> int resultSetd2 = statement.executeUpdate("INSERT INTO
> \"TRUNKDB\".\"survey1\" (\"id\",\"name\" ) SELECT \"id\",\"name\" FROM
> \"TRUNKDB\".\"survey\"");
> System.out.println(resultSetd1);
> System.out.println(resultSetd2);
> Both statement throws the following exception
> Exception in thread "main" java.sql.SQLException: Error while executing SQL
> "INSERT INTO "TRUNKDB"."survey"("id","name" ) values (1,'s')": while
> executing SQL [INSERT INTO "TRUNKDB"."survey" ("id", "name")
> VALUES (1, 's')]
> at org.apache.calcite.avatica.Helper.createException(Helper.java:56)
> at org.apache.calcite.avatica.Helper.createException(Helper.java:41)
> at
> org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:156)
> at
> org.apache.calcite.avatica.AvaticaStatement.executeLargeUpdate(AvaticaStatement.java:236)
> at
> org.apache.calcite.avatica.AvaticaStatement.executeUpdate(AvaticaStatement.java:231)
> at com.nanobi.calcite.CalciteMSSQL.main(CalciteMSSQL.java:150)
> Caused by: java.lang.RuntimeException: while executing SQL [INSERT INTO
> "TRUNKDB"."survey" ("id", "name")
> VALUES (1, 's')]
> at
> org.apache.calcite.runtime.ResultSetEnumerable.enumerator(ResultSetEnumerable.java:154)
> at
> org.apache.calcite.linq4j.AbstractEnumerable.iterator(AbstractEnumerable.java:33)
> at org.apache.calcite.avatica.MetaImpl.createCursor(MetaImpl.java:81)
> at
> org.apache.calcite.avatica.AvaticaResultSet.execute(AvaticaResultSet.java:196)
> at
> org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.java:67)
> at
> org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.java:44)
> at
> org.apache.calcite.avatica.AvaticaConnection$1.execute(AvaticaConnection.java:607)
> at
> org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:599)
> at
> org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:615)
> at
> org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:148)
> ... 3 more
> Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object
> name 'TRUNKDB.survey'.
> at
> com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
> at
> com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515)
> at
> com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:792)
> at
> com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:689)
> at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
> at
> com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180)
> at
> com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155)
> at
> com.microsoft.sqlserver.jdbc.SQLServerStatement.execute(SQLServerStatement.java:662)
> at
> org.apache.commons.dbcp.DelegatingStatement.execute(DelegatingStatement.java:264)
> at
> org.apache.commons.dbcp.DelegatingStatement.execute(DelegatingStatement.java:264)
> at
> org.apache.calcite.runtime.ResultSetEnumerable.enumerator(ResultSetEnumerable.java:144)
> ... 12 more
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)