[ 
https://issues.apache.org/jira/browse/PHOENIX-4731?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16637650#comment-16637650
 ] 

ASF GitHub Bot commented on PHOENIX-4731:
-----------------------------------------

Github user JamesRTaylor commented on a diff in the pull request:

    https://github.com/apache/phoenix/pull/360#discussion_r222506752
  
    --- Diff: 
phoenix-core/src/main/java/org/apache/phoenix/execute/PhoenixTxIndexMutationGenerator.java
 ---
    @@ -313,7 +326,18 @@ public int compare(Cell o1, Cell o2) {
         private void generateDeletes(PhoenixIndexMetaData indexMetaData,
                 Collection<Pair<Mutation, byte[]>> indexUpdates,
                 byte[] attribValue, TxTableState state) throws IOException {
    -        Iterable<IndexUpdate> deletes = codec.getIndexDeletes(state, 
indexMetaData);
    +        byte[] regionStartKey = this.regionStartKey;
    --- End diff --
    
    The region start and stop keys are used only when the index is a local 
index (in which case the row key is prefixed with the start key). The region 
end key is only used when the region start key length has a length of zero. 
Here's a small code snippet from IndexMaintainer.buildRowKey():
    
        public byte[] buildRowKey(ValueGetter valueGetter, 
ImmutableBytesWritable rowKeyPtr, byte[] regionStartKey, byte[] regionEndKey, 
long ts)  {
            ImmutableBytesWritable ptr = new ImmutableBytesWritable();
            boolean prependRegionStartKey = isLocalIndex && regionStartKey != 
null;
            boolean isIndexSalted = !isLocalIndex && nIndexSaltBuckets > 0;
            int prefixKeyLength =
                    prependRegionStartKey ? (regionStartKey.length != 0 ? 
regionStartKey.length
                            : regionEndKey.length) : 0; 
            TrustedByteArrayOutputStream stream = new 
TrustedByteArrayOutputStream(estimatedIndexRowKeyBytes + (prependRegionStartKey 
? prefixKeyLength : 0));
            DataOutput output = new DataOutputStream(stream);
            try {
                // For local indexes, we must prepend the row key with the 
start region key
                if (prependRegionStartKey) {
                    if (regionStartKey.length == 0) {
                        output.write(new byte[prefixKeyLength]);
                    } else {
                        output.write(regionStartKey);
                    }
                }



> Make running transactional unit tests for a given provider optional
> -------------------------------------------------------------------
>
>                 Key: PHOENIX-4731
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-4731
>             Project: Phoenix
>          Issue Type: Improvement
>            Reporter: James Taylor
>            Assignee: James Taylor
>            Priority: Major
>             Fix For: 4.15.0
>
>         Attachments: PHOENIX-4731-4.x-HBase-1.3.patch
>
>
> Different users may not be relying on transactions, or may only be relying on 
> a single transaction provider. By default, we can run transactional tests 
> across all providers, but we should have a way of disabling the running of a 
> given provider.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to