2
2
3
3
import static io .tiledb .java .api .Datatype .*;
4
4
import static io .tiledb .java .api .Layout .TILEDB_ROW_MAJOR ;
5
+ import static io .tiledb .java .api .Layout .TILEDB_UNORDERED ;
5
6
import static io .tiledb .java .api .QueryType .TILEDB_READ ;
6
7
import static io .tiledb .java .api .QueryType .TILEDB_WRITE ;
7
8
@@ -17,6 +18,7 @@ public class ArrayTest {
17
18
18
19
private Context ctx ;
19
20
private String arrayURI ;
21
+ private String dimName ;
20
22
private String attributeName ;
21
23
private byte [] key ;
22
24
@@ -26,6 +28,7 @@ public class ArrayTest {
26
28
public void setup () throws Exception {
27
29
ctx = new Context ();
28
30
arrayURI = temp .getRoot ().toString ();
31
+ dimName = "d1" ;
29
32
attributeName = "a1" ;
30
33
String keyString = "0123456789abcdeF0123456789abcdeF" ;
31
34
key = keyString .getBytes (StandardCharsets .US_ASCII );
@@ -46,14 +49,14 @@ private Object[] getArray(Object val) {
46
49
return outputArray ;
47
50
}
48
51
49
- public ArraySchema schemaCreate () throws Exception {
52
+ public ArraySchema schemaCreate (ArrayType type ) throws TileDBError {
50
53
Dimension <Long > d1 =
51
54
new Dimension <Long >(ctx , "d1" , Long .class , new Pair <Long , Long >(1l , 4l ), 2l );
52
55
Domain domain = new Domain (ctx );
53
56
domain .addDimension (d1 );
54
57
55
58
Attribute a1 = new Attribute (ctx , attributeName , Long .class );
56
- ArraySchema schema = new ArraySchema (ctx , ArrayType . TILEDB_DENSE );
59
+ ArraySchema schema = new ArraySchema (ctx , type );
57
60
schema .setTileOrder (Layout .TILEDB_ROW_MAJOR );
58
61
schema .setCellOrder (Layout .TILEDB_ROW_MAJOR );
59
62
schema .setDomain (domain );
@@ -62,6 +65,34 @@ public ArraySchema schemaCreate() throws Exception {
62
65
return schema ;
63
66
}
64
67
68
+ public ArraySchema schemaCreate () throws TileDBError {
69
+ return schemaCreate (ArrayType .TILEDB_DENSE );
70
+ }
71
+
72
+ public ArraySchema schemaStringDimsCreate (ArrayType arrayType ) throws Exception {
73
+ Dimension <Long > d1 = new Dimension <Long >(ctx , "d1" , TILEDB_STRING_ASCII , null , null );
74
+ Domain domain = new Domain (ctx );
75
+ domain .addDimension (d1 );
76
+
77
+ ArraySchema schema = new ArraySchema (ctx , arrayType );
78
+
79
+ schema .setDomain (domain );
80
+ schema .check ();
81
+ return schema ;
82
+ }
83
+
84
+ public void insertArbitraryValuesVarSize (
85
+ Array array , String attrName , NativeArray a_data , NativeArray a_offsets , Layout layout )
86
+ throws TileDBError {
87
+ // Create query
88
+ try (Query query = new Query (array , TILEDB_WRITE )) {
89
+ query .setLayout (layout ).setBuffer (attrName , a_offsets , a_data );
90
+ query .submit ();
91
+ query .finalizeQuery ();
92
+ }
93
+ array .close ();
94
+ }
95
+
65
96
public void insertArbitraryValuesMeth (Array array , NativeArray a_data ) throws TileDBError {
66
97
// Create query
67
98
try (Query query = new Query (array , TILEDB_WRITE )) {
@@ -260,6 +291,70 @@ public void testArraygetNonEmptyDomainFromName() throws Exception {
260
291
}
261
292
}
262
293
294
+ @ Test
295
+ public void testArrayGetNonEmptyDomainVarSizeFromIndex () throws Exception {
296
+ Array .create (arrayURI , schemaStringDimsCreate (ArrayType .TILEDB_SPARSE ));
297
+ NativeArray data = new NativeArray (ctx , "aabbccddee" , TILEDB_STRING_ASCII );
298
+ NativeArray offsets = new NativeArray (ctx , new long [] {0 , 2 , 4 , 6 }, TILEDB_UINT64 );
299
+ insertArbitraryValuesVarSize (
300
+ new Array (ctx , arrayURI , TILEDB_WRITE ), dimName , data , offsets , TILEDB_UNORDERED );
301
+
302
+ Array array = new Array (ctx , arrayURI , TILEDB_READ );
303
+
304
+ Pair <BigInteger , BigInteger > size = array .getNonEmptyDomainVarSizeFromIndex (0 );
305
+
306
+ Assert .assertEquals (2 , size .getFirst ().intValue ());
307
+ Assert .assertEquals (4 , size .getSecond ().intValue ());
308
+ }
309
+
310
+ @ Test
311
+ public void testArrayGetNonEmptyDomainVarSizeFromName () throws Exception {
312
+ Array .create (arrayURI , schemaStringDimsCreate (ArrayType .TILEDB_SPARSE ));
313
+ NativeArray data = new NativeArray (ctx , "aabbccddee" , TILEDB_STRING_ASCII );
314
+ NativeArray offsets = new NativeArray (ctx , new long [] {0 , 2 , 4 , 6 }, TILEDB_UINT64 );
315
+ insertArbitraryValuesVarSize (
316
+ new Array (ctx , arrayURI , TILEDB_WRITE ), dimName , data , offsets , TILEDB_UNORDERED );
317
+
318
+ Array array = new Array (ctx , arrayURI , TILEDB_READ );
319
+
320
+ Pair <BigInteger , BigInteger > size = array .getNonEmptyDomainVarSizeFromName (dimName );
321
+
322
+ Assert .assertEquals (2 , size .getFirst ().intValue ());
323
+ Assert .assertEquals (4 , size .getSecond ().intValue ());
324
+ }
325
+
326
+ @ Test
327
+ public void testArrayGetNonEmptyDomainVarFromIndex () throws Exception {
328
+ Array .create (arrayURI , schemaStringDimsCreate (ArrayType .TILEDB_SPARSE ));
329
+ NativeArray data = new NativeArray (ctx , "aabbccddee" , TILEDB_STRING_ASCII );
330
+ NativeArray offsets = new NativeArray (ctx , new long [] {0 , 2 , 4 , 6 }, TILEDB_UINT64 );
331
+ insertArbitraryValuesVarSize (
332
+ new Array (ctx , arrayURI , TILEDB_WRITE ), dimName , data , offsets , TILEDB_UNORDERED );
333
+
334
+ Array array = new Array (ctx , arrayURI , TILEDB_READ );
335
+
336
+ Pair <String , String > size = array .getNonEmptyDomainVarFromIndex (0 );
337
+
338
+ Assert .assertEquals ("aa" , size .getFirst ());
339
+ Assert .assertEquals ("ddee" , size .getSecond ());
340
+ }
341
+
342
+ @ Test
343
+ public void testArrayGetNonEmptyDomainVarFromName () throws Exception {
344
+ Array .create (arrayURI , schemaStringDimsCreate (ArrayType .TILEDB_SPARSE ));
345
+ NativeArray data = new NativeArray (ctx , "aabbccddee" , TILEDB_STRING_ASCII );
346
+ NativeArray offsets = new NativeArray (ctx , new long [] {0 , 2 , 4 , 6 }, TILEDB_UINT64 );
347
+ insertArbitraryValuesVarSize (
348
+ new Array (ctx , arrayURI , TILEDB_WRITE ), dimName , data , offsets , TILEDB_UNORDERED );
349
+
350
+ Array array = new Array (ctx , arrayURI , TILEDB_READ );
351
+
352
+ Pair <String , String > size = array .getNonEmptyDomainVarFromName (dimName );
353
+
354
+ Assert .assertEquals ("aa" , size .getFirst ());
355
+ Assert .assertEquals ("ddee" , size .getSecond ());
356
+ }
357
+
263
358
@ Test
264
359
public void testArrayMetadata () throws Exception {
265
360
Array .create (arrayURI , schemaCreate ());
0 commit comments