You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by im...@apache.org on 2015/07/18 03:40:42 UTC

[5/9] incubator-asterixdb git commit: Adding introspection for getting record details.

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-app/src/test/resources/runtimets/results/records/get-record-fields/tiny-social-example/tiny-social-example.8.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/records/get-record-fields/tiny-social-example/tiny-social-example.8.adm b/asterix-app/src/test/resources/runtimets/results/records/get-record-fields/tiny-social-example/tiny-social-example.8.adm
new file mode 100644
index 0000000..7a1ca5d
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/records/get-record-fields/tiny-social-example/tiny-social-example.8.adm
@@ -0,0 +1,13 @@
+[ [ { "field-name": "tweetid", "field-type": "STRING", "is-open": false }, { "field-name": "user", "field-type": "RECORD", "is-open": false, "nested": [ { "field-name": "screen-name", "field-type": "STRING", "is-open": false }, { "field-name": "lang", "field-type": "STRING", "is-open": false }, { "field-name": "friends_count", "field-type": "INT64", "is-open": false }, { "field-name": "statuses_count", "field-type": "INT64", "is-open": false }, { "field-name": "name", "field-type": "STRING", "is-open": true }, { "field-name": "followers_count", "field-type": "INT64", "is-open": true } ] }, { "field-name": "sender-location", "field-type": "POINT", "is-open": false }, { "field-name": "send-time", "field-type": "DATETIME", "is-open": false }, { "field-name": "referred-topics", "field-type": "UNORDEREDLIST", "is-open": false, "list": [ { "field-type": "STRING" }, { "field-type": "STRING" } ] }, { "field-name": "message-text", "field-type": "STRING", "is-open": false } ]
+, [ { "field-name": "tweetid", "field-type": "STRING", "is-open": false }, { "field-name": "user", "field-type": "RECORD", "is-open": false, "nested": [ { "field-name": "screen-name", "field-type": "STRING", "is-open": false }, { "field-name": "lang", "field-type": "STRING", "is-open": false }, { "field-name": "friends_count", "field-type": "INT64", "is-open": false }, { "field-name": "statuses_count", "field-type": "INT64", "is-open": false }, { "field-name": "name", "field-type": "STRING", "is-open": true }, { "field-name": "followers_count", "field-type": "INT64", "is-open": true } ] }, { "field-name": "sender-location", "field-type": "POINT", "is-open": false }, { "field-name": "send-time", "field-type": "DATETIME", "is-open": false }, { "field-name": "referred-topics", "field-type": "UNORDEREDLIST", "is-open": false, "list": [ { "field-type": "STRING" }, { "field-type": "STRING" } ] }, { "field-name": "message-text", "field-type": "STRING", "is-open": false } ]
+, [ { "field-name": "tweetid", "field-type": "STRING", "is-open": false }, { "field-name": "user", "field-type": "RECORD", "is-open": false, "nested": [ { "field-name": "screen-name", "field-type": "STRING", "is-open": false }, { "field-name": "lang", "field-type": "STRING", "is-open": false }, { "field-name": "friends_count", "field-type": "INT64", "is-open": false }, { "field-name": "statuses_count", "field-type": "INT64", "is-open": false }, { "field-name": "name", "field-type": "STRING", "is-open": true }, { "field-name": "followers_count", "field-type": "INT64", "is-open": true } ] }, { "field-name": "sender-location", "field-type": "POINT", "is-open": false }, { "field-name": "send-time", "field-type": "DATETIME", "is-open": false }, { "field-name": "referred-topics", "field-type": "UNORDEREDLIST", "is-open": false, "list": [ { "field-type": "STRING" }, { "field-type": "STRING" } ] }, { "field-name": "message-text", "field-type": "STRING", "is-open": false } ]
+, [ { "field-name": "tweetid", "field-type": "STRING", "is-open": false }, { "field-name": "user", "field-type": "RECORD", "is-open": false, "nested": [ { "field-name": "screen-name", "field-type": "STRING", "is-open": false }, { "field-name": "lang", "field-type": "STRING", "is-open": false }, { "field-name": "friends_count", "field-type": "INT64", "is-open": false }, { "field-name": "statuses_count", "field-type": "INT64", "is-open": false }, { "field-name": "name", "field-type": "STRING", "is-open": true }, { "field-name": "followers_count", "field-type": "INT64", "is-open": true } ] }, { "field-name": "sender-location", "field-type": "POINT", "is-open": false }, { "field-name": "send-time", "field-type": "DATETIME", "is-open": false }, { "field-name": "referred-topics", "field-type": "UNORDEREDLIST", "is-open": false, "list": [ { "field-type": "STRING" }, { "field-type": "STRING" } ] }, { "field-name": "message-text", "field-type": "STRING", "is-open": false } ]
+, [ { "field-name": "tweetid", "field-type": "STRING", "is-open": false }, { "field-name": "user", "field-type": "RECORD", "is-open": false, "nested": [ { "field-name": "screen-name", "field-type": "STRING", "is-open": false }, { "field-name": "lang", "field-type": "STRING", "is-open": false }, { "field-name": "friends_count", "field-type": "INT64", "is-open": false }, { "field-name": "statuses_count", "field-type": "INT64", "is-open": false }, { "field-name": "name", "field-type": "STRING", "is-open": true }, { "field-name": "followers_count", "field-type": "INT64", "is-open": true } ] }, { "field-name": "sender-location", "field-type": "POINT", "is-open": false }, { "field-name": "send-time", "field-type": "DATETIME", "is-open": false }, { "field-name": "referred-topics", "field-type": "UNORDEREDLIST", "is-open": false, "list": [ { "field-type": "STRING" }, { "field-type": "STRING" } ] }, { "field-name": "message-text", "field-type": "STRING", "is-open": false } ]
+, [ { "field-name": "tweetid", "field-type": "STRING", "is-open": false }, { "field-name": "user", "field-type": "RECORD", "is-open": false, "nested": [ { "field-name": "screen-name", "field-type": "STRING", "is-open": false }, { "field-name": "lang", "field-type": "STRING", "is-open": false }, { "field-name": "friends_count", "field-type": "INT64", "is-open": false }, { "field-name": "statuses_count", "field-type": "INT64", "is-open": false }, { "field-name": "name", "field-type": "STRING", "is-open": true }, { "field-name": "followers_count", "field-type": "INT64", "is-open": true } ] }, { "field-name": "sender-location", "field-type": "POINT", "is-open": false }, { "field-name": "send-time", "field-type": "DATETIME", "is-open": false }, { "field-name": "referred-topics", "field-type": "UNORDEREDLIST", "is-open": false, "list": [ { "field-type": "STRING" }, { "field-type": "STRING" } ] }, { "field-name": "message-text", "field-type": "STRING", "is-open": false } ]
+, [ { "field-name": "tweetid", "field-type": "STRING", "is-open": false }, { "field-name": "user", "field-type": "RECORD", "is-open": false, "nested": [ { "field-name": "screen-name", "field-type": "STRING", "is-open": false }, { "field-name": "lang", "field-type": "STRING", "is-open": false }, { "field-name": "friends_count", "field-type": "INT64", "is-open": false }, { "field-name": "statuses_count", "field-type": "INT64", "is-open": false }, { "field-name": "name", "field-type": "STRING", "is-open": true }, { "field-name": "followers_count", "field-type": "INT64", "is-open": true } ] }, { "field-name": "sender-location", "field-type": "POINT", "is-open": false }, { "field-name": "send-time", "field-type": "DATETIME", "is-open": false }, { "field-name": "referred-topics", "field-type": "UNORDEREDLIST", "is-open": false, "list": [ { "field-type": "STRING" }, { "field-type": "STRING" } ] }, { "field-name": "message-text", "field-type": "STRING", "is-open": false } ]
+, [ { "field-name": "tweetid", "field-type": "STRING", "is-open": false }, { "field-name": "user", "field-type": "RECORD", "is-open": false, "nested": [ { "field-name": "screen-name", "field-type": "STRING", "is-open": false }, { "field-name": "lang", "field-type": "STRING", "is-open": false }, { "field-name": "friends_count", "field-type": "INT64", "is-open": false }, { "field-name": "statuses_count", "field-type": "INT64", "is-open": false }, { "field-name": "name", "field-type": "STRING", "is-open": true }, { "field-name": "followers_count", "field-type": "INT64", "is-open": true } ] }, { "field-name": "sender-location", "field-type": "POINT", "is-open": false }, { "field-name": "send-time", "field-type": "DATETIME", "is-open": false }, { "field-name": "referred-topics", "field-type": "UNORDEREDLIST", "is-open": false, "list": [ { "field-type": "STRING" }, { "field-type": "STRING" } ] }, { "field-name": "message-text", "field-type": "STRING", "is-open": false } ]
+, [ { "field-name": "tweetid", "field-type": "STRING", "is-open": false }, { "field-name": "user", "field-type": "RECORD", "is-open": false, "nested": [ { "field-name": "screen-name", "field-type": "STRING", "is-open": false }, { "field-name": "lang", "field-type": "STRING", "is-open": false }, { "field-name": "friends_count", "field-type": "INT64", "is-open": false }, { "field-name": "statuses_count", "field-type": "INT64", "is-open": false }, { "field-name": "name", "field-type": "STRING", "is-open": true }, { "field-name": "followers_count", "field-type": "INT64", "is-open": true } ] }, { "field-name": "sender-location", "field-type": "POINT", "is-open": false }, { "field-name": "send-time", "field-type": "DATETIME", "is-open": false }, { "field-name": "referred-topics", "field-type": "UNORDEREDLIST", "is-open": false, "list": [ { "field-type": "STRING" }, { "field-type": "STRING" } ] }, { "field-name": "message-text", "field-type": "STRING", "is-open": false } ]
+, [ { "field-name": "tweetid", "field-type": "STRING", "is-open": false }, { "field-name": "user", "field-type": "RECORD", "is-open": false, "nested": [ { "field-name": "screen-name", "field-type": "STRING", "is-open": false }, { "field-name": "lang", "field-type": "STRING", "is-open": false }, { "field-name": "friends_count", "field-type": "INT64", "is-open": false }, { "field-name": "statuses_count", "field-type": "INT64", "is-open": false }, { "field-name": "name", "field-type": "STRING", "is-open": true }, { "field-name": "followers_count", "field-type": "INT64", "is-open": true } ] }, { "field-name": "sender-location", "field-type": "POINT", "is-open": false }, { "field-name": "send-time", "field-type": "DATETIME", "is-open": false }, { "field-name": "referred-topics", "field-type": "UNORDEREDLIST", "is-open": false, "list": [ { "field-type": "STRING" }, { "field-type": "STRING" } ] }, { "field-name": "message-text", "field-type": "STRING", "is-open": false } ]
+, [ { "field-name": "tweetid", "field-type": "STRING", "is-open": false }, { "field-name": "user", "field-type": "RECORD", "is-open": false, "nested": [ { "field-name": "screen-name", "field-type": "STRING", "is-open": false }, { "field-name": "lang", "field-type": "STRING", "is-open": false }, { "field-name": "friends_count", "field-type": "INT64", "is-open": false }, { "field-name": "statuses_count", "field-type": "INT64", "is-open": false }, { "field-name": "name", "field-type": "STRING", "is-open": true }, { "field-name": "followers_count", "field-type": "INT64", "is-open": true } ] }, { "field-name": "sender-location", "field-type": "POINT", "is-open": false }, { "field-name": "send-time", "field-type": "DATETIME", "is-open": false }, { "field-name": "referred-topics", "field-type": "UNORDEREDLIST", "is-open": false, "list": [ { "field-type": "STRING" }, { "field-type": "STRING" } ] }, { "field-name": "message-text", "field-type": "STRING", "is-open": false } ]
+, [ { "field-name": "tweetid", "field-type": "STRING", "is-open": false }, { "field-name": "user", "field-type": "RECORD", "is-open": false, "nested": [ { "field-name": "screen-name", "field-type": "STRING", "is-open": false }, { "field-name": "lang", "field-type": "STRING", "is-open": false }, { "field-name": "friends_count", "field-type": "INT64", "is-open": false }, { "field-name": "statuses_count", "field-type": "INT64", "is-open": false }, { "field-name": "name", "field-type": "STRING", "is-open": true }, { "field-name": "followers_count", "field-type": "INT64", "is-open": true } ] }, { "field-name": "sender-location", "field-type": "POINT", "is-open": false }, { "field-name": "send-time", "field-type": "DATETIME", "is-open": false }, { "field-name": "referred-topics", "field-type": "UNORDEREDLIST", "is-open": false, "list": [ { "field-type": "STRING" }, { "field-type": "STRING" } ] }, { "field-name": "message-text", "field-type": "STRING", "is-open": false } ]
+ ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-app/src/test/resources/runtimets/results/records/get-record-fields/tiny-social-example/tiny-social-example.9.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/records/get-record-fields/tiny-social-example/tiny-social-example.9.adm b/asterix-app/src/test/resources/runtimets/results/records/get-record-fields/tiny-social-example/tiny-social-example.9.adm
new file mode 100644
index 0000000..898d763
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/records/get-record-fields/tiny-social-example/tiny-social-example.9.adm
@@ -0,0 +1,7 @@
+[ { "count": 12, "field-name": "message-text", "field-type": "STRING" }
+, { "count": 12, "field-name": "referred-topics", "field-type": "UNORDEREDLIST" }
+, { "count": 12, "field-name": "send-time", "field-type": "DATETIME" }
+, { "count": 12, "field-name": "sender-location", "field-type": "POINT" }
+, { "count": 12, "field-name": "tweetid", "field-type": "STRING" }
+, { "count": 12, "field-name": "user", "field-type": "RECORD" }
+ ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-app/src/test/resources/runtimets/testsuite.xml
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/testsuite.xml b/asterix-app/src/test/resources/runtimets/testsuite.xml
index 2163093..94ae2f2 100644
--- a/asterix-app/src/test/resources/runtimets/testsuite.xml
+++ b/asterix-app/src/test/resources/runtimets/testsuite.xml
@@ -12,6 +12,11 @@
  ! See the License for the specific language governing permissions and
  ! limitations under the License.
  !-->
+<!DOCTYPE test-suite [
+
+<!ENTITY RecordsQueries SYSTEM "queries/records/RecordsQueries.xml">
+
+]>
 <test-suite
         xmlns="urn:xml.testframework.asterix.ics.uci.edu"
         ResultOffsetPath="results"
@@ -4343,65 +4348,7 @@
         </test-case>
     </test-group>
     <test-group name="records">
-        <test-case FilePath="records">
-            <compilation-unit name="closed-record-constructor_01">
-                <output-dir compare="Text">closed-record-constructor_01</output-dir>
-            </compilation-unit>
-        </test-case>
-        <test-case FilePath="records">
-            <compilation-unit name="closed-record-constructor_02">
-                <output-dir compare="Text">closed-record-constructor_02</output-dir>
-            </compilation-unit>
-        </test-case>
-        <test-case FilePath="records">
-            <compilation-unit name="closed-record-constructor_03">
-                <output-dir compare="Text">closed-record-constructor_03</output-dir>
-            </compilation-unit>
-        </test-case>
-        -->
-        <test-case FilePath="records">
-            <compilation-unit name="expFieldName">
-                <output-dir compare="Text">expFieldName</output-dir>
-            </compilation-unit>
-        </test-case>
-        <test-case FilePath="records">
-            <compilation-unit name="field-access-by-index_01">
-                <output-dir compare="Text">field-access-by-index_01</output-dir>
-            </compilation-unit>
-        </test-case>
-        <test-case FilePath="records">
-            <compilation-unit name="field-access-on-open-field">
-                <output-dir compare="Text">field-access-on-open-field</output-dir>
-            </compilation-unit>
-        </test-case>
-        <test-case FilePath="records">
-            <compilation-unit name="open-record-constructor_01">
-                <output-dir compare="Text">open-record-constructor_01</output-dir>
-            </compilation-unit>
-        </test-case>
-        <test-case FilePath="records">
-            <compilation-unit name="open-record-constructor_02">
-                <output-dir compare="Text">open-record-constructor_02</output-dir>
-            </compilation-unit>
-        </test-case>
-        <test-case FilePath="records">
-            <compilation-unit name="closed-closed-fieldname-conflict_issue173">
-                <output-dir compare="Text">closed-closed-fieldname-conflict_issue173</output-dir>
-                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-            </compilation-unit>
-        </test-case>
-        <test-case FilePath="records">
-            <compilation-unit name="open-closed-fieldname-conflict_issue173">
-                <output-dir compare="Text">open-closed-fieldname-conflict_issue173</output-dir>
-                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-            </compilation-unit>
-        </test-case>
-        <test-case FilePath="records">
-            <compilation-unit name="open-open-fieldname-conflict_issue173">
-                <output-dir compare="Text">open-open-fieldname-conflict_issue173</output-dir>
-                <expected-error>edu.uci.ics.asterix.common.exceptions.AsterixException</expected-error>
-            </compilation-unit>
-        </test-case>
+        &RecordsQueries;
     </test-group>
     <test-group name="scan">
         <test-case FilePath="scan">

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-common/src/main/resources/schema/asterix-conf.xsd
----------------------------------------------------------------------
diff --git a/asterix-common/src/main/resources/schema/asterix-conf.xsd b/asterix-common/src/main/resources/schema/asterix-conf.xsd
index 6edfbf8..bed63be 100644
--- a/asterix-common/src/main/resources/schema/asterix-conf.xsd
+++ b/asterix-common/src/main/resources/schema/asterix-conf.xsd
@@ -1,88 +1,108 @@
 <?xml version="1.0" encoding="ISO-8859-1" ?>
-<!--
- ! Copyright 2009-2013 by The Regents of the University of California
- ! Licensed under the Apache License, Version 2.0 (the "License");
- ! you may not use this file except in compliance with the License.
- ! you may obtain a copy of the License from
- !
- !     http://www.apache.org/licenses/LICENSE-2.0
- !
- ! Unless required by applicable law or agreed to in writing, software
- ! distributed under the License is distributed on an "AS IS" BASIS,
- ! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ! See the License for the specific language governing permissions and
- ! limitations under the License.
- !-->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
-	xmlns:mg="asterixconf" targetNamespace="asterixconf"
-	elementFormDefault="qualified">
+<xs:schema
+    xmlns:xs="http://www.w3.org/2001/XMLSchema"
+    xmlns:mg="asterixconf"
+    targetNamespace="asterixconf"
+    elementFormDefault="qualified">
 
-	<!-- definition of simple types -->
+    <!-- definition of simple types -->
+    <xs:element
+        name="instanceName"
+        type="xs:string" />
+    <xs:element
+        name="version"
+        type="xs:string" />
+    <xs:element
+        name="metadataNode"
+        type="xs:string" />
+    <xs:element
+        name="coredumpPath"
+        type="xs:string" />
+    <xs:element
+        name="storeDirs"
+        type="xs:string" />
+    <xs:element
+        name="ncId"
+        type="xs:string" />
+    <xs:element
+        name="name"
+        type="xs:string" />
+    <xs:element
+        name="value"
+        type="xs:string" />
+    <xs:element
+        name="description"
+        type="xs:string" />
+    <xs:element
+        name="txnLogDirPath"
+        type="xs:string" />
 
+    <!-- definition of complex elements -->
+    <xs:element name="store">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element ref="mg:ncId" />
+                <xs:element ref="mg:storeDirs" />
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
 
-	<xs:element name="instanceName" type="xs:string" />
-	<xs:element name="version" type="xs:string"/>
-	<xs:element name="metadataNode" type="xs:string" />
-	<xs:element name="coredumpPath" type="xs:string" />
-	<xs:element name="storeDirs" type="xs:string" />
-	<xs:element name="ncId" type="xs:string" />
-	<xs:element name="name" type="xs:string" />
-	<xs:element name="value" type="xs:string" />
-	<xs:element name="description" type="xs:string" />
-	<xs:element name="txnLogDirPath" type="xs:string" />
+    <xs:element name="coredump">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element ref="mg:ncId" />
+                <xs:element ref="mg:coredumpPath" />
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
 
+    <xs:element name="transactionLogDir">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element ref="mg:ncId" />
+                <xs:element ref="mg:txnLogDirPath" />
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
 
-	<!-- definition of complex elements -->
-	<xs:element name="store">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element ref="mg:ncId" />
-				<xs:element ref="mg:storeDirs" />
-			</xs:sequence>
-		</xs:complexType>
-	</xs:element>
+    <xs:element name="property">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element ref="mg:name" />
+                <xs:element ref="mg:value" />
+                <xs:element ref="mg:description" />
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
 
-	<xs:element name="coredump">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element ref="mg:ncId" />
-				<xs:element ref="mg:coredumpPath" />
-			</xs:sequence>
-		</xs:complexType>
-	</xs:element>
 
-	<xs:element name="transactionLogDir">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element ref="mg:ncId" />
-				<xs:element ref="mg:txnLogDirPath" />
-			</xs:sequence>
-		</xs:complexType>
-	</xs:element>
+    <xs:element name="asterixConfiguration">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element
+                    ref="mg:instanceName"
+                    minOccurs="0" />
+                <xs:element
+                    ref="mg:version"
+                    minOccurs="0" />
+                <xs:element
+                    ref="mg:metadataNode"
+                    minOccurs="0" />
+                <xs:element
+                    ref="mg:store"
+                    maxOccurs="unbounded" />
+                <xs:element
+                    ref="mg:coredump"
+                    maxOccurs="unbounded" />
+                <xs:element
+                    ref="mg:transactionLogDir"
+                    maxOccurs="unbounded" />
+                <xs:element
+                    ref="mg:property"
+                    minOccurs="0"
+                    maxOccurs="unbounded" />
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
 
-	<xs:element name="property">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element ref="mg:name" />
-				<xs:element ref="mg:value" />
-				<xs:element ref="mg:description" />
-			</xs:sequence>
-		</xs:complexType>
-	</xs:element>
-
-
-	<xs:element name="asterixConfiguration">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element ref="mg:instanceName" minOccurs="0" />
-				<xs:element ref="mg:version" minOccurs="0" />
-				<xs:element ref="mg:metadataNode" minOccurs="0" />
-				<xs:element ref="mg:store" maxOccurs="unbounded" />
-				<xs:element ref="mg:coredump" maxOccurs="unbounded" />
-				<xs:element ref="mg:transactionLogDir" maxOccurs="unbounded" />
-				<xs:element ref="mg:property" minOccurs="0" maxOccurs="unbounded" />
-			</xs:sequence>
-		</xs:complexType>
-	</xs:element>
-
-</xs:schema>     
+</xs:schema>

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-common/src/main/resources/schema/yarn_cluster.xsd
----------------------------------------------------------------------
diff --git a/asterix-common/src/main/resources/schema/yarn_cluster.xsd b/asterix-common/src/main/resources/schema/yarn_cluster.xsd
index 2aa76cf..62c6f9a 100644
--- a/asterix-common/src/main/resources/schema/yarn_cluster.xsd
+++ b/asterix-common/src/main/resources/schema/yarn_cluster.xsd
@@ -1,103 +1,179 @@
 <?xml version="1.0" encoding="ISO-8859-1" ?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
-	xmlns:cl="yarn_cluster" targetNamespace="yarn_cluster" elementFormDefault="qualified">
+<xs:schema
+    xmlns:xs="http://www.w3.org/2001/XMLSchema"
+    xmlns:cl="yarn_cluster"
+    targetNamespace="yarn_cluster"
+    elementFormDefault="qualified">
 
 	<!-- definition of simple types -->
-	<xs:element name="instance_name" type="xs:string" />
-	<xs:element name="cluster_name" type="xs:string" />
-	<xs:element name="log_dir" type="xs:string" />
-	<xs:element name="txn_log_dir" type="xs:string" />
-	<xs:element name="id" type="xs:string" />
-	<xs:element name="client_ip" type="xs:string" />
-	<xs:element name="cluster_ip" type="xs:string" />
-	<xs:element name="key" type="xs:string" />
-	<xs:element name="value" type="xs:string" />
-	<xs:element name="store" type="xs:string" />
-	<xs:element name="iodevices" type="xs:string" />
-	<xs:element name="web_port" type="xs:string" />
-	<xs:element name="client_port" type="xs:integer" />
-	<xs:element name="cluster_port" type="xs:integer" />
-	<xs:element name="http_port" type="xs:integer" />
-	<xs:element name="debug_port" type="xs:integer" />
-	<xs:element name="metadata_node" type="xs:string" />
-	<xs:element name="cc_container_mem" type="xs:string" />
-	<xs:element name="nc_container_mem" type="xs:string" />
+    <xs:element
+        name="instance_name"
+        type="xs:string" />
+    <xs:element
+        name="cluster_name"
+        type="xs:string" />
+    <xs:element
+        name="log_dir"
+        type="xs:string" />
+    <xs:element
+        name="txn_log_dir"
+        type="xs:string" />
+    <xs:element
+        name="id"
+        type="xs:string" />
+    <xs:element
+        name="client_ip"
+        type="xs:string" />
+    <xs:element
+        name="cluster_ip"
+        type="xs:string" />
+    <xs:element
+        name="key"
+        type="xs:string" />
+    <xs:element
+        name="value"
+        type="xs:string" />
+    <xs:element
+        name="store"
+        type="xs:string" />
+    <xs:element
+        name="iodevices"
+        type="xs:string" />
+    <xs:element
+        name="web_port"
+        type="xs:string" />
+    <xs:element
+        name="client_port"
+        type="xs:integer" />
+    <xs:element
+        name="cluster_port"
+        type="xs:integer" />
+    <xs:element
+        name="http_port"
+        type="xs:integer" />
+    <xs:element
+        name="debug_port"
+        type="xs:integer" />
+    <xs:element
+        name="metadata_node"
+        type="xs:string" />
+    <xs:element
+        name="cc_container_mem"
+        type="xs:string" />
+    <xs:element
+        name="nc_container_mem"
+        type="xs:string" />
 	
 
 	<!-- definition of complex elements -->
 
-	<xs:element name="master_node">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element ref="cl:id" />
-				<xs:element ref="cl:client_ip" />
-				<xs:element ref="cl:cluster_ip" />
-				<xs:element ref="cl:log_dir" minOccurs="0" />
-				<xs:element ref="cl:client_port" />
-				<xs:element ref="cl:cluster_port" />
-				<xs:element ref="cl:http_port" />
-				<xs:element ref="cl:debug_port" minOccurs="0" />
-			</xs:sequence>
-		</xs:complexType>
-	</xs:element>
+    <xs:element name="master_node">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element ref="cl:id" />
+                <xs:element ref="cl:client_ip" />
+                <xs:element ref="cl:cluster_ip" />
+                <xs:element
+                    ref="cl:log_dir"
+                    minOccurs="0" />
+                <xs:element ref="cl:client_port" />
+                <xs:element ref="cl:cluster_port" />
+                <xs:element ref="cl:http_port" />
+                <xs:element
+                    ref="cl:debug_port"
+                    minOccurs="0" />
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
 
-	<xs:element name="property">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element ref="cl:key" />
-				<xs:element ref="cl:value" />
-			</xs:sequence>
-		</xs:complexType>
-	</xs:element>
+    <xs:element name="property">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element ref="cl:key" />
+                <xs:element ref="cl:value" />
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
 
-	<xs:element name="env">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element ref="cl:property" minOccurs="0" maxOccurs="unbounded" />
-			</xs:sequence>
-		</xs:complexType>
-	</xs:element>
+    <xs:element name="env">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element
+                    ref="cl:property"
+                    minOccurs="0"
+                    maxOccurs="unbounded" />
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
 
-	<xs:element name="node">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element ref="cl:id" />
-				<xs:element ref="cl:cluster_ip" />
-				<xs:element ref="cl:log_dir" minOccurs="0" />
-				<xs:element ref="cl:txn_log_dir" minOccurs="0" />
-				<xs:element ref="cl:store" minOccurs="0" />
-				<xs:element ref="cl:iodevices" minOccurs="0" />
-				<xs:element ref="cl:debug_port" minOccurs="0" />
-			</xs:sequence>
-		</xs:complexType>
-	</xs:element>
+    <xs:element name="node">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element ref="cl:id" />
+                <xs:element ref="cl:cluster_ip" />
+                <xs:element
+                    ref="cl:log_dir"
+                    minOccurs="0" />
+                <xs:element
+                    ref="cl:txn_log_dir"
+                    minOccurs="0" />
+                <xs:element
+                    ref="cl:store"
+                    minOccurs="0" />
+                <xs:element
+                    ref="cl:iodevices"
+                    minOccurs="0" />
+                <xs:element
+                    ref="cl:debug_port"
+                    minOccurs="0" />
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
 
-	<xs:element name="substitute_nodes">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element ref="cl:node" maxOccurs="unbounded" />
-			</xs:sequence>
-		</xs:complexType>
-	</xs:element>
+    <xs:element name="substitute_nodes">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element
+                    ref="cl:node"
+                    maxOccurs="unbounded" />
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
 
-	<xs:element name="cluster">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element ref="cl:instance_name" />
-				<xs:element ref="cl:cluster_name" />
-				<xs:element ref="cl:cc_container_mem" minOccurs="0" />
-				<xs:element ref="cl:nc_container_mem" minOccurs="0" />
-				<xs:element ref="cl:env" minOccurs="0" />
-				<xs:element ref="cl:log_dir" minOccurs="0" />
-				<xs:element ref="cl:txn_log_dir" minOccurs="0" />
-				<xs:element ref="cl:store" minOccurs="0" />
-				<xs:element ref="cl:iodevices" minOccurs="0" />
-				<xs:element ref="cl:metadata_node" />
-				<xs:element ref="cl:master_node" />
-				<xs:element ref="cl:node" maxOccurs="unbounded" />
-				<xs:element ref="cl:substitute_nodes" />
-			</xs:sequence>
-		</xs:complexType>
-	</xs:element>
+    <xs:element name="cluster">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element ref="cl:instance_name" />
+                <xs:element ref="cl:cluster_name" />
+                <xs:element
+                    ref="cl:cc_container_mem"
+                    minOccurs="0" />
+                <xs:element
+                    ref="cl:nc_container_mem"
+                    minOccurs="0" />
+                <xs:element
+                    ref="cl:env"
+                    minOccurs="0" />
+                <xs:element
+                    ref="cl:log_dir"
+                    minOccurs="0" />
+                <xs:element
+                    ref="cl:txn_log_dir"
+                    minOccurs="0" />
+                <xs:element
+                    ref="cl:store"
+                    minOccurs="0" />
+                <xs:element
+                    ref="cl:iodevices"
+                    minOccurs="0" />
+                <xs:element ref="cl:metadata_node" />
+                <xs:element ref="cl:master_node" />
+                <xs:element
+                    ref="cl:node"
+                    maxOccurs="unbounded" />
+                <xs:element ref="cl:substitute_nodes" />
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
 
 </xs:schema>     

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-doc/src/site/markdown/aql/functions.md
----------------------------------------------------------------------
diff --git a/asterix-doc/src/site/markdown/aql/functions.md b/asterix-doc/src/site/markdown/aql/functions.md
index a5f7961..fd00d11 100644
--- a/asterix-doc/src/site/markdown/aql/functions.md
+++ b/asterix-doc/src/site/markdown/aql/functions.md
@@ -9,6 +9,7 @@
 * [Similarity Functions](#SimilarityFunctions)
 * [Tokenizing Functions](#TokenizingFunctions)
 * [Temporal Functions](#TemporalFunctions)
+* [Record Functions](#RecordFunctions)
 * [Other Functions](#OtherFunctions)
 
 Asterix provides various classes of functions to support operations on numeric, string, spatial, and temporal data. This document explains how to use these functions.
@@ -2221,6 +2222,66 @@ See the [Allen's Relations](allens.html).
           "datetimebins": [ interval-datetime("1800-01-01T00:00:00.000Z, 1900-01-01T00:00:00.000Z"), interval-datetime("1900-01-01T00:00:00.000Z, 2000-01-01T00:00:00.000Z"), interval-datetime("2000-01-01T00:00:00.000Z, 2100-01-01T00:00:00.000Z") ] }
 
 
+## <a id="RecordFunctions">Record Functions</a> <font size="4"><a href="#toc">[Back to TOC]</a></font> ##
+
+
+### get-record-fields ###
+ * Syntax:
+
+        get-record-fields(record_expression)
+
+ * Access the record field names, type and open status for a given record.
+ * Arguments:
+    * `record_expression` : a record value.
+ * Return Value:
+    * An order list of `record` values that include the field-name `string`, field-type `string`, is-open `boolean` and optional nested `orderedList` for the values of a nested record.
+
+ * Example:
+
+        let $r1 := {"id": 1, 
+            "project": "AsterixDB", 
+            "address": {"city": "Irvine", "state": "CA"}, 
+            "related": ["Hivestrix", "Preglix", "Apache VXQuery"] }
+        return get-record-fields($r1)
+
+ * The expected result is:
+
+        [ { "field-name": "id", "field-type": "INT64", "is-open": false }, 
+          { "field-name": "project", "field-type": "STRING", "is-open": false }, 
+          { "field-name": "address", "field-type": "RECORD", "is-open": false, "nested": [ 
+            { "field-name": "city", "field-type": "STRING", "is-open": false }, 
+            { "field-name": "state", "field-type": "STRING", "is-open": false } ] }, 
+          { "field-name": "related", "field-type": "ORDEREDLIST", "is-open": false, "list": [ 
+            { "field-type": "STRING" }, 
+            { "field-type": "STRING" }, 
+            { "field-type": "STRING" } ] } ]
+
+ ]
+### get-record-field-value ###
+ * Syntax:
+
+        get-record-field-value(record_expression, string_expression)
+
+ * Access the field name given in the `string_expression` from the `record_expression`.
+ * Arguments:
+    * `record_expression` : A `record` value.
+    * `string_expression` : A `string` representing the top level field name.
+ * Return Value:
+    * An `any` value saved in the designated field of the record.
+
+ * Example:
+
+        let $r1 := {"id": 1, 
+            "project": "AsterixDB", 
+            "address": {"city": "Irvine", "state": "CA"}, 
+            "related": ["Hivestrix", "Preglix", "Apache VXQuery"] }
+        return get-record-field-value($r1, "project")
+
+ * The expected result is:
+
+        "AsterixDB"
+
+
 ## <a id="OtherFunctions">Other Functions</a> <font size="4"><a href="#toc">[Back to TOC]</a></font> ##
 
 

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/indexing/input/AbstractHDFSReader.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/indexing/input/AbstractHDFSReader.java b/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/indexing/input/AbstractHDFSReader.java
index b6bc2c0..1027517 100644
--- a/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/indexing/input/AbstractHDFSReader.java
+++ b/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/indexing/input/AbstractHDFSReader.java
@@ -24,38 +24,40 @@ import org.apache.hadoop.mapred.Reporter;
  * an abstract class to be used for reading hdfs based datasets one record at a time <- used for indexing->
  */
 @SuppressWarnings("deprecation")
-public abstract class AbstractHDFSReader extends InputStream{
+public abstract class AbstractHDFSReader extends InputStream {
 
     /***
      * This function should be called once to do initial setup before starting to read records
+     * 
      * @return true if ready for reading
      */
     abstract public boolean initialize() throws Exception;
-    
+
     /***
      * @return the next object read or null if reached end of stream
      */
     abstract public Object readNext() throws Exception;
-    
+
     /**
      * @return the file name of the current filesplit being read
-     * @throws Exception in case of end of records is reached
+     * @throws Exception
+     *             in case of end of records is reached
      */
     abstract public String getFileName() throws Exception;
-    
+
     /**
      * @return return the reader position of last record read
-     * @throws Exception in case of end of records is reached
+     * @throws Exception
+     *             in case of end of records is reached
      */
     abstract public long getReaderPosition() throws Exception;
-    
+
     /**
-     * 
      * @return the file number of the file being read
      * @throws Exception
      */
     abstract public int getFileNumber() throws Exception;
-    
+
     protected Reporter getReporter() {
         Reporter reporter = new Reporter() {
 
@@ -70,8 +72,7 @@ public abstract class AbstractHDFSReader extends InputStream{
             }
 
             @Override
-            public InputSplit getInputSplit()
-                    throws UnsupportedOperationException {
+            public InputSplit getInputSplit() throws UnsupportedOperationException {
                 return null;
             }
 

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/JavaFunctionHelper.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/JavaFunctionHelper.java b/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/JavaFunctionHelper.java
index ed6cc23..e2e694a 100644
--- a/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/JavaFunctionHelper.java
+++ b/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/JavaFunctionHelper.java
@@ -24,8 +24,8 @@ import edu.uci.ics.asterix.external.library.java.JObjectPointableVisitor;
 import edu.uci.ics.asterix.external.library.java.JTypeTag;
 import edu.uci.ics.asterix.om.functions.IExternalFunctionInfo;
 import edu.uci.ics.asterix.om.pointables.AFlatValuePointable;
-import edu.uci.ics.asterix.om.pointables.AListPointable;
-import edu.uci.ics.asterix.om.pointables.ARecordPointable;
+import edu.uci.ics.asterix.om.pointables.AListVisitablePointable;
+import edu.uci.ics.asterix.om.pointables.ARecordVisitablePointable;
 import edu.uci.ics.asterix.om.pointables.PointableAllocator;
 import edu.uci.ics.asterix.om.pointables.base.IVisitablePointable;
 import edu.uci.ics.asterix.om.types.BuiltinType;
@@ -88,13 +88,13 @@ public class JavaFunctionHelper implements IFunctionHelper {
             case RECORD:
                 pointable = pointableAllocator.allocateRecordValue(type);
                 pointable.set(valueReference);
-                jObject = pointableVisitor.visit((ARecordPointable) pointable, getTypeInfo(index, type));
+                jObject = pointableVisitor.visit((ARecordVisitablePointable) pointable, getTypeInfo(index, type));
                 break;
             case ORDEREDLIST:
             case UNORDEREDLIST:
                 pointable = pointableAllocator.allocateListValue(type);
                 pointable.set(valueReference);
-                jObject = pointableVisitor.visit((AListPointable) pointable, getTypeInfo(index, type));
+                jObject = pointableVisitor.visit((AListVisitablePointable) pointable, getTypeInfo(index, type));
                 break;
             case ANY:
                 throw new IllegalStateException("Cannot handle a function argument of type " + type.getTypeTag());

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/IJListAccessor.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/IJListAccessor.java b/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/IJListAccessor.java
index f1ae883..71f6ff2 100644
--- a/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/IJListAccessor.java
+++ b/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/IJListAccessor.java
@@ -14,13 +14,13 @@
  */
 package edu.uci.ics.asterix.external.library.java;
 
-import edu.uci.ics.asterix.om.pointables.AListPointable;
+import edu.uci.ics.asterix.om.pointables.AListVisitablePointable;
 import edu.uci.ics.asterix.om.types.IAType;
 import edu.uci.ics.asterix.om.util.container.IObjectPool;
 import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
 
 public interface IJListAccessor {
 
-    IJObject access(AListPointable pointable, IObjectPool<IJObject, IAType> objectPool, IAType listType,
+    IJObject access(AListVisitablePointable pointable, IObjectPool<IJObject, IAType> objectPool, IAType listType,
             JObjectPointableVisitor pointableVisitor) throws HyracksDataException;
 }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/IJRecordAccessor.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/IJRecordAccessor.java b/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/IJRecordAccessor.java
index 54b8726..1e3d692 100644
--- a/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/IJRecordAccessor.java
+++ b/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/IJRecordAccessor.java
@@ -15,7 +15,7 @@
 package edu.uci.ics.asterix.external.library.java;
 
 import edu.uci.ics.asterix.external.library.java.JObjects.JRecord;
-import edu.uci.ics.asterix.om.pointables.ARecordPointable;
+import edu.uci.ics.asterix.om.pointables.ARecordVisitablePointable;
 import edu.uci.ics.asterix.om.types.ARecordType;
 import edu.uci.ics.asterix.om.types.IAType;
 import edu.uci.ics.asterix.om.util.container.IObjectPool;
@@ -23,7 +23,7 @@ import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
 
 public interface IJRecordAccessor {
 
-    public JRecord access(ARecordPointable pointable, IObjectPool<IJObject, IAType> objectPool, ARecordType recordType,
+    public JRecord access(ARecordVisitablePointable pointable, IObjectPool<IJObject, IAType> objectPool, ARecordType recordType,
             JObjectPointableVisitor pointableVisitor) throws HyracksDataException;
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/JObjectAccessors.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/JObjectAccessors.java b/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/JObjectAccessors.java
index 084dd8e..c2e4cf3 100644
--- a/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/JObjectAccessors.java
+++ b/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/JObjectAccessors.java
@@ -16,7 +16,6 @@ package edu.uci.ics.asterix.external.library.java;
 
 import java.io.ByteArrayInputStream;
 import java.io.DataInputStream;
-import java.io.UnsupportedEncodingException;
 import java.util.LinkedHashMap;
 import java.util.List;
 
@@ -72,8 +71,8 @@ import edu.uci.ics.asterix.om.base.APoint3D;
 import edu.uci.ics.asterix.om.base.APolygon;
 import edu.uci.ics.asterix.om.base.ARectangle;
 import edu.uci.ics.asterix.om.pointables.AFlatValuePointable;
-import edu.uci.ics.asterix.om.pointables.AListPointable;
-import edu.uci.ics.asterix.om.pointables.ARecordPointable;
+import edu.uci.ics.asterix.om.pointables.AListVisitablePointable;
+import edu.uci.ics.asterix.om.pointables.ARecordVisitablePointable;
 import edu.uci.ics.asterix.om.pointables.base.IVisitablePointable;
 import edu.uci.ics.asterix.om.types.ARecordType;
 import edu.uci.ics.asterix.om.types.ATypeTag;
@@ -448,14 +447,14 @@ public class JObjectAccessors {
         }
 
         @Override
-        public JRecord access(ARecordPointable pointable, IObjectPool<IJObject, IAType> objectPool,
+        public JRecord access(ARecordVisitablePointable pointable, IObjectPool<IJObject, IAType> objectPool,
                 ARecordType recordType, JObjectPointableVisitor pointableVisitor) throws HyracksDataException {
             try {
                 jRecord.reset();
             } catch (AlgebricksException e) {
                 throw new HyracksDataException(e);
             }
-            ARecordPointable recordPointable = (ARecordPointable) pointable;
+            ARecordVisitablePointable recordPointable = (ARecordVisitablePointable) pointable;
             List<IVisitablePointable> fieldPointables = recordPointable.getFieldValues();
             List<IVisitablePointable> fieldTypeTags = recordPointable.getFieldTypeTags();
             List<IVisitablePointable> fieldNames = recordPointable.getFieldNames();
@@ -473,7 +472,7 @@ public class JObjectAccessors {
                     typeInfo.reset(fieldType, typeTag);
                     switch (typeTag) {
                         case RECORD:
-                            fieldObject = pointableVisitor.visit((ARecordPointable) fieldPointable, typeInfo);
+                            fieldObject = pointableVisitor.visit((ARecordVisitablePointable) fieldPointable, typeInfo);
                             break;
                         case ORDEREDLIST:
                         case UNORDEREDLIST:
@@ -481,7 +480,7 @@ public class JObjectAccessors {
                                 // value is null
                                 fieldObject = null;
                             } else {
-                                fieldObject = pointableVisitor.visit((AListPointable) fieldPointable, typeInfo);
+                                fieldObject = pointableVisitor.visit((AListVisitablePointable) fieldPointable, typeInfo);
                             }
                             break;
                         case ANY:
@@ -530,7 +529,7 @@ public class JObjectAccessors {
         }
 
         @Override
-        public IJObject access(AListPointable pointable, IObjectPool<IJObject, IAType> objectPool, IAType listType,
+        public IJObject access(AListVisitablePointable pointable, IObjectPool<IJObject, IAType> objectPool, IAType listType,
                 JObjectPointableVisitor pointableVisitor) throws HyracksDataException {
             List<IVisitablePointable> items = pointable.getItems();
             List<IVisitablePointable> itemTags = pointable.getItemTags();
@@ -546,11 +545,11 @@ public class JObjectAccessors {
                     typeInfo.reset(listType.getType(), listType.getTypeTag());
                     switch (itemTypeTag) {
                         case RECORD:
-                            listItem = pointableVisitor.visit((ARecordPointable) itemPointable, typeInfo);
+                            listItem = pointableVisitor.visit((ARecordVisitablePointable) itemPointable, typeInfo);
                             break;
                         case UNORDEREDLIST:
                         case ORDEREDLIST:
-                            listItem = pointableVisitor.visit((AListPointable) itemPointable, typeInfo);
+                            listItem = pointableVisitor.visit((AListVisitablePointable) itemPointable, typeInfo);
                             break;
                         case ANY:
                             throw new IllegalArgumentException("Cannot parse list item of type "

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/JObjectPointableVisitor.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/JObjectPointableVisitor.java b/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/JObjectPointableVisitor.java
index cceec85..20d7c28 100644
--- a/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/JObjectPointableVisitor.java
+++ b/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/JObjectPointableVisitor.java
@@ -22,8 +22,8 @@ import edu.uci.ics.asterix.external.library.TypeInfo;
 import edu.uci.ics.asterix.external.library.java.JObjectAccessors.JListAccessor;
 import edu.uci.ics.asterix.external.library.java.JObjectAccessors.JRecordAccessor;
 import edu.uci.ics.asterix.om.pointables.AFlatValuePointable;
-import edu.uci.ics.asterix.om.pointables.AListPointable;
-import edu.uci.ics.asterix.om.pointables.ARecordPointable;
+import edu.uci.ics.asterix.om.pointables.AListVisitablePointable;
+import edu.uci.ics.asterix.om.pointables.ARecordVisitablePointable;
 import edu.uci.ics.asterix.om.pointables.base.IVisitablePointable;
 import edu.uci.ics.asterix.om.pointables.visitor.IVisitablePointableVisitor;
 import edu.uci.ics.asterix.om.types.ARecordType;
@@ -37,7 +37,7 @@ public class JObjectPointableVisitor implements IVisitablePointableVisitor<IJObj
     private final Map<IVisitablePointable, IJListAccessor> laccessorToPrinter = new HashMap<IVisitablePointable, IJListAccessor>();
 
     @Override
-    public IJObject visit(AListPointable accessor, TypeInfo arg) throws AsterixException {
+    public IJObject visit(AListVisitablePointable accessor, TypeInfo arg) throws AsterixException {
         IJObject result = null;
         IJListAccessor jListAccessor = laccessorToPrinter.get(accessor);
         if (jListAccessor == null) {
@@ -53,7 +53,7 @@ public class JObjectPointableVisitor implements IVisitablePointableVisitor<IJObj
     }
 
     @Override
-    public IJObject visit(ARecordPointable accessor, TypeInfo arg) throws AsterixException {
+    public IJObject visit(ARecordVisitablePointable accessor, TypeInfo arg) throws AsterixException {
         IJObject result = null;
         IJRecordAccessor jRecordAccessor = raccessorToJObject.get(accessor);
         if (jRecordAccessor == null) {

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/PKGeneratingAdapter.java
----------------------------------------------------------------------
diff --git a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/PKGeneratingAdapter.java b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/PKGeneratingAdapter.java
index 862092a..9f78b37 100644
--- a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/PKGeneratingAdapter.java
+++ b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/PKGeneratingAdapter.java
@@ -21,7 +21,7 @@ import edu.uci.ics.asterix.builders.RecordBuilder;
 import edu.uci.ics.asterix.common.feeds.api.IDatasourceAdapter;
 import edu.uci.ics.asterix.om.base.AMutableUUID;
 import edu.uci.ics.asterix.om.base.AUUID;
-import edu.uci.ics.asterix.om.pointables.ARecordPointable;
+import edu.uci.ics.asterix.om.pointables.ARecordVisitablePointable;
 import edu.uci.ics.asterix.om.pointables.PointableAllocator;
 import edu.uci.ics.asterix.om.pointables.base.IVisitablePointable;
 import edu.uci.ics.asterix.om.types.ARecordType;
@@ -75,7 +75,7 @@ public class PKGeneratingAdapter implements IDatasourceAdapter {
         private final byte AUUIDTag = ATypeTag.UUID.serialize();
         private final byte[] serializedUUID = new byte[16];
         private final PointableAllocator pa = new PointableAllocator();
-        private final ARecordPointable recordPointable;
+        private final ARecordVisitablePointable recordPointable;
         private final IAType[] outClosedTypes;
 
         private final RecordBuilder recBuilder;
@@ -85,7 +85,7 @@ public class PKGeneratingAdapter implements IDatasourceAdapter {
             this.outRecType = outRecType;
             this.tb = new ArrayTupleBuilder(2);
             this.recBuilder = new RecordBuilder();
-            this.recordPointable = (ARecordPointable) pa.allocateRecordValue(inRecType);
+            this.recordPointable = (ARecordVisitablePointable) pa.allocateRecordValue(inRecType);
             this.outClosedTypes = outRecType.getFieldTypes();
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-om/src/main/java/edu/uci/ics/asterix/builders/AbvsBuilderFactory.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/builders/AbvsBuilderFactory.java b/asterix-om/src/main/java/edu/uci/ics/asterix/builders/AbvsBuilderFactory.java
new file mode 100644
index 0000000..9d0e434
--- /dev/null
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/builders/AbvsBuilderFactory.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * you may obtain a copy of the License from
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package edu.uci.ics.asterix.builders;
+
+import edu.uci.ics.asterix.om.util.container.IObjectFactory;
+import edu.uci.ics.hyracks.data.std.api.IMutableValueStorage;
+import edu.uci.ics.hyracks.data.std.util.ArrayBackedValueStorage;
+
+public class AbvsBuilderFactory implements IObjectFactory<IMutableValueStorage, String> {
+
+    @Override
+    public IMutableValueStorage create(String type) {
+        return new ArrayBackedValueStorage();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-om/src/main/java/edu/uci/ics/asterix/builders/ListBuilderFactory.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/builders/ListBuilderFactory.java b/asterix-om/src/main/java/edu/uci/ics/asterix/builders/ListBuilderFactory.java
new file mode 100644
index 0000000..da098e5
--- /dev/null
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/builders/ListBuilderFactory.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * you may obtain a copy of the License from
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package edu.uci.ics.asterix.builders;
+
+import edu.uci.ics.asterix.om.util.container.IObjectFactory;
+
+public class ListBuilderFactory implements IObjectFactory<IAsterixListBuilder, String> {
+
+    @Override
+    public IAsterixListBuilder create(String type) {
+        if (type.equals("ordered")) {
+            return new OrderedListBuilder();
+        } else {
+            return new UnorderedListBuilder();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-om/src/main/java/edu/uci/ics/asterix/builders/RecordBuilderFactory.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/builders/RecordBuilderFactory.java b/asterix-om/src/main/java/edu/uci/ics/asterix/builders/RecordBuilderFactory.java
new file mode 100644
index 0000000..55ab2d0
--- /dev/null
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/builders/RecordBuilderFactory.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * you may obtain a copy of the License from
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package edu.uci.ics.asterix.builders;
+
+import edu.uci.ics.asterix.om.util.container.IObjectFactory;
+
+public class RecordBuilderFactory implements IObjectFactory<IARecordBuilder, String> {
+
+    @Override
+    public IARecordBuilder create(String type) {
+        return new RecordBuilder();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ADatePrinter.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ADatePrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ADatePrinter.java
index 545cfb2..b6eca48 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ADatePrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ADatePrinter.java
@@ -36,14 +36,8 @@ public class ADatePrinter implements IPrinter {
 
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
-        long chrononTime = AInt32SerializerDeserializer.getInt(b, s + 1) * CHRONON_OF_DAY;
-
         ps.print("date(\"");
-        try {
-            gCalInstance.getExtendStringRepUntilField(chrononTime, 0, ps, Fields.YEAR, Fields.DAY, false);
-        } catch (IOException e) {
-            throw new AlgebricksException(e);
-        }
+        printString(b, s, l, ps);
         ps.print("\")");
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ADateTimePrinter.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ADateTimePrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ADateTimePrinter.java
index cd7a2fb..bede764 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ADateTimePrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ADateTimePrinter.java
@@ -35,16 +35,8 @@ public class ADateTimePrinter implements IPrinter {
 
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
-        long chrononTime = AInt64SerializerDeserializer.getLong(b, s + 1);
-
         ps.print("datetime(\"");
-
-        try {
-            gCalInstance.getExtendStringRepUntilField(chrononTime, 0, ps, Fields.YEAR, Fields.MILLISECOND, true);
-        } catch (IOException e) {
-            throw new AlgebricksException(e);
-        }
-
+        printString(b, s, l, ps);
         ps.print("\")");
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ADayTimeDurationPrinter.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ADayTimeDurationPrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ADayTimeDurationPrinter.java
index 558c49f..99e076a 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ADayTimeDurationPrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ADayTimeDurationPrinter.java
@@ -30,7 +30,6 @@ public class ADayTimeDurationPrinter implements IPrinter {
 
     @Override
     public void init() throws AlgebricksException {
-        // TODO Auto-generated method stub
 
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/AObjectPrinter.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/AObjectPrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/AObjectPrinter.java
index 5a96e52..aeb325f 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/AObjectPrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/AObjectPrinter.java
@@ -115,6 +115,10 @@ public class AObjectPrinter implements IPrinter {
                 APolygonPrinter.INSTANCE.print(b, s, l, ps);
                 break;
             }
+            case RECTANGLE: {
+                ARectanglePrinter.INSTANCE.print(b, s, l, ps);
+                break;
+            }
             case CIRCLE: {
                 ACirclePrinter.INSTANCE.print(b, s, l, ps);
                 break;
@@ -150,9 +154,20 @@ public class AObjectPrinter implements IPrinter {
                 ShortWithoutTypeInfoPrinter.INSTANCE.print(b, s, l, ps);
                 break;
             }
-            default: {
+            case ANY:
+            case BITARRAY:
+            case ENUM:
+            case SPARSERECORD:
+            case SYSTEM_NULL:
+            case TYPE:
+            case UINT16:
+            case UINT32:
+            case UINT64:
+            case UINT8:
+            case UNION:
+            case UUID_STRING:
+                // These are internal types and do not need a printer.
                 throw new NotImplementedException("No printer for type " + typeTag);
-            }
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ATimePrinter.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ATimePrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ATimePrinter.java
index 618b17a..8a2e179 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ATimePrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/ATimePrinter.java
@@ -35,16 +35,8 @@ public class ATimePrinter implements IPrinter {
 
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
-        int time = AInt32SerializerDeserializer.getInt(b, s + 1);
-
         ps.print("time(\"");
-
-        try {
-            gCalInstance.getExtendStringRepUntilField(time, 0, ps, Fields.HOUR, Fields.MILLISECOND, true);
-        } catch (IOException e) {
-            throw new AlgebricksException(e);
-        }
-
+        printString(b,s,l, ps);
         ps.print("\")");
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/PrintTools.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/PrintTools.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/PrintTools.java
index e4b8441..53cbe6d 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/PrintTools.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/PrintTools.java
@@ -14,12 +14,11 @@
  */
 package edu.uci.ics.asterix.dataflow.data.nontagged.printers;
 
-import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
-
-import javax.xml.bind.DatatypeConverter;
 import java.io.IOException;
 import java.io.OutputStream;
 
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
 public class PrintTools {
     public static enum CASE {
         LOWER_CASE,

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/csv/ADatePrinter.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/csv/ADatePrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/csv/ADatePrinter.java
index 37af669..a63b0bc 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/csv/ADatePrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/csv/ADatePrinter.java
@@ -16,7 +16,6 @@ package edu.uci.ics.asterix.dataflow.data.nontagged.printers.csv;
 
 import java.io.PrintStream;
 
-import edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt32SerializerDeserializer;
 import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
 import edu.uci.ics.hyracks.algebricks.data.IPrinter;
 

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/csv/ADateTimePrinter.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/csv/ADateTimePrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/csv/ADateTimePrinter.java
index e90c586..1cbafcb 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/csv/ADateTimePrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/csv/ADateTimePrinter.java
@@ -16,7 +16,6 @@ package edu.uci.ics.asterix.dataflow.data.nontagged.printers.csv;
 
 import java.io.PrintStream;
 
-import edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt64SerializerDeserializer;
 import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
 import edu.uci.ics.hyracks.algebricks.data.IPrinter;
 

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/csv/AIntervalPrinter.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/csv/AIntervalPrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/csv/AIntervalPrinter.java
index c1793c9..7080b16 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/csv/AIntervalPrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/csv/AIntervalPrinter.java
@@ -16,8 +16,6 @@ package edu.uci.ics.asterix.dataflow.data.nontagged.printers.csv;
 
 import java.io.PrintStream;
 
-import edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt8SerializerDeserializer;
-import edu.uci.ics.asterix.om.types.ATypeTag;
 import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
 import edu.uci.ics.hyracks.algebricks.data.IPrinter;
 

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/csv/AObjectPrinter.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/csv/AObjectPrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/csv/AObjectPrinter.java
index dbf6729..8b543da 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/csv/AObjectPrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/csv/AObjectPrinter.java
@@ -93,6 +93,9 @@ public class AObjectPrinter implements IPrinter {
                 ADayTimeDurationPrinter.INSTANCE.print(b, s, l, ps);
                 break;
             }
+            case INTERVAL:
+                AIntervalPrinter.INSTANCE.print(b, s, l, ps);
+                break;
             case POINT: {
                 APointPrinter.INSTANCE.print(b, s, l, ps);
                 break;
@@ -113,6 +116,9 @@ public class AObjectPrinter implements IPrinter {
                 ACirclePrinter.INSTANCE.print(b, s, l, ps);
                 break;
             }
+            case RECTANGLE:
+                ARectanglePrinter.INSTANCE.print(b, s, l, ps);
+                break;
             case STRING: {
                 AStringPrinter.INSTANCE.print(b, s, l, ps);
                 break;
@@ -122,9 +128,24 @@ public class AObjectPrinter implements IPrinter {
                 recordPrinter.print(b, s, l, ps);
                 break;
             }
-            default: {
+            case ANY:
+            case BINARY:
+            case BITARRAY:
+            case ENUM:
+            case ORDEREDLIST:
+            case SHORTWITHOUTTYPEINFO:
+            case SPARSERECORD:
+            case SYSTEM_NULL:
+            case TYPE:
+            case UINT16:
+            case UINT32:
+            case UINT64:
+            case UINT8:
+            case UNION:
+            case UNORDEREDLIST:
+            case UUID:
+            case UUID_STRING:
                 throw new NotImplementedException("No printer for type " + typeTag);
-            }
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADayTimeDurationPrinter.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADayTimeDurationPrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADayTimeDurationPrinter.java
index 50f994f..bd5c69c 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADayTimeDurationPrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADayTimeDurationPrinter.java
@@ -26,7 +26,6 @@ public class ADayTimeDurationPrinter implements IPrinter {
 
     @Override
     public void init() throws AlgebricksException {
-        // TODO Auto-generated method stub
 
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADurationPrinter.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADurationPrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADurationPrinter.java
index 01850bc..58e83ec 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADurationPrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADurationPrinter.java
@@ -38,7 +38,7 @@ public class ADurationPrinter implements IPrinter {
         ps.print("{ \"duration\": { ");
         ps.print("\"months\": ");
         ps.print(months);
-        ps.print("\"millis\": ");
+        ps.print(", \"millis\": ");
         ps.print(milliseconds);
         ps.print("} }");
     }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AObjectPrinter.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AObjectPrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AObjectPrinter.java
index 7c38a34..85cbcfb 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AObjectPrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AObjectPrinter.java
@@ -96,7 +96,11 @@ public class AObjectPrinter implements IPrinter {
                 ADayTimeDurationPrinter.INSTANCE.print(b, s, l, ps);
                 break;
             }
-            case POINT: {
+            case INTERVAL: {
+                AIntervalPrinter.INSTANCE.print(b, s, l, ps);
+                break;
+            }
+             case POINT: {
                 APointPrinter.INSTANCE.print(b, s, l, ps);
                 break;
             }
@@ -116,6 +120,10 @@ public class AObjectPrinter implements IPrinter {
                 ACirclePrinter.INSTANCE.print(b, s, l, ps);
                 break;
             }
+            case RECTANGLE: {
+                ARectanglePrinter.INSTANCE.print(b, s, l, ps);
+                break;
+            }
             case STRING: {
                 AStringPrinter.INSTANCE.print(b, s, l, ps);
                 break;
@@ -139,9 +147,21 @@ public class AObjectPrinter implements IPrinter {
                 unorderedListPrinter.print(b, s, l, ps);
                 break;
             }
-            default: {
+            case ANY:
+            case BITARRAY:
+            case ENUM:
+            case SHORTWITHOUTTYPEINFO:
+            case SPARSERECORD:
+            case SYSTEM_NULL:
+            case TYPE:
+            case UINT16:
+            case UINT32:
+            case UINT64:
+            case UINT8:
+            case UNION:
+            case UUID:
+            case UUID_STRING:
                 throw new NotImplementedException("No printer for type " + typeTag);
-            }
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlCSVPrinterFactoryProvider.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlCSVPrinterFactoryProvider.java b/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlCSVPrinterFactoryProvider.java
index 371aa5d..2f120cc 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlCSVPrinterFactoryProvider.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlCSVPrinterFactoryProvider.java
@@ -28,6 +28,7 @@ import edu.uci.ics.asterix.dataflow.data.nontagged.printers.csv.AInt16PrinterFac
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.csv.AInt32PrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.csv.AInt64PrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.csv.AInt8PrinterFactory;
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.csv.AIntervalPrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.csv.ALinePrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.csv.ANullPrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.csv.ANullableFieldPrinterFactory;
@@ -62,8 +63,6 @@ public class AqlCSVPrinterFactoryProvider implements IPrinterFactoryProvider {
 
         if (aqlType != null) {
             switch (aqlType.getTypeTag()) {
-            // case ANYTYPE:
-            // return AAnyTypePrinterFactory.INSTANCE;
                 case INT8:
                     return AInt8PrinterFactory.INSTANCE;
                 case INT16:
@@ -92,6 +91,8 @@ public class AqlCSVPrinterFactoryProvider implements IPrinterFactoryProvider {
                     return AYearMonthDurationPrinterFactory.INSTANCE;
                 case DAYTIMEDURATION:
                     return ADayTimeDurationPrinterFactory.INSTANCE;
+                case INTERVAL:
+                    return AIntervalPrinterFactory.INSTANCE;
                 case POINT:
                     return APointPrinterFactory.INSTANCE;
                 case POINT3D:
@@ -123,6 +124,20 @@ public class AqlCSVPrinterFactoryProvider implements IPrinterFactoryProvider {
                 }
                 case SHORTWITHOUTTYPEINFO:
                     return ShortWithoutTypeInfoPrinterFactory.INSTANCE;
+                case ANY:
+                case BINARY:
+                case BITARRAY:
+                case ENUM:
+                case SPARSERECORD:
+                case SYSTEM_NULL:
+                case TYPE:
+                case UINT16:
+                case UINT32:
+                case UINT64:
+                case UINT8:
+                case UUID_STRING:
+                    // These types are not intended to be printed to the user.
+                    break;
             }
         }
         return AObjectPrinterFactory.INSTANCE;

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlJSONPrinterFactoryProvider.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlJSONPrinterFactoryProvider.java b/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlJSONPrinterFactoryProvider.java
index 9ae9dbc..15bab45 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlJSONPrinterFactoryProvider.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlJSONPrinterFactoryProvider.java
@@ -29,6 +29,7 @@ import edu.uci.ics.asterix.dataflow.data.nontagged.printers.json.AInt16PrinterFa
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.json.AInt32PrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.json.AInt64PrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.json.AInt8PrinterFactory;
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.json.AIntervalPrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.json.ALinePrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.json.ANullPrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.json.ANullableFieldPrinterFactory;
@@ -67,8 +68,6 @@ public class AqlJSONPrinterFactoryProvider implements IPrinterFactoryProvider {
 
         if (aqlType != null) {
             switch (aqlType.getTypeTag()) {
-            // case ANYTYPE:
-            // return AAnyTypePrinterFactory.INSTANCE;
                 case INT8:
                     return AInt8PrinterFactory.INSTANCE;
                 case INT16:
@@ -97,6 +96,8 @@ public class AqlJSONPrinterFactoryProvider implements IPrinterFactoryProvider {
                     return AYearMonthDurationPrinterFactory.INSTANCE;
                 case DAYTIMEDURATION:
                     return ADayTimeDurationPrinterFactory.INSTANCE;
+                case INTERVAL:
+                    return AIntervalPrinterFactory.INSTANCE;
                 case POINT:
                     return APointPrinterFactory.INSTANCE;
                 case POINT3D:
@@ -130,9 +131,21 @@ public class AqlJSONPrinterFactoryProvider implements IPrinterFactoryProvider {
                 }
                 case SHORTWITHOUTTYPEINFO:
                     return ShortWithoutTypeInfoPrinterFactory.INSTANCE;
+                case ANY:
+                case BITARRAY:
+                case ENUM:
+                case SPARSERECORD:
+                case SYSTEM_NULL:
+                case TYPE:
+                case UINT16:
+                case UINT32:
+                case UINT64:
+                case UINT8:
+                case UUID_STRING:
+                    // These types are not intended to be printed to the user.
+                    break;
             }
         }
         return AObjectPrinterFactory.INSTANCE;
-
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/900bf134/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlPrinterFactoryProvider.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlPrinterFactoryProvider.java b/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlPrinterFactoryProvider.java
index bf941d0..24a0561 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlPrinterFactoryProvider.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/formats/nontagged/AqlPrinterFactoryProvider.java
@@ -19,6 +19,7 @@ import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ABooleanPrinterFacto
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ACirclePrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ADatePrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ADateTimePrinterFactory;
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ADayTimeDurationPrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ADoublePrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ADurationPrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.AFloatPrinterFactory;
@@ -42,6 +43,7 @@ import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ATimePrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.AUUIDPrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.AUnionPrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.AUnorderedlistPrinterFactory;
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.AYearMonthDurationPrinterFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.printers.ShortWithoutTypeInfoPrinterFactory;
 import edu.uci.ics.asterix.om.types.AOrderedListType;
 import edu.uci.ics.asterix.om.types.ARecordType;
@@ -66,8 +68,6 @@ public class AqlPrinterFactoryProvider implements IPrinterFactoryProvider {
 
         if (aqlType != null) {
             switch (aqlType.getTypeTag()) {
-                // case ANYTYPE:
-                // return AAnyTypePrinterFactory.INSTANCE;
                 case INT8:
                     return AInt8PrinterFactory.INSTANCE;
                 case INT16:
@@ -92,6 +92,10 @@ public class AqlPrinterFactoryProvider implements IPrinterFactoryProvider {
                     return ADateTimePrinterFactory.INSTANCE;
                 case DURATION:
                     return ADurationPrinterFactory.INSTANCE;
+                case DAYTIMEDURATION:
+                    return ADayTimeDurationPrinterFactory.INSTANCE;
+                case YEARMONTHDURATION:
+                    return AYearMonthDurationPrinterFactory.INSTANCE;
                 case INTERVAL:
                     return AIntervalPrinterFactory.INSTANCE;
                 case POINT:
@@ -127,6 +131,19 @@ public class AqlPrinterFactoryProvider implements IPrinterFactoryProvider {
                 }
                 case SHORTWITHOUTTYPEINFO:
                     return ShortWithoutTypeInfoPrinterFactory.INSTANCE;
+                case ANY:
+                case BITARRAY:
+                case ENUM:
+                case SPARSERECORD:
+                case SYSTEM_NULL:
+                case TYPE:
+                case UINT16:
+                case UINT32:
+                case UINT64:
+                case UINT8:
+                case UUID_STRING:
+                    // These types are not intended to be printed to the user.
+                    break;
             }
         }
         return AObjectPrinterFactory.INSTANCE;