Github user JamesRTaylor commented on a diff in the pull request:
https://github.com/apache/phoenix/pull/291#discussion_r166809191
--- Diff:
phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java ---
@@ -1038,32 +1038,21 @@ public void setValue(PColumn column, byte[]
byteValue) {
@Override
public void delete() {
newMutations();
- // we're using the Tephra column family delete marker here to
prevent the translation
- // of deletes to puts by the Tephra's TransactionProcessor
- if (PTableImpl.this.isTransactional()) {
- Put put = new Put(key);
- if (families.isEmpty()) {
-
put.add(SchemaUtil.getEmptyColumnFamily(PTableImpl.this),
TransactionFactory.getTransactionFactory().getTransactionContext().getFamilyDeleteMarker(),
ts,
- HConstants.EMPTY_BYTE_ARRAY);
- } else {
- for (PColumnFamily colFamily : families) {
- put.add(colFamily.getName().getBytes(),
TransactionFactory.getTransactionFactory().getTransactionContext().getFamilyDeleteMarker(),
ts,
- HConstants.EMPTY_BYTE_ARRAY);
- }
- }
- deleteRow = put;
--- End diff --
Does the code in IndexMaintainer here need to change too (i.e. check for
getFamilyDeleteMarker()), or is it fine?
private DeleteType getDeleteTypeOrNull(Collection<? extends Cell>
pendingUpdates, int nCFs) {
int nDeleteCF = 0;
int nDeleteVersionCF = 0;
for (Cell kv : pendingUpdates) {
if (kv.getTypeByte() ==
KeyValue.Type.DeleteFamilyVersion.getCode()) {
nDeleteVersionCF++;
}
else if (kv.getTypeByte() ==
KeyValue.Type.DeleteFamily.getCode()
// Since we don't include the index rows in the
change set for txn tables, we need to detect row deletes that have transformed
by TransactionProcessor
|| (CellUtil.matchingQualifier(kv,
TransactionFactory.getTransactionFactory().getTransactionContext().getFamilyDeleteMarker())
&& CellUtil.matchingValue(kv, HConstants.EMPTY_BYTE_ARRAY))) {
nDeleteCF++;
}
}
---