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 <[email protected]> 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();
