You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Julian Hyde (JIRA)" <ji...@apache.org> on 2017/03/13 20:03:41 UTC

[jira] [Resolved] (CALCITE-1692) JDBC UPDATE does not use correct schema name

     [ https://issues.apache.org/jira/browse/CALCITE-1692?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Julian Hyde resolved CALCITE-1692.
----------------------------------
       Resolution: Duplicate
    Fix Version/s: 1.12.0

Duplicate of CALCITE-1672.

> JDBC UPDATE does not use correct schema name
> --------------------------------------------
>
>                 Key: CALCITE-1692
>                 URL: https://issues.apache.org/jira/browse/CALCITE-1692
>             Project: Calcite
>          Issue Type: Bug
>          Components: jdbc-adapter
>    Affects Versions: 1.11.0, 1.12.0
>            Reporter: David Evans
>            Assignee: Julian Hyde
>             Fix For: 1.12.0
>
>
> When using a model which has a different Calcite schema name than the DB schema name, the queries generated for `UPDATE` statements are incorrect (use the calcite schema name rather than the DB schema name). This also affects `INSERT` and probably `DELETE` too (haven't tested delete specifically). `SELECT` behaves correctly.
> Example:
> {code:json}
> {
>   "version": "1.0",
>   "defaultSchema": "doesntmatter",
>   "schemas": [
>     {
>       "name": "virtschema",
>       "type": "custom",
>       "factory": "org.apache.calcite.adapter.jdbc.JdbcSchema$Factory",
>       "operand": {
>         "jdbcDriver": "org.postgresql.Driver",
>         "jdbcUrl": "jdbc:postgresql://localhost:5432/my-database",
>         "jdbcUser": "my-username",
>         "jdbcPassword": "my-password",
>         "jdbcSchema": "hr"
>       }
>     }
>   ]
> }
> {code}
> {code:java}
> import org.apache.calcite.jdbc.CalciteConnection;
> import java.sql.Connection;
> import java.sql.DriverManager;
> import java.sql.ResultSet;
> import java.sql.Statement;
> import java.util.Properties;
> public class Main {
> 	public static void main(String[] argv) throws Exception {
> 		System.out.println("Setup");
> 		Class.forName("org.apache.calcite.jdbc.Driver");
> 		Class.forName(org.apache.calcite.jdbc.Driver.class.getName());
> 		Properties info = new Properties();
> 		info.setProperty("lex", "JAVA");
> 		info.setProperty("model", "src/main/resources/model.json");
> 		Connection calConnection = DriverManager.getConnection("jdbc:calcite:", info);
> 		CalciteConnection calciteConnection = calConnection.unwrap(CalciteConnection.class);
> 		Statement statement = calciteConnection.createStatement();
> 		ResultSet results = statement.executeQuery("SELECT deptno FROM virtschema.emps"); // Correctly converts to hr.emps
> 		results.next();
> 		System.out.println("Data: " + results.getInt(1));
> 		results.close();
> 		boolean success = statement.execute("UPDATE virtschema.emps SET deptno=7"); // Incorrectly leaves as virtschema.emps
> 		System.out.println("Success: " + success);
> 		statement.close();
> 		calConnection.close();
> 		System.out.println("Closed");
> 	}
> }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)