Skip to content

Commit a08bcc1

Browse files
author
Ben Osheroff
committed
Merge pull request zendesk#58 from zendesk/ben/add_ts
add a timestamp to the row event.
2 parents cf9e01e + 61dacb8 commit a08bcc1

File tree

3 files changed

+16
-0
lines changed

3 files changed

+16
-0
lines changed

src/main/java/com/zendesk/maxwell/MaxwellAbstractRowsEvent.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@
2020
import com.zendesk.maxwell.schema.Table;
2121
import com.zendesk.maxwell.schema.columndef.ColumnDef;
2222

23+
// the main wrapper for a raw (AbstractRowEvent) binlog event.
24+
// decorates the event with metadata info from Table,
25+
// filters rows using the passed in MaxwellFilter,
26+
// and ultimately outputs arrays of json objects representing each row.
27+
2328
public abstract class MaxwellAbstractRowsEvent extends AbstractRowEvent {
2429
private final MaxwellFilter filter;
2530
private final AbstractRowEvent event;
@@ -188,6 +193,10 @@ public void setDatabase(String name) {
188193
this.put("database", name);
189194
}
190195

196+
public void setTimestamp(Long l) {
197+
this.put("ts", l);
198+
}
199+
191200
public Object getData(String string) {
192201
return this.data.get(string);
193202
}
@@ -202,6 +211,7 @@ public List<RowMap> jsonMaps() {
202211
rowMap.setRowType(getType());
203212
rowMap.setTable(getTable().getName());
204213
rowMap.setDatabase(getDatabase().getName());
214+
rowMap.setTimestamp(getHeader().getTimestamp() / 1000);
205215

206216
Iterator<Column> colIter = r.getColumns().iterator();
207217
Iterator<ColumnDef> defIter = table.getColumnList().iterator();

src/main/java/com/zendesk/maxwell/MaxwellJSONObject.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public MaxwellJSONObject(RowMap map) {
1212
super(map);
1313
}
1414

15+
// this preserves the key's output order. vanity, I know, but nice.
1516
@Override
1617
public Set<String> keySet() {
1718
LinkedHashSet<String> set = new LinkedHashSet<>();
@@ -20,6 +21,7 @@ public Set<String> keySet() {
2021
set.add("table");
2122
set.add("type");
2223
set.add("data");
24+
set.add("ts");
2325

2426
return set;
2527
}

src/test/java/com/zendesk/maxwell/MaxwellIntegrationTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,10 @@ private void runJSONTest(List<String> sql, List<JSONObject> assertJSON) throws E
169169

170170
for ( MaxwellAbstractRowsEvent e : events ) {
171171
for ( JSONObject a : e.toJSONObjects() ) {
172+
// undo maxwell's fancy ordering stuff -- it's preventing us from removing the ts column.
173+
a = new JSONObject(a.toString());
174+
a.remove("ts");
175+
172176
eventJSON.add(a);
173177

174178
for ( JSONObject b : assertJSON ) {

0 commit comments

Comments
 (0)