public boolean dropPartition(String db_name, String tbl_name, List<String> part_vals, boolean deleteData) throws HiveException { return dropPartition(db_name, tbl_name, part_vals, PartitionDropOptions.instance().deleteData(deleteData)); }
@Override public boolean dropPartition(String catName, String db_name, String tbl_name, List<String> part_vals, boolean deleteData) throws TException { return dropPartition(catName, db_name, tbl_name, part_vals, PartitionDropOptions.instance() .deleteData(deleteData)); }
public boolean dropPartition(String db_name, String tbl_name, List<String> part_vals, boolean deleteData) throws HiveException { return dropPartition(db_name, tbl_name, part_vals, PartitionDropOptions.instance().deleteData(deleteData)); }
public List<Partition> dropPartitions(String dbName, String tblName, List<DropTableDesc.PartSpec> partSpecs, boolean deleteData, boolean ifExists) throws HiveException { return dropPartitions(dbName, tblName, partSpecs, PartitionDropOptions.instance() .deleteData(deleteData) .ifExists(ifExists)); }
@Override public boolean dropPartition(String db_name, String tbl_name, List<String> part_vals, boolean deleteData) throws TException { return dropPartition(getDefaultCatalog(conf), db_name, tbl_name, part_vals, PartitionDropOptions.instance().deleteData(deleteData)); }
public List<Partition> dropPartitions(String dbName, String tblName, List<DropTableDesc.PartSpec> partSpecs, boolean deleteData, boolean ifExists) throws HiveException { return dropPartitions(dbName, tblName, partSpecs, PartitionDropOptions.instance() .deleteData(deleteData) .ifExists(ifExists)); }
@Override public List<Partition> dropPartitions(String dbName, String tblName, List<ObjectPair<Integer, byte[]>> partExprs, boolean deleteData, boolean ifExists) throws NoSuchObjectException, MetaException, TException { // By default, we need the results from dropPartitions(); return dropPartitions(getDefaultCatalog(conf), dbName, tblName, partExprs, PartitionDropOptions.instance() .deleteData(deleteData) .ifExists(ifExists)); }
/** * Drop partitions based on an expression. * @param catName catalog name. * @param dbName database name. * @param tblName table name. * @param partExprs I don't understand this fully, so can't completely explain it. The second * half of the object pair is an expression used to determine which partitions * to drop. The first half has something to do with archive level, but I * don't understand what. I'm also not sure what happens if you pass multiple * expressions. * @param deleteData whether to delete the data as well as the metadata. * @param ifExists if true, it is not an error if no partitions match the expression(s). * @return list of deleted partitions. * @throws NoSuchObjectException No partition matches the expression(s), and ifExists was false. * @throws MetaException error access the RDBMS or storage. * @throws TException Thrift transport error. */ default List<Partition> dropPartitions(String catName, String dbName, String tblName, List<ObjectPair<Integer, byte[]>> partExprs, boolean deleteData, boolean ifExists) throws NoSuchObjectException, MetaException, TException { return dropPartitions(catName, dbName, tblName, partExprs, PartitionDropOptions.instance() .deleteData(deleteData) .ifExists(ifExists)); }
@Override public List<Partition> dropPartitions(String dbName, String tblName, List<ObjectPair<Integer, byte[]>> partExprs, boolean deleteData, boolean ifExists, boolean needResult) throws NoSuchObjectException, MetaException, TException { return dropPartitions(getDefaultCatalog(conf), dbName, tblName, partExprs, PartitionDropOptions.instance() .deleteData(deleteData) .ifExists(ifExists) .returnResults(needResult)); }
/** * Drop partitions based on an expression. * @param catName catalog name. * @param dbName database name. * @param tblName table name. * @param partExprs I don't understand this fully, so can't completely explain it. The second * half of the object pair is an expression used to determine which partitions * to drop. The first half has something to do with archive level, but I * don't understand what. I'm also not sure what happens if you pass multiple * expressions. * @param deleteData whether to delete the data as well as the metadata. * @param ifExists if true, it is not an error if no partitions match the expression(s). * @param needResults if true, the list of deleted partitions will be returned, if not, null * will be returned. * @return list of deleted partitions, if needResults is true * @throws NoSuchObjectException No partition matches the expression(s), and ifExists was false. * @throws MetaException error access the RDBMS or storage. * @throws TException Thrift transport error. */ default List<Partition> dropPartitions(String catName, String dbName, String tblName, List<ObjectPair<Integer, byte[]>> partExprs, boolean deleteData, boolean ifExists, boolean needResults) throws NoSuchObjectException, MetaException, TException { return dropPartitions(catName, dbName, tblName, partExprs, PartitionDropOptions.instance() .deleteData(deleteData) .ifExists(ifExists) .returnResults(needResults)); }
@Override public List<Partition> dropPartitions(String dbName, String tblName, List<ObjectPair<Integer, byte[]>> partExprs, boolean deleteData, boolean ifExists) throws NoSuchObjectException, MetaException, TException { // By default, we need the results from dropPartitions(); return dropPartitions(dbName, tblName, partExprs, PartitionDropOptions.instance() .deleteData(deleteData) .ifExists(ifExists)); }
@Test public void testDropPartitionDeleteDataNoPurge() throws Exception { PartitionDropOptions partDropOptions = PartitionDropOptions.instance(); partDropOptions.deleteData(true); partDropOptions.purgeData(false); client.dropPartition(DB_NAME, TABLE_NAME, PARTITIONS[0].getValues(), partDropOptions); List<Partition> droppedPartitions = Lists.newArrayList(PARTITIONS[0]); List<Partition> remainingPartitions = Lists.newArrayList(PARTITIONS[1], PARTITIONS[2]); checkPartitionsAfterDelete(TABLE_NAME, droppedPartitions, remainingPartitions, true, false); }
@Test public void testDropPartitionDeleteDataAndPurge() throws Exception { PartitionDropOptions partDropOptions = PartitionDropOptions.instance(); partDropOptions.deleteData(true); partDropOptions.purgeData(true); client.dropPartition(DB_NAME, TABLE_NAME, PARTITIONS[0].getValues(), partDropOptions); List<Partition> droppedPartitions = Lists.newArrayList(PARTITIONS[0]); List<Partition> remainingPartitions = Lists.newArrayList(PARTITIONS[1], PARTITIONS[2]); checkPartitionsAfterDelete(TABLE_NAME, droppedPartitions, remainingPartitions, true, true); }
@Test public void testDropPartitionNotDeleteData() throws Exception { PartitionDropOptions partDropOptions = PartitionDropOptions.instance(); partDropOptions.deleteData(false); partDropOptions.purgeData(false); client.dropPartition(DB_NAME, TABLE_NAME, PARTITIONS[0].getValues(), partDropOptions); List<Partition> droppedPartitions = Lists.newArrayList(PARTITIONS[0]); List<Partition> remainingPartitions = Lists.newArrayList(PARTITIONS[1], PARTITIONS[2]); checkPartitionsAfterDelete(TABLE_NAME, droppedPartitions, remainingPartitions, false, false); }
@Test public void testDropPartitionNotDeleteDataPurge() throws Exception { PartitionDropOptions partDropOptions = PartitionDropOptions.instance(); partDropOptions.deleteData(false); partDropOptions.purgeData(true); client.dropPartition(DB_NAME, TABLE_NAME, PARTITIONS[0].getValues(), partDropOptions); List<Partition> droppedPartitions = Lists.newArrayList(PARTITIONS[0]); List<Partition> remainingPartitions = Lists.newArrayList(PARTITIONS[1], PARTITIONS[2]); checkPartitionsAfterDelete(TABLE_NAME, droppedPartitions, remainingPartitions, false, false); }
@Override public List<Partition> dropPartitions(String dbName, String tblName, List<ObjectPair<Integer, byte[]>> partExprs, boolean deleteData, boolean ifExists, boolean needResult) throws NoSuchObjectException, MetaException, TException { return dropPartitions(dbName, tblName, partExprs, PartitionDropOptions.instance() .deleteData(deleteData) .ifExists(ifExists) .returnResults(needResult)); }
@Test public void testDropPartitionPurgeSetInTable() throws Exception { PartitionDropOptions partDropOptions = PartitionDropOptions.instance(); partDropOptions.deleteData(true); partDropOptions.purgeData(false); String tableName = "purge_test"; Map<String, String> tableParams = new HashMap<>(); tableParams.put("auto.purge", "true"); createTable(tableName, getYearPartCol(), tableParams); Partition partition1 = createPartition(tableName, null, Lists.newArrayList("2017"), getYearPartCol(), null); Partition partition2 = createPartition(tableName, null, Lists.newArrayList("2018"), getYearPartCol(), null); client.dropPartition(DB_NAME, tableName, partition1.getValues(), true); List<Partition> droppedPartitions = Lists.newArrayList(partition1); List<Partition> remainingPartitions = Lists.newArrayList(partition2); checkPartitionsAfterDelete(tableName, droppedPartitions, remainingPartitions, true, true); }
@Test public void testDropPartitionDeleteDataAndPurgeExternalTable() throws Exception { String tableName = "external_table"; Map<String, String> tableParams = new HashMap<>(); tableParams.put("EXTERNAL", "true"); createTable(tableName, getYearPartCol(), tableParams); String location = metaStore.getWarehouseRoot() + "/externalTable/year=2017"; Partition partition = createPartition(tableName, location, Lists.newArrayList("2017"), getYearPartCol(), null); PartitionDropOptions partDropOptions = PartitionDropOptions.instance(); partDropOptions.deleteData(true); partDropOptions.purgeData(true); client.dropPartition(DB_NAME, tableName, partition.getValues(), partDropOptions); List<Partition> partitionsAfterDrop = client.listPartitions(DB_NAME, tableName, MAX); Assert.assertTrue(partitionsAfterDrop.isEmpty()); Assert.assertTrue("The location '" + location + "' should exist.", metaStore.isPathExists(new Path(location))); }
partition.getValues(), PartitionDropOptions.instance() .deleteData(true) .purgeData(false) );
partition.getValues(), PartitionDropOptions.instance() .deleteData(true) .purgeData(true) ); partition.getValues(), PartitionDropOptions.instance() .deleteData(true) .purgeData(false) );