Skip to content

Commit d7bdeee

Browse files
committed
Fix to handle multivaluated keys in asset table. This needs to be fixed to be generic. I've added this just to continue with the PoC
1 parent a2f19a4 commit d7bdeee

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

clickhouse_mysql/writer/chwriter.py

+8-3
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,12 @@ def update(self, event_or_events):
253253
continue # for event
254254

255255
event_converted = self.convert(event)
256-
pk = event_converted.pymysqlreplication_event.primary_key
256+
pk = [event_converted.pymysqlreplication_event.primary_key]
257+
if event_converted.table == 'assets':
258+
pk.append('name')
259+
pk.append('title_id')
260+
pk.append('company_id')
261+
pk.append('asset_type_enumeration_entry_id')
257262
for row in event_converted.pymysqlreplication_event.rows:
258263
for key in row['after_values'].keys():
259264
# we need to convert Decimal value to str value for suitable for table structure
@@ -284,10 +289,10 @@ def update(self, event_or_events):
284289
sql = 'ALTER TABLE `{0}`.`{1}` UPDATE {2}, `tb_upd`={3} where {4}'.format(
285290
schema,
286291
table,
287-
', '.join(filter(None, map(lambda column, value: "" if column == pk or value is None else self.get_data_format(column, value), row['after_values'].keys(), row['after_values'].values()))),
292+
', '.join(filter(None, map(lambda column, value: "" if column in pk or value is None else self.get_data_format(column, value), row['after_values'].keys(), row['after_values'].values()))),
288293
"'%s'" % datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
289294
' and '.join(filter(None, map(
290-
lambda column, value: "" if column != pk or value is None else self.get_data_format(column, value),
295+
lambda column, value: "" if column not in pk or value is None else self.get_data_format(column, value),
291296
row['before_values'].keys(), row['before_values'].values())))
292297
)
293298

0 commit comments

Comments
 (0)