You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by tw...@apache.org on 2016/07/04 15:02:03 UTC

flink git commit: [FLINK-4109] [tableAPI] Change the name of ternary condition operator 'eval' to '?'

Repository: flink
Updated Branches:
  refs/heads/master b40cba609 -> bf6df12d8


[FLINK-4109] [tableAPI] Change the name of ternary condition operator 'eval' to '?'

This closes #2173.


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

Branch: refs/heads/master
Commit: bf6df12d81e721d6a42caf5d9682baf230bbabfb
Parents: b40cba6
Author: Jark Wu <wu...@alibaba-inc.com>
Authored: Tue Jun 28 12:37:12 2016 +0800
Committer: twalthr <tw...@apache.org>
Committed: Mon Jul 4 17:01:30 2016 +0200

----------------------------------------------------------------------
 docs/apis/table.md                              |  4 ++--
 .../flink/api/scala/table/expressionDsl.scala   |  8 ++++----
 .../table/expressions/ExpressionParser.scala    | 20 ++++++++++----------
 .../flink/api/table/expressions/logic.scala     |  4 ++--
 .../api/java/batch/table/ExpressionsITCase.java | 12 ++++++------
 .../scala/batch/table/ExpressionsITCase.scala   | 12 ++++++------
 6 files changed, 30 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flink/blob/bf6df12d/docs/apis/table.md
----------------------------------------------------------------------
diff --git a/docs/apis/table.md b/docs/apis/table.md
index 3f31bb5..4a42633 100644
--- a/docs/apis/table.md
+++ b/docs/apis/table.md
@@ -748,7 +748,7 @@ unary = [ "!" | "-" ] , composite ;
 
 composite = suffixed | atom ;
 
-suffixed = cast | as | aggregation | nullCheck | evaluate | functionCall ;
+suffixed = cast | as | aggregation | nullCheck | if | functionCall ;
 
 cast = composite , ".cast(" , dataType , ")" ;
 
@@ -760,7 +760,7 @@ aggregation = composite , ( ".sum" | ".min" | ".max" | ".count" | ".avg" ) , [ "
 
 nullCheck = composite , ( ".isNull" | ".isNotNull" ) , [ "()" ] ;
 
-evaluate = composite , ".eval(" , expression , "," , expression , ")" ;
+if = composite , ".?(" , expression , "," , expression , ")" ;
 
 functionCall = composite , "." , functionIdentifier , "(" , [ expression , { "," , expression } ] , ")"
 

http://git-wip-us.apache.org/repos/asf/flink/blob/bf6df12d/flink-libraries/flink-table/src/main/scala/org/apache/flink/api/scala/table/expressionDsl.scala
----------------------------------------------------------------------
diff --git a/flink-libraries/flink-table/src/main/scala/org/apache/flink/api/scala/table/expressionDsl.scala b/flink-libraries/flink-table/src/main/scala/org/apache/flink/api/scala/table/expressionDsl.scala
index 1adf2ed..c4287b6 100644
--- a/flink-libraries/flink-table/src/main/scala/org/apache/flink/api/scala/table/expressionDsl.scala
+++ b/flink-libraries/flink-table/src/main/scala/org/apache/flink/api/scala/table/expressionDsl.scala
@@ -71,16 +71,16 @@ trait ImplicitExpressionOperations {
   def desc = Desc(expr)
 
   /**
-    * Conditional operator that decides which of two other expressions should be evaluated
+    * Ternary conditional operator that decides which of two other expressions should be evaluated
     * based on a evaluated boolean condition.
     *
-    * e.g. (42 > 5).eval("A", "B") leads to "A"
+    * e.g. (42 > 5).?("A", "B") leads to "A"
     *
     * @param ifTrue expression to be evaluated if condition holds
     * @param ifFalse expression to be evaluated if condition does not hold
     */
-  def eval(ifTrue: Expression, ifFalse: Expression) = {
-    Eval(expr, ifTrue, ifFalse)
+  def ?(ifTrue: Expression, ifFalse: Expression) = {
+    If(expr, ifTrue, ifFalse)
   }
 
   // scalar functions

http://git-wip-us.apache.org/repos/asf/flink/blob/bf6df12d/flink-libraries/flink-table/src/main/scala/org/apache/flink/api/table/expressions/ExpressionParser.scala
----------------------------------------------------------------------
diff --git a/flink-libraries/flink-table/src/main/scala/org/apache/flink/api/table/expressions/ExpressionParser.scala b/flink-libraries/flink-table/src/main/scala/org/apache/flink/api/table/expressions/ExpressionParser.scala
index 92b95ed..6aa4f89 100644
--- a/flink-libraries/flink-table/src/main/scala/org/apache/flink/api/table/expressions/ExpressionParser.scala
+++ b/flink-libraries/flink-table/src/main/scala/org/apache/flink/api/table/expressions/ExpressionParser.scala
@@ -51,7 +51,7 @@ object ExpressionParser extends JavaTokenParsers with PackratParsers {
   lazy val IS_NOT_NULL: Keyword = Keyword("isNotNull")
   lazy val CAST: Keyword = Keyword("cast")
   lazy val NULL: Keyword = Keyword("Null")
-  lazy val EVAL: Keyword = Keyword("eval")
+  lazy val IF: Keyword = Keyword("?")
   lazy val ASC: Keyword = Keyword("asc")
   lazy val DESC: Keyword = Keyword("desc")
   lazy val TO_DATE: Keyword = Keyword("toDate")
@@ -61,7 +61,7 @@ object ExpressionParser extends JavaTokenParsers with PackratParsers {
   def functionIdent: ExpressionParser.Parser[String] =
     not(AS) ~ not(COUNT) ~ not(AVG) ~ not(MIN) ~ not(MAX) ~
       not(SUM) ~ not(IS_NULL) ~ not(IS_NOT_NULL) ~ not(CAST) ~ not(NULL) ~
-      not(EVAL) ~> super.ident
+      not(IF) ~> super.ident
 
   // data types
 
@@ -173,9 +173,9 @@ object ExpressionParser extends JavaTokenParsers with PackratParsers {
       Trim(TrimConstants.TRIM_BOTH, TrimConstants.TRIM_DEFAULT_CHAR, e)
   }
 
-  lazy val suffixEval: PackratParser[Expression] =
-    composite ~ "." ~ EVAL ~ "(" ~ expression ~ "," ~ expression ~ ")" ^^ {
-    case condition ~ _ ~ _ ~ _ ~ ifTrue ~ _ ~ ifFalse ~ _ => Eval(condition, ifTrue, ifFalse)
+  lazy val suffixIf: PackratParser[Expression] =
+    composite ~ "." ~ IF ~ "(" ~ expression ~ "," ~ expression ~ ")" ^^ {
+    case condition ~ _ ~ _ ~ _ ~ ifTrue ~ _ ~ ifFalse ~ _ => If(condition, ifTrue, ifFalse)
   }
 
   lazy val suffixFunctionCall =
@@ -200,7 +200,7 @@ object ExpressionParser extends JavaTokenParsers with PackratParsers {
 
   lazy val suffixed: PackratParser[Expression] =
     suffixIsNull | suffixIsNotNull | suffixSum | suffixMin | suffixMax | suffixCount | suffixAvg |
-      suffixCast | suffixAs | suffixTrim | suffixTrimWithoutArgs | suffixEval | suffixFunctionCall |
+      suffixCast | suffixAs | suffixTrim | suffixTrimWithoutArgs | suffixIf | suffixFunctionCall |
         suffixAsc | suffixDesc | suffixToDate | suffixToTimestamp | suffixToTime
 
   // prefix operators
@@ -236,9 +236,9 @@ object ExpressionParser extends JavaTokenParsers with PackratParsers {
     case _ ~ _ ~ e ~ _ ~ target ~ _ => Alias(e, target.name)
   }
 
-  lazy val prefixEval: PackratParser[Expression] = composite ~
-      EVAL ~ "(" ~ expression ~ "," ~ expression ~ "," ~ expression ~ ")" ^^ {
-    case _ ~ _ ~ condition ~ _ ~ ifTrue ~ _ ~ ifFalse ~ _ => Eval(condition, ifTrue, ifFalse)
+  lazy val prefixIf: PackratParser[Expression] = composite ~
+      IF ~ "(" ~ expression ~ "," ~ expression ~ "," ~ expression ~ ")" ^^ {
+    case _ ~ _ ~ condition ~ _ ~ ifTrue ~ _ ~ ifFalse ~ _ => If(condition, ifTrue, ifFalse)
   }
 
   lazy val prefixFunctionCall = functionIdent ~ "(" ~ repsep(expression, ",") ~ ")" ^^ {
@@ -263,7 +263,7 @@ object ExpressionParser extends JavaTokenParsers with PackratParsers {
 
   lazy val prefixed: PackratParser[Expression] =
     prefixIsNull | prefixIsNotNull | prefixSum | prefixMin | prefixMax | prefixCount | prefixAvg |
-      prefixCast | prefixAs | prefixTrim | prefixTrimWithoutArgs | prefixEval | prefixFunctionCall
+      prefixCast | prefixAs | prefixTrim | prefixTrimWithoutArgs | prefixIf | prefixFunctionCall
 
   // suffix/prefix composite
 

http://git-wip-us.apache.org/repos/asf/flink/blob/bf6df12d/flink-libraries/flink-table/src/main/scala/org/apache/flink/api/table/expressions/logic.scala
----------------------------------------------------------------------
diff --git a/flink-libraries/flink-table/src/main/scala/org/apache/flink/api/table/expressions/logic.scala b/flink-libraries/flink-table/src/main/scala/org/apache/flink/api/table/expressions/logic.scala
index 90d3dbc..332a8c5 100644
--- a/flink-libraries/flink-table/src/main/scala/org/apache/flink/api/table/expressions/logic.scala
+++ b/flink-libraries/flink-table/src/main/scala/org/apache/flink/api/table/expressions/logic.scala
@@ -76,7 +76,7 @@ case class Or(left: Expression, right: Expression) extends BinaryPredicate {
   }
 }
 
-case class Eval(
+case class If(
     condition: Expression,
     ifTrue: Expression,
     ifFalse: Expression)
@@ -100,7 +100,7 @@ case class Eval(
       ValidationSuccess
     } else {
       ValidationFailure(
-        s"Eval should have boolean condition and same type of ifTrue and ifFalse, get " +
+        s"If should have boolean condition and same type of ifTrue and ifFalse, get " +
           s"(${condition.resultType}, ${ifTrue.resultType}, ${ifFalse.resultType})")
     }
   }

http://git-wip-us.apache.org/repos/asf/flink/blob/bf6df12d/flink-libraries/flink-table/src/test/java/org/apache/flink/api/java/batch/table/ExpressionsITCase.java
----------------------------------------------------------------------
diff --git a/flink-libraries/flink-table/src/test/java/org/apache/flink/api/java/batch/table/ExpressionsITCase.java b/flink-libraries/flink-table/src/test/java/org/apache/flink/api/java/batch/table/ExpressionsITCase.java
index 83c7cfd..7d225f3 100644
--- a/flink-libraries/flink-table/src/test/java/org/apache/flink/api/java/batch/table/ExpressionsITCase.java
+++ b/flink-libraries/flink-table/src/test/java/org/apache/flink/api/java/batch/table/ExpressionsITCase.java
@@ -135,7 +135,7 @@ public class ExpressionsITCase extends TableProgramsTestBase {
 	}
 
 	@Test
-	public void testEval() throws Exception {
+	public void testIf() throws Exception {
 		ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
 		BatchTableEnvironment tableEnv = TableEnvironment.getTableEnvironment(env, config());
 
@@ -146,9 +146,9 @@ public class ExpressionsITCase extends TableProgramsTestBase {
 				tableEnv.fromDataSet(input, "a, b");
 
 		Table result = table.select(
-				"(b && true).eval('true', 'false')," +
-					"false.eval('true', 'false')," +
-					"true.eval(true.eval(true.eval(10, 4), 4), 4)");
+				"(b && true).?('true', 'false')," +
+					"false.?('true', 'false')," +
+					"true.?(true.?(true.?(10, 4), 4), 4)");
 
 		DataSet<Row> ds = tableEnv.toDataSet(result, Row.class);
 		List<Row> results = ds.collect();
@@ -157,7 +157,7 @@ public class ExpressionsITCase extends TableProgramsTestBase {
 	}
 
 	@Test(expected = ValidationException.class)
-	public void testEvalInvalidTypes() throws Exception {
+	public void testIfInvalidTypes() throws Exception {
 		ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
 		BatchTableEnvironment tableEnv = TableEnvironment.getTableEnvironment(env, config());
 
@@ -167,7 +167,7 @@ public class ExpressionsITCase extends TableProgramsTestBase {
 		Table table =
 				tableEnv.fromDataSet(input, "a, b");
 
-		Table result = table.select("(b && true).eval(5, 'false')");
+		Table result = table.select("(b && true).?(5, 'false')");
 
 		DataSet<Row> ds = tableEnv.toDataSet(result, Row.class);
 		List<Row> results = ds.collect();

http://git-wip-us.apache.org/repos/asf/flink/blob/bf6df12d/flink-libraries/flink-table/src/test/scala/org/apache/flink/api/scala/batch/table/ExpressionsITCase.scala
----------------------------------------------------------------------
diff --git a/flink-libraries/flink-table/src/test/scala/org/apache/flink/api/scala/batch/table/ExpressionsITCase.scala b/flink-libraries/flink-table/src/test/scala/org/apache/flink/api/scala/batch/table/ExpressionsITCase.scala
index 3cf3b26..3c3719a 100644
--- a/flink-libraries/flink-table/src/test/scala/org/apache/flink/api/scala/batch/table/ExpressionsITCase.scala
+++ b/flink-libraries/flink-table/src/test/scala/org/apache/flink/api/scala/batch/table/ExpressionsITCase.scala
@@ -129,15 +129,15 @@ class ExpressionsITCase(
   }
 
   @Test
-  def testEval(): Unit = {
+  def testIf(): Unit = {
     val env = ExecutionEnvironment.getExecutionEnvironment
     val tEnv = TableEnvironment.getTableEnvironment(env, config)
 
     val t = env.fromElements((5, true)).toTable(tEnv, 'a, 'b)
       .select(
-        ('b && true).eval("true", "false"),
-        false.eval("true", "false"),
-        true.eval(true.eval(true.eval(10, 4), 4), 4))
+        ('b && true).?("true", "false"),
+        false.?("true", "false"),
+        true.?(true.?(true.?(10, 4), 4), 4))
 
     val expected = "true,false,10"
     val results = t.toDataSet[Row].collect()
@@ -145,12 +145,12 @@ class ExpressionsITCase(
   }
 
   @Test(expected = classOf[ValidationException])
-  def testEvalInvalidTypes(): Unit = {
+  def testIfInvalidTypes(): Unit = {
     val env = ExecutionEnvironment.getExecutionEnvironment
     val tEnv = TableEnvironment.getTableEnvironment(env, config)
 
     val t = env.fromElements((5, true)).toTable(tEnv, 'a, 'b)
-      .select(('b && true).eval(5, "false"))
+      .select(('b && true).?(5, "false"))
 
     val expected = "true,false,3,10"
     val results = t.toDataSet[Row].collect()