Skip to content

Commit 801f553

Browse files
fix query conditions on String atts
1 parent e6bb3e3 commit 801f553

File tree

2 files changed

+21
-9
lines changed

2 files changed

+21
-9
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,9 @@ public QueryCondition(
125125
if (value.getClass().isArray()) {
126126
array = new NativeArray(ctx, value, type);
127127
} else {
128-
int byteSize = type.getNativeSize();
128+
int byteSize;
129+
if (value instanceof String) byteSize = ((String) value).length();
130+
else byteSize = type.getNativeSize();
129131
array = new NativeArray(ctx, byteSize, type);
130132
array.setItem(0, value);
131133
}

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

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import static io.tiledb.java.api.ArrayType.*;
2828
import static io.tiledb.java.api.Datatype.TILEDB_FLOAT32;
2929
import static io.tiledb.java.api.Datatype.TILEDB_INT32;
30+
import static io.tiledb.java.api.Datatype.TILEDB_STRING_ASCII;
3031
import static io.tiledb.java.api.Datatype.TILEDB_UINT8;
3132
import static io.tiledb.java.api.Layout.*;
3233
import static io.tiledb.java.api.QueryType.*;
@@ -118,13 +119,16 @@ public void arrayCreate() throws Exception {
118119
Attribute a1 = new Attribute(ctx, "a1", TILEDB_INT32);
119120
a1.setNullable(true);
120121
Attribute a2 = new Attribute(ctx, "a2", TILEDB_FLOAT32);
122+
Attribute a3 = new Attribute(ctx, "a3", TILEDB_STRING_ASCII);
123+
a3.setCellVar();
121124

122125
ArraySchema schema = new ArraySchema(ctx, TILEDB_DENSE);
123126
schema.setTileOrder(TILEDB_ROW_MAJOR);
124127
schema.setCellOrder(TILEDB_ROW_MAJOR);
125128
schema.setDomain(domain);
126129
schema.addAttribute(a1);
127130
schema.addAttribute(a2);
131+
schema.addAttribute(a3);
128132

129133
schema.check();
130134

@@ -135,6 +139,10 @@ public void arrayWrite() throws Exception {
135139

136140
Array my_dense_array = new Array(ctx, arrayURI, TILEDB_WRITE);
137141

142+
NativeArray a3_offsets =
143+
new NativeArray(ctx, new long[] {0, 2, 4, 6, 8, 10, 12, 14, 16}, Datatype.TILEDB_UINT64);
144+
NativeArray a3_data = new NativeArray(ctx, "aabbccddeeffgghhii", Datatype.TILEDB_STRING_ASCII);
145+
138146
// Prepare cell buffers
139147
NativeArray a1_data =
140148
new NativeArray(ctx, new int[] {8, 9, 10, 11, 12, 13, 14, 15, 16}, TILEDB_INT32);
@@ -152,7 +160,9 @@ public void arrayWrite() throws Exception {
152160
query
153161
.setLayout(TILEDB_ROW_MAJOR)
154162
.setBufferNullable("a1", a1_data, a1Bytemap)
155-
.setBuffer("a2", buffer_a2);
163+
.setBuffer("a2", buffer_a2)
164+
.setDataBuffer("a3", a3_data)
165+
.setOffsetsBuffer("a3", a3_offsets);
156166
// Submit query
157167
query.submit();
158168
query.finalizeQuery();
@@ -187,7 +197,9 @@ private void arrayRead() throws Exception {
187197
QueryCondition con3 = con1.combine(con2, TILEDB_AND);
188198
QueryCondition con4 = new QueryCondition(ctx, TILEDB_INT32, "a1", 9, TILEDB_EQ);
189199
QueryCondition con5 = con4.combine(con3, TILEDB_OR);
190-
query.setCondition(con5);
200+
QueryCondition con6 = new QueryCondition(ctx, TILEDB_STRING_ASCII, "a3", "aa", TILEDB_EQ);
201+
QueryCondition con7 = con6.combine(con5, TILEDB_OR);
202+
query.setCondition(con7);
191203

192204
// Submit query
193205
query.submit();
@@ -205,17 +217,15 @@ private void arrayRead() throws Exception {
205217
// to some bugs.
206218
// check a1
207219
Assert.assertArrayEquals(
208-
a1_buff,
209-
new int[] {
210-
-2147483648, 9, -2147483648, -2147483648, -2147483648, 13, -2147483648, -2147483648, 16
211-
});
220+
new int[] {8, 9, -2147483648, -2147483648, -2147483648, 13, -2147483648, -2147483648, 16},
221+
a1_buff);
212222

213223
// check a2
214224
Assert.assertArrayEquals(
215-
a2_buff,
216225
new float[] {
217-
Float.NaN, 14.1f, Float.NaN, Float.NaN, Float.NaN, 15.3f, Float.NaN, Float.NaN, 19.1f
226+
13.2f, 14.1f, Float.NaN, Float.NaN, Float.NaN, 15.3f, Float.NaN, Float.NaN, 19.1f
218227
},
228+
a2_buff,
219229
0.1f);
220230
}
221231
}

0 commit comments

Comments
 (0)