1
1
package org .apache .arrow .datafusion ;
2
2
3
3
import java .nio .file .Path ;
4
+ import java .util .Optional ;
4
5
import java .util .concurrent .CompletableFuture ;
5
6
import java .util .function .Consumer ;
6
7
import org .slf4j .Logger ;
@@ -19,6 +20,8 @@ static native void registerCsv(
19
20
static native void registerParquet (
20
21
long runtime , long context , String name , String path , Consumer <String > callback );
21
22
23
+ static native long registerTable (long context , String name , long tableProvider ) throws Exception ;
24
+
22
25
@ Override
23
26
public CompletableFuture <DataFrame > sql (String sql ) {
24
27
long runtime = getRuntime ().getPointer ();
@@ -64,6 +67,16 @@ public CompletableFuture<Void> registerParquet(String name, Path path) {
64
67
return future ;
65
68
}
66
69
70
+ @ Override
71
+ public Optional <TableProvider > registerTable (String name , TableProvider tableProvider )
72
+ throws Exception {
73
+ long previouslyRegistered = registerTable (getPointer (), name , tableProvider .getPointer ());
74
+ if (previouslyRegistered == 0 ) {
75
+ return Optional .empty ();
76
+ }
77
+ return Optional .of (new DefaultTableProvider (previouslyRegistered ));
78
+ }
79
+
67
80
private void voidCallback (CompletableFuture <Void > future , String errMessage ) {
68
81
if (null != errMessage && !errMessage .isEmpty ()) {
69
82
future .completeExceptionally (new RuntimeException (errMessage ));
0 commit comments