Merged asterix_stabilization r606:652.

git-svn-id: https://asterixdb.googlecode.com/svn/branches/asterix_fix_agg@653 eaa15691-b419-025a-1212-ee371bd00084
diff --git a/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/am/BTreeAccessMethod.java b/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/am/BTreeAccessMethod.java
index 6baf1b5..b6103b3 100644
--- a/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/am/BTreeAccessMethod.java
+++ b/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/am/BTreeAccessMethod.java
@@ -58,7 +58,6 @@
         funcIdents.add(AlgebricksBuiltinFunctions.GE);
         funcIdents.add(AlgebricksBuiltinFunctions.LT);
         funcIdents.add(AlgebricksBuiltinFunctions.GT);
-        funcIdents.add(AlgebricksBuiltinFunctions.NEQ);
     }
 
     public static BTreeAccessMethod INSTANCE = new BTreeAccessMethod();
diff --git a/asterix-app/data/names.adm b/asterix-app/data/names.adm
new file mode 100644
index 0000000..35c137e
--- /dev/null
+++ b/asterix-app/data/names.adm
@@ -0,0 +1,120 @@
+711|Hugh|Lema|25|HR
+721|Schwan|Phil|34|Payroll
+732|Noemi|Eacret|56|HR
+741|Julio|Mattocks|38|Sales
+751|Lance|Kottke|34|IT
+761|Kurt|Liz|32|HR
+771|Neva|Barbeau|45|Sales
+781|Karina|Tuthill|46|Payroll
+791|Maricela|Cambron|36|IT
+110|Allan|Piland|29|HR
+101|Javier|Makuch|28|IT
+112|Pearlie|Aumann|31|Payroll
+113|Chandra|Hase|34|Sales
+114|Christian|Convery|28|HR
+115|Panther|Ritch|26|IT
+116|Ted|Elsea|26|IT
+117|Tabatha|Bladen|25|HR
+118|Clayton|Oltman|42|Sales
+119|Sharron|Darwin|32|Payroll
+210|Clayton|Durgin|52|HR
+299|Julio|Iorio|37|IT
+212|Emilia|Chenail|26|Sales
+213|Kenya|Almquist|43|Payroll
+214|Alejandra|Lacefield|41|HR
+215|Karina|Michelsen|46|IT
+216|Katy|Delillo|36|IT
+217|Benita|Kleist|37|HR
+218|Earlene|Paluch|31|IT
+219|Kurt|Petermann|27|Payroll
+915|Starner|Stuart|25|Sales
+925|Sofia|Cuff|30|HR
+935|Milagros|Murguia|31|IT
+945|Margery|Haldeman|32|IT
+955|Max|Mell|33|HR
+965|Micco|Mercy|31|Payroll
+975|Clare|Vangieson|34|IT
+985|Elnora|Dimauro|35|Sales
+995|Pearlie|Kocian|38|HR
+809|Clayton|Delany|23|IT
+811|Kubik|Kuhn|27|HR
+821|Allan|Tomes|29|Payroll
+831|Lonnie|Aller|33|Sales
+841|Neil|Hurrell|26|IT
+851|Clayton|Engles|41|HR
+861|Javier|Gabrielson|39|Payroll
+871|Allan|Alejandre|48|IT
+881|Julio|Isa|38|Sales
+891|Roslyn|Simmerman|31|IT
+601|Neil|Deforge|26|HR
+611|Earlene|Marcy|32|IT
+621|Erik|Lechuga|42|Payroll
+631|Tyrone|Holtzclaw|34|Sales
+641|Lance|Hankey|35|Sales
+651|Mallory|Gladding|31|HR
+661|Tia|Braaten|40|IT
+671|Julio|Vanpatten|30|Payroll
+681|Max|Teachout|34|IT
+691|Karina|Wingerter|31|IT
+8301|Earlene|Wallick|26|HR
+8338|Julio|Bosket|28|Payroll
+5438|Lakisha|Quashie|29|HR
+538|Milagros|Forkey|34|Sales
+504|Erik|Dobek|29|IT
+584|Dollie|Dattilo|32|Payroll
+524|Benita|Maltos|33|IT
+534|Kurt|Biscoe|36|HR
+544|Loraine|Housel|30|Sales
+554|Jamie|Rachal|30|IT
+564|Liza|Fredenburg|37|IT
+574|Ericka|Feldmann|29|Sales
+589|Lorrie|Sharon|27|IT
+594|Roxie|Houghtaling|40|Payroll
+514|Julio|Ruben|41|IT
+414|Mathew|Fuschetto|34|HR
+424|Allyson|Remus|32|IT
+434|Earlene|Linebarger|26|Payroll
+444|Clinton|Sick|29|IT
+454|Ted|Caba|28|HR|Sales
+464|Fernando|Engelke|39|IT
+474|Mathew|Courchesne|31|IT
+484|Cody|Vinyard|36|Payroll
+494|Benita|Fravel|33|Sales
+404|Emilia|Square|32|IT
+1263|Tania|Loffredo|25|IT
+363|Cody|Rodreguez|26|IT
+463|Marcie|States|28|IT
+3563|Hazeltine|Susan|29|Sales
+7663|Annabelle|Nimmo|30|Payroll
+9763|Ted|Saini|31|IT
+1863|Darren|Thorington|32|Sales
+2963|Neil|Gunnerson|34|IT
+1410|Clinton|Fredricks|34|IT
+1411|Lance|Farquhar|32|HR
+1412|Tabatha|Crisler|33|IT
+1413|Max|Durney|29|IT
+1414|Carmella|Strauser|30|Payroll
+1415|Kelly|Carrales|40|IT
+1416|Guy|Merten|29|Sales
+1417|Noreen|Ruhland|29|IT
+1418|Julio|Damore|27|Sales
+1419|Selena|Truby|25|HR
+1420|Alejandra|Commons|30|Sales
+1421|Allyson|Balk|30|IT
+1422|Nelson|Byun|40|Sales
+1423|Christian|Reidhead|40|IT
+1424|Pearlie|Hopkin|48|Payroll
+1425|Nelson|Wohlers|41|HR
+1426|Marcie|Rasnake|42|Sales
+1427|Hugh|Marshburn|43|Payroll
+1428|Mathew|Marasco|45|Sales
+1429|Kurt|Veres|32|IT
+1430|Julio|Barkett|39|Sales
+4727|Michael|Carey|50|Payroll
+2333|Chen|Li|42|HR
+7444|Sharad|Mehrotra|42|Sales
+9555|Tony|Givargis|40|Sales
+3666|Young Seok|Kim|35|Payroll
+9941|Khurram Faraaz|Mohammed|30|HR
+1007|Yingyi|Bu|27|IT
+1999|Susan|Malaika|42|HR
diff --git a/asterix-app/src/test/resources/runtimets/ignore.txt b/asterix-app/src/test/resources/runtimets/ignore.txt
index 172d920..f3aef16 100644
--- a/asterix-app/src/test/resources/runtimets/ignore.txt
+++ b/asterix-app/src/test/resources/runtimets/ignore.txt
@@ -30,4 +30,5 @@
 quantifiers/somesat_05.aql
 quantifiers/everysat_02.aql
 quantifiers/everysat_03.aql
-flwor
\ No newline at end of file
+flwor
+string/startwith03.aql
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/queries/flwor/ret-01.aql b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-01.aql
index 0c7e73e..72fb94a 100644
--- a/asterix-app/src/test/resources/runtimets/queries/flwor/ret-01.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-01.aql
@@ -4,5 +4,9 @@
  * Date             :  7th July 2012
  */
 
+// return string length
+
+write output to nc1:"rttest/flwor_ret-01.adm";
+
 for $x in ["ten","twenty","thirty","forty","fifty","sixty","seventy","ninety"]
 return string-length($x)
diff --git a/asterix-app/src/test/resources/runtimets/queries/flwor/ret-02.aql b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-02.aql
new file mode 100644
index 0000000..5201cc5
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-02.aql
@@ -0,0 +1,12 @@
+/*
+ * Description      :  Test return clause of the FLWOR expression
+ * Expected Result  :  Success
+ * Date             :  7th July 2012
+ */
+
+// Return a string
+
+write output to nc1:"rttest/flwor_ret-02.adm";
+
+for $x in [true]
+return "this is a test string"
diff --git a/asterix-app/src/test/resources/runtimets/queries/flwor/ret-03.aql b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-03.aql
new file mode 100644
index 0000000..e51f787
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-03.aql
@@ -0,0 +1,11 @@
+/*
+ * Description      :  Test return clause of the FLWOR expression
+ *                  :  Tes if expression then expression else expression in the return clause 
+ * Expected Result  :  Success
+ * Date             :  26th July 2012
+ */
+
+write output to nc1:"rttest/flwor_ret-03.adm";
+
+for $x in [true]
+return (if(true) then "YES" else "NO") 
diff --git a/asterix-app/src/test/resources/runtimets/queries/flwor/ret-04.aql b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-04.aql
new file mode 100644
index 0000000..5974ed4
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-04.aql
@@ -0,0 +1,12 @@
+/*
+ * Description      :  Test return clause of the FLWOR expression
+ *                  :  Tes if expression then expression else expression in the return clause
+ * Expected Result  :  Success
+ * Date             :  26th July 2012
+ */
+
+write output to nc1:"rttest/flwor_ret-04.adm";
+
+
+let $a := 12345
+return (if($a > 999) then "GREATER" else "LESSER") 
diff --git a/asterix-app/src/test/resources/runtimets/queries/flwor/ret-05.aql b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-05.aql
new file mode 100644
index 0000000..4f6249b
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-05.aql
@@ -0,0 +1,11 @@
+/*
+ * Description      :  Test return clause of the FLWOR expression
+ *                  :  For + Return within return clause
+ * Expected Result  :  Success
+ * Date             :  26th July 2012
+ */
+
+write output to nc1:"rttest/flwor_ret-05.adm";
+
+let $b := 12345
+return (for $a in [[1,2,3],[4,5,6,7],[8,9],[0,4,5],[6,7,1],[2,3,4],[5,6,7],[8,9,0]] return $a)
diff --git a/asterix-app/src/test/resources/runtimets/queries/flwor/ret-06.aql b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-06.aql
new file mode 100644
index 0000000..e164cd3
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-06.aql
@@ -0,0 +1,11 @@
+/*
+ * Description      :  Test return clause of the FLWOR expression
+ *                  :  Return an un-ordered list
+ * Expected Result  :  Success
+ * Date             :  26th July 2012
+ */
+
+write output to nc1:"rttest/flwor_ret-06.adm";
+
+let $b := 12345
+return {{"Welcome","UCI","Anteater","DBH","ICS"}}
diff --git a/asterix-app/src/test/resources/runtimets/queries/flwor/ret-07.aql b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-07.aql
new file mode 100644
index 0000000..73c86cc
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-07.aql
@@ -0,0 +1,12 @@
+/*
+ * Description      :  Test return clause of the FLWOR expression
+ * Expected Result  :  Success
+ * Date             :  26th July 2012
+ */
+
+// return nothing
+
+write output to nc1:"rttest/flwor_ret-07.adm";
+
+let $b := true
+return {}
diff --git a/asterix-app/src/test/resources/runtimets/queries/flwor/ret-08.aql b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-08.aql
new file mode 100644
index 0000000..0b67dca
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-08.aql
@@ -0,0 +1,13 @@
+/*
+ * Description      :  Test return clause of the FLWOR expression
+ * Expected Result  :  Success
+ * Date             :  26th July 2012
+ */
+
+// for and return in return clause
+
+write output to nc1:"rttest/flwor_ret-08.adm";
+
+for $a in [1,2,3,4,5,6,7,8]
+return {"a":$a,"inner-for":(for $b in [11,22,33,44,55,66,77,88] return $b)}
+
diff --git a/asterix-app/src/test/resources/runtimets/queries/flwor/ret-09.aql b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-09.aql
new file mode 100644
index 0000000..a186c99
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-09.aql
@@ -0,0 +1,12 @@
+/*
+ * Description      :  Test return clause of the FLWOR expression
+ * Expected Result  :  Success
+ * Date             :  26th July 2012
+ */
+
+// return a constant
+
+write output to nc1:"rttest/flwor_ret-09.adm";
+
+let $b:=true
+return 1
diff --git a/asterix-app/src/test/resources/runtimets/queries/flwor/ret-10.aql b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-10.aql
new file mode 100644
index 0000000..cc05a11
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-10.aql
@@ -0,0 +1,13 @@
+/*
+ * Description      :  Test return clause of the FLWOR expression
+ * Expected Result  :  Success
+ * Date             :  26th July 2012
+ */
+
+// nested for and return within another for
+
+write output to nc1:"rttest/flwor_ret-10.adm";
+
+for $a in 
+    for $b in [1,2,3,4,5,6,7,8,9,0] return $b
+return $a
diff --git a/asterix-app/src/test/resources/runtimets/queries/flwor/ret-11.aql b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-11.aql
new file mode 100644
index 0000000..3f54a13
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-11.aql
@@ -0,0 +1,10 @@
+/*
+ * Description      :  Test return clause of the FLWOR expression
+ * Expected Result  :  Success
+ * Date             :  26th July 2012
+ */
+
+write output to nc1:"rttest/flwor_ret-11.adm";
+
+for $a in [1,2,3,4,5,6,7,8,9] 
+return ($a + 1)
diff --git a/asterix-app/src/test/resources/runtimets/queries/flwor/ret-12.aql b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-12.aql
new file mode 100644
index 0000000..7ce8e90
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-12.aql
@@ -0,0 +1,10 @@
+/*
+ * Description      :  Test return clause of the FLWOR expression
+ * Expected Result  :  Success
+ * Date             :  26th July 2012
+ */
+
+write output to nc1:"rttest/flwor_ret-12.adm";
+
+for $a in [1,2,3,4,5,6,7,8,9] 
+return ($a - 1)
diff --git a/asterix-app/src/test/resources/runtimets/queries/flwor/ret-13.aql b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-13.aql
new file mode 100644
index 0000000..cc16cb3
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-13.aql
@@ -0,0 +1,10 @@
+/*
+ * Description      :  Test return clause of the FLWOR expression
+ * Expected Result  :  Success
+ * Date             :  26th July 2012
+ */
+
+write output to nc1:"rttest/flwor_ret-13.adm";
+
+for $a in [1,2,3,4,5,6,7,8,9] 
+return ($a * 9)
diff --git a/asterix-app/src/test/resources/runtimets/queries/flwor/ret-14.aql b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-14.aql
new file mode 100644
index 0000000..4716e71
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-14.aql
@@ -0,0 +1,12 @@
+/*
+ * Description      :  Test return clause of the FLWOR expression
+ * Expected Result  :  Success
+ * Date             :  26th July 2012
+ */
+
+// Return record
+
+write output to nc1:"rttest/flwor_ret-14.adm";
+
+let $a := true
+return {"name":"John Doe", "age":26,"sex":"M","salary":50000,"dept":"HR"}
diff --git a/asterix-app/src/test/resources/runtimets/queries/flwor/ret-15.aql b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-15.aql
new file mode 100644
index 0000000..e17312d
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-15.aql
@@ -0,0 +1,15 @@
+/*
+ * Description      :  Test return clause of the FLWOR expression
+ * Expected Result  :  Success
+ * Date             :  30th July 2012
+ */
+
+// Return  op1 and op2 or op3 and op4
+
+write output to nc1:"rttest/flwor_ret-15.adm";
+
+let $a := true
+let $b := false
+let $c := true
+let $d := false
+return ($a and $b or $c and $d)
diff --git a/asterix-app/src/test/resources/runtimets/queries/flwor/ret-16.aql b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-16.aql
new file mode 100644
index 0000000..185d7b6
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-16.aql
@@ -0,0 +1,15 @@
+/*
+ * Description      :  Test return clause of the FLWOR expression
+ * Expected Result  :  Success
+ * Date             :  30th July 2012
+ */
+
+// Return arithmetic-expr1 and arithmetic-expr2 
+
+write output to nc1:"rttest/flwor_ret-16.adm";
+
+let $a := 100 + 100
+let $b := 13.4 * 14.97
+let $c := 9999 + 98677
+let $d := 34.67 / 5.324
+return (($a*$d) and ($b / $c))
diff --git a/asterix-app/src/test/resources/runtimets/queries/flwor/ret-17.aql b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-17.aql
new file mode 100644
index 0000000..f384f81
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-17.aql
@@ -0,0 +1,15 @@
+/*
+ * Description      :  Test return clause of the FLWOR expression
+ * Expected Result  :  Success
+ * Date             :  30th July 2012
+ */
+
+// Return arithmetic-expr1 and arithmetic-expr2 
+
+write output to nc1:"rttest/flwor_ret-17.adm";
+
+let $a := 100 + 100
+let $b := 13.4 * 14.97
+let $c := 9999 + 98677
+let $d := 34.67 / 5.324
+return (($a*$d) and ($b / $c))
diff --git a/asterix-app/src/test/resources/runtimets/queries/flwor/ret-18.aql b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-18.aql
new file mode 100644
index 0000000..cf858f8
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-18.aql
@@ -0,0 +1,12 @@
+/*
+ * Description      :  Test return clause of the FLWOR expression
+ * Expected Result  :  Success
+ * Date             :  30th July 2012
+ */
+
+// Return an item from the ordered list 
+
+write output to nc1:"rttest/flwor_ret-18.adm";
+
+let $a := [1,2,3,4,5,6,7]
+return $a[6]
diff --git a/asterix-app/src/test/resources/runtimets/queries/flwor/ret-19.aql b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-19.aql
new file mode 100644
index 0000000..4cfa63b
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/flwor/ret-19.aql
@@ -0,0 +1,12 @@
+/*
+ * Description      :  Test return clause of the FLWOR expression
+ * Expected Result  :  Success
+ * Date             :  30th July 2012
+ */
+
+// Return an item from the ordered list 
+
+write output to nc1:"rttest/flwor_ret-19.adm";
+
+let $a := [[1,2,3,4,5,6,7],[7,8,9,10]]
+return $a[0]
diff --git a/asterix-app/src/test/resources/runtimets/queries/index-selection/btree-index-composite-key.aql b/asterix-app/src/test/resources/runtimets/queries/index-selection/btree-index-composite-key.aql
new file mode 100644
index 0000000..dadb884
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/index-selection/btree-index-composite-key.aql
@@ -0,0 +1,35 @@
+/*
+ * Description     : Test that BTree index is used in query plan
+ *                 : define the BTree index on a composite key (fname,lanme)
+ *                 : predicate => where $l.fname="Julio" and $l.lname="Isa"
+ * Expected Result : Success
+ * Issue           : Issue 162
+ * Date            : 7th August 2012
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+use dataverse test;
+
+create type Emp as closed {
+id:int32,
+fname:string,
+lname:string,
+age:int32,
+dept:string
+}
+
+create dataset employee(Emp) partitioned by key id;
+
+load dataset employee
+using "edu.uci.ics.asterix.external.dataset.adapter.NCFileSystemAdapter"
+(("path"="nc1://data/names.adm"),("format"="delimited-text"),("delimiter"="|"));
+
+create index idx_employee_f_l_name on employee(fname,lname);
+
+write output to nc1:"rttest/index-selection_btree-index-composite-key.adm";
+
+for $l in dataset('employee')
+where $l.fname="Julio" and $l.lname="Isa"
+return $l
+
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/cpttostr01.aql b/asterix-app/src/test/resources/runtimets/queries/string/cpttostr01.aql
new file mode 100644
index 0000000..a66b00f
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/cpttostr01.aql
@@ -0,0 +1,28 @@
+/*
+ * Test case Name : cpttostr01.aql
+ * Description    : Test codepoint-to-string(codepoint) function.
+ *                : Pass the codepoints which are in the internal dataset to the function. 
+ * Success        : Yes
+ * Date           : 16th April 2012
+ */
+
+
+drop dataverse test if exists;
+create dataverse test;
+use dataverse test;
+
+create type TestType as open{
+id:int32,
+cpt:[int32]
+}
+
+create dataset testds(TestType) partitioned by key id;
+
+// insert codepoint data into internal dataset testds here into the cpt attribute
+
+insert into dataset testds({"id":123,"cpt":[0048,0045,0057,0044,0065,0045,0090]});
+
+write output to nc1:"rttest/string_cpttostr01.adm";
+
+for $l in dataset('testds')
+return codepoint-to-string($l.cpt)
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/cpttostr02.aql b/asterix-app/src/test/resources/runtimets/queries/string/cpttostr02.aql
new file mode 100644
index 0000000..1e99989
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/cpttostr02.aql
@@ -0,0 +1,17 @@
+/*
+ * Test case Name : cpttostr02.aql
+ * Description    : Test codepoint-to-string(codepoint) function.
+ *                : Inputs are codepoint values for lowecase, uppercase and special characters
+ * Success        : Yes
+ * Date           : 16th April 2012
+ */
+
+write output to nc1:"rttest/string_cpttostr02.adm";
+
+let $c1 := codepoint-to-string([0065,0066,0067,0068,0069,0070,0071,0072,0073,0074,0075,0076,0077,0078,0079,0080,0081,0082,0083,0084,0085,0086,0087,0088,0089,0090]) 
+
+let $c2 := codepoint-to-string([0097,0098,0099,0100,0101,0102,0103,0104,0105,0106,0107,0108,0109,0110,0111,0112,0113,0114,0115,0116,0117,0118,0119,0120,0121,0122]) 
+
+let $c3 := codepoint-to-string([0033,0034,0035,0036,0037,0038,0039,0040,0041,0042,0043,0044,0045,0046,0047,0048,0049,0050,0051,0052,0053,0054,0055,0063,0064]) 
+
+return {"c1":$c1,"c2":$c2,"c3":$c3}
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/cpttostr04.aql b/asterix-app/src/test/resources/runtimets/queries/string/cpttostr04.aql
new file mode 100644
index 0000000..9e177c0
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/cpttostr04.aql
@@ -0,0 +1,13 @@
+/*
+ * Test case Name : cpttostr04.aql
+ * Description    : Test codepoint-to-string(codepoint) function.
+ * Success        : Yes
+ * Date           : 16th April 2012
+ */
+
+//Input = Output
+
+write output to nc1:"rttest/string_cpttostr04.adm";
+
+let $c1 := codepoint-to-string(string-to-codepoint("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"))
+return { "c1":$c1 }
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/endwith02.aql b/asterix-app/src/test/resources/runtimets/queries/string/endwith02.aql
new file mode 100644
index 0000000..cfca775
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/endwith02.aql
@@ -0,0 +1,16 @@
+/*
+ * Testcase Name : endwith02.aql
+ * Description   : Positive tests
+ * Success       : Yes
+ * Date          : 20th April 2012
+ */
+
+write output to nc1:"rttest/string_endwith02.adm";
+
+for $a in [end-with("aBCDEFghIa",codepoint-to-string([0041])),
+end-with("AbCDEFghIA",codepoint-to-string([0041])),
+end-with("AbCdEfGhIjKlMnOpQrStUvWxYz","xYz"),
+end-with("abcdef",lowercase("ABCDEf")),
+end-with("abcdef","abcdef"),
+end-with("abcdef123","ef123")]
+return $a
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/endwith03.aql b/asterix-app/src/test/resources/runtimets/queries/string/endwith03.aql
new file mode 100644
index 0000000..832efbc
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/endwith03.aql
@@ -0,0 +1,33 @@
+/*
+ * Testcase Name : endwith03.aql
+ * Description   : Positive tests
+ * Success       : Yes
+ * Date          : 20th April 2012
+ */
+
+// create internal dataset, insert string data into string field and pass the string filed as input to end-with function
+
+drop dataverse test if exists;
+create dataverse test;
+use dataverse test;
+
+create type TestType as {
+name:string
+}
+
+create dataset testds(TestType) partitioned by key name;
+
+insert into dataset testds({"name":"Jim Jones"});
+insert into dataset testds({"name":"Ravi Kumar"});
+insert into dataset testds({"name":"Bruce Li"});
+insert into dataset testds({"name":"Marian Jones"});
+insert into dataset testds({"name":"Phil Jones"});
+insert into dataset testds({"name":"I am Jones"});
+
+write output to nc1:"rttest/string_endwith03.adm";
+
+for $l in dataset('testds')
+order by $l.name
+where end-with($l.name,"Jones")
+return $l
+
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/matches02.aql b/asterix-app/src/test/resources/runtimets/queries/string/matches02.aql
new file mode 100644
index 0000000..1018f02
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/matches02.aql
@@ -0,0 +1,23 @@
+/*
+ * Testcase Name  :  matches02.aql
+ * Description    :  Positive tests
+ * Success        :  Yes
+ * Date           :  23th April 2012
+ */
+
+write output to nc1:"rttest/string_matches02.adm";
+
+let $c1:="Hello World"
+let $c2:="Hello World"
+let $c3:=matches($c1,$c2)
+let $c4:=matches("Asterix for Dummies","Asterix for Dummies")
+let $c5:=matches("semistructured data",lowercase("SEMISTRUCTURED DATA"))
+let $c6:=matches("Mega Living!","Mega")
+let $c7:=matches("Mega Living!","ving!")
+let $c8:=matches("Mega Living!"," ")
+let $c9:=matches("Mega Living!","a l")
+let $c10:=matches("Mega Living!","")
+let $c11:=matches(" "," ")
+let $c12:=matches("aaaa","aaaaa")
+return {"c3":$c3,"c4":$c4,"c5":$c5,"c6":$c6,"c7":$c7,"c8":$c8,"c9":$c9,"c10":$c10,"c11":$c11,"c12":$c12}
+
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/matches03.aql b/asterix-app/src/test/resources/runtimets/queries/string/matches03.aql
new file mode 100644
index 0000000..7f4623c
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/matches03.aql
@@ -0,0 +1,26 @@
+/*
+ * Testcase Name  :  matches03.aql
+ * Description    :  Positive tests
+ *                :  Test matches functions with regular expressions as third input parameter
+ * Success        :  Yes
+ * Date           :  23th April 2012
+ */
+
+
+write output to nc1:"rttest/string_matches03.adm";
+
+for $a in [matches("1234567890","[^a-z]"),
+matches("1234567890","[^a-zA-Z]"),
+matches("abcdefghABCDEFGH","[^a-zA-Z]"),
+matches("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ","[^a-zA-Z]"),
+matches("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ","[^A-Z]"),
+matches("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ","[^a-z]"),
+matches("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ","[^0-9]"),
+matches("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ","[0-9]"),
+matches("adefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ","[a-z&&[^bc]]"),
+matches("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ","[a-z&&[^bc]]"),
+matches("bc","[a-z&&[^bc]]"),
+matches("mnop","[a-z&&[^m-p]]"),
+matches("abcdmnop","[a-z&&[^m-p]]")]
+return $a
+
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/matches04.aql b/asterix-app/src/test/resources/runtimets/queries/string/matches04.aql
new file mode 100644
index 0000000..829a176
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/matches04.aql
@@ -0,0 +1,17 @@
+/*
+ * Testcase Name  :  matches04.aql
+ * Description    :  Positive tests
+ * Success        :  Yes (tests to check for patterns using regular expressions)
+ * Date           :  20th April 2012
+ */
+
+write output to nc1:"rttest/string_matches04.adm";
+
+for $a in [matches("UCI UCI UCI UCI UCI UCI","[UCI{6}]"),
+matches("UCI UCI UCI UCI UCI UCI","[UCI{3,6}]"),
+matches("UCI UCI UCI UCI UCI UCI","[UCI{7}]"),
+matches("UCI UCI UCI UCI UCI UCI","[UCI{1}]"),
+matches("UCI UCI UCI","[UCI+]"),
+matches("false","[true|false]"),
+matches("YX","[XY]")]
+return $a
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/matches05.aql b/asterix-app/src/test/resources/runtimets/queries/string/matches05.aql
new file mode 100644
index 0000000..2f7b83e
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/matches05.aql
@@ -0,0 +1,34 @@
+/*
+ * Testcase Name  :  matches05.aql
+ * Description    :  Positive tests
+ *                :  Create two internal datasets and insert string data and perform match of fname using matches function.
+ * Success        :  Yes
+ * Date           :  25th April 2012
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+use dataverse test;
+
+create type TestType1 as{
+fname:string,
+lname:string,
+id:int32
+}
+
+create dataset testds1(TestType1) partitioned by key id;
+
+insert into dataset testds1({"fname":"Test","lname":"Test","id":123});
+insert into dataset testds1({"fname":"Testa","lname":"Test","id":124});
+insert into dataset testds1({"fname":"Test1","lname":"Test1","id":125});
+insert into dataset testds1({"fname":"Test","lname":"Testb","id":126});
+insert into dataset testds1({"fname":"Test2","lname":"Test2","id":127});
+
+write output to nc1:"rttest/string_matches05.adm";
+
+//Perform the match for fname and lname
+for $l in dataset('testds1')
+order by $l.id
+where matches($l.fname,$l.lname)
+return $l
+
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/matches06.aql b/asterix-app/src/test/resources/runtimets/queries/string/matches06.aql
new file mode 100644
index 0000000..0e18a84
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/matches06.aql
@@ -0,0 +1,25 @@
+/*
+ * Description  : Test matches string function using regular expressions
+ * Expected Res : Success
+ * Date         : May 21 2012
+ */
+
+write output to nc1:"rttest/string_matches06.adm";
+
+for $a in [matches("mnop","."),
+matches("abcdefABCDEF","/d"),
+matches("12345","\d"),
+matches("abcdefGHIJK","\D"),
+matches("       ","\s"),
+matches("       ","\S"),
+matches("Welcome to pattern matching!","[a-zA-Z_0-9]"),
+matches("!@#$%^&*()","[a-zA-Z_0-9]"),
+matches("!@#$%^&*()","[^\W]"),
+matches("!@#$%^&*","[^\w]"),
+matches("0xffff","[\p{XDigit}]"),
+matches("FFFFFFFF","[\p{XDigit}]"),
+matches("abcdefgh","[\p{javaLowerCase}]"),
+matches("ABCDEF","[\p{javaLowerCase}]"),
+matches(codepoint-to-string([0163]),"[\p{Sc}]")]
+return $a
+
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/matches11.aql b/asterix-app/src/test/resources/runtimets/queries/string/matches11.aql
new file mode 100644
index 0000000..1e96b5f
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/matches11.aql
@@ -0,0 +1,16 @@
+/*
+ * Testcase Name  :  matches11.aql
+ * Description    :  Positive tests
+ * Success        :  Yes
+ * Date           :  20th April 2012
+ */
+
+write output to nc1:"rttest/string_matches11.adm";
+
+for $a in [matches("hello",null),
+matches("hello","helllo"),
+matches("hello"," "),
+matches(null,"hello"),
+matches("hello","[^a-z]")]
+return $a
+
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/startwith02.aql b/asterix-app/src/test/resources/runtimets/queries/string/startwith02.aql
new file mode 100644
index 0000000..b4ab93a
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/startwith02.aql
@@ -0,0 +1,26 @@
+/*
+ * Testcase Name : startwith02.aql
+ * Description   : Positive tests
+ * Success       : Yes
+ * Date          : 19th April 2012
+ */
+
+write output to nc1:"rttest/string_startwith02.adm";
+
+for $a in [start-with("Hello","H"),
+start-with("Hello",lowercase("He")),
+start-with("Hello",""),
+start-with("Hello"," "),
+start-with("Hello",null),
+start-with("abcdef",lowercase("ABCDEf")),
+start-with("abcdef","abcdef"),
+start-with("abcdef","abc "),
+start-with("abc\tdef","abc\t"),
+start-with(" abcdef","abc"),
+start-with("0x1FF","0"),
+start-with("<ID>","<"),
+start-with("aBCDEFghI",codepoint-to-string([0041])),
+start-with("AbCDEFghI",codepoint-to-string([0041]))]
+return $a
+
+
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/startwith03.aql b/asterix-app/src/test/resources/runtimets/queries/string/startwith03.aql
new file mode 100644
index 0000000..68f09ae
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/startwith03.aql
@@ -0,0 +1,35 @@
+/*
+ * Testcase Name : startwith02.aql
+ * Description   : Positive tests
+ * Success       : Yes
+ * Date          : 19th April 2012
+ */
+
+// Create internal dataset, insert string data into string field and pass the string field as first input to start-with function
+
+drop dataverse test if exists;
+create dataverse test;
+use dataverse test;
+
+create type TestType as {
+name:string
+}
+
+create dataset testds(TestType) partitioned by key name;
+
+insert into dataset testds({"name":"John Smith"});
+insert into dataset testds({"name":"John Doe"});
+insert into dataset testds({"name":"John Wayne"});
+insert into dataset testds({"name":"Johnson Ben"});
+insert into dataset testds({"name":"Johnny Walker"});
+insert into dataset testds({"name":"David Smith"});
+insert into dataset testds({"name":"Not a Name"});
+
+write output to nc1:"rttest/string_startwith03.adm;
+
+// Return all names that start with John
+
+for $l in dataset('testds')
+order by $l.name
+where start-with($l.name,"John")
+return $l
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/strconcat01.aql b/asterix-app/src/test/resources/runtimets/queries/string/strconcat01.aql
new file mode 100644
index 0000000..0b3941d
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/strconcat01.aql
@@ -0,0 +1,38 @@
+/*
+ * Test case Name : strconcat01.aql
+ * Description    : Test string-concat([string]) function.
+ *                : Pass the strings(which are in internal dataset) to string-concat function for concatenation. 
+ * Success        : Yes
+ * Date           : 16th April 2012
+ */
+
+
+drop dataverse test if exists;
+create dataverse test;
+use dataverse test;
+
+create type TestType as open{
+id:int32,
+fname:string,
+lname:string
+}
+
+create dataset testds(TestType) partitioned by key id;
+
+// insert string data into internal dataset testds into the name attribute
+
+insert into dataset testds({"id":123,"fname":"John","lname":"Smith"});
+insert into dataset testds({"id":124,"fname":"Bob","lname":"Jones"});
+insert into dataset testds({"id":125,"fname":"Mike","lname":"Carey"});
+insert into dataset testds({"id":126,"fname":"Chen","lname":"Li"});
+insert into dataset testds({"id":121,"fname":"Young Seok","lname":"Kim"});
+insert into dataset testds({"id":122,"fname":"Alex","lname":"Behm"});
+insert into dataset testds({"id":127,"fname":"Raman","lname":"Grover"});
+insert into dataset testds({"id":128,"fname":"Yingyi","lname":"Bu"});
+insert into dataset testds({"id":129,"fname":"Vinayak","lname":"Borkar"});
+
+write output to nc1:"rttest/string_strconcat01.adm";
+
+for $l in dataset('testds')
+order by $l.id
+return { "Full Name": string-concat([$l.fname,$l.lname]) }
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/strconcat02.aql b/asterix-app/src/test/resources/runtimets/queries/string/strconcat02.aql
new file mode 100644
index 0000000..4991bde
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/strconcat02.aql
@@ -0,0 +1,11 @@
+/*
+ * Description    : Test string-concat([string]) function.
+ * Success        : Yes
+ * Date           : 16th April 2012
+ */
+
+
+write output to nc1:"rttest/string_strconcat02.adm";
+
+for $a in [string-concat([codepoint-to-string(string-to-codepoint("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789")),codepoint-to-string(string-to-codepoint("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789")),codepoint-to-string(string-to-codepoint("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"))]),string-concat([" ","a","b","  ","c","d","e","f","g","p","o","q","r","s","t"," "]),string-concat(["This is a test","and all tests must pass","and life is good..."])]
+return $a
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/strlen02.aql b/asterix-app/src/test/resources/runtimets/queries/string/strlen02.aql
new file mode 100644
index 0000000..852570f
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/strlen02.aql
@@ -0,0 +1,27 @@
+/*
+ * Description    : Test string-length(string) function 
+ * Success        : Yes
+ * Date           : 19th April 2012
+ */
+
+
+/*
+for $a in [ string-length("abcdefghijklmnopqrstu"),
+string-length("ABCDEFGHIJKLMNOPQRSTU"),
+string-length("abcdEFGHijklMNOPqrstu"),
+string-length("abcd EFGH ijkl MNOP qrstu"),
+string-length("   Hello World    !!!!....:-)"),
+string-length(string-concat(["test string to","concatenate"])),
+string-length("~!@#$%^&*()_+{}:?<>/.,';`][\")]
+return $a
+*/
+
+write output to nc1:"rttest/string_strlen02.adm";
+
+for $a in [ string-length("abcdefghijklmnopqrstu"),
+string-length("ABCDEFGHIJKLMNOPQRSTU"),
+string-length("abcdEFGHijklMNOPqrstu"),
+string-length("abcd EFGH ijkl MNOP qrstu"),
+string-length("   Hello World    !!!!....:-)"),
+string-length("~!@#$%^&*()_+{}:?<>/.,';`][\")]
+return $a
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/strlen03.aql b/asterix-app/src/test/resources/runtimets/queries/string/strlen03.aql
new file mode 100644
index 0000000..bba2a7f
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/strlen03.aql
@@ -0,0 +1,37 @@
+/*
+ * Description    : Test string-length(string) function 
+ * Expected Res   : Success
+ * Date           : 19th April 2012
+ */
+
+
+// Create internal dataset, insert string data and pass the string attribute to string-length function, and verify results.
+
+drop dataverse test if exists;
+create dataverse test;
+use dataverse test;
+
+create type TestType as {
+name:string
+}
+
+create dataset testds(TestType) partitioned by key name;
+
+insert into dataset testds({"name":"Maradona"});
+insert into dataset testds({"name":"Pele"});
+insert into dataset testds({"name":"Roberto Baggio"});
+insert into dataset testds({"name":"Beckham David"});
+insert into dataset testds({"name":"Rooney"});
+insert into dataset testds({"name":"Ronaldinho"});
+insert into dataset testds({"name":"Ronaldo"});
+insert into dataset testds({"name":"Zinadine Zidane"});
+insert into dataset testds({"name":"Cristiano Ronaldo"});
+insert into dataset testds({"name":"Messi"});
+insert into dataset testds({"name":"Tevez"});
+insert into dataset testds({"name":"Henry"});
+
+write output to nc1:"rttest/string_strlen03.adm";
+
+for $l in dataset('testds')
+order by $l.name
+return string-length($l.name)
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/strtocpt01.aql b/asterix-app/src/test/resources/runtimets/queries/string/strtocpt01.aql
new file mode 100644
index 0000000..fdbf014
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/strtocpt01.aql
@@ -0,0 +1,10 @@
+/*
+ * Description  : Test string to codepoint function with valid inputs
+ * Expected Res : Success
+ * Date         : 7th Aug 2012
+ */
+
+write output to nc1:"rttest/string_strtocpt01.adm";
+
+let $x := "ABCDEFGHIJKLMNOPQRSTUVWXYZ-01234567890"
+return string-to-codepoint($x)
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/strtocpt02.aql b/asterix-app/src/test/resources/runtimets/queries/string/strtocpt02.aql
new file mode 100644
index 0000000..b203f6d
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/strtocpt02.aql
@@ -0,0 +1,10 @@
+/*
+ * Description  : Test string to codepoint function with special characters 
+ * Expected Res : Success
+ * Date         : 7th Aug 2012
+ */
+
+write output to nc1:"rttest/string_strtocpt02.adm";
+
+let $x := "\"'-=_+|\,./<>?:;~`"
+return string-to-codepoint($x)
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/strtocpt03.aql b/asterix-app/src/test/resources/runtimets/queries/string/strtocpt03.aql
new file mode 100644
index 0000000..6daf0fe
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/strtocpt03.aql
@@ -0,0 +1,10 @@
+/*
+ * Description  : Test string to codepoint function with special characters 
+ * Expected Res : Success
+ * Date         : 7th Aug 2012
+ */
+
+write output to nc1:"rttest/string_strtocpt03.adm";
+
+let $x := "!@#$%^&*()"
+return string-to-codepoint($x)
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/substr01.aql b/asterix-app/src/test/resources/runtimets/queries/string/substr01.aql
new file mode 100644
index 0000000..791e7c0
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/substr01.aql
@@ -0,0 +1,30 @@
+/*
+ * Testcase Name  : substr01.aql
+ * Description    : Test substring2(string,position) built in function.
+ * Success        : Yes
+ * Date           : 18th April 2012
+ */
+
+write output to nc1:"rttest/string_substr01.adm";
+
+let $str1:="Hello World"
+let $str2:=substring2($str1,10)
+
+let $str3:="This is a test string"
+let $str4:=substring2($str3,21)
+
+let $str5:="This is a test string"
+let $str6:=substring2($str5,22)
+
+let $str7:="This is a test string"
+let $str8:=substring2($str7,0)
+
+let $str9:="This is a test string"
+let $str10:=substring2($str9,-1)
+
+let $str11:="This is a test string"
+let $str12:="This is a another test string"
+let $str13:=substring2(string-concat([$str11,$str12]),21)
+
+let $str14:=substring2("UC Irvine",string-length("UC Irvine")/2)
+return { "str2":$str2,"str4":$str4,"str6":$str6,"str8":$str8,"str10":$str10,"str13":$str13,"str14":$str14}
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/substr04.aql b/asterix-app/src/test/resources/runtimets/queries/string/substr04.aql
new file mode 100644
index 0000000..880499c
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/substr04.aql
@@ -0,0 +1,21 @@
+/*
+ * Testcase Name  : substr04.aql
+ * Description    : Test substring2(string,position,position) built in function.
+ * Success        : Yes
+ * Date           : 18th April 2012
+ */
+
+write output to nc1:"rttest/string_substr04.adm";
+
+for $a in [ substring2("hello world",7,11),
+substring2("hello world",1,11),
+substring2("hello world",3,7),
+substring2("ABCD",3,6),
+substring2("ABCD",0,4),
+substring2("UC Irvine",4,string-length("UC Irvine")),
+substring2("UC Irvine",0,string-length("UC Irvine")),
+substring2("UC Irvine",1,string-length("UC Irvine")),
+substring2(substring2("UC Irvine",4),0,string-length("Irvine")),
+substring2(substring2("UC Irvine",4),0,(string-length("Irvine")/2))
+]
+return $a
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/substr05.aql b/asterix-app/src/test/resources/runtimets/queries/string/substr05.aql
new file mode 100644
index 0000000..fbdcba4
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/substr05.aql
@@ -0,0 +1,33 @@
+/*
+ * Testcase Name  : substr05.aql
+ * Description    : Test substring2(string,position,position) built in function.
+ * Success        : Yes
+ * Date           : 19th April 2012
+ */
+
+// To test substring2 function with string data stored in an internal dataset.
+
+drop dataverse test if exists;
+create dataverse test;
+use dataverse test;
+
+create type TestType as open {
+name : string
+}
+
+create dataset testdst(TestType) partitioned by key name;
+
+insert into dataset testdst({"name":"UC Berkeley"});
+insert into dataset testdst({"name":"UC Irvine"});
+insert into dataset testdst({"name":"UC LA"});
+insert into dataset testdst({"name":"UC Riverside"});
+insert into dataset testdst({"name":"UC San Diego"});
+insert into dataset testdst({"name":"UC Santa Barbara"});
+insert into dataset testdst({"name":"UT Austin "});
+insert into dataset testdst({"name":"UT Dallas"});
+
+write output to nc1:"rttest/string_substr05.adm";
+
+for $a in dataset('testdst')
+order by $a.name
+return substring2($a.name,4,string-length($a.name));
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/substr06.aql b/asterix-app/src/test/resources/runtimets/queries/string/substr06.aql
new file mode 100644
index 0000000..82d21c2
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/substr06.aql
@@ -0,0 +1,32 @@
+/*
+ * Description    : Test substring2(string,position) built in function.
+ * Success        : Yes
+ * Date           : 19th April 2012
+ */
+
+// To test substring function with string data stored in an internal dataset.
+
+drop dataverse test if exists;
+create dataverse test;
+use dataverse test;
+
+create type TestType as open {
+name : string
+}
+
+create dataset testdst(TestType) partitioned by key name;
+
+insert into dataset testdst({"name":"UC Berkeley"});
+insert into dataset testdst({"name":"UC Irvine"});
+insert into dataset testdst({"name":"UC LA"});
+insert into dataset testdst({"name":"UC Riverside"});
+insert into dataset testdst({"name":"UC San Diego"});
+insert into dataset testdst({"name":"UC Santa Barbara"});
+insert into dataset testdst({"name":"UT Austin "});
+insert into dataset testdst({"name":"UT Dallas"});
+
+write output to nc1:"rttest/string_substr06.adm";
+
+for $a in dataset('testdst')
+order by $a.name
+return substring2($a.name,4);
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/toLowerCase02.aql b/asterix-app/src/test/resources/runtimets/queries/string/toLowerCase02.aql
new file mode 100644
index 0000000..2c16e01
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/toLowerCase02.aql
@@ -0,0 +1,23 @@
+/*
+ * Testcase Name : toLowerCas02.aql
+ * Description   : Test lowercase(string) function
+ *               : Positive tests
+ * Success       : Yes
+ * Date          : 19th April 2012
+ */
+
+write output to nc1:"rttest/string_toLowerCase02.adm";
+
+for $a in [lowercase("a   b  c  d  e  f  g"),
+    lowercase("A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"),
+    lowercase("abcdefghij KLMNOP qrstu VWXYZ"),
+    lowercase("abcdefghijklmnopqrstuvwxyz"),
+    lowercase("this is a test string"),
+    lowercase("smaller string"),
+    lowercase("ABCD"),
+    lowercase("AbCdEfGhIjKlMnOpQrStUvWxYz"),
+    lowercase("abcdefghijkABCDEFGHIJK"),
+    lowercase("HIJKLMNOPQRhijklmnopqr"),
+    lowercase(substring2("ABCDEFghIJKLMnopQRSTuvwxYZ01234",0)),
+    lowercase("A33B2CD1EF78GHijk123LMNopqrstUVW3x2y01035Z")]
+return $a
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/toLowerCase03.aql b/asterix-app/src/test/resources/runtimets/queries/string/toLowerCase03.aql
new file mode 100644
index 0000000..411dacf
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/toLowerCase03.aql
@@ -0,0 +1,39 @@
+/*
+ * Test case Name : toLowerCas03.aql
+ * Description    : Test lowercase(string) function 
+ *                : This test case covers Positive tests
+ * Success        : Yes
+ * Date           : 19th April 2012
+ */
+
+
+// Create internal dataset, insert string data and pass the string attribute to lowercase function, and verify results.
+
+drop dataverse test if exists;
+create dataverse test;
+use dataverse test;
+
+create type TestType as {
+name:string
+}
+
+create dataset testds(TestType) partitioned by key name;
+
+insert into dataset testds({"name":"Maradona"});
+insert into dataset testds({"name":"Pele"});
+insert into dataset testds({"name":"Roberto Baggio"});
+insert into dataset testds({"name":"Beckham David"});
+insert into dataset testds({"name":"Rooney"});
+insert into dataset testds({"name":"Ronaldinho"});
+insert into dataset testds({"name":"Ronaldo"});
+insert into dataset testds({"name":"Zinadine Zidane"});
+insert into dataset testds({"name":"Cristiano Ronaldo"});
+insert into dataset testds({"name":"Messi"});
+insert into dataset testds({"name":"Tevez"});
+insert into dataset testds({"name":"Henry"});
+
+write output to nc1:"rttest/string_toLowerCase03.adm";
+
+for $l in dataset('testds')
+order by $l.name
+return lowercase($l.name)
diff --git a/asterix-app/src/test/resources/runtimets/queries/string/toLowerCase04.aql b/asterix-app/src/test/resources/runtimets/queries/string/toLowerCase04.aql
new file mode 100644
index 0000000..3d99aab
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/string/toLowerCase04.aql
@@ -0,0 +1,12 @@
+/*
+ * Test case Name : toLowerCas04.aql
+ * Description    : Test lowercase(string) function 
+ *                : Convert all upper case english alphabets A-Z to lower case a-z
+ * Success        : Yes
+ * Date           : 19th April 2012
+ */
+
+write output to nc1:"rttest/string_toLowerCase04.adm";
+
+for $a in[lowercase(codepoint-to-string([0065,0066,0067,0068,0069,0070,0071,0072,0073,0074,0075,0076,0077,0078,0079,0080,0081,0082,0083,0084,0085,0086,0087,0088,0089,0090])),lowercase(string-concat(["ABCDEFGHIJKLMNOP","QRSTUVWXYZ"]))]
+return $a
diff --git a/asterix-app/src/test/resources/runtimets/results/flwor/ret-01.adm b/asterix-app/src/test/resources/runtimets/results/flwor/ret-01.adm
new file mode 100644
index 0000000..930236d
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/flwor/ret-01.adm
@@ -0,0 +1,8 @@
+3
+6
+6
+5
+5
+5
+7
+6
diff --git a/asterix-app/src/test/resources/runtimets/results/flwor/ret-02.adm b/asterix-app/src/test/resources/runtimets/results/flwor/ret-02.adm
new file mode 100644
index 0000000..f38fb92
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/flwor/ret-02.adm
@@ -0,0 +1 @@
+"this is a test string"
diff --git a/asterix-app/src/test/resources/runtimets/results/flwor/ret-03.adm b/asterix-app/src/test/resources/runtimets/results/flwor/ret-03.adm
new file mode 100644
index 0000000..f42d61b
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/flwor/ret-03.adm
@@ -0,0 +1 @@
+"YES"
diff --git a/asterix-app/src/test/resources/runtimets/results/flwor/ret-04.adm b/asterix-app/src/test/resources/runtimets/results/flwor/ret-04.adm
new file mode 100644
index 0000000..e236a3d
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/flwor/ret-04.adm
@@ -0,0 +1 @@
+"GREATER"
diff --git a/asterix-app/src/test/resources/runtimets/results/flwor/ret-05.adm b/asterix-app/src/test/resources/runtimets/results/flwor/ret-05.adm
new file mode 100644
index 0000000..63aa2a3
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/flwor/ret-05.adm
@@ -0,0 +1 @@
+[ [ 1, 2, 3 ], [ 4, 5, 6, 7 ], [ 8, 9 ], [ 0, 4, 5 ], [ 6, 7, 1 ], [ 2, 3, 4 ], [ 5, 6, 7 ], [ 8, 9, 0 ] ]
diff --git a/asterix-app/src/test/resources/runtimets/results/flwor/ret-06.adm b/asterix-app/src/test/resources/runtimets/results/flwor/ret-06.adm
new file mode 100644
index 0000000..438d43b
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/flwor/ret-06.adm
@@ -0,0 +1 @@
+{{ "Welcome", "UCI", "Anteater", "DBH", "ICS" }}
diff --git a/asterix-app/src/test/resources/runtimets/results/flwor/ret-07.adm b/asterix-app/src/test/resources/runtimets/results/flwor/ret-07.adm
new file mode 100644
index 0000000..6578fd5
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/flwor/ret-07.adm
@@ -0,0 +1 @@
+{  }
diff --git a/asterix-app/src/test/resources/runtimets/results/flwor/ret-08.adm b/asterix-app/src/test/resources/runtimets/results/flwor/ret-08.adm
new file mode 100644
index 0000000..bb40282
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/flwor/ret-08.adm
@@ -0,0 +1,8 @@
+{ "a": 1, "inner-for": [ 11, 22, 33, 44, 55, 66, 77, 88 ] }
+{ "a": 2, "inner-for": [ 11, 22, 33, 44, 55, 66, 77, 88 ] }
+{ "a": 3, "inner-for": [ 11, 22, 33, 44, 55, 66, 77, 88 ] }
+{ "a": 4, "inner-for": [ 11, 22, 33, 44, 55, 66, 77, 88 ] }
+{ "a": 5, "inner-for": [ 11, 22, 33, 44, 55, 66, 77, 88 ] }
+{ "a": 6, "inner-for": [ 11, 22, 33, 44, 55, 66, 77, 88 ] }
+{ "a": 7, "inner-for": [ 11, 22, 33, 44, 55, 66, 77, 88 ] }
+{ "a": 8, "inner-for": [ 11, 22, 33, 44, 55, 66, 77, 88 ] }
diff --git a/asterix-app/src/test/resources/runtimets/results/flwor/ret-09.adm b/asterix-app/src/test/resources/runtimets/results/flwor/ret-09.adm
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/flwor/ret-09.adm
@@ -0,0 +1 @@
+1
diff --git a/asterix-app/src/test/resources/runtimets/results/flwor/ret-10.adm b/asterix-app/src/test/resources/runtimets/results/flwor/ret-10.adm
new file mode 100644
index 0000000..e53eaa1
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/flwor/ret-10.adm
@@ -0,0 +1,10 @@
+1
+2
+3
+4
+5
+6
+7
+8
+9
+0
diff --git a/asterix-app/src/test/resources/runtimets/results/flwor/ret-11.adm b/asterix-app/src/test/resources/runtimets/results/flwor/ret-11.adm
new file mode 100644
index 0000000..4fd875a
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/flwor/ret-11.adm
@@ -0,0 +1,9 @@
+2
+3
+4
+5
+6
+7
+8
+9
+10
diff --git a/asterix-app/src/test/resources/runtimets/results/flwor/ret-12.adm b/asterix-app/src/test/resources/runtimets/results/flwor/ret-12.adm
new file mode 100644
index 0000000..1000f90
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/flwor/ret-12.adm
@@ -0,0 +1,9 @@
+0
+1
+2
+3
+4
+5
+6
+7
+8
diff --git a/asterix-app/src/test/resources/runtimets/results/flwor/ret-13.adm b/asterix-app/src/test/resources/runtimets/results/flwor/ret-13.adm
new file mode 100644
index 0000000..eb62fa2
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/flwor/ret-13.adm
@@ -0,0 +1,9 @@
+9
+18
+27
+36
+45
+54
+63
+72
+81
diff --git a/asterix-app/src/test/resources/runtimets/results/flwor/ret-14.adm b/asterix-app/src/test/resources/runtimets/results/flwor/ret-14.adm
new file mode 100644
index 0000000..734a18a
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/flwor/ret-14.adm
@@ -0,0 +1 @@
+{ "name": "John Doe", "age": 26, "sex": "M", "salary": 50000, "dept": "HR" }
diff --git a/asterix-app/src/test/resources/runtimets/results/flwor/ret-15.adm b/asterix-app/src/test/resources/runtimets/results/flwor/ret-15.adm
new file mode 100644
index 0000000..c508d53
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/flwor/ret-15.adm
@@ -0,0 +1 @@
+false
diff --git a/asterix-app/src/test/resources/runtimets/results/flwor/ret-16.adm b/asterix-app/src/test/resources/runtimets/results/flwor/ret-16.adm
new file mode 100644
index 0000000..27ba77d
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/flwor/ret-16.adm
@@ -0,0 +1 @@
+true
diff --git a/asterix-app/src/test/resources/runtimets/results/flwor/ret-17.adm b/asterix-app/src/test/resources/runtimets/results/flwor/ret-17.adm
new file mode 100644
index 0000000..27ba77d
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/flwor/ret-17.adm
@@ -0,0 +1 @@
+true
diff --git a/asterix-app/src/test/resources/runtimets/results/flwor/ret-18.adm b/asterix-app/src/test/resources/runtimets/results/flwor/ret-18.adm
new file mode 100644
index 0000000..7f8f011
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/flwor/ret-18.adm
@@ -0,0 +1 @@
+7
diff --git a/asterix-app/src/test/resources/runtimets/results/index-selection/btree-index-composite-key.adm b/asterix-app/src/test/resources/runtimets/results/index-selection/btree-index-composite-key.adm
new file mode 100644
index 0000000..cebf05b
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/index-selection/btree-index-composite-key.adm
@@ -0,0 +1 @@
+{ "id": 881, "fname": "Julio", "lname": "Isa", "age": 38, "dept": "Sales" }
diff --git a/asterix-app/src/test/resources/runtimets/results/string/cpttostr01.adm b/asterix-app/src/test/resources/runtimets/results/string/cpttostr01.adm
new file mode 100644
index 0000000..041e3f6
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/cpttostr01.adm
@@ -0,0 +1 @@
+"0-9,A-Z"
diff --git a/asterix-app/src/test/resources/runtimets/results/string/cpttostr02.adm b/asterix-app/src/test/resources/runtimets/results/string/cpttostr02.adm
new file mode 100644
index 0000000..98b52bd
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/cpttostr02.adm
@@ -0,0 +1 @@
+{ "c1": "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "c2": "abcdefghijklmnopqrstuvwxyz", "c3": "!\"#$%&'()*+,-./01234567?@" }
diff --git a/asterix-app/src/test/resources/runtimets/results/string/cpttostr04.adm b/asterix-app/src/test/resources/runtimets/results/string/cpttostr04.adm
new file mode 100644
index 0000000..8dbc300
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/cpttostr04.adm
@@ -0,0 +1 @@
+{ "c1": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" }
diff --git a/asterix-app/src/test/resources/runtimets/results/string/endwith02.adm b/asterix-app/src/test/resources/runtimets/results/string/endwith02.adm
new file mode 100644
index 0000000..913c84a
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/endwith02.adm
@@ -0,0 +1,6 @@
+false
+false
+true
+true
+true
+true
diff --git a/asterix-app/src/test/resources/runtimets/results/string/endwith03.adm b/asterix-app/src/test/resources/runtimets/results/string/endwith03.adm
new file mode 100644
index 0000000..c90ce70
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/endwith03.adm
@@ -0,0 +1,4 @@
+{ "name": "I am Jones" }
+{ "name": "Jim Jones" }
+{ "name": "Marian Jones" }
+{ "name": "Phil Jones" }
diff --git a/asterix-app/src/test/resources/runtimets/results/string/matches02.adm b/asterix-app/src/test/resources/runtimets/results/string/matches02.adm
new file mode 100644
index 0000000..b02ee08
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/matches02.adm
@@ -0,0 +1 @@
+{ "c3": true, "c4": true, "c5": true, "c6": true, "c7": true, "c8": true, "c9": false, "c10": true, "c11": true, "c12": false }
diff --git a/asterix-app/src/test/resources/runtimets/results/string/matches03.adm b/asterix-app/src/test/resources/runtimets/results/string/matches03.adm
new file mode 100644
index 0000000..aa3f9c8
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/matches03.adm
@@ -0,0 +1,13 @@
+true
+true
+false
+false
+true
+true
+true
+false
+true
+true
+false
+false
+true
diff --git a/asterix-app/src/test/resources/runtimets/results/string/matches04.adm b/asterix-app/src/test/resources/runtimets/results/string/matches04.adm
new file mode 100644
index 0000000..814ccfe
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/matches04.adm
@@ -0,0 +1,7 @@
+true
+true
+true
+true
+true
+true
+true
diff --git a/asterix-app/src/test/resources/runtimets/results/string/matches05.adm b/asterix-app/src/test/resources/runtimets/results/string/matches05.adm
new file mode 100644
index 0000000..f2c3846
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/matches05.adm
@@ -0,0 +1,4 @@
+{ "fname": "Test", "lname": "Test", "id": 123 }
+{ "fname": "Testa", "lname": "Test", "id": 124 }
+{ "fname": "Test1", "lname": "Test1", "id": 125 }
+{ "fname": "Test2", "lname": "Test2", "id": 127 }
diff --git a/asterix-app/src/test/resources/runtimets/results/string/matches06.adm b/asterix-app/src/test/resources/runtimets/results/string/matches06.adm
new file mode 100644
index 0000000..3252af9
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/matches06.adm
@@ -0,0 +1,15 @@
+true
+false
+true
+true
+true
+false
+true
+false
+false
+true
+true
+true
+true
+false
+true
diff --git a/asterix-app/src/test/resources/runtimets/results/string/matches11.adm b/asterix-app/src/test/resources/runtimets/results/string/matches11.adm
new file mode 100644
index 0000000..440a996
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/matches11.adm
@@ -0,0 +1,5 @@
+false
+false
+false
+false
+false
diff --git a/asterix-app/src/test/resources/runtimets/results/string/startwith02.adm b/asterix-app/src/test/resources/runtimets/results/string/startwith02.adm
new file mode 100644
index 0000000..39acf48
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/startwith02.adm
@@ -0,0 +1,14 @@
+true
+false
+true
+false
+false
+true
+true
+false
+true
+false
+true
+true
+false
+false
diff --git a/asterix-app/src/test/resources/runtimets/results/string/startwith03.adm b/asterix-app/src/test/resources/runtimets/results/string/startwith03.adm
new file mode 100644
index 0000000..ccb9311
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/startwith03.adm
@@ -0,0 +1,5 @@
+{ "name": "John Doe" }
+{ "name": "John Smith" }
+{ "name": "John Wayne" }
+{ "name": "Johnny Walker" }
+{ "name": "Johnson Ben" }
diff --git a/asterix-app/src/test/resources/runtimets/results/string/strconcat01.adm b/asterix-app/src/test/resources/runtimets/results/string/strconcat01.adm
new file mode 100644
index 0000000..b597701
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/strconcat01.adm
@@ -0,0 +1,9 @@
+{ "Full Name": "Young SeokKim" }
+{ "Full Name": "AlexBehm" }
+{ "Full Name": "JohnSmith" }
+{ "Full Name": "BobJones" }
+{ "Full Name": "MikeCarey" }
+{ "Full Name": "ChenLi" }
+{ "Full Name": "RamanGrover" }
+{ "Full Name": "YingyiBu" }
+{ "Full Name": "VinayakBorkar" }
diff --git a/asterix-app/src/test/resources/runtimets/results/string/strconcat02.adm b/asterix-app/src/test/resources/runtimets/results/string/strconcat02.adm
new file mode 100644
index 0000000..38f2315
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/strconcat02.adm
@@ -0,0 +1,3 @@
+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
+" ab  cdefgpoqrst "
+"This is a testand all tests must passand life is good..."
diff --git a/asterix-app/src/test/resources/runtimets/results/string/strlen02.adm b/asterix-app/src/test/resources/runtimets/results/string/strlen02.adm
new file mode 100644
index 0000000..46e26f6
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/strlen02.adm
@@ -0,0 +1,6 @@
+21
+21
+21
+25
+29
+28
diff --git a/asterix-app/src/test/resources/runtimets/results/string/strlen03.adm b/asterix-app/src/test/resources/runtimets/results/string/strlen03.adm
new file mode 100644
index 0000000..368bdb9
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/strlen03.adm
@@ -0,0 +1,12 @@
+13
+17
+5
+8
+5
+4
+14
+10
+7
+6
+5
+15
diff --git a/asterix-app/src/test/resources/runtimets/results/string/strtocpt01.adm b/asterix-app/src/test/resources/runtimets/results/string/strtocpt01.adm
new file mode 100644
index 0000000..3308db7
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/strtocpt01.adm
@@ -0,0 +1 @@
+[ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 45, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48 ]
diff --git a/asterix-app/src/test/resources/runtimets/results/string/strtocpt02.adm b/asterix-app/src/test/resources/runtimets/results/string/strtocpt02.adm
new file mode 100644
index 0000000..30602ee
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/strtocpt02.adm
@@ -0,0 +1 @@
+[ 34, 39, 45, 61, 95, 43, 124, 92, 44, 46, 47, 60, 62, 63, 58, 59, 126, 96 ]
diff --git a/asterix-app/src/test/resources/runtimets/results/string/strtocpt03.adm b/asterix-app/src/test/resources/runtimets/results/string/strtocpt03.adm
new file mode 100644
index 0000000..9f30023
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/strtocpt03.adm
@@ -0,0 +1 @@
+[ 33, 64, 35, 36, 37, 94, 38, 42, 40, 41 ]
diff --git a/asterix-app/src/test/resources/runtimets/results/string/substr01.adm b/asterix-app/src/test/resources/runtimets/results/string/substr01.adm
new file mode 100644
index 0000000..ac9dedd
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/substr01.adm
@@ -0,0 +1 @@
+{ "str2": "ld", "str4": "g", "str6": "", "str8": "This is a test string", "str10": "This is a test string", "str13": "gThis is a another test string", "str14": "Irvine" }
diff --git a/asterix-app/src/test/resources/runtimets/results/string/substr04.adm b/asterix-app/src/test/resources/runtimets/results/string/substr04.adm
new file mode 100644
index 0000000..fcd3396
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/substr04.adm
@@ -0,0 +1,10 @@
+"world"
+"hello world"
+"llo world"
+"CD"
+"ABCD"
+"Irvine"
+"UC Irvine"
+"UC Irvine"
+"Irvine"
+"Irvine"
diff --git a/asterix-app/src/test/resources/runtimets/results/string/substr05.adm b/asterix-app/src/test/resources/runtimets/results/string/substr05.adm
new file mode 100644
index 0000000..52a2718
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/substr05.adm
@@ -0,0 +1,8 @@
+"Berkeley"
+"Irvine"
+"LA"
+"Riverside"
+"San Diego"
+"Santa Barbara"
+"Austin "
+"Dallas"
diff --git a/asterix-app/src/test/resources/runtimets/results/string/substr06.adm b/asterix-app/src/test/resources/runtimets/results/string/substr06.adm
new file mode 100644
index 0000000..52a2718
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/substr06.adm
@@ -0,0 +1,8 @@
+"Berkeley"
+"Irvine"
+"LA"
+"Riverside"
+"San Diego"
+"Santa Barbara"
+"Austin "
+"Dallas"
diff --git a/asterix-app/src/test/resources/runtimets/results/string/toLowerCase02.adm b/asterix-app/src/test/resources/runtimets/results/string/toLowerCase02.adm
new file mode 100644
index 0000000..65dfed7
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/toLowerCase02.adm
@@ -0,0 +1,12 @@
+"a   b  c  d  e  f  g"
+"a b c d e f g h i j k l m n o p q r s t u v w x y z"
+"abcdefghij klmnop qrstu vwxyz"
+"abcdefghijklmnopqrstuvwxyz"
+"this is a test string"
+"smaller string"
+"abcd"
+"abcdefghijklmnopqrstuvwxyz"
+"abcdefghijkabcdefghijk"
+"hijklmnopqrhijklmnopqr"
+"abcdefghijklmnopqrstuvwxyz01234"
+"a33b2cd1ef78ghijk123lmnopqrstuvw3x2y01035z"
diff --git a/asterix-app/src/test/resources/runtimets/results/string/toLowerCase03.adm b/asterix-app/src/test/resources/runtimets/results/string/toLowerCase03.adm
new file mode 100644
index 0000000..b6d7e8a
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/toLowerCase03.adm
@@ -0,0 +1,12 @@
+"beckham david"
+"cristiano ronaldo"
+"henry"
+"maradona"
+"messi"
+"pele"
+"roberto baggio"
+"ronaldinho"
+"ronaldo"
+"rooney"
+"tevez"
+"zinadine zidane"
diff --git a/asterix-app/src/test/resources/runtimets/results/string/toLowerCase04.adm b/asterix-app/src/test/resources/runtimets/results/string/toLowerCase04.adm
new file mode 100644
index 0000000..2b33ad2
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/string/toLowerCase04.adm
@@ -0,0 +1,2 @@
+"abcdefghijklmnopqrstuvwxyz"
+"abcdefghijklmnopqrstuvwxyz"