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++;
                }
            }



---

Reply via email to