class TableStats {

	@Nonnull
	public TableStats merge(TableStats other) {
		Map<String, ColumnStats> colStats = new HashMap<>();
		for (Map.Entry<String, ColumnStats> entry : this.colStats.entrySet()) {
			String col = entry.getKey();
			ColumnStats stats = entry.getValue();
			ColumnStats otherStats = other.colStats.get(col);
			if (otherStats != null) {
				colStats.put(col, stats.merge(otherStats));
			}
		}
		return new TableStats(
				this.rowCount >= 0 && other.rowCount >= 0 ?
						this.rowCount + other.rowCount : UNKNOWN.rowCount,
				colStats);
	}

	public  TableStats(long rowCount);
	public  TableStats(long rowCount, Map<String, ColumnStats> colStats);

}