4paradigm / 4paradigm/OpenMLDB

Support JDBC API to getMetaData

Đang mở
#3,772 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
C++
Star
1.7k
Fork
331
Merge trung bình
12 ngày 12 giờ
Pull request đã merge (30 ngày)
1

Mô tả

**Describe the feature you'd like**

We may support standard JDBC API to get meta data so that we can get schema from result set.

Here is the basic usage.

```
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;

public class Main {
public static void main(String[] args) {
try {
// Establish a connection to your database
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database", "username", "password");

// Create a statement
Statement stmt = conn.createStatement();

// Execute a query
ResultSet rs = stmt.executeQuery("SELECT * FROM your_table");

// Get the metadata of the result set
ResultSetMetaData rsMetaData = rs.getMetaData();

// Get the number of columns in the result set
int columnCount = rsMetaData.getColumnCount();

// Print column names and types
System.out.println("Column Count: " + columnCount);
for (int i = 1; i <= columnCount; i++) {
String columnName = rsMetaData.getColumnName(i);
String columnType = rsMetaData.getColumnTypeName(i);
System.out.println("Column " + i + ": Name=" + columnName + ", Type=" + columnType);
}

// Close the result set, statement, and connection
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```

Currently we may get the error of null pointer exception.

```
java.io.IOException: current do not support this method
at com._4paradigm.openmldb.OpenmldbMysqlServer$1.query(OpenmldbMysqlServer.java:80)
at cn.paxos.mysql.MySqlListener.handleQuery(MySqlListener.java:307)
at cn.paxos.mysql.MySqlListener$ServerHandler.channelRead(MySqlListener.java:150)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:38)
at io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:353)
at io.netty.util.concurrent.DefaultEventExecutor.run(DefaultEventExecutor.java:66)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:897)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:834)
java.lang.NullPointerException
at cn.paxos.mysql.MySqlListener.handleQuery(MySqlListener.java:315)
at cn.paxos.mysql.MySqlListener$ServerHandler.channelRead(MySqlListener.java:150)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:38)
at io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:353)
at io.netty.util.concurrent.DefaultEventExecutor.run(DefaultEventExecutor.java:66)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:897)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:834)
```

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

The issue points to OpenmldbMysqlServer.java line 80 where the query method throws an error. Look at the JDBC driver implementation in the codebase, likely under a java or jdbc module. Understand how result sets are currently handled and where metadata should be populated. Check existing tests for JDBC functionality to see the expected behavior. Implementing getMetaData requires understanding the OpenMLDB schema system and mapping it to JDBC types.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
java, mysql
Lĩnh vực
api, backend, databases
Loại issue
Tính năng
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Đặc tả rõ ràng
Mức phù hợp với người mới
30/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.