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

James Taylor commented on PHOENIX-2844:
---------------------------------------

Yes, +1. You're right, [~samarthjain]. It should be like this:
{code}
@Test
  public void 
testDescOnSecondRowKeyColumnWithWhereExpressionUsingFirstRowKeyColumn() throws 
SQLException {
      Connection conn = DriverManager.getConnection(getUrl());
      conn.createStatement().execute("CREATE TABLE t (k1 VARCHAR NOT NULL, k2 
DATE NOT NULL, k3 VARCHAR NOT NULL, V1 VARCHAR CONSTRAINT pk PRIMARY KEY (k1, 
k2, k3))");
      PhoenixStatement stmt = 
conn.createStatement().unwrap(PhoenixStatement.class);
      
      String query = "select * from t where k1 < 'X' order by k2 desc";
      QueryPlan plan = stmt.optimizeQuery(query);
      assertFalse(plan.getOrderBy().getOrderByExpressions().isEmpty());
      
      
      query = "select * from t where k1 > 'X' order by k2 desc";
      plan = stmt.optimizeQuery(query);
      assertFalse(plan.getOrderBy().getOrderByExpressions().isEmpty());
      
      query = "select * from t where k1 = 'X' order by k2 desc";
      plan = stmt.optimizeQuery(query);
      assertTrue(plan.getOrderBy().getOrderByExpressions().isEmpty());
      assertTrue(plan.getContext().getScan().isReversed());
  
  }
{code}


> ORDER BY doesn't seem consistent
> --------------------------------
>
>                 Key: PHOENIX-2844
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-2844
>             Project: Phoenix
>          Issue Type: Bug
>            Reporter: Samarth Jain
>
> {code}
> @Test
>   public void 
> testDescOnSecondRowKeyColumnWithWhereExpressionUsingFirstRowKeyColumn() 
> throws SQLException {
>       Connection conn = DriverManager.getConnection(getUrl());
>       conn.createStatement().execute("CREATE TABLE t (k1 VARCHAR NOT NULL, k2 
> DATE NOT NULL, k3 VARCHAR NOT NULL, V1 VARCHAR CONSTRAINT pk PRIMARY KEY (k1, 
> k2, k3))");
>       PhoenixStatement stmt = 
> conn.createStatement().unwrap(PhoenixStatement.class);
>       
>       String query = "select * from t where k1 < 'X' order by k2 desc";
>       QueryPlan plan = stmt.optimizeQuery(query);
>       assertFalse(plan.getOrderBy().getOrderByExpressions().isEmpty());
>       
>       
>       query = "select * from t where k1 > 'X' order by k2 desc";
>       plan = stmt.optimizeQuery(query);
>       assertFalse(plan.getOrderBy().getOrderByExpressions().isEmpty());
>       
>       query = "select * from t where k1 = 'X' order by k2 desc";
>       plan = stmt.optimizeQuery(query);
>       assertFalse(plan.getOrderBy().getOrderByExpressions().isEmpty());
>       assertTrue(plan.getContext().getScan().isReversed());
>   
>   }
> {code}
> Because the rows we are looking at are already limited by the filter on the 
> first row key column, I would expect that the order by desc on second row key 
> column would result in plan.getOrderBy().getOrderByExpressions().isEmpty() to 
> be empty always. 
> [~jamestaylor] - WDYT? 
> This behavior is apparently causing a test failure in 
> ProductMetricsIT#testSaltedOrderBy for my patch in PHOENIX-2724. I think that 
> patch is surfacing this bug.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to