Skip to content

Commit 37f2c83

Browse files
committed
Changed setBuffer to return the Query instance instead of the ByteBuffer
1 parent dbd7683 commit 37f2c83

File tree

2 files changed

+41
-27
lines changed

2 files changed

+41
-27
lines changed

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

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,7 @@ public synchronized Query setBuffer(String attr, NativeArray buffer, long buffer
496496
* @return The NIO ByteBuffer
497497
* @throws TileDBError
498498
*/
499-
public synchronized ByteBuffer setBuffer(String attr, long bufferElements) throws TileDBError {
499+
public synchronized Query setBuffer(String attr, long bufferElements) throws TileDBError {
500500
if (bufferElements <= 0) {
501501
throw new TileDBError("Number of buffer elements must be >= 1");
502502
}
@@ -521,7 +521,7 @@ public synchronized ByteBuffer setBuffer(String attr, long bufferElements) throw
521521

522522
this.setBuffer(attr, buffer);
523523

524-
return buffer;
524+
return this;
525525
}
526526

527527
/**
@@ -532,7 +532,7 @@ public synchronized ByteBuffer setBuffer(String attr, long bufferElements) throw
532532
* @return The NIO ByteBuffer
533533
* @throws TileDBError
534534
*/
535-
public synchronized ByteBuffer setBuffer(String attr, ByteBuffer buffer) throws TileDBError {
535+
public synchronized Query setBuffer(String attr, ByteBuffer buffer) throws TileDBError {
536536
if (buffer.capacity() <= 0) {
537537
throw new TileDBError("Number of buffer elements must be >= 1");
538538
}
@@ -566,7 +566,7 @@ public synchronized ByteBuffer setBuffer(String attr, ByteBuffer buffer) throws
566566
tiledb.tiledb_query_set_buffer_nio(
567567
ctx.getCtxp(), queryp, attr, buffer, values_array_size.cast()));
568568

569-
return buffer;
569+
return this;
570570
}
571571

572572
/**
@@ -1054,8 +1054,10 @@ public Object getBuffer(String attr) throws TileDBError {
10541054
* @return The ByteBuffer
10551055
* @throws TileDBError A TileDB exception
10561056
*/
1057-
public ByteBuffer getByteBuffer(String attr) throws TileDBError {
1058-
if (byteBuffers_.containsKey(attr)) return byteBuffers_.get(attr);
1057+
public Pair<ByteBuffer, ByteBuffer> getByteBuffer(String attr) throws TileDBError {
1058+
if (byteBuffers_.containsKey(attr)) return new Pair(null, byteBuffers_.get(attr));
1059+
else if (varByteBuffers_.containsKey(attr))
1060+
return new Pair(varByteBuffers_.get(attr).getFirst(), varByteBuffers_.get(attr).getSecond());
10591061
else throw new TileDBError("ByteBuffer does not exist for attribute: " + attr);
10601062
}
10611063

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

Lines changed: 33 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -314,8 +314,10 @@ public void queryTestNIOReadArray() throws Exception {
314314

315315
int bufferSize = 4;
316316

317-
ByteBuffer d1 = query.setBuffer("rows", bufferSize);
318-
ByteBuffer d2 = query.setBuffer("cols", bufferSize);
317+
query.setBuffer("rows", bufferSize);
318+
query.setBuffer("cols", bufferSize);
319+
ByteBuffer d1 = query.getByteBuffer("rows").getSecond();
320+
ByteBuffer d2 = query.getByteBuffer("cols").getSecond();
319321

320322
query.addRange(0, 1, 4);
321323
query.addRange(1, 1, 4);
@@ -354,9 +356,10 @@ public void queryTestNIOReadArrayArbitrarySize() throws Exception {
354356
Query query = new Query(array, TILEDB_READ);
355357

356358
int bufferSize = 4;
357-
358-
ByteBuffer d1 = query.setBuffer("rows", ByteBuffer.allocateDirect(10));
359-
ByteBuffer d2 = query.setBuffer("cols", ByteBuffer.allocateDirect(10));
359+
query.setBuffer("rows", ByteBuffer.allocateDirect(10));
360+
query.setBuffer("cols", ByteBuffer.allocateDirect(10));
361+
ByteBuffer d1 = query.getByteBuffer("rows").getSecond();
362+
ByteBuffer d2 = query.getByteBuffer("cols").getSecond();
360363

361364
query.addRange(0, 1, 4);
362365
query.addRange(1, 1, 4);
@@ -399,10 +402,12 @@ public void arrayReadTest() throws Exception {
399402
query.addRange(1, 2, 4);
400403
query.setLayout(TILEDB_ROW_MAJOR);
401404

402-
ByteBuffer dim1Buffer = query.setBuffer("rows", 3);
403-
ByteBuffer dim2Buffer = query.setBuffer("cols", 3);
404-
ByteBuffer a1Buffer = query.setBuffer("a1", 3);
405-
ByteBuffer a2Buffer = query.setBuffer("a2", 6);
405+
query.setBuffer("rows", 3).setBuffer("cols", 3).setBuffer("a1", 3).setBuffer("a2", 6);
406+
407+
ByteBuffer dim1Buffer = query.getByteBuffer("rows").getSecond();
408+
ByteBuffer dim2Buffer = query.getByteBuffer("cols").getSecond();
409+
ByteBuffer a1Buffer = query.getByteBuffer("a1").getSecond();
410+
ByteBuffer a2Buffer = query.getByteBuffer("a2").getSecond();
406411

407412
// Submit query
408413
query.submit();
@@ -459,12 +464,16 @@ public void arrayReadTestCustomBufferWithDifferentOrder() throws Exception {
459464
? ByteOrder.LITTLE_ENDIAN
460465
: ByteOrder.BIG_ENDIAN;
461466

462-
ByteBuffer dim1Buffer =
463-
query.setBuffer("rows", ByteBuffer.allocateDirect(3 * 4).order(order));
464-
ByteBuffer dim2Buffer =
465-
query.setBuffer("cols", ByteBuffer.allocateDirect(3 * 4).order(order));
466-
ByteBuffer a1Buffer = query.setBuffer("a1", ByteBuffer.allocateDirect(3).order(order));
467-
ByteBuffer a2Buffer = query.setBuffer("a2", ByteBuffer.allocateDirect(6 * 4).order(order));
467+
query
468+
.setBuffer("rows", ByteBuffer.allocateDirect(3 * 4).order(order))
469+
.setBuffer("cols", ByteBuffer.allocateDirect(3 * 4).order(order))
470+
.setBuffer("a1", ByteBuffer.allocateDirect(3).order(order))
471+
.setBuffer("a2", ByteBuffer.allocateDirect(6 * 4).order(order));
472+
473+
ByteBuffer dim1Buffer = query.getByteBuffer("rows").getSecond();
474+
ByteBuffer dim2Buffer = query.getByteBuffer("cols").getSecond();
475+
ByteBuffer a1Buffer = query.getByteBuffer("a1").getSecond();
476+
ByteBuffer a2Buffer = query.getByteBuffer("a2").getSecond();
468477

469478
// Submit query
470479
query.submit();
@@ -514,9 +523,9 @@ public void queryTestNIOGetByteBuffer() throws Exception {
514523

515524
query.setBuffer("rows", bufferSize);
516525

517-
Assert.assertEquals(query.getByteBuffer("rows").capacity(), bufferSize * 4);
518-
Assert.assertTrue(query.getByteBuffer("rows").isDirect());
519-
Assert.assertEquals(query.getByteBuffer("rows").order(), ByteOrder.nativeOrder());
526+
Assert.assertEquals(query.getByteBuffer("rows").getSecond().capacity(), bufferSize * 4);
527+
Assert.assertTrue(query.getByteBuffer("rows").getSecond().isDirect());
528+
Assert.assertEquals(query.getByteBuffer("rows").getSecond().order(), ByteOrder.nativeOrder());
520529
}
521530

522531
@Test()
@@ -544,7 +553,8 @@ public void queryTestNIOGetByteBuffeErrors() throws Exception {
544553
: ByteOrder.BIG_ENDIAN;
545554

546555
// The Byte Order should be automatically changed to the native order
547-
ByteBuffer b = query.setBuffer("rows", ByteBuffer.allocateDirect(bufferSize).order(order));
556+
query.setBuffer("rows", ByteBuffer.allocateDirect(bufferSize).order(order));
557+
ByteBuffer b = query.getByteBuffer("rows").getSecond();
548558
Assert.assertEquals(b.order(), ByteOrder.nativeOrder());
549559
}
550560

@@ -566,10 +576,12 @@ public void queryTestNIOSetBufferVarChar() throws Exception {
566576

567577
int idx = 0;
568578

569-
while (offsetsBuffer.hasRemaining()) offsets[idx++] = offsetsBuffer.getLong();
579+
while (q.getByteBuffer("a1").getFirst().hasRemaining())
580+
offsets[idx++] = offsetsBuffer.getLong();
570581

571582
idx = 0;
572-
while (dataBuffer.hasRemaining()) data[idx++] = (char) dataBuffer.get();
583+
while (q.getByteBuffer("a1").getSecond().hasRemaining())
584+
data[idx++] = (char) dataBuffer.get();
573585

574586
Assert.assertArrayEquals(new long[] {0, 2, 4, 6, 8, 10, 12, 14}, offsets);
575587
Assert.assertEquals("aabbccddeeffgghh", new String(data));

0 commit comments

Comments
 (0)