/** * {@inheritDoc} */ @Override public void update(final QualifiedName name, final PartitionDto partitionDto) { final PartitionsSaveRequestDto dto = new PartitionsSaveRequestDto(); dto.setPartitions(Lists.newArrayList(partitionDto)); save(name, dto); }
private void readObject(final ObjectInputStream in) throws IOException, ClassNotFoundException { in.defaultReadObject(); dataMetadata = deserializeObjectNode(in); definitionMetadata = deserializeObjectNode(in); }
private void writeObject(final ObjectOutputStream out) throws IOException { out.defaultWriteObject(); serializeObjectNode(out, dataMetadata); serializeObjectNode(out, definitionMetadata); }
/** * {@inheritDoc} */ @Override public PartitionDto create(final QualifiedName name, final PartitionDto partitionDto) { final PartitionsSaveRequestDto dto = new PartitionsSaveRequestDto(); dto.setCheckIfExists(false); dto.setPartitions(Lists.newArrayList(partitionDto)); save(name, dto); return partitionDto; }
/** * {@inheritDoc} */ @Override public void rename_partition(final String dbName, final String tblName, final List<String> partVals, final Partition newPart) throws TException { requestWrapper("rename_partition", new Object[]{dbName, tblName, partVals}, () -> { final TableDto tableDto = getTableDto(dbName, tblName); final String partName = hiveConverters.getNameFromPartVals(tableDto, partVals); final PartitionsSaveRequestDto partitionsSaveRequestDto = new PartitionsSaveRequestDto(); final PartitionDto partitionDto = hiveConverters.hiveToMetacatPartition(tableDto, newPart); partitionsSaveRequestDto.setPartitions(Lists.newArrayList(partitionDto)); partitionsSaveRequestDto.setPartitionIdsForDeletes(Lists.newArrayList(partName)); partV1.savePartitions(catalogName, dbName, tblName, partitionsSaveRequestDto); return null; }); }
/** * {@inheritDoc} */ @Override public void deletePartitions(final QualifiedName name, final List<String> partitionIds) { final MetacatRequestContext metacatRequestContext = MetacatContextManager.getContext(); final PartitionsSaveRequestDto dto = new PartitionsSaveRequestDto(); dto.setPartitionIdsForDeletes(partitionIds); eventBus.post(new MetacatDeleteMViewPartitionPreEvent(name, metacatRequestContext, this, dto)); final QualifiedName viewQName = QualifiedName.ofTable(name.getCatalogName(), VIEW_DB_NAME, createViewName(name)); partitionService.delete(viewQName, partitionIds); eventBus.post( new MetacatDeleteMViewPartitionPostEvent(name, metacatRequestContext, this, partitionIds) ); }
) { final PartitionsSaveResponseDto result; final List<PartitionDto> partitionDtos = dto.getPartitions(); if (partitionDtos == null || partitionDtos.isEmpty()) { return new PartitionsSaveResponseDto(); final MetacatRequestContext metacatRequestContext = MetacatContextManager.getContext(); eventBus.post(new MetacatSaveMViewPartitionPreEvent(name, metacatRequestContext, this, dto)); final List<String> partitionIdsForDeletes = dto.getPartitionIdsForDeletes(); if (partitionIdsForDeletes != null && !partitionIdsForDeletes.isEmpty()) { eventBus.post(new MetacatDeleteMViewPartitionPreEvent(name, metacatRequestContext, this, dto)); return mergePartition(partitionDto, existingPartition); }).collect(Collectors.toList()); dto.setPartitions(mergedPartitions); result = partitionService.save(viewQName, dto); } else { new MetacatSaveMViewPartitionPostEvent(name, metacatRequestContext, this, dto.getPartitions()) ); if (partitionIdsForDeletes != null && !partitionIdsForDeletes.isEmpty()) {
() -> { final PartitionsSaveResponseDto result; if (partitionsSaveRequestDto.getPartitions() == null || partitionsSaveRequestDto.getPartitions().isEmpty()) { result = new PartitionsSaveResponseDto(); } else { if (partitionsSaveRequestDto.getDefinitionMetadata() != null || partitionsSaveRequestDto.getDataMetadata() != null) { final TableDto dto = new TableDto(); dto.setName(name); dto.setDefinitionMetadata(partitionsSaveRequestDto.getDefinitionMetadata()); dto.setDataMetadata(partitionsSaveRequestDto.getDataMetadata()); this.v1.updateTable(catalogName, databaseName, tableName, dto); () -> { final PartitionsSaveResponseDto result; if (partitionsSaveRequestDto.getPartitions() == null || partitionsSaveRequestDto.getPartitions().isEmpty()) { result = new PartitionsSaveResponseDto(); } else { result = mViewService.savePartitions(name, partitionsSaveRequestDto, true); if (partitionsSaveRequestDto.getDefinitionMetadata() != null || partitionsSaveRequestDto.getDataMetadata() != null) { final TableDto dto = new TableDto(); dto.setName(name); dto.setDefinitionMetadata(partitionsSaveRequestDto.getDefinitionMetadata()); dto.setDataMetadata(partitionsSaveRequestDto.getDataMetadata());
/** * {@inheritDoc} */ @Override public PartitionsSaveResponseDto save(final QualifiedName name, final PartitionsSaveRequestDto dto) { final MetacatRequestContext metacatRequestContext = MetacatContextManager.getContext(); final ConnectorPartitionService service = connectorManager.getPartitionService(name); final List<PartitionDto> partitionDtos = dto.getPartitions(); // If no partitions are passed, then return if (partitionDtos == null || partitionDtos.isEmpty()) { return new PartitionsSaveResponseDto(); } if (!tableService.exists(name)) { throw new TableNotFoundException(name); } //optimization for metadata only updates (e.g. squirrel) , assuming only validate partitions are requested if (dto.getSaveMetadataOnly()) { return savePartitionMetadataOnly(metacatRequestContext, dto, name, partitionDtos); } else { return updatePartitions(service, metacatRequestContext, dto, name, partitionDtos); } }
registry.distributionSummary( this.partitionAddDistSummary.withTags(name.parts())).record(partitionDtos.size()); final List<String> partitionIdsForDeletes = dto.getPartitionIdsForDeletes(); if (partitionIdsForDeletes != null && !partitionIdsForDeletes.isEmpty()) { eventBus.post(new MetacatDeleteTablePartitionPreEvent(name, metacatRequestContext, this, dto));
/** * {@inheritDoc} */ @Override public void rename_partition(final String dbName, final String tblName, final List<String> partVals, final Partition newPart) throws TException { requestWrapper("rename_partition", new Object[]{dbName, tblName, partVals}, () -> { final TableDto tableDto = getTableDto(dbName, tblName); final String partName = hiveConverters.getNameFromPartVals(tableDto, partVals); final PartitionsSaveRequestDto partitionsSaveRequestDto = new PartitionsSaveRequestDto(); final PartitionDto partitionDto = hiveConverters.hiveToMetacatPartition(tableDto, newPart); partitionsSaveRequestDto.setPartitions(Lists.newArrayList(partitionDto)); partitionsSaveRequestDto.setPartitionIdsForDeletes(Lists.newArrayList(partName)); partV1.savePartitions(catalogName, dbName, tblName, partitionsSaveRequestDto); return null; }); }
final PartitionsSaveRequestDto dto = new PartitionsSaveRequestDto(); dto.setPartitionIdsForDeletes(partitionIds); eventBus.post(new MetacatDeleteTablePartitionPreEvent(name, metacatRequestContext, this, dto)); final ConnectorPartitionService service = connectorManager.getPartitionService(name);
/** * {@inheritDoc} */ @Override public void snapshotPartitions(final QualifiedName name, @Nullable final String filter) { final List<PartitionDto> partitionDtos = partitionService.list(name, null, null, false, false, new GetPartitionsRequestDto(filter, null, true, true)); if (partitionDtos != null && !partitionDtos.isEmpty()) { log.info("Snapshot partitions({}) for view {}.", partitionDtos.size(), name); final PartitionsSaveRequestDto dto = new PartitionsSaveRequestDto(); dto.setPartitions(partitionDtos); savePartitions(name, dto, false); } }
/** * Calls the right method of the event bus for the given qualified name. * * @param name name * @param metacatRequestContext context */ public void postPreDeleteEvent( final QualifiedName name, final MetacatRequestContext metacatRequestContext ) { if (name.isPartitionDefinition()) { final PartitionsSaveRequestDto partitionsSaveRequestDto = new PartitionsSaveRequestDto(); partitionsSaveRequestDto.setPartitionIdsForDeletes(Lists.newArrayList(name.getPartitionName())); this.eventBus.post( new MetacatDeleteTablePartitionPreEvent(name, metacatRequestContext, this, partitionsSaveRequestDto) ); } else if (name.isViewDefinition()) { this.eventBus.post( new MetacatDeleteMViewPreEvent(name, metacatRequestContext, this) ); } else if (name.isTableDefinition()) { this.eventBus.post(new MetacatDeleteTablePreEvent(name, metacatRequestContext, this)); } else if (name.isDatabaseDefinition()) { final DatabaseDto dto = new DatabaseDto(); dto.setName(name); eventBus.post(new MetacatDeleteDatabasePreEvent(name, metacatRequestContext, this, dto)); } else { throw new IllegalArgumentException(String.format("Invalid name %s", name)); } }
private void readObject(final ObjectInputStream in) throws IOException, ClassNotFoundException { in.defaultReadObject(); dataMetadata = deserializeObjectNode(in); definitionMetadata = deserializeObjectNode(in); }
private void writeObject(final ObjectOutputStream out) throws IOException { out.defaultWriteObject(); serializeObjectNode(out, dataMetadata); serializeObjectNode(out, definitionMetadata); }
private List<Partition> addPartitionsCore(final String dbName, final String tblName, final List<Partition> parts, final boolean ifNotExists) throws TException { log.debug("Ignoring {} since metacat save partitions will do an update if it already exists", ifNotExists); final TableDto tableDto = v1.getTable(catalogName, dbName, tblName, true, false, false); final List<String> partitionKeys = tableDto.getPartition_keys(); if (partitionKeys == null || partitionKeys.isEmpty()) { throw new MetaException("Unable to add partition to unpartitioned table: " + tableDto.getName()); } final PartitionsSaveRequestDto partitionsSaveRequestDto = new PartitionsSaveRequestDto(); final List<PartitionDto> converted = Lists.newArrayListWithCapacity(parts.size()); for (Partition partition : parts) { converted.add(hiveConverters.hiveToMetacatPartition(tableDto, partition)); } partitionsSaveRequestDto.setPartitions(converted); partV1.savePartitions(catalogName, dbName, tblName, partitionsSaveRequestDto); return parts; }
private void appendPartitionsCore(final String dbName, final String tblName, final String partName) throws TException { final PartitionsSaveRequestDto partitionsSaveRequestDto = new PartitionsSaveRequestDto(); final PartitionDto partitionDto = new PartitionDto(); partitionDto.setName(QualifiedName.ofPartition(catalogName, dbName, tblName, partName)); partitionDto.setSerde(new StorageDto()); partitionsSaveRequestDto.setPartitions(Lists.newArrayList(partitionDto)); partV1.savePartitions(catalogName, dbName, tblName, partitionsSaveRequestDto); }
private List<Partition> addPartitionsCore(final String dbName, final String tblName, final List<Partition> parts, final boolean ifNotExists) throws TException { log.debug("Ignoring {} since metacat save partitions will do an update if it already exists", ifNotExists); final TableDto tableDto = v1.getTable(catalogName, dbName, tblName, true, false, false); final List<String> partitionKeys = tableDto.getPartition_keys(); if (partitionKeys == null || partitionKeys.isEmpty()) { throw new MetaException("Unable to add partition to unpartitioned table: " + tableDto.getName()); } final PartitionsSaveRequestDto partitionsSaveRequestDto = new PartitionsSaveRequestDto(); final List<PartitionDto> converted = Lists.newArrayListWithCapacity(parts.size()); for (Partition partition : parts) { converted.add(hiveConverters.hiveToMetacatPartition(tableDto, partition)); } partitionsSaveRequestDto.setPartitions(converted); partV1.savePartitions(catalogName, dbName, tblName, partitionsSaveRequestDto); return parts; }
private void appendPartitionsCore(final String dbName, final String tblName, final String partName) throws TException { final PartitionsSaveRequestDto partitionsSaveRequestDto = new PartitionsSaveRequestDto(); final PartitionDto partitionDto = new PartitionDto(); partitionDto.setName(QualifiedName.ofPartition(catalogName, dbName, tblName, partName)); partitionDto.setSerde(new StorageDto()); partitionsSaveRequestDto.setPartitions(Lists.newArrayList(partitionDto)); partV1.savePartitions(catalogName, dbName, tblName, partitionsSaveRequestDto); }