You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2014/09/24 03:12:01 UTC
git commit: [OPTIQ-421] Add COVAR_POP and COVAR_SAMP aggregate
functions
Repository: incubator-optiq
Updated Branches:
refs/heads/master 24eb1b841 -> 232a8f4da
[OPTIQ-421] Add COVAR_POP and COVAR_SAMP aggregate functions
Close apache/incubator-optiq#14
Pull requests closed by other recent changes (committed already):
Close apache/incubator-optiq#12
Close apache/incubator-optiq#5
Close apache/incubator-optiq#2
Project: http://git-wip-us.apache.org/repos/asf/incubator-optiq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-optiq/commit/232a8f4d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-optiq/tree/232a8f4d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-optiq/diff/232a8f4d
Branch: refs/heads/master
Commit: 232a8f4dab75d73451aad19a0a652a59184bec71
Parents: 24eb1b8
Author: Yash Sharma <ya...@snapdeal.com>
Authored: Tue Sep 23 15:25:20 2014 +0530
Committer: Julian Hyde <ju...@gmail.com>
Committed: Tue Sep 23 17:24:25 2014 -0700
----------------------------------------------------------------------
.../main/codegen/templates/CombinedParser.jj | 2 +
.../eigenbase/sql/fun/SqlAvgAggFunction.java | 2 +
.../eigenbase/sql/fun/SqlStdOperatorTable.java | 12 +++++
.../sql2rel/StandardConvertletTable.java | 6 +++
.../org/eigenbase/sql/test/SqlAdvisorTest.java | 2 +
.../eigenbase/sql/test/SqlOperatorBaseTest.java | 46 ++++++++++++++++++++
6 files changed, 70 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/232a8f4d/core/src/main/codegen/templates/CombinedParser.jj
----------------------------------------------------------------------
diff --git a/core/src/main/codegen/templates/CombinedParser.jj b/core/src/main/codegen/templates/CombinedParser.jj
index 2ccad91..b5dff64 100644
--- a/core/src/main/codegen/templates/CombinedParser.jj
+++ b/core/src/main/codegen/templates/CombinedParser.jj
@@ -4104,6 +4104,8 @@ SqlIdentifier ReservedFunctionName() :
| <CHARACTER_LENGTH>
| <COALESCE>
| <COLLECT>
+ | <COVAR_POP>
+ | <COVAR_SAMP>
| <CUME_DIST>
| <COUNT>
| <CURRENT_DATE>
http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/232a8f4d/core/src/main/java/org/eigenbase/sql/fun/SqlAvgAggFunction.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/eigenbase/sql/fun/SqlAvgAggFunction.java b/core/src/main/java/org/eigenbase/sql/fun/SqlAvgAggFunction.java
index 8a6bfe7..05f9636 100644
--- a/core/src/main/java/org/eigenbase/sql/fun/SqlAvgAggFunction.java
+++ b/core/src/main/java/org/eigenbase/sql/fun/SqlAvgAggFunction.java
@@ -79,6 +79,8 @@ public class SqlAvgAggFunction extends SqlAggFunction {
public enum Subtype {
AVG,
+ COVAR_POP,
+ COVAR_SAMP,
STDDEV_POP,
STDDEV_SAMP,
VAR_POP,
http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/232a8f4d/core/src/main/java/org/eigenbase/sql/fun/SqlStdOperatorTable.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/eigenbase/sql/fun/SqlStdOperatorTable.java b/core/src/main/java/org/eigenbase/sql/fun/SqlStdOperatorTable.java
index ba31717..c4e871c 100644
--- a/core/src/main/java/org/eigenbase/sql/fun/SqlStdOperatorTable.java
+++ b/core/src/main/java/org/eigenbase/sql/fun/SqlStdOperatorTable.java
@@ -672,6 +672,18 @@ public class SqlStdOperatorTable extends ReflectiveSqlOperatorTable {
new SqlAvgAggFunction(null, SqlAvgAggFunction.Subtype.STDDEV_POP);
/**
+ * <code>COVAR_POP</code> aggregate function.
+ */
+ public static final SqlAggFunction COVAR_POP =
+ new SqlAvgAggFunction(null, SqlAvgAggFunction.Subtype.COVAR_POP);
+
+ /**
+ * <code>COVAR_SAMP</code> aggregate function.
+ */
+ public static final SqlAggFunction COVAR_SAMP =
+ new SqlAvgAggFunction(null, SqlAvgAggFunction.Subtype.COVAR_SAMP);
+
+ /**
* <code>STDDEV_SAMP</code> aggregate function.
*/
public static final SqlAggFunction STDDEV_SAMP =
http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/232a8f4d/core/src/main/java/org/eigenbase/sql2rel/StandardConvertletTable.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/eigenbase/sql2rel/StandardConvertletTable.java b/core/src/main/java/org/eigenbase/sql2rel/StandardConvertletTable.java
index 59b48d7..7e23f93 100644
--- a/core/src/main/java/org/eigenbase/sql2rel/StandardConvertletTable.java
+++ b/core/src/main/java/org/eigenbase/sql2rel/StandardConvertletTable.java
@@ -173,6 +173,12 @@ public class StandardConvertletTable extends ReflectiveConvertletTable {
SqlStdOperatorTable.AVG,
new AvgVarianceConvertlet(SqlAvgAggFunction.Subtype.AVG));
registerOp(
+ SqlStdOperatorTable.COVAR_POP,
+ new AvgVarianceConvertlet(SqlAvgAggFunction.Subtype.COVAR_POP));
+ registerOp(
+ SqlStdOperatorTable.COVAR_SAMP,
+ new AvgVarianceConvertlet(SqlAvgAggFunction.Subtype.COVAR_SAMP));
+ registerOp(
SqlStdOperatorTable.STDDEV_POP,
new AvgVarianceConvertlet(SqlAvgAggFunction.Subtype.STDDEV_POP));
registerOp(
http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/232a8f4d/core/src/test/java/org/eigenbase/sql/test/SqlAdvisorTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/eigenbase/sql/test/SqlAdvisorTest.java b/core/src/test/java/org/eigenbase/sql/test/SqlAdvisorTest.java
index a707234..f9ad12e 100644
--- a/core/src/test/java/org/eigenbase/sql/test/SqlAdvisorTest.java
+++ b/core/src/test/java/org/eigenbase/sql/test/SqlAdvisorTest.java
@@ -108,6 +108,8 @@ public class SqlAdvisorTest extends SqlValidatorTestCase {
"KEYWORD(COLLECT)",
"KEYWORD(CONVERT)",
"KEYWORD(COUNT)",
+ "KEYWORD(COVAR_POP)",
+ "KEYWORD(COVAR_SAMP)",
"KEYWORD(CUME_DIST)",
"KEYWORD(CURRENT_CATALOG)",
"KEYWORD(CURRENT_DATE)",
http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/232a8f4d/core/src/test/java/org/eigenbase/sql/test/SqlOperatorBaseTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/eigenbase/sql/test/SqlOperatorBaseTest.java b/core/src/test/java/org/eigenbase/sql/test/SqlOperatorBaseTest.java
index 6ef09a4..b1118b2 100644
--- a/core/src/test/java/org/eigenbase/sql/test/SqlOperatorBaseTest.java
+++ b/core/src/test/java/org/eigenbase/sql/test/SqlOperatorBaseTest.java
@@ -4477,6 +4477,52 @@ public abstract class SqlOperatorBaseTest {
0d);
}
+ @Test public void testCovarPopFunc() {
+ tester.setFor(SqlStdOperatorTable.COVAR_POP, VM_EXPAND);
+ tester.checkFails(
+ "covar_pop(^*^)",
+ "Unknown identifier '\\*'",
+ false);
+ tester.checkFails(
+ "^covar_pop(cast(null as varchar(2)))^",
+ "(?s)Cannot apply 'COVAR_POP' to arguments of type 'COVAR_POP\\(<VARCHAR\\(2\\)>\\)'\\. Supported form\\(s\\): 'COVAR_POP\\(<NUMERIC>\\)'.*",
+ false);
+ tester.checkType("covar_pop(CAST(NULL AS INTEGER))", "INTEGER");
+ checkAggType(tester, "covar_pop(DISTINCT 1.5)", "DECIMAL(2, 1) NOT NULL");
+ if (!enable) {
+ return;
+ }
+ // with zero values
+ tester.checkAgg(
+ "covar_pop(x)",
+ new String[]{},
+ null,
+ 0d);
+ }
+
+ @Test public void testCovarSampFunc() {
+ tester.setFor(SqlStdOperatorTable.COVAR_SAMP, VM_EXPAND);
+ tester.checkFails(
+ "covar_samp(^*^)",
+ "Unknown identifier '\\*'",
+ false);
+ tester.checkFails(
+ "^covar_samp(cast(null as varchar(2)))^",
+ "(?s)Cannot apply 'COVAR_SAMP' to arguments of type 'COVAR_SAMP\\(<VARCHAR\\(2\\)>\\)'\\. Supported form\\(s\\): 'COVAR_SAMP\\(<NUMERIC>\\)'.*",
+ false);
+ tester.checkType("covar_samp(CAST(NULL AS INTEGER))", "INTEGER");
+ checkAggType(tester, "covar_samp(DISTINCT 1.5)", "DECIMAL(2, 1) NOT NULL");
+ if (!enable) {
+ return;
+ }
+ // with zero values
+ tester.checkAgg(
+ "covar_samp(x)",
+ new String[]{},
+ null,
+ 0d);
+ }
+
@Test public void testStddevPopFunc() {
tester.setFor(SqlStdOperatorTable.STDDEV_POP, VM_EXPAND);
tester.checkFails(