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

Hadoop QA commented on PHOENIX-5753:
------------------------------------

{color:red}-1 overall{color}.  Here are the results of testing the latest 
attachment 
  
http://issues.apache.org/jira/secure/attachment/12995048/PHOENIX-5753_v1-4.x-HBase-1.4.patch
  against 4.x-HBase-1.4 branch at commit 
4c2f481f82bb1bcf5f62d009dd20854ef35b13a8.
  ATTACHMENT ID: 12995048

    {color:green}+1 @author{color}.  The patch does not contain any @author 
tags.

    {color:green}+1 tests included{color}.  The patch appears to include 3 new 
or modified tests.

    {color:green}+1 javac{color}.  The applied patch does not increase the 
total number of javac compiler warnings.

    {color:green}+1 release audit{color}.  The applied patch does not increase 
the total number of release audit warnings.

    {color:red}-1 lineLengths{color}.  The patch introduces the following lines 
longer than 100:
    +                         " v INTEGER, CONSTRAINT PK PRIMARY 
KEY(pk1,pk2,pk3 desc,pk4,pk5,pk6 desc,pk7,pk8))";;
+                    " where (pk1 >=1 and pk1<=2) and (pk2>=2 and pk2<=3) and 
(pk3,pk4) < (5,7) and "+
+             * This inner "_IDX_" + dataTableName use skipScan, and all the 
whereExpressions are in SkipScanFilter,
+                for (int i= currentRowKeyColumnPosition; i < 
currentRowKeySlot.getPKPosition(); i++) {
+                        schema.getField(currentRowKeySlot.getPKPosition() + 
slotOffset).getSortOrder();
+                            + slotOffset - clipLeftSpan, clipLeftSpan, 
currentRowKeySlotRanges, ptr);
+                            clipRight(schema, 
currentRowKeySlot.getPKPosition() + slotOffset - 1, currentRowKeySlotRanges,
+            if (schema.getField(currentRowKeySlot.getPKPosition() + slotOffset 
- 1).getSortOrder() == SortOrder.DESC) {
+             * the whereExpressions of current rowkey slot from the current 
{@link SelectStatement#where},
+             * So we should stop extracting whereExpressions of current rowkey 
slot once we encounter:

     {color:red}-1 core tests{color}.  The patch failed these unit tests:
     
./phoenix-core/target/failsafe-reports/TEST-org.apache.phoenix.end2end.IndexRebuildTaskIT

Test results: 
https://builds.apache.org/job/PreCommit-PHOENIX-Build/3521//testReport/
Console output: 
https://builds.apache.org/job/PreCommit-PHOENIX-Build/3521//console

This message is automatically generated.

> Fix erroneous query result when RVC is clipped with desc column
> ---------------------------------------------------------------
>
>                 Key: PHOENIX-5753
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-5753
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 5.0.0, 4.15.0
>            Reporter: chenglei
>            Assignee: chenglei
>            Priority: Major
>              Labels: DESC
>             Fix For: 4.16.0
>
>         Attachments: PHOENIX-5753_v1-4.x-HBase-1.4.patch
>
>
> Given following table and data:
> {code:java}
>        CREATE TABLE  test
>        (
>             pk1 INTEGER NOT NULL ,  
>             pk2 INTEGER NOT NULL, 
>             pk3 INTEGER NOT NULL, 
>             pk4 INTEGER NOT NULL, 
>             v INTEGER, CONSTRAINT PK PRIMARY KEY(pk1,pk2,pk3 desc,pk4))
>        )
> {code}
>       Noticed pk3 is DESC.
> {code:java}
>        UPSERT INTO test (pk1, pk2, pk3, pk4, v) VALUES (1,3,4,10,1)
> {code}
> If we execute the following sql:
> {code:java}
>      select * from test
>      where (pk1 >=1 and pk1<=2) and (pk2>=3 and pk2<=4) and (pk3,pk4) < (5,7)
> {code}
> the returned result is empty, but obviously, the above inserted row 
> (1,3,4,10,1) should be returned.
> I think this problem is introduced by PHOENIX-3383 and PHOENIX-4841, when we 
> clip the {{(pk3,pk4) < (5,7)}} because {{pk3}} is {{DESC}}  by following line 
> 260 in {{WhereOptimizer.pushKeyExpressionsToScan}} , {{(pk3,pk4) < (5,7)}} is 
> clipped to {{pk3 <= 5}} and {{pk4 < 7}} .
> {code:java}
> 257                        List<KeyRange> leftRanges = clipLeft(schema, 
> slot.getPKPosition()
> 258                            + slotOffset - clipLeftSpan, clipLeftSpan, 
> keyRanges, ptr);
> 259                    keyRanges =
> 260                            clipRight(schema, slot.getPKPosition() + 
> slotOffset - 1, keyRanges,
> 261                                    leftRanges, ptr);
> 262                    if (prevSortOrder == SortOrder.DESC) {
> 263                        leftRanges = invertKeyRanges(leftRanges);
> 264                    }
> 265                    slotSpanArray[cnf.size()] = clipLeftSpan-1;
> 266                    cnf.add(leftRanges);
> 267                    clipLeftSpan = 0;
> 268                    prevSortOrder = sortOrder;
> 269                    // since we have to clip the portion with the same 
> sort order, we can no longer
> 270                    // extract the nodes from the where clause
> 271                    // for eg. for the schema A VARCHAR DESC, B VARCHAR 
> ASC and query
> 272                    //   WHERE (A,B) < ('a','b')
> 273                    // the range (* - a\xFFb) is converted to (~a-*)(*-b)
> 274                    // so we still need to filter on A,B
> 275                    stopExtracting = true;
> 276                }
> {code}
> Eventually after we completed the  
> {{WhereOptimizer.pushKeyExpressionsToScan}}, the result
> {{ScanRanges.ranges}} is  [[[1 - 2]], [[3 - 4]], [[~5 - *)], [(* - 7)]],  
> {{ScanRanges.useSkipScanFilter}} is {{true}}  and {{SkipScanFilter}} is also 
> [[[1 - 2]], [[3 - 4]], [[~5 - *)], [(* - 7)]], so the  the above inserted row 
> (1,3,4,10,1) could not be retrieved.
> But as we know, {{(pk3,pk4) < (5,7)}} is not semantically equals to {{pk3 <= 
> 5}} and {{pk4 < 7}} , we could only have
>   {{pk3 <= 5}}  but not  {{pk4 < 7}}, so when we clipped  {{(pk3,pk4) < 
> (5,7)}}  to {{pk3 <= 5}} , we could  simply skip remaining columns of this 
> RVC.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to