checkpoint #1: support offset-based-indexing-unnest
diff --git a/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/base/RuleCollections.java b/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/base/RuleCollections.java
index 70ed7ef..5d52e7c 100644
--- a/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/base/RuleCollections.java
+++ b/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/base/RuleCollections.java
@@ -242,7 +242,7 @@
physicalRewritesAllLevels.add(new EnforceStructuralPropertiesRule());
physicalRewritesAllLevels.add(new IntroHashPartitionMergeExchange());
physicalRewritesAllLevels.add(new SetClosedRecordConstructorsRule());
- physicalRewritesAllLevels.add(new PullPositionalVariableFromUnnestRule());
+ //physicalRewritesAllLevels.add(new PullPositionalVariableFromUnnestRule());
physicalRewritesAllLevels.add(new PushProjectDownRule());
physicalRewritesAllLevels.add(new InsertProjectBeforeUnionRule());
physicalRewritesAllLevels.add(new IntroduceMaterializationForInsertWithSelfScanRule());
diff --git a/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/UnnestToDataScanRule.java b/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/UnnestToDataScanRule.java
index 642ef22..7ca6e3c 100644
--- a/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/UnnestToDataScanRule.java
+++ b/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/UnnestToDataScanRule.java
@@ -73,6 +73,7 @@
if (fid.equals(AsterixBuiltinFunctions.DATASET)) {
if (unnest.getPositionalVariable() != null) {
+ // TODO remove this after enabling the support of positional variables in data scan
throw new AlgebricksException("No positional variables are allowed over datasets.");
}
ILogicalExpression expr = f.getArguments().get(0).getValue();
diff --git a/asterix-app/src/test/resources/runtimets/queries/flwor/at01/at01.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/flwor/at01/at01.1.ddl.aql
new file mode 100644
index 0000000..03517b5
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/flwor/at01/at01.1.ddl.aql
@@ -0,0 +1,25 @@
+/*
+ * Description : Test for clause of the position variable in FLWOR expression
+ * Expected Result : Success
+ * Date : 07/18/2013
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+
+use dataverse test;
+
+create type OrderType as closed {
+ o_orderkey: int32,
+ o_custkey: int32,
+ o_orderstatus: string,
+ o_totalprice: double,
+ o_orderdate: string,
+ o_orderpriority: string,
+ o_clerk: string,
+ o_shippriority: int32,
+ o_comment: string
+}
+
+create dataset Orders(OrderType)
+ primary key o_orderkey;
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/queries/flwor/at01/at01.2.update.aql b/asterix-app/src/test/resources/runtimets/queries/flwor/at01/at01.2.update.aql
new file mode 100644
index 0000000..928fc52
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/flwor/at01/at01.2.update.aql
@@ -0,0 +1,12 @@
+/*
+ * Description : Test for clause of the position variable in FLWOR expression
+ * Expected Result : Success
+ * Date : 07/18/2013
+ */
+
+use dataverse test;
+
+load dataset Orders
+using "edu.uci.ics.asterix.external.dataset.adapter.NCFileSystemAdapter"
+(("path"="nc1://data/tpch0.001/orders-part1.tbl,
+nc2://data/tpch0.001/orders-part2.tbl"),("format"="delimited-text"),("delimiter"="|")) pre-sorted;
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/queries/flwor/at01/at01.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/flwor/at01/at01.3.query.aql
new file mode 100644
index 0000000..13c367f
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/queries/flwor/at01/at01.3.query.aql
@@ -0,0 +1,17 @@
+/*
+ * Description : Test for clause of the position variable in FLWOR expression
+ * Expected Result : Success
+ * Date : 07/18/2013
+ */
+
+use dataverse test;
+
+/*
+for $i in dataset('Orders')
+let $i1 := $i.o_orderkey
+let $i2 := $i.o_custkey
+return {"item1": $i1, "item2": $i2}
+*/
+
+for $i at $p in ['a', 'b', 'c', 'd']
+return { "pos": $p, "items": $i }
diff --git a/asterix-app/src/test/resources/runtimets/results/misc/tid_01/tid_01.1.adm b/asterix-app/src/test/resources/runtimets/results/misc/tid_01/tid_01.1.adm
index c55eb7a..5f5fbe7 100644
--- a/asterix-app/src/test/resources/runtimets/results/misc/tid_01/tid_01.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/misc/tid_01/tid_01.1.adm
@@ -1,3 +1,3 @@
-0
1
-2
\ No newline at end of file
+2
+3
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/testsuite.xml b/asterix-app/src/test/resources/runtimets/testsuite.xml
index 5c56084..f69698c 100644
--- a/asterix-app/src/test/resources/runtimets/testsuite.xml
+++ b/asterix-app/src/test/resources/runtimets/testsuite.xml
@@ -13,6 +13,13 @@
! limitations under the License.
!-->
<test-suite xmlns="urn:xml.testframework.asterix.ics.uci.edu" ResultOffsetPath="results" QueryOffsetPath="queries" QueryFileExtension=".aql">
+ <test-group name="flwor">
+ <test-case FilePath="flwor">
+ <compilation-unit name="at01">
+ <output-dir compare="Text">at01</output-dir>
+ </compilation-unit>
+ </test-case>
+ </test-group>
<test-group name="aggregate">
<test-case FilePath="aggregate">
<compilation-unit name="agg_null">