private CompactionPolicy createCompactionPolicyFromARecord(ARecord compactionPolicyRecord) { CompactionPolicy compactionPolicy = null; String dataverseName = ((AString) compactionPolicyRecord .getValueByPos(MetadataRecordTypes.COMPACTION_POLICY_ARECORD_DATAVERSE_NAME_FIELD_INDEX)) .getStringValue(); String policyName = ((AString) compactionPolicyRecord .getValueByPos(MetadataRecordTypes.COMPACTION_POLICY_ARECORD_POLICY_NAME_FIELD_INDEX)).getStringValue(); String className = ((AString) compactionPolicyRecord .getValueByPos(MetadataRecordTypes.COMPACTION_POLICY_ARECORD_CLASSNAME_FIELD_INDEX)).getStringValue(); compactionPolicy = new CompactionPolicy(dataverseName, policyName, className); return compactionPolicy; }
private Library createLibraryFromARecord(ARecord libraryRecord) { String dataverseName = ((AString) libraryRecord.getValueByPos(MetadataRecordTypes.LIBRARY_ARECORD_DATAVERSENAME_FIELD_INDEX)) .getStringValue(); String libraryName = ((AString) libraryRecord.getValueByPos(MetadataRecordTypes.LIBRARY_ARECORD_NAME_FIELD_INDEX)) .getStringValue(); return new Library(dataverseName, libraryName); }
private void setFile(ARecord externalFileRecord, ExternalFile file) { file.setFileName( ((AString) externalFileRecord.getValueByPos(FilesIndexDescription.EXTERNAL_FILE_NAME_FIELD_INDEX)) .getStringValue()); file.setSize(((AInt64) externalFileRecord.getValueByPos(FilesIndexDescription.EXTERNAL_FILE_SIZE_FIELD_INDEX)) .getLongValue()); file.setLastModefiedTime(new Date( ((ADateTime) externalFileRecord.getValueByPos(FilesIndexDescription.EXTERNAL_FILE_MOD_DATE_FIELD_INDEX)) .getChrononTime())); }
protected Map<String, String> getDatasetHints(ARecord datasetRecord) { Map<String, String> hints = new HashMap<>(); String key; String value; AUnorderedList list = (AUnorderedList) datasetRecord.getValueByPos(MetadataRecordTypes.DATASET_ARECORD_HINTS_FIELD_INDEX); IACursor cursor = list.getCursor(); while (cursor.next()) { ARecord field = (ARecord) cursor.get(); key = ((AString) field.getValueByPos(MetadataRecordTypes.PROPERTIES_NAME_FIELD_INDEX)).getStringValue(); value = ((AString) field.getValueByPos(MetadataRecordTypes.PROPERTIES_VALUE_FIELD_INDEX)).getStringValue(); hints.put(key, value); } return hints; }
private ExternalFile createExternalFileFromARecord(ARecord externalFileRecord) { String dataverseName = ((AString) externalFileRecord .getValueByPos(MetadataRecordTypes.EXTERNAL_FILE_ARECORD_DATAVERSENAME_FIELD_INDEX)).getStringValue(); String datasetName = ((AString) externalFileRecord .getValueByPos(MetadataRecordTypes.EXTERNAL_FILE_ARECORD_DATASET_NAME_FIELD_INDEX)).getStringValue(); int fileNumber = ((AInt32) externalFileRecord .getValueByPos(MetadataRecordTypes.EXTERNAL_FILE_ARECORD_FILE_NUMBER_FIELD_INDEX)).getIntegerValue(); String fileName = ((AString) externalFileRecord .getValueByPos(MetadataRecordTypes.EXTERNAL_FILE_ARECORD_FILE_NAME_FIELD_INDEX)).getStringValue(); long fileSize = ((AInt64) externalFileRecord .getValueByPos(MetadataRecordTypes.EXTERNAL_FILE_ARECORD_FILE_SIZE_FIELD_INDEX)).getLongValue(); Date lastMoDifiedDate = new Date(((ADateTime) externalFileRecord .getValueByPos(MetadataRecordTypes.EXTERNAL_FILE_ARECORD_FILE_MOD_DATE_FIELD_INDEX)).getChrononTime()); ExternalFilePendingOp pendingOp = ExternalFilePendingOp.values()[((AInt32) externalFileRecord .getValueByPos(MetadataRecordTypes.EXTERNAL_FILE_ARECORD_FILE_PENDING_OP_FIELD_INDEX)) .getIntegerValue()]; return new ExternalFile(dataverseName, datasetName, fileNumber, fileName, lastMoDifiedDate, fileSize, pendingOp); }
private FeedPolicyEntity createFeedPolicyFromARecord(ARecord feedPolicyRecord) { FeedPolicyEntity feedPolicy = null; String dataverseName = ((AString) feedPolicyRecord .getValueByPos(MetadataRecordTypes.FEED_POLICY_ARECORD_DATAVERSE_NAME_FIELD_INDEX)).getStringValue(); String policyName = ((AString) feedPolicyRecord .getValueByPos(MetadataRecordTypes.FEED_POLICY_ARECORD_POLICY_NAME_FIELD_INDEX)).getStringValue(); String description = ((AString) feedPolicyRecord .getValueByPos(MetadataRecordTypes.FEED_POLICY_ARECORD_DESCRIPTION_FIELD_INDEX)).getStringValue(); IACursor cursor = ((AUnorderedList) feedPolicyRecord .getValueByPos(MetadataRecordTypes.FEED_POLICY_ARECORD_PROPERTIES_FIELD_INDEX)).getCursor(); Map<String, String> policyParamters = new HashMap<>(); String key; String value; while (cursor.next()) { ARecord field = (ARecord) cursor.get(); key = ((AString) field.getValueByPos(MetadataRecordTypes.PROPERTIES_NAME_FIELD_INDEX)).getStringValue(); value = ((AString) field.getValueByPos(MetadataRecordTypes.PROPERTIES_VALUE_FIELD_INDEX)).getStringValue(); policyParamters.put(key, value); } feedPolicy = new FeedPolicyEntity(dataverseName, policyName, description, policyParamters); return feedPolicy; }
public static void recordToMap(Map<String, String> map, ARecord record) throws AlgebricksException { String[] keys = record.getType().getFieldNames(); for (int i = 0; i < keys.length; i++) { String key = keys[i]; String value = aObjToString(record.getValueByPos(i)); map.put(key, value); } }
public String recordToString(ARecord record) { StringBuilder sb = new StringBuilder(); sb.append("{ "); String[] fieldNames = record.getType().getFieldNames(); IAObject val; if (fieldNames != null) { for (int i = 0; i < fieldNames.length; i++) { if (i > 0) { sb.append(", "); } sb.append("\"").append(fieldNames[i]).append("\"").append(": "); val = record.getValueByPos(i); if (val instanceof ARecord) { sb.append(recordToString((ARecord) val)); } else if (val instanceof AOrderedList) { sb.append(listToString((AOrderedList) val)); } else { sb.append(val); } } } sb.append(" }"); return sb.toString(); }
private DatasourceAdapter createAdapterFromARecord(ARecord adapterRecord) { String dataverseName = ((AString) adapterRecord .getValueByPos(MetadataRecordTypes.DATASOURCE_ADAPTER_ARECORD_DATAVERSENAME_FIELD_INDEX)) .getStringValue(); String adapterName = ((AString) adapterRecord.getValueByPos(MetadataRecordTypes.DATASOURCE_ADAPTER_ARECORD_NAME_FIELD_INDEX)) .getStringValue(); String classname = ((AString) adapterRecord .getValueByPos(MetadataRecordTypes.DATASOURCE_ADAPTER_ARECORD_CLASSNAME_FIELD_INDEX)).getStringValue(); IDataSourceAdapter.AdapterType adapterType = IDataSourceAdapter.AdapterType.valueOf( ((AString) adapterRecord.getValueByPos(MetadataRecordTypes.DATASOURCE_ADAPTER_ARECORD_TYPE_FIELD_INDEX)) .getStringValue()); return new DatasourceAdapter(new AdapterIdentifier(dataverseName, adapterName), classname, adapterType); }
@Override public Dataverse getMetadataEntityFromTuple(ITupleReference frameTuple) throws HyracksDataException { byte[] serRecord = frameTuple.getFieldData(DATAVERSE_PAYLOAD_TUPLE_FIELD_INDEX); int recordStartOffset = frameTuple.getFieldStart(DATAVERSE_PAYLOAD_TUPLE_FIELD_INDEX); int recordLength = frameTuple.getFieldLength(DATAVERSE_PAYLOAD_TUPLE_FIELD_INDEX); ByteArrayInputStream stream = new ByteArrayInputStream(serRecord, recordStartOffset, recordLength); DataInput in = new DataInputStream(stream); ARecord dataverseRecord = recordSerDes.deserialize(in); return new Dataverse(((AString) dataverseRecord.getValueByPos(0)).getStringValue(), ((AString) dataverseRecord.getValueByPos(1)).getStringValue(), ((AInt32) dataverseRecord.getValueByPos(3)).getIntegerValue()); }
private Feed createFeedFromARecord(ARecord feedRecord) { Feed feed; String dataverseName = ((AString) feedRecord.getValueByPos(MetadataRecordTypes.FEED_ARECORD_DATAVERSE_NAME_FIELD_INDEX)) .getStringValue(); String feedName = ((AString) feedRecord.getValueByPos(MetadataRecordTypes.FEED_ARECORD_FEED_NAME_FIELD_INDEX)) .getStringValue(); AUnorderedList feedConfig = (AUnorderedList) feedRecord.getValueByPos(MetadataRecordTypes.FEED_ARECORD_ADAPTOR_CONFIG_INDEX); IACursor cursor = feedConfig.getCursor(); // restore configurations String key; String value; Map<String, String> adaptorConfiguration = new HashMap<>(); while (cursor.next()) { ARecord field = (ARecord) cursor.get(); key = ((AString) field.getValueByPos(MetadataRecordTypes.PROPERTIES_NAME_FIELD_INDEX)).getStringValue(); value = ((AString) field.getValueByPos(MetadataRecordTypes.PROPERTIES_VALUE_FIELD_INDEX)).getStringValue(); adaptorConfiguration.put(key, value); } feed = new Feed(dataverseName, feedName, adaptorConfiguration); return feed; }
private FeedConnection createFeedConnFromRecord(ARecord feedConnRecord) { String dataverseName = ((AString) feedConnRecord.getValueByPos(MetadataRecordTypes.FEED_CONN_DATAVERSE_NAME_FIELD_INDEX)) .getStringValue(); String feedName = ((AString) feedConnRecord.getValueByPos(MetadataRecordTypes.FEED_CONN_FEED_NAME_FIELD_INDEX)) .getStringValue(); String datasetName = ((AString) feedConnRecord.getValueByPos(MetadataRecordTypes.FEED_CONN_DATASET_NAME_FIELD_INDEX)) .getStringValue(); String outputType = ((AString) feedConnRecord.getValueByPos(MetadataRecordTypes.FEED_CONN_OUTPUT_TYPE_INDEX)) .getStringValue(); String policyName = ((AString) feedConnRecord.getValueByPos(MetadataRecordTypes.FEED_CONN_POLICY_FIELD_INDEX)) .getStringValue(); ArrayList<FunctionSignature> appliedFunctions = null; Object o = feedConnRecord.getValueByPos(MetadataRecordTypes.FEED_CONN_APPLIED_FUNCTIONS_FIELD_INDEX); IACursor cursor; FunctionSignature functionSignature; cursor = ((AUnorderedList) feedConnRecord .getValueByPos(MetadataRecordTypes.FEED_CONN_APPLIED_FUNCTIONS_FIELD_INDEX)).getCursor(); while (cursor.next()) { String[] functionFullName = ((AString) cursor.get()).getStringValue().split("\\."); whereClauseIdx >= 0 ? ((AString) feedConnRecord.getValueByPos(whereClauseIdx)).getStringValue() : "";
private long getRebalanceCount(ARecord datasetRecord) { // Read the rebalance count if there is one. int rebalanceCountIndex = datasetRecord.getType().getFieldIndex(MetadataRecordTypes.DATASET_ARECORD_REBALANCE_FIELD_NAME); return rebalanceCountIndex >= 0 ? ((AInt64) datasetRecord.getValueByPos(rebalanceCountIndex)).getLongValue() : 0; }
@Override public NodeGroup getMetadataEntityFromTuple(ITupleReference frameTuple) throws HyracksDataException { byte[] serRecord = frameTuple.getFieldData(NODEGROUP_PAYLOAD_TUPLE_FIELD_INDEX); int recordStartOffset = frameTuple.getFieldStart(NODEGROUP_PAYLOAD_TUPLE_FIELD_INDEX); int recordLength = frameTuple.getFieldLength(NODEGROUP_PAYLOAD_TUPLE_FIELD_INDEX); ByteArrayInputStream stream = new ByteArrayInputStream(serRecord, recordStartOffset, recordLength); DataInput in = new DataInputStream(stream); ARecord nodeGroupRecord = recordSerDes.deserialize(in); String gpName = ((AString) nodeGroupRecord.getValueByPos(MetadataRecordTypes.NODEGROUP_ARECORD_GROUPNAME_FIELD_INDEX)) .getStringValue(); IACursor cursor = ((AUnorderedList) nodeGroupRecord .getValueByPos(MetadataRecordTypes.NODEGROUP_ARECORD_NODENAMES_FIELD_INDEX)).getCursor(); List<String> nodeNames = new ArrayList<>(); while (cursor.next()) { nodeNames.add(((AString) cursor.get()).getStringValue()); } return new NodeGroup(gpName, nodeNames); }
private Function createFunctionFromARecord(ARecord functionRecord) { String dataverseName = ((AString) functionRecord.getValueByPos(MetadataRecordTypes.FUNCTION_ARECORD_DATAVERSENAME_FIELD_INDEX)) .getStringValue(); String functionName = ((AString) functionRecord.getValueByPos(MetadataRecordTypes.FUNCTION_ARECORD_FUNCTIONNAME_FIELD_INDEX)) .getStringValue(); String arity = ((AString) functionRecord .getValueByPos(MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_ARITY_FIELD_INDEX)).getStringValue(); .getValueByPos(MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_PARAM_LIST_FIELD_INDEX)).getCursor(); List<String> params = new ArrayList<>(); while (cursor.next()) { .getValueByPos(MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_RETURN_TYPE_FIELD_INDEX)).getStringValue(); .getValueByPos(MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_DEFINITION_FIELD_INDEX)).getStringValue(); .getValueByPos(MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_LANGUAGE_FIELD_INDEX)).getStringValue(); ((AString) functionRecord.getValueByPos(MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_KIND_FIELD_INDEX)) .getStringValue(); .getValueByPos(MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_DEPENDENCIES_FIELD_INDEX)).getCursor(); List<List<List<String>>> dependencies = new ArrayList<>(); AOrderedList dependencyList;
private Datatype createDataTypeFromARecord(ARecord datatypeRecord) throws AlgebricksException { String dataverseName = ((AString) datatypeRecord.getValueByPos(MetadataRecordTypes.DATATYPE_ARECORD_DATAVERSENAME_FIELD_INDEX)) .getStringValue(); String datatypeName = ((AString) datatypeRecord.getValueByPos(MetadataRecordTypes.DATATYPE_ARECORD_DATATYPENAME_FIELD_INDEX)) .getStringValue(); IAType type = BuiltinTypeMap.getBuiltinType(datatypeName); (ARecord) datatypeRecord.getValueByPos(MetadataRecordTypes.DATATYPE_ARECORD_DERIVED_FIELD_INDEX); DerivedTypeTag tag = DerivedTypeTag.valueOf( ((AString) derivedTypeRecord.getValueByPos(MetadataRecordTypes.DERIVEDTYPE_ARECORD_TAG_FIELD_INDEX)) .getStringValue()); boolean isAnonymous = ((ABoolean) derivedTypeRecord .getValueByPos(MetadataRecordTypes.DERIVEDTYPE_ARECORD_ISANONYMOUS_FIELD_INDEX)).getBoolean(); switch (tag) { case RECORD: { ARecord recordType = (ARecord) derivedTypeRecord .getValueByPos(MetadataRecordTypes.DERIVEDTYPE_ARECORD_RECORD_FIELD_INDEX); boolean isOpen = ((ABoolean) recordType .getValueByPos(MetadataRecordTypes.RECORDTYPE_ARECORD_ISOPEN_FIELD_INDEX)).getBoolean() .booleanValue(); int numberOfFields = ((AOrderedList) recordType .getValueByPos(MetadataRecordTypes.RECORDTYPE_ARECORD_FIELDS_FIELD_INDEX)).size(); IACursor cursor = ((AOrderedList) recordType .getValueByPos(MetadataRecordTypes.RECORDTYPE_ARECORD_FIELDS_FIELD_INDEX)).getCursor(); String[] fieldNames = new String[numberOfFields]; IAType[] fieldTypes = new IAType[numberOfFields]; ARecord field = (ARecord) cursor.get();
private String getCompressionScheme(ARecord datasetRecord) { final ARecordType datasetType = datasetRecord.getType(); final int compressionIndex = datasetType .getFieldIndex(MetadataRecordTypes.DATASET_ARECORD_BLOCK_LEVEL_STORAGE_COMPRESSION_FIELD_NAME); if (compressionIndex >= 0) { final ARecordType compressionType = (ARecordType) datasetType.getFieldTypes()[compressionIndex]; final int schemeIndex = compressionType .getFieldIndex(MetadataRecordTypes.DATASET_ARECORD_DATASET_COMPRESSION_SCHEME_FIELD_NAME); return ((AString) datasetRecord.getValueByPos(schemeIndex)).getStringValue(); } return CompressionManager.NONE; }
DataInput in = new DataInputStream(stream); ARecord rec = recordSerde.deserialize(in); String dvName = ((AString) rec.getValueByPos(MetadataRecordTypes.INDEX_ARECORD_DATAVERSENAME_FIELD_INDEX)) .getStringValue(); String dsName = ((AString) rec.getValueByPos(MetadataRecordTypes.INDEX_ARECORD_DATASETNAME_FIELD_INDEX)) .getStringValue(); String indexName = ((AString) rec.getValueByPos(MetadataRecordTypes.INDEX_ARECORD_INDEXNAME_FIELD_INDEX)).getStringValue(); IndexType indexStructure = IndexType .valueOf(((AString) rec.getValueByPos(MetadataRecordTypes.INDEX_ARECORD_INDEXSTRUCTURE_FIELD_INDEX)) .getStringValue()); IACursor fieldNameCursor = ((AOrderedList) rec.getValueByPos(MetadataRecordTypes.INDEX_ARECORD_SEARCHKEY_FIELD_INDEX)).getCursor(); List<List<String>> searchKey = new ArrayList<>(); AOrderedList fieldNameList; IACursor fieldTypeCursor = new ACollectionCursor(); if (indexKeyTypeFieldPos > 0) { fieldTypeCursor = ((AOrderedList) rec.getValueByPos(indexKeyTypeFieldPos)).getCursor(); Boolean isEnforcingKeys = false; if (isEnforcedFieldPos > 0) { isEnforcingKeys = ((ABoolean) rec.getValueByPos(isEnforcedFieldPos)).getBoolean(); ((ABoolean) rec.getValueByPos(MetadataRecordTypes.INDEX_ARECORD_ISPRIMARY_FIELD_INDEX)).getBoolean(); int pendingOp = ((AInt32) rec.getValueByPos(MetadataRecordTypes.INDEX_ARECORD_PENDINGOP_FIELD_INDEX)).getIntegerValue(); gramLength = ((AInt32) rec.getValueByPos(gramLenPos)).getIntegerValue();
@SuppressWarnings("unchecked") public void serialize(ARecord instance, DataOutput out, boolean writeTypeTag) throws HyracksDataException { IARecordBuilder recordBuilder = new RecordBuilder(); ArrayBackedValueStorage fieldValue = new ArrayBackedValueStorage(); recordBuilder.reset(recordType); recordBuilder.init(); if (recordType != null) { int fieldIndex = 0; for (; fieldIndex < recordType.getFieldNames().length; ++fieldIndex) { fieldValue.reset(); serializers[fieldIndex].serialize(instance.getValueByPos(fieldIndex), fieldValue.getDataOutput()); recordBuilder.addField(fieldIndex, fieldValue); } recordBuilder.write(out, writeTypeTag); } else { serializeSchemalessRecord(instance, out, writeTypeTag); } }
@SuppressWarnings({ "unchecked", "rawtypes" }) public static void serializeSchemalessRecord(ARecord record, DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException { ISerializerDeserializer<AString> stringSerde = SerializerDeserializerProvider.INSTANCE.getSerializerDeserializer(BuiltinType.ASTRING); RecordBuilder confRecordBuilder = new RecordBuilder(); confRecordBuilder.reset(RecordUtil.FULLY_OPEN_RECORD_TYPE); ArrayBackedValueStorage fieldNameBytes = new ArrayBackedValueStorage(); ArrayBackedValueStorage fieldValueBytes = new ArrayBackedValueStorage(); for (int i = 0; i < record.getType().getFieldNames().length; i++) { String fieldName = record.getType().getFieldNames()[i]; fieldValueBytes.reset(); fieldNameBytes.reset(); stringSerde.serialize(new AString(fieldName), fieldNameBytes.getDataOutput()); ISerializerDeserializer valueSerde = SerializerDeserializerProvider.INSTANCE .getSerializerDeserializer(record.getType().getFieldTypes()[i]); valueSerde.serialize(record.getValueByPos(i), fieldValueBytes.getDataOutput()); confRecordBuilder.addField(fieldNameBytes, fieldValueBytes); } confRecordBuilder.write(dataOutput, writeTypeTag); }