Skip to content

Commit 72f7bef

Browse files
authored
Limit trigger names to 64 characters. (#33)
* Rename "bootstrap" to "migrate" mode Fixes #18 * Limit trigger names to 64 characters. Fixes #32
1 parent 70f23ce commit 72f7bef

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

partitionmanager/cli_test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -559,13 +559,13 @@ def test_migrate_cmd_in(self):
559559
+ "`p_20210521` VALUES LESS THAN (300), PARTITION "
560560
+ "`p_20210620` VALUES LESS THAN MAXVALUE);",
561561
"CREATE OR REPLACE TRIGGER copy_inserts_from_"
562-
+ "partitioned_yesterday_to_partitioned_yesterday_new_20210421",
562+
+ "partitioned_yesterday_to_partitioned_yesterday",
563563
"\tAFTER INSERT ON partitioned_yesterday FOR EACH ROW",
564564
"\t\tINSERT INTO partitioned_yesterday_new_20210421 SET",
565565
"\t\t\t`id` = NEW.`id`,",
566566
"\t\t\t`serial` = NEW.`serial`;",
567567
"CREATE OR REPLACE TRIGGER copy_updates_from_"
568-
+ "partitioned_yesterday_to_partitioned_yesterday_new_20210421",
568+
+ "partitioned_yesterday_to_partitioned_yesterday",
569569
"\tAFTER UPDATE ON partitioned_yesterday FOR EACH ROW",
570570
"\t\tUPDATE partitioned_yesterday_new_20210421 SET",
571571
"\t\t\t`serial` = NEW.`serial`",

partitionmanager/migrate.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,11 @@ def _trigger_column_copies(cols):
137137
yield f"`{c}` = NEW.`{c}`"
138138

139139

140+
def _make_trigger_name(name):
141+
""" Helper that enforces the trigger must be <= 64 chars """
142+
return name[:64]
143+
144+
140145
def _generate_sql_copy_commands(
141146
existing_table, map_data, columns, new_table, alter_commands_iter
142147
):
@@ -175,7 +180,11 @@ def _generate_sql_copy_commands(
175180

176181
cols = set(columns)
177182

178-
yield f"CREATE OR REPLACE TRIGGER copy_inserts_from_{existing_table.name}_to_{new_table.name}"
183+
inserts_trigger_name = _make_trigger_name(
184+
f"copy_inserts_from_{existing_table.name}_to_{new_table.name}"
185+
)
186+
187+
yield f"CREATE OR REPLACE TRIGGER {inserts_trigger_name}"
179188
yield f"\tAFTER INSERT ON {existing_table.name} FOR EACH ROW"
180189
yield f"\t\tINSERT INTO {new_table.name} SET"
181190

@@ -192,7 +201,11 @@ def _generate_sql_copy_commands(
192201
log.info("No columns to copy, so no UPDATE trigger being constructed.")
193202
return
194203

195-
yield f"CREATE OR REPLACE TRIGGER copy_updates_from_{existing_table.name}_to_{new_table.name}"
204+
updates_trigger_name = _make_trigger_name(
205+
f"copy_updates_from_{existing_table.name}_to_{new_table.name}"
206+
)
207+
208+
yield f"CREATE OR REPLACE TRIGGER {updates_trigger_name}"
196209
yield f"\tAFTER UPDATE ON {existing_table.name} FOR EACH ROW"
197210
yield f"\t\tUPDATE {new_table.name} SET"
198211

0 commit comments

Comments
 (0)