You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by ta...@apache.org on 2017/08/02 05:08:44 UTC

[21/59] beam git commit: move dsls/sql to sdks/java/extensions/sql

move dsls/sql to sdks/java/extensions/sql


Project: http://git-wip-us.apache.org/repos/asf/beam/repo
Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/ba493f85
Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/ba493f85
Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/ba493f85

Branch: refs/heads/DSL_SQL
Commit: ba493f85a5a18665cd6ae4eb61e0a86fab1a6c07
Parents: d32aea9
Author: James Xu <xu...@gmail.com>
Authored: Sun Jul 30 23:39:37 2017 +0800
Committer: James Xu <xu...@gmail.com>
Committed: Sun Jul 30 23:39:37 2017 +0800

----------------------------------------------------------------------
 dsls/pom.xml                                    |  60 ---
 dsls/sql/pom.xml                                | 226 ---------
 .../java/org/apache/beam/dsls/sql/BeamSql.java  | 244 ----------
 .../org/apache/beam/dsls/sql/BeamSqlCli.java    |  65 ---
 .../org/apache/beam/dsls/sql/BeamSqlEnv.java    | 120 -----
 .../beam/dsls/sql/example/BeamSqlExample.java   |  97 ----
 .../beam/dsls/sql/example/package-info.java     |  23 -
 .../interpreter/BeamSqlExpressionExecutor.java  |  43 --
 .../dsls/sql/interpreter/BeamSqlFnExecutor.java | 442 ------------------
 .../operator/BeamSqlCaseExpression.java         |  64 ---
 .../operator/BeamSqlCastExpression.java         | 132 ------
 .../interpreter/operator/BeamSqlExpression.java |  78 ----
 .../operator/BeamSqlInputRefExpression.java     |  43 --
 .../interpreter/operator/BeamSqlPrimitive.java  | 152 -------
 .../operator/BeamSqlReinterpretExpression.java  |  55 ---
 .../operator/BeamSqlUdfExpression.java          |  86 ----
 .../operator/BeamSqlWindowEndExpression.java    |  42 --
 .../operator/BeamSqlWindowExpression.java       |  50 --
 .../operator/BeamSqlWindowStartExpression.java  |  43 --
 .../arithmetic/BeamSqlArithmeticExpression.java | 122 -----
 .../arithmetic/BeamSqlDivideExpression.java     |  37 --
 .../arithmetic/BeamSqlMinusExpression.java      |  36 --
 .../arithmetic/BeamSqlModExpression.java        |  36 --
 .../arithmetic/BeamSqlMultiplyExpression.java   |  36 --
 .../arithmetic/BeamSqlPlusExpression.java       |  36 --
 .../operator/arithmetic/package-info.java       |  22 -
 .../comparison/BeamSqlCompareExpression.java    |  96 ----
 .../comparison/BeamSqlEqualsExpression.java     |  49 --
 .../BeamSqlGreaterThanExpression.java           |  49 --
 .../BeamSqlGreaterThanOrEqualsExpression.java   |  49 --
 .../comparison/BeamSqlIsNotNullExpression.java  |  53 ---
 .../comparison/BeamSqlIsNullExpression.java     |  53 ---
 .../comparison/BeamSqlLessThanExpression.java   |  49 --
 .../BeamSqlLessThanOrEqualsExpression.java      |  49 --
 .../comparison/BeamSqlNotEqualsExpression.java  |  49 --
 .../operator/comparison/package-info.java       |  22 -
 .../date/BeamSqlCurrentDateExpression.java      |  45 --
 .../date/BeamSqlCurrentTimeExpression.java      |  53 ---
 .../date/BeamSqlCurrentTimestampExpression.java |  49 --
 .../date/BeamSqlDateCeilExpression.java         |  55 ---
 .../date/BeamSqlDateFloorExpression.java        |  55 ---
 .../operator/date/BeamSqlExtractExpression.java | 101 -----
 .../interpreter/operator/date/package-info.java |  22 -
 .../operator/logical/BeamSqlAndExpression.java  |  48 --
 .../logical/BeamSqlLogicalExpression.java       |  47 --
 .../operator/logical/BeamSqlNotExpression.java  |  54 ---
 .../operator/logical/BeamSqlOrExpression.java   |  48 --
 .../operator/logical/package-info.java          |  22 -
 .../operator/math/BeamSqlAbsExpression.java     |  74 ---
 .../operator/math/BeamSqlAcosExpression.java    |  41 --
 .../operator/math/BeamSqlAsinExpression.java    |  41 --
 .../operator/math/BeamSqlAtan2Expression.java   |  43 --
 .../operator/math/BeamSqlAtanExpression.java    |  41 --
 .../operator/math/BeamSqlCeilExpression.java    |  46 --
 .../operator/math/BeamSqlCosExpression.java     |  41 --
 .../operator/math/BeamSqlCotExpression.java     |  41 --
 .../operator/math/BeamSqlDegreesExpression.java |  41 --
 .../operator/math/BeamSqlExpExpression.java     |  41 --
 .../operator/math/BeamSqlFloorExpression.java   |  46 --
 .../operator/math/BeamSqlLnExpression.java      |  41 --
 .../operator/math/BeamSqlLogExpression.java     |  41 --
 .../math/BeamSqlMathBinaryExpression.java       |  64 ---
 .../math/BeamSqlMathUnaryExpression.java        |  58 ---
 .../operator/math/BeamSqlPiExpression.java      |  42 --
 .../operator/math/BeamSqlPowerExpression.java   |  45 --
 .../operator/math/BeamSqlRadiansExpression.java |  41 --
 .../operator/math/BeamSqlRandExpression.java    |  54 ---
 .../math/BeamSqlRandIntegerExpression.java      |  58 ---
 .../operator/math/BeamSqlRoundExpression.java   | 108 -----
 .../operator/math/BeamSqlSignExpression.java    |  72 ---
 .../operator/math/BeamSqlSinExpression.java     |  41 --
 .../operator/math/BeamSqlTanExpression.java     |  41 --
 .../math/BeamSqlTruncateExpression.java         |  76 ----
 .../interpreter/operator/math/package-info.java |  22 -
 .../sql/interpreter/operator/package-info.java  |  22 -
 .../string/BeamSqlCharLengthExpression.java     |  40 --
 .../string/BeamSqlConcatExpression.java         |  63 ---
 .../string/BeamSqlInitCapExpression.java        |  56 ---
 .../operator/string/BeamSqlLowerExpression.java |  40 --
 .../string/BeamSqlOverlayExpression.java        |  77 ----
 .../string/BeamSqlPositionExpression.java       |  73 ---
 .../string/BeamSqlStringUnaryExpression.java    |  45 --
 .../string/BeamSqlSubstringExpression.java      |  83 ----
 .../operator/string/BeamSqlTrimExpression.java  | 101 -----
 .../operator/string/BeamSqlUpperExpression.java |  40 --
 .../operator/string/package-info.java           |  22 -
 .../beam/dsls/sql/interpreter/package-info.java |  22 -
 .../org/apache/beam/dsls/sql/package-info.java  |  22 -
 .../beam/dsls/sql/planner/BeamQueryPlanner.java | 167 -------
 .../dsls/sql/planner/BeamRelDataTypeSystem.java |  40 --
 .../beam/dsls/sql/planner/BeamRuleSets.java     |  75 ---
 .../beam/dsls/sql/planner/package-info.java     |  24 -
 .../beam/dsls/sql/rel/BeamAggregationRel.java   | 182 --------
 .../apache/beam/dsls/sql/rel/BeamFilterRel.java |  70 ---
 .../apache/beam/dsls/sql/rel/BeamIOSinkRel.java |  75 ---
 .../beam/dsls/sql/rel/BeamIOSourceRel.java      |  63 ---
 .../beam/dsls/sql/rel/BeamIntersectRel.java     |  58 ---
 .../apache/beam/dsls/sql/rel/BeamJoinRel.java   | 302 -------------
 .../dsls/sql/rel/BeamLogicalConvention.java     |  72 ---
 .../apache/beam/dsls/sql/rel/BeamMinusRel.java  |  56 ---
 .../beam/dsls/sql/rel/BeamProjectRel.java       |  81 ----
 .../apache/beam/dsls/sql/rel/BeamRelNode.java   |  38 --
 .../dsls/sql/rel/BeamSetOperatorRelBase.java    |  98 ----
 .../apache/beam/dsls/sql/rel/BeamSortRel.java   | 247 ----------
 .../beam/dsls/sql/rel/BeamSqlRelUtils.java      |  73 ---
 .../apache/beam/dsls/sql/rel/BeamUnionRel.java  |  88 ----
 .../apache/beam/dsls/sql/rel/BeamValuesRel.java |  79 ----
 .../apache/beam/dsls/sql/rel/package-info.java  |  23 -
 .../beam/dsls/sql/rule/BeamAggregationRule.java | 162 -------
 .../beam/dsls/sql/rule/BeamFilterRule.java      |  49 --
 .../beam/dsls/sql/rule/BeamIOSinkRule.java      |  82 ----
 .../beam/dsls/sql/rule/BeamIOSourceRule.java    |  49 --
 .../beam/dsls/sql/rule/BeamIntersectRule.java   |  51 ---
 .../apache/beam/dsls/sql/rule/BeamJoinRule.java |  53 ---
 .../beam/dsls/sql/rule/BeamMinusRule.java       |  51 ---
 .../beam/dsls/sql/rule/BeamProjectRule.java     |  50 --
 .../apache/beam/dsls/sql/rule/BeamSortRule.java |  52 ---
 .../beam/dsls/sql/rule/BeamUnionRule.java       |  50 --
 .../beam/dsls/sql/rule/BeamValuesRule.java      |  48 --
 .../apache/beam/dsls/sql/rule/package-info.java |  23 -
 .../beam/dsls/sql/schema/BaseBeamTable.java     |  34 --
 .../apache/beam/dsls/sql/schema/BeamIOType.java |  28 --
 .../dsls/sql/schema/BeamPCollectionTable.java   |  61 ---
 .../apache/beam/dsls/sql/schema/BeamSqlRow.java | 314 -------------
 .../beam/dsls/sql/schema/BeamSqlRowCoder.java   | 185 --------
 .../beam/dsls/sql/schema/BeamSqlRowType.java    |  40 --
 .../beam/dsls/sql/schema/BeamSqlTable.java      |  52 ---
 .../beam/dsls/sql/schema/BeamSqlUdaf.java       |  72 ---
 .../apache/beam/dsls/sql/schema/BeamSqlUdf.java |  41 --
 .../beam/dsls/sql/schema/BeamTableUtils.java    | 122 -----
 .../sql/schema/kafka/BeamKafkaCSVTable.java     | 111 -----
 .../dsls/sql/schema/kafka/BeamKafkaTable.java   | 109 -----
 .../dsls/sql/schema/kafka/package-info.java     |  22 -
 .../beam/dsls/sql/schema/package-info.java      |  22 -
 .../dsls/sql/schema/text/BeamTextCSVTable.java  |  70 ---
 .../schema/text/BeamTextCSVTableIOReader.java   |  59 ---
 .../schema/text/BeamTextCSVTableIOWriter.java   |  59 ---
 .../dsls/sql/schema/text/BeamTextTable.java     |  42 --
 .../beam/dsls/sql/schema/text/package-info.java |  22 -
 .../transform/BeamAggregationTransforms.java    | 300 ------------
 .../sql/transform/BeamBuiltinAggregations.java  | 412 -----------------
 .../dsls/sql/transform/BeamJoinTransforms.java  | 166 -------
 .../transform/BeamSetOperatorsTransforms.java   | 112 -----
 .../dsls/sql/transform/BeamSqlFilterFn.java     |  62 ---
 .../sql/transform/BeamSqlOutputToConsoleFn.java |  41 --
 .../dsls/sql/transform/BeamSqlProjectFn.java    |  72 ---
 .../beam/dsls/sql/transform/package-info.java   |  22 -
 .../beam/dsls/sql/utils/CalciteUtils.java       | 113 -----
 .../beam/dsls/sql/utils/package-info.java       |  22 -
 dsls/sql/src/main/resources/log4j.properties    |  23 -
 .../beam/dsls/sql/BeamSqlApiSurfaceTest.java    |  59 ---
 .../dsls/sql/BeamSqlDslAggregationTest.java     | 380 ----------------
 .../apache/beam/dsls/sql/BeamSqlDslBase.java    | 170 -------
 .../beam/dsls/sql/BeamSqlDslFilterTest.java     | 155 -------
 .../beam/dsls/sql/BeamSqlDslJoinTest.java       | 191 --------
 .../beam/dsls/sql/BeamSqlDslProjectTest.java    | 238 ----------
 .../beam/dsls/sql/BeamSqlDslUdfUdafTest.java    | 138 ------
 .../org/apache/beam/dsls/sql/TestUtils.java     | 195 --------
 ...amSqlArithmeticOperatorsIntegrationTest.java | 165 -------
 ...mSqlBuiltinFunctionsIntegrationTestBase.java | 169 -------
 ...amSqlComparisonOperatorsIntegrationTest.java | 330 --------------
 ...mSqlConditionalFunctionsIntegrationTest.java |  60 ---
 .../BeamSqlDateFunctionsIntegrationTest.java    |  88 ----
 .../BeamSqlLogicalFunctionsIntegrationTest.java |  43 --
 .../BeamSqlMathFunctionsIntegrationTest.java    | 351 --------------
 .../BeamSqlStringFunctionsIntegrationTest.java  |  51 ---
 .../sql/interpreter/BeamSqlFnExecutorTest.java  | 416 -----------------
 .../interpreter/BeamSqlFnExecutorTestBase.java  |  92 ----
 .../operator/BeamNullExperssionTest.java        |  55 ---
 .../operator/BeamSqlAndOrExpressionTest.java    |  62 ---
 .../operator/BeamSqlCaseExpressionTest.java     |  94 ----
 .../operator/BeamSqlCastExpressionTest.java     | 126 ------
 .../operator/BeamSqlCompareExpressionTest.java  | 115 -----
 .../operator/BeamSqlInputRefExpressionTest.java |  57 ---
 .../operator/BeamSqlPrimitiveTest.java          |  59 ---
 .../BeamSqlReinterpretExpressionTest.java       |  77 ----
 .../operator/BeamSqlUdfExpressionTest.java      |  51 ---
 .../BeamSqlArithmeticExpressionTest.java        | 237 ----------
 .../date/BeamSqlCurrentDateExpressionTest.java  |  35 --
 .../date/BeamSqlCurrentTimeExpressionTest.java  |  40 --
 .../BeamSqlCurrentTimestampExpressionTest.java  |  40 --
 .../date/BeamSqlDateCeilExpressionTest.java     |  49 --
 .../date/BeamSqlDateExpressionTestBase.java     |  52 ---
 .../date/BeamSqlDateFloorExpressionTest.java    |  50 --
 .../date/BeamSqlExtractExpressionTest.java      |  96 ----
 .../logical/BeamSqlNotExpressionTest.java       |  48 --
 .../math/BeamSqlMathBinaryExpressionTest.java   | 203 ---------
 .../math/BeamSqlMathUnaryExpressionTest.java    | 310 -------------
 .../string/BeamSqlCharLengthExpressionTest.java |  45 --
 .../string/BeamSqlConcatExpressionTest.java     |  67 ---
 .../string/BeamSqlInitCapExpressionTest.java    |  55 ---
 .../string/BeamSqlLowerExpressionTest.java      |  45 --
 .../string/BeamSqlOverlayExpressionTest.java    |  88 ----
 .../string/BeamSqlPositionExpressionTest.java   |  85 ----
 .../BeamSqlStringUnaryExpressionTest.java       |  53 ---
 .../string/BeamSqlSubstringExpressionTest.java  | 102 -----
 .../string/BeamSqlTrimExpressionTest.java       | 103 -----
 .../string/BeamSqlUpperExpressionTest.java      |  45 --
 .../beam/dsls/sql/mock/MockedBoundedTable.java  | 134 ------
 .../apache/beam/dsls/sql/mock/MockedTable.java  |  42 --
 .../dsls/sql/mock/MockedUnboundedTable.java     | 114 -----
 .../beam/dsls/sql/rel/BeamIntersectRelTest.java | 119 -----
 .../rel/BeamJoinRelBoundedVsBoundedTest.java    | 204 ---------
 .../rel/BeamJoinRelUnboundedVsBoundedTest.java  | 241 ----------
 .../BeamJoinRelUnboundedVsUnboundedTest.java    | 219 ---------
 .../beam/dsls/sql/rel/BeamMinusRelTest.java     | 118 -----
 .../sql/rel/BeamSetOperatorRelBaseTest.java     | 106 -----
 .../beam/dsls/sql/rel/BeamSortRelTest.java      | 237 ----------
 .../beam/dsls/sql/rel/BeamUnionRelTest.java     | 104 -----
 .../beam/dsls/sql/rel/BeamValuesRelTest.java    | 105 -----
 .../org/apache/beam/dsls/sql/rel/CheckSize.java |  41 --
 .../dsls/sql/schema/BeamSqlRowCoderTest.java    |  83 ----
 .../sql/schema/kafka/BeamKafkaCSVTableTest.java | 111 -----
 .../sql/schema/text/BeamTextCSVTableTest.java   | 176 -------
 .../transform/BeamAggregationTransformTest.java | 453 -------------------
 .../schema/transform/BeamTransformBaseTest.java |  97 ----
 pom.xml                                         |   1 -
 sdks/java/extensions/pom.xml                    |   1 +
 sdks/java/extensions/sql/pom.xml                | 226 +++++++++
 .../java/org/apache/beam/dsls/sql/BeamSql.java  | 244 ++++++++++
 .../org/apache/beam/dsls/sql/BeamSqlCli.java    |  65 +++
 .../org/apache/beam/dsls/sql/BeamSqlEnv.java    | 120 +++++
 .../beam/dsls/sql/example/BeamSqlExample.java   |  97 ++++
 .../beam/dsls/sql/example/package-info.java     |  23 +
 .../interpreter/BeamSqlExpressionExecutor.java  |  43 ++
 .../dsls/sql/interpreter/BeamSqlFnExecutor.java | 442 ++++++++++++++++++
 .../operator/BeamSqlCaseExpression.java         |  64 +++
 .../operator/BeamSqlCastExpression.java         | 132 ++++++
 .../interpreter/operator/BeamSqlExpression.java |  78 ++++
 .../operator/BeamSqlInputRefExpression.java     |  43 ++
 .../interpreter/operator/BeamSqlPrimitive.java  | 152 +++++++
 .../operator/BeamSqlReinterpretExpression.java  |  55 +++
 .../operator/BeamSqlUdfExpression.java          |  86 ++++
 .../operator/BeamSqlWindowEndExpression.java    |  42 ++
 .../operator/BeamSqlWindowExpression.java       |  50 ++
 .../operator/BeamSqlWindowStartExpression.java  |  43 ++
 .../arithmetic/BeamSqlArithmeticExpression.java | 122 +++++
 .../arithmetic/BeamSqlDivideExpression.java     |  37 ++
 .../arithmetic/BeamSqlMinusExpression.java      |  36 ++
 .../arithmetic/BeamSqlModExpression.java        |  36 ++
 .../arithmetic/BeamSqlMultiplyExpression.java   |  36 ++
 .../arithmetic/BeamSqlPlusExpression.java       |  36 ++
 .../operator/arithmetic/package-info.java       |  22 +
 .../comparison/BeamSqlCompareExpression.java    |  96 ++++
 .../comparison/BeamSqlEqualsExpression.java     |  49 ++
 .../BeamSqlGreaterThanExpression.java           |  49 ++
 .../BeamSqlGreaterThanOrEqualsExpression.java   |  49 ++
 .../comparison/BeamSqlIsNotNullExpression.java  |  53 +++
 .../comparison/BeamSqlIsNullExpression.java     |  53 +++
 .../comparison/BeamSqlLessThanExpression.java   |  49 ++
 .../BeamSqlLessThanOrEqualsExpression.java      |  49 ++
 .../comparison/BeamSqlNotEqualsExpression.java  |  49 ++
 .../operator/comparison/package-info.java       |  22 +
 .../date/BeamSqlCurrentDateExpression.java      |  45 ++
 .../date/BeamSqlCurrentTimeExpression.java      |  53 +++
 .../date/BeamSqlCurrentTimestampExpression.java |  49 ++
 .../date/BeamSqlDateCeilExpression.java         |  55 +++
 .../date/BeamSqlDateFloorExpression.java        |  55 +++
 .../operator/date/BeamSqlExtractExpression.java | 101 +++++
 .../interpreter/operator/date/package-info.java |  22 +
 .../operator/logical/BeamSqlAndExpression.java  |  48 ++
 .../logical/BeamSqlLogicalExpression.java       |  47 ++
 .../operator/logical/BeamSqlNotExpression.java  |  54 +++
 .../operator/logical/BeamSqlOrExpression.java   |  48 ++
 .../operator/logical/package-info.java          |  22 +
 .../operator/math/BeamSqlAbsExpression.java     |  74 +++
 .../operator/math/BeamSqlAcosExpression.java    |  41 ++
 .../operator/math/BeamSqlAsinExpression.java    |  41 ++
 .../operator/math/BeamSqlAtan2Expression.java   |  43 ++
 .../operator/math/BeamSqlAtanExpression.java    |  41 ++
 .../operator/math/BeamSqlCeilExpression.java    |  46 ++
 .../operator/math/BeamSqlCosExpression.java     |  41 ++
 .../operator/math/BeamSqlCotExpression.java     |  41 ++
 .../operator/math/BeamSqlDegreesExpression.java |  41 ++
 .../operator/math/BeamSqlExpExpression.java     |  41 ++
 .../operator/math/BeamSqlFloorExpression.java   |  46 ++
 .../operator/math/BeamSqlLnExpression.java      |  41 ++
 .../operator/math/BeamSqlLogExpression.java     |  41 ++
 .../math/BeamSqlMathBinaryExpression.java       |  64 +++
 .../math/BeamSqlMathUnaryExpression.java        |  58 +++
 .../operator/math/BeamSqlPiExpression.java      |  42 ++
 .../operator/math/BeamSqlPowerExpression.java   |  45 ++
 .../operator/math/BeamSqlRadiansExpression.java |  41 ++
 .../operator/math/BeamSqlRandExpression.java    |  54 +++
 .../math/BeamSqlRandIntegerExpression.java      |  58 +++
 .../operator/math/BeamSqlRoundExpression.java   | 108 +++++
 .../operator/math/BeamSqlSignExpression.java    |  72 +++
 .../operator/math/BeamSqlSinExpression.java     |  41 ++
 .../operator/math/BeamSqlTanExpression.java     |  41 ++
 .../math/BeamSqlTruncateExpression.java         |  76 ++++
 .../interpreter/operator/math/package-info.java |  22 +
 .../sql/interpreter/operator/package-info.java  |  22 +
 .../string/BeamSqlCharLengthExpression.java     |  40 ++
 .../string/BeamSqlConcatExpression.java         |  63 +++
 .../string/BeamSqlInitCapExpression.java        |  56 +++
 .../operator/string/BeamSqlLowerExpression.java |  40 ++
 .../string/BeamSqlOverlayExpression.java        |  77 ++++
 .../string/BeamSqlPositionExpression.java       |  73 +++
 .../string/BeamSqlStringUnaryExpression.java    |  45 ++
 .../string/BeamSqlSubstringExpression.java      |  83 ++++
 .../operator/string/BeamSqlTrimExpression.java  | 101 +++++
 .../operator/string/BeamSqlUpperExpression.java |  40 ++
 .../operator/string/package-info.java           |  22 +
 .../beam/dsls/sql/interpreter/package-info.java |  22 +
 .../org/apache/beam/dsls/sql/package-info.java  |  22 +
 .../beam/dsls/sql/planner/BeamQueryPlanner.java | 167 +++++++
 .../dsls/sql/planner/BeamRelDataTypeSystem.java |  40 ++
 .../beam/dsls/sql/planner/BeamRuleSets.java     |  75 +++
 .../beam/dsls/sql/planner/package-info.java     |  24 +
 .../beam/dsls/sql/rel/BeamAggregationRel.java   | 182 ++++++++
 .../apache/beam/dsls/sql/rel/BeamFilterRel.java |  70 +++
 .../apache/beam/dsls/sql/rel/BeamIOSinkRel.java |  75 +++
 .../beam/dsls/sql/rel/BeamIOSourceRel.java      |  63 +++
 .../beam/dsls/sql/rel/BeamIntersectRel.java     |  58 +++
 .../apache/beam/dsls/sql/rel/BeamJoinRel.java   | 302 +++++++++++++
 .../dsls/sql/rel/BeamLogicalConvention.java     |  72 +++
 .../apache/beam/dsls/sql/rel/BeamMinusRel.java  |  56 +++
 .../beam/dsls/sql/rel/BeamProjectRel.java       |  81 ++++
 .../apache/beam/dsls/sql/rel/BeamRelNode.java   |  38 ++
 .../dsls/sql/rel/BeamSetOperatorRelBase.java    |  98 ++++
 .../apache/beam/dsls/sql/rel/BeamSortRel.java   | 247 ++++++++++
 .../beam/dsls/sql/rel/BeamSqlRelUtils.java      |  73 +++
 .../apache/beam/dsls/sql/rel/BeamUnionRel.java  |  88 ++++
 .../apache/beam/dsls/sql/rel/BeamValuesRel.java |  79 ++++
 .../apache/beam/dsls/sql/rel/package-info.java  |  23 +
 .../beam/dsls/sql/rule/BeamAggregationRule.java | 162 +++++++
 .../beam/dsls/sql/rule/BeamFilterRule.java      |  49 ++
 .../beam/dsls/sql/rule/BeamIOSinkRule.java      |  82 ++++
 .../beam/dsls/sql/rule/BeamIOSourceRule.java    |  49 ++
 .../beam/dsls/sql/rule/BeamIntersectRule.java   |  51 +++
 .../apache/beam/dsls/sql/rule/BeamJoinRule.java |  53 +++
 .../beam/dsls/sql/rule/BeamMinusRule.java       |  51 +++
 .../beam/dsls/sql/rule/BeamProjectRule.java     |  50 ++
 .../apache/beam/dsls/sql/rule/BeamSortRule.java |  52 +++
 .../beam/dsls/sql/rule/BeamUnionRule.java       |  50 ++
 .../beam/dsls/sql/rule/BeamValuesRule.java      |  48 ++
 .../apache/beam/dsls/sql/rule/package-info.java |  23 +
 .../beam/dsls/sql/schema/BaseBeamTable.java     |  34 ++
 .../apache/beam/dsls/sql/schema/BeamIOType.java |  28 ++
 .../dsls/sql/schema/BeamPCollectionTable.java   |  61 +++
 .../apache/beam/dsls/sql/schema/BeamSqlRow.java | 314 +++++++++++++
 .../beam/dsls/sql/schema/BeamSqlRowCoder.java   | 185 ++++++++
 .../beam/dsls/sql/schema/BeamSqlRowType.java    |  40 ++
 .../beam/dsls/sql/schema/BeamSqlTable.java      |  52 +++
 .../beam/dsls/sql/schema/BeamSqlUdaf.java       |  72 +++
 .../apache/beam/dsls/sql/schema/BeamSqlUdf.java |  41 ++
 .../beam/dsls/sql/schema/BeamTableUtils.java    | 122 +++++
 .../sql/schema/kafka/BeamKafkaCSVTable.java     | 111 +++++
 .../dsls/sql/schema/kafka/BeamKafkaTable.java   | 109 +++++
 .../dsls/sql/schema/kafka/package-info.java     |  22 +
 .../beam/dsls/sql/schema/package-info.java      |  22 +
 .../dsls/sql/schema/text/BeamTextCSVTable.java  |  70 +++
 .../schema/text/BeamTextCSVTableIOReader.java   |  59 +++
 .../schema/text/BeamTextCSVTableIOWriter.java   |  59 +++
 .../dsls/sql/schema/text/BeamTextTable.java     |  42 ++
 .../beam/dsls/sql/schema/text/package-info.java |  22 +
 .../transform/BeamAggregationTransforms.java    | 300 ++++++++++++
 .../sql/transform/BeamBuiltinAggregations.java  | 412 +++++++++++++++++
 .../dsls/sql/transform/BeamJoinTransforms.java  | 166 +++++++
 .../transform/BeamSetOperatorsTransforms.java   | 112 +++++
 .../dsls/sql/transform/BeamSqlFilterFn.java     |  62 +++
 .../sql/transform/BeamSqlOutputToConsoleFn.java |  41 ++
 .../dsls/sql/transform/BeamSqlProjectFn.java    |  72 +++
 .../beam/dsls/sql/transform/package-info.java   |  22 +
 .../beam/dsls/sql/utils/CalciteUtils.java       | 113 +++++
 .../beam/dsls/sql/utils/package-info.java       |  22 +
 .../sql/src/main/resources/log4j.properties     |  23 +
 .../beam/dsls/sql/BeamSqlApiSurfaceTest.java    |  59 +++
 .../dsls/sql/BeamSqlDslAggregationTest.java     | 380 ++++++++++++++++
 .../apache/beam/dsls/sql/BeamSqlDslBase.java    | 170 +++++++
 .../beam/dsls/sql/BeamSqlDslFilterTest.java     | 155 +++++++
 .../beam/dsls/sql/BeamSqlDslJoinTest.java       | 191 ++++++++
 .../beam/dsls/sql/BeamSqlDslProjectTest.java    | 238 ++++++++++
 .../beam/dsls/sql/BeamSqlDslUdfUdafTest.java    | 138 ++++++
 .../org/apache/beam/dsls/sql/TestUtils.java     | 195 ++++++++
 ...amSqlArithmeticOperatorsIntegrationTest.java | 165 +++++++
 ...mSqlBuiltinFunctionsIntegrationTestBase.java | 169 +++++++
 ...amSqlComparisonOperatorsIntegrationTest.java | 330 ++++++++++++++
 ...mSqlConditionalFunctionsIntegrationTest.java |  60 +++
 .../BeamSqlDateFunctionsIntegrationTest.java    |  88 ++++
 .../BeamSqlLogicalFunctionsIntegrationTest.java |  43 ++
 .../BeamSqlMathFunctionsIntegrationTest.java    | 351 ++++++++++++++
 .../BeamSqlStringFunctionsIntegrationTest.java  |  51 +++
 .../sql/interpreter/BeamSqlFnExecutorTest.java  | 416 +++++++++++++++++
 .../interpreter/BeamSqlFnExecutorTestBase.java  |  92 ++++
 .../operator/BeamNullExperssionTest.java        |  55 +++
 .../operator/BeamSqlAndOrExpressionTest.java    |  62 +++
 .../operator/BeamSqlCaseExpressionTest.java     |  94 ++++
 .../operator/BeamSqlCastExpressionTest.java     | 126 ++++++
 .../operator/BeamSqlCompareExpressionTest.java  | 115 +++++
 .../operator/BeamSqlInputRefExpressionTest.java |  57 +++
 .../operator/BeamSqlPrimitiveTest.java          |  59 +++
 .../BeamSqlReinterpretExpressionTest.java       |  77 ++++
 .../operator/BeamSqlUdfExpressionTest.java      |  51 +++
 .../BeamSqlArithmeticExpressionTest.java        | 237 ++++++++++
 .../date/BeamSqlCurrentDateExpressionTest.java  |  35 ++
 .../date/BeamSqlCurrentTimeExpressionTest.java  |  40 ++
 .../BeamSqlCurrentTimestampExpressionTest.java  |  40 ++
 .../date/BeamSqlDateCeilExpressionTest.java     |  49 ++
 .../date/BeamSqlDateExpressionTestBase.java     |  52 +++
 .../date/BeamSqlDateFloorExpressionTest.java    |  50 ++
 .../date/BeamSqlExtractExpressionTest.java      |  96 ++++
 .../logical/BeamSqlNotExpressionTest.java       |  48 ++
 .../math/BeamSqlMathBinaryExpressionTest.java   | 203 +++++++++
 .../math/BeamSqlMathUnaryExpressionTest.java    | 310 +++++++++++++
 .../string/BeamSqlCharLengthExpressionTest.java |  45 ++
 .../string/BeamSqlConcatExpressionTest.java     |  67 +++
 .../string/BeamSqlInitCapExpressionTest.java    |  55 +++
 .../string/BeamSqlLowerExpressionTest.java      |  45 ++
 .../string/BeamSqlOverlayExpressionTest.java    |  88 ++++
 .../string/BeamSqlPositionExpressionTest.java   |  85 ++++
 .../BeamSqlStringUnaryExpressionTest.java       |  53 +++
 .../string/BeamSqlSubstringExpressionTest.java  | 102 +++++
 .../string/BeamSqlTrimExpressionTest.java       | 103 +++++
 .../string/BeamSqlUpperExpressionTest.java      |  45 ++
 .../beam/dsls/sql/mock/MockedBoundedTable.java  | 134 ++++++
 .../apache/beam/dsls/sql/mock/MockedTable.java  |  42 ++
 .../dsls/sql/mock/MockedUnboundedTable.java     | 114 +++++
 .../beam/dsls/sql/rel/BeamIntersectRelTest.java | 119 +++++
 .../rel/BeamJoinRelBoundedVsBoundedTest.java    | 204 +++++++++
 .../rel/BeamJoinRelUnboundedVsBoundedTest.java  | 241 ++++++++++
 .../BeamJoinRelUnboundedVsUnboundedTest.java    | 219 +++++++++
 .../beam/dsls/sql/rel/BeamMinusRelTest.java     | 118 +++++
 .../sql/rel/BeamSetOperatorRelBaseTest.java     | 106 +++++
 .../beam/dsls/sql/rel/BeamSortRelTest.java      | 237 ++++++++++
 .../beam/dsls/sql/rel/BeamUnionRelTest.java     | 104 +++++
 .../beam/dsls/sql/rel/BeamValuesRelTest.java    | 105 +++++
 .../org/apache/beam/dsls/sql/rel/CheckSize.java |  41 ++
 .../dsls/sql/schema/BeamSqlRowCoderTest.java    |  83 ++++
 .../sql/schema/kafka/BeamKafkaCSVTableTest.java | 111 +++++
 .../sql/schema/text/BeamTextCSVTableTest.java   | 176 +++++++
 .../transform/BeamAggregationTransformTest.java | 453 +++++++++++++++++++
 .../schema/transform/BeamTransformBaseTest.java |  97 ++++
 433 files changed, 19434 insertions(+), 19494 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/beam/blob/ba493f85/dsls/pom.xml
----------------------------------------------------------------------
diff --git a/dsls/pom.xml b/dsls/pom.xml
deleted file mode 100644
index d0beca1..0000000
--- a/dsls/pom.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.beam</groupId>
-    <artifactId>beam-parent</artifactId>
-    <version>2.2.0-SNAPSHOT</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>beam-dsls-parent</artifactId>
-  <packaging>pom</packaging>
-  <name>Apache Beam :: DSLs</name>
-
-  <modules>
-    <module>sql</module>
-  </modules>
-
-  <profiles>
-    <profile>
-      <id>release</id>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.codehaus.mojo</groupId>
-            <artifactId>findbugs-maven-plugin</artifactId>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-  </profiles>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-checkstyle-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </build>
-
-</project>

http://git-wip-us.apache.org/repos/asf/beam/blob/ba493f85/dsls/sql/pom.xml
----------------------------------------------------------------------
diff --git a/dsls/sql/pom.xml b/dsls/sql/pom.xml
deleted file mode 100644
index ac07489..0000000
--- a/dsls/sql/pom.xml
+++ /dev/null
@@ -1,226 +0,0 @@
-<?xml version="1.0"?>
-<!--
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<project
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-  xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.beam</groupId>
-    <artifactId>beam-dsls-parent</artifactId>
-    <version>2.2.0-SNAPSHOT</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>beam-dsls-sql</artifactId>
-  <name>Apache Beam :: DSLs :: SQL</name>
-  <description>Beam SQL provides a new interface to generate a Beam pipeline from SQL statement</description>
-
-  <packaging>jar</packaging>
-
-  <properties>
-    <timestamp>${maven.build.timestamp}</timestamp>
-    <maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format>
-    <calcite.version>1.13.0</calcite.version>
-    <avatica.version>1.10.0</avatica.version>
-  </properties>
-
-  <profiles>
-    <!--
-      The direct runner is available by default.
-      You can also include it on the classpath explicitly with -P direct-runner
-    -->
-    <profile>
-      <id>direct-runner</id>
-      <activation>
-        <activeByDefault>true</activeByDefault>
-      </activation>
-      <dependencies>
-        <dependency>
-          <groupId>org.apache.beam</groupId>
-          <artifactId>beam-runners-direct-java</artifactId>
-          <scope>runtime</scope>
-        </dependency>
-      </dependencies>
-    </profile>
-  </profiles>
-
-  <build>
-    <resources>
-      <resource>
-        <directory>src/main/resources</directory>
-        <filtering>true</filtering>
-      </resource>
-    </resources>
-
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-checkstyle-plugin</artifactId>
-          <configuration>
-            <!-- Set testSourceDirectory in order to exclude generated-test-sources -->
-            <testSourceDirectory>${project.basedir}/src/test/</testSourceDirectory>
-          </configuration>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <configuration>
-        <argLine>-da</argLine> <!-- disable assert in Calcite converter validation -->
-        </configuration>
-      </plugin>
-
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-shade-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>bundle-and-repackage</id>
-            <phase>package</phase>
-            <goals>
-              <goal>shade</goal>
-            </goals>
-            <configuration>
-              <shadeTestJar>true</shadeTestJar>
-              <artifactSet>
-                <includes>
-                  <include>com.google.guava:guava</include>
-                </includes>
-              </artifactSet>
-              <filters>
-                <filter>
-                  <artifact>*:*</artifact>
-                  <excludes>
-                    <exclude>META-INF/*.SF</exclude>
-                    <exclude>META-INF/*.DSA</exclude>
-                    <exclude>META-INF/*.RSA</exclude>
-                  </excludes>
-                </filter>
-              </filters>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
-      <!-- Coverage analysis for unit tests. -->
-      <plugin>
-        <groupId>org.jacoco</groupId>
-        <artifactId>jacoco-maven-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </build>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.calcite</groupId>
-      <artifactId>calcite-core</artifactId>
-      <version>${calcite.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.calcite</groupId>
-      <artifactId>calcite-linq4j</artifactId>
-      <version>${calcite.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.calcite.avatica</groupId>
-      <artifactId>avatica-core</artifactId>
-      <version>${avatica.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.beam</groupId>
-      <artifactId>beam-sdks-java-core</artifactId>
-      <exclusions>
-        <exclusion>
-          <groupId>com.google.protobuf</groupId>
-          <artifactId>protobuf-lite</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <dependency>
-      <groupId>com.google.guava</groupId>
-      <artifactId>guava</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-jdk14</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-api</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-csv</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>joda-time</groupId>
-      <artifactId>joda-time</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.beam</groupId>
-      <artifactId>beam-sdks-java-extensions-join-library</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>com.google.auto.value</groupId>
-      <artifactId>auto-value</artifactId>
-      <!-- this is a hack to make it available at compile time but not bundled.-->
-      <scope>provided</scope>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.apache.beam</groupId>
-      <artifactId>beam-sdks-java-io-kafka</artifactId>
-      <scope>provided</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.kafka</groupId>
-      <artifactId>kafka-clients</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    
-    <!-- for tests  -->
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.hamcrest</groupId>
-      <artifactId>hamcrest-all</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-</project>

http://git-wip-us.apache.org/repos/asf/beam/blob/ba493f85/dsls/sql/src/main/java/org/apache/beam/dsls/sql/BeamSql.java
----------------------------------------------------------------------
diff --git a/dsls/sql/src/main/java/org/apache/beam/dsls/sql/BeamSql.java b/dsls/sql/src/main/java/org/apache/beam/dsls/sql/BeamSql.java
deleted file mode 100644
index d902f42..0000000
--- a/dsls/sql/src/main/java/org/apache/beam/dsls/sql/BeamSql.java
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.beam.dsls.sql;
-
-import com.google.auto.value.AutoValue;
-import org.apache.beam.dsls.sql.rel.BeamRelNode;
-import org.apache.beam.dsls.sql.schema.BeamPCollectionTable;
-import org.apache.beam.dsls.sql.schema.BeamSqlRow;
-import org.apache.beam.dsls.sql.schema.BeamSqlRowCoder;
-import org.apache.beam.dsls.sql.schema.BeamSqlUdaf;
-import org.apache.beam.dsls.sql.schema.BeamSqlUdf;
-import org.apache.beam.sdk.annotations.Experimental;
-import org.apache.beam.sdk.transforms.PTransform;
-import org.apache.beam.sdk.values.PCollection;
-import org.apache.beam.sdk.values.PCollectionTuple;
-import org.apache.beam.sdk.values.TupleTag;
-import org.apache.calcite.sql.SqlNode;
-import org.apache.calcite.sql.SqlSelect;
-import org.apache.calcite.sql.parser.SqlParseException;
-import org.apache.calcite.tools.RelConversionException;
-import org.apache.calcite.tools.ValidationException;
-
-/**
- * {@code BeamSql} is the DSL interface of BeamSQL. It translates a SQL query as a
- * {@link PTransform}, so developers can use standard SQL queries in a Beam pipeline.
- *
- * <h1>Beam SQL DSL usage:</h1>
- * A typical pipeline with Beam SQL DSL is:
- * <pre>
- *{@code
-PipelineOptions options = PipelineOptionsFactory.create();
-Pipeline p = Pipeline.create(options);
-
-//create table from TextIO;
-PCollection<BeamSqlRow> inputTableA = p.apply(TextIO.read().from("/my/input/patha"))
-    .apply(...);
-PCollection<BeamSqlRow> inputTableB = p.apply(TextIO.read().from("/my/input/pathb"))
-    .apply(...);
-
-//run a simple query, and register the output as a table in BeamSql;
-String sql1 = "select MY_FUNC(c1), c2 from PCOLLECTION";
-PCollection<BeamSqlRow> outputTableA = inputTableA.apply(
-    BeamSql.simpleQuery(sql1)
-    .withUdf("MY_FUNC", MY_FUNC.class, "FUNC"));
-
-//run a JOIN with one table from TextIO, and one table from another query
-PCollection<BeamSqlRow> outputTableB = PCollectionTuple.of(
-    new TupleTag<BeamSqlRow>("TABLE_O_A"), outputTableA)
-                .and(new TupleTag<BeamSqlRow>("TABLE_B"), inputTableB)
-    .apply(BeamSql.query("select * from TABLE_O_A JOIN TABLE_B where ..."));
-
-//output the final result with TextIO
-outputTableB.apply(...).apply(TextIO.write().to("/my/output/path"));
-
-p.run().waitUntilFinish();
- * }
- * </pre>
- */
-@Experimental
-public class BeamSql {
-  /**
-   * Transforms a SQL query into a {@link PTransform} representing an equivalent execution plan.
-   *
-   * <p>The returned {@link PTransform} can be applied to a {@link PCollectionTuple} representing
-   * all the input tables and results in a {@code PCollection<BeamSqlRow>} representing the output
-   * table. The {@link PCollectionTuple} contains the mapping from {@code table names} to
-   * {@code PCollection<BeamSqlRow>}, each representing an input table.
-   *
-   * <p>It is an error to apply a {@link PCollectionTuple} missing any {@code table names}
-   * referenced within the query.
-   */
-  public static QueryTransform query(String sqlQuery) {
-    return QueryTransform.builder()
-        .setSqlEnv(new BeamSqlEnv())
-        .setSqlQuery(sqlQuery)
-        .build();
-  }
-
-  /**
-   * Transforms a SQL query into a {@link PTransform} representing an equivalent execution plan.
-   *
-   * <p>This is a simplified form of {@link #query(String)} where the query must reference
-   * a single input table.
-   *
-   * <p>Make sure to query it from a static table name <em>PCOLLECTION</em>.
-   */
-  public static SimpleQueryTransform simpleQuery(String sqlQuery) throws Exception {
-    return SimpleQueryTransform.builder()
-        .setSqlEnv(new BeamSqlEnv())
-        .setSqlQuery(sqlQuery)
-        .build();
-  }
-
-  /**
-   * A {@link PTransform} representing an execution plan for a SQL query.
-   */
-  @AutoValue
-  public abstract static class QueryTransform extends
-      PTransform<PCollectionTuple, PCollection<BeamSqlRow>> {
-    abstract BeamSqlEnv getSqlEnv();
-    abstract String getSqlQuery();
-
-    static Builder builder() {
-      return new AutoValue_BeamSql_QueryTransform.Builder();
-    }
-
-    @AutoValue.Builder
-    abstract static class Builder {
-      abstract Builder setSqlQuery(String sqlQuery);
-      abstract Builder setSqlEnv(BeamSqlEnv sqlEnv);
-      abstract QueryTransform build();
-    }
-
-    /**
-     * register a UDF function used in this query.
-     */
-     public QueryTransform withUdf(String functionName, Class<? extends BeamSqlUdf> clazz){
-       getSqlEnv().registerUdf(functionName, clazz);
-       return this;
-     }
-
-     /**
-      * register a UDAF function used in this query.
-      */
-     public QueryTransform withUdaf(String functionName, Class<? extends BeamSqlUdaf> clazz){
-       getSqlEnv().registerUdaf(functionName, clazz);
-       return this;
-     }
-
-    @Override
-    public PCollection<BeamSqlRow> expand(PCollectionTuple input) {
-      registerTables(input);
-
-      BeamRelNode beamRelNode = null;
-      try {
-        beamRelNode = getSqlEnv().planner.convertToBeamRel(getSqlQuery());
-      } catch (ValidationException | RelConversionException | SqlParseException e) {
-        throw new IllegalStateException(e);
-      }
-
-      try {
-        return beamRelNode.buildBeamPipeline(input, getSqlEnv());
-      } catch (Exception e) {
-        throw new IllegalStateException(e);
-      }
-    }
-
-    //register tables, related with input PCollections.
-    private void registerTables(PCollectionTuple input){
-      for (TupleTag<?> sourceTag : input.getAll().keySet()) {
-        PCollection<BeamSqlRow> sourceStream = (PCollection<BeamSqlRow>) input.get(sourceTag);
-        BeamSqlRowCoder sourceCoder = (BeamSqlRowCoder) sourceStream.getCoder();
-
-        getSqlEnv().registerTable(sourceTag.getId(),
-            new BeamPCollectionTable(sourceStream, sourceCoder.getTableSchema()));
-      }
-    }
-  }
-
-  /**
-   * A {@link PTransform} representing an execution plan for a SQL query referencing
-   * a single table.
-   */
-  @AutoValue
-  public abstract static class SimpleQueryTransform
-      extends PTransform<PCollection<BeamSqlRow>, PCollection<BeamSqlRow>> {
-    private static final String PCOLLECTION_TABLE_NAME = "PCOLLECTION";
-    abstract BeamSqlEnv getSqlEnv();
-    abstract String getSqlQuery();
-
-    static Builder builder() {
-      return new AutoValue_BeamSql_SimpleQueryTransform.Builder();
-    }
-
-    @AutoValue.Builder
-    abstract static class Builder {
-      abstract Builder setSqlQuery(String sqlQuery);
-      abstract Builder setSqlEnv(BeamSqlEnv sqlEnv);
-      abstract SimpleQueryTransform build();
-    }
-
-    /**
-     * register a UDF function used in this query.
-     */
-     public SimpleQueryTransform withUdf(String functionName, Class<? extends BeamSqlUdf> clazz){
-       getSqlEnv().registerUdf(functionName, clazz);
-       return this;
-     }
-
-     /**
-      * register a UDAF function used in this query.
-      */
-     public SimpleQueryTransform withUdaf(String functionName, Class<? extends BeamSqlUdaf> clazz){
-       getSqlEnv().registerUdaf(functionName, clazz);
-       return this;
-     }
-
-    private void validateQuery() {
-      SqlNode sqlNode;
-      try {
-        sqlNode = getSqlEnv().planner.parseQuery(getSqlQuery());
-        getSqlEnv().planner.getPlanner().close();
-      } catch (SqlParseException e) {
-        throw new IllegalStateException(e);
-      }
-
-      if (sqlNode instanceof SqlSelect) {
-        SqlSelect select = (SqlSelect) sqlNode;
-        String tableName = select.getFrom().toString();
-        if (!tableName.equalsIgnoreCase(PCOLLECTION_TABLE_NAME)) {
-          throw new IllegalStateException("Use fixed table name " + PCOLLECTION_TABLE_NAME);
-        }
-      } else {
-        throw new UnsupportedOperationException(
-            "Sql operation: " + sqlNode.toString() + " is not supported!");
-      }
-    }
-
-    @Override
-    public PCollection<BeamSqlRow> expand(PCollection<BeamSqlRow> input) {
-      validateQuery();
-      return PCollectionTuple.of(new TupleTag<BeamSqlRow>(PCOLLECTION_TABLE_NAME), input)
-          .apply(QueryTransform.builder()
-              .setSqlEnv(getSqlEnv())
-              .setSqlQuery(getSqlQuery())
-              .build());
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/beam/blob/ba493f85/dsls/sql/src/main/java/org/apache/beam/dsls/sql/BeamSqlCli.java
----------------------------------------------------------------------
diff --git a/dsls/sql/src/main/java/org/apache/beam/dsls/sql/BeamSqlCli.java b/dsls/sql/src/main/java/org/apache/beam/dsls/sql/BeamSqlCli.java
deleted file mode 100644
index 50da244..0000000
--- a/dsls/sql/src/main/java/org/apache/beam/dsls/sql/BeamSqlCli.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.beam.dsls.sql;
-
-import org.apache.beam.dsls.sql.rel.BeamRelNode;
-import org.apache.beam.dsls.sql.schema.BeamSqlRow;
-import org.apache.beam.sdk.Pipeline;
-import org.apache.beam.sdk.annotations.Experimental;
-import org.apache.beam.sdk.options.PipelineOptions;
-import org.apache.beam.sdk.options.PipelineOptionsFactory;
-import org.apache.beam.sdk.values.PCollection;
-import org.apache.calcite.plan.RelOptUtil;
-
-/**
- * {@link BeamSqlCli} provides methods to execute Beam SQL with an interactive client.
- */
-@Experimental
-public class BeamSqlCli {
-  /**
-   * Returns a human readable representation of the query execution plan.
-   */
-  public static String explainQuery(String sqlString, BeamSqlEnv sqlEnv) throws Exception {
-    BeamRelNode exeTree = sqlEnv.planner.convertToBeamRel(sqlString);
-    String beamPlan = RelOptUtil.toString(exeTree);
-    return beamPlan;
-  }
-
-  /**
-   * compile SQL, and return a {@link Pipeline}.
-   */
-  public static PCollection<BeamSqlRow> compilePipeline(String sqlStatement, BeamSqlEnv sqlEnv)
-      throws Exception{
-    PipelineOptions options = PipelineOptionsFactory.fromArgs(new String[] {}).withValidation()
-        .as(PipelineOptions.class); // FlinkPipelineOptions.class
-    options.setJobName("BeamPlanCreator");
-    Pipeline pipeline = Pipeline.create(options);
-
-    return compilePipeline(sqlStatement, pipeline, sqlEnv);
-  }
-
-  /**
-   * compile SQL, and return a {@link Pipeline}.
-   */
-  public static PCollection<BeamSqlRow> compilePipeline(String sqlStatement, Pipeline basePipeline
-      , BeamSqlEnv sqlEnv) throws Exception{
-    PCollection<BeamSqlRow> resultStream =
-        sqlEnv.planner.compileBeamPipeline(sqlStatement, basePipeline, sqlEnv);
-    return resultStream;
-  }
-}

http://git-wip-us.apache.org/repos/asf/beam/blob/ba493f85/dsls/sql/src/main/java/org/apache/beam/dsls/sql/BeamSqlEnv.java
----------------------------------------------------------------------
diff --git a/dsls/sql/src/main/java/org/apache/beam/dsls/sql/BeamSqlEnv.java b/dsls/sql/src/main/java/org/apache/beam/dsls/sql/BeamSqlEnv.java
deleted file mode 100644
index 0e1ac98..0000000
--- a/dsls/sql/src/main/java/org/apache/beam/dsls/sql/BeamSqlEnv.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.beam.dsls.sql;
-
-import java.io.Serializable;
-
-import org.apache.beam.dsls.sql.planner.BeamQueryPlanner;
-import org.apache.beam.dsls.sql.schema.BaseBeamTable;
-import org.apache.beam.dsls.sql.schema.BeamSqlRowType;
-import org.apache.beam.dsls.sql.schema.BeamSqlUdaf;
-import org.apache.beam.dsls.sql.schema.BeamSqlUdf;
-import org.apache.beam.dsls.sql.utils.CalciteUtils;
-import org.apache.calcite.DataContext;
-import org.apache.calcite.linq4j.Enumerable;
-import org.apache.calcite.rel.type.RelDataType;
-import org.apache.calcite.rel.type.RelDataTypeFactory;
-import org.apache.calcite.schema.ScannableTable;
-import org.apache.calcite.schema.Schema;
-import org.apache.calcite.schema.SchemaPlus;
-import org.apache.calcite.schema.Statistic;
-import org.apache.calcite.schema.Statistics;
-import org.apache.calcite.schema.impl.AggregateFunctionImpl;
-import org.apache.calcite.schema.impl.ScalarFunctionImpl;
-import org.apache.calcite.tools.Frameworks;
-
-/**
- * {@link BeamSqlEnv} prepares the execution context for {@link BeamSql} and {@link BeamSqlCli}.
- *
- * <p>It contains a {@link SchemaPlus} which holds the metadata of tables/UDF functions, and
- * a {@link BeamQueryPlanner} which parse/validate/optimize/translate input SQL queries.
- */
-public class BeamSqlEnv implements Serializable{
-  transient SchemaPlus schema;
-  transient BeamQueryPlanner planner;
-
-  public BeamSqlEnv() {
-    schema = Frameworks.createRootSchema(true);
-    planner = new BeamQueryPlanner(schema);
-  }
-
-  /**
-   * Register a UDF function which can be used in SQL expression.
-   */
-  public void registerUdf(String functionName, Class<? extends BeamSqlUdf> clazz) {
-    schema.add(functionName, ScalarFunctionImpl.create(clazz, BeamSqlUdf.UDF_METHOD));
-  }
-
-  /**
-   * Register a UDAF function which can be used in GROUP-BY expression.
-   * See {@link BeamSqlUdaf} on how to implement a UDAF.
-   */
-  public void registerUdaf(String functionName, Class<? extends BeamSqlUdaf> clazz) {
-    schema.add(functionName, AggregateFunctionImpl.create(clazz));
-  }
-
-  /**
-   * Registers a {@link BaseBeamTable} which can be used for all subsequent queries.
-   *
-   */
-  public void registerTable(String tableName, BaseBeamTable table) {
-    schema.add(tableName, new BeamCalciteTable(table.getRowType()));
-    planner.getSourceTables().put(tableName, table);
-  }
-
-  /**
-   * Find {@link BaseBeamTable} by table name.
-   */
-  public BaseBeamTable findTable(String tableName){
-    return planner.getSourceTables().get(tableName);
-  }
-
-  private static class BeamCalciteTable implements ScannableTable, Serializable {
-    private BeamSqlRowType beamSqlRowType;
-    public BeamCalciteTable(BeamSqlRowType beamSqlRowType) {
-      this.beamSqlRowType = beamSqlRowType;
-    }
-    @Override
-    public RelDataType getRowType(RelDataTypeFactory typeFactory) {
-      return CalciteUtils.toCalciteRowType(this.beamSqlRowType)
-          .apply(BeamQueryPlanner.TYPE_FACTORY);
-    }
-
-    @Override
-    public Enumerable<Object[]> scan(DataContext root) {
-      // not used as Beam SQL uses its own execution engine
-      return null;
-    }
-
-    /**
-     * Not used {@link Statistic} to optimize the plan.
-     */
-    @Override
-    public Statistic getStatistic() {
-      return Statistics.UNKNOWN;
-    }
-
-    /**
-     * all sources are treated as TABLE in Beam SQL.
-     */
-    @Override
-    public Schema.TableType getJdbcTableType() {
-      return Schema.TableType.TABLE;
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/beam/blob/ba493f85/dsls/sql/src/main/java/org/apache/beam/dsls/sql/example/BeamSqlExample.java
----------------------------------------------------------------------
diff --git a/dsls/sql/src/main/java/org/apache/beam/dsls/sql/example/BeamSqlExample.java b/dsls/sql/src/main/java/org/apache/beam/dsls/sql/example/BeamSqlExample.java
deleted file mode 100644
index 4e364e1..0000000
--- a/dsls/sql/src/main/java/org/apache/beam/dsls/sql/example/BeamSqlExample.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.beam.dsls.sql.example;
-
-import java.sql.Types;
-import java.util.Arrays;
-import java.util.List;
-import org.apache.beam.dsls.sql.BeamSql;
-import org.apache.beam.dsls.sql.schema.BeamSqlRow;
-import org.apache.beam.dsls.sql.schema.BeamSqlRowCoder;
-import org.apache.beam.dsls.sql.schema.BeamSqlRowType;
-import org.apache.beam.sdk.Pipeline;
-import org.apache.beam.sdk.options.PipelineOptions;
-import org.apache.beam.sdk.options.PipelineOptionsFactory;
-import org.apache.beam.sdk.transforms.Create;
-import org.apache.beam.sdk.transforms.MapElements;
-import org.apache.beam.sdk.transforms.SimpleFunction;
-import org.apache.beam.sdk.values.PBegin;
-import org.apache.beam.sdk.values.PCollection;
-import org.apache.beam.sdk.values.PCollectionTuple;
-import org.apache.beam.sdk.values.TupleTag;
-
-/**
- * This is a quick example, which uses Beam SQL DSL to create a data pipeline.
- *
- * <p>Run the example with
- * <pre>
- * mvn -pl dsls/sql compile exec:java \
- *  -Dexec.mainClass=org.apache.beam.dsls.sql.example.BeamSqlExample \
- *   -Dexec.args="--runner=DirectRunner" -Pdirect-runner
- * </pre>
- *
- */
-class BeamSqlExample {
-  public static void main(String[] args) throws Exception {
-    PipelineOptions options = PipelineOptionsFactory.fromArgs(args).as(PipelineOptions.class);
-    Pipeline p = Pipeline.create(options);
-
-    //define the input row format
-    List<String> fieldNames = Arrays.asList("c1", "c2", "c3");
-    List<Integer> fieldTypes = Arrays.asList(Types.INTEGER, Types.VARCHAR, Types.DOUBLE);
-    BeamSqlRowType type = BeamSqlRowType.create(fieldNames, fieldTypes);
-    BeamSqlRow row = new BeamSqlRow(type);
-    row.addField(0, 1);
-    row.addField(1, "row");
-    row.addField(2, 1.0);
-
-    //create a source PCollection with Create.of();
-    PCollection<BeamSqlRow> inputTable = PBegin.in(p).apply(Create.of(row)
-        .withCoder(new BeamSqlRowCoder(type)));
-
-    //Case 1. run a simple SQL query over input PCollection with BeamSql.simpleQuery;
-    PCollection<BeamSqlRow> outputStream = inputTable.apply(
-        BeamSql.simpleQuery("select c1, c2, c3 from PCOLLECTION where c1=1"));
-
-    //print the output record of case 1;
-    outputStream.apply("log_result",
-        MapElements.<BeamSqlRow, Void>via(new SimpleFunction<BeamSqlRow, Void>() {
-      public Void apply(BeamSqlRow input) {
-        System.out.println("PCOLLECTION: " + input);
-        return null;
-      }
-    }));
-
-    //Case 2. run the query with BeamSql.query over result PCollection of case 1.
-    PCollection<BeamSqlRow> outputStream2 =
-        PCollectionTuple.of(new TupleTag<BeamSqlRow>("CASE1_RESULT"), outputStream)
-        .apply(BeamSql.query("select c2, c3 from CASE1_RESULT where c1=1"));
-
-    //print the output record of case 2;
-    outputStream2.apply("log_result",
-        MapElements.<BeamSqlRow, Void>via(new SimpleFunction<BeamSqlRow, Void>() {
-      @Override
-      public Void apply(BeamSqlRow input) {
-        System.out.println("TABLE_B: " + input);
-        return null;
-      }
-    }));
-
-    p.run().waitUntilFinish();
-  }
-}

http://git-wip-us.apache.org/repos/asf/beam/blob/ba493f85/dsls/sql/src/main/java/org/apache/beam/dsls/sql/example/package-info.java
----------------------------------------------------------------------
diff --git a/dsls/sql/src/main/java/org/apache/beam/dsls/sql/example/package-info.java b/dsls/sql/src/main/java/org/apache/beam/dsls/sql/example/package-info.java
deleted file mode 100644
index 52a9fce..0000000
--- a/dsls/sql/src/main/java/org/apache/beam/dsls/sql/example/package-info.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * examples on how to use BeamSQL.
- *
- */
-package org.apache.beam.dsls.sql.example;

http://git-wip-us.apache.org/repos/asf/beam/blob/ba493f85/dsls/sql/src/main/java/org/apache/beam/dsls/sql/interpreter/BeamSqlExpressionExecutor.java
----------------------------------------------------------------------
diff --git a/dsls/sql/src/main/java/org/apache/beam/dsls/sql/interpreter/BeamSqlExpressionExecutor.java b/dsls/sql/src/main/java/org/apache/beam/dsls/sql/interpreter/BeamSqlExpressionExecutor.java
deleted file mode 100644
index 3732933..0000000
--- a/dsls/sql/src/main/java/org/apache/beam/dsls/sql/interpreter/BeamSqlExpressionExecutor.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.beam.dsls.sql.interpreter;
-
-import java.io.Serializable;
-import java.util.List;
-import org.apache.beam.dsls.sql.schema.BeamSqlRow;
-
-/**
- * {@code BeamSqlExpressionExecutor} fills the gap between relational
- * expressions in Calcite SQL and executable code.
- *
- */
-public interface BeamSqlExpressionExecutor extends Serializable {
-
-  /**
-   * invoked before data processing.
-   */
-  void prepare();
-
-  /**
-   * apply transformation to input record {@link BeamSqlRow}.
-   *
-   */
-  List<Object> execute(BeamSqlRow inputRow);
-
-  void close();
-}

http://git-wip-us.apache.org/repos/asf/beam/blob/ba493f85/dsls/sql/src/main/java/org/apache/beam/dsls/sql/interpreter/BeamSqlFnExecutor.java
----------------------------------------------------------------------
diff --git a/dsls/sql/src/main/java/org/apache/beam/dsls/sql/interpreter/BeamSqlFnExecutor.java b/dsls/sql/src/main/java/org/apache/beam/dsls/sql/interpreter/BeamSqlFnExecutor.java
deleted file mode 100644
index aee0e4a..0000000
--- a/dsls/sql/src/main/java/org/apache/beam/dsls/sql/interpreter/BeamSqlFnExecutor.java
+++ /dev/null
@@ -1,442 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.beam.dsls.sql.interpreter;
-
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.List;
-import org.apache.beam.dsls.sql.interpreter.operator.BeamSqlCaseExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.BeamSqlCastExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.BeamSqlExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.BeamSqlInputRefExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.BeamSqlPrimitive;
-import org.apache.beam.dsls.sql.interpreter.operator.BeamSqlReinterpretExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.BeamSqlUdfExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.BeamSqlWindowEndExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.BeamSqlWindowExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.BeamSqlWindowStartExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.arithmetic.BeamSqlDivideExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.arithmetic.BeamSqlMinusExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.arithmetic.BeamSqlModExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.arithmetic.BeamSqlMultiplyExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.arithmetic.BeamSqlPlusExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.comparison.BeamSqlEqualsExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.comparison.BeamSqlGreaterThanExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.comparison.BeamSqlGreaterThanOrEqualsExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.comparison.BeamSqlIsNotNullExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.comparison.BeamSqlIsNullExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.comparison.BeamSqlLessThanExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.comparison.BeamSqlLessThanOrEqualsExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.comparison.BeamSqlNotEqualsExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.date.BeamSqlCurrentDateExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.date.BeamSqlCurrentTimeExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.date.BeamSqlCurrentTimestampExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.date.BeamSqlDateCeilExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.date.BeamSqlDateFloorExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.date.BeamSqlExtractExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.logical.BeamSqlAndExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.logical.BeamSqlNotExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.logical.BeamSqlOrExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.math.BeamSqlAbsExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.math.BeamSqlAcosExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.math.BeamSqlAsinExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.math.BeamSqlAtan2Expression;
-import org.apache.beam.dsls.sql.interpreter.operator.math.BeamSqlAtanExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.math.BeamSqlCeilExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.math.BeamSqlCosExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.math.BeamSqlCotExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.math.BeamSqlDegreesExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.math.BeamSqlExpExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.math.BeamSqlFloorExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.math.BeamSqlLnExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.math.BeamSqlLogExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.math.BeamSqlPiExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.math.BeamSqlPowerExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.math.BeamSqlRadiansExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.math.BeamSqlRandExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.math.BeamSqlRandIntegerExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.math.BeamSqlRoundExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.math.BeamSqlSignExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.math.BeamSqlSinExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.math.BeamSqlTanExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.math.BeamSqlTruncateExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.string.BeamSqlCharLengthExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.string.BeamSqlConcatExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.string.BeamSqlInitCapExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.string.BeamSqlLowerExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.string.BeamSqlOverlayExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.string.BeamSqlPositionExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.string.BeamSqlSubstringExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.string.BeamSqlTrimExpression;
-import org.apache.beam.dsls.sql.interpreter.operator.string.BeamSqlUpperExpression;
-import org.apache.beam.dsls.sql.rel.BeamFilterRel;
-import org.apache.beam.dsls.sql.rel.BeamProjectRel;
-import org.apache.beam.dsls.sql.rel.BeamRelNode;
-import org.apache.beam.dsls.sql.schema.BeamSqlRow;
-import org.apache.calcite.rex.RexCall;
-import org.apache.calcite.rex.RexInputRef;
-import org.apache.calcite.rex.RexLiteral;
-import org.apache.calcite.rex.RexNode;
-import org.apache.calcite.schema.impl.ScalarFunctionImpl;
-import org.apache.calcite.sql.SqlOperator;
-import org.apache.calcite.sql.type.SqlTypeName;
-import org.apache.calcite.sql.validate.SqlUserDefinedFunction;
-import org.apache.calcite.util.NlsString;
-
-/**
- * Executor based on {@link BeamSqlExpression} and {@link BeamSqlPrimitive}.
- * {@code BeamSqlFnExecutor} converts a {@link BeamRelNode} to a {@link BeamSqlExpression},
- * which can be evaluated against the {@link BeamSqlRow}.
- *
- */
-public class BeamSqlFnExecutor implements BeamSqlExpressionExecutor {
-  protected List<BeamSqlExpression> exps;
-
-  public BeamSqlFnExecutor(BeamRelNode relNode) {
-    this.exps = new ArrayList<>();
-    if (relNode instanceof BeamFilterRel) {
-      BeamFilterRel filterNode = (BeamFilterRel) relNode;
-      RexNode condition = filterNode.getCondition();
-      exps.add(buildExpression(condition));
-    } else if (relNode instanceof BeamProjectRel) {
-      BeamProjectRel projectNode = (BeamProjectRel) relNode;
-      List<RexNode> projects = projectNode.getProjects();
-      for (RexNode rexNode : projects) {
-        exps.add(buildExpression(rexNode));
-      }
-    } else {
-      throw new UnsupportedOperationException(
-          String.format("%s is not supported yet!", relNode.getClass().toString()));
-    }
-  }
-
-  /**
-   * {@link #buildExpression(RexNode)} visits the operands of {@link RexNode} recursively,
-   * and represent each {@link SqlOperator} with a corresponding {@link BeamSqlExpression}.
-   */
-  static BeamSqlExpression buildExpression(RexNode rexNode) {
-    BeamSqlExpression ret = null;
-    if (rexNode instanceof RexLiteral) {
-      RexLiteral node = (RexLiteral) rexNode;
-      SqlTypeName type = node.getTypeName();
-      Object value = node.getValue();
-
-      if (SqlTypeName.CHAR_TYPES.contains(type)
-          && node.getValue() instanceof NlsString) {
-        // NlsString is not serializable, we need to convert
-        // it to string explicitly.
-        return BeamSqlPrimitive.of(type, ((NlsString) value).getValue());
-      } else if (type == SqlTypeName.DATE && value instanceof Calendar) {
-        // does this actually make sense?
-        // Calcite actually treat Calendar as the java type of Date Literal
-        return BeamSqlPrimitive.of(type, ((Calendar) value).getTime());
-      } else {
-        // node.getType().getSqlTypeName() and node.getSqlTypeName() can be different
-        // e.g. sql: "select 1"
-        // here the literal 1 will be parsed as a RexLiteral where:
-        //     node.getType().getSqlTypeName() = INTEGER (the display type)
-        //     node.getSqlTypeName() = DECIMAL (the actual internal storage format)
-        // So we need to do a convert here.
-        // check RexBuilder#makeLiteral for more information.
-        SqlTypeName realType = node.getType().getSqlTypeName();
-        Object realValue = value;
-        if (type == SqlTypeName.DECIMAL) {
-          BigDecimal rawValue = (BigDecimal) value;
-          switch (realType) {
-            case TINYINT:
-              realValue = (byte) rawValue.intValue();
-              break;
-            case SMALLINT:
-              realValue = (short) rawValue.intValue();
-              break;
-            case INTEGER:
-              realValue = rawValue.intValue();
-              break;
-            case BIGINT:
-              realValue = rawValue.longValue();
-              break;
-            case DECIMAL:
-              realValue = rawValue;
-              break;
-            default:
-              throw new IllegalStateException("type/realType mismatch: "
-                  + type + " VS " + realType);
-          }
-        } else if (type == SqlTypeName.DOUBLE) {
-          Double rawValue = (Double) value;
-          if (realType == SqlTypeName.FLOAT) {
-            realValue = rawValue.floatValue();
-          }
-        }
-        return BeamSqlPrimitive.of(realType, realValue);
-      }
-    } else if (rexNode instanceof RexInputRef) {
-      RexInputRef node = (RexInputRef) rexNode;
-      ret = new BeamSqlInputRefExpression(node.getType().getSqlTypeName(), node.getIndex());
-    } else if (rexNode instanceof RexCall) {
-      RexCall node = (RexCall) rexNode;
-      String opName = node.op.getName();
-      List<BeamSqlExpression> subExps = new ArrayList<>();
-      for (RexNode subNode : node.getOperands()) {
-        subExps.add(buildExpression(subNode));
-      }
-      switch (opName) {
-        // logical operators
-        case "AND":
-          ret = new BeamSqlAndExpression(subExps);
-          break;
-        case "OR":
-          ret = new BeamSqlOrExpression(subExps);
-          break;
-        case "NOT":
-          ret = new BeamSqlNotExpression(subExps);
-          break;
-        case "=":
-          ret = new BeamSqlEqualsExpression(subExps);
-          break;
-        case "<>":
-          ret = new BeamSqlNotEqualsExpression(subExps);
-          break;
-        case ">":
-          ret = new BeamSqlGreaterThanExpression(subExps);
-          break;
-        case ">=":
-          ret = new BeamSqlGreaterThanOrEqualsExpression(subExps);
-          break;
-        case "<":
-          ret = new BeamSqlLessThanExpression(subExps);
-          break;
-        case "<=":
-          ret = new BeamSqlLessThanOrEqualsExpression(subExps);
-          break;
-
-        // arithmetic operators
-        case "+":
-          ret = new BeamSqlPlusExpression(subExps);
-          break;
-        case "-":
-          ret = new BeamSqlMinusExpression(subExps);
-          break;
-        case "*":
-          ret = new BeamSqlMultiplyExpression(subExps);
-          break;
-        case "/":
-        case "/INT":
-          ret = new BeamSqlDivideExpression(subExps);
-          break;
-        case "MOD":
-          ret = new BeamSqlModExpression(subExps);
-          break;
-
-        case "ABS":
-          ret = new BeamSqlAbsExpression(subExps);
-          break;
-        case "ROUND":
-          ret = new BeamSqlRoundExpression(subExps);
-          break;
-        case "LN":
-          ret = new BeamSqlLnExpression(subExps);
-          break;
-        case "LOG10":
-          ret = new BeamSqlLogExpression(subExps);
-          break;
-        case "EXP":
-          ret = new BeamSqlExpExpression(subExps);
-          break;
-        case "ACOS":
-          ret = new BeamSqlAcosExpression(subExps);
-          break;
-        case "ASIN":
-          ret = new BeamSqlAsinExpression(subExps);
-          break;
-        case "ATAN":
-          ret = new BeamSqlAtanExpression(subExps);
-          break;
-        case "COT":
-          ret = new BeamSqlCotExpression(subExps);
-          break;
-        case "DEGREES":
-          ret = new BeamSqlDegreesExpression(subExps);
-          break;
-        case "RADIANS":
-          ret = new BeamSqlRadiansExpression(subExps);
-          break;
-        case "COS":
-          ret = new BeamSqlCosExpression(subExps);
-          break;
-        case "SIN":
-          ret = new BeamSqlSinExpression(subExps);
-          break;
-        case "TAN":
-          ret = new BeamSqlTanExpression(subExps);
-          break;
-        case "SIGN":
-          ret = new BeamSqlSignExpression(subExps);
-          break;
-        case "POWER":
-          ret = new BeamSqlPowerExpression(subExps);
-          break;
-        case "PI":
-          ret = new BeamSqlPiExpression();
-          break;
-        case "ATAN2":
-          ret = new BeamSqlAtan2Expression(subExps);
-          break;
-        case "TRUNCATE":
-          ret = new BeamSqlTruncateExpression(subExps);
-          break;
-        case "RAND":
-          ret = new BeamSqlRandExpression(subExps);
-          break;
-        case "RAND_INTEGER":
-          ret = new BeamSqlRandIntegerExpression(subExps);
-          break;
-
-        // string operators
-        case "||":
-          ret = new BeamSqlConcatExpression(subExps);
-          break;
-        case "POSITION":
-          ret = new BeamSqlPositionExpression(subExps);
-          break;
-        case "CHAR_LENGTH":
-        case "CHARACTER_LENGTH":
-          ret = new BeamSqlCharLengthExpression(subExps);
-          break;
-        case "UPPER":
-          ret = new BeamSqlUpperExpression(subExps);
-          break;
-        case "LOWER":
-          ret = new BeamSqlLowerExpression(subExps);
-          break;
-        case "TRIM":
-          ret = new BeamSqlTrimExpression(subExps);
-          break;
-        case "SUBSTRING":
-          ret = new BeamSqlSubstringExpression(subExps);
-          break;
-        case "OVERLAY":
-          ret = new BeamSqlOverlayExpression(subExps);
-          break;
-        case "INITCAP":
-          ret = new BeamSqlInitCapExpression(subExps);
-          break;
-
-        // date functions
-        case "Reinterpret":
-          return new BeamSqlReinterpretExpression(subExps, node.type.getSqlTypeName());
-        case "CEIL":
-          if (SqlTypeName.NUMERIC_TYPES.contains(node.type.getSqlTypeName())) {
-            return new BeamSqlCeilExpression(subExps);
-          } else {
-            return new BeamSqlDateCeilExpression(subExps);
-          }
-        case "FLOOR":
-          if (SqlTypeName.NUMERIC_TYPES.contains(node.type.getSqlTypeName())) {
-            return new BeamSqlFloorExpression(subExps);
-          } else {
-            return new BeamSqlDateFloorExpression(subExps);
-          }
-        case "EXTRACT_DATE":
-        case "EXTRACT":
-          return new BeamSqlExtractExpression(subExps);
-
-        case "LOCALTIME":
-        case "CURRENT_TIME":
-          return new BeamSqlCurrentTimeExpression(subExps);
-
-        case "CURRENT_TIMESTAMP":
-        case "LOCALTIMESTAMP":
-          return new BeamSqlCurrentTimestampExpression(subExps);
-
-        case "CURRENT_DATE":
-          return new BeamSqlCurrentDateExpression();
-
-
-        case "CASE":
-          ret = new BeamSqlCaseExpression(subExps);
-          break;
-        case "CAST":
-          ret = new BeamSqlCastExpression(subExps, node.type.getSqlTypeName());
-          break;
-
-        case "IS NULL":
-          ret = new BeamSqlIsNullExpression(subExps.get(0));
-          break;
-        case "IS NOT NULL":
-          ret = new BeamSqlIsNotNullExpression(subExps.get(0));
-          break;
-
-        case "HOP":
-        case "TUMBLE":
-        case "SESSION":
-          ret = new BeamSqlWindowExpression(subExps, node.type.getSqlTypeName());
-          break;
-        case "HOP_START":
-        case "TUMBLE_START":
-        case "SESSION_START":
-          ret = new BeamSqlWindowStartExpression();
-          break;
-        case "HOP_END":
-        case "TUMBLE_END":
-        case "SESSION_END":
-          ret = new BeamSqlWindowEndExpression();
-          break;
-        default:
-          //handle UDF
-          if (((RexCall) rexNode).getOperator() instanceof SqlUserDefinedFunction) {
-            SqlUserDefinedFunction udf = (SqlUserDefinedFunction) ((RexCall) rexNode).getOperator();
-            ScalarFunctionImpl fn = (ScalarFunctionImpl) udf.getFunction();
-            ret = new BeamSqlUdfExpression(fn.method, subExps,
-              ((RexCall) rexNode).type.getSqlTypeName());
-        } else {
-          throw new UnsupportedOperationException("Operator: " + opName + " is not supported yet!");
-        }
-      }
-    } else {
-      throw new UnsupportedOperationException(
-          String.format("%s is not supported yet!", rexNode.getClass().toString()));
-    }
-
-    if (ret != null && !ret.accept()) {
-      throw new IllegalStateException(ret.getClass().getSimpleName()
-          + " does not accept the operands.(" + rexNode + ")");
-    }
-
-    return ret;
-  }
-
-  @Override
-  public void prepare() {
-  }
-
-  @Override
-  public List<Object> execute(BeamSqlRow inputRow) {
-    List<Object> results = new ArrayList<>();
-    for (BeamSqlExpression exp : exps) {
-      results.add(exp.evaluate(inputRow).getValue());
-    }
-    return results;
-  }
-
-  @Override
-  public void close() {
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/beam/blob/ba493f85/dsls/sql/src/main/java/org/apache/beam/dsls/sql/interpreter/operator/BeamSqlCaseExpression.java
----------------------------------------------------------------------
diff --git a/dsls/sql/src/main/java/org/apache/beam/dsls/sql/interpreter/operator/BeamSqlCaseExpression.java b/dsls/sql/src/main/java/org/apache/beam/dsls/sql/interpreter/operator/BeamSqlCaseExpression.java
deleted file mode 100644
index a30916b..0000000
--- a/dsls/sql/src/main/java/org/apache/beam/dsls/sql/interpreter/operator/BeamSqlCaseExpression.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.beam.dsls.sql.interpreter.operator;
-
-import java.util.List;
-
-import org.apache.beam.dsls.sql.schema.BeamSqlRow;
-import org.apache.calcite.sql.type.SqlTypeName;
-
-/**
- *  {@code BeamSqlCaseExpression} represents CASE, NULLIF, COALESCE in SQL.
- */
-public class BeamSqlCaseExpression extends BeamSqlExpression {
-  public BeamSqlCaseExpression(List<BeamSqlExpression> operands) {
-    // the return type of CASE is the type of the `else` condition
-    super(operands, operands.get(operands.size() - 1).getOutputType());
-  }
-
-  @Override public boolean accept() {
-    // `when`-`then` pair + `else`
-    if (operands.size() % 2 != 1) {
-      return false;
-    }
-
-    for (int i = 0; i < operands.size() - 1; i += 2) {
-      if (opType(i) != SqlTypeName.BOOLEAN) {
-        return false;
-      } else if (opType(i + 1) != outputType) {
-        return false;
-      }
-    }
-
-    return true;
-  }
-
-  @Override public BeamSqlPrimitive evaluate(BeamSqlRow inputRow) {
-    for (int i = 0; i < operands.size() - 1; i += 2) {
-      if (opValueEvaluated(i, inputRow)) {
-        return BeamSqlPrimitive.of(
-            outputType,
-            opValueEvaluated(i + 1, inputRow)
-        );
-      }
-    }
-    return BeamSqlPrimitive.of(outputType,
-        opValueEvaluated(operands.size() - 1, inputRow));
-  }
-}