【已记录】Doris 2.1,DBeaver和DataGrip等sql客户端无法通过Arrow Flight SQL JDBC方式获取库表信息

Viewed 165

使用2款最常见的2个SQL客户端用Arrow Flight SQL JDBC的方式进行连接Doris 2.1.

驱动:flight-sql-jdbc-driver-15.0.2.jar

url:jdbc:arrow-flight-sql://10.1..:9040/?useServerPrepStmts=false&cachePrepStmts=true&useSSL=false&useEncryption=false

可以连接成功
image.png

可以执行SQL
image.png

但是无法获取到库表列表
image.png

详细报错:

java.lang.RuntimeException: cfjd.org.apache.arrow.flight.FlightRuntimeException: UNIMPLEMENTED: getStreamSchemas unimplemented
  at cfjd.org.apache.arrow.flight.CallStatus.toRuntimeException(CallStatus.java:131)
  at cfjd.org.apache.arrow.flight.grpc.StatusUtils.fromGrpcRuntimeException(StatusUtils.java:164)
  at cfjd.org.apache.arrow.flight.grpc.StatusUtils.fromThrowable(StatusUtils.java:185)
  at cfjd.org.apache.arrow.flight.FlightStream$Observer.onError(FlightStream.java:456)
  at cfjd.org.apache.arrow.flight.FlightClient$1.onError(FlightClient.java:350)
  at cfjd.io.grpc.stub.ClientCalls$StreamObserverToCallListenerAdapter.onClose(ClientCalls.java:481)
  at cfjd.io.grpc.PartialForwardingClientCallListener.onClose(PartialForwardingClientCallListener.java:39)
  at cfjd.io.grpc.ForwardingClientCallListener.onClose(ForwardingClientCallListener.java:23)
  at cfjd.io.grpc.ForwardingClientCallListener$SimpleForwardingClientCallListener.onClose(ForwardingClientCallListener.java:40)
  at cfjd.org.apache.arrow.flight.grpc.ClientInterceptorAdapter$FlightClientCallListener.onClose(ClientInterceptorAdapter.java:117)
  at cfjd.io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:574)
  at cfjd.io.grpc.internal.ClientCallImpl.access$300(ClientCallImpl.java:72)
  at cfjd.io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInternal(ClientCallImpl.java:742)
  at cfjd.io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:723)
  at cfjd.io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
  at cfjd.io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
  at java.lang.Thread.run(Thread.java:748) (no stack trace).
cfjd.org.apache.arrow.flight.FlightRuntimeException: UNIMPLEMENTED: getStreamSchemas unimplemented

同样的方式连接CnosDB是可以的,不知道是否可以实现这个可以获取到库表信息到SQL客户端的效果,实现的话就可以替换掉JDBC的方式,使用SQL客户端ADBC的方式去连接Doris进行工作(重要场景),加快网络传输。

2 Answers

应该确实不支持获取库表信息,没单独实现过相关接口。
我记下这个需求,后面实现一波

感谢测试,有问题随时反馈~

内部已记录;
为更具体地了解问题(处理后会更新回帖),可以➕我一下W:yz-jayhua