You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "asdfgh19 (Jira)" <ji...@apache.org> on 2022/12/28 07:41:00 UTC

[jira] [Updated] (CALCITE-5462) unknown type -1 and unknown type -4 for mysql json and blob columns

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

asdfgh19 updated CALCITE-5462:
------------------------------
    Description: 
The following code throws SQLException: Error while executing SQL "SELECT * FROM test": unknown type -1,when the table contains columns of type json or blob.

Client side:
{code:java}
public static void main(String[] args) throws ClassNotFoundException {
    Class.forName("org.apache.calcite.avatica.remote.Driver");
    Properties prop = new Properties();
    prop.put("serialization", "protobuf");
    try(Connection conn = DriverManager.getConnection(
        "jdbc:eniot:url=http://localhost:5888", prop);
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM test")) {
        while (rs.next()) {
            log.info("{}, {}", rs.getObject(1),
                rs.getObject(2));
        }
    } catch (SQLException e) {
        throw new RuntimeException(e);
    }
} {code}
Server side:
{code:java}
public static void main(String[] args) throws SQLException {
    String url = "jdbc:mysql://localhost:3306/db1";
    JdbcMeta meta = new JdbcMeta(url, "root", "root");
    LocalService service = new LocalService(meta);
    HttpServer server = new HttpServer.Builder<>()
        .withPort(5888)
        .withHandler(service, Driver.Serialization.PROTOBUF)
        .build();
    server.start();
    new Thread(() -> {
        try {
            server.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }).start();
} {code}

  was:
The following code throws SQLException: Error while executing SQL "SELECT * FROM test": unknown type -1,when the table contains columns of type json or blob.

Client side:
{code:java}
public static void main(String[] args) throws ClassNotFoundException {
    Class.forName("org.apache.eniot.avatica.Driver");
    Properties prop = new Properties();
    prop.put("serialization", "protobuf");
    try(Connection conn = DriverManager.getConnection(
        "jdbc:eniot:url=http://localhost:5888", prop);
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM test")) {
        while (rs.next()) {
            log.info("{}, {}", rs.getObject(1),
                rs.getObject(2));
        }
    } catch (SQLException e) {
        throw new RuntimeException(e);
    }
} {code}
Server side:
{code:java}
public static void main(String[] args) throws SQLException {
    String url = "jdbc:mysql://localhost:3306/db1";
    JdbcMeta meta = new JdbcMeta(url, "root", "root");
    LocalService service = new LocalService(meta);
    HttpServer server = new HttpServer.Builder<>()
        .withPort(5888)
        .withHandler(service, Driver.Serialization.PROTOBUF)
        .build();
    server.start();
    new Thread(() -> {
        try {
            server.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }).start();
} {code}


> unknown type -1 and unknown type -4 for mysql json and blob columns
> -------------------------------------------------------------------
>
>                 Key: CALCITE-5462
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5462
>             Project: Calcite
>          Issue Type: Bug
>          Components: avatica
>    Affects Versions: avatica-1.22.0
>            Reporter: asdfgh19
>            Priority: Major
>
> The following code throws SQLException: Error while executing SQL "SELECT * FROM test": unknown type -1,when the table contains columns of type json or blob.
> Client side:
> {code:java}
> public static void main(String[] args) throws ClassNotFoundException {
>     Class.forName("org.apache.calcite.avatica.remote.Driver");
>     Properties prop = new Properties();
>     prop.put("serialization", "protobuf");
>     try(Connection conn = DriverManager.getConnection(
>         "jdbc:eniot:url=http://localhost:5888", prop);
>         Statement stmt = conn.createStatement();
>         ResultSet rs = stmt.executeQuery("SELECT * FROM test")) {
>         while (rs.next()) {
>             log.info("{}, {}", rs.getObject(1),
>                 rs.getObject(2));
>         }
>     } catch (SQLException e) {
>         throw new RuntimeException(e);
>     }
> } {code}
> Server side:
> {code:java}
> public static void main(String[] args) throws SQLException {
>     String url = "jdbc:mysql://localhost:3306/db1";
>     JdbcMeta meta = new JdbcMeta(url, "root", "root");
>     LocalService service = new LocalService(meta);
>     HttpServer server = new HttpServer.Builder<>()
>         .withPort(5888)
>         .withHandler(service, Driver.Serialization.PROTOBUF)
>         .build();
>     server.start();
>     new Thread(() -> {
>         try {
>             server.join();
>         } catch (InterruptedException e) {
>             e.printStackTrace();
>         }
>     }).start();
> } {code}



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