Allow constraint name re-use in diff file after dropping (Oracle) #171
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This appears to be an issue only if you are using DBIx::Class::Schema and calling
create_ddl_dir
with a previous version specified. With that being said...If you have an Oracle schema with tables/constraints identified as version 0.1:
and in version 0.2 you change the app_alert_category_fk constraint to cascade deletes
but all other things remain the same, I would expect the diff file that gets generated by
$schema->create_ddl_dir()
to look like this:This is the way it works when you are NOT using DBIx::Class::Schema.
When using DBIx::Class::Schema, the producer has already produced the SQL from the perl and has all of the constraint names in the
%global_names
hash of the Oracle producer so when it's handling the diff things get a bit messy. Instead of the expected diff above, you end up withThis is an issue because the version 0.2 schema has
so if you went directly to version 0.2 your constraint is named
app_alert_category_fk
and if you upgraded from version 0.1 to 0.2 then your constraint is namedapp_alert_category_fk01
.My proposed change involves decrementing the value in
%global_names
when a constraint is dropped so that the name can be reused.