Skip to content

Commit 6686c60

Browse files
improvements in the SQL API
1 parent 7549ec4 commit 6686c60

File tree

2 files changed

+30
-6
lines changed

2 files changed

+30
-6
lines changed

src/main/java/examples/Examples.java

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
package examples;
22

33
// Import classes:
4-
import io.tiledb.cloud.TileDBClient;
5-
import io.tiledb.cloud.TileDBUDF;
4+
import io.tiledb.cloud.*;
65
import io.tiledb.cloud.rest_api.ApiException;
7-
import io.tiledb.cloud.TileDBLogin;
86
import io.tiledb.cloud.rest_api.api.GroupsApi;
97
import io.tiledb.cloud.rest_api.api.ArrayApi;
108
import io.tiledb.cloud.rest_api.model.*;
9+
import org.apache.arrow.vector.ValueVector;
1110

1211
import java.math.BigDecimal;
1312
import java.util.ArrayList;
@@ -46,6 +45,23 @@ public static void main(String[] args) {
4645
// listGroups(tileDBClient);
4746
// deleteArray(tileDBClient);
4847
// deregisterArray(tileDBClient);
48+
// runSQL(tileDBClient);
49+
// runSQLArrow(tileDBClient);
50+
51+
}
52+
53+
private static void runSQL(TileDBClient tileDBClient) {
54+
SQLParameters sqlParameters = new SQLParameters();
55+
sqlParameters.setQuery("SELECT * FROM `tiledb://TileDB-Inc/quickstart_sparse`");
56+
TileDBSQL tileDBSQL = new TileDBSQL(tileDBClient, "TileDB-Inc", sqlParameters);
57+
System.out.println(tileDBSQL.exec());
58+
}
59+
60+
private static void runSQLArrow(TileDBClient tileDBClient) {
61+
SQLParameters sqlParameters = new SQLParameters();
62+
sqlParameters.setQuery("SELECT * FROM `tiledb://TileDB-Inc/quickstart_sparse`");
63+
TileDBSQL tileDBSQL = new TileDBSQL(tileDBClient, "TileDB-Inc", sqlParameters);
64+
Pair<ArrayList<ValueVector>, Integer> a = tileDBSQL.execArrow();
4965
}
5066

5167
/**

src/main/java/io/tiledb/cloud/TileDBSQL.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io.tiledb.cloud.rest_api.ApiException;
44
import io.tiledb.cloud.rest_api.api.SqlApi;
5+
import io.tiledb.cloud.rest_api.model.ResultFormat;
56
import io.tiledb.cloud.rest_api.model.SQLParameters;
67
import org.apache.arrow.memory.RootAllocator;
78
import org.apache.arrow.memory.UnsafeAllocationManager;
@@ -56,7 +57,11 @@ public TileDBSQL(TileDBClient tileDBClient, String namespace, SQLParameters sql)
5657
*/
5758
public Pair<ArrayList<ValueVector>, Integer> execArrow(){
5859
try {
59-
assert sql.getResultFormat() != null;
60+
if (sql.getResultFormat() != ResultFormat.ARROW && sql.getResultFormat() != null){
61+
throw new ApiException("The ResultFormat you specified is not 'ARROW'. Since you are calling " +
62+
"'execArrow()' you can not specify a different ResultFormat. ");
63+
}
64+
sql.setResultFormat(ResultFormat.ARROW);
6065
byte[] bytes = apiInstance.runSQLBytes(namespace, sql, "none");
6166
ArrayList<ValueVector> valueVectors = null;
6267
int readBatchesCount = 0;
@@ -95,8 +100,11 @@ public Pair<ArrayList<ValueVector>, Integer> execArrow(){
95100
*/
96101
public List<Object> exec(){
97102
try {
98-
assert sql.getResultFormat() != null;
99-
return apiInstance.runSQL(namespace, sql, sql.getResultFormat().toString());
103+
if (sql.getResultFormat() == null ){
104+
return apiInstance.runSQL(namespace, sql, ResultFormat.TILEDB_JSON.toString());
105+
} else {
106+
return apiInstance.runSQL(namespace, sql, sql.getResultFormat().toString());
107+
}
100108
} catch (ApiException e) {
101109
System.err.println("Exception when calling SqlApi#runSQL/runSQLBytes");
102110
System.err.println("Status code: " + e.getCode());

0 commit comments

Comments
 (0)