private static MDSKey.Builder getMDSKeyPrefix(NamespacedEntityId targetId, byte[] rowPrefix) { String targetType = EntityIdKeyHelper.getV1TargetType(targetId); MDSKey.Builder builder = new MDSKey.Builder(); builder.add(rowPrefix); builder.add(targetType); EntityIdKeyHelper.addTargetIdToKey(builder, targetId); return builder; }
public static void addTargetIdToKey(MDSKey.Builder builder, NamespacedEntityId namespacedEntityId) { String type = getTargetType(namespacedEntityId); if (type.equals(TYPE_MAP.get(NamespaceId.class))) { NamespaceId namespaceId = (NamespaceId) namespacedEntityId;
static NamespacedEntityId getNamespacedIdFromKey(String type, byte[] rowKey) { MDSKey.Splitter keySplitter = new MDSKey(rowKey).split(); // The rowkey is // [rowPrefix][targetType][targetId][key] for value rows and // [rowPrefix][targetType][targetId][key][index] for value index rows // so skip the first two. keySplitter.skipBytes(); keySplitter.skipString(); return EntityIdKeyHelper.getTargetIdIdFromKey(keySplitter, type); }
/** * Deserializes history row key to get timestamp and metadata entry. * * @param row history row. * @return {@link KeyValue} key is timestamp from history key, value is {@link MetadataEntry}. */ @Nullable private KeyValue<Long, Object> convertFromV1History(Row row) { byte[] rowKey = row.getRow(); // History rows does not store entity type in the key. So to get the entity, we will read the value, deserialize it. // However, in v2 tables, we are going to add type in the history row key. MetadataV1 metadata = V1_GSON.fromJson(row.getString(HISTORY_COLUMN), MetadataV1.class); if (metadata == null) { return null; } long historyTime = MdsHistoryKey.extractTime(rowKey, EntityIdKeyHelper.getV1TargetType(metadata.getEntityId())); // For history we do not care about key and value for MetadataEntry as we are not going to extract that // information for upgrade return new KeyValue<>(historyTime, metadata); }
public static MDSKey getMdsKey(NamespacedEntityId targetId, long time) { MDSKey.Builder builder = new MDSKey.Builder(); builder.add(ROW_PREFIX); EntityIdKeyHelper.addTargetIdToKey(builder, targetId); builder.add(invertTime(time)); return builder.build(); }
public static void addTargetIdToKey(MDSKey.Builder builder, NamespacedEntityId namespacedEntityId) { String type = getTargetType(namespacedEntityId); if (type.equals(TYPE_MAP.get(NamespaceId.class))) { NamespaceId namespaceId = (NamespaceId) namespacedEntityId;
private static byte[] createRowKey(NamespacedEntityId targetId) { // We are not going to upgrade owner.meta table in 5.0, when we upgrade this table, // we should call EntityIdKeyHelper#getTargetType() String targetType = EntityIdKeyHelper.getV1TargetType(targetId); MDSKey.Builder builder = new MDSKey.Builder(); builder.add(OWNER_PREFIX); builder.add(targetType); EntityIdKeyHelper.addTargetIdToKey(builder, targetId); MDSKey build = builder.build(); return build.getKey(); } }
private static byte[] createRowKey(NamespacedEntityId targetId) { // We are not going to upgrade owner.meta table in 5.0, when we upgrade this table, // we should call EntityIdKeyHelper#getTargetType() String targetType = EntityIdKeyHelper.getV1TargetType(targetId); MDSKey.Builder builder = new MDSKey.Builder(); builder.add(OWNER_PREFIX); builder.add(targetType); EntityIdKeyHelper.addTargetIdToKey(builder, targetId); MDSKey build = builder.build(); return build.getKey(); } }