You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by dl...@apache.org on 2020/05/15 21:32:47 UTC
[asterixdb] 02/02: Merge commit '3a62802' from 'gerrit/mad-hatter'
This is an automated email from the ASF dual-hosted git repository.
dlych pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git
commit 63e2a43740fe0b9480b30160f214bc7fb668b451
Merge: aa2b6ea 3a62802
Author: Dmitry Lychagin <dm...@couchbase.com>
AuthorDate: Fri May 15 08:15:14 2020 -0700
Merge commit '3a62802' from 'gerrit/mad-hatter'
Change-Id: Ia70a791f6d9fd05854017ef7692adc14a6a5f37f
.../apache/asterix/translator/TypeTranslator.java | 31 ++---
.../meta03/builtin_type/meta03_builtin_type.1.adm | 2 +-
.../meta03_builtin_type_nullable.1.adm | 2 +-
.../ordered_list/meta03_ordered_list.1.adm | 2 +-
.../meta03_ordered_list_nullable.1.adm | 2 +-
.../meta03/complex_type/record/meta03_record.1.adm | 2 +-
.../record_nullable/meta03_record_nullable.1.adm | 2 +-
.../unordered_list/meta03_unordered_list.1.adm | 2 +-
.../meta03_unordered_list_nullable.1.adm | 2 +-
.../meta04/builtin_type/meta04_builtin_type.1.adm | 2 +-
.../meta04_builtin_type_nullable.1.adm | 2 +-
.../ordered_list/meta04_ordered_list.1.adm | 2 +-
.../meta04_ordered_list_nullable.1.adm | 2 +-
.../meta04/complex_type/record/meta04_record.1.adm | 2 +-
.../record_nullable/meta04_record_nullable.1.adm | 2 +-
.../unordered_list/meta04_unordered_list.1.adm | 2 +-
.../meta04_unordered_list_nullable.1.adm | 2 +-
.../metadata_datatype/metadata_datatype.1.adm | 142 ++++++++++-----------
.../verify_failure_previous_success.1.adm | 20 +--
.../queries/group-by/gby-case-01.3.sqlpp | 2 +-
.../queries/group-by/gby-case-01.4.sqlpp | 2 +-
.../create-dataset-inline-type-1.1.ddl.sqlpp | 78 +++++------
.../create-dataset-inline-type-2.1.ddl.sqlpp | 8 +-
.../create-dataset-inline-type-2.4.ddl.sqlpp | 4 +-
.../group-by/gby-case-01/gby-case-01.1.ddl.sqlpp | 2 +-
.../gby-nested-01/gby-nested-01.1.ddl.sqlpp | 4 +-
.../create-dataset-inline-type-1.2.adm | 24 ++--
.../create-drop-cltype/create-drop-cltype.1.adm | 2 +-
.../create-drop-opntype/create-drop-opntype.1.adm | 2 +-
.../udf_metadata/udf_metadata.3.adm | 2 +-
.../results/types/any-object/any-object.2.adm | 4 +-
.../udf32_metadata/udf32_metadata.2.adm | 2 +-
asterixdb/asterix-lang-aql/src/main/javacc/AQL.jj | 6 +-
.../common/expression/RecordTypeDefinition.java | 28 ++--
.../lang/common/visitor/FormatPrintVisitor.java | 8 +-
.../lang/common/visitor/QueryPrintVisitor.java | 8 +-
.../asterix-lang-sqlpp/src/main/javacc/SQLPP.jj | 12 +-
.../metadata/bootstrap/MetadataRecordTypes.java | 1 +
.../asterix/metadata/entities/BuiltinTypeMap.java | 6 +-
.../AbstractDatatypeTupleTranslator.java | 24 +++-
.../DatatypeTupleTranslator.java | 38 +++---
.../FunctionTupleTranslator.java | 7 +-
.../IndexTupleTranslator.java | 2 +-
.../apache/asterix/metadata/utils/TypeUtil.java | 28 ++++
44 files changed, 288 insertions(+), 241 deletions(-)
diff --cc asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/TypeTranslator.java
index fd434f4,cdb6346..aa00fb3
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/TypeTranslator.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/TypeTranslator.java
@@@ -325,19 -348,12 +327,10 @@@ public class TypeTranslator
switch (texpr.getTypeKind()) {
case TYPEREFERENCE: {
TypeReferenceExpression tre = (TypeReferenceExpression) texpr;
- TypeSignature signature = new TypeSignature(
- tre.getIdent().first == null ? defaultDataverse : tre.getIdent().first.getValue(),
- tre.getIdent().second.getValue());
+ TypeSignature signature = createTypeSignature(tre, defaultDataverse);
- IAType tref = solveTypeReference(signature, typeMap);
- if (tref != null) {
- if (!rtd.getOptionableFields().get(j)) { // not nullable
- fldTypes[j] = tref;
- } else { // optional
- fldTypes[j] = AUnionType.createUnknownableType(tref);
- }
- } else {
+ type = solveTypeReference(signature, typeMap);
+ if (type == null) {
addIncompleteFieldTypeReference(recType, j, tre, incompleteFieldTypes);
- if (rtd.getOptionableFields().get(j)) {
- fldTypes[j] = AUnionType.createUnknownableType(null);
- }
}
break;
}
diff --cc asterixdb/asterix-app/src/test/resources/metadata/results/basic/metadata_datatype/metadata_datatype.1.adm
index 1bd070e,5755493..9aa9269
--- 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,71 -1,70 +1,71 @@@
- { "DataverseName": "Metadata", "DatatypeName": "AnyObject", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ ] } }, "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "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 Jan 29 19:18:03 PST 2020" }
- { "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": [...]
- { "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_CompactionPolicyProperties", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "DatasetRecordType_CompactionPolicyProperties_Item" }, "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "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 Jan 29 19:18:03 PST 2020" }
- { "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", "Fie [...]
- { "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_ExternalDetails_Properties", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "DatasetRecordType_ExternalDetails_Properties_Item" }, "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "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 Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_Hints", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "DatasetRecordType_Hints_Item" }, "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "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 Jan 29 19:18:03 PST 2020" }
- { "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", " [...]
- { "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_InternalDetails_PartitioningKey", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "DatasetRecordType_InternalDetails_PartitioningKey_Item" }, "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_InternalDetails_PartitioningKey_Item", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" }, "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_InternalDetails_PrimaryKey", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "DatasetRecordType_InternalDetails_PrimaryKey_Item" }, "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_InternalDetails_PrimaryKey_Item", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" }, "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "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", "Fi [...]
- { "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 } ] } }, "Tim [...]
- { "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 }, { "F [...]
- { "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 Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "DatatypeRecordType_Derived_Record_Fields", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "DatatypeRecordType_Derived_Record_Fields_Item" }, "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "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 Jan 29 19:18:03 PST 2020" }
- { "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 Jan 2 [...]
- { "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" [...]
- { "DataverseName": "Metadata", "DatatypeName": "FeedConnectionRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false }, { "FieldName": "FeedName", "FieldType": "string", "IsNullable": false }, { "FieldName": "DatasetName", "FieldType": "string", "IsNullable": false }, { "FieldName": "ReturnType", "FieldType": "string", "IsNullable": false }, { "FieldName": "Applie [...]
- { "DataverseName": "Metadata", "DatatypeName": "FeedConnectionRecordType_AppliedFunctions", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "string" }, "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "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 } [...]
- { "DataverseName": "Metadata", "DatatypeName": "FeedPolicyRecordType_Properties", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "FeedPolicyRecordType_Properties_Item" }, "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "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 Jan 29 19:18:03 PST 2020" }
- { "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": "AdapterConfiguration", "FieldType": "FeedRecordType_AdapterConfiguration", "IsNullable": false }, { "FieldName": "Timestamp", "FieldType": "string", "IsNullable": fals [...]
- { "DataverseName": "Metadata", "DatatypeName": "FeedRecordType_AdapterConfiguration", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "FeedRecordType_AdapterConfiguration_Item" }, "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "FeedRecordType_AdapterConfiguration_Item", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "Name", "FieldType": "string", "IsNullable": false }, { "FieldName": "Value", "FieldType": "string", "IsNullable": false } ] } }, "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "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": "ReturnT [...]
- { "DataverseName": "Metadata", "DatatypeName": "FunctionRecordType_Dependencies", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "FunctionRecordType_Dependencies_Item" }, "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "FunctionRecordType_Dependencies_Item", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "FunctionRecordType_Dependencies_Item_Item" }, "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "FunctionRecordType_Dependencies_Item_Item", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" }, "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "FunctionRecordType_Params", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" }, "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "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" [...]
- { "DataverseName": "Metadata", "DatatypeName": "IndexRecordType_SearchKey", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "IndexRecordType_SearchKey_Item" }, "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "IndexRecordType_SearchKey_Item", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" }, "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "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 Jan 29 19:18:03 PST 2020" }
- { "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 Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "NodeGroupRecordType_NodeNames", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "string" }, "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "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 Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "SynonymRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false }, { "FieldName": "SynonymName", "FieldType": "string", "IsNullable": false }, { "FieldName": "ObjectDataverseName", "FieldType": "string", "IsNullable": false }, { "FieldName": "ObjectName", "FieldType": "string", "IsNullable": false } ] } }, "Timestamp": [...]
- { "DataverseName": "Metadata", "DatatypeName": "binary", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "boolean", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "circle", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "date", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "datetime", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "day-time-duration", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "double", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "duration", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "float", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "geometry", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "int16", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "int32", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "int64", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "int8", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "interval", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "line", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "missing", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "null", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "point", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "point3d", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "polygon", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "rectangle", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "shortwithouttypeinfo", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "string", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "time", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "uuid", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
- { "DataverseName": "Metadata", "DatatypeName": "year-month-duration", "Timestamp": "Wed Jan 29 19:18:03 PST 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "AnyObject", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ ] } }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "CompactionPolicyRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "CompactionPolicy", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Classname", "FieldType": "string", "IsNullable": false, "IsMissable": false } ] } }, "Timestamp": "Fri Ma [...]
-{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "DatasetName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "DatatypeDataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "DatatypeName [...]
-{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_CompactionPolicyProperties", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "DatasetRecordType_CompactionPolicyProperties_Item" }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_CompactionPolicyProperties_Item", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "Name", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Value", "FieldType": "string", "IsNullable": false, "IsMissable": false } ] } }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_ExternalDetails", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DatasourceAdapter", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Properties", "FieldType": "DatasetRecordType_ExternalDetails_Properties", "IsNullable": false, "IsMissable": false }, { "FieldName": "LastRefreshTime", "FieldType": "datetime", "IsNullable": false, [...]
-{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_ExternalDetails_Properties", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "DatasetRecordType_ExternalDetails_Properties_Item" }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_ExternalDetails_Properties_Item", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "Name", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Value", "FieldType": "string", "IsNullable": false, "IsMissable": false } ] } }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_Hints", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "DatasetRecordType_Hints_Item" }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_Hints_Item", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "Name", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Value", "FieldType": "string", "IsNullable": false, "IsMissable": false } ] } }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_InternalDetails", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "FileStructure", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "PartitioningStrategy", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "PartitioningKey", "FieldType": "DatasetRecordType_InternalDetails_PartitioningKey", "IsNullable [...]
-{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_InternalDetails_PartitioningKey", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "DatasetRecordType_InternalDetails_PartitioningKey_Item" }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_InternalDetails_PartitioningKey_Item", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_InternalDetails_PrimaryKey", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "DatasetRecordType_InternalDetails_PrimaryKey_Item" }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_InternalDetails_PrimaryKey_Item", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "DatasourceAdapterRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Name", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Classname", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Type", "FieldType": " [...]
-{ "DataverseName": "Metadata", "DatatypeName": "DatatypeRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "DatatypeName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Derived", "FieldType": "DatatypeRecordType_Derived", "IsNullable": true, "IsMissable": true }, { "FieldName": "Timest [...]
-{ "DataverseName": "Metadata", "DatatypeName": "DatatypeRecordType_Derived", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "Tag", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "IsAnonymous", "FieldType": "boolean", "IsNullable": false, "IsMissable": false }, { "FieldName": "Record", "FieldType": "DatatypeRecordType_Derived_Record", "IsNullable": true, "IsMissable": true }, { "FieldName": "Uno [...]
-{ "DataverseName": "Metadata", "DatatypeName": "DatatypeRecordType_Derived_Record", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "IsOpen", "FieldType": "boolean", "IsNullable": false, "IsMissable": false }, { "FieldName": "Fields", "FieldType": "DatatypeRecordType_Derived_Record_Fields", "IsNullable": false, "IsMissable": false } ] } }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "DatatypeRecordType_Derived_Record_Fields", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "DatatypeRecordType_Derived_Record_Fields_Item" }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "DatatypeRecordType_Derived_Record_Fields_Item", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "FieldName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "FieldType", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "IsNullable", "FieldType": "boolean", "IsNullable": false, "IsMissable": false } ] } }, "Timestamp" [...]
-{ "DataverseName": "Metadata", "DatatypeName": "DataverseRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "DataFormat", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Timestamp", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "PendingOp", "FieldType" [...]
-{ "DataverseName": "Metadata", "DatatypeName": "ExternalFileRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "DatasetName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "FileNumber", "FieldType": "int32", "IsNullable": false, "IsMissable": false }, { "FieldName": "FileName", "FieldTy [...]
-{ "DataverseName": "Metadata", "DatatypeName": "FeedConnectionRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "FeedName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "DatasetName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "ReturnType", "Fiel [...]
-{ "DataverseName": "Metadata", "DatatypeName": "FeedConnectionRecordType_AppliedFunctions", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "string" }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "FeedPolicyRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "PolicyName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Description", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Properties", "FieldT [...]
-{ "DataverseName": "Metadata", "DatatypeName": "FeedPolicyRecordType_Properties", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "FeedPolicyRecordType_Properties_Item" }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "FeedPolicyRecordType_Properties_Item", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "Name", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Value", "FieldType": "string", "IsNullable": false, "IsMissable": false } ] } }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "FeedRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "FeedName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "AdapterConfiguration", "FieldType": "FeedRecordType_AdapterConfiguration", "IsNullable": false, "IsMissable": false }, { "Fie [...]
-{ "DataverseName": "Metadata", "DatatypeName": "FeedRecordType_AdapterConfiguration", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "FeedRecordType_AdapterConfiguration_Item" }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "FeedRecordType_AdapterConfiguration_Item", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "Name", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Value", "FieldType": "string", "IsNullable": false, "IsMissable": false } ] } }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "FunctionRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Name", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Arity", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Params", "FieldType": "FunctionRec [...]
-{ "DataverseName": "Metadata", "DatatypeName": "FunctionRecordType_Dependencies", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "FunctionRecordType_Dependencies_Item" }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "FunctionRecordType_Dependencies_Item", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "FunctionRecordType_Dependencies_Item_Item" }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "FunctionRecordType_Dependencies_Item_Item", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "FunctionRecordType_Params", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "IndexRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "DatasetName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "IndexName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "IndexStructure", "FieldTyp [...]
-{ "DataverseName": "Metadata", "DatatypeName": "IndexRecordType_SearchKey", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "IndexRecordType_SearchKey_Item" }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "IndexRecordType_SearchKey_Item", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "LibraryRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Name", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Timestamp", "FieldType": "string", "IsNullable": false, "IsMissable": false } ] } }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "NodeGroupRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "GroupName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "NodeNames", "FieldType": "NodeGroupRecordType_NodeNames", "IsNullable": false, "IsMissable": false }, { "FieldName": "Timestamp", "FieldType": "string", "IsNullable": false, "IsMissable": false } ] } }, "Timestamp": "F [...]
-{ "DataverseName": "Metadata", "DatatypeName": "NodeGroupRecordType_NodeNames", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "string" }, "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "NodeRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "NodeName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "NumberOfCores", "FieldType": "int64", "IsNullable": false, "IsMissable": false }, { "FieldName": "WorkingMemorySize", "FieldType": "int64", "IsNullable": false, "IsMissable": false } ] } }, "Timestamp": "Fri May 08 17:24:56 [...]
-{ "DataverseName": "Metadata", "DatatypeName": "binary", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "boolean", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "circle", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "date", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "datetime", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "day-time-duration", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "double", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "duration", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "float", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "geometry", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "int16", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "int32", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "int64", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "int8", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "interval", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "line", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "missing", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "null", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "point", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "point3d", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "polygon", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "rectangle", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "shortwithouttypeinfo", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "string", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "time", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "uuid", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
-{ "DataverseName": "Metadata", "DatatypeName": "year-month-duration", "Timestamp": "Fri May 08 17:24:56 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "AnyObject", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ ] } }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "CompactionPolicyRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "CompactionPolicy", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Classname", "FieldType": "string", "IsNullable": false, "IsMissable": false } ] } }, "Timestamp": "Thu Ma [...]
++{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "DatasetName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "DatatypeDataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "DatatypeName [...]
++{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_CompactionPolicyProperties", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "DatasetRecordType_CompactionPolicyProperties_Item" }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_CompactionPolicyProperties_Item", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "Name", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Value", "FieldType": "string", "IsNullable": false, "IsMissable": false } ] } }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_ExternalDetails", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DatasourceAdapter", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Properties", "FieldType": "DatasetRecordType_ExternalDetails_Properties", "IsNullable": false, "IsMissable": false }, { "FieldName": "LastRefreshTime", "FieldType": "datetime", "IsNullable": false, [...]
++{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_ExternalDetails_Properties", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "DatasetRecordType_ExternalDetails_Properties_Item" }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_ExternalDetails_Properties_Item", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "Name", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Value", "FieldType": "string", "IsNullable": false, "IsMissable": false } ] } }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_Hints", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "DatasetRecordType_Hints_Item" }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_Hints_Item", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "Name", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Value", "FieldType": "string", "IsNullable": false, "IsMissable": false } ] } }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_InternalDetails", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "FileStructure", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "PartitioningStrategy", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "PartitioningKey", "FieldType": "DatasetRecordType_InternalDetails_PartitioningKey", "IsNullable [...]
++{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_InternalDetails_PartitioningKey", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "DatasetRecordType_InternalDetails_PartitioningKey_Item" }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_InternalDetails_PartitioningKey_Item", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_InternalDetails_PrimaryKey", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "DatasetRecordType_InternalDetails_PrimaryKey_Item" }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "DatasetRecordType_InternalDetails_PrimaryKey_Item", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "DatasourceAdapterRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Name", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Classname", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Type", "FieldType": " [...]
++{ "DataverseName": "Metadata", "DatatypeName": "DatatypeRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "DatatypeName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Derived", "FieldType": "DatatypeRecordType_Derived", "IsNullable": true, "IsMissable": true }, { "FieldName": "Timest [...]
++{ "DataverseName": "Metadata", "DatatypeName": "DatatypeRecordType_Derived", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "Tag", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "IsAnonymous", "FieldType": "boolean", "IsNullable": false, "IsMissable": false }, { "FieldName": "Record", "FieldType": "DatatypeRecordType_Derived_Record", "IsNullable": true, "IsMissable": true }, { "FieldName": "Uno [...]
++{ "DataverseName": "Metadata", "DatatypeName": "DatatypeRecordType_Derived_Record", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "IsOpen", "FieldType": "boolean", "IsNullable": false, "IsMissable": false }, { "FieldName": "Fields", "FieldType": "DatatypeRecordType_Derived_Record_Fields", "IsNullable": false, "IsMissable": false } ] } }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "DatatypeRecordType_Derived_Record_Fields", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "DatatypeRecordType_Derived_Record_Fields_Item" }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "DatatypeRecordType_Derived_Record_Fields_Item", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "FieldName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "FieldType", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "IsNullable", "FieldType": "boolean", "IsNullable": false, "IsMissable": false } ] } }, "Timestamp" [...]
++{ "DataverseName": "Metadata", "DatatypeName": "DataverseRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "DataFormat", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Timestamp", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "PendingOp", "FieldType" [...]
++{ "DataverseName": "Metadata", "DatatypeName": "ExternalFileRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "DatasetName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "FileNumber", "FieldType": "int32", "IsNullable": false, "IsMissable": false }, { "FieldName": "FileName", "FieldTy [...]
++{ "DataverseName": "Metadata", "DatatypeName": "FeedConnectionRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "FeedName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "DatasetName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "ReturnType", "Fiel [...]
++{ "DataverseName": "Metadata", "DatatypeName": "FeedConnectionRecordType_AppliedFunctions", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "string" }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "FeedPolicyRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "PolicyName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Description", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Properties", "FieldT [...]
++{ "DataverseName": "Metadata", "DatatypeName": "FeedPolicyRecordType_Properties", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "FeedPolicyRecordType_Properties_Item" }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "FeedPolicyRecordType_Properties_Item", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "Name", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Value", "FieldType": "string", "IsNullable": false, "IsMissable": false } ] } }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "FeedRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "FeedName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "AdapterConfiguration", "FieldType": "FeedRecordType_AdapterConfiguration", "IsNullable": false, "IsMissable": false }, { "Fie [...]
++{ "DataverseName": "Metadata", "DatatypeName": "FeedRecordType_AdapterConfiguration", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "FeedRecordType_AdapterConfiguration_Item" }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "FeedRecordType_AdapterConfiguration_Item", "Derived": { "Tag": "RECORD", "IsAnonymous": true, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "Name", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Value", "FieldType": "string", "IsNullable": false, "IsMissable": false } ] } }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "FunctionRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Name", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Arity", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Params", "FieldType": "FunctionRec [...]
++{ "DataverseName": "Metadata", "DatatypeName": "FunctionRecordType_Dependencies", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "FunctionRecordType_Dependencies_Item" }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "FunctionRecordType_Dependencies_Item", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "FunctionRecordType_Dependencies_Item_Item" }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "FunctionRecordType_Dependencies_Item_Item", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "FunctionRecordType_Params", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "IndexRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "DatasetName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "IndexName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "IndexStructure", "FieldTyp [...]
++{ "DataverseName": "Metadata", "DatatypeName": "IndexRecordType_SearchKey", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "IndexRecordType_SearchKey_Item" }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "IndexRecordType_SearchKey_Item", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "LibraryRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Name", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "Timestamp", "FieldType": "string", "IsNullable": false, "IsMissable": false } ] } }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "NodeGroupRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "GroupName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "NodeNames", "FieldType": "NodeGroupRecordType_NodeNames", "IsNullable": false, "IsMissable": false }, { "FieldName": "Timestamp", "FieldType": "string", "IsNullable": false, "IsMissable": false } ] } }, "Timestamp": "T [...]
++{ "DataverseName": "Metadata", "DatatypeName": "NodeGroupRecordType_NodeNames", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "string" }, "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "NodeRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "NodeName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "NumberOfCores", "FieldType": "int64", "IsNullable": false, "IsMissable": false }, { "FieldName": "WorkingMemorySize", "FieldType": "int64", "IsNullable": false, "IsMissable": false } ] } }, "Timestamp": "Thu May 14 18:42:45 [...]
++{ "DataverseName": "Metadata", "DatatypeName": "SynonymRecordType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "DataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "SynonymName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "ObjectDataverseName", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "ObjectName", " [...]
++{ "DataverseName": "Metadata", "DatatypeName": "binary", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "boolean", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "circle", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "date", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "datetime", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "day-time-duration", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "double", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "duration", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "float", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "geometry", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "int16", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "int32", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "int64", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "int8", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "interval", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "line", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "missing", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "null", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "point", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "point3d", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "polygon", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "rectangle", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "shortwithouttypeinfo", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "string", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "time", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "uuid", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
++{ "DataverseName": "Metadata", "DatatypeName": "year-month-duration", "Timestamp": "Thu May 14 18:42:45 PDT 2020" }
diff --cc asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/udf_metadata/udf_metadata.3.adm
index 3b87226,0000000..67f81b2
mode 100644,000000..100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/udf_metadata/udf_metadata.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/udf_metadata/udf_metadata.3.adm
@@@ -1,23 -1,0 +1,23 @@@
+{ "fn": { "DataverseName": "externallibtest", "Name": "myfn001", "Arity": "0", "Params": [ ], "ReturnType": "any", "Definition": "org.apache.asterix.external.library.CapitalFinderFactory", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ ], "Library": "testlib", "NullCall": false, "Deterministic": false } }
+{ "fn": { "DataverseName": "externallibtest", "Name": "myfn002", "Arity": "1", "Params": [ "a" ], "ReturnType": "any", "Definition": "org.apache.asterix.external.library.CapitalFinderFactory", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ { "Type": "any" } ], "Library": "testlib", "NullCall": false, "Deterministic": false } }
+{ "fn": { "DataverseName": "externallibtest", "Name": "myfn003", "Arity": "3", "Params": [ "a", "b", "c" ], "ReturnType": "string", "Definition": "org.apache.asterix.external.library.CapitalFinderFactory", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ReturnTypeIsNullable": false, "ParamTypes": [ { "Type": "string", "IsNullable": false }, { "Type": "fn$myfn003$3$1", "IsNullable": false }, { "Type": "fn$myfn003$3$2", "IsNullable": false } ], "Library": "tes [...]
+{ "fn": { "DataverseName": "externallibtest", "Name": "myfn004", "Arity": "2", "Params": [ "a", "b" ], "ReturnType": "CountryCapitalType", "Definition": "org.apache.asterix.external.library.CapitalFinderFactory", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ [ "externallibtest", "CountryCapitalType" ] ] ], "ReturnTypeIsNullable": false, "ParamTypes": [ { "Type": "CountryCapitalType", "IsNullable": false }, { "Type": "fn$myfn004$2$1", "IsNullable": false } ], "Lib [...]
+{ "fn": { "DataverseName": "externallibtest", "Name": "myfn005", "Arity": "4", "Params": [ "a", "b", "c", "d" ], "ReturnType": "string", "Definition": "org.apache.asterix.external.library.CapitalFinderFactory", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ [ "externallibtest", "CountryCapitalType" ] ] ], "ReturnTypeIsNullable": true, "ParamTypes": [ { "Type": "string", "IsNullable": true }, { "Type": "fn$myfn005$4$1", "IsNullable": true }, { "Type": "CountryCapit [...]
+{ "fn": { "DataverseName": "externallibtest", "Name": "myfn006", "Arity": "1", "Params": [ "a" ], "ReturnType": "fn$myfn006$1", "Definition": "org.apache.asterix.external.library.CapitalFinderFactory", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ReturnTypeIsNullable": false, "ParamTypes": [ { "Type": "fn$myfn006$1$0", "IsNullable": false } ], "Library": "testlib", "NullCall": false, "Deterministic": false } }
+{ "fn": { "DataverseName": "externallibtest", "Name": "myfn007", "Arity": "1", "Params": [ "a" ], "ReturnType": "fn$myfn007$1", "Definition": "org.apache.asterix.external.library.CapitalFinderFactory", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ReturnTypeIsNullable": true, "ParamTypes": [ { "Type": "fn$myfn007$1$0", "IsNullable": true } ], "Library": "testlib", "NullCall": false, "Deterministic": false } }
+{ "fn": { "DataverseName": "externallibtest", "Name": "myfn008", "Arity": "1", "Params": [ "a" ], "ReturnType": "fn$myfn008$1", "Definition": "org.apache.asterix.external.library.CapitalFinderFactory", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ [ "externallibtest", "CountryCapitalType" ] ] ], "ReturnTypeIsNullable": false, "ParamTypes": [ { "Type": "fn$myfn008$1$0", "IsNullable": false } ], "Library": "testlib", "NullCall": false, "Deterministic": false } }
+{ "fn": { "DataverseName": "externallibtest", "Name": "myfn009", "Arity": "1", "Params": [ "a" ], "ReturnType": "fn$myfn009$1", "Definition": "org.apache.asterix.external.library.CapitalFinderFactory", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ [ "externallibtest", "CountryCapitalType" ] ] ], "ReturnTypeIsNullable": true, "ParamTypes": [ { "Type": "fn$myfn009$1$0", "IsNullable": true } ], "Library": "testlib", "NullCall": false, "Deterministic": false } }
- { "dt": { "DataverseName": "externallibtest", "DatatypeName": "CountryCapitalType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": false, "Fields": [ { "FieldName": "country", "FieldType": "string", "IsNullable": false }, { "FieldName": "capital", "FieldType": "string", "IsNullable": false } ] } } } }
++{ "dt": { "DataverseName": "externallibtest", "DatatypeName": "CountryCapitalType", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": false, "Fields": [ { "FieldName": "country", "FieldType": "string", "IsNullable": false, "IsMissable": false }, { "FieldName": "capital", "FieldType": "string", "IsNullable": false, "IsMissable": false } ] } } } }
+{ "dt": { "DataverseName": "externallibtest", "DatatypeName": "fn$myfn003$3$1", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "int64" } } }
+{ "dt": { "DataverseName": "externallibtest", "DatatypeName": "fn$myfn003$3$2", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "boolean" } } }
+{ "dt": { "DataverseName": "externallibtest", "DatatypeName": "fn$myfn004$2$1", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "CountryCapitalType" } } }
+{ "dt": { "DataverseName": "externallibtest", "DatatypeName": "fn$myfn005$4$1", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "int64" } } }
+{ "dt": { "DataverseName": "externallibtest", "DatatypeName": "fn$myfn005$4$3", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "CountryCapitalType" } } }
+{ "dt": { "DataverseName": "externallibtest", "DatatypeName": "fn$myfn006$1", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" } } }
+{ "dt": { "DataverseName": "externallibtest", "DatatypeName": "fn$myfn006$1$0", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" } } }
+{ "dt": { "DataverseName": "externallibtest", "DatatypeName": "fn$myfn007$1", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "string" } } }
+{ "dt": { "DataverseName": "externallibtest", "DatatypeName": "fn$myfn007$1$0", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "string" } } }
+{ "dt": { "DataverseName": "externallibtest", "DatatypeName": "fn$myfn008$1", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "CountryCapitalType" } } }
+{ "dt": { "DataverseName": "externallibtest", "DatatypeName": "fn$myfn008$1$0", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "CountryCapitalType" } } }
+{ "dt": { "DataverseName": "externallibtest", "DatatypeName": "fn$myfn009$1", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "CountryCapitalType" } } }
+{ "dt": { "DataverseName": "externallibtest", "DatatypeName": "fn$myfn009$1$0", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "CountryCapitalType" } } }
diff --cc asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf32_metadata/udf32_metadata.2.adm
index a6d1478,0000000..c78c3d4
mode 100644,000000..100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf32_metadata/udf32_metadata.2.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf32_metadata/udf32_metadata.2.adm
@@@ -1,23 -1,0 +1,23 @@@
+{ "fn": { "DataverseName": "test", "Name": "myfn001", "Arity": "0", "Params": [ ], "ReturnType": "any", "Definition": "42", "Language": "SQLPP", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ ] } }
+{ "fn": { "DataverseName": "test", "Name": "myfn002", "Arity": "1", "Params": [ "a" ], "ReturnType": "any", "Definition": "a", "Language": "SQLPP", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ { "Type": "any" } ] } }
+{ "fn": { "DataverseName": "test", "Name": "myfn003", "Arity": "3", "Params": [ "a", "b", "c" ], "ReturnType": "string", "Definition": "a", "Language": "SQLPP", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ReturnTypeIsNullable": false, "ParamTypes": [ { "Type": "string", "IsNullable": false }, { "Type": "fn$myfn003$3$1", "IsNullable": false }, { "Type": "fn$myfn003$3$2", "IsNullable": false } ] } }
+{ "fn": { "DataverseName": "test", "Name": "myfn004", "Arity": "2", "Params": [ "a", "b" ], "ReturnType": "MyType1", "Definition": "a", "Language": "SQLPP", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ [ "test", "MyType1" ] ] ], "ReturnTypeIsNullable": false, "ParamTypes": [ { "Type": "MyType1", "IsNullable": false }, { "Type": "fn$myfn004$2$1", "IsNullable": false } ] } }
+{ "fn": { "DataverseName": "test", "Name": "myfn005", "Arity": "4", "Params": [ "a", "b", "c", "d" ], "ReturnType": "string", "Definition": "a", "Language": "SQLPP", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ [ "test", "MyType1" ] ] ], "ReturnTypeIsNullable": true, "ParamTypes": [ { "Type": "string", "IsNullable": true }, { "Type": "fn$myfn005$4$1", "IsNullable": true }, { "Type": "MyType1", "IsNullable": true }, { "Type": "fn$myfn005$4$3", "IsNullable": true } ] } }
+{ "fn": { "DataverseName": "test", "Name": "myfn006", "Arity": "1", "Params": [ "a" ], "ReturnType": "fn$myfn006$1", "Definition": "a", "Language": "SQLPP", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ReturnTypeIsNullable": false, "ParamTypes": [ { "Type": "fn$myfn006$1$0", "IsNullable": false } ] } }
+{ "fn": { "DataverseName": "test", "Name": "myfn007", "Arity": "1", "Params": [ "a" ], "ReturnType": "fn$myfn007$1", "Definition": "a", "Language": "SQLPP", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ReturnTypeIsNullable": true, "ParamTypes": [ { "Type": "fn$myfn007$1$0", "IsNullable": true } ] } }
+{ "fn": { "DataverseName": "test", "Name": "myfn008", "Arity": "1", "Params": [ "a" ], "ReturnType": "fn$myfn008$1", "Definition": "a", "Language": "SQLPP", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ [ "test", "MyType1" ] ] ], "ReturnTypeIsNullable": false, "ParamTypes": [ { "Type": "fn$myfn008$1$0", "IsNullable": false } ] } }
+{ "fn": { "DataverseName": "test", "Name": "myfn009", "Arity": "1", "Params": [ "a" ], "ReturnType": "fn$myfn009$1", "Definition": "a", "Language": "SQLPP", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ [ "test", "MyType1" ] ] ], "ReturnTypeIsNullable": true, "ParamTypes": [ { "Type": "fn$myfn009$1$0", "IsNullable": true } ] } }
- { "dt": { "DataverseName": "test", "DatatypeName": "MyType1", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "id", "FieldType": "int64", "IsNullable": false }, { "FieldName": "value", "FieldType": "string", "IsNullable": false } ] } } } }
++{ "dt": { "DataverseName": "test", "DatatypeName": "MyType1", "Derived": { "Tag": "RECORD", "IsAnonymous": false, "Record": { "IsOpen": true, "Fields": [ { "FieldName": "id", "FieldType": "int64", "IsNullable": false, "IsMissable": false }, { "FieldName": "value", "FieldType": "string", "IsNullable": false, "IsMissable": false } ] } } } }
+{ "dt": { "DataverseName": "test", "DatatypeName": "fn$myfn003$3$1", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "int64" } } }
+{ "dt": { "DataverseName": "test", "DatatypeName": "fn$myfn003$3$2", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "boolean" } } }
+{ "dt": { "DataverseName": "test", "DatatypeName": "fn$myfn004$2$1", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "MyType1" } } }
+{ "dt": { "DataverseName": "test", "DatatypeName": "fn$myfn005$4$1", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "int64" } } }
+{ "dt": { "DataverseName": "test", "DatatypeName": "fn$myfn005$4$3", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "MyType1" } } }
+{ "dt": { "DataverseName": "test", "DatatypeName": "fn$myfn006$1", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" } } }
+{ "dt": { "DataverseName": "test", "DatatypeName": "fn$myfn006$1$0", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "string" } } }
+{ "dt": { "DataverseName": "test", "DatatypeName": "fn$myfn007$1", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "string" } } }
+{ "dt": { "DataverseName": "test", "DatatypeName": "fn$myfn007$1$0", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "string" } } }
+{ "dt": { "DataverseName": "test", "DatatypeName": "fn$myfn008$1", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "MyType1" } } }
+{ "dt": { "DataverseName": "test", "DatatypeName": "fn$myfn008$1$0", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "MyType1" } } }
+{ "dt": { "DataverseName": "test", "DatatypeName": "fn$myfn009$1", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "MyType1" } } }
+{ "dt": { "DataverseName": "test", "DatatypeName": "fn$myfn009$1$0", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "MyType1" } } }
diff --cc asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/BuiltinTypeMap.java
index 4553124,d2284b9..e26dec7
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/BuiltinTypeMap.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/BuiltinTypeMap.java
@@@ -24,10 -25,9 +24,9 @@@ import java.util.HashSet
import java.util.Map;
import java.util.Set;
-import org.apache.asterix.common.exceptions.MetadataException;
+import org.apache.asterix.common.metadata.DataverseName;
import org.apache.asterix.common.transactions.TxnId;
import org.apache.asterix.metadata.MetadataNode;
- import org.apache.asterix.om.types.AUnionType;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
@@@ -93,18 -93,17 +92,15 @@@ public class BuiltinTypeMap
return new HashSet<>(_builtinTypeMap.values());
}
- public static IAType getTypeFromTypeName(MetadataNode metadataNode, TxnId txnId, String dataverseName,
+ public static IAType getTypeFromTypeName(MetadataNode metadataNode, TxnId txnId, DataverseName dataverseName,
- String typeName, boolean optional) throws AlgebricksException {
+ String typeName) throws AlgebricksException {
IAType type = _builtinTypeMap.get(typeName);
if (type == null) {
- try {
- Datatype dt = metadataNode.getDatatype(txnId, dataverseName, typeName);
+ Datatype dt = metadataNode.getDatatype(txnId, dataverseName, typeName);
+ if (dt != null) {
type = dt.getDatatype();
- } catch (RemoteException e) {
- throw new MetadataException(e);
}
}
- if (optional) {
- type = AUnionType.createUnknownableType(type);
- }
return type;
}
}
diff --cc asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/AbstractDatatypeTupleTranslator.java
index 7a37597,0000000..60bd2c2
mode 100644,000000..100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/AbstractDatatypeTupleTranslator.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/AbstractDatatypeTupleTranslator.java
@@@ -1,216 -1,0 +1,226 @@@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.metadata.entitytupletranslators;
+
+import java.io.DataOutput;
+
+import org.apache.asterix.builders.IARecordBuilder;
+import org.apache.asterix.builders.OrderedListBuilder;
+import org.apache.asterix.builders.RecordBuilder;
+import org.apache.asterix.common.metadata.DataverseName;
+import org.apache.asterix.common.transactions.TxnId;
+import org.apache.asterix.metadata.MetadataNode;
+import org.apache.asterix.metadata.api.IMetadataIndex;
+import org.apache.asterix.metadata.bootstrap.MetadataRecordTypes;
+import org.apache.asterix.metadata.entities.Datatype;
+import org.apache.asterix.om.base.ABoolean;
+import org.apache.asterix.om.types.AOrderedListType;
+import org.apache.asterix.om.types.ARecordType;
++import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.om.types.AUnionType;
+import org.apache.asterix.om.types.AbstractCollectionType;
+import org.apache.asterix.om.types.AbstractComplexType;
+import org.apache.asterix.om.types.IAType;
- import org.apache.asterix.om.utils.NonTaggedFormatUtil;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.api.exceptions.ErrorCode;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
+
+public abstract class AbstractDatatypeTupleTranslator<T> extends AbstractTupleTranslator<T> {
+
+ public enum DerivedTypeTag {
+ RECORD,
+ UNORDEREDLIST,
+ ORDEREDLIST
+ }
+
+ protected final MetadataNode metadataNode;
+
+ protected final TxnId txnId;
+
+ public AbstractDatatypeTupleTranslator(TxnId txnId, MetadataNode metadataNode, boolean getTuple,
+ IMetadataIndex metadataIndex, int payloadTupleFieldIndex) {
+ super(getTuple, metadataIndex, payloadTupleFieldIndex);
+ this.txnId = txnId;
+ this.metadataNode = metadataNode;
+ }
+
+ protected void writeDerivedTypeRecord(DataverseName dataverseName, AbstractComplexType derivedDatatype,
+ DataOutput out, boolean isAnonymous) throws HyracksDataException {
+ DerivedTypeTag tag;
+ IARecordBuilder derivedRecordBuilder = new RecordBuilder();
+ ArrayBackedValueStorage fieldValue = new ArrayBackedValueStorage();
+ switch (derivedDatatype.getTypeTag()) {
+ case ARRAY:
+ tag = DerivedTypeTag.ORDEREDLIST;
+ break;
+ case MULTISET:
+ tag = DerivedTypeTag.UNORDEREDLIST;
+ break;
+ case OBJECT:
+ tag = DerivedTypeTag.RECORD;
+ break;
+ default:
+ throw new UnsupportedOperationException(
+ "No metadata record Type for " + derivedDatatype.getDisplayName());
+ }
+
+ derivedRecordBuilder.reset(MetadataRecordTypes.DERIVEDTYPE_RECORDTYPE);
+
+ // write field 0
+ fieldValue.reset();
+ aString.setValue(tag.toString());
+ stringSerde.serialize(aString, fieldValue.getDataOutput());
+ derivedRecordBuilder.addField(MetadataRecordTypes.DERIVEDTYPE_ARECORD_TAG_FIELD_INDEX, fieldValue);
+
+ // write field 1
+ fieldValue.reset();
+ booleanSerde.serialize(ABoolean.valueOf(isAnonymous), fieldValue.getDataOutput());
+ derivedRecordBuilder.addField(MetadataRecordTypes.DERIVEDTYPE_ARECORD_ISANONYMOUS_FIELD_INDEX, fieldValue);
+
+ switch (tag) {
+ case RECORD:
+ fieldValue.reset();
+ writeRecordType(dataverseName, derivedDatatype, fieldValue.getDataOutput());
+ derivedRecordBuilder.addField(MetadataRecordTypes.DERIVEDTYPE_ARECORD_RECORD_FIELD_INDEX, fieldValue);
+ break;
+ case UNORDEREDLIST:
+ fieldValue.reset();
+ writeCollectionType(dataverseName, derivedDatatype, fieldValue.getDataOutput());
+ derivedRecordBuilder.addField(MetadataRecordTypes.DERIVEDTYPE_ARECORD_UNORDEREDLIST_FIELD_INDEX,
+ fieldValue);
+ break;
+ case ORDEREDLIST:
+ fieldValue.reset();
+ writeCollectionType(dataverseName, derivedDatatype, fieldValue.getDataOutput());
+ derivedRecordBuilder.addField(MetadataRecordTypes.DERIVEDTYPE_ARECORD_ORDEREDLIST_FIELD_INDEX,
+ fieldValue);
+ break;
+ }
+ derivedRecordBuilder.write(out, true);
+ }
+
+ private void writeCollectionType(DataverseName dataverseName, AbstractComplexType type, DataOutput out)
+ throws HyracksDataException {
+ AbstractCollectionType listType = (AbstractCollectionType) type;
+ IAType itemType = listType.getItemType();
+ if (itemType.getTypeTag().isDerivedType()) {
+ handleNestedDerivedType(dataverseName, itemType.getTypeName(), (AbstractComplexType) itemType);
+ }
+ aString.setValue(listType.getItemType().getTypeName());
+ stringSerde.serialize(aString, out);
+ }
+
+ private void writeRecordType(DataverseName dataverseName, AbstractComplexType type, DataOutput out)
+ throws HyracksDataException {
+
+ ArrayBackedValueStorage fieldValue = new ArrayBackedValueStorage();
+ ArrayBackedValueStorage itemValue = new ArrayBackedValueStorage();
+ IARecordBuilder recordRecordBuilder = new RecordBuilder();
+ IARecordBuilder fieldRecordBuilder = new RecordBuilder();
+
+ ARecordType recType = (ARecordType) type;
+ OrderedListBuilder listBuilder = new OrderedListBuilder();
+ listBuilder.reset(new AOrderedListType(MetadataRecordTypes.FIELD_RECORDTYPE, null));
+
+ for (int i = 0, n = recType.getFieldNames().length; i < n; i++) {
- String fieldName = recType.getFieldNames()[i];
+ IAType fieldType = recType.getFieldTypes()[i];
-
+ boolean fieldIsNullable = false;
- if (NonTaggedFormatUtil.isOptional(fieldType)) {
- fieldIsNullable = true;
- fieldType = ((AUnionType) fieldType).getActualType();
++ boolean fieldIsMissable = false;
++
++ if (fieldType.getTypeTag() == ATypeTag.UNION) {
++ AUnionType fieldUnionType = (AUnionType) fieldType;
++ fieldIsNullable = fieldUnionType.isNullableType();
++ fieldIsMissable = fieldUnionType.isMissableType();
++ fieldType = fieldUnionType.getActualType();
+ }
+ if (fieldType.getTypeTag().isDerivedType()) {
+ handleNestedDerivedType(dataverseName, fieldType.getTypeName(), (AbstractComplexType) fieldType);
+ }
+
+ itemValue.reset();
+
+ fieldRecordBuilder.reset(MetadataRecordTypes.FIELD_RECORDTYPE);
+
+ // write field 0
+ fieldValue.reset();
- aString.setValue(fieldName);
++ aString.setValue(recType.getFieldNames()[i]);
+ stringSerde.serialize(aString, fieldValue.getDataOutput());
+ fieldRecordBuilder.addField(MetadataRecordTypes.FIELD_ARECORD_FIELDNAME_FIELD_INDEX, fieldValue);
+
+ // write field 1
+ fieldValue.reset();
+ aString.setValue(fieldType.getTypeName());
+ stringSerde.serialize(aString, fieldValue.getDataOutput());
+ fieldRecordBuilder.addField(MetadataRecordTypes.FIELD_ARECORD_FIELDTYPE_FIELD_INDEX, fieldValue);
+
+ // write field 2
+ fieldValue.reset();
+ booleanSerde.serialize(ABoolean.valueOf(fieldIsNullable), fieldValue.getDataOutput());
+ fieldRecordBuilder.addField(MetadataRecordTypes.FIELD_ARECORD_ISNULLABLE_FIELD_INDEX, fieldValue);
+
++ // write open fields
++ fieldName.reset();
++ aString.setValue(MetadataRecordTypes.FIELD_NAME_IS_MISSABLE);
++ stringSerde.serialize(aString, fieldName.getDataOutput());
++ fieldValue.reset();
++ booleanSerde.serialize(ABoolean.valueOf(fieldIsMissable), fieldValue.getDataOutput());
++ fieldRecordBuilder.addField(fieldName, fieldValue);
++
+ // write record
+ fieldRecordBuilder.write(itemValue.getDataOutput(), true);
+
+ // add item to the list of fields
+ listBuilder.addItem(itemValue);
+ }
+
+ recordRecordBuilder.reset(MetadataRecordTypes.RECORD_RECORDTYPE);
+ // write field 0
+ fieldValue.reset();
+ booleanSerde.serialize(ABoolean.valueOf(recType.isOpen()), fieldValue.getDataOutput());
+ recordRecordBuilder.addField(MetadataRecordTypes.RECORDTYPE_ARECORD_ISOPEN_FIELD_INDEX, fieldValue);
+
+ // write field 1
+ fieldValue.reset();
+ listBuilder.write(fieldValue.getDataOutput(), true);
+ recordRecordBuilder.addField(MetadataRecordTypes.RECORDTYPE_ARECORD_FIELDS_FIELD_INDEX, fieldValue);
+
+ // write record
+ recordRecordBuilder.write(out, true);
+ }
+
+ protected void handleNestedDerivedType(DataverseName dataverseName, String typeName, AbstractComplexType nestedType)
+ throws HyracksDataException {
+ try {
+ metadataNode.addDatatype(txnId, new Datatype(dataverseName, typeName, nestedType, true));
+ } catch (AlgebricksException e) {
+ // The nested record type may have been inserted by a previous DDL statement or
+ // by a previous nested type.
+ if (!(e.getCause() instanceof HyracksDataException)) {
+ throw HyracksDataException.create(e);
+ } else {
+ HyracksDataException hde = (HyracksDataException) e.getCause();
+ if (!hde.getComponent().equals(ErrorCode.HYRACKS) || hde.getErrorCode() != ErrorCode.DUPLICATE_KEY) {
+ throw hde;
+ }
+ }
+ }
+ }
+}
diff --cc asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatatypeTupleTranslator.java
index c77f8b6,52dd3fd..454cc55
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatatypeTupleTranslator.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatatypeTupleTranslator.java
@@@ -35,9 -44,10 +36,7 @@@ import org.apache.asterix.om.base.AStri
import org.apache.asterix.om.base.IACursor;
import org.apache.asterix.om.types.AOrderedListType;
import org.apache.asterix.om.types.ARecordType;
--import org.apache.asterix.om.types.ATypeTag;
--import org.apache.asterix.om.types.AUnionType;
import org.apache.asterix.om.types.AUnorderedListType;
-import org.apache.asterix.om.types.AbstractCollectionType;
import org.apache.asterix.om.types.AbstractComplexType;
import org.apache.asterix.om.types.IAType;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
@@@ -98,10 -141,24 +97,23 @@@ public class DatatypeTupleTranslator ex
fieldTypeName =
((AString) field.getValueByPos(MetadataRecordTypes.FIELD_ARECORD_FIELDTYPE_FIELD_INDEX))
.getStringValue();
+
boolean isNullable = ((ABoolean) field
.getValueByPos(MetadataRecordTypes.FIELD_ARECORD_ISNULLABLE_FIELD_INDEX)).getBoolean();
- fieldTypes[fieldId] = BuiltinTypeMap.getTypeFromTypeName(metadataNode, txnId, dataverseName,
- fieldTypeName, isNullable);
-
+ int isMissableIdx = field.getType().getFieldIndex(MetadataRecordTypes.FIELD_NAME_IS_MISSABLE);
+ boolean isMissable;
+ if (isMissableIdx >= 0) {
+ isMissable = ((ABoolean) field.getValueByPos(isMissableIdx)).getBoolean();
+ } else {
+ // back-compat
+ // we previously stored 'isNullable' = true if type was 'unknowable',
+ // or 'isNullable' = 'false' if the type was 'not unknowable'.
+ isMissable = isNullable;
+ }
+
+ IAType fieldType =
+ BuiltinTypeMap.getTypeFromTypeName(metadataNode, txnId, dataverseName, fieldTypeName);
+ fieldTypes[fieldId] = TypeUtil.createQuantifiedType(fieldType, isNullable, isMissable);
fieldId++;
}
return new Datatype(dataverseName, datatypeName,
@@@ -160,17 -215,11 +171,12 @@@
stringSerde.serialize(aString, fieldValue.getDataOutput());
recordBuilder.addField(MetadataRecordTypes.DATATYPE_ARECORD_DATATYPENAME_FIELD_INDEX, fieldValue);
+ // write field 2
IAType fieldType = dataType.getDatatype();
- // unwrap nullable type out of the union
- if (fieldType.getTypeTag() == ATypeTag.UNION) {
- fieldType = ((AUnionType) dataType.getDatatype()).getActualType();
- }
-
- // write field 3
if (fieldType.getTypeTag().isDerivedType()) {
fieldValue.reset();
- writeDerivedTypeRecord(dataType, (AbstractComplexType) fieldType, fieldValue.getDataOutput());
+ writeDerivedTypeRecord(dataType.getDataverseName(), (AbstractComplexType) fieldType,
+ fieldValue.getDataOutput(), dataType.getIsAnonymous());
recordBuilder.addField(MetadataRecordTypes.DATATYPE_ARECORD_DERIVED_FIELD_INDEX, fieldValue);
}
diff --cc asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/FunctionTupleTranslator.java
index 14089c2,c4e42d1..f4f6070
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/FunctionTupleTranslator.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/FunctionTupleTranslator.java
@@@ -19,37 -19,18 +19,38 @@@
package org.apache.asterix.metadata.entitytupletranslators;
-import java.io.ByteArrayInputStream;
-import java.io.DataInput;
-import java.io.DataInputStream;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_IS_NULLABLE;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_NAME;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_TYPE;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_VALUE;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_DETERMINISTIC_FIELD_NAME;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_LIBRARY_FIELD_NAME;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_NULLCALL_FIELD_NAME;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_PARAMTYPES_FIELD_NAME;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_RETURN_TYPE_IS_NULLABLE;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_WITHPARAM_LIST_NAME;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.PROPERTIES_NAME_FIELD_NAME;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.PROPERTIES_VALUE_FIELD_NAME;
+
+import java.io.DataOutput;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import org.apache.asterix.builders.IARecordBuilder;
import org.apache.asterix.builders.OrderedListBuilder;
+import org.apache.asterix.builders.RecordBuilder;
import org.apache.asterix.common.functions.FunctionSignature;
-import org.apache.asterix.formats.nontagged.SerializerDeserializerProvider;
+import org.apache.asterix.common.metadata.DataverseName;
+import org.apache.asterix.common.transactions.TxnId;
+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.BuiltinTypeMap;
import org.apache.asterix.metadata.entities.Function;
++import org.apache.asterix.metadata.utils.TypeUtil;
+import org.apache.asterix.om.base.ABoolean;
import org.apache.asterix.om.base.AOrderedList;
import org.apache.asterix.om.base.ARecord;
import org.apache.asterix.om.base.AString;
@@@ -137,98 -117,30 +138,100 @@@ public class FunctionTupleTranslator ex
IACursor dependenciesCursor = ((AOrderedList) functionRecord
.getValueByPos(MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_DEPENDENCIES_FIELD_INDEX)).getCursor();
- List<List<List<String>>> dependencies = new ArrayList<>();
- AOrderedList dependencyList;
- AOrderedList qualifiedList;
- int i = 0;
+ List<List<Triple<DataverseName, String, String>>> dependencies = new ArrayList<>();
while (dependenciesCursor.next()) {
- dependencies.add(new ArrayList<>());
- dependencyList = (AOrderedList) dependenciesCursor.get();
- IACursor qualifiedDependencyCursor = dependencyList.getCursor();
- int j = 0;
+ List<Triple<DataverseName, String, String>> dependencyList = new ArrayList<>();
+ IACursor qualifiedDependencyCursor = ((AOrderedList) dependenciesCursor.get()).getCursor();
while (qualifiedDependencyCursor.next()) {
- qualifiedList = (AOrderedList) qualifiedDependencyCursor.get();
- IACursor qualifiedNameCursor = qualifiedList.getCursor();
- dependencies.get(i).add(new ArrayList<>());
- while (qualifiedNameCursor.next()) {
- dependencies.get(i).get(j).add(((AString) qualifiedNameCursor.get()).getStringValue());
- }
- j++;
+ Triple<DataverseName, String, String> dependency =
+ getDependency((AOrderedList) qualifiedDependencyCursor.get());
+ dependencyList.add(dependency);
}
- i++;
+ dependencies.add(dependencyList);
+ }
+
+ FunctionSignature signature = new FunctionSignature(dataverseName, functionName, arity);
+
+ return new Function(signature, argNames, argTypes, returnType, definition, functionKind, language,
+ functionLibrary, nullCall, deterministic, params, dependencies);
+ }
+ private IAType resolveType(DataverseName dataverseName, String typeName, Boolean isUnknownable)
+ throws AlgebricksException {
++ //TODO(dmitry): revisit "isNullable"/"isMissable" for function paramters
+ return BuiltinType.ANY.getTypeName().equalsIgnoreCase(typeName) ? BuiltinType.ANY
- : BuiltinTypeMap.getTypeFromTypeName(metadataNode, txnId, dataverseName, typeName,
- isUnknownable != null ? isUnknownable : false);
++ : TypeUtil.createQuantifiedType(
++ BuiltinTypeMap.getTypeFromTypeName(metadataNode, txnId, dataverseName, typeName), isUnknownable,
++ isUnknownable);
+ }
+
+ private List<IAType> getArgTypes(ARecord functionRecord, DataverseName dataverseName, int arity)
+ throws AlgebricksException {
+ List<IAType> argTypes = new ArrayList<>(arity);
+
+ ARecordType functionRecordType = functionRecord.getType();
+ int paramTypesFieldIdx = functionRecordType.getFieldIndex(FUNCTION_ARECORD_FUNCTION_PARAMTYPES_FIELD_NAME);
+ if (paramTypesFieldIdx >= 0) {
+ IACursor cursor = ((AOrderedList) functionRecord.getValueByPos(paramTypesFieldIdx)).getCursor();
+ while (cursor.next()) {
+ ARecord paramTypeRecord = (ARecord) cursor.get();
+ String paramTypeName = getString(paramTypeRecord, FIELD_NAME_TYPE);
+ Boolean paramTypeIsNullable = getBoolean(paramTypeRecord, FIELD_NAME_IS_NULLABLE);
+ IAType paramType = paramTypeName != null
+ ? resolveType(dataverseName, paramTypeName, paramTypeIsNullable) : BuiltinType.ANY;
+ argTypes.add(paramType);
+ }
+ } else {
+ for (int i = 0; i < arity; i++) {
+ argTypes.add(BuiltinType.ANY);
+ }
}
+ return argTypes;
+ }
- FunctionSignature signature = new FunctionSignature(dataverseName, functionName, Integer.parseInt(arity));
- return new Function(signature, params, returnType, definition, language, functionKind, dependencies);
+ private Triple<DataverseName, String, String> getDependency(AOrderedList dependencySubnames) {
+ String dataverseCanonicalName = ((AString) dependencySubnames.getItem(0)).getStringValue();
+ DataverseName dataverseName = DataverseName.createFromCanonicalForm(dataverseCanonicalName);
+ String second = null, third = null;
+ int ln = dependencySubnames.size();
+ if (ln > 1) {
+ second = ((AString) dependencySubnames.getItem(1)).getStringValue();
+ if (ln > 2) {
+ third = ((AString) dependencySubnames.getItem(2)).getStringValue();
+ }
+ }
+ return new Triple<>(dataverseName, second, third);
+ }
+
+ private Map<String, String> getWithParameters(ARecord functionRecord) {
+ Map<String, String> adaptorConfiguration = new HashMap<>();
+ final ARecordType functionType = functionRecord.getType();
+ final int functionLibraryIdx = functionType.getFieldIndex(FUNCTION_ARECORD_FUNCTION_WITHPARAM_LIST_NAME);
+ if (functionLibraryIdx >= 0) {
+ IACursor cursor = ((AOrderedList) functionRecord.getValueByPos(functionLibraryIdx)).getCursor();
+ while (cursor.next()) {
+ ARecord field = (ARecord) cursor.get();
+ final ARecordType fieldType = field.getType();
+ final int keyIdx = fieldType.getFieldIndex(PROPERTIES_NAME_FIELD_NAME);
+ String key = keyIdx >= 0 ? ((AString) field.getValueByPos(keyIdx)).getStringValue() : "";
+ final int valueIdx = fieldType.getFieldIndex(PROPERTIES_VALUE_FIELD_NAME);
+ String value = valueIdx >= 0 ? ((AString) field.getValueByPos(valueIdx)).getStringValue() : "";
+ adaptorConfiguration.put(key, value);
+ }
+ }
+ return adaptorConfiguration;
+ }
+
+ private String getString(ARecord aRecord, String fieldName) {
+ final ARecordType functionType = aRecord.getType();
+ final int functionLibraryIdx = functionType.getFieldIndex(fieldName);
+ return functionLibraryIdx >= 0 ? ((AString) aRecord.getValueByPos(functionLibraryIdx)).getStringValue() : null;
+ }
+
+ private Boolean getBoolean(ARecord aRecord, String fieldName) {
+ final ARecordType functionType = aRecord.getType();
+ final int fieldIndex = functionType.getFieldIndex(fieldName);
+ return fieldIndex >= 0 ? ((ABoolean) aRecord.getValueByPos(fieldIndex)).getBoolean() : null;
}
@Override
diff --cc asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/IndexTupleTranslator.java
index 5d16f56,0c56c5e..79ce2a4
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/IndexTupleTranslator.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/IndexTupleTranslator.java
@@@ -134,7 -141,7 +134,7 @@@ public class IndexTupleTranslator exten
List<IAType> searchKeyType = new ArrayList<>(searchKey.size());
while (fieldTypeCursor.next()) {
String typeName = ((AString) fieldTypeCursor.get()).getStringValue();
- IAType fieldType = BuiltinTypeMap.getTypeFromTypeName(metadataNode, txnId, dataverseName, typeName, false);
- IAType fieldType = BuiltinTypeMap.getTypeFromTypeName(metadataNode, txnId, dvName, typeName);
++ IAType fieldType = BuiltinTypeMap.getTypeFromTypeName(metadataNode, txnId, dataverseName, typeName);
searchKeyType.add(fieldType);
}
boolean isOverridingKeyTypes = !searchKeyType.isEmpty();