22
33import static io .tiledb .java .api .Datatype .*;
44import static io .tiledb .java .api .Layout .TILEDB_ROW_MAJOR ;
5+ import static io .tiledb .java .api .Layout .TILEDB_UNORDERED ;
56import static io .tiledb .java .api .QueryType .TILEDB_READ ;
67import static io .tiledb .java .api .QueryType .TILEDB_WRITE ;
78
@@ -17,6 +18,7 @@ public class ArrayTest {
1718
1819 private Context ctx ;
1920 private String arrayURI ;
21+ private String dimName ;
2022 private String attributeName ;
2123 private byte [] key ;
2224
@@ -26,6 +28,7 @@ public class ArrayTest {
2628 public void setup () throws Exception {
2729 ctx = new Context ();
2830 arrayURI = temp .getRoot ().toString ();
31+ dimName = "d1" ;
2932 attributeName = "a1" ;
3033 String keyString = "0123456789abcdeF0123456789abcdeF" ;
3134 key = keyString .getBytes (StandardCharsets .US_ASCII );
@@ -46,14 +49,14 @@ private Object[] getArray(Object val) {
4649 return outputArray ;
4750 }
4851
49- public ArraySchema schemaCreate () throws Exception {
52+ public ArraySchema schemaCreate (ArrayType type ) throws TileDBError {
5053 Dimension <Long > d1 =
5154 new Dimension <Long >(ctx , "d1" , Long .class , new Pair <Long , Long >(1l , 4l ), 2l );
5255 Domain domain = new Domain (ctx );
5356 domain .addDimension (d1 );
5457
5558 Attribute a1 = new Attribute (ctx , attributeName , Long .class );
56- ArraySchema schema = new ArraySchema (ctx , ArrayType . TILEDB_DENSE );
59+ ArraySchema schema = new ArraySchema (ctx , type );
5760 schema .setTileOrder (Layout .TILEDB_ROW_MAJOR );
5861 schema .setCellOrder (Layout .TILEDB_ROW_MAJOR );
5962 schema .setDomain (domain );
@@ -62,6 +65,34 @@ public ArraySchema schemaCreate() throws Exception {
6265 return schema ;
6366 }
6467
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+
6596 public void insertArbitraryValuesMeth (Array array , NativeArray a_data ) throws TileDBError {
6697 // Create query
6798 try (Query query = new Query (array , TILEDB_WRITE )) {
@@ -260,6 +291,70 @@ public void testArraygetNonEmptyDomainFromName() throws Exception {
260291 }
261292 }
262293
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+
263358 @ Test
264359 public void testArrayMetadata () throws Exception {
265360 Array .create (arrayURI , schemaCreate ());
0 commit comments