Skip to content

Commit cb7d138

Browse files
authored
[Fix] bytes in filter string changed after convert byte[] to String (#184)
1 parent 3614e8e commit cb7d138

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

src/main/java/com/alipay/oceanbase/rpc/protocol/payload/impl/execute/query/ObHTableFilter.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public class ObHTableFilter extends AbstractPayload {
5050
private int maxVersions = 1;
5151
private int limitPerRowPerCf = -1; // -1 means unlimited
5252
private int offsetPerRowPerCf = 0; // -1 means unlimited
53-
private String filterString;
53+
private ObBytesString filterString = null;
5454

5555
/*
5656
* Encode.
@@ -95,7 +95,7 @@ public byte[] encode() {
9595
System.arraycopy(Serialization.encodeVi32(offsetPerRowPerCf), 0, bytes, idx, len);
9696
idx += len;
9797
len = Serialization.getNeedBytes(filterString);
98-
System.arraycopy(Serialization.encodeVString(filterString), 0, bytes, idx, len);
98+
System.arraycopy(Serialization.encodeBytesString(filterString), 0, bytes, idx, len);
9999
idx += len;
100100

101101
return bytes;
@@ -120,7 +120,7 @@ public Object decode(ByteBuf buf) {
120120
this.maxVersions = Serialization.decodeVi32(buf);
121121
this.limitPerRowPerCf = Serialization.decodeVi32(buf);
122122
this.offsetPerRowPerCf = Serialization.decodeVi32(buf);
123-
this.filterString = Serialization.decodeVString(buf);
123+
this.filterString = Serialization.decodeBytesString(buf);
124124

125125
return this;
126126
}
@@ -262,14 +262,17 @@ public void setOffsetPerRowPerCf(int offsetPerRowPerCf) {
262262
/*
263263
* Get filter string.
264264
*/
265-
public String getFilterString() {
266-
return filterString;
265+
public byte[] getFilterString() {
266+
return filterString.bytes;
267267
}
268268

269269
/*
270270
* Set filter string.
271271
*/
272-
public void setFilterString(String filterString) {
273-
this.filterString = filterString;
272+
public void setFilterString(byte[] filterString) {
273+
if (this.filterString == null) {
274+
this.filterString = new ObBytesString();
275+
}
276+
this.filterString.bytes = filterString;
274277
}
275278
}

src/test/java/com/alipay/oceanbase/rpc/protocol/payload/impl/execute/query/ObTableQueryPayloadTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import java.util.ArrayList;
2929
import java.util.List;
3030

31+
import static org.junit.Assert.assertArrayEquals;
3132
import static org.junit.Assert.assertEquals;
3233

3334
public class ObTableQueryPayloadTest {
@@ -185,7 +186,7 @@ private void checkObHTableFilter(ObHTableFilter obHTableFilter, ObHTableFilter n
185186
assertEquals(obHTableFilter.getLimitPerRowPerCf(), newObHTableFilter.getLimitPerRowPerCf());
186187
assertEquals(obHTableFilter.getOffsetPerRowPerCf(),
187188
newObHTableFilter.getOffsetPerRowPerCf());
188-
assertEquals(obHTableFilter.getFilterString(), newObHTableFilter.getFilterString());
189+
assertArrayEquals(obHTableFilter.getFilterString(), newObHTableFilter.getFilterString());
189190
assertEquals(obHTableFilter.getSelectColumnQualifier().size(), newObHTableFilter
190191
.getSelectColumnQualifier().size());
191192
assertEquals(new String(obHTableFilter.getSelectColumnQualifier().get(0).bytes),
@@ -204,7 +205,7 @@ private ObHTableFilter getObHTableFilter() {
204205
obHTableFilter.setMaxVersions(300);
205206
obHTableFilter.setLimitPerRowPerCf(400);
206207
obHTableFilter.setOffsetPerRowPerCf(500);
207-
obHTableFilter.setFilterString("123");
208+
obHTableFilter.setFilterString("123".getBytes());
208209

209210
List<ObBytesString> qs = new ArrayList<ObBytesString>();
210211
qs.add(new ObBytesString("q1".getBytes()));

0 commit comments

Comments
 (0)