Repository: phoenix Updated Branches: refs/heads/4.x-HBase-0.98 f1d10c7b2 -> 3bca61df5
Revert "PHOENIX-1749 ORDER BY should support column position as well as column alias (Alicia Ying Shu)" This reverts commit f1d10c7b256d44bdd3dd2f9119d0b8caa5e16b1b. Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/3bca61df Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/3bca61df Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/3bca61df Branch: refs/heads/4.x-HBase-0.98 Commit: 3bca61df58f93b6a29b1fbb545677580498d2612 Parents: f1d10c7 Author: James Taylor <[email protected]> Authored: Fri Mar 27 16:30:07 2015 -0700 Committer: James Taylor <[email protected]> Committed: Fri Mar 27 16:30:07 2015 -0700 ---------------------------------------------------------------------- .../org/apache/phoenix/end2end/OrderByIT.java | 55 +------------------- .../apache/phoenix/compile/OrderByCompiler.java | 22 ++------ 2 files changed, 4 insertions(+), 73 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/3bca61df/phoenix-core/src/it/java/org/apache/phoenix/end2end/OrderByIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/OrderByIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/OrderByIT.java index 0e961c1..a8beb1e 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/OrderByIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/OrderByIT.java @@ -80,7 +80,7 @@ public class OrderByIT extends BaseClientManagedTimeIT { conn.close(); } } - + @Test public void testDescMultiOrderByExpr() throws Exception { @@ -118,57 +118,4 @@ public class OrderByIT extends BaseClientManagedTimeIT { conn.close(); } } - - @Test - public void testOrderByWithPosition() throws Exception { - Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); - Connection conn = DriverManager.getConnection(getUrl(), props); - conn.setAutoCommit(false); - - try { - String ddl = "CREATE TABLE t_table " + - " (a_string varchar not null, col1 integer" + - " CONSTRAINT pk PRIMARY KEY (a_string))\n"; - createTestTable(getUrl(), ddl); - - String dml = "UPSERT INTO t_table VALUES(?, ?)"; - PreparedStatement stmt = conn.prepareStatement(dml); - stmt.setString(1, "a"); - stmt.setInt(2, 40); - stmt.execute(); - stmt.setString(1, "b"); - stmt.setInt(2, 20); - stmt.execute(); - stmt.setString(1, "c"); - stmt.setInt(2, 30); - stmt.execute(); - conn.commit(); - - String aggregate = "select count(*), col1 from t_table group by col1 order by 2"; - ResultSet rs = conn.createStatement().executeQuery(aggregate); - assertTrue(rs.next()); - assertEquals(1,rs.getInt(1)); - assertTrue(rs.next()); - assertEquals(1,rs.getInt(1)); - assertTrue(rs.next()); - assertEquals(1,rs.getInt(1)); - assertFalse(rs.next()); - - aggregate = "select a_string x, col1 y from t_table order by x"; - rs = conn.createStatement().executeQuery(aggregate); - assertTrue(rs.next()); - assertEquals("a",rs.getString(1)); - assertEquals(40,rs.getInt(2)); - assertTrue(rs.next()); - assertEquals("b",rs.getString(1)); - assertEquals(20,rs.getInt(2)); - assertTrue(rs.next()); - assertEquals("c",rs.getString(1)); - assertEquals(30,rs.getInt(2)); - assertFalse(rs.next()); - } finally { - conn.close(); - } - } - } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/phoenix/blob/3bca61df/phoenix-core/src/main/java/org/apache/phoenix/compile/OrderByCompiler.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/OrderByCompiler.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/OrderByCompiler.java index f138ce0..215f59e 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/compile/OrderByCompiler.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/OrderByCompiler.java @@ -29,15 +29,12 @@ import org.apache.phoenix.exception.SQLExceptionCode; import org.apache.phoenix.exception.SQLExceptionInfo; import org.apache.phoenix.expression.Expression; import org.apache.phoenix.expression.OrderByExpression; -import org.apache.phoenix.parse.LiteralParseNode; +import org.apache.phoenix.parse.FilterableStatement; import org.apache.phoenix.parse.OrderByNode; -import org.apache.phoenix.parse.ParseNode; -import org.apache.phoenix.parse.SelectStatement; import org.apache.phoenix.query.QueryServices; import org.apache.phoenix.query.QueryServicesOptions; import org.apache.phoenix.schema.PTableType; import org.apache.phoenix.schema.SortOrder; -import org.apache.phoenix.schema.types.PInteger; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; @@ -80,7 +77,7 @@ public class OrderByCompiler { * @throws SQLException */ public static OrderBy compile(StatementContext context, - SelectStatement statement, + FilterableStatement statement, GroupBy groupBy, Integer limit, boolean isInRowKeyOrder) throws SQLException { List<OrderByNode> orderByNodes = statement.getOrderBy(); @@ -94,20 +91,7 @@ public class OrderByCompiler { LinkedHashSet<OrderByExpression> orderByExpressions = Sets.newLinkedHashSetWithExpectedSize(orderByNodes.size()); for (OrderByNode node : orderByNodes) { boolean isAscending = node.isAscending(); - ParseNode parseNode = node.getNode(); - Expression expression = null; - if (parseNode instanceof LiteralParseNode && ((LiteralParseNode)parseNode).getType() == PInteger.INSTANCE){ - Integer index = (Integer)((LiteralParseNode)parseNode).getValue(); - int size = statement.getSelect().size(); - if (index > size || index <= 0 ) { - throw new SQLExceptionInfo.Builder(SQLExceptionCode.PARAM_INDEX_OUT_OF_BOUND) - .setMessage("Order by by positions ").build().buildException(); - } - ParseNode orderNode = statement.getSelect().get(index-1).getNode(); - expression = orderNode.accept(visitor); - } else { - expression = node.getNode().accept(visitor); - } + Expression expression = node.getNode().accept(visitor); if (!expression.isStateless() && visitor.addEntry(expression, isAscending ? SortOrder.ASC : SortOrder.DESC)) { // Detect mix of aggregate and non aggregates (i.e. ORDER BY txns, SUM(txns) if (!visitor.isAggregate()) {
