diff --git a/asterix-app/src/test/resources/optimizerts/queries/query-issue697.aql b/asterix-app/src/test/resources/optimizerts/queries/query-issue697.aql
new file mode 100644
index 0000000..1442482
--- /dev/null
+++ b/asterix-app/src/test/resources/optimizerts/queries/query-issue697.aql
@@ -0,0 +1,27 @@
+/*
+ * Description     : This test case is to verify the fix for issue697
+ * https://code.google.com/p/asterixdb/issues/detail?id=697
+ * Expected Result : Success
+ * Date            : 16th Nov. 2014
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+
+use dataverse test;
+
+create type TestType as closed {
+  key1: int32,
+  value: int32
+}
+
+create dataset test(TestType)
+  primary key key1;
+
+
+for $i in dataset("test")
+group by $aid := $i.key1 with $i
+return {
+  "gid": $aid,
+  "avg": avg(for $j in $i where not(is-null($j.value)) return $j.value)
+}
diff --git a/asterix-app/src/test/resources/optimizerts/queries/query-issue810-2.aql b/asterix-app/src/test/resources/optimizerts/queries/query-issue810-2.aql
new file mode 100644
index 0000000..aa60667
--- /dev/null
+++ b/asterix-app/src/test/resources/optimizerts/queries/query-issue810-2.aql
@@ -0,0 +1,54 @@
+/*
+ * Description  : This test case is to verify the fix for issue810
+ * https://code.google.com/p/asterixdb/issues/detail?id=810
+ * Expected Res : SUCCESS
+ * Date         : 24th Nov. 2014
+ */
+
+drop dataverse tpch if exists;
+create dataverse tpch;
+
+use dataverse tpch;
+
+create type LineItemType as closed {
+  l_orderkey: int32,
+  l_partkey: int32,
+  l_suppkey: int32,
+  l_linenumber: int32,
+  l_quantity: double,
+  l_extendedprice: double,
+  l_discount: double,
+  l_tax: double,
+  l_returnflag: string,
+  l_linestatus: string,
+  l_shipdate: string,
+  l_commitdate: string,
+  l_receiptdate: string,
+  l_shipinstruct: string,
+  l_shipmode: string,
+  l_comment: string
+}
+
+create dataset LineItem(LineItemType)
+  primary key l_orderkey, l_linenumber;
+
+
+for $l in dataset('LineItem')
+where $l.l_shipdate <= '1998-09-02'
+/*+ hash*/
+group by $l_returnflag := $l.l_returnflag,
+         $l_linestatus := $l.l_linestatus
+  with $l
+ let $expensives := for $i in $l where ($i.l_discount<=0.05) return $i.l_discount
+ let $cheaps := for $i in $l where ($i.l_discount>0.05) return $i
+ let $charges := for $i in $l return $i.l_extendedprice * (1 - $i.l_discount) * (1 + $i.l_tax)
+ let $disc_prices := for $i in $l return $i.l_extendedprice * (1 - $i.l_discount)
+order by $l_returnflag, $l_linestatus
+return {
+  "l_returnflag": $l_returnflag,
+  "l_linestatus": $l_linestatus,
+  "count_cheaps": count($cheaps),
+  "avg_expensive_discounts": avg($expensives),
+  "sum_disc_prices": sum($disc_prices),
+  "total_charges": sum($charges)
+}
diff --git a/asterix-app/src/test/resources/optimizerts/queries/query-issue810.aql b/asterix-app/src/test/resources/optimizerts/queries/query-issue810.aql
new file mode 100644
index 0000000..097a48b
--- /dev/null
+++ b/asterix-app/src/test/resources/optimizerts/queries/query-issue810.aql
@@ -0,0 +1,49 @@
+/*
+ * Description     : This test case is to verify the fix for issue810
+ * https://code.google.com/p/asterixdb/issues/detail?id=810
+ * Expected Result : Success
+ * Date            : 16th Nov. 2014
+ */
+
+drop dataverse tpch if exists;
+create dataverse tpch;
+
+use dataverse tpch;
+
+create type LineItemType as closed {
+  l_orderkey: int32,
+  l_partkey: int32,
+  l_suppkey: int32,
+  l_linenumber: int32,
+  l_quantity: double,
+  l_extendedprice: double,
+  l_discount: double,
+  l_tax: double,
+  l_returnflag: string,
+  l_linestatus: string,
+  l_shipdate: string,
+  l_commitdate: string,
+  l_receiptdate: string,
+  l_shipinstruct: string,
+  l_shipmode: string,
+  l_comment: string
+}
+
+create dataset LineItem(LineItemType)
+  primary key l_orderkey, l_linenumber;
+
+for $l in dataset('LineItem')
+where $l.l_shipdate <= '1998-09-02'
+/*+ hash*/
+group by $l_returnflag := $l.l_returnflag,
+         $l_linestatus := $l.l_linestatus
+  with $l
+ let $cheap := for $m in $l where ($m.l_discount>0.05) return $m
+ let $expensive := for $a in $l where ($a.l_discount<=0.05) return $a
+order by $l_returnflag, $l_linestatus
+return {
+  "l_returnflag": $l_returnflag,
+  "l_linestatus": $l_linestatus,
+  "count_cheaps": count($cheap),
+  "count_expensives": count($expensive)
+}
\ No newline at end of file
