abdullah alamoudi has uploaded a new change for review.

  https://asterix-gerrit.ics.uci.edu/1031

Change subject: Refactor Metadata Record Types
......................................................................

Refactor Metadata Record Types

Change-Id: I10bc8c0bc255a377dba724f04b6b588910f26cb2
---
M 
asterixdb/asterix-app/src/test/resources/metadata/results/basic/metadata_datatype/metadata_datatype.1.adm
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataRecordTypes.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatasetTupleTranslator.java
M 
asterixdb/asterix-metadata/src/test/java/org/apache/asterix/metadata/entitytupletranslators/DatasetTupleTranslatorTest.java
M 
asterixdb/asterix-metadata/src/test/java/org/apache/asterix/metadata/entitytupletranslators/IndexTupleTranslatorTest.java
6 files changed, 454 insertions(+), 426 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/31/1031/1

diff --git 
a/asterixdb/asterix-app/src/test/resources/metadata/results/basic/metadata_datatype/metadata_datatype.1.adm
 
b/asterixdb/asterix-app/src/test/resources/metadata/results/basic/metadata_datatype/metadata_datatype.1.adm
index 6e9a38b..1920bab 100644
--- 
a/asterixdb/asterix-app/src/test/resources/metadata/results/basic/metadata_datatype/metadata_datatype.1.adm
+++ 
b/asterixdb/asterix-app/src/test/resources/metadata/results/basic/metadata_datatype/metadata_datatype.1.adm
@@ -1,62 +1,64 @@
-{ "DataverseName": "Metadata", "DatatypeName": "CompactionPolicyRecordType", 
"Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, 
"Fields": [ { "FieldName": "DataverseName", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "CompactionPolicy", "FieldType": 
"string", "IsNullable": false }, { "FieldName": "Classname", "FieldType": 
"string", "IsNullable": false } ] } }, "Timestamp": "Thu Dec 17 12:12:59 PST 
2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType", "Derived": 
{ "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": 
[ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false }, 
{ "FieldName": "DatasetName", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "DatatypeDataverseName", "FieldType": "string", "IsNullable": 
false }, { "FieldName": "DatatypeName", "FieldType": "string", "IsNullable": 
false }, { "FieldName": "DatasetType", "FieldType": "string", "IsNullable": 
false }, { "FieldName": "GroupName", "FieldType": "string", "IsNullable": false 
}, { "FieldName": "CompactionPolicy", "FieldType": "string", "IsNullable": 
false }, { "FieldName": "CompactionPolicyProperties", "FieldType": 
"DatasetRecordType_CompactionPolicyProperties", "IsNullable": false }, { 
"FieldName": "InternalDetails", "FieldType": 
"DatasetRecordType_InternalDetails", "IsNullable": true }, { "FieldName": 
"ExternalDetails", "FieldType":
  "DatasetRecordType_ExternalDetails", "IsNullable": true }, { "FieldName": 
"Hints", "FieldType": "DatasetRecordType_Hints", "IsNullable": false }, { 
"FieldName": "Timestamp", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "DatasetId", "FieldType": "int32", "IsNullable": false }, { 
"FieldName": "PendingOp", "FieldType": "int32", "IsNullable": false } ] } }, 
"Timestamp": "Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": 
"DatasetRecordType_CompactionPolicyProperties", "Derived": { "Tag": 
"ORDEREDLIST", "IsAnonymous": true, "OrderedList": 
"DatasetRecordType_CompactionPolicyProperties_Item" }, "Timestamp": "Thu Dec 17 
12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": 
"DatasetRecordType_CompactionPolicyProperties_Item", "Derived": { "Tag": 
"RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { 
"FieldName": "Name", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "Value", "FieldType": "string", "IsNullable": false } ] } }, 
"Timestamp": "Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": 
"DatasetRecordType_ExternalDetails", "Derived": { "Tag": "RECORD", 
"IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": 
"DatasourceAdapter", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "Properties", "FieldType": 
"DatasetRecordType_ExternalDetails_Properties", "IsNullable": false }, { 
"FieldName": "LastRefreshTime", "FieldType": "datetime", "IsNullable": false }, 
{ "FieldName": "TransactionState", "FieldType": "int32", "IsNullable": false } 
] } }, "Timestamp": "Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": 
"DatasetRecordType_ExternalDetails_Properties", "Derived": { "Tag": 
"ORDEREDLIST", "IsAnonymous": true, "OrderedList": 
"DatasetRecordType_ExternalDetails_Properties_Item" }, "Timestamp": "Thu Dec 17 
12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": 
"DatasetRecordType_ExternalDetails_Properties_Item", "Derived": { "Tag": 
"RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { 
"FieldName": "Name", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "Value", "FieldType": "string", "IsNullable": false } ] } }, 
"Timestamp": "Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_Hints", 
"Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": 
"DatasetRecordType_Hints_Item" }, "Timestamp": "Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_Hints_Item", 
"Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, 
"Fields": [ { "FieldName": "Name", "FieldType": "string", "IsNullable": false 
}, { "FieldName": "Value", "FieldType": "string", "IsNullable": false } ] } }, 
"Timestamp": "Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": 
"DatasetRecordType_InternalDetails", "Derived": { "Tag": "RECORD", 
"IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": 
"FileStructure", "FieldType": "string", "IsNullable": false }, { "FieldName": 
"PartitioningStrategy", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "PartitioningKey", "FieldType": 
"DatasetRecordType_InternalDetails_PartitioningKey", "IsNullable": false }, { 
"FieldName": "PrimaryKey", "FieldType": 
"DatasetRecordType_InternalDetails_PartitioningKey", "IsNullable": false }, { 
"FieldName": "Autogenerated", "FieldType": "boolean", "IsNullable": false } ] } 
}, "Timestamp": "Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": 
"DatasetRecordType_InternalDetails_PartitioningKey", "Derived": { "Tag": 
"ORDEREDLIST", "IsAnonymous": true, "OrderedList": 
"DatasetRecordType_InternalDetails_PartitioningKey_Item" }, "Timestamp": "Thu 
Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": 
"DatasetRecordType_InternalDetails_PartitioningKey_Item", "Derived": { "Tag": 
"ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" }, "Timestamp": 
"Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "DatasourceAdapterRecordType", 
"Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, 
"Fields": [ { "FieldName": "DataverseName", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "Name", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "Classname", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "Type", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "Timestamp", "FieldType": "string", 
"IsNullable": false } ] } }, "Timestamp": "Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "DatatypeRecordType", 
"Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, 
"Fields": [ { "FieldName": "DataverseName", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "DatatypeName", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "Derived", "FieldType": 
"DatatypeRecordType_Derived", "IsNullable": true }, { "FieldName": "Timestamp", 
"FieldType": "string", "IsNullable": false } ] } }, "Timestamp": "Thu Dec 17 
12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "DatatypeRecordType_Derived", 
"Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, 
"Fields": [ { "FieldName": "Tag", "FieldType": "string", "IsNullable": false }, 
{ "FieldName": "IsAnonymous", "FieldType": "boolean", "IsNullable": false }, { 
"FieldName": "Record", "FieldType": "DatatypeRecordType_Derived_Record", 
"IsNullable": true }, { "FieldName": "UnorderedList", "FieldType": "string", 
"IsNullable": true }, { "FieldName": "OrderedList", "FieldType": "string", 
"IsNullable": true } ] } }, "Timestamp": "Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": 
"DatatypeRecordType_Derived_Record", "Derived": { "Tag": "RECORD", 
"IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": 
"IsOpen", "FieldType": "boolean", "IsNullable": false }, { "FieldName": 
"Fields", "FieldType": "DatatypeRecordType_Derived_Record_Fields", 
"IsNullable": false } ] } }, "Timestamp": "Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": 
"DatatypeRecordType_Derived_Record_Fields", "Derived": { "Tag": "ORDEREDLIST", 
"IsAnonymous": true, "OrderedList": 
"DatatypeRecordType_Derived_Record_Fields_Item" }, "Timestamp": "Thu Dec 17 
12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": 
"DatatypeRecordType_Derived_Record_Fields_Item", "Derived": { "Tag": "RECORD", 
"IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": 
"FieldName", "FieldType": "string", "IsNullable": false }, { "FieldName": 
"FieldType", "FieldType": "string", "IsNullable": false }, { "FieldName": 
"IsNullable", "FieldType": "boolean", "IsNullable": false } ] } }, "Timestamp": 
"Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "DataverseRecordType", 
"Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, 
"Fields": [ { "FieldName": "DataverseName", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "DataFormat", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "Timestamp", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "PendingOp", "FieldType": "int32", 
"IsNullable": false } ] } }, "Timestamp": "Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "ExternalFileRecordType", 
"Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, 
"Fields": [ { "FieldName": "DataverseName", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "DatasetName", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "FileNumber", "FieldType": "int32", 
"IsNullable": false }, { "FieldName": "FileName", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "FileSize", "FieldType": "int64", 
"IsNullable": false }, { "FieldName": "FileModTime", "FieldType": "datetime", 
"IsNullable": false }, { "FieldName": "PendingOp", "FieldType": "int32", 
"IsNullable": false } ] } }, "Timestamp": "Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "FeedPolicyRecordType", 
"Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, 
"Fields": [ { "FieldName": "DataverseName", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "PolicyName", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "Description", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "Properties", "FieldType": 
"FeedPolicyRecordType_Properties", "IsNullable": false } ] } }, "Timestamp": 
"Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": 
"FeedPolicyRecordType_Properties", "Derived": { "Tag": "UNORDEREDLIST", 
"IsAnonymous": true, "UnorderedList": "FeedPolicyRecordType_Properties_Item" }, 
"Timestamp": "Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": 
"FeedPolicyRecordType_Properties_Item", "Derived": { "Tag": "RECORD", 
"IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": 
"Name", "FieldType": "string", "IsNullable": false }, { "FieldName": "Value", 
"FieldType": "string", "IsNullable": false } ] } }, "Timestamp": "Thu Dec 17 
12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "FeedRecordType", "Derived": { 
"Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ 
{ "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "FeedName", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "Function", "FieldType": "string", "IsNullable": true }, { 
"FieldName": "FeedType", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "PrimaryTypeDetails", "FieldType": 
"FeedRecordType_PrimaryTypeDetails", "IsNullable": true }, { "FieldName": 
"SecondaryTypeDetails", "FieldType": "FeedRecordType_SecondaryTypeDetails", 
"IsNullable": true }, { "FieldName": "Timestamp", "FieldType": "string", 
"IsNullable": false } ] } }, "Timestamp": "Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": 
"FeedRecordType_PrimaryTypeDetails", "Derived": { "Tag": "RECORD", 
"IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": 
"AdapterName", "FieldType": "string", "IsNullable": false }, { "FieldName": 
"AdapterConfiguration", "FieldType": 
"FeedRecordType_PrimaryTypeDetails_AdapterConfiguration", "IsNullable": false } 
] } }, "Timestamp": "Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": 
"FeedRecordType_PrimaryTypeDetails_AdapterConfiguration", "Derived": { "Tag": 
"UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": 
"DatasetRecordType_ExternalDetails_Properties_Item" }, "Timestamp": "Thu Dec 17 
12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": 
"FeedRecordType_SecondaryTypeDetails", "Derived": { "Tag": "RECORD", 
"IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": 
"SourceFeedName", "FieldType": "string", "IsNullable": false } ] } }, 
"Timestamp": "Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "FunctionRecordType", 
"Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, 
"Fields": [ { "FieldName": "DataverseName", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "Name", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "Arity", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "Params", "FieldType": 
"FunctionRecordType_Params", "IsNullable": false }, { "FieldName": 
"ReturnType", "FieldType": "string", "IsNullable": false }, { "FieldName": 
"Definition", "FieldType": "string", "IsNullable": false }, { "FieldName": 
"Language", "FieldType": "string", "IsNullable": false }, { "FieldName": 
"Kind", "FieldType": "string", "IsNullable": false } ] } }, "Timestamp": "Thu 
Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "FunctionRecordType_Params", 
"Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" 
}, "Timestamp": "Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "IndexRecordType", "Derived": { 
"Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ 
{ "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "DatasetName", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "IndexName", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "IndexStructure", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "SearchKey", "FieldType": "IndexRecordType_SearchKey", 
"IsNullable": false }, { "FieldName": "IsPrimary", "FieldType": "boolean", 
"IsNullable": false }, { "FieldName": "Timestamp", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "PendingOp", "FieldType": "int32", 
"IsNullable": false } ] } }, "Timestamp": "Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "IndexRecordType_SearchKey", 
"Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": 
"IndexRecordType_SearchKey_Item" }, "Timestamp": "Thu Dec 17 12:12:59 PST 2015" 
}
-{ "DataverseName": "Metadata", "DatatypeName": 
"IndexRecordType_SearchKey_Item", "Derived": { "Tag": "ORDEREDLIST", 
"IsAnonymous": true, "OrderedList": "string" }, "Timestamp": "Thu Dec 17 
12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "LibraryRecordType", "Derived": 
{ "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": 
[ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false }, 
{ "FieldName": "Name", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "Timestamp", "FieldType": "string", "IsNullable": false } ] } }, 
"Timestamp": "Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "NodeGroupRecordType", 
"Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, 
"Fields": [ { "FieldName": "GroupName", "FieldType": "string", "IsNullable": 
false }, { "FieldName": "NodeNames", "FieldType": 
"NodeGroupRecordType_NodeNames", "IsNullable": false }, { "FieldName": 
"Timestamp", "FieldType": "string", "IsNullable": false } ] } }, "Timestamp": 
"Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": 
"NodeGroupRecordType_NodeNames", "Derived": { "Tag": "UNORDEREDLIST", 
"IsAnonymous": true, "UnorderedList": "string" }, "Timestamp": "Thu Dec 17 
12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "NodeRecordType", "Derived": { 
"Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ 
{ "FieldName": "NodeName", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "NumberOfCores", "FieldType": "int64", "IsNullable": false }, { 
"FieldName": "WorkingMemorySize", "FieldType": "int64", "IsNullable": false } ] 
} }, "Timestamp": "Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "binary", "Timestamp": "Thu Dec 
17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "boolean", "Timestamp": "Thu 
Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "circle", "Timestamp": "Thu Dec 
17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "date", "Timestamp": "Thu Dec 
17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "datetime", "Timestamp": "Thu 
Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "day-time-duration", 
"Timestamp": "Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "double", "Timestamp": "Thu Dec 
17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "duration", "Timestamp": "Thu 
Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "float", "Timestamp": "Thu Dec 
17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "int16", "Timestamp": "Thu Dec 
17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "int32", "Timestamp": "Thu Dec 
17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "int64", "Timestamp": "Thu Dec 
17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "int8", "Timestamp": "Thu Dec 
17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "interval", "Timestamp": "Thu 
Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "line", "Timestamp": "Thu Dec 
17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "missing", "Timestamp": "Mon 
Apr 25 14:46:17 PDT 2016" }
-{ "DataverseName": "Metadata", "DatatypeName": "null", "Timestamp": "Thu Dec 
17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "point", "Timestamp": "Thu Dec 
17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "point3d", "Timestamp": "Thu 
Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "polygon", "Timestamp": "Thu 
Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "rectangle", "Timestamp": "Thu 
Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "shortwithouttypeinfo", 
"Timestamp": "Thu Dec 17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "string", "Timestamp": "Thu Dec 
17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "time", "Timestamp": "Thu Dec 
17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "uuid", "Timestamp": "Thu Dec 
17 12:12:59 PST 2015" }
-{ "DataverseName": "Metadata", "DatatypeName": "year-month-duration", 
"Timestamp": "Thu Dec 17 12:12:59 PST 2015" }
+{ "DataverseName": "Metadata", "DatatypeName": "CompactionPolicyRecordType", 
"Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, 
"Fields": [ { "FieldName": "DataverseName", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "CompactionPolicy", "FieldType": 
"string", "IsNullable": false }, { "FieldName": "Classname", "FieldType": 
"string", "IsNullable": false } ] } }, "Timestamp": "Wed Jul 27 00:27:47 AST 
2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType", "Derived": 
{ "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": 
[ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false }, 
{ "FieldName": "DatasetName", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "DatatypeDataverseName", "FieldType": "string", "IsNullable": 
false }, { "FieldName": "DatatypeName", "FieldType": "string", "IsNullable": 
false }, { "FieldName": "DatasetType", "FieldType": "string", "IsNullable": 
false }, { "FieldName": "GroupName", "FieldType": "string", "IsNullable": false 
}, { "FieldName": "CompactionPolicy", "FieldType": "string", "IsNullable": 
false }, { "FieldName": "CompactionPolicyProperties", "FieldType": 
"DatasetRecordType_CompactionPolicyProperties", "IsNullable": false }, { 
"FieldName": "InternalDetails", "FieldType": 
"DatasetRecordType_InternalDetails", "IsNullable": true }, { "FieldName": 
"ExternalDetails", "FieldType":
  "DatasetRecordType_ExternalDetails", "IsNullable": true }, { "FieldName": 
"Hints", "FieldType": "DatasetRecordType_Hints", "IsNullable": false }, { 
"FieldName": "Timestamp", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "DatasetId", "FieldType": "int32", "IsNullable": false }, { 
"FieldName": "PendingOp", "FieldType": "int32", "IsNullable": false } ] } }, 
"Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": 
"DatasetRecordType_CompactionPolicyProperties", "Derived": { "Tag": 
"ORDEREDLIST", "IsAnonymous": true, "OrderedList": 
"DatasetRecordType_CompactionPolicyProperties_Item" }, "Timestamp": "Wed Jul 27 
00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": 
"DatasetRecordType_CompactionPolicyProperties_Item", "Derived": { "Tag": 
"RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { 
"FieldName": "Name", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "Value", "FieldType": "string", "IsNullable": false } ] } }, 
"Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": 
"DatasetRecordType_ExternalDetails", "Derived": { "Tag": "RECORD", 
"IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": 
"DatasourceAdapter", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "Properties", "FieldType": 
"DatasetRecordType_ExternalDetails_Properties", "IsNullable": false }, { 
"FieldName": "LastRefreshTime", "FieldType": "datetime", "IsNullable": false }, 
{ "FieldName": "TransactionState", "FieldType": "int32", "IsNullable": false } 
] } }, "Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": 
"DatasetRecordType_ExternalDetails_Properties", "Derived": { "Tag": 
"ORDEREDLIST", "IsAnonymous": true, "OrderedList": 
"DatasetRecordType_ExternalDetails_Properties_Item" }, "Timestamp": "Wed Jul 27 
00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": 
"DatasetRecordType_ExternalDetails_Properties_Item", "Derived": { "Tag": 
"RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { 
"FieldName": "Name", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "Value", "FieldType": "string", "IsNullable": false } ] } }, 
"Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_Hints", 
"Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": 
"DatasetRecordType_Hints_Item" }, "Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_Hints_Item", 
"Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, 
"Fields": [ { "FieldName": "Name", "FieldType": "string", "IsNullable": false 
}, { "FieldName": "Value", "FieldType": "string", "IsNullable": false } ] } }, 
"Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": 
"DatasetRecordType_InternalDetails", "Derived": { "Tag": "RECORD", 
"IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": 
"FileStructure", "FieldType": "string", "IsNullable": false }, { "FieldName": 
"PartitioningStrategy", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "PartitioningKey", "FieldType": 
"DatasetRecordType_InternalDetails_PartitioningKey", "IsNullable": false }, { 
"FieldName": "PrimaryKey", "FieldType": 
"DatasetRecordType_InternalDetails_PrimaryKey", "IsNullable": false }, { 
"FieldName": "Autogenerated", "FieldType": "boolean", "IsNullable": false } ] } 
}, "Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": 
"DatasetRecordType_InternalDetails_PartitioningKey", "Derived": { "Tag": 
"ORDEREDLIST", "IsAnonymous": true, "OrderedList": 
"DatasetRecordType_InternalDetails_PartitioningKey_Item" }, "Timestamp": "Wed 
Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": 
"DatasetRecordType_InternalDetails_PartitioningKey_Item", "Derived": { "Tag": 
"ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" }, "Timestamp": 
"Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": 
"DatasetRecordType_InternalDetails_PrimaryKey", "Derived": { "Tag": 
"ORDEREDLIST", "IsAnonymous": true, "OrderedList": 
"DatasetRecordType_InternalDetails_PrimaryKey_Item" }, "Timestamp": "Wed Jul 27 
00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": 
"DatasetRecordType_InternalDetails_PrimaryKey_Item", "Derived": { "Tag": 
"ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" }, "Timestamp": 
"Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatasourceAdapterRecordType", 
"Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, 
"Fields": [ { "FieldName": "DataverseName", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "Name", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "Classname", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "Type", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "Timestamp", "FieldType": "string", 
"IsNullable": false } ] } }, "Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatatypeRecordType", 
"Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, 
"Fields": [ { "FieldName": "DataverseName", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "DatatypeName", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "Derived", "FieldType": 
"DatatypeRecordType_Derived", "IsNullable": true }, { "FieldName": "Timestamp", 
"FieldType": "string", "IsNullable": false } ] } }, "Timestamp": "Wed Jul 27 
00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DatatypeRecordType_Derived", 
"Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, 
"Fields": [ { "FieldName": "Tag", "FieldType": "string", "IsNullable": false }, 
{ "FieldName": "IsAnonymous", "FieldType": "boolean", "IsNullable": false }, { 
"FieldName": "Record", "FieldType": "DatatypeRecordType_Derived_Record", 
"IsNullable": true }, { "FieldName": "UnorderedList", "FieldType": "string", 
"IsNullable": true }, { "FieldName": "OrderedList", "FieldType": "string", 
"IsNullable": true } ] } }, "Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": 
"DatatypeRecordType_Derived_Record", "Derived": { "Tag": "RECORD", 
"IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": 
"IsOpen", "FieldType": "boolean", "IsNullable": false }, { "FieldName": 
"Fields", "FieldType": "DatatypeRecordType_Derived_Record_Fields", 
"IsNullable": false } ] } }, "Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": 
"DatatypeRecordType_Derived_Record_Fields", "Derived": { "Tag": "ORDEREDLIST", 
"IsAnonymous": true, "OrderedList": 
"DatatypeRecordType_Derived_Record_Fields_Item" }, "Timestamp": "Wed Jul 27 
00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": 
"DatatypeRecordType_Derived_Record_Fields_Item", "Derived": { "Tag": "RECORD", 
"IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": 
"FieldName", "FieldType": "string", "IsNullable": false }, { "FieldName": 
"FieldType", "FieldType": "string", "IsNullable": false }, { "FieldName": 
"IsNullable", "FieldType": "boolean", "IsNullable": false } ] } }, "Timestamp": 
"Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "DataverseRecordType", 
"Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, 
"Fields": [ { "FieldName": "DataverseName", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "DataFormat", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "Timestamp", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "PendingOp", "FieldType": "int32", 
"IsNullable": false } ] } }, "Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "ExternalFileRecordType", 
"Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, 
"Fields": [ { "FieldName": "DataverseName", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "DatasetName", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "FileNumber", "FieldType": "int32", 
"IsNullable": false }, { "FieldName": "FileName", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "FileSize", "FieldType": "int64", 
"IsNullable": false }, { "FieldName": "FileModTime", "FieldType": "datetime", 
"IsNullable": false }, { "FieldName": "PendingOp", "FieldType": "int32", 
"IsNullable": false } ] } }, "Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "FeedPolicyRecordType", 
"Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, 
"Fields": [ { "FieldName": "DataverseName", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "PolicyName", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "Description", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "Properties", "FieldType": 
"FeedPolicyRecordType_Properties", "IsNullable": false } ] } }, "Timestamp": 
"Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": 
"FeedPolicyRecordType_Properties", "Derived": { "Tag": "UNORDEREDLIST", 
"IsAnonymous": true, "UnorderedList": "FeedPolicyRecordType_Properties_Item" }, 
"Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": 
"FeedPolicyRecordType_Properties_Item", "Derived": { "Tag": "RECORD", 
"IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": 
"Name", "FieldType": "string", "IsNullable": false }, { "FieldName": "Value", 
"FieldType": "string", "IsNullable": false } ] } }, "Timestamp": "Wed Jul 27 
00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "FeedRecordType", "Derived": { 
"Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ 
{ "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "FeedName", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "Function", "FieldType": "string", "IsNullable": true }, { 
"FieldName": "FeedType", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "PrimaryTypeDetails", "FieldType": 
"FeedRecordType_PrimaryTypeDetails", "IsNullable": true }, { "FieldName": 
"SecondaryTypeDetails", "FieldType": "FeedRecordType_SecondaryTypeDetails", 
"IsNullable": true }, { "FieldName": "Timestamp", "FieldType": "string", 
"IsNullable": false } ] } }, "Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": 
"FeedRecordType_PrimaryTypeDetails", "Derived": { "Tag": "RECORD", 
"IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": 
"AdapterName", "FieldType": "string", "IsNullable": false }, { "FieldName": 
"AdapterConfiguration", "FieldType": 
"FeedRecordType_PrimaryTypeDetails_AdapterConfiguration", "IsNullable": false } 
] } }, "Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": 
"FeedRecordType_PrimaryTypeDetails_AdapterConfiguration", "Derived": { "Tag": 
"UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": 
"DatasetRecordType_ExternalDetails_Properties_Item" }, "Timestamp": "Wed Jul 27 
00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": 
"FeedRecordType_SecondaryTypeDetails", "Derived": { "Tag": "RECORD", 
"IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": 
"SourceFeedName", "FieldType": "string", "IsNullable": false } ] } }, 
"Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "FunctionRecordType", 
"Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, 
"Fields": [ { "FieldName": "DataverseName", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "Name", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "Arity", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "Params", "FieldType": 
"FunctionRecordType_Params", "IsNullable": false }, { "FieldName": 
"ReturnType", "FieldType": "string", "IsNullable": false }, { "FieldName": 
"Definition", "FieldType": "string", "IsNullable": false }, { "FieldName": 
"Language", "FieldType": "string", "IsNullable": false }, { "FieldName": 
"Kind", "FieldType": "string", "IsNullable": false } ] } }, "Timestamp": "Wed 
Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "FunctionRecordType_Params", 
"Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" 
}, "Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "IndexRecordType", "Derived": { 
"Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ 
{ "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "DatasetName", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "IndexName", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "IndexStructure", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "SearchKey", "FieldType": "IndexRecordType_SearchKey", 
"IsNullable": false }, { "FieldName": "IsPrimary", "FieldType": "boolean", 
"IsNullable": false }, { "FieldName": "Timestamp", "FieldType": "string", 
"IsNullable": false }, { "FieldName": "PendingOp", "FieldType": "int32", 
"IsNullable": false } ] } }, "Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "IndexRecordType_SearchKey", 
"Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": 
"IndexRecordType_SearchKey_Item" }, "Timestamp": "Wed Jul 27 00:27:47 AST 2016" 
}
+{ "DataverseName": "Metadata", "DatatypeName": 
"IndexRecordType_SearchKey_Item", "Derived": { "Tag": "ORDEREDLIST", 
"IsAnonymous": true, "OrderedList": "string" }, "Timestamp": "Wed Jul 27 
00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "LibraryRecordType", "Derived": 
{ "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": 
[ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false }, 
{ "FieldName": "Name", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "Timestamp", "FieldType": "string", "IsNullable": false } ] } }, 
"Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "NodeGroupRecordType", 
"Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, 
"Fields": [ { "FieldName": "GroupName", "FieldType": "string", "IsNullable": 
false }, { "FieldName": "NodeNames", "FieldType": 
"NodeGroupRecordType_NodeNames", "IsNullable": false }, { "FieldName": 
"Timestamp", "FieldType": "string", "IsNullable": false } ] } }, "Timestamp": 
"Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": 
"NodeGroupRecordType_NodeNames", "Derived": { "Tag": "UNORDEREDLIST", 
"IsAnonymous": true, "UnorderedList": "string" }, "Timestamp": "Wed Jul 27 
00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "NodeRecordType", "Derived": { 
"Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ 
{ "FieldName": "NodeName", "FieldType": "string", "IsNullable": false }, { 
"FieldName": "NumberOfCores", "FieldType": "int64", "IsNullable": false }, { 
"FieldName": "WorkingMemorySize", "FieldType": "int64", "IsNullable": false } ] 
} }, "Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "binary", "Timestamp": "Wed Jul 
27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "boolean", "Timestamp": "Wed 
Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "circle", "Timestamp": "Wed Jul 
27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "date", "Timestamp": "Wed Jul 
27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "datetime", "Timestamp": "Wed 
Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "day-time-duration", 
"Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "double", "Timestamp": "Wed Jul 
27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "duration", "Timestamp": "Wed 
Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "float", "Timestamp": "Wed Jul 
27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "int16", "Timestamp": "Wed Jul 
27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "int32", "Timestamp": "Wed Jul 
27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "int64", "Timestamp": "Wed Jul 
27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "int8", "Timestamp": "Wed Jul 
27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "interval", "Timestamp": "Wed 
Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "line", "Timestamp": "Wed Jul 
27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "missing", "Timestamp": "Wed 
Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "null", "Timestamp": "Wed Jul 
27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "point", "Timestamp": "Wed Jul 
27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "point3d", "Timestamp": "Wed 
Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "polygon", "Timestamp": "Wed 
Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "rectangle", "Timestamp": "Wed 
Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "shortwithouttypeinfo", 
"Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "string", "Timestamp": "Wed Jul 
27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "time", "Timestamp": "Wed Jul 
27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "uuid", "Timestamp": "Wed Jul 
27 00:27:47 AST 2016" }
+{ "DataverseName": "Metadata", "DatatypeName": "year-month-duration", 
"Timestamp": "Wed Jul 27 00:27:47 AST 2016" }
diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
index 07d0364..c180be4 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
@@ -24,7 +24,6 @@
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Set;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -137,11 +136,6 @@
         runtimeContext = (IAsterixAppRuntimeContext) 
ncApplicationContext.getApplicationObject();
         propertiesProvider = asterixPropertiesProvider;
 
-        // Initialize static metadata objects, such as record types and 
metadata
-        // index descriptors.
-        // The order of these calls is important because the index descriptors
-        // rely on the type type descriptors.
-        MetadataRecordTypes.init();
         MetadataPrimaryIndexes.init();
         initLocalIndexArrays();
 
diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataRecordTypes.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataRecordTypes.java
index 4c636d5..14ef049 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataRecordTypes.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataRecordTypes.java
@@ -19,192 +19,136 @@
 
 package org.apache.asterix.metadata.bootstrap;
 
-import org.apache.asterix.common.exceptions.AsterixException;
-import org.apache.asterix.metadata.MetadataException;
 import org.apache.asterix.om.types.AOrderedListType;
 import org.apache.asterix.om.types.ARecordType;
 import org.apache.asterix.om.types.AUnionType;
 import org.apache.asterix.om.types.AUnorderedListType;
 import org.apache.asterix.om.types.BuiltinType;
 import org.apache.asterix.om.types.IAType;
-import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 /**
  * Contains static ARecordType's of all metadata record types.
  */
 public final class MetadataRecordTypes {
-    public static ARecordType DATAVERSE_RECORDTYPE;
-    public static ARecordType DATASET_RECORDTYPE;
-    public static ARecordType INTERNAL_DETAILS_RECORDTYPE;
-    public static ARecordType EXTERNAL_DETAILS_RECORDTYPE;
-    public static ARecordType FEED_DETAILS_RECORDTYPE;
-    public static ARecordType DATASET_HINTS_RECORDTYPE;
-    public static ARecordType COMPACTION_POLICY_PROPERTIES_RECORDTYPE;
-    public static ARecordType DATASOURCE_ADAPTER_PROPERTIES_RECORDTYPE;
-    public static ARecordType FIELD_RECORDTYPE;
-    public static ARecordType RECORD_RECORDTYPE;
-    public static ARecordType DERIVEDTYPE_RECORDTYPE;
-    public static ARecordType DATATYPE_RECORDTYPE;
-    public static ARecordType INDEX_RECORDTYPE;
-    public static ARecordType NODE_RECORDTYPE;
-    public static ARecordType NODEGROUP_RECORDTYPE;
-    public static ARecordType FUNCTION_RECORDTYPE;
-    public static ARecordType DATASOURCE_ADAPTER_RECORDTYPE;
-    public static ARecordType FEED_RECORDTYPE;
-    public static ARecordType PRIMARY_FEED_DETAILS_RECORDTYPE;
-    public static ARecordType SECONDARY_FEED_DETAILS_RECORDTYPE;
-    public static ARecordType FEED_ADAPTER_CONFIGURATION_RECORDTYPE;
-    public static ARecordType FEED_POLICY_RECORDTYPE;
-    public static ARecordType POLICY_PARAMS_RECORDTYPE;
-    public static ARecordType LIBRARY_RECORDTYPE;
-    public static ARecordType COMPACTION_POLICY_RECORDTYPE;
-    public static ARecordType EXTERNAL_FILE_RECORDTYPE;
 
-    /**
-     * Create all metadata record types.
-     *
-     * @throws HyracksDataException
-     */
-    public static void init() throws MetadataException, HyracksDataException {
-        // Attention: The order of these calls is important because some types
-        // depend on other types being created first.
-        // These calls are one "dependency chain".
-        try {
-            POLICY_PARAMS_RECORDTYPE = createPropertiesRecordType();
-            DATASOURCE_ADAPTER_PROPERTIES_RECORDTYPE = 
createPropertiesRecordType();
-            COMPACTION_POLICY_PROPERTIES_RECORDTYPE = 
createPropertiesRecordType();
-            INTERNAL_DETAILS_RECORDTYPE = createInternalDetailsRecordType();
-            EXTERNAL_DETAILS_RECORDTYPE = createExternalDetailsRecordType();
-            FEED_DETAILS_RECORDTYPE = createFeedDetailsRecordType();
-            DATASET_HINTS_RECORDTYPE = createPropertiesRecordType();
-            DATASET_RECORDTYPE = createDatasetRecordType();
+    //--------------------------------------- Fields Names 
--------------------------------------//
+    public static final String FIELD_NAME_ADAPTER_CONFIGURATION = 
"AdapterConfiguration";
+    public static final String FIELD_NAME_ADAPTER_NAME = "AdapterName";
+    public static final String FIELD_NAME_ARITY = "Arity";
+    public static final String FIELD_NAME_AUTOGENERATED = "Autogenerated";
+    public static final String FIELD_NAME_CLASSNAME = "Classname";
+    public static final String FIELD_NAME_COMPACTION_POLICY = 
"CompactionPolicy";
+    public static final String FIELD_NAME_COMPACTION_POLICY_PROPERTIES = 
"CompactionPolicyProperties";
+    public static final String FIELD_NAME_DATASET_ID = "DatasetId";
+    public static final String FIELD_NAME_DATASET_NAME = "DatasetName";
+    public static final String FIELD_NAME_DATASET_TYPE = "DatasetType";
+    public static final String FIELD_NAME_DATASOURCE_ADAPTER = 
"DatasourceAdapter";
+    public static final String FIELD_NAME_DATATYPE_DATAVERSE_NAME = 
"DatatypeDataverseName";
+    public static final String FIELD_NAME_DATATYPE_NAME = "DatatypeName";
+    public static final String FIELD_NAME_DATAVERSE_NAME = "DataverseName";
+    public static final String FIELD_NAME_DATA_FORMAT = "DataFormat";
+    public static final String FIELD_NAME_DEFINITION = "Definition";
+    public static final String FIELD_NAME_DERIVED = "Derived";
+    public static final String FIELD_NAME_DESCRIPTION = "Description";
+    public static final String FIELD_NAME_EXTERNAL_DETAILS = "ExternalDetails";
+    public static final String FIELD_NAME_FEED_NAME = "FeedName";
+    public static final String FIELD_NAME_FEED_TYPE = "FeedType";
+    public static final String FIELD_NAME_FIELDS = "Fields";
+    public static final String FIELD_NAME_FIELD_NAME = "FieldName";
+    public static final String FIELD_NAME_FIELD_TYPE = "FieldType";
+    public static final String FIELD_NAME_FILE_MOD_TIME = "FileModTime";
+    public static final String FIELD_NAME_FILE_NAME = "FileName";
+    public static final String FIELD_NAME_FILE_NUMBER = "FileNumber";
+    public static final String FIELD_NAME_FILE_SIZE = "FileSize";
+    public static final String FIELD_NAME_FILE_STRUCTURE = "FileStructure";
+    public static final String FIELD_NAME_FUNCTION = "Function";
+    public static final String FIELD_NAME_GROUP_NAME = "GroupName";
+    public static final String FIELD_NAME_HINTS = "Hints";
+    public static final String FIELD_NAME_INDEX_NAME = "IndexName";
+    public static final String FIELD_NAME_INDEX_STRUCTURE = "IndexStructure";
+    public static final String FIELD_NAME_INTERNAL_DETAILS = "InternalDetails";
+    public static final String FIELD_NAME_IS_ANONYMOUS = "IsAnonymous";
+    public static final String FIELD_NAME_IS_NULLABLE = "IsNullable";
+    public static final String FIELD_NAME_IS_OPEN = "IsOpen";
+    public static final String FIELD_NAME_IS_PRIMARY = "IsPrimary";
+    public static final String FIELD_NAME_KIND = "Kind";
+    public static final String FIELD_NAME_LANGUAGE = "Language";
+    public static final String FIELD_NAME_LAST_REFRESH_TIME = 
"LastRefreshTime";
+    public static final String FIELD_NAME_METADATA_DATAVERSE = 
"MetatypeDataverseName";
+    public static final String FIELD_NAME_METATYPE_NAME = "MetatypeName";
+    public static final String FIELD_NAME_NAME = "Name";
+    public static final String FIELD_NAME_NODE_NAME = "NodeName";
+    public static final String FIELD_NAME_NODE_NAMES = "NodeNames";
+    public static final String FIELD_NAME_NUMBER_OF_CORES = "NumberOfCores";
+    public static final String FIELD_NAME_ORDERED_LIST = "OrderedList";
+    public static final String FIELD_NAME_PARAMS = "Params";
+    public static final String FIELD_NAME_PARTITIONING_KEY = "PartitioningKey";
+    public static final String FIELD_NAME_PARTITIONING_STRATEGY = 
"PartitioningStrategy";
+    public static final String FIELD_NAME_PENDING_OP = "PendingOp";
+    public static final String FIELD_NAME_POLICY_NAME = "PolicyName";
+    public static final String FIELD_NAME_PRIMARY_KEY = "PrimaryKey";
+    public static final String FIELD_NAME_PRIMARY_TYPE_DETAILS = 
"PrimaryTypeDetails";
+    public static final String FIELD_NAME_PROPERTIES = "Properties";
+    public static final String FIELD_NAME_RECORD = "Record";
+    public static final String FIELD_NAME_RETURN_TYPE = "ReturnType";
+    public static final String FIELD_NAME_SEARCH_KEY = "SearchKey";
+    public static final String FIELD_NAME_SECONDARY_TYPE_DETAILS = 
"SecondaryTypeDetails";
+    public static final String FIELD_NAME_SOURCE_FEED_NAME = "SourceFeedName";
+    public static final String FIELD_NAME_STATUS = "Status";
+    public static final String FIELD_NAME_TAG = "Tag";
+    public static final String FIELD_NAME_TIMESTAMP = "Timestamp";
+    public static final String FIELD_NAME_TRANSACTION_STATE = 
"TransactionState";
+    public static final String FIELD_NAME_TYPE = "Type";
+    public static final String FIELD_NAME_UNORDERED_LIST = "UnorderedList";
+    public static final String FIELD_NAME_VALUE = "Value";
+    public static final String FIELD_NAME_WORKING_MEMORY_SIZE = 
"WorkingMemorySize";
 
-            // Starting another dependency chain.
-            FIELD_RECORDTYPE = createFieldRecordType();
-            RECORD_RECORDTYPE = createRecordTypeRecordType();
-            DERIVEDTYPE_RECORDTYPE = createDerivedTypeRecordType();
-            DATATYPE_RECORDTYPE = createDatatypeRecordType();
-
-            // Independent of any other types.
-            DATAVERSE_RECORDTYPE = createDataverseRecordType();
-            INDEX_RECORDTYPE = createIndexRecordType();
-            NODE_RECORDTYPE = createNodeRecordType();
-            NODEGROUP_RECORDTYPE = createNodeGroupRecordType();
-            FUNCTION_RECORDTYPE = createFunctionRecordType();
-            DATASOURCE_ADAPTER_RECORDTYPE = 
createDatasourceAdapterRecordType();
-
-            FEED_ADAPTER_CONFIGURATION_RECORDTYPE = 
createPropertiesRecordType();
-            PRIMARY_FEED_DETAILS_RECORDTYPE = 
createPrimaryFeedDetailsRecordType();
-            SECONDARY_FEED_DETAILS_RECORDTYPE = 
createSecondaryFeedDetailsRecordType();
-            FEED_RECORDTYPE = createFeedRecordType();
-            FEED_POLICY_RECORDTYPE = createFeedPolicyRecordType();
-            LIBRARY_RECORDTYPE = createLibraryRecordType();
-
-            COMPACTION_POLICY_RECORDTYPE = createCompactionPolicyRecordType();
-
-            EXTERNAL_FILE_RECORDTYPE = createExternalFileRecordType();
-
-            //generate nested type names
-            DATASET_RECORDTYPE.generateNestedDerivedTypeNames();
-            DATATYPE_RECORDTYPE.generateNestedDerivedTypeNames();
-            DATAVERSE_RECORDTYPE.generateNestedDerivedTypeNames();
-            INDEX_RECORDTYPE.generateNestedDerivedTypeNames();
-            NODE_RECORDTYPE.generateNestedDerivedTypeNames();
-            NODEGROUP_RECORDTYPE.generateNestedDerivedTypeNames();
-            FUNCTION_RECORDTYPE.generateNestedDerivedTypeNames();
-            DATASOURCE_ADAPTER_RECORDTYPE.generateNestedDerivedTypeNames();
-            FEED_RECORDTYPE.generateNestedDerivedTypeNames();
-            PRIMARY_FEED_DETAILS_RECORDTYPE.generateNestedDerivedTypeNames();
-            SECONDARY_FEED_DETAILS_RECORDTYPE.generateNestedDerivedTypeNames();
-            FEED_POLICY_RECORDTYPE.generateNestedDerivedTypeNames();
-            LIBRARY_RECORDTYPE.generateNestedDerivedTypeNames();
-            COMPACTION_POLICY_RECORDTYPE.generateNestedDerivedTypeNames();
-            EXTERNAL_FILE_RECORDTYPE.generateNestedDerivedTypeNames();
-        } catch (AsterixException e) {
-            throw new MetadataException(e);
-        }
-    }
-
-    public static final int FEED_POLICY_ARECORD_DATAVERSE_NAME_FIELD_INDEX = 0;
-    public static final int FEED_POLICY_ARECORD_POLICY_NAME_FIELD_INDEX = 1;
-    public static final int FEED_POLICY_ARECORD_DESCRIPTION_FIELD_INDEX = 2;
-    public static final int FEED_POLICY_ARECORD_PROPERTIES_FIELD_INDEX = 3;
-
-    private static ARecordType createFeedPolicyRecordType() throws 
AsterixException {
-        AUnorderedListType listPropertiesType = new 
AUnorderedListType(POLICY_PARAMS_RECORDTYPE, null);
-        String[] fieldNames = { "DataverseName", "PolicyName", "Description", 
"Properties" };
-        IAType[] fieldTypes = { BuiltinType.ASTRING, BuiltinType.ASTRING, 
BuiltinType.ASTRING, listPropertiesType };
-        return new ARecordType("FeedPolicyRecordType", fieldNames, fieldTypes, 
true);
-    }
-
-    // Helper constants for accessing fields in an ARecord of type
-    // DataverseRecordType.
-    public static final int DATAVERSE_ARECORD_NAME_FIELD_INDEX = 0;
-    public static final int DATAVERSE_ARECORD_FORMAT_FIELD_INDEX = 1;
-    public static final int DATAVERSE_ARECORD_TIMESTAMP_FIELD_INDEX = 2;
-    public static final int DATAVERSE_ARECORD_PENDINGOP_FIELD_INDEX = 3;
-
-    private static final ARecordType createDataverseRecordType() throws 
AsterixException {
-        return new ARecordType("DataverseRecordType",
-                new String[] { "DataverseName", "DataFormat", "Timestamp", 
"PendingOp" },
-                new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, 
BuiltinType.ASTRING, BuiltinType.AINT32 },
-                true);
-    }
-
-    // Helper constants for accessing fields in an ARecord of anonymous type
-    // dataset properties.
-    // Used for dataset hints or dataset adapter properties.
+    //---------------------------------- Record Types Creation 
----------------------------------//
+    //--------------------------------------- Properties 
----------------------------------------//
     public static final int PROPERTIES_NAME_FIELD_INDEX = 0;
     public static final int PROPERTIES_VALUE_FIELD_INDEX = 1;
+    public static final ARecordType POLICY_PARAMS_RECORDTYPE = 
createPropertiesRecordType();
+    public static final ARecordType DATASOURCE_ADAPTER_PROPERTIES_RECORDTYPE = 
createPropertiesRecordType();
+    public static final ARecordType COMPACTION_POLICY_PROPERTIES_RECORDTYPE = 
createPropertiesRecordType();
+    public static final ARecordType DATASET_HINTS_RECORDTYPE = 
createPropertiesRecordType();
+    public static final ARecordType FEED_ADAPTER_CONFIGURATION_RECORDTYPE = 
createPropertiesRecordType();
 
-    private static final ARecordType createPropertiesRecordType() throws 
AsterixException {
-        String[] fieldNames = { "Name", "Value" };
-        IAType[] fieldTypes = { BuiltinType.ASTRING, BuiltinType.ASTRING };
-        return new ARecordType(null, fieldNames, fieldTypes, true);
-    };
-
-    // Helper constants for accessing fields in an ARecord of anonymous type
-    // internal details.
+    //----------------------------- Internal Details Record Type 
--------------------------------//
     public static final int INTERNAL_DETAILS_ARECORD_FILESTRUCTURE_FIELD_INDEX 
= 0;
     public static final int 
INTERNAL_DETAILS_ARECORD_PARTITIONSTRATEGY_FIELD_INDEX = 1;
     public static final int INTERNAL_DETAILS_ARECORD_PARTITIONKEY_FIELD_INDEX 
= 2;
     public static final int INTERNAL_DETAILS_ARECORD_PRIMARYKEY_FIELD_INDEX = 
3;
     public static final int INTERNAL_DETAILS_ARECORD_AUTOGENERATED_FIELD_INDEX 
= 4;
+    public static final ARecordType INTERNAL_DETAILS_RECORDTYPE = 
createRecordType(
+            // RecordTypeName
+            null,
+            // FieldNames
+            new String[] { FIELD_NAME_FILE_STRUCTURE, 
FIELD_NAME_PARTITIONING_STRATEGY, FIELD_NAME_PARTITIONING_KEY,
+                    FIELD_NAME_PRIMARY_KEY, FIELD_NAME_AUTOGENERATED },
+            // FieldTypes
+            new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING,
+                    new AOrderedListType(new 
AOrderedListType(BuiltinType.ASTRING, null), null),
+                    new AOrderedListType(new 
AOrderedListType(BuiltinType.ASTRING, null), null), BuiltinType.ABOOLEAN },
+            //IsOpen?
+            true);
 
-    private static final ARecordType createInternalDetailsRecordType() throws 
AsterixException {
-        AOrderedListType olType = new AOrderedListType(BuiltinType.ASTRING, 
null);
-        AOrderedListType ololType = new AOrderedListType(olType, null);
-        String[] fieldNames = { "FileStructure", "PartitioningStrategy", 
"PartitioningKey", "PrimaryKey",
-                "Autogenerated" };
-        IAType[] fieldTypes = { BuiltinType.ASTRING, BuiltinType.ASTRING, 
ololType, ololType, BuiltinType.ABOOLEAN };
-        return new ARecordType(null, fieldNames, fieldTypes, true);
-    }
-
-    // Helper constants for accessing fields in an ARecord of anonymous type
-    // external details.
+    //----------------------------- External Details Record Type 
--------------------------------//
     public static final int 
EXTERNAL_DETAILS_ARECORD_DATASOURCE_ADAPTER_FIELD_INDEX = 0;
     public static final int EXTERNAL_DETAILS_ARECORD_PROPERTIES_FIELD_INDEX = 
1;
     public static final int 
EXTERNAL_DETAILS_ARECORD_LAST_REFRESH_TIME_FIELD_INDEX = 2;
     public static final int 
EXTERNAL_DETAILS_ARECORD_TRANSACTION_STATE_FIELD_INDEX = 3;
-
-    private static final ARecordType createExternalDetailsRecordType() throws 
AsterixException {
-        AOrderedListType orderedPropertyListType = new 
AOrderedListType(DATASOURCE_ADAPTER_PROPERTIES_RECORDTYPE, null);
-        String[] fieldNames = { "DatasourceAdapter", "Properties", 
"LastRefreshTime", "TransactionState", };
-        IAType[] fieldTypes = { BuiltinType.ASTRING, orderedPropertyListType, 
BuiltinType.ADATETIME,
-                BuiltinType.AINT32 };
-        return new ARecordType(null, fieldNames, fieldTypes, true);
-    }
-
-    public static final int 
COMPACTION_POLICY_ARECORD_DATAVERSE_NAME_FIELD_INDEX = 0;
-    public static final int COMPACTION_POLICY_ARECORD_POLICY_NAME_FIELD_INDEX 
= 1;
-    public static final int COMPACTION_POLICY_ARECORD_CLASSNAME_FIELD_INDEX = 
2;
-
-    private static ARecordType createCompactionPolicyRecordType() throws 
AsterixException {
-        String[] fieldNames = { "DataverseName", "CompactionPolicy", 
"Classname" };
-        IAType[] fieldTypes = { BuiltinType.ASTRING, BuiltinType.ASTRING, 
BuiltinType.ASTRING };
-        return new ARecordType("CompactionPolicyRecordType", fieldNames, 
fieldTypes, true);
-    }
-
+    public static final ARecordType EXTERNAL_DETAILS_RECORDTYPE = 
createRecordType(
+            // RecordTypeName
+            null,
+            // FieldNames
+            new String[] { FIELD_NAME_DATASOURCE_ADAPTER, 
FIELD_NAME_PROPERTIES, FIELD_NAME_LAST_REFRESH_TIME,
+                    FIELD_NAME_TRANSACTION_STATE },
+            // FieldTypes
+            new IAType[] { BuiltinType.ASTRING, new 
AOrderedListType(DATASOURCE_ADAPTER_PROPERTIES_RECORDTYPE, null),
+                    BuiltinType.ADATETIME, BuiltinType.AINT32 },
+            //IsOpen?
+            true);
+    //-------------------------------------- Feed Details 
---------------------------------------//
     public static final int FEED_DETAILS_ARECORD_FILESTRUCTURE_FIELD_INDEX = 0;
     public static final int FEED_DETAILS_ARECORD_PARTITIONSTRATEGY_FIELD_INDEX 
= 1;
     public static final int FEED_DETAILS_ARECORD_PARTITIONKEY_FIELD_INDEX = 2;
@@ -216,25 +160,25 @@
     public static final int FEED_DETAILS_ARECORD_STATE_FIELD_INDEX = 8;
     public static final int FEED_DETAILS_ARECORD_COMPACTION_POLICY_FIELD_INDEX 
= 9;
     public static final int 
FEED_DETAILS_ARECORD_COMPACTION_POLICY_PROPERTIES_FIELD_INDEX = 10;
+    public static final ARecordType FEED_DETAILS_RECORDTYPE = createRecordType(
+            // RecordTypeName
+            null,
+            // FieldNames
+            new String[] { FIELD_NAME_FILE_STRUCTURE, 
FIELD_NAME_PARTITIONING_STRATEGY, FIELD_NAME_PARTITIONING_KEY,
+                    FIELD_NAME_PRIMARY_KEY, FIELD_NAME_GROUP_NAME, 
FIELD_NAME_DATASOURCE_ADAPTER, FIELD_NAME_PROPERTIES,
+                    FIELD_NAME_FUNCTION, FIELD_NAME_STATUS, 
FIELD_NAME_COMPACTION_POLICY,
+                    FIELD_NAME_COMPACTION_POLICY_PROPERTIES },
+            // FieldTypes
+            new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, new 
AOrderedListType(BuiltinType.ASTRING, null),
+                    new AOrderedListType(BuiltinType.ASTRING, null), 
BuiltinType.ASTRING, BuiltinType.ASTRING,
+                    new 
AOrderedListType(DATASOURCE_ADAPTER_PROPERTIES_RECORDTYPE, null),
+                    AUnionType.createUnknownableType(BuiltinType.ASTRING), 
BuiltinType.ASTRING, BuiltinType.ASTRING,
+                    new 
AOrderedListType(COMPACTION_POLICY_PROPERTIES_RECORDTYPE, null) },
+            //IsOpen?
+            true);
 
-    private static final ARecordType createFeedDetailsRecordType() throws 
AsterixException {
-        AOrderedListType orderedListType = new 
AOrderedListType(BuiltinType.ASTRING, null);
-        AOrderedListType orderedListOfPropertiesType = new 
AOrderedListType(DATASOURCE_ADAPTER_PROPERTIES_RECORDTYPE,
-                null);
-        AOrderedListType compactionPolicyPropertyListType = new 
AOrderedListType(
-                COMPACTION_POLICY_PROPERTIES_RECORDTYPE, null);
-        String[] fieldNames = { "FileStructure", "PartitioningStrategy", 
"PartitioningKey", "PrimaryKey", "GroupName",
-                "DatasourceAdapter", "Properties", "Function", "Status", 
"CompactionPolicy",
-                "CompactionPolicyProperties" };
-
-        IAType feedFunctionUnion = 
AUnionType.createUnknownableType(BuiltinType.ASTRING);
-
-        IAType[] fieldTypes = { BuiltinType.ASTRING, BuiltinType.ASTRING, 
orderedListType, orderedListType,
-                BuiltinType.ASTRING, BuiltinType.ASTRING, 
orderedListOfPropertiesType, feedFunctionUnion,
-                BuiltinType.ASTRING, BuiltinType.ASTRING, 
compactionPolicyPropertyListType };
-        return new ARecordType(null, fieldNames, fieldTypes, true);
-    }
-
+    //---------------------------------------- Dataset 
------------------------------------------//
+    public static final String RECORD_NAME_DATASET = "DatasetRecordType";
     public static final int DATASET_ARECORD_DATAVERSENAME_FIELD_INDEX = 0;
     public static final int DATASET_ARECORD_DATASETNAME_FIELD_INDEX = 1;
     public static final int DATASET_ARECORD_DATATYPEDATAVERSENAME_FIELD_INDEX 
= 2;
@@ -249,86 +193,106 @@
     public static final int DATASET_ARECORD_TIMESTAMP_FIELD_INDEX = 11;
     public static final int DATASET_ARECORD_DATASETID_FIELD_INDEX = 12;
     public static final int DATASET_ARECORD_PENDINGOP_FIELD_INDEX = 13;
-    public static final String 
DATASET_ARECORD_METATYPEDATAVERSENAME_FIELD_NAME = "MetatypeDataverseName";
-    public static final String DATASET_ARECORD_METATYPENAME_FIELD_NAME = 
"MetatypeName";
+    public static final ARecordType DATASET_RECORDTYPE = createRecordType(
+            // RecordTypeName
+            RECORD_NAME_DATASET,
+            // FieldNames
+            new String[] { FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_DATASET_NAME, 
FIELD_NAME_DATATYPE_DATAVERSE_NAME,
+                    FIELD_NAME_DATATYPE_NAME, FIELD_NAME_DATASET_TYPE, 
FIELD_NAME_GROUP_NAME,
+                    FIELD_NAME_COMPACTION_POLICY, 
FIELD_NAME_COMPACTION_POLICY_PROPERTIES, FIELD_NAME_INTERNAL_DETAILS,
+                    FIELD_NAME_EXTERNAL_DETAILS, FIELD_NAME_HINTS, 
FIELD_NAME_TIMESTAMP, FIELD_NAME_DATASET_ID,
+                    FIELD_NAME_PENDING_OP },
+            // FieldTypes
+            new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, 
BuiltinType.ASTRING, BuiltinType.ASTRING,
+                    BuiltinType.ASTRING, BuiltinType.ASTRING, 
BuiltinType.ASTRING,
+                    new 
AOrderedListType(COMPACTION_POLICY_PROPERTIES_RECORDTYPE, null),
+                    
AUnionType.createUnknownableType(INTERNAL_DETAILS_RECORDTYPE),
+                    
AUnionType.createUnknownableType(EXTERNAL_DETAILS_RECORDTYPE),
+                    new AUnorderedListType(DATASET_HINTS_RECORDTYPE, null), 
BuiltinType.ASTRING, BuiltinType.AINT32,
+                    BuiltinType.AINT32 },
+            //IsOpen?
+            true);
 
-    private static final ARecordType createDatasetRecordType() throws 
AsterixException {
-        String[] fieldNames = { "DataverseName", "DatasetName", 
"DatatypeDataverseName", "DatatypeName", "DatasetType",
-                "GroupName", "CompactionPolicy", "CompactionPolicyProperties", 
"InternalDetails", "ExternalDetails",
-                "Hints", "Timestamp", "DatasetId", "PendingOp" };
-
-        IAType internalRecordUnion = 
AUnionType.createUnknownableType(INTERNAL_DETAILS_RECORDTYPE);
-        IAType externalRecordUnion = 
AUnionType.createUnknownableType(EXTERNAL_DETAILS_RECORDTYPE);
-        AOrderedListType compactionPolicyPropertyListType = new 
AOrderedListType(
-                COMPACTION_POLICY_PROPERTIES_RECORDTYPE, null);
-
-        AUnorderedListType unorderedListOfHintsType = new 
AUnorderedListType(DATASET_HINTS_RECORDTYPE, null);
-
-        IAType[] fieldTypes = { BuiltinType.ASTRING, BuiltinType.ASTRING, 
BuiltinType.ASTRING, BuiltinType.ASTRING,
-                BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING, 
compactionPolicyPropertyListType,
-                internalRecordUnion, externalRecordUnion, 
unorderedListOfHintsType, BuiltinType.ASTRING,
-                BuiltinType.AINT32, BuiltinType.AINT32 };
-        return new ARecordType("DatasetRecordType", fieldNames, fieldTypes, 
true);
-    }
-
-    // Helper constants for accessing fields in an ARecord of anonymous type
-    // field type.
+    //------------------------------------------ Field 
------------------------------------------//
     public static final int FIELD_ARECORD_FIELDNAME_FIELD_INDEX = 0;
     public static final int FIELD_ARECORD_FIELDTYPE_FIELD_INDEX = 1;
     public static final int FIELD_ARECORD_ISNULLABLE_FIELD_INDEX = 2;
-
-    private static final ARecordType createFieldRecordType() throws 
AsterixException {
-        String[] fieldNames = { "FieldName", "FieldType", "IsNullable" };
-        IAType[] fieldTypes = { BuiltinType.ASTRING, BuiltinType.ASTRING, 
BuiltinType.ABOOLEAN };
-        return new ARecordType(null, fieldNames, fieldTypes, true);
-    };
-
-    // Helper constants for accessing fields in an ARecord of anonymous type
-    // record type.
+    public static final ARecordType FIELD_RECORDTYPE = createRecordType(
+            // RecordTypeName
+            null,
+            // FieldNames
+            new String[] { FIELD_NAME_FIELD_NAME, FIELD_NAME_FIELD_TYPE, 
FIELD_NAME_IS_NULLABLE },
+            // FieldTypes
+            new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, 
BuiltinType.ABOOLEAN },
+            //IsOpen?
+            true);
+    //---------------------------------------- Record Type 
--------------------------------------//
     public static final int RECORDTYPE_ARECORD_ISOPEN_FIELD_INDEX = 0;
     public static final int RECORDTYPE_ARECORD_FIELDS_FIELD_INDEX = 1;
+    public static final ARecordType RECORD_RECORDTYPE = createRecordType(
+            // RecordTypeName
+            null,
+            // FieldNames
+            new String[] { FIELD_NAME_IS_OPEN, FIELD_NAME_FIELDS },
+            // FieldTypes
+            new IAType[] { BuiltinType.ABOOLEAN, new 
AOrderedListType(FIELD_RECORDTYPE, null) },
+            //IsOpen?
+            true);
 
-    private static final ARecordType createRecordTypeRecordType() throws 
AsterixException {
-        AOrderedListType olType = new AOrderedListType(FIELD_RECORDTYPE, null);
-        String[] fieldNames = { "IsOpen", "Fields" };
-        IAType[] fieldTypes = { BuiltinType.ABOOLEAN, olType };
-        return new ARecordType(null, fieldNames, fieldTypes, true);
-    };
-
-    // Helper constants for accessing fields in an ARecord of anonymous type
-    // derived type.
+    //-------------------------------------- Derived Type 
---------------------------------------//
     public static final int DERIVEDTYPE_ARECORD_TAG_FIELD_INDEX = 0;
     public static final int DERIVEDTYPE_ARECORD_ISANONYMOUS_FIELD_INDEX = 1;
     public static final int DERIVEDTYPE_ARECORD_RECORD_FIELD_INDEX = 2;
     public static final int DERIVEDTYPE_ARECORD_UNORDEREDLIST_FIELD_INDEX = 3;
     public static final int DERIVEDTYPE_ARECORD_ORDEREDLIST_FIELD_INDEX = 4;
-
-    private static final ARecordType createDerivedTypeRecordType() throws 
AsterixException {
-        String[] fieldNames = { "Tag", "IsAnonymous", "Record", 
"UnorderedList", "OrderedList" };
-        IAType recordUnion = 
AUnionType.createUnknownableType(RECORD_RECORDTYPE);
-        IAType collectionUnion = 
AUnionType.createUnknownableType(BuiltinType.ASTRING);
-
-        IAType[] fieldTypes = { BuiltinType.ASTRING, BuiltinType.ABOOLEAN, 
recordUnion, collectionUnion,
-                collectionUnion };
-        return new ARecordType(null, fieldNames, fieldTypes, true);
-    };
-
-    // Helper constants for accessing fields in an ARecord of type
-    // DatatypeRecordType.
+    public static final ARecordType DERIVEDTYPE_RECORDTYPE = createRecordType(
+            // RecordTypeName
+            null,
+            // FieldNames
+            new String[] { FIELD_NAME_TAG, FIELD_NAME_IS_ANONYMOUS, 
FIELD_NAME_RECORD, FIELD_NAME_UNORDERED_LIST,
+                    FIELD_NAME_ORDERED_LIST },
+            // FieldTypes
+            new IAType[] { BuiltinType.ASTRING, BuiltinType.ABOOLEAN,
+                    AUnionType.createUnknownableType(RECORD_RECORDTYPE),
+                    AUnionType.createUnknownableType(BuiltinType.ASTRING),
+                    AUnionType.createUnknownableType(BuiltinType.ASTRING) },
+            //IsOpen?
+            true);
+    //---------------------------------------- Data Type 
----------------------------------------//
+    public static final String RECORD_NAME_DATATYPE = "DatatypeRecordType";
     public static final int DATATYPE_ARECORD_DATAVERSENAME_FIELD_INDEX = 0;
     public static final int DATATYPE_ARECORD_DATATYPENAME_FIELD_INDEX = 1;
     public static final int DATATYPE_ARECORD_DERIVED_FIELD_INDEX = 2;
     public static final int DATATYPE_ARECORD_TIMESTAMP_FIELD_INDEX = 3;
-
-    private static final ARecordType createDatatypeRecordType() throws 
AsterixException {
-        String[] fieldNames = { "DataverseName", "DatatypeName", "Derived", 
"Timestamp" };
-        IAType recordUnion = 
AUnionType.createUnknownableType(DERIVEDTYPE_RECORDTYPE);
-        IAType[] fieldTypes = { BuiltinType.ASTRING, BuiltinType.ASTRING, 
recordUnion, BuiltinType.ASTRING };
-        return new ARecordType("DatatypeRecordType", fieldNames, fieldTypes, 
true);
-    };
-
-    // Helper constants for accessing fields in an ARecord of type
-    // IndexRecordType.
+    public static final ARecordType DATATYPE_RECORDTYPE = createRecordType(
+            // RecordTypeName
+            RECORD_NAME_DATATYPE,
+            // FieldNames
+            new String[] { FIELD_NAME_DATAVERSE_NAME, 
FIELD_NAME_DATATYPE_NAME, FIELD_NAME_DERIVED,
+                    FIELD_NAME_TIMESTAMP },
+            // FieldTypes
+            new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING,
+                    AUnionType.createUnknownableType(DERIVEDTYPE_RECORDTYPE), 
BuiltinType.ASTRING },
+            //IsOpen?
+            true);
+    //-------------------------------------- Dataverse 
------------------------------------------//
+    public static final String RECORD_NAME_DATAVERSE = "DataverseRecordType";
+    public static final int DATAVERSE_ARECORD_NAME_FIELD_INDEX = 0;
+    public static final int DATAVERSE_ARECORD_FORMAT_FIELD_INDEX = 1;
+    public static final int DATAVERSE_ARECORD_TIMESTAMP_FIELD_INDEX = 2;
+    public static final int DATAVERSE_ARECORD_PENDINGOP_FIELD_INDEX = 3;
+    public static final ARecordType DATAVERSE_RECORDTYPE = createRecordType(
+            // RecordTypeName
+            RECORD_NAME_DATAVERSE,
+            // FieldNames
+            new String[] { FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_DATA_FORMAT, 
FIELD_NAME_TIMESTAMP,
+                    FIELD_NAME_PENDING_OP },
+            // FieldTypes
+            new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, 
BuiltinType.ASTRING, BuiltinType.AINT32 },
+            //IsOpen?
+            true);
+    //-------------------------------------------- Index 
----------------------------------------//
+    public static final String RECORD_NAME_INDEX = "IndexRecordType";
     public static final int INDEX_ARECORD_DATAVERSENAME_FIELD_INDEX = 0;
     public static final int INDEX_ARECORD_DATASETNAME_FIELD_INDEX = 1;
     public static final int INDEX_ARECORD_INDEXNAME_FIELD_INDEX = 2;
@@ -337,48 +301,50 @@
     public static final int INDEX_ARECORD_ISPRIMARY_FIELD_INDEX = 5;
     public static final int INDEX_ARECORD_TIMESTAMP_FIELD_INDEX = 6;
     public static final int INDEX_ARECORD_PENDINGOP_FIELD_INDEX = 7;
-
-    private static final ARecordType createIndexRecordType() throws 
AsterixException {
-        AOrderedListType olType = new AOrderedListType(BuiltinType.ASTRING, 
null);
-        AOrderedListType ololType = new AOrderedListType(olType, null);
-        String[] fieldNames = { "DataverseName", "DatasetName", "IndexName", 
"IndexStructure", "SearchKey", "IsPrimary",
-                "Timestamp", "PendingOp" };
-        IAType[] fieldTypes = { BuiltinType.ASTRING, BuiltinType.ASTRING, 
BuiltinType.ASTRING, BuiltinType.ASTRING,
-                ololType, BuiltinType.ABOOLEAN, BuiltinType.ASTRING, 
BuiltinType.AINT32 };
-        return new ARecordType("IndexRecordType", fieldNames, fieldTypes, 
true);
-    };
-
-    // Helper constants for accessing fields in an ARecord of type
-    // NodeRecordType.
+    public static final ARecordType INDEX_RECORDTYPE = createRecordType(
+            // RecordTypeName
+            RECORD_NAME_INDEX,
+            // FieldNames
+            new String[] { FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_DATASET_NAME, 
FIELD_NAME_INDEX_NAME,
+                    FIELD_NAME_INDEX_STRUCTURE, FIELD_NAME_SEARCH_KEY, 
FIELD_NAME_IS_PRIMARY, FIELD_NAME_TIMESTAMP,
+                    FIELD_NAME_PENDING_OP },
+            // FieldTypes
+            new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, 
BuiltinType.ASTRING, BuiltinType.ASTRING,
+                    new AOrderedListType(new 
AOrderedListType(BuiltinType.ASTRING, null), null), BuiltinType.ABOOLEAN,
+                    BuiltinType.ASTRING, BuiltinType.AINT32 },
+            //IsOpen?
+            true);
+    //----------------------------------------- Node 
--------------------------------------------//
+    public static final String RECORD_NAME_NODE = "NodeRecordType";
     public static final int NODE_ARECORD_NODENAME_FIELD_INDEX = 0;
     public static final int NODE_ARECORD_NUMBEROFCORES_FIELD_INDEX = 1;
     public static final int NODE_ARECORD_WORKINGMEMORYSIZE_FIELD_INDEX = 2;
-
-    private static final ARecordType createNodeRecordType() throws 
AsterixException {
-        String[] fieldNames = { "NodeName", "NumberOfCores", 
"WorkingMemorySize" };
-        IAType[] fieldTypes = { BuiltinType.ASTRING, BuiltinType.AINT64, 
BuiltinType.AINT64 };
-        return new ARecordType("NodeRecordType", fieldNames, fieldTypes, true);
-    };
-
-    // Helper constants for accessing fields in an ARecord of type
-    // NodeGroupRecordType.
+    public static final ARecordType NODE_RECORDTYPE = createRecordType(
+            // RecordTypeName
+            RECORD_NAME_NODE,
+            // FieldNames
+            new String[] { FIELD_NAME_NODE_NAME, FIELD_NAME_NUMBER_OF_CORES, 
FIELD_NAME_WORKING_MEMORY_SIZE },
+            // FieldTypes
+            new IAType[] { BuiltinType.ASTRING, BuiltinType.AINT64, 
BuiltinType.AINT64 },
+            //IsOpen?
+            true);
+    //--------------------------------------- Node Group 
----------------------------------------//
+    public static final String RECORD_NAME_NODE_GROUP = "NodeGroupRecordType";
     public static final int NODEGROUP_ARECORD_GROUPNAME_FIELD_INDEX = 0;
     public static final int NODEGROUP_ARECORD_NODENAMES_FIELD_INDEX = 1;
     public static final int NODEGROUP_ARECORD_TIMESTAMP_FIELD_INDEX = 2;
-
-    private static final ARecordType createNodeGroupRecordType() throws 
AsterixException {
-        AUnorderedListType ulType = new 
AUnorderedListType(BuiltinType.ASTRING, null);
-        String[] fieldNames = { "GroupName", "NodeNames", "Timestamp" };
-        IAType[] fieldTypes = { BuiltinType.ASTRING, ulType, 
BuiltinType.ASTRING };
-        return new ARecordType("NodeGroupRecordType", fieldNames, fieldTypes, 
true);
-    };
-
-    private static IAType createFunctionParamsRecordType() {
-        AOrderedListType orderedParamListType = new 
AOrderedListType(BuiltinType.ASTRING, null);
-        return orderedParamListType;
-
-    }
-
+    public static final ARecordType NODEGROUP_RECORDTYPE = createRecordType(
+            // RecordTypeName
+            RECORD_NAME_NODE_GROUP,
+            // FieldNames
+            new String[] { FIELD_NAME_GROUP_NAME, FIELD_NAME_NODE_NAMES, 
FIELD_NAME_TIMESTAMP },
+            // FieldTypes
+            new IAType[] { BuiltinType.ASTRING, new 
AUnorderedListType(BuiltinType.ASTRING, null),
+                    BuiltinType.ASTRING },
+            //IsOpen?
+            true);
+    //----------------------------------------- Function 
----------------------------------------//
+    public static final String RECORD_NAME_FUNCTION = "FunctionRecordType";
     public static final int FUNCTION_ARECORD_DATAVERSENAME_FIELD_INDEX = 0;
     public static final int FUNCTION_ARECORD_FUNCTIONNAME_FIELD_INDEX = 1;
     public static final int FUNCTION_ARECORD_FUNCTION_ARITY_FIELD_INDEX = 2;
@@ -387,31 +353,62 @@
     public static final int FUNCTION_ARECORD_FUNCTION_DEFINITION_FIELD_INDEX = 
5;
     public static final int FUNCTION_ARECORD_FUNCTION_LANGUAGE_FIELD_INDEX = 6;
     public static final int FUNCTION_ARECORD_FUNCTION_KIND_FIELD_INDEX = 7;
-
-    private static final ARecordType createFunctionRecordType() throws 
AsterixException {
-        String[] fieldNames = { "DataverseName", "Name", "Arity", "Params", 
"ReturnType", "Definition", "Language",
-                "Kind" };
-        IAType[] fieldTypes = { BuiltinType.ASTRING, BuiltinType.ASTRING, 
BuiltinType.ASTRING,
-                createFunctionParamsRecordType(), BuiltinType.ASTRING, 
BuiltinType.ASTRING, BuiltinType.ASTRING,
-                BuiltinType.ASTRING };
-        return new ARecordType("FunctionRecordType", fieldNames, fieldTypes, 
true);
-    }
-
+    public static final ARecordType FUNCTION_RECORDTYPE = createRecordType(
+            // RecordTypeName
+            RECORD_NAME_FUNCTION,
+            // FieldNames
+            new String[] { FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_NAME, 
FIELD_NAME_ARITY, FIELD_NAME_PARAMS,
+                    FIELD_NAME_RETURN_TYPE, FIELD_NAME_DEFINITION, 
FIELD_NAME_LANGUAGE, FIELD_NAME_KIND },
+            // FieldTypes
+            new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, 
BuiltinType.ASTRING,
+                    new AOrderedListType(BuiltinType.ASTRING, null), 
BuiltinType.ASTRING, BuiltinType.ASTRING,
+                    BuiltinType.ASTRING, BuiltinType.ASTRING },
+            //IsOpen?
+            true);
+    //------------------------------------------ Adapter 
----------------------------------------//
+    public static final String RECORD_NAME_DATASOURCE_ADAPTER = 
"DatasourceAdapterRecordType";
     public static final int 
DATASOURCE_ADAPTER_ARECORD_DATAVERSENAME_FIELD_INDEX = 0;
     public static final int DATASOURCE_ADAPTER_ARECORD_NAME_FIELD_INDEX = 1;
     public static final int DATASOURCE_ADAPTER_ARECORD_CLASSNAME_FIELD_INDEX = 
2;
     public static final int DATASOURCE_ADAPTER_ARECORD_TYPE_FIELD_INDEX = 3;
     public static final int DATASOURCE_ADAPTER_ARECORD_TIMESTAMP_FIELD_INDEX = 
4;
-
-    private static ARecordType createDatasourceAdapterRecordType() throws 
AsterixException {
-        String[] fieldNames = { "DataverseName", "Name", "Classname", "Type", 
"Timestamp" };
-        IAType[] fieldTypes = { BuiltinType.ASTRING, BuiltinType.ASTRING, 
BuiltinType.ASTRING, BuiltinType.ASTRING,
-                BuiltinType.ASTRING };
-        return new ARecordType("DatasourceAdapterRecordType", fieldNames, 
fieldTypes, true);
-    }
-
-    // Helper constants for accessing fields in an ARecord of type
-    // FeedActivityRecordType.
+    public static final ARecordType DATASOURCE_ADAPTER_RECORDTYPE = 
createRecordType(
+            // RecordTypeName
+            RECORD_NAME_DATASOURCE_ADAPTER,
+            // FieldNames
+            new String[] { FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_NAME, 
FIELD_NAME_CLASSNAME, FIELD_NAME_TYPE,
+                    FIELD_NAME_TIMESTAMP },
+            // FieldTypes
+            new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, 
BuiltinType.ASTRING, BuiltinType.ASTRING,
+                    BuiltinType.ASTRING },
+            //IsOpen?
+            true);
+    //---------------------------------- Primary Feed Details 
-----------------------------------//
+    public static final int FEED_TYPE_PRIMARY_ARECORD_ADAPTER_NAME_FIELD_INDEX 
= 0;
+    public static final int 
FEED_TYPE_PRIMARY_ARECORD_ADAPTER_CONFIGURATION_FIELD_INDEX = 1;
+    public static final ARecordType PRIMARY_FEED_DETAILS_RECORDTYPE = 
createRecordType(
+            // RecordTypeName
+            null,
+            // FieldNames
+            new String[] { FIELD_NAME_ADAPTER_NAME, 
FIELD_NAME_ADAPTER_CONFIGURATION },
+            // FieldTypes
+            new IAType[] { BuiltinType.ASTRING,
+                    new 
AUnorderedListType(DATASOURCE_ADAPTER_PROPERTIES_RECORDTYPE, null) },
+            //IsOpen?
+            true);
+    //--------------------------------- Secondary Feed Details 
----------------------------------//
+    public static final int 
FEED_TYPE_SECONDARY_ARECORD_SOURCE_FEED_NAME_FIELD_INDEX = 0;
+    public static final ARecordType SECONDARY_FEED_DETAILS_RECORDTYPE = 
createRecordType(
+            // RecordTypeName
+            null,
+            // FieldNames
+            new String[] { FIELD_NAME_SOURCE_FEED_NAME },
+            // FieldTypes
+            new IAType[] { BuiltinType.ASTRING },
+            //IsOpen?
+            true);
+    //---------------------------------------- Feed Activity 
------------------------------------//
+    public static final String RECORD_NAME_FEED = "FeedRecordType";
     public static final int FEED_ACTIVITY_ARECORD_DATAVERSE_NAME_FIELD_INDEX = 
0;
     public static final int FEED_ACTIVITY_ARECORD_FEED_NAME_FIELD_INDEX = 1;
     public static final int FEED_ACTIVITY_ARECORD_DATASET_NAME_FIELD_INDEX = 2;
@@ -419,7 +416,6 @@
     public static final int FEED_ACTIVITY_ARECORD_ACTIVITY_TYPE_FIELD_INDEX = 
4;
     public static final int FEED_ACTIVITY_ARECORD_DETAILS_FIELD_INDEX = 5;
     public static final int 
FEED_ACTIVITY_ARECORD_LAST_UPDATE_TIMESTAMP_FIELD_INDEX = 6;
-
     public static final int FEED_ARECORD_DATAVERSE_NAME_FIELD_INDEX = 0;
     public static final int FEED_ARECORD_FEED_NAME_FIELD_INDEX = 1;
     public static final int FEED_ARECORD_FUNCTION_FIELD_INDEX = 2;
@@ -427,58 +423,70 @@
     public static final int FEED_ARECORD_PRIMARY_TYPE_DETAILS_FIELD_INDEX = 4;
     public static final int FEED_ARECORD_SECONDARY_TYPE_DETAILS_FIELD_INDEX = 
5;
     public static final int FEED_ARECORD_TIMESTAMP_FIELD_INDEX = 6;
-
     public static final int 
FEED_ARECORD_PRIMARY_FIELD_DETAILS_ADAPTOR_NAME_FIELD_INDEX = 0;
     public static final int 
FEED_ARECORD_PRIMARY_FIELD_DETAILS_ADAPTOR_CONFIGURATION_FIELD_INDEX = 1;
-
     public static final int 
FEED_ARECORD_SECONDARY_FIELD_DETAILS_SOURCE_FEED_NAME_FIELD_INDEX = 0;
+    public static final ARecordType FEED_RECORDTYPE = createRecordType(
+            // RecordTypeName
+            RECORD_NAME_FEED,
+            // FieldNames
+            new String[] { FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_FEED_NAME, 
FIELD_NAME_FUNCTION, FIELD_NAME_FEED_TYPE,
+                    FIELD_NAME_PRIMARY_TYPE_DETAILS, 
FIELD_NAME_SECONDARY_TYPE_DETAILS, FIELD_NAME_TIMESTAMP },
+            // FieldTypes
+            new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING,
+                    AUnionType.createUnknownableType(BuiltinType.ASTRING), 
BuiltinType.ASTRING,
+                    
AUnionType.createUnknownableType(PRIMARY_FEED_DETAILS_RECORDTYPE),
+                    
AUnionType.createUnknownableType(SECONDARY_FEED_DETAILS_RECORDTYPE), 
BuiltinType.ASTRING },
+            //IsOpen?
+            true);
 
-    private static ARecordType createFeedRecordType() throws AsterixException, 
HyracksDataException {
-
-        IAType feedFunctionUnion = 
AUnionType.createUnknownableType(BuiltinType.ASTRING);
-        IAType primaryRecordUnion = 
AUnionType.createUnknownableType(PRIMARY_FEED_DETAILS_RECORDTYPE);
-        IAType secondaryRecordUnion = 
AUnionType.createUnknownableType(SECONDARY_FEED_DETAILS_RECORDTYPE);
-
-        String[] fieldNames = { "DataverseName", "FeedName", "Function", 
"FeedType", "PrimaryTypeDetails",
-                "SecondaryTypeDetails", "Timestamp" };
-        IAType[] fieldTypes = { BuiltinType.ASTRING, BuiltinType.ASTRING, 
feedFunctionUnion, BuiltinType.ASTRING,
-                primaryRecordUnion, secondaryRecordUnion, BuiltinType.ASTRING 
};
-
-        return new ARecordType("FeedRecordType", fieldNames, fieldTypes, true);
-    }
-
-    public static final int FEED_TYPE_PRIMARY_ARECORD_ADAPTER_NAME_FIELD_INDEX 
= 0;
-    public static final int 
FEED_TYPE_PRIMARY_ARECORD_ADAPTER_CONFIGURATION_FIELD_INDEX = 1;
-
-    private static final ARecordType createPrimaryFeedDetailsRecordType()
-            throws AsterixException, HyracksDataException {
-        AUnorderedListType unorderedAdaptorPropertyListType = new 
AUnorderedListType(
-                DATASOURCE_ADAPTER_PROPERTIES_RECORDTYPE, null);
-
-        String[] fieldNames = { "AdapterName", "AdapterConfiguration" };
-        IAType[] fieldTypes = { BuiltinType.ASTRING, 
unorderedAdaptorPropertyListType };
-        return new ARecordType(null, fieldNames, fieldTypes, true);
-    }
-
-    public static final int 
FEED_TYPE_SECONDARY_ARECORD_SOURCE_FEED_NAME_FIELD_INDEX = 0;
-
-    private static final ARecordType createSecondaryFeedDetailsRecordType()
-            throws AsterixException, HyracksDataException {
-        String[] fieldNames = { "SourceFeedName" };
-        IAType[] fieldTypes = { BuiltinType.ASTRING };
-        return new ARecordType(null, fieldNames, fieldTypes, true);
-    }
-
+    //------------------------------------- Feed Policy 
---------------------------------------//
+    public static final String RECORD_NAME_FEED_POLICY = 
"FeedPolicyRecordType";
+    public static final int FEED_POLICY_ARECORD_DATAVERSE_NAME_FIELD_INDEX = 0;
+    public static final int FEED_POLICY_ARECORD_POLICY_NAME_FIELD_INDEX = 1;
+    public static final int FEED_POLICY_ARECORD_DESCRIPTION_FIELD_INDEX = 2;
+    public static final int FEED_POLICY_ARECORD_PROPERTIES_FIELD_INDEX = 3;
+    public static final ARecordType FEED_POLICY_RECORDTYPE = createRecordType(
+            // RecordTypeName
+            RECORD_NAME_FEED_POLICY,
+            // FieldNames
+            new String[] { FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_POLICY_NAME, 
FIELD_NAME_DESCRIPTION,
+                    FIELD_NAME_PROPERTIES },
+            // FieldTypes
+            new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, 
BuiltinType.ASTRING,
+                    new AUnorderedListType(POLICY_PARAMS_RECORDTYPE, null) },
+            //IsOpen?
+            true);
+    //---------------------------------------- Library 
------------------------------------------//
+    public static final String RECORD_NAME_LIBRARY = "LibraryRecordType";
     public static final int LIBRARY_ARECORD_DATAVERSENAME_FIELD_INDEX = 0;
     public static final int LIBRARY_ARECORD_NAME_FIELD_INDEX = 1;
     public static final int LIBRARY_ARECORD_TIMESTAMP_FIELD_INDEX = 2;
-
-    private static ARecordType createLibraryRecordType() throws 
AsterixException {
-        String[] fieldNames = { "DataverseName", "Name", "Timestamp" };
-        IAType[] fieldTypes = { BuiltinType.ASTRING, BuiltinType.ASTRING, 
BuiltinType.ASTRING };
-        return new ARecordType("LibraryRecordType", fieldNames, fieldTypes, 
true);
-    }
-
+    public static final ARecordType LIBRARY_RECORDTYPE = createRecordType(
+            // RecordTypeName
+            RECORD_NAME_LIBRARY,
+            // FieldNames
+            new String[] { FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_NAME, 
FIELD_NAME_TIMESTAMP },
+            // FieldTypes
+            new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, 
BuiltinType.ASTRING },
+            //IsOpen?
+            true);
+    //------------------------------------- Compaction Policy 
-----------------------------------//
+    public static final String RECORD_NAME_COMPACTION_POLICY = 
"CompactionPolicyRecordType";
+    public static final int 
COMPACTION_POLICY_ARECORD_DATAVERSE_NAME_FIELD_INDEX = 0;
+    public static final int COMPACTION_POLICY_ARECORD_POLICY_NAME_FIELD_INDEX 
= 1;
+    public static final int COMPACTION_POLICY_ARECORD_CLASSNAME_FIELD_INDEX = 
2;
+    public static final ARecordType COMPACTION_POLICY_RECORDTYPE = 
createRecordType(
+            // RecordTypeName
+            RECORD_NAME_COMPACTION_POLICY,
+            // FieldNames
+            new String[] { FIELD_NAME_DATAVERSE_NAME, 
FIELD_NAME_COMPACTION_POLICY, FIELD_NAME_CLASSNAME },
+            // FieldTypes
+            new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, 
BuiltinType.ASTRING },
+            //IsOpen?
+            true);
+    //-------------------------------------- ExternalFile 
---------------------------------------//
+    public static final String RECORD_NAME_EXTERNAL_FILE = 
"ExternalFileRecordType";
     public static final int EXTERNAL_FILE_ARECORD_DATAVERSENAME_FIELD_INDEX = 
0;
     public static final int EXTERNAL_FILE_ARECORD_DATASET_NAME_FIELD_INDEX = 1;
     public static final int EXTERNAL_FILE_ARECORD_FILE_NUMBER_FIELD_INDEX = 2;
@@ -486,12 +494,40 @@
     public static final int EXTERNAL_FILE_ARECORD_FILE_SIZE_FIELD_INDEX = 4;
     public static final int EXTERNAL_FILE_ARECORD_FILE_MOD_DATE_FIELD_INDEX = 
5;
     public static final int EXTERNAL_FILE_ARECORD_FILE_PENDING_OP_FIELD_INDEX 
= 6;
+    public static final ARecordType EXTERNAL_FILE_RECORDTYPE = 
createRecordType(
+            // RecordTypeName
+            RECORD_NAME_EXTERNAL_FILE,
+            // FieldNames
+            new String[] { FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_DATASET_NAME, 
FIELD_NAME_FILE_NUMBER,
+                    FIELD_NAME_FILE_NAME, FIELD_NAME_FILE_SIZE, 
FIELD_NAME_FILE_MOD_TIME, FIELD_NAME_PENDING_OP },
+            // FieldTypes
+            new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, 
BuiltinType.AINT32, BuiltinType.ASTRING,
+                    BuiltinType.AINT64, BuiltinType.ADATETIME, 
BuiltinType.AINT32 },
+            //IsOpen?
+            true);
 
-    private static ARecordType createExternalFileRecordType() throws 
AsterixException {
-        String[] fieldNames = { "DataverseName", "DatasetName", "FileNumber", 
"FileName", "FileSize", "FileModTime",
-                "PendingOp" };
-        IAType[] fieldTypes = { BuiltinType.ASTRING, BuiltinType.ASTRING, 
BuiltinType.AINT32, BuiltinType.ASTRING,
-                BuiltinType.AINT64, BuiltinType.ADATETIME, BuiltinType.AINT32 
};
-        return new ARecordType("ExternalFileRecordType", fieldNames, 
fieldTypes, true);
+    // private members
+    private MetadataRecordTypes() {
+    }
+
+    private static ARecordType createRecordType(String recordTypeName, 
String[] fieldNames, IAType[] fieldTypes,
+            boolean isOpen) {
+        ARecordType recordType = new ARecordType(recordTypeName, fieldNames, 
fieldTypes, isOpen);
+        if (recordTypeName != null) {
+            recordType.generateNestedDerivedTypeNames();
+        }
+        return recordType;
+    }
+
+    private static final ARecordType createPropertiesRecordType() {
+        return createRecordType(
+                // RecordTypeName
+                null,
+                // FieldNames
+                new String[] { FIELD_NAME_NAME, FIELD_NAME_VALUE },
+                // FieldTypes
+                new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING },
+                //IsOpen? Seriously?
+                true);
     }
 }
diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatasetTupleTranslator.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatasetTupleTranslator.java
index 0825aa4..01380c0 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatasetTupleTranslator.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatasetTupleTranslator.java
@@ -245,12 +245,12 @@
         String metaTypeDataverseName = null;
         String metaTypeName = null;
         int metaTypeDataverseNameIndex = datasetRecord.getType()
-                
.getFieldIndex(MetadataRecordTypes.DATASET_ARECORD_METATYPEDATAVERSENAME_FIELD_NAME);
+                
.getFieldIndex(MetadataRecordTypes.FIELD_NAME_METADATA_DATAVERSE);
         if (metaTypeDataverseNameIndex >= 0) {
             metaTypeDataverseName = ((AString) 
datasetRecord.getValueByPos(metaTypeDataverseNameIndex))
                     .getStringValue();
             int metaTypeNameIndex = datasetRecord.getType()
-                    
.getFieldIndex(MetadataRecordTypes.DATASET_ARECORD_METATYPENAME_FIELD_NAME);
+                    
.getFieldIndex(MetadataRecordTypes.FIELD_NAME_METATYPE_NAME);
             metaTypeName = ((AString) 
datasetRecord.getValueByPos(metaTypeNameIndex)).getStringValue();
         }
 
@@ -377,7 +377,7 @@
         if (dataset.hasMetaPart()) {
             // write open field 1, the meta item type Dataverse name.
             fieldName.reset();
-            
aString.setValue(MetadataRecordTypes.DATASET_ARECORD_METATYPEDATAVERSENAME_FIELD_NAME);
+            
aString.setValue(MetadataRecordTypes.FIELD_NAME_METADATA_DATAVERSE);
             stringSerde.serialize(aString, fieldName.getDataOutput());
             fieldValue.reset();
             aString.setValue(dataset.getMetaItemTypeDataverseName());
@@ -386,7 +386,7 @@
 
             // write open field 2, the meta item type name.
             fieldName.reset();
-            
aString.setValue(MetadataRecordTypes.DATASET_ARECORD_METATYPENAME_FIELD_NAME);
+            aString.setValue(MetadataRecordTypes.FIELD_NAME_METATYPE_NAME);
             stringSerde.serialize(aString, fieldName.getDataOutput());
             fieldValue.reset();
             aString.setValue(dataset.getMetaItemTypeName());
diff --git 
a/asterixdb/asterix-metadata/src/test/java/org/apache/asterix/metadata/entitytupletranslators/DatasetTupleTranslatorTest.java
 
b/asterixdb/asterix-metadata/src/test/java/org/apache/asterix/metadata/entitytupletranslators/DatasetTupleTranslatorTest.java
index 182f296..2671834 100644
--- 
a/asterixdb/asterix-metadata/src/test/java/org/apache/asterix/metadata/entitytupletranslators/DatasetTupleTranslatorTest.java
+++ 
b/asterixdb/asterix-metadata/src/test/java/org/apache/asterix/metadata/entitytupletranslators/DatasetTupleTranslatorTest.java
@@ -26,7 +26,6 @@
 import org.apache.asterix.common.config.DatasetConfig.DatasetType;
 import org.apache.asterix.metadata.MetadataException;
 import org.apache.asterix.metadata.bootstrap.MetadataPrimaryIndexes;
-import org.apache.asterix.metadata.bootstrap.MetadataRecordTypes;
 import org.apache.asterix.metadata.entities.Dataset;
 import org.apache.asterix.metadata.entities.InternalDatasetDetails;
 import 
org.apache.asterix.metadata.entities.InternalDatasetDetails.FileStructure;
@@ -56,7 +55,6 @@
                     "prefix", compactionPolicyProperties, details, 
Collections.emptyMap(), DatasetType.INTERNAL, 115,
                     0);
 
-            MetadataRecordTypes.init();
             MetadataPrimaryIndexes.init();
             DatasetTupleTranslator dtTranslator = new 
DatasetTupleTranslator(true);
             ITupleReference tuple = 
dtTranslator.getTupleFromMetadataEntity(dataset);
diff --git 
a/asterixdb/asterix-metadata/src/test/java/org/apache/asterix/metadata/entitytupletranslators/IndexTupleTranslatorTest.java
 
b/asterixdb/asterix-metadata/src/test/java/org/apache/asterix/metadata/entitytupletranslators/IndexTupleTranslatorTest.java
index de548e2..02b3e4b 100644
--- 
a/asterixdb/asterix-metadata/src/test/java/org/apache/asterix/metadata/entitytupletranslators/IndexTupleTranslatorTest.java
+++ 
b/asterixdb/asterix-metadata/src/test/java/org/apache/asterix/metadata/entitytupletranslators/IndexTupleTranslatorTest.java
@@ -33,7 +33,6 @@
 import org.apache.asterix.metadata.MetadataException;
 import org.apache.asterix.metadata.MetadataNode;
 import org.apache.asterix.metadata.bootstrap.MetadataPrimaryIndexes;
-import org.apache.asterix.metadata.bootstrap.MetadataRecordTypes;
 import org.apache.asterix.metadata.entities.Dataset;
 import org.apache.asterix.metadata.entities.Datatype;
 import org.apache.asterix.metadata.entities.Index;
@@ -72,7 +71,6 @@
                     indicator == null ? null : 
Collections.singletonList(indicator),
                     Collections.singletonList(BuiltinType.AINT64), -1, false, 
false, 0);
 
-            MetadataRecordTypes.init();
             MetadataPrimaryIndexes.init();
 
             MetadataNode mockMetadataNode = mock(MetadataNode.class);

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1031
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I10bc8c0bc255a377dba724f04b6b588910f26cb2
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: abdullah alamoudi <[email protected]>

Reply via email to