fix: EXPOSED-467 Decimal type precision and scale not checked by SchemaUtils #2192
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.
Description
Summary of the change:
Defining the same column of type
decimal()
,binary()
,varchar()
, orchar()
but with a different size (precision) or scale (fordecimal
only) now correctly triggers an ALTER statement whenSchemaUtils.createMissingTablesAndColumns
is used.Detailed description:
Why:
Currently, if the existing database table has a column of type DECIMAL(?,?), VARCHAR(?), VARBINARY(?), or CHAR(?) and the Exposed table object defines the same column type but with a different size, the
SchemaUtils
functions will not generate any ALTER statements to fix the inconsistency.What:
SchemaUtils.createMissingTablesAndColumns
now compares existing- and defined- column size (and scale, if applicable to type) when inspecting theColumnDiff
.How:
DECIMAL_DIGITS
label for scale (only non-null for decimal types).COLUMN_SIZE
is now used as part of theColumnDiff
comparisonType of Change
Please mark the relevant options with an "X":
Updates/remove existing public API methods:
Affected databases:
Checklist
Related Issues
EXPOSED-467