commit 1df0501939c97cc2ebaa5e0a11dade17ea4c6bb5 Author: Janaki Lahorani Date: Tue Jun 27 15:27:19 2017 -0700 Fix for HIVE-16759 Notification Events (MNNotificationLog, NotificationEvent, HCatNotificationEvent) will record the table type along with table name for Events: Create Table, Drop Table, Alter Table, Add Partition, Drop Partition, Alter Partition, and Insert. diff --git hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/DbNotificationListener.java hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/DbNotificationListener.java index 6d7ee4cb824ba40537876bd0629831a19ac91d76..fe17d7769a873ea6395f7eb06f43e38b4361be4f 100644 --- hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/DbNotificationListener.java +++ hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/DbNotificationListener.java @@ -138,6 +138,7 @@ public void onCreateTable(CreateTableEvent tableEvent) throws MetaException { .buildCreateTableMessage(t, new FileIterator(t.getSd().getLocation())).toString()); event.setDbName(t.getDbName()); event.setTableName(t.getTableName()); + event.setTableType(t.getTableType()); process(event, tableEvent); } @@ -153,6 +154,7 @@ public void onDropTable(DropTableEvent tableEvent) throws MetaException { .buildDropTableMessage(t).toString()); event.setDbName(t.getDbName()); event.setTableName(t.getTableName()); + event.setTableType(t.getTableType()); process(event, tableEvent); } @@ -169,6 +171,7 @@ public void onAlterTable(AlterTableEvent tableEvent) throws MetaException { .buildAlterTableMessage(before, after, tableEvent.getIsTruncateOp()).toString()); event.setDbName(after.getDbName()); event.setTableName(after.getTableName()); + event.setTableType(after.getTableType()); process(event, tableEvent); } @@ -277,6 +280,7 @@ public void onAddPartition(AddPartitionEvent partitionEvent) throws MetaExceptio new NotificationEvent(0, now(), EventType.ADD_PARTITION.toString(), msg); event.setDbName(t.getDbName()); event.setTableName(t.getTableName()); + event.setTableType(t.getTableType()); process(event, partitionEvent); } @@ -292,6 +296,7 @@ public void onDropPartition(DropPartitionEvent partitionEvent) throws MetaExcept .buildDropPartitionMessage(t, partitionEvent.getPartitionIterator()).toString()); event.setDbName(t.getDbName()); event.setTableName(t.getTableName()); + event.setTableType(t.getTableType()); process(event, partitionEvent); } @@ -308,6 +313,7 @@ public void onAlterPartition(AlterPartitionEvent partitionEvent) throws MetaExce .buildAlterPartitionMessage(partitionEvent.getTable(), before, after, partitionEvent.getIsTruncateOp()).toString()); event.setDbName(before.getDbName()); event.setTableName(before.getTableName()); + event.setTableType(partitionEvent.getTable().getTableType()); process(event, partitionEvent); } @@ -445,6 +451,7 @@ public void onInsert(InsertEvent insertEvent) throws MetaException { .toString()); event.setDbName(tableObj.getDbName()); event.setTableName(tableObj.getTableName()); + event.setTableType(tableObj.getTableType()); process(event, insertEvent); } diff --git hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/HCatNotificationEvent.java hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/HCatNotificationEvent.java index 0cc61176c600756e5e80e7dae3421575aa8c04c2..b74913d5d5c58f408965b5231f97fcff07b869b3 100644 --- hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/HCatNotificationEvent.java +++ hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/HCatNotificationEvent.java @@ -30,6 +30,7 @@ private String eventType; private String dbName; private String tableName; + private String tableType; private String message; public enum Scope { DB, TABLE, UNKNOWN }; @@ -40,6 +41,7 @@ public HCatNotificationEvent(NotificationEvent event) { eventType = event.getEventType(); dbName = event.getDbName(); tableName = event.getTableName(); + tableType = event.getTableType(); message = event.getMessage(); } @@ -77,6 +79,8 @@ public String getTableName() { return tableName; } + public String getTableType() { return tableType; } + public String getMessage() { return message; } @@ -94,6 +98,8 @@ public String toString() { buf.append(dbName); buf.append("> tableName:<"); buf.append(tableName); + buf.append("> tableType:<"); + buf.append(tableType); buf.append("> message:<"); buf.append(message); buf.append(">"); diff --git hcatalog/webhcat/java-client/src/test/java/org/apache/hive/hcatalog/api/repl/TestReplicationTask.java hcatalog/webhcat/java-client/src/test/java/org/apache/hive/hcatalog/api/repl/TestReplicationTask.java index 9d62eaad01c05feaf0693df663f867609a97387c..7bb37c3d95bfb163b94def6679fa88c42c3b4214 100644 --- hcatalog/webhcat/java-client/src/test/java/org/apache/hive/hcatalog/api/repl/TestReplicationTask.java +++ hcatalog/webhcat/java-client/src/test/java/org/apache/hive/hcatalog/api/repl/TestReplicationTask.java @@ -76,6 +76,7 @@ public static void testCreate() throws HCatException { HCatConstants.HCAT_CREATE_TABLE_EVENT, msgFactory.buildCreateTableMessage(t).toString()); event.setDbName(t.getDbName()); event.setTableName(t.getTableName()); + event.setTableType(t.getTableType()); ReplicationTask.resetFactory(null); ReplicationTask rtask = ReplicationTask.create(HCatClient.create(new HiveConf()),new HCatNotificationEvent(event)); diff --git hcatalog/webhcat/java-client/src/test/java/org/apache/hive/hcatalog/api/repl/exim/TestEximReplicationTasks.java hcatalog/webhcat/java-client/src/test/java/org/apache/hive/hcatalog/api/repl/exim/TestEximReplicationTasks.java index 9682702876f855ee80c7cb8951d94ea7f9577b21..61f804d1a454da41ba042304a916bae8f289b026 100644 --- hcatalog/webhcat/java-client/src/test/java/org/apache/hive/hcatalog/api/repl/exim/TestEximReplicationTasks.java +++ hcatalog/webhcat/java-client/src/test/java/org/apache/hive/hcatalog/api/repl/exim/TestEximReplicationTasks.java @@ -176,6 +176,7 @@ public void testCreateTable() throws IOException { HCatConstants.HCAT_CREATE_TABLE_EVENT, msgFactory.buildCreateTableMessage(t).toString()); event.setDbName(t.getDbName()); event.setTableName(t.getTableName()); + event.setTableType(t.getTableType()); HCatNotificationEvent hev = new HCatNotificationEvent(event); ReplicationTask rtask = ReplicationTask.create(client,hev); @@ -225,6 +226,7 @@ public void testDropTable() throws IOException { HCatConstants.HCAT_DROP_TABLE_EVENT, msgFactory.buildDropTableMessage(t).toString()); event.setDbName(t.getDbName()); event.setTableName(t.getTableName()); + event.setTableType(t.getTableType()); HCatNotificationEvent hev = new HCatNotificationEvent(event); ReplicationTask rtask = ReplicationTask.create(client,hev); @@ -269,6 +271,7 @@ public void testAlterTable() throws IOException { HCatConstants.HCAT_ALTER_TABLE_EVENT, msgFactory.buildAlterTableMessage(t, t).toString()); event.setDbName(t.getDbName()); event.setTableName(t.getTableName()); + event.setTableType(t.getTableType()); HCatNotificationEvent hev = new HCatNotificationEvent(event); ReplicationTask rtask = ReplicationTask.create(client,hev); @@ -326,6 +329,7 @@ public void testAddPartition() throws IOException { HCatConstants.HCAT_ADD_PARTITION_EVENT, msgFactory.buildAddPartitionMessage(t, addedPtns.iterator()).toString()); event.setDbName(t.getDbName()); event.setTableName(t.getTableName()); + event.setTableType(t.getTableType()); HCatNotificationEvent hev = new HCatNotificationEvent(event); ReplicationTask rtask = ReplicationTask.create(client,hev); @@ -405,6 +409,7 @@ public void testDropPartition() throws HCatException { t, Collections.singletonList(p).iterator()).toString()); event.setDbName(t.getDbName()); event.setTableName(t.getTableName()); + event.setTableType(t.getTableType()); HCatNotificationEvent hev = new HCatNotificationEvent(event); ReplicationTask rtask = ReplicationTask.create(client,hev); @@ -457,6 +462,7 @@ public void testAlterPartition() throws HCatException { HCatConstants.HCAT_ALTER_PARTITION_EVENT, msgFactory.buildAlterPartitionMessage(t,p,p).toString()); event.setDbName(t.getDbName()); event.setTableName(t.getTableName()); + event.setTableType(t.getTableType()); HCatNotificationEvent hev = new HCatNotificationEvent(event); ReplicationTask rtask = ReplicationTask.create(client,hev); @@ -513,6 +519,7 @@ public void testInsert() throws HCatException { ).toString()); event.setDbName(t.getDbName()); event.setTableName(t.getTableName()); + event.setTableType(t.getTableType()); HCatNotificationEvent hev = new HCatNotificationEvent(event); ReplicationTask rtask = ReplicationTask.create(client,hev); diff --git itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/TestDbNotificationListener.java itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/TestDbNotificationListener.java index 808c9c7c36fd0ba36adac7be942c4841ab0a08a8..d26fb052847fd584fbcd36bd6438256f76ae6be4 100644 --- itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/TestDbNotificationListener.java +++ itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/TestDbNotificationListener.java @@ -395,6 +395,7 @@ public void createTable() throws Exception { assertEquals(EventType.CREATE_TABLE.toString(), event.getEventType()); assertEquals(defaultDbName, event.getDbName()); assertEquals(tblName, event.getTableName()); + assertEquals(table.getTableType(), event.getTableType()); // Parse the message field CreateTableMessage createTblMsg = md.getCreateTableMessage(event.getMessage()); @@ -457,6 +458,7 @@ public void alterTable() throws Exception { assertEquals(EventType.ALTER_TABLE.toString(), event.getEventType()); assertEquals(defaultDbName, event.getDbName()); assertEquals(tblName, event.getTableName()); + assertEquals(table.getTableType(), event.getTableType()); AlterTableMessage alterTableMessage = md.getAlterTableMessage(event.getMessage()); assertEquals(table, alterTableMessage.getTableObjAfter()); @@ -509,6 +511,7 @@ public void dropTable() throws Exception { assertEquals(EventType.DROP_TABLE.toString(), event.getEventType()); assertEquals(defaultDbName, event.getDbName()); assertEquals(tblName, event.getTableName()); + assertEquals(table.getTableType(), event.getTableType()); // Parse the message field DropTableMessage dropTblMsg = md.getDropTableMessage(event.getMessage()); @@ -575,6 +578,7 @@ public void addPartition() throws Exception { assertEquals(EventType.ADD_PARTITION.toString(), event.getEventType()); assertEquals(defaultDbName, event.getDbName()); assertEquals(tblName, event.getTableName()); + assertEquals(table.getTableType(), event.getTableType()); // Parse the message field AddPartitionMessage addPtnMsg = md.getAddPartitionMessage(event.getMessage()); @@ -647,6 +651,7 @@ public void alterPartition() throws Exception { assertEquals(EventType.ALTER_PARTITION.toString(), event.getEventType()); assertEquals(defaultDbName, event.getDbName()); assertEquals(tblName, event.getTableName()); + assertEquals(table.getTableType(), event.getTableType()); // Parse the message field AlterPartitionMessage alterPtnMsg = md.getAlterPartitionMessage(event.getMessage()); @@ -711,6 +716,7 @@ public void dropPartition() throws Exception { assertEquals(EventType.DROP_PARTITION.toString(), event.getEventType()); assertEquals(defaultDbName, event.getDbName()); assertEquals(tblName, event.getTableName()); + assertEquals(table.getTableType(), event.getTableType()); // Parse the message field DropPartitionMessage dropPtnMsg = md.getDropPartitionMessage(event.getMessage()); @@ -1201,6 +1207,8 @@ public void insertTable() throws Exception { assertEquals(EventType.INSERT.toString(), event.getEventType()); assertEquals(defaultDbName, event.getDbName()); assertEquals(tblName, event.getTableName()); + assertEquals(table.getTableType(), event.getTableType()); + // Parse the message field verifyInsert(event, defaultDbName, tblName); @@ -1262,6 +1270,8 @@ public void insertPartition() throws Exception { assertEquals(EventType.INSERT.toString(), event.getEventType()); assertEquals(defaultDbName, event.getDbName()); assertEquals(tblName, event.getTableName()); + assertEquals(table.getTableType(), event.getTableType()); + // Parse the message field verifyInsert(event, defaultDbName, tblName); InsertMessage insertMessage = md.getInsertMessage(event.getMessage()); diff --git metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/NotificationEvent.java metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/NotificationEvent.java index 8e0fb40bcc2d50dbea94f7007b3340fc453cf862..19462d673e364a9d214797c9e6218ca7beff9b50 100644 --- metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/NotificationEvent.java +++ metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/NotificationEvent.java @@ -45,6 +45,7 @@ private static final org.apache.thrift.protocol.TField TABLE_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("tableName", org.apache.thrift.protocol.TType.STRING, (short)5); private static final org.apache.thrift.protocol.TField MESSAGE_FIELD_DESC = new org.apache.thrift.protocol.TField("message", org.apache.thrift.protocol.TType.STRING, (short)6); private static final org.apache.thrift.protocol.TField MESSAGE_FORMAT_FIELD_DESC = new org.apache.thrift.protocol.TField("messageFormat", org.apache.thrift.protocol.TType.STRING, (short)7); + private static final org.apache.thrift.protocol.TField TABLE_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("tableType", org.apache.thrift.protocol.TType.STRING, (short)8); private static final Map, SchemeFactory> schemes = new HashMap, SchemeFactory>(); static { @@ -57,6 +58,7 @@ private String eventType; // required private String dbName; // optional private String tableName; // optional + private String tableType; //optional private String message; // required private String messageFormat; // optional @@ -68,7 +70,8 @@ DB_NAME((short)4, "dbName"), TABLE_NAME((short)5, "tableName"), MESSAGE((short)6, "message"), - MESSAGE_FORMAT((short)7, "messageFormat"); + MESSAGE_FORMAT((short)7, "messageFormat"), + TABLE_TYPE((short)8, "tableType"); private static final Map byName = new HashMap(); @@ -97,6 +100,8 @@ public static _Fields findByThriftId(int fieldId) { return MESSAGE; case 7: // MESSAGE_FORMAT return MESSAGE_FORMAT; + case 8: // TABLE_TYPE + return TABLE_TYPE; default: return null; } @@ -154,7 +159,9 @@ public String getFieldName() { new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))); tmpMap.put(_Fields.TABLE_NAME, new org.apache.thrift.meta_data.FieldMetaData("tableName", org.apache.thrift.TFieldRequirementType.OPTIONAL, new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))); - tmpMap.put(_Fields.MESSAGE, new org.apache.thrift.meta_data.FieldMetaData("message", org.apache.thrift.TFieldRequirementType.REQUIRED, + tmpMap.put(_Fields.TABLE_TYPE, new org.apache.thrift.meta_data.FieldMetaData("tableType", org.apache.thrift.TFieldRequirementType.OPTIONAL, + new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))); + tmpMap.put(_Fields.MESSAGE, new org.apache.thrift.meta_data.FieldMetaData("message", org.apache.thrift.TFieldRequirementType.REQUIRED, new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))); tmpMap.put(_Fields.MESSAGE_FORMAT, new org.apache.thrift.meta_data.FieldMetaData("messageFormat", org.apache.thrift.TFieldRequirementType.OPTIONAL, new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))); @@ -196,6 +203,9 @@ public NotificationEvent(NotificationEvent other) { if (other.isSetTableName()) { this.tableName = other.tableName; } + if (other.isSetTableType()) { + this.tableType = other.tableType; + } if (other.isSetMessage()) { this.message = other.message; } @@ -217,6 +227,7 @@ public void clear() { this.eventType = null; this.dbName = null; this.tableName = null; + this.tableType = null; this.message = null; this.messageFormat = null; } @@ -334,6 +345,29 @@ public void setTableNameIsSet(boolean value) { } } + public String getTableType() { + return this.tableType; + } + + public void setTableType(String inpTableType) { + this.tableType = inpTableType; + } + + public void unsetTableType() { + this.tableType = null; + } + + /** Returns true if field tableType is set (has been assigned a value) and false otherwise */ + public boolean isSetTableType() { + return this.tableType != null; + } + + public void setTableTypeIsSet(boolean value) { + if (!value) { + this.tableType = null; + } + } + public String getMessage() { return this.message; } @@ -422,6 +456,14 @@ public void setFieldValue(_Fields field, Object value) { } break; + case TABLE_TYPE: + if (value == null) { + unsetTableType(); + } else { + setTableType((String)value); + } + break; + case MESSAGE: if (value == null) { unsetMessage(); @@ -458,6 +500,9 @@ public Object getFieldValue(_Fields field) { case TABLE_NAME: return getTableName(); + case TABLE_TYPE: + return getTableType(); + case MESSAGE: return getMessage(); @@ -485,6 +530,8 @@ public boolean isSet(_Fields field) { return isSetDbName(); case TABLE_NAME: return isSetTableName(); + case TABLE_TYPE: + return isSetTableType(); case MESSAGE: return isSetMessage(); case MESSAGE_FORMAT: @@ -551,6 +598,15 @@ public boolean equals(NotificationEvent that) { return false; } + boolean this_present_tableType = true && this.isSetTableType(); + boolean that_present_tableType = true && that.isSetTableType(); + if (this_present_tableType || that_present_tableType) { + if (!(this_present_tableType && that_present_tableType)) + return false; + if (!this.tableType.equals(that.tableType)) + return false; + } + boolean this_present_message = true && this.isSetMessage(); boolean that_present_message = true && that.isSetMessage(); if (this_present_message || that_present_message) { @@ -601,6 +657,11 @@ public int hashCode() { if (present_tableName) list.add(tableName); + boolean present_tableType = true && (isSetTableType()); + list.add(present_tableType); + if (present_tableType) + list.add(tableType); + boolean present_message = true && (isSetMessage()); list.add(present_message); if (present_message) @@ -672,6 +733,16 @@ public int compareTo(NotificationEvent other) { return lastComparison; } } + lastComparison = Boolean.valueOf(isSetTableType()).compareTo(other.isSetTableType()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetTableType()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.tableType, other.tableType); + if (lastComparison != 0) { + return lastComparison; + } + } lastComparison = Boolean.valueOf(isSetMessage()).compareTo(other.isSetMessage()); if (lastComparison != 0) { return lastComparison; @@ -747,6 +818,16 @@ public String toString() { } first = false; } + if (isSetTableType()) { + if (!first) sb.append(", "); + sb.append("tableType:"); + if (this.tableType == null) { + sb.append("null"); + } else { + sb.append(this.tableType); + } + first = false; + } if (!first) sb.append(", "); sb.append("message:"); if (this.message == null) { @@ -882,6 +963,14 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, NotificationEvent s org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); } break; + case 8: // TABLE_TYPE + if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { + struct.tableType = iprot.readString(); + struct.setTableTypeIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; default: org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); } @@ -920,6 +1009,13 @@ public void write(org.apache.thrift.protocol.TProtocol oprot, NotificationEvent oprot.writeFieldEnd(); } } + if (struct.tableType != null) { + if (struct.isSetTableType()) { + oprot.writeFieldBegin(TABLE_TYPE_FIELD_DESC); + oprot.writeString(struct.tableType); + oprot.writeFieldEnd(); + } + } if (struct.message != null) { oprot.writeFieldBegin(MESSAGE_FIELD_DESC); oprot.writeString(struct.message); @@ -963,6 +1059,9 @@ public void write(org.apache.thrift.protocol.TProtocol prot, NotificationEvent s if (struct.isSetMessageFormat()) { optionals.set(2); } + if (struct.isSetTableType()) { + optionals.set(3); + } oprot.writeBitSet(optionals, 3); if (struct.isSetDbName()) { oprot.writeString(struct.dbName); @@ -973,6 +1072,9 @@ public void write(org.apache.thrift.protocol.TProtocol prot, NotificationEvent s if (struct.isSetMessageFormat()) { oprot.writeString(struct.messageFormat); } + if (struct.isSetTableType()) { + oprot.writeString(struct.tableType); + } } @Override @@ -999,6 +1101,10 @@ public void read(org.apache.thrift.protocol.TProtocol prot, NotificationEvent st struct.messageFormat = iprot.readString(); struct.setMessageFormatIsSet(true); } + if (incoming.get(3)) { + struct.tableType = iprot.readString(); + struct.setTableTypeIsSet(true); + } } } diff --git metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java index e13612ee97dafa81c6086a6d2d537995859d9cb7..077dab9d98ed12bda0a49529b1d4ef353dff7842 100644 --- metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java +++ metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java @@ -8286,6 +8286,7 @@ private MNotificationLog translateThriftToDb(NotificationEvent entry) { dbEntry.setEventType(entry.getEventType()); dbEntry.setDbName(entry.getDbName()); dbEntry.setTableName(entry.getTableName()); + dbEntry.setTableType(entry.getTableType()); dbEntry.setMessage(entry.getMessage()); dbEntry.setMessageFormat(entry.getMessageFormat()); return dbEntry; @@ -8298,6 +8299,7 @@ private NotificationEvent translateDbToThrift(MNotificationLog dbEvent) { event.setEventType(dbEvent.getEventType()); event.setDbName(dbEvent.getDbName()); event.setTableName(dbEvent.getTableName()); + event.setTableType(dbEvent.getTableType()); event.setMessage((dbEvent.getMessage())); event.setMessageFormat(dbEvent.getMessageFormat()); return event; diff --git metastore/src/model/org/apache/hadoop/hive/metastore/model/MNotificationLog.java metastore/src/model/org/apache/hadoop/hive/metastore/model/MNotificationLog.java index d3a166ff543babd8fe5670c082d9ba3c377fa2aa..8af00be9ce9648dcc8cbd239a674d9196233b82f 100644 --- metastore/src/model/org/apache/hadoop/hive/metastore/model/MNotificationLog.java +++ metastore/src/model/org/apache/hadoop/hive/metastore/model/MNotificationLog.java @@ -24,6 +24,7 @@ private String eventType; private String dbName; private String tableName; + private String tableType; private String message; private String messageFormat; @@ -31,11 +32,12 @@ public MNotificationLog() { } public MNotificationLog(int eventId, String eventType, String dbName, String tableName, - String message) { + String inpTableType, String message) { this.eventId = eventId; this.eventType = eventType; this.dbName = dbName; this.tableName = tableName; + this.tableType = inpTableType; this.message = message; } @@ -80,6 +82,14 @@ public void setTableName(String tableName) { this.tableName = tableName; } + public String getTableType() { + return tableType; + } + + public void setTableType(String inpTableType) { + this.tableType = tableType; + } + public String getMessage() { return message; }