|
22 | 22 | import static org.junit.Assert.assertNull;
|
23 | 23 | import static org.junit.Assert.assertTrue;
|
24 | 24 | import static org.junit.Assert.fail;
|
25 |
| - |
26 | 25 | import java.io.IOException;
|
27 | 26 | import java.util.Arrays;
|
28 | 27 | import java.util.Collections;
|
@@ -1218,4 +1217,54 @@ public void testCheckAndRowMutationsBatch() throws Throwable {
|
1218 | 1217 | assertEquals("h", Bytes.toString(result.getValue(FAMILY, Bytes.toBytes("H"))));
|
1219 | 1218 | }
|
1220 | 1219 | }
|
| 1220 | + |
| 1221 | + @Test |
| 1222 | + public void testCheckAndMutateForNull() throws Exception { |
| 1223 | + byte[] qualifier = Bytes.toBytes("Q"); |
| 1224 | + try (Table table = createTable()) { |
| 1225 | + byte [] row1 = Bytes.toBytes("testRow1"); |
| 1226 | + Put put = new Put(row1); |
| 1227 | + put.addColumn(FAMILY, qualifier, Bytes.toBytes("v0")); |
| 1228 | + table.put(put); |
| 1229 | + assertEquals("v0", Bytes.toString( |
| 1230 | + table.get(new Get(row1).addColumn(FAMILY, qualifier)).getValue(FAMILY, qualifier))); |
| 1231 | + |
| 1232 | + CheckAndMutate checkAndMutate1 = CheckAndMutate.newBuilder(row1) |
| 1233 | + .ifMatches(FAMILY, qualifier, CompareOperator.NOT_EQUAL, new byte[] {}) |
| 1234 | + .build(new Put(row1).addColumn(FAMILY, qualifier, Bytes.toBytes("v1"))); |
| 1235 | + table.checkAndMutate(checkAndMutate1); |
| 1236 | + assertEquals("v1", Bytes.toString( |
| 1237 | + table.get(new Get(row1).addColumn(FAMILY, qualifier)).getValue(FAMILY, qualifier))); |
| 1238 | + |
| 1239 | + byte [] row2 = Bytes.toBytes("testRow2"); |
| 1240 | + put = new Put(row2); |
| 1241 | + put.addColumn(FAMILY, qualifier, new byte[] {}); |
| 1242 | + table.put(put); |
| 1243 | + assertEquals(0, |
| 1244 | + table.get(new Get(row2).addColumn(FAMILY, qualifier)).getValue(FAMILY, qualifier).length); |
| 1245 | + |
| 1246 | + CheckAndMutate checkAndMutate2 = CheckAndMutate.newBuilder(row2) |
| 1247 | + .ifMatches(FAMILY, qualifier, CompareOperator.EQUAL, new byte[] {}) |
| 1248 | + .build(new Put(row2).addColumn(FAMILY, qualifier, Bytes.toBytes("v2"))); |
| 1249 | + table.checkAndMutate(checkAndMutate2); |
| 1250 | + assertEquals("v2", Bytes.toString( |
| 1251 | + table.get(new Get(row2).addColumn(FAMILY, qualifier)).getValue(FAMILY, qualifier))); |
| 1252 | + |
| 1253 | + byte [] row3 = Bytes.toBytes("testRow3"); |
| 1254 | + put = new Put(row3).addColumn(FAMILY, qualifier, Bytes.toBytes("v0")); |
| 1255 | + assertNull(table.get(new Get(row3).addColumn(FAMILY, qualifier)).getValue(FAMILY, qualifier)); |
| 1256 | + CheckAndMutate checkAndMutate3 = CheckAndMutate.newBuilder(row3) |
| 1257 | + .ifMatches(FAMILY, qualifier, CompareOperator.NOT_EQUAL, new byte[] {}) |
| 1258 | + .build(put); |
| 1259 | + table.checkAndMutate(checkAndMutate3); |
| 1260 | + assertNull(table.get(new Get(row3).addColumn(FAMILY, qualifier)).getValue(FAMILY, qualifier)); |
| 1261 | + |
| 1262 | + CheckAndMutate checkAndMutate4 = CheckAndMutate.newBuilder(row3) |
| 1263 | + .ifMatches(FAMILY, qualifier, CompareOperator.EQUAL, new byte[] {}) |
| 1264 | + .build(put); |
| 1265 | + table.checkAndMutate(checkAndMutate4); |
| 1266 | + assertEquals("v0", Bytes.toString( |
| 1267 | + table.get(new Get(row3).addColumn(FAMILY, qualifier)).getValue(FAMILY, qualifier))); |
| 1268 | + } |
| 1269 | + } |
1221 | 1270 | }
|
0 commit comments