4paradigm / 4paradigm/OpenMLDB

Support JDBC API to getMetaData

Ouverte
#3,772 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
C++
Étoiles
1.7k
Forks
331
Merge moyen
12 j 12 h
PR mergées (30 j)
1

Description

**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)
```

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

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.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java, mysql
Domaine
api, backend, databases
Type d'issue
Fonctionnalité
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
30/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.