From 44a86d8f16934135626702874cffe5799535cf81 Mon Sep 17 00:00:00 2001
From: Julien Lopez <julien.lopez@lri.fr>
Date: Thu, 1 Mar 2018 10:34:49 +0100
Subject: [PATCH] Add test on side effect with free variables

---
 .../tests/pgsql/QuerySideEffectWithFreeVars.R   | 17 +++++++++++++++++
 .../tests/pgsql/QuerySideEffectWithFreeVars.out |  7 +++++++
 2 files changed, 24 insertions(+)
 create mode 100644 com.oracle.truffle.r.test/tests/pgsql/QuerySideEffectWithFreeVars.R
 create mode 100644 com.oracle.truffle.r.test/tests/pgsql/QuerySideEffectWithFreeVars.out

diff --git a/com.oracle.truffle.r.test/tests/pgsql/QuerySideEffectWithFreeVars.R b/com.oracle.truffle.r.test/tests/pgsql/QuerySideEffectWithFreeVars.R
new file mode 100644
index 0000000000..eb9b872a57
--- /dev/null
+++ b/com.oracle.truffle.r.test/tests/pgsql/QuerySideEffectWithFreeVars.R
@@ -0,0 +1,17 @@
+conv = function (a) a * 89.0 / 100.0
+emp = new.tableRef("emp", "PostgreSQL", "postgre.config", "public")
+minsalary = 2500.0
+q = query.select(function (x) {
+             res = new.env()
+             res$empno = x$empno
+             res$ename = x$ename
+             res$salary = (function (dol){
+               a = dol * 89.0 / 100.0
+               while (a > 1000.0) a = conv(a)
+               a
+             })(x$sal)
+             res },
+    query.where(function (x) x$sal >= minsalary,
+    query.from(emp)))
+results = query.force(q)
+print(results)
diff --git a/com.oracle.truffle.r.test/tests/pgsql/QuerySideEffectWithFreeVars.out b/com.oracle.truffle.r.test/tests/pgsql/QuerySideEffectWithFreeVars.out
new file mode 100644
index 0000000000..ae30189ca4
--- /dev/null
+++ b/com.oracle.truffle.r.test/tests/pgsql/QuerySideEffectWithFreeVars.out
@@ -0,0 +1,7 @@
+  ename empno            salary
+1 SMITH     1 984.1472014255202
+2  WARD     3 908.9094161734163
+3 JONES     4  971.310575818447
+4 SCOTT     8 930.9438795980075
+5 ADAMS    11 978.2054933202209
+
-- 
GitLab