LENS-616 : Altering table should not remove existing properties (amareshwari)
Project: http://git-wip-us.apache.org/repos/asf/incubator-lens/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-lens/commit/ead42f8e Tree: http://git-wip-us.apache.org/repos/asf/incubator-lens/tree/ead42f8e Diff: http://git-wip-us.apache.org/repos/asf/incubator-lens/diff/ead42f8e Branch: refs/heads/current-release-line Commit: ead42f8e1929bba9c3e71e9c91f348a54a6f233b Parents: 2a61a7b Author: Amareshwari Sriramadasu <[email protected]> Authored: Thu Jun 18 14:22:55 2015 +0530 Committer: Amareshwari Sriramadasu <[email protected]> Committed: Thu Jun 18 14:22:55 2015 +0530 ---------------------------------------------------------------------- .../java/org/apache/lens/cube/metadata/Storage.java | 5 ++++- .../lens/cube/metadata/TestCubeMetastoreClient.java | 15 +++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/ead42f8e/lens-cube/src/main/java/org/apache/lens/cube/metadata/Storage.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/metadata/Storage.java b/lens-cube/src/main/java/org/apache/lens/cube/metadata/Storage.java index d3c9974..c754042 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/metadata/Storage.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/metadata/Storage.java @@ -129,7 +129,10 @@ public abstract class Storage extends AbstractCubeTable implements PartitionMeta */ public Table getStorageTable(Hive client, Table parent, StorageTableDesc crtTbl) throws HiveException { String storageTableName = MetastoreUtil.getStorageTableName(parent.getTableName(), this.getPrefix()); - Table tbl = client.newTable(storageTableName); + Table tbl = client.getTable(storageTableName, false); + if (tbl == null) { + tbl = client.newTable(storageTableName); + } tbl.getTTable().setSd(new StorageDescriptor(parent.getTTable().getSd())); if (crtTbl.getTblProps() != null) { http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/ead42f8e/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestCubeMetastoreClient.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestCubeMetastoreClient.java b/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestCubeMetastoreClient.java index d481f93..18b6c87 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestCubeMetastoreClient.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestCubeMetastoreClient.java @@ -1209,7 +1209,6 @@ public class TestCubeMetastoreClient { Assert.assertEquals(timeline1Temp.getClass(), EndsAndHolesPartitionTimeline.class); Assert.assertEquals(timeline2Temp.getClass(), StoreAllPartitionTimeline.class); - Assert.assertEquals(client.getAllParts(c1TableName).size(), 3); Assert.assertEquals(client.getAllParts(c2TableName).size(), 3); @@ -1297,9 +1296,21 @@ public class TestCubeMetastoreClient { assertTimeline(timelineEt, timelineEtC2, UpdatePeriod.HOURLY, nowMinus5, nowPlus1, nowMinus4, nowMinus3); assertTimeline(timelineIt, timelineItC2, UpdatePeriod.HOURLY, nowMinus5, nowPlus1, nowMinus4, nowMinus3, nowMinus2); - assertNoPartitionNamedLatest(c1TableName, partColNames); assertSameTimelines(factName, storages, UpdatePeriod.HOURLY, partColNames); + Assert.assertEquals(Hive.get(client.getConf()).getTable(c1TableName).getParameters().get( + MetastoreUtil.getPartitionTimelineCachePresenceKey()), "true"); + Assert.assertEquals(Hive.get(client.getConf()).getTable(c2TableName).getParameters().get( + MetastoreUtil.getPartitionTimelineCachePresenceKey()), "true"); + + // alter tables and see timeline still exists + client.alterCubeFactTable(factName, cubeFact, storageTables); + assertSameTimelines(factName, storages, UpdatePeriod.HOURLY, partColNames); + Assert.assertEquals(Hive.get(client.getConf()).getTable(c1TableName).getParameters().get( + MetastoreUtil.getPartitionTimelineCachePresenceKey()), "true"); + Assert.assertEquals(Hive.get(client.getConf()).getTable(c2TableName).getParameters().get( + MetastoreUtil.getPartitionTimelineCachePresenceKey()), "true"); + client.dropPartition(cubeFact.getName(), c1, timeParts5, null, UpdatePeriod.HOURLY); client.dropPartition(cubeFact.getName(), c2, timeParts5, null, UpdatePeriod.HOURLY);
