You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by an...@apache.org on 2014/09/01 05:44:03 UTC
git commit: PHOENIX-1203 Uable to work for count (distinct col)
queries via phoenix table with secondary indexes.
Repository: phoenix
Updated Branches:
refs/heads/master 867af78dd -> 4774c6332
PHOENIX-1203 Uable to work for count (distinct col) queries via phoenix table with secondary indexes.
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/4774c633
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/4774c633
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/4774c633
Branch: refs/heads/master
Commit: 4774c63320517fed15c4f4e3ef0a03fdbc597b06
Parents: 867af78
Author: anoopsjohn <an...@gmail.com>
Authored: Mon Sep 1 09:13:38 2014 +0530
Committer: anoopsjohn <an...@gmail.com>
Committed: Mon Sep 1 09:13:38 2014 +0530
----------------------------------------------------------------------
.../apache/phoenix/end2end/DistinctCountIT.java | 45 ++++++++++++++++++++
.../apache/phoenix/parse/ParseNodeFactory.java | 2 +-
2 files changed, 46 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/4774c633/phoenix-core/src/it/java/org/apache/phoenix/end2end/DistinctCountIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DistinctCountIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DistinctCountIT.java
index 62fa0f5..4b76d29 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DistinctCountIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DistinctCountIT.java
@@ -45,6 +45,7 @@ import java.sql.ResultSet;
import java.sql.Types;
import java.util.Properties;
+import org.apache.phoenix.schema.TableAlreadyExistsException;
import org.apache.phoenix.util.PhoenixRuntime;
import org.apache.phoenix.util.PropertiesUtil;
import org.junit.Test;
@@ -458,4 +459,48 @@ public class DistinctCountIT extends BaseClientManagedTimeIT {
conn.close();
}
}
+
+ @Test
+ public void testDistinctCountOnIndexTab() throws Exception {
+ String ddl = "create table personal_details (id integer not null, first_name char(15),\n"
+ + " last_name char(15), CONSTRAINT pk PRIMARY KEY (id))";
+ Properties props = new Properties();
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ try {
+ PreparedStatement stmt = conn.prepareStatement(ddl);
+ stmt.execute(ddl);
+ conn.createStatement().execute("CREATE INDEX personal_details_idx ON personal_details(first_name)");
+ } catch (TableAlreadyExistsException e) {
+
+ } finally {
+ conn.close();
+ }
+
+ conn = DriverManager.getConnection(getUrl(), props);
+ try {
+ PreparedStatement stmt = conn.prepareStatement("upsert into personal_details(id, first_name, "
+ + "last_name) VALUES (?, ?, ?)");
+ stmt.setInt(1, 1);
+ stmt.setString(2, "NAME1");
+ stmt.setString(3, "LN");
+ stmt.execute();
+ stmt.setInt(1, 2);
+ stmt.setString(2, "NAME1");
+ stmt.setString(3, "LN2");
+ stmt.execute();
+ stmt.setInt(1, 3);
+ stmt.setString(2, "NAME2");
+ stmt.setString(3, "LN3");
+ stmt.execute();
+ conn.commit();
+
+ String query = "SELECT COUNT (DISTINCT first_name) FROM personal_details";
+ PreparedStatement statement = conn.prepareStatement(query);
+ ResultSet rs = statement.executeQuery();
+ assertTrue(rs.next());
+ assertEquals(2, rs.getInt(1));
+ } finally {
+ conn.close();
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/4774c633/phoenix-core/src/main/java/org/apache/phoenix/parse/ParseNodeFactory.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/parse/ParseNodeFactory.java b/phoenix-core/src/main/java/org/apache/phoenix/parse/ParseNodeFactory.java
index 5125340..6872f8a 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/parse/ParseNodeFactory.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/parse/ParseNodeFactory.java
@@ -345,7 +345,7 @@ public class ParseNodeFactory {
if (CountAggregateFunction.NAME.equals(SchemaUtil.normalizeIdentifier(name))) {
BuiltInFunctionInfo info = getInfo(
SchemaUtil.normalizeIdentifier(DistinctCountAggregateFunction.NAME), args);
- return new DistinctCountParseNode(name, args, info);
+ return new DistinctCountParseNode(DistinctCountAggregateFunction.NAME, args, info);
} else {
throw new UnsupportedOperationException("DISTINCT not supported with " + name);
}