FAQ
Author: khorgath
Date: Thu Jan 15 01:12:26 2015
New Revision: 1651923

URL: http://svn.apache.org/r1651923
Log:
HIVE-9175 : Add alters to list of events handled by NotificationListener (Alan Gates via Sushanth Sowmyan)

Added:
     hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/AlterPartitionMessage.java
     hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/AlterTableMessage.java
     hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONAlterPartitionMessage.java
     hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONAlterTableMessage.java
Modified:
     hive/trunk/hcatalog/core/src/main/java/org/apache/hive/hcatalog/common/HCatConstants.java
     hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/DbNotificationListener.java
     hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/NotificationListener.java
     hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/HCatEventMessage.java
     hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/MessageDeserializer.java
     hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/MessageFactory.java
     hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONMessageDeserializer.java
     hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONMessageFactory.java
     hive/trunk/hcatalog/server-extensions/src/test/java/org/apache/hive/hcatalog/listener/TestNotificationListener.java
     hive/trunk/itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/TestDbNotificationListener.java
     hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
     hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/events/AlterPartitionEvent.java

Modified: hive/trunk/hcatalog/core/src/main/java/org/apache/hive/hcatalog/common/HCatConstants.java
URL: http://svn.apache.org/viewvc/hive/trunk/hcatalog/core/src/main/java/org/apache/hive/hcatalog/common/HCatConstants.java?rev=1651923&r1=1651922&r2=1651923&view=diff
==============================================================================
--- hive/trunk/hcatalog/core/src/main/java/org/apache/hive/hcatalog/common/HCatConstants.java (original)
+++ hive/trunk/hcatalog/core/src/main/java/org/apache/hive/hcatalog/common/HCatConstants.java Thu Jan 15 01:12:26 2015
@@ -132,8 +132,10 @@ public final class HCatConstants {
    public static final String HCAT_EVENT = "HCAT_EVENT";
    public static final String HCAT_ADD_PARTITION_EVENT = "ADD_PARTITION";
    public static final String HCAT_DROP_PARTITION_EVENT = "DROP_PARTITION";
+ public static final String HCAT_ALTER_PARTITION_EVENT = "ALTER_PARTITION";
    public static final String HCAT_PARTITION_DONE_EVENT = "PARTITION_DONE";
    public static final String HCAT_CREATE_TABLE_EVENT = "CREATE_TABLE";
+ public static final String HCAT_ALTER_TABLE_EVENT = "ALTER_TABLE";
    public static final String HCAT_DROP_TABLE_EVENT = "DROP_TABLE";
    public static final String HCAT_CREATE_DATABASE_EVENT = "CREATE_DATABASE";
    public static final String HCAT_DROP_DATABASE_EVENT = "DROP_DATABASE";

Modified: hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/DbNotificationListener.java
URL: http://svn.apache.org/viewvc/hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/DbNotificationListener.java?rev=1651923&r1=1651922&r2=1651923&view=diff
==============================================================================
--- hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/DbNotificationListener.java (original)
+++ hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/DbNotificationListener.java Thu Jan 15 01:12:26 2015
@@ -27,6 +27,7 @@ import org.apache.hadoop.hive.metastore.
  import org.apache.hadoop.hive.metastore.api.Database;
  import org.apache.hadoop.hive.metastore.api.MetaException;
  import org.apache.hadoop.hive.metastore.api.NotificationEvent;
+import org.apache.hadoop.hive.metastore.api.Partition;
  import org.apache.hadoop.hive.metastore.api.Table;
  import org.apache.hadoop.hive.metastore.events.AddPartitionEvent;
  import org.apache.hadoop.hive.metastore.events.AlterPartitionEvent;
@@ -140,7 +141,7 @@ public class DbNotificationListener exte
     * @throws MetaException
     */
    public void onAlterTable (AlterTableEvent tableEvent) throws MetaException {
- /*Table before = tableEvent.getOldTable();
+ Table before = tableEvent.getOldTable();
      Table after = tableEvent.getNewTable();
      NotificationEvent event = new NotificationEvent(0, now(),
          HCatConstants.HCAT_ALTER_TABLE_EVENT,
@@ -149,8 +150,7 @@ public class DbNotificationListener exte
        event.setDbName(after.getDbName());
        event.setTableName(after.getTableName());
        enqueue(event);
- }*/
- // TODO - once HIVE-9175 is committed
+ }
    }

    /**
@@ -187,7 +187,16 @@ public class DbNotificationListener exte
     * @throws MetaException
     */
    public void onAlterPartition (AlterPartitionEvent partitionEvent) throws MetaException {
- // TODO, MessageFactory doesn't support Alter Partition yet.
+ Partition before = partitionEvent.getOldPartition();
+ Partition after = partitionEvent.getNewPartition();
+ NotificationEvent event = new NotificationEvent(0, now(),
+ HCatConstants.HCAT_ALTER_PARTITION_EVENT,
+ msgFactory.buildAlterPartitionMessage(before, after).toString());
+ if (event != null) {
+ event.setDbName(before.getDbName());
+ event.setTableName(before.getTableName());
+ enqueue(event);
+ }
    }

    /**

Modified: hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/NotificationListener.java
URL: http://svn.apache.org/viewvc/hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/NotificationListener.java?rev=1651923&r1=1651922&r2=1651923&view=diff
==============================================================================
--- hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/NotificationListener.java (original)
+++ hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/NotificationListener.java Thu Jan 15 01:12:26 2015
@@ -60,6 +60,7 @@ import org.apache.hadoop.hive.metastore.
  import org.apache.hadoop.hive.metastore.events.ListenerEvent;
  import org.apache.hadoop.hive.metastore.events.LoadPartitionDoneEvent;
  import org.apache.hive.hcatalog.common.HCatConstants;
+import org.apache.hive.hcatalog.messaging.AlterTableMessage;
  import org.apache.hive.hcatalog.messaging.HCatEventMessage;
  import org.apache.hive.hcatalog.messaging.MessageFactory;
  import org.slf4j.Logger;
@@ -116,7 +117,7 @@ public class NotificationListener extend
      testAndCreateConnection();
    }

- private static String getTopicName(Table table, ListenerEvent partitionEvent) {
+ private static String getTopicName(Table table) {
      return table.getParameters().get(HCatConstants.HCAT_MSGBUS_TOPIC_NAME);
    }

@@ -129,7 +130,7 @@ public class NotificationListener extend
      if (partitionEvent.getStatus()) {
        Table table = partitionEvent.getTable();
        List<Partition> partitions = partitionEvent.getPartitions();
- String topicName = getTopicName(table, partitionEvent);
+ String topicName = getTopicName(table);
        if (topicName != null && !topicName.equals("")) {
          send(messageFactory.buildAddPartitionMessage(table, partitions), topicName);
        } else {
@@ -144,6 +145,17 @@ public class NotificationListener extend
      }
    }

+ @Override
+ public void onAlterPartition(AlterPartitionEvent ape) throws MetaException {
+ if (ape.getStatus()) {
+ Partition before = ape.getOldPartition();
+ Partition after = ape.getNewPartition();
+
+ String topicName = getTopicName(ape.getTable());
+ send(messageFactory.buildAlterPartitionMessage(before, after), topicName);
+ }
+ }
+
    /**
     * Send dropped partition notifications. Subscribers can receive these notifications for a
     * particular table by listening on a topic named "dbName.tableName" with message selector
@@ -165,7 +177,7 @@ public class NotificationListener extend
        sd.setParameters(new HashMap<String, String>());
        sd.getSerdeInfo().setParameters(new HashMap<String, String>());
        sd.getSkewedInfo().setSkewedColNames(new ArrayList<String>());
- String topicName = getTopicName(partitionEvent.getTable(), partitionEvent);
+ String topicName = getTopicName(partitionEvent.getTable());
        if (topicName != null && !topicName.equals("")) {
          send(messageFactory.buildDropPartitionMessage(partitionEvent.getTable(), partition), topicName);
        } else {
@@ -241,6 +253,35 @@ public class NotificationListener extend
    }

    /**
+ * Send altered table notifications. Subscribers can receive these notifications for
+ * dropped tables by listening on topic "HCAT" with message selector string
+ * {@value org.apache.hive.hcatalog.common.HCatConstants#HCAT_EVENT} =
+ * {@value org.apache.hive.hcatalog.common.HCatConstants#HCAT_ALTER_TABLE_EVENT}
+ */
+ @Override
+ public void onAlterTable(AlterTableEvent tableEvent) throws MetaException {
+ if (tableEvent.getStatus()) {
+ Table before = tableEvent.getOldTable();
+ Table after = tableEvent.getNewTable();
+
+ // onCreateTable alters the table to add the topic name. Since this class is generating
+ // that alter, we don't want to notify on that alter. So take a quick look and see if
+ // that's what this this alter is, and if so swallow it.
+ if (after.getParameters() != null &&
+ after.getParameters().get(HCatConstants.HCAT_MSGBUS_TOPIC_NAME) != null &&
+ (before.getParameters() == null ||
+ before.getParameters().get(HCatConstants.HCAT_MSGBUS_TOPIC_NAME) == null)) {
+ return;
+ }
+ // I think this is wrong, the alter table statement should come on the table topic not the
+ // DB topic - Alan.
+ String topicName = getTopicPrefix(tableEvent.getHandler().getHiveConf()) + "." +
+ after.getDbName().toLowerCase();
+ send(messageFactory.buildAlterTableMessage(before, after), topicName);
+ }
+ }
+
+ /**
     * Send dropped table notifications. Subscribers can receive these notifications for
     * dropped tables by listening on topic "HCAT" with message selector string
     * {@value org.apache.hive.hcatalog.common.HCatConstants#HCAT_EVENT} =
@@ -262,6 +303,8 @@ public class NotificationListener extend

      if (tableEvent.getStatus()) {
        Table table = tableEvent.getTable();
+ // I think this is wrong, the drop table statement should come on the table topic not the
+ // DB topic - Alan.
        String topicName = getTopicPrefix(tableEvent.getHandler().getHiveConf()) + "." + table.getDbName().toLowerCase();
        send(messageFactory.buildDropTableMessage(table), topicName);
      }
@@ -435,14 +478,4 @@ public class NotificationListener extend
  // if(lpde.getStatus())
  // send(lpde.getPartitionName(),lpde.getTable().getParameters().get(HCatConstants.HCAT_MSGBUS_TOPIC_NAME),HCatConstants.HCAT_PARTITION_DONE_EVENT);
    }
-
- @Override
- public void onAlterPartition(AlterPartitionEvent ape) throws MetaException {
- // no-op
- }
-
- @Override
- public void onAlterTable(AlterTableEvent ate) throws MetaException {
- // no-op
- }
  }

Added: hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/AlterPartitionMessage.java
URL: http://svn.apache.org/viewvc/hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/AlterPartitionMessage.java?rev=1651923&view=auto
==============================================================================
--- hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/AlterPartitionMessage.java (added)
+++ hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/AlterPartitionMessage.java Thu Jan 15 01:12:26 2015
@@ -0,0 +1,43 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.hive.hcatalog.messaging;
+
+import java.util.List;
+
+/**
+ * HCat message sent when a table is Altered.
+ */
+public abstract class AlterPartitionMessage extends HCatEventMessage {
+
+ protected AlterPartitionMessage() {
+ super(EventType.ALTER_PARTITION);
+ }
+
+ public abstract String getTable();
+
+ public abstract List<String> getValues();
+
+ @Override
+ public HCatEventMessage checkValid() {
+ if (getTable() == null) throw new IllegalStateException("Table name unset.");
+ if (getValues() == null) throw new IllegalStateException("Partition values unset");
+ return super.checkValid();
+ }
+}
+

Added: hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/AlterTableMessage.java
URL: http://svn.apache.org/viewvc/hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/AlterTableMessage.java?rev=1651923&view=auto
==============================================================================
--- hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/AlterTableMessage.java (added)
+++ hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/AlterTableMessage.java Thu Jan 15 01:12:26 2015
@@ -0,0 +1,37 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.hive.hcatalog.messaging;
+
+/**
+ * HCat message sent when a table is Altered.
+ */
+public abstract class AlterTableMessage extends HCatEventMessage {
+
+ protected AlterTableMessage() {
+ super(EventType.ALTER_TABLE);
+ }
+
+ public abstract String getTable();
+
+ @Override
+ public HCatEventMessage checkValid() {
+ if (getTable() == null) throw new IllegalStateException("Table name unset.");
+ return super.checkValid();
+ }
+}

Modified: hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/HCatEventMessage.java
URL: http://svn.apache.org/viewvc/hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/HCatEventMessage.java?rev=1651923&r1=1651922&r2=1651923&view=diff
==============================================================================
--- hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/HCatEventMessage.java (original)
+++ hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/HCatEventMessage.java Thu Jan 15 01:12:26 2015
@@ -37,7 +37,9 @@ public abstract class HCatEventMessage {
      CREATE_TABLE(HCatConstants.HCAT_CREATE_TABLE_EVENT),
      DROP_TABLE(HCatConstants.HCAT_DROP_TABLE_EVENT),
      ADD_PARTITION(HCatConstants.HCAT_ADD_PARTITION_EVENT),
- DROP_PARTITION(HCatConstants.HCAT_DROP_PARTITION_EVENT);
+ DROP_PARTITION(HCatConstants.HCAT_DROP_PARTITION_EVENT),
+ ALTER_TABLE(HCatConstants.HCAT_ALTER_TABLE_EVENT),
+ ALTER_PARTITION(HCatConstants.HCAT_ALTER_PARTITION_EVENT);

      private String typeString;


Modified: hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/MessageDeserializer.java
URL: http://svn.apache.org/viewvc/hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/MessageDeserializer.java?rev=1651923&r1=1651922&r2=1651923&view=diff
==============================================================================
--- hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/MessageDeserializer.java (original)
+++ hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/MessageDeserializer.java Thu Jan 15 01:12:26 2015
@@ -36,10 +36,14 @@ public abstract class MessageDeserialize
        return getDropDatabaseMessage(messageBody);
      case CREATE_TABLE:
        return getCreateTableMessage(messageBody);
+ case ALTER_TABLE:
+ return getAlterTableMessage(messageBody);
      case DROP_TABLE:
        return getDropTableMessage(messageBody);
      case ADD_PARTITION:
        return getAddPartitionMessage(messageBody);
+ case ALTER_PARTITION:
+ return getAlterPartitionMessage(messageBody);
      case DROP_PARTITION:
        return getDropPartitionMessage(messageBody);

@@ -64,6 +68,13 @@ public abstract class MessageDeserialize
    public abstract CreateTableMessage getCreateTableMessage(String messageBody);

    /**
+ * Method to de-serialize AlterTableMessge
+ * @param messageBody string message
+ * @return object message
+ */
+ public abstract AlterTableMessage getAlterTableMessage(String messageBody);
+
+ /**
     * Method to de-serialize DropTableMessage instance.
     */
    public abstract DropTableMessage getDropTableMessage(String messageBody);
@@ -74,6 +85,13 @@ public abstract class MessageDeserialize
    public abstract AddPartitionMessage getAddPartitionMessage(String messageBody);

    /**
+ * Method to deserialize AlterPartitionMessage
+ * @param messageBody the message in serialized form
+ * @return message in object form
+ */
+ public abstract AlterPartitionMessage getAlterPartitionMessage(String messageBody);
+
+ /**
     * Method to de-serialize DropPartitionMessage instance.
     */
    public abstract DropPartitionMessage getDropPartitionMessage(String messageBody);

Modified: hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/MessageFactory.java
URL: http://svn.apache.org/viewvc/hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/MessageFactory.java?rev=1651923&r1=1651922&r2=1651923&view=diff
==============================================================================
--- hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/MessageFactory.java (original)
+++ hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/MessageFactory.java Thu Jan 15 01:12:26 2015
@@ -119,6 +119,17 @@ public abstract class MessageFactory {
    public abstract CreateTableMessage buildCreateTableMessage(Table table);

    /**
+ * Factory method for AlterTableMessage. Unlike most of these calls, this one can return null,
+ * which means no message should be sent. This is because there are many flavors of alter
+ * table (add column, add partition, etc.). Some are covered elsewhere (like add partition)
+ * and some are not yet supported.
+ * @param before The table before the alter
+ * @param after The table after the alter
+ * @return
+ */
+ public abstract AlterTableMessage buildAlterTableMessage(Table before, Table after);
+
+ /**
     * Factory method for DropTableMessage.
     * @param table The Table being dropped.
     * @return DropTableMessage instance.
@@ -144,6 +155,15 @@ public abstract class MessageFactory {
    public abstract AddPartitionMessage buildAddPartitionMessage(Table table, PartitionSpecProxy partitionSpec);

    /**
+ * Factory method for building AlterPartitionMessage
+ * @param before The partition before it was altered
+ * @param after The partition after it was altered
+ * @return a new AlterPartitionMessage
+ */
+ public abstract AlterPartitionMessage buildAlterPartitionMessage(Partition before,
+ Partition after);
+
+ /**
     * Factory method for DropPartitionMessage.
     * @param table The Table from which the partition is dropped.
     * @param partition The Partition being dropped.

Added: hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONAlterPartitionMessage.java
URL: http://svn.apache.org/viewvc/hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONAlterPartitionMessage.java?rev=1651923&view=auto
==============================================================================
--- hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONAlterPartitionMessage.java (added)
+++ hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONAlterPartitionMessage.java Thu Jan 15 01:12:26 2015
@@ -0,0 +1,100 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.hive.hcatalog.messaging.json;
+
+import org.apache.hadoop.hive.metastore.api.FieldSchema;
+import org.apache.hive.hcatalog.common.HCatConstants;
+import org.apache.hive.hcatalog.messaging.AlterPartitionMessage;
+import org.apache.hive.hcatalog.messaging.AlterTableMessage;
+import org.codehaus.jackson.annotate.JsonProperty;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * JSON alter table message
+ */
+public class JSONAlterPartitionMessage extends AlterPartitionMessage {
+
+ @JsonProperty
+ String server, servicePrincipal, db, table;
+
+ @JsonProperty
+ Long timestamp;
+
+ @JsonProperty
+ List<String> values;
+
+
+ public JSONAlterPartitionMessage(String server,
+ String servicePrincipal,
+ String db,
+ String table,
+ List<String> values,
+ Long timestamp) {
+ this.server = server;
+ this.servicePrincipal = servicePrincipal;
+ this.db = db;
+ this.table = table;
+ this.timestamp = timestamp;
+ this.values = values;
+ checkValid();
+ }
+
+
+ @Override
+ public String getServer() {
+ return server;
+ }
+
+ @Override
+ public String getServicePrincipal() {
+ return servicePrincipal;
+ }
+
+ @Override
+ public String getDB() {
+ return db;
+ }
+
+ @Override
+ public Long getTimestamp() {
+ return timestamp;
+ }
+
+ @Override
+ public String getTable() {
+ return table;
+ }
+
+ @Override
+ public List<String> getValues() {
+ return values;
+ }
+
+ @Override
+ public String toString() {
+ try {
+ return JSONMessageDeserializer.mapper.writeValueAsString(this);
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Could not serialize: ", e);
+ }
+ }
+}

Added: hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONAlterTableMessage.java
URL: http://svn.apache.org/viewvc/hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONAlterTableMessage.java?rev=1651923&view=auto
==============================================================================
--- hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONAlterTableMessage.java (added)
+++ hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONAlterTableMessage.java Thu Jan 15 01:12:26 2015
@@ -0,0 +1,87 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.hive.hcatalog.messaging.json;
+
+import org.apache.hadoop.hive.metastore.api.FieldSchema;
+import org.apache.hive.hcatalog.common.HCatConstants;
+import org.apache.hive.hcatalog.messaging.AlterTableMessage;
+import org.codehaus.jackson.annotate.JsonProperty;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * JSON alter table message
+ */
+public class JSONAlterTableMessage extends AlterTableMessage {
+
+ @JsonProperty
+ String server, servicePrincipal, db, table;
+
+ @JsonProperty
+ Long timestamp;
+
+ public JSONAlterTableMessage(String server,
+ String servicePrincipal,
+ String db,
+ String table,
+ Long timestamp) {
+ this.server = server;
+ this.servicePrincipal = servicePrincipal;
+ this.db = db;
+ this.table = table;
+ this.timestamp = timestamp;
+ checkValid();
+ }
+
+
+ @Override
+ public String getServer() {
+ return server;
+ }
+
+ @Override
+ public String getServicePrincipal() {
+ return servicePrincipal;
+ }
+
+ @Override
+ public String getDB() {
+ return db;
+ }
+
+ @Override
+ public Long getTimestamp() {
+ return timestamp;
+ }
+
+ @Override
+ public String getTable() {
+ return table;
+ }
+
+ @Override
+ public String toString() {
+ try {
+ return JSONMessageDeserializer.mapper.writeValueAsString(this);
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Could not serialize: ", e);
+ }
+ }
+}

Modified: hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONMessageDeserializer.java
URL: http://svn.apache.org/viewvc/hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONMessageDeserializer.java?rev=1651923&r1=1651922&r2=1651923&view=diff
==============================================================================
--- hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONMessageDeserializer.java (original)
+++ hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONMessageDeserializer.java Thu Jan 15 01:12:26 2015
@@ -19,7 +19,10 @@

  package org.apache.hive.hcatalog.messaging.json;

+import org.apache.hive.hcatalog.common.HCatConstants;
  import org.apache.hive.hcatalog.messaging.AddPartitionMessage;
+import org.apache.hive.hcatalog.messaging.AlterPartitionMessage;
+import org.apache.hive.hcatalog.messaging.AlterTableMessage;
  import org.apache.hive.hcatalog.messaging.CreateDatabaseMessage;
  import org.apache.hive.hcatalog.messaging.CreateTableMessage;
  import org.apache.hive.hcatalog.messaging.DropDatabaseMessage;
@@ -71,6 +74,17 @@ public class JSONMessageDeserializer ext
    }

    @Override
+ public AlterTableMessage getAlterTableMessage(String messageBody) {
+ try {
+ return mapper.readValue(messageBody, JSONAlterTableMessage.class);
+ }
+ catch (Exception exception) {
+ throw new IllegalArgumentException("Could not construct appropriate alter table type.",
+ exception);
+ }
+ }
+
+ @Override
    public DropTableMessage getDropTableMessage(String messageBody) {
      try {
        return mapper.readValue(messageBody, JSONDropTableMessage.class);
@@ -90,6 +104,15 @@ public class JSONMessageDeserializer ext
      }
    }

+ @Override
+ public AlterPartitionMessage getAlterPartitionMessage(String messageBody) {
+ try {
+ return mapper.readValue(messageBody, JSONAlterPartitionMessage.class);
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Could not construct AlterPartitionMessage.", e);
+ }
+ }
+
    @Override
    public DropPartitionMessage getDropPartitionMessage(String messageBody) {
      try {

Modified: hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONMessageFactory.java
URL: http://svn.apache.org/viewvc/hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONMessageFactory.java?rev=1651923&r1=1651922&r2=1651923&view=diff
==============================================================================
--- hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONMessageFactory.java (original)
+++ hive/trunk/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONMessageFactory.java Thu Jan 15 01:12:26 2015
@@ -24,13 +24,12 @@ import org.apache.commons.logging.LogFac
  import org.apache.hadoop.hive.common.classification.InterfaceAudience;
  import org.apache.hadoop.hive.common.classification.InterfaceStability;
  import org.apache.hadoop.hive.metastore.api.Database;
-import org.apache.hadoop.hive.metastore.api.FieldSchema;
  import org.apache.hadoop.hive.metastore.api.Partition;
  import org.apache.hadoop.hive.metastore.api.Table;
  import org.apache.hadoop.hive.metastore.partition.spec.PartitionSpecProxy;
  import org.apache.hive.hcatalog.messaging.AddPartitionMessage;
-// TODO, once HIVE-9175 is committed
-// import org.apache.hive.hcatalog.messaging.AlterTableMessage;
+import org.apache.hive.hcatalog.messaging.AlterPartitionMessage;
+import org.apache.hive.hcatalog.messaging.AlterTableMessage;
  import org.apache.hive.hcatalog.messaging.CreateDatabaseMessage;
  import org.apache.hive.hcatalog.messaging.CreateTableMessage;
  import org.apache.hive.hcatalog.messaging.DropDatabaseMessage;
@@ -85,14 +84,11 @@ public class JSONMessageFactory extends
          table.getTableName(), now());
    }

- // TODO Once HIVE-9175 is committed
- /*
    @Override
    public AlterTableMessage buildAlterTableMessage(Table before, Table after) {
      return new JSONAlterTableMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, before.getDbName(),
          before.getTableName(), now());
    }
- */

    @Override
    public DropTableMessage buildDropTableMessage(Table table) {
@@ -111,7 +107,13 @@ public class JSONMessageFactory extends
    @InterfaceStability.Evolving
    public AddPartitionMessage buildAddPartitionMessage(Table table, PartitionSpecProxy partitionSpec) {
      return new JSONAddPartitionMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, table.getDbName(),
- table.getTableName(), getPartitionKeyValues(table, partitionSpec), System.currentTimeMillis()/1000);
+ table.getTableName(), getPartitionKeyValues(table, partitionSpec), now());
+ }
+
+ @Override
+ public AlterPartitionMessage buildAlterPartitionMessage(Partition before, Partition after) {
+ return new JSONAlterPartitionMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL,
+ before.getDbName(), before.getTableName(), before.getValues(), now());
    }

    @Override

Modified: hive/trunk/hcatalog/server-extensions/src/test/java/org/apache/hive/hcatalog/listener/TestNotificationListener.java
URL: http://svn.apache.org/viewvc/hive/trunk/hcatalog/server-extensions/src/test/java/org/apache/hive/hcatalog/listener/TestNotificationListener.java?rev=1651923&r1=1651922&r2=1651923&view=diff
==============================================================================
--- hive/trunk/hcatalog/server-extensions/src/test/java/org/apache/hive/hcatalog/listener/TestNotificationListener.java (original)
+++ hive/trunk/hcatalog/server-extensions/src/test/java/org/apache/hive/hcatalog/listener/TestNotificationListener.java Thu Jan 15 01:12:26 2015
@@ -46,6 +46,8 @@ import org.apache.hive.hcatalog.common.H
  import org.apache.hive.hcatalog.mapreduce.HCatBaseTest;

  import org.apache.hive.hcatalog.messaging.AddPartitionMessage;
+import org.apache.hive.hcatalog.messaging.AlterPartitionMessage;
+import org.apache.hive.hcatalog.messaging.AlterTableMessage;
  import org.apache.hive.hcatalog.messaging.CreateDatabaseMessage;
  import org.apache.hive.hcatalog.messaging.CreateTableMessage;
  import org.apache.hive.hcatalog.messaging.DropDatabaseMessage;
@@ -104,7 +106,9 @@ public class TestNotificationListener ex
          HCatConstants.HCAT_CREATE_DATABASE_EVENT,
          HCatConstants.HCAT_CREATE_TABLE_EVENT,
          HCatConstants.HCAT_ADD_PARTITION_EVENT,
+ HCatConstants.HCAT_ALTER_PARTITION_EVENT,
          HCatConstants.HCAT_DROP_PARTITION_EVENT,
+ HCatConstants.HCAT_ALTER_TABLE_EVENT,
          HCatConstants.HCAT_DROP_TABLE_EVENT,
          HCatConstants.HCAT_DROP_DATABASE_EVENT);
      Assert.assertEquals(expectedMessages, actualMessages);
@@ -120,7 +124,9 @@ public class TestNotificationListener ex
      kvs.put("b", "2011");
      client.markPartitionForEvent("mydb", "mytbl", kvs,
          PartitionEventType.LOAD_DONE);
+ driver.run("alter table mytbl partition (b='2011') set fileformat orc");
      driver.run("alter table mytbl drop partition(b='2011')");
+ driver.run("alter table mytbl add columns (c int comment 'this is an int', d decimal(3,2))");
      driver.run("drop table mytbl");
      driver.run("drop database mydb");
    }
@@ -170,6 +176,20 @@ public class TestNotificationListener ex
          Assert.assertEquals("mytbl", ((AddPartitionMessage) message2).getTable());
          Assert.assertEquals(1, ((AddPartitionMessage) message2).getPartitions().size());
          Assert.assertEquals("2011", ((AddPartitionMessage) message2).getPartitions().get(0).get("b"));
+ } else if (event.equals(HCatConstants.HCAT_ALTER_PARTITION_EVENT)) {
+ Assert.assertEquals("topic://hcat.mydb.mytbl", msg.getJMSDestination().toString());
+ // for alter partition events
+ AlterPartitionMessage message = deserializer.getAlterPartitionMessage(messageBody);
+ Assert.assertEquals("mytbl", message.getTable());
+ Assert.assertEquals("mydb", message.getDB());
+ Assert.assertEquals(1, message.getValues().size());
+ Assert.assertEquals("2011", message.getValues().get(0));
+ HCatEventMessage message2 = MessagingUtils.getMessage(msg);
+ Assert.assertTrue("Unexpected message-type.", message2 instanceof AlterPartitionMessage);
+ Assert.assertEquals("mydb", message2.getDB());
+ Assert.assertEquals("mytbl", ((AlterPartitionMessage) message2).getTable());
+ Assert.assertEquals(1, ((AlterPartitionMessage) message2).getValues().size());
+ Assert.assertEquals("2011", ((AlterPartitionMessage) message2).getValues().get(0));
        } else if (event.equals(HCatConstants.HCAT_DROP_PARTITION_EVENT)) {

          Assert.assertEquals("topic://hcat.mydb.mytbl", msg.getJMSDestination()
@@ -184,7 +204,8 @@ public class TestNotificationListener ex
          Assert.assertEquals("mydb", message2.getDB());
          Assert.assertEquals("mytbl", ((DropPartitionMessage) message2).getTable());
          Assert.assertEquals(1, ((DropPartitionMessage) message2).getPartitions().size());
- Assert.assertEquals("2011", ((DropPartitionMessage) message2).getPartitions().get(0).get("b"));
+ Assert.assertEquals("2011", ((DropPartitionMessage) message2).getPartitions().get(0).get(
+ "b"));
        } else if (event.equals(HCatConstants.HCAT_DROP_TABLE_EVENT)) {

          Assert.assertEquals("topic://hcat.mydb", msg.getJMSDestination().toString());
@@ -199,11 +220,20 @@ public class TestNotificationListener ex

          Assert.assertEquals("topic://" + HCatConstants.HCAT_DEFAULT_TOPIC_PREFIX, msg
              .getJMSDestination().toString());
- DropDatabaseMessage message = deserializer.getDropDatabaseMessage(messageBody);
+ DropDatabaseMessage message = deserializer.getDropDatabaseMessage(messageBody);
          Assert.assertEquals("mydb", message.getDB());
          HCatEventMessage message2 = MessagingUtils.getMessage(msg);
          Assert.assertTrue("Unexpected message-type.", message2 instanceof DropDatabaseMessage);
          Assert.assertEquals("mydb", message2.getDB());
+ } else if (event.equals(HCatConstants.HCAT_ALTER_TABLE_EVENT)) {
+ Assert.assertEquals("topic://hcat.mydb", msg.getJMSDestination().toString());
+ AlterTableMessage message = deserializer.getAlterTableMessage(messageBody);
+ Assert.assertEquals("mytbl", message.getTable());
+ Assert.assertEquals("mydb", message.getDB());
+ HCatEventMessage message2 = MessagingUtils.getMessage(msg);
+ Assert.assertTrue("Unexpected message-type.", message2 instanceof AlterTableMessage);
+ Assert.assertEquals("mydb", message2.getDB());
+ Assert.assertEquals("mytbl", ((AlterTableMessage) message2).getTable());
        } else if (event.equals(HCatConstants.HCAT_PARTITION_DONE_EVENT)) {
          // TODO: Fill in when PARTITION_DONE_EVENT is supported.
          Assert.assertTrue("Unexpected: HCAT_PARTITION_DONE_EVENT not supported (yet).", false);

Modified: hive/trunk/itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/TestDbNotificationListener.java
URL: http://svn.apache.org/viewvc/hive/trunk/itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/TestDbNotificationListener.java?rev=1651923&r1=1651922&r2=1651923&view=diff
==============================================================================
--- hive/trunk/itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/TestDbNotificationListener.java (original)
+++ hive/trunk/itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/TestDbNotificationListener.java Thu Jan 15 01:12:26 2015
@@ -138,8 +138,6 @@ public class TestDbNotificationListener
          "\"servicePrincipal\":\"\",\"db\":\"default\",\"table\":\"mytable\",\"timestamp\":[0-9]+}"));
    }

- // TODO After HIVE-9175 is committed
- /*
    @Test
    public void alterTable() throws Exception {
      List<FieldSchema> cols = new ArrayList<FieldSchema>();
@@ -147,12 +145,12 @@ public class TestDbNotificationListener
      SerDeInfo serde = new SerDeInfo("serde", "seriallib", null);
      StorageDescriptor sd = new StorageDescriptor(cols, "file:/tmp", "input", "output", false, 0,
          serde, null, null, emptyParameters);
- Table table = new Table("alttable", "default", "me", startTime, startTime, 0, sd, null,
- emptyParameters, null, null, null);
+ Table table = new Table("alttable", "default", "me", startTime, startTime, 0, sd,
+ new ArrayList<FieldSchema>(), emptyParameters, null, null, null);
      msClient.createTable(table);

- table = new Table("alttable", "default", "me", startTime, startTime + 1, 0, sd, null,
- emptyParameters, null, null, null);
+ table = new Table("alttable", "default", "me", startTime, startTime + 1, 0, sd,
+ new ArrayList<FieldSchema>(), emptyParameters, null, null, null);
      msClient.alter_table("default", "alttable", table);

      NotificationEventResponse rsp = msClient.getNextNotification(firstEventId, 0, null);
@@ -168,7 +166,6 @@ public class TestDbNotificationListener
          "\"servicePrincipal\":\"\",\"db\":\"default\",\"table\":\"alttable\"," +
          "\"timestamp\":[0-9]+}"));
    }
- */

    @Test
    public void dropTable() throws Exception {
@@ -228,6 +225,41 @@ public class TestDbNotificationListener
    }

    @Test
+ public void alterPartition() throws Exception {
+ List<FieldSchema> cols = new ArrayList<FieldSchema>();
+ cols.add(new FieldSchema("col1", "int", "nocomment"));
+ List<FieldSchema> partCols = new ArrayList<FieldSchema>();
+ partCols.add(new FieldSchema("ds", "string", ""));
+ SerDeInfo serde = new SerDeInfo("serde", "seriallib", null);
+ StorageDescriptor sd = new StorageDescriptor(cols, "file:/tmp", "input", "output", false, 0,
+ serde, null, null, emptyParameters);
+ Table table = new Table("alterparttable", "default", "me", startTime, startTime, 0, sd,
+ partCols, emptyParameters, null, null, null);
+ msClient.createTable(table);
+
+ Partition partition = new Partition(Arrays.asList("today"), "default", "alterparttable",
+ startTime, startTime, sd, emptyParameters);
+ msClient.add_partition(partition);
+
+ Partition newPart = new Partition(Arrays.asList("today"), "default", "alterparttable",
+ startTime, startTime + 1, sd, emptyParameters);
+ msClient.alter_partition("default", "alterparttable", newPart);
+
+ NotificationEventResponse rsp = msClient.getNextNotification(firstEventId, 0, null);
+ assertEquals(3, rsp.getEventsSize());
+
+ NotificationEvent event = rsp.getEvents().get(2);
+ assertEquals(firstEventId + 3, event.getEventId());
+ assertTrue(event.getEventTime() >= startTime);
+ assertEquals(HCatConstants.HCAT_ALTER_PARTITION_EVENT, event.getEventType());
+ assertEquals("default", event.getDbName());
+ assertEquals("alterparttable", event.getTableName());
+ assertTrue(event.getMessage().matches( "\\{\"eventType\":\"ALTER_PARTITION\",\"server\":\"\"," +
+ "\"servicePrincipal\":\"\",\"db\":\"default\",\"table\":\"alterparttable\"," +
+ "\"timestamp\":[0-9]+,\"values\":\\[\"today\"]}"));
+ }
+
+ @Test
    public void dropPartition() throws Exception {
      List<FieldSchema> cols = new ArrayList<FieldSchema>();
      cols.add(new FieldSchema("col1", "int", "nocomment"));

Modified: hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java?rev=1651923&r1=1651922&r2=1651923&view=diff
==============================================================================
--- hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java (original)
+++ hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java Thu Jan 15 01:12:26 2015
@@ -3125,9 +3125,14 @@ public class HiveMetaStore extends Thrif

          oldPart = alterHandler.alterPartition(getMS(), wh, db_name, tbl_name, part_vals, new_part);

+ // Only fetch the table if we actually have a listener
+ Table table = null;
          for (MetaStoreEventListener listener : listeners) {
+ if (table == null) {
+ table = getMS().getTable(db_name, tbl_name);
+ }
            AlterPartitionEvent alterPartitionEvent =
- new AlterPartitionEvent(oldPart, new_part, true, this);
+ new AlterPartitionEvent(oldPart, new_part, table, true, this);
            alterPartitionEvent.setEnvironmentContext(envContext);
            listener.onAlterPartition(alterPartitionEvent);
          }
@@ -3178,6 +3183,8 @@ public class HiveMetaStore extends Thrif
          oldParts = alterHandler.alterPartitions(getMS(), wh, db_name, tbl_name, new_parts);

          Iterator<Partition> olditr = oldParts.iterator();
+ // Only fetch the table if we have a listener that needs it.
+ Table table = null;
          for (Partition tmpPart : new_parts) {
            Partition oldTmpPart = null;
            if (olditr.hasNext()) {
@@ -3187,8 +3194,11 @@ public class HiveMetaStore extends Thrif
              throw new InvalidOperationException("failed to alterpartitions");
            }
            for (MetaStoreEventListener listener : listeners) {
+ if (table == null) {
+ table = getMS().getTable(db_name, tbl_name);
+ }
              AlterPartitionEvent alterPartitionEvent =
- new AlterPartitionEvent(oldTmpPart, tmpPart, true, this);
+ new AlterPartitionEvent(oldTmpPart, tmpPart, table, true, this);
              listener.onAlterPartition(alterPartitionEvent);
            }
          }

Modified: hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/events/AlterPartitionEvent.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/events/AlterPartitionEvent.java?rev=1651923&r1=1651922&r2=1651923&view=diff
==============================================================================
--- hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/events/AlterPartitionEvent.java (original)
+++ hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/events/AlterPartitionEvent.java Thu Jan 15 01:12:26 2015
@@ -20,17 +20,20 @@ package org.apache.hadoop.hive.metastore

  import org.apache.hadoop.hive.metastore.HiveMetaStore.HMSHandler;
  import org.apache.hadoop.hive.metastore.api.Partition;
+import org.apache.hadoop.hive.metastore.api.Table;

  public class AlterPartitionEvent extends ListenerEvent {

    private final Partition oldPart;
    private final Partition newPart;
+ private final Table table;

- public AlterPartitionEvent(Partition oldPart, Partition newPart,
+ public AlterPartitionEvent(Partition oldPart, Partition newPart, Table table,
        boolean status, HMSHandler handler) {
      super(status, handler);
      this.oldPart = oldPart;
      this.newPart = newPart;
+ this.table = table;
    }

    /**
@@ -47,4 +50,12 @@ public class AlterPartitionEvent extends
    public Partition getNewPartition() {
      return newPart;
    }
+
+ /**
+ * Get the table this partition is in
+ * @return
+ */
+ public Table getTable() {
+ return table;
+ }
  }

Search Discussions

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupcommits @
categorieshive, hadoop
postedJan 15, '15 at 1:12a
activeJan 15, '15 at 1:12a
posts1
users1
websitehive.apache.org

1 user in discussion

Khorgath: 1 post

People

Translate

site design / logo © 2021 Grokbase