Skip to content

Commit 35eba73

Browse files
authored
Merge pull request #164 from TileDB-Inc/victorgiannakouris/array_vacuum
Added array_vacuum support
2 parents 765778e + 59447c6 commit 35eba73

File tree

3 files changed

+62
-2
lines changed

3 files changed

+62
-2
lines changed

src/main/java/examples/io/tiledb/java/api/ArrayConsolidateExample.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,12 @@ public class ArrayConsolidateExample {
3131
public static void main(String[] args) throws Exception {
3232
// Create TileDB context
3333
Context ctx = new Context();
34+
String arrayURI = "my_dense_array";
3435

3536
// Consolidate array
36-
Array.consolidate(ctx, "my_dense_array");
37+
Array.consolidate(ctx, arrayURI);
38+
39+
// Vacuum array
40+
Array.vacuum(ctx, arrayURI);
3741
}
3842
}

src/main/java/io/tiledb/java/api/Array.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,35 @@ public static void consolidate(
370370
}
371371
}
372372

373+
/**
374+
* Cleans up the array, such as consolidated fragments and array metadata. Note that this will
375+
* coarsen the granularity of time traveling (see docs for more information).
376+
*
377+
* <p>This method uses as the vacuum configuration the configuration instance that is encapsulated
378+
* in the context (ctx) instance (ctx.getConfig()).
379+
*
380+
* @param arrayURI The array URI
381+
* @param ctx The TileDB context
382+
* @throws TileDBError A TileDB exception
383+
*/
384+
public static void vacuum(Context ctx, String arrayURI) throws TileDBError {
385+
ctx.handleError(
386+
tiledb.tiledb_array_vacuum(ctx.getCtxp(), arrayURI, ctx.getConfig().getConfigp()));
387+
}
388+
389+
/**
390+
* Cleans up the array, such as consolidated fragments and array metadata. Note that this will
391+
* coarsen the granularity of time traveling (see docs for more information).
392+
*
393+
* @param arrayURI The array URI
394+
* @param ctx The TileDB context
395+
* @param config The TileDB config that will be used for the vacuum process
396+
* @throws TileDBError A TileDB exception
397+
*/
398+
public static void vacuum(Context ctx, String arrayURI, Config config) throws TileDBError {
399+
ctx.handleError(tiledb.tiledb_array_vacuum(ctx.getCtxp(), arrayURI, config.getConfigp()));
400+
}
401+
373402
/**
374403
* Checks if a given URI is an existing TileDB array object
375404
*

src/test/java/io/tiledb/java/api/FragmentsConsolidationTest.java

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import static io.tiledb.java.api.QueryType.TILEDB_READ;
66
import static io.tiledb.java.api.QueryType.TILEDB_WRITE;
77

8+
import java.io.File;
89
import java.nio.file.Files;
910
import java.nio.file.Paths;
1011
import java.util.HashMap;
@@ -35,7 +36,7 @@ public void teardown() throws Exception {
3536
}
3637

3738
@Test
38-
public void test() throws Exception {
39+
public void testConsolidate() throws Exception {
3940
// create array
4041
arrayCreate();
4142
// updates
@@ -48,6 +49,32 @@ public void test() throws Exception {
4849
arrayRead();
4950
}
5051

52+
@Test
53+
public void testVacuum() throws Exception {
54+
// create array
55+
arrayCreate();
56+
// updates
57+
arrayWrite1();
58+
arrayWrite2();
59+
arrayWrite3();
60+
// consolidate
61+
Array.consolidate(ctx, arrayURI);
62+
Array.vacuum(ctx, arrayURI);
63+
// verify consolidation
64+
arrayRead();
65+
66+
// verify vacuum
67+
File f = new File(arrayURI);
68+
int nFiles = 0;
69+
for (File file : f.listFiles())
70+
if (file.isDirectory() && !file.getName().equals("__meta")) {
71+
System.out.println(file.getAbsolutePath());
72+
nFiles++;
73+
}
74+
75+
Assert.assertEquals(1, nFiles);
76+
}
77+
5178
public void arrayCreate() throws Exception {
5279

5380
// Create getDimensions

0 commit comments

Comments
 (0)