PG index options handle CONCURRENT option separately #297
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.
What did this pull request do?
PR adds a check for usage of
.Options
field when creating indexes in PG.Based on the feedback for the previous PR - PG Migrator allows the use of
.Options
to specify extra index creation options such as concurrently.Previous PR broke that feature.
This is a fix.
User Case Description
When using Postgres driver with Gorm, users can opt to provide extra directives when creating an index.
One such PG-specific directive is to create an index ["concurrently"] (https://www.postgresql.org/docs/current/sql-createindex.html#SQL-CREATEINDEX-CONCURRENTLY). Another PG driver-specific option is to specify whether for a unique index, null values should be considered distinct or not (https://www.postgresql.org/docs/current/sql-createindex.html)
Users require a mechanism to provide these extra options for index creation. For this purpose, 'gorm options' are used: https://gorm.io/docs/indexes.html
Previous PR introduced a bug where if PG user would specify
gorm:"index:,option:CONCURRENTLY"
option, it would result in ill-formed index because the term 'CONCURRENTLY' will be used twice.With this PR, users can use "CONCURRENTLY" created index option OR
NULLS NOT DISTINCT
option, but not both.