[
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)