Repository: asterixdb
Updated Branches:
  refs/heads/master d89934cc1 -> 3de700a92


[NO ISSUE][SQL] SQLPP UDF test cases revisit

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
1. Revisited all SQLPP UDF test cases. Fixed several testcases that were
disabled due to different issues that were no longer exist.
2. Minor fix to SQLPP so we don't need to nest function body into
subquery.

Change-Id: I844883b99dd9ff729ac518c60f6c47941017f24e
Reviewed-on: https://asterix-gerrit.ics.uci.edu/2493
Sonar-Qube: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Contrib: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Reviewed-by: Dmitry Lychagin <dmitry.lycha...@couchbase.com>


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

Branch: refs/heads/master
Commit: 3de700a924dbf41d039388f36aa459149d525218
Parents: d89934c
Author: Xikui Wang <xkk...@gmail.com>
Authored: Thu Mar 15 16:32:55 2018 -0700
Committer: Xikui Wang <xkk...@gmail.com>
Committed: Fri Mar 16 10:28:49 2018 -0700

----------------------------------------------------------------------
 .../udf03/udf03.1.ddl.sqlpp                     |  4 --
 .../udf03/udf03.2.update.sqlpp                  |  1 -
 .../udf03/udf03.3.query.sqlpp                   |  2 -
 .../udf15/udf15.1.ddl.sqlpp                     |  1 -
 .../udf15/udf15.2.update.sqlpp                  |  1 -
 .../udf15/udf15.3.query.sqlpp                   |  3 +-
 .../udf24/udf24.1.ddl.sqlpp                     |  1 -
 .../udf24/udf24.2.update.sqlpp                  |  1 -
 .../udf24/udf24.3.query.sqlpp                   |  3 +-
 .../udf25/udf25.1.ddl.sqlpp                     | 15 ++----
 .../udf25/udf25.2.update.sqlpp                  |  6 ---
 .../udf25/udf25.3.query.sqlpp                   |  8 +--
 .../udf31/udf31.1.ddl.sqlpp                     | 14 ++----
 .../udf31/udf31.3.query.sqlpp                   |  3 +-
 .../user-defined-functions/udf03/udf03.1.adm    |  4 +-
 .../user-defined-functions/udf15/udf15.1.adm    |  1 +
 .../user-defined-functions/udf24/udf24.1.adm    | 10 ++++
 .../user-defined-functions/udf25/udf25.1.adm    |  2 +
 .../resources/runtimets/testsuite_sqlpp.xml     | 53 +++++++++-----------
 .../asterix-lang-sqlpp/src/main/javacc/SQLPP.jj | 38 +++++++-------
 20 files changed, 76 insertions(+), 95 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3de700a9/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf03/udf03.1.ddl.sqlpp
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf03/udf03.1.ddl.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf03/udf03.1.ddl.sqlpp
index ed94ce8..dc11ca5 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf03/udf03.1.ddl.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf03/udf03.1.ddl.sqlpp
@@ -20,12 +20,8 @@
  * Description  : Pass an ordered list as input to UDF and return the zeroth 
element of that list.
  * Expected Res : Success
  * Date         : 4th September 2012
- * Ignored      : Not part of test build due to Issue 200
  */
 
-
-// This test is returning NPE... Issue 200
-
 drop dataverse test if exists;
 create dataverse test;
 

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3de700a9/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf03/udf03.2.update.sqlpp
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf03/udf03.2.update.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf03/udf03.2.update.sqlpp
index d5fe961..4019738 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf03/udf03.2.update.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf03/udf03.2.update.sqlpp
@@ -20,6 +20,5 @@
  * Description  : Pass an ordered list as input to UDF and return the zeroth 
element of that list.
  * Expected Res : Success
  * Date         : 4th September 2012
- * Ignored      : Not part of test build due to Issue 200
  */
 

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3de700a9/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf03/udf03.3.query.sqlpp
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf03/udf03.3.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf03/udf03.3.query.sqlpp
index b0a7ec4..13195a7 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf03/udf03.3.query.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf03/udf03.3.query.sqlpp
@@ -20,12 +20,10 @@
  * Description  : Pass an ordered list as input to UDF and return the zeroth 
element of that list.
  * Expected Res : Success
  * Date         : 4th September 2012
- * Ignored      : Not part of test build due to Issue 200
  */
 
 use test;
 
-
 select element test.echo(a)
 from  [[1,2],['A','B'],['UCLA','UCSD','UCR','UCI']] as a
 ;

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3de700a9/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf15/udf15.1.ddl.sqlpp
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf15/udf15.1.ddl.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf15/udf15.1.ddl.sqlpp
index b76cb4f..f3c2b74 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf15/udf15.1.ddl.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf15/udf15.1.ddl.sqlpp
@@ -21,7 +21,6 @@
  *              : invoke the UDF in the FOR expression of FLWOR
  * Expected Res : Success
  * Date         : Sep 5th 2012
- * Ignored      : Not part of current tests because of Issue 200
  */
 
 // this test resturns NPE:Issue 166

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3de700a9/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf15/udf15.2.update.sqlpp
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf15/udf15.2.update.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf15/udf15.2.update.sqlpp
index 83ecf21..bd34b57 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf15/udf15.2.update.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf15/udf15.2.update.sqlpp
@@ -21,6 +21,5 @@
  *              : invoke the UDF in the FOR expression of FLWOR
  * Expected Res : Success
  * Date         : Sep 5th 2012
- * Ignored      : Not part of current tests because of Issue 200
  */
 

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3de700a9/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf15/udf15.3.query.sqlpp
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf15/udf15.3.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf15/udf15.3.query.sqlpp
index 27d98c9..005a483 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf15/udf15.3.query.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf15/udf15.3.query.sqlpp
@@ -21,12 +21,11 @@
  *              : invoke the UDF in the FOR expression of FLWOR
  * Expected Res : Success
  * Date         : Sep 5th 2012
- * Ignored      : Not part of current tests because of Issue 200
  */
 
 use test;
 
 
 select element a
-from  test.OList2() as a
+from  test.OList2() as a limit 1
 ;

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3de700a9/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf24/udf24.1.ddl.sqlpp
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf24/udf24.1.ddl.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf24/udf24.1.ddl.sqlpp
index b1348af..433dbe1 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf24/udf24.1.ddl.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf24/udf24.1.ddl.sqlpp
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-// Returns java.lang.ClassCastException : Issue 195
 
 drop dataverse test if exists;
 create dataverse test;

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3de700a9/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf24/udf24.2.update.sqlpp
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf24/udf24.2.update.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf24/udf24.2.update.sqlpp
index e13a2cf..4ffdfcf 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf24/udf24.2.update.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf24/udf24.2.update.sqlpp
@@ -20,6 +20,5 @@
  * Description  : Create UDF that returns a range
  * Expected Res : Success
  * Date         : Sep 5 2012
- * Ignored      : Not part of current test build because of Issue 201
  */
 

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3de700a9/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf24/udf24.3.query.sqlpp
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf24/udf24.3.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf24/udf24.3.query.sqlpp
index b869bfe..e3a733a 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf24/udf24.3.query.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf24/udf24.3.query.sqlpp
@@ -20,12 +20,11 @@
  * Description  : Create UDF that returns a range
  * Expected Res : Success
  * Date         : Sep 5 2012
- * Ignored      : Not part of current test build because of Issue 201
  */
 
 use test;
 
 
 select element i
-from  test.myRangeFn(100) as i
+from  test.myRangeFn(10) as i
 ;

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3de700a9/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf25/udf25.1.ddl.sqlpp
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf25/udf25.1.ddl.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf25/udf25.1.ddl.sqlpp
index 8b3df34..f481ea9 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf25/udf25.1.ddl.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf25/udf25.1.ddl.sqlpp
@@ -16,13 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/*
- * Description  : Create UDF and invoke with negative inputs.
- * Expected Res : Failure
- * Date         : 5th Sep 2012
- */
-
-// This one returns NPE...
 
 drop dataverse test if exists;
 create dataverse test;
@@ -31,8 +24,10 @@ use test;
 
 create function test.computeBonus(pbcRating,salary)
 {
-   if (pbcRating = 1) then
-        salary * 0.25
-   else
+   case
+      when pbcRating = 1
+        then salary * 0.25
+      else
         salary * 0.10
+      end
 };

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3de700a9/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf25/udf25.2.update.sqlpp
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf25/udf25.2.update.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf25/udf25.2.update.sqlpp
index 8bce363..042f3ce 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf25/udf25.2.update.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf25/udf25.2.update.sqlpp
@@ -16,9 +16,3 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/*
- * Description  : Create UDF and invoke with negative inputs.
- * Expected Res : Failure
- * Date         : 5th Sep 2012
- */
-

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3de700a9/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf25/udf25.3.query.sqlpp
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf25/udf25.3.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf25/udf25.3.query.sqlpp
index 3ff3509..1380ed2 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf25/udf25.3.query.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf25/udf25.3.query.sqlpp
@@ -16,13 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/*
- * Description  : Create UDF and invoke with negative inputs.
- * Expected Res : Failure
- * Date         : 5th Sep 2012
- */
-
 use test;
 
 
 select element test.computeBonus(-1,-1);
+select element test.computeBonus(1,-1);
+

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3de700a9/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf31/udf31.1.ddl.sqlpp
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf31/udf31.1.ddl.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf31/udf31.1.ddl.sqlpp
index 06a9bce..7ab4df0 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf31/udf31.1.ddl.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf31/udf31.1.ddl.sqlpp
@@ -16,12 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-/*
- * Description  : Declare a UDF that has a LIMIT in it and try to execute that 
function.
- * Expected Res : Success
- */
-
 drop dataverse emergencyTest if exists;
 create dataverse emergencyTest;
 use emergencyTest;
@@ -38,8 +32,8 @@ primary key id;
 
 create function mostIntenseEarthquakeNearLocation()
 {
-  from EmergencyReports as emergency
-  order by emergency.id
-  limit 1
-  select element emergency.message
+    select element emergency.message
+    from EmergencyReports as emergency
+    order by emergency.id
+    limit 1
 };

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3de700a9/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf31/udf31.3.query.sqlpp
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf31/udf31.3.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf31/udf31.3.query.sqlpp
index 3e7c1aa..4ea1ae4 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf31/udf31.3.query.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf31/udf31.3.query.sqlpp
@@ -21,5 +21,4 @@ use emergencyTest;
 
 
 select element result
-from  emergencyTest.mostIntenseEarthquakeNearLocation() as result
-;
+from  emergencyTest.mostIntenseEarthquakeNearLocation() as result;

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3de700a9/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf03/udf03.1.adm
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf03/udf03.1.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf03/udf03.1.adm
index 5885d0f..c859007 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf03/udf03.1.adm
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf03/udf03.1.adm
@@ -1 +1,3 @@
-1234.1d
+[ 1, 2 ]
+[ "A", "B" ]
+[ "UCLA", "UCSD", "UCR", "UCI" ]

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3de700a9/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf15/udf15.1.adm
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf15/udf15.1.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf15/udf15.1.adm
new file mode 100644
index 0000000..6de2546
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf15/udf15.1.adm
@@ -0,0 +1 @@
+[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3de700a9/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf24/udf24.1.adm
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf24/udf24.1.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf24/udf24.1.adm
new file mode 100644
index 0000000..0b669b6
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf24/udf24.1.adm
@@ -0,0 +1,10 @@
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3de700a9/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf25/udf25.1.adm
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf25/udf25.1.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf25/udf25.1.adm
new file mode 100644
index 0000000..c76f17a
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf25/udf25.1.adm
@@ -0,0 +1,2 @@
+-0.1
+-0.25
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3de700a9/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml 
b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
index 78d6b5c..0967ba6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@ -8146,13 +8146,11 @@
         <output-dir compare="Text">udf02</output-dir>
       </compilation-unit>
     </test-case>
-    <!-- causes NPE: Issue 200
-        <test-case FilePath="user-defined-functions">
-          <compilation-unit name="udf03">
-            <output-dir compare="Text">udf03</output-dir>
-          </compilation-unit>
-        </test-case>
-        -->
+  <test-case FilePath="user-defined-functions">
+    <compilation-unit name="udf03">
+      <output-dir compare="Text">udf03</output-dir>
+    </compilation-unit>
+  </test-case>
     <test-case FilePath="user-defined-functions">
       <compilation-unit name="udf04">
         <output-dir compare="Text">udf04</output-dir>
@@ -8208,13 +8206,11 @@
         <output-dir compare="Text">udf14</output-dir>
       </compilation-unit>
     </test-case>
-    <!-- Issue 166
-        <test-case FilePath="user-defined-functions">
-          <compilation-unit name="udf15">
-            <output-dir compare="Text">udf15</output-dir>
-          </compilation-unit>
-        </test-case>
-        -->
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf15">
+        <output-dir compare="Text">udf15</output-dir>
+      </compilation-unit>
+    </test-case>
     <test-case FilePath="user-defined-functions">
       <compilation-unit name="udf16">
         <output-dir compare="Text">udf16</output-dir>
@@ -8255,20 +8251,16 @@
         <output-dir compare="Text">udf23</output-dir>
       </compilation-unit>
     </test-case>
-    <!-- Issue 195
-        <test-case FilePath="user-defined-functions">
-          <compilation-unit name="udf24">
-            <output-dir compare="Text">udf24</output-dir>
-          </compilation-unit>
-        </test-case>
-        -->
-    <!-- Issue 218
-        <test-case FilePath="user-defined-functions">
-          <compilation-unit name="udf25">
-            <output-dir compare="Text">udf25</output-dir>
-          </compilation-unit>
-        </test-case>
-        -->
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf24">
+        <output-dir compare="Text">udf24</output-dir>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf25">
+        <output-dir compare="Text">udf25</output-dir>
+      </compilation-unit>
+    </test-case>
     <test-case FilePath="user-defined-functions">
       <compilation-unit name="udf27">
         <output-dir compare="Text">udf27</output-dir>
@@ -8292,6 +8284,11 @@
       </compilation-unit>
     </test-case>
     <test-case FilePath="user-defined-functions">
+      <compilation-unit name="udf31">
+        <output-dir compare="Text">udf31</output-dir>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="user-defined-functions">
       <compilation-unit name="f01">
         <output-dir compare="Text">f01</output-dir>
         <expected-error>function test.tinyint@0 is not defined</expected-error>

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3de700a9/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj 
b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
index 42b8d15..246c251 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
+++ b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
@@ -748,7 +748,8 @@ CreateFunctionStatement FunctionSpecification() throws 
ParseException:
   {
      beginPos = token;
   }
-  functionBodyExpr = Expression() <RIGHTBRACE>
+  (functionBodyExpr = SelectExpression(true) | functionBodyExpr = Expression())
+  <RIGHTBRACE>
     {
       endPos = token;
       functionBody = extractFragment(beginPos.beginLine, beginPos.beginColumn, 
endPos.beginLine, endPos.beginColumn);
@@ -1734,16 +1735,19 @@ FunctionDecl FunctionDeclaration() throws 
ParseException:
   createNewScope();
 }
 {
-  <DECLARE> <FUNCTION> functionName = Identifier()
-  paramList = ParameterList()
-  <LEFTBRACE> funcBody = Expression() <RIGHTBRACE>
-    {
-      signature = new FunctionSignature(defaultDataverse, functionName, 
paramList.size());
-      getCurrentScope().addFunctionDescriptor(signature, false);
-      funcDecl = new FunctionDecl(signature, paramList, funcBody);
-      removeCurrentScope();
-      return funcDecl;
-    }
+  <DECLARE> <FUNCTION>
+    functionName = Identifier()
+    paramList = ParameterList()
+  <LEFTBRACE>
+    (funcBody = SelectExpression(true) | funcBody = Expression())
+  <RIGHTBRACE>
+  {
+    signature = new FunctionSignature(defaultDataverse, functionName, 
paramList.size());
+    getCurrentScope().addFunctionDescriptor(signature, false);
+    funcDecl = new FunctionDecl(signature, paramList, funcBody);
+    removeCurrentScope();
+    return funcDecl;
+  }
 }
 
 Query ExplainStatement() throws ParseException:
@@ -1809,19 +1813,19 @@ Expression OperatorExpr()throws ParseException:
         if (op == null) {
           op = new OperatorExpr();
           op.addOperand(operand);
-        op.setCurrentop(true);
+          op.setCurrentop(true);
         }
         try{
             op.addOperator(token.image.toLowerCase());
         } catch (Exception e){
             throw new ParseException(e.getMessage());
         }
-    }
+      }
 
-    operand = AndExpr()
-    {
-      op.addOperand(operand);
-    }
+      operand = AndExpr()
+      {
+        op.addOperand(operand);
+      }
 
     )*
 

Reply via email to