Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[5.0 RC2] Handle square brackets around explicitly specified SQL Server type names #22610

Merged
merged 1 commit into from
Sep 22, 2020

Conversation

ajcvickers
Copy link
Contributor

@ajcvickers ajcvickers commented Sep 18, 2020

Fixes #22569

Description

In EF Core 3.1, it was possible to specify a SQL Server column type using square brackets. For example, "[money]" instead of "money". EF Core didn't understand this, so we treated it as an unknown decimal type, and passed it through to SQL Server as-is.

In EF Core 5.0, we added support for precision and scale specified independently of the type. We don't do this when we know the type is money because doing so is not valid. However, since we don't recognize "[money]" it gets precision and scale added.

The fix is to recognize SQL Server types with square brackets. Note that only type names without spaces can have square brackets.

Customer Impact

I don't believe many customers are using square brackets like this. However, I could be wrong about this since they "just worked" in this case before 5.0, so nobody would have had a reason to tell us they were doing so. Regardless, it is a regression from 3.1.

How found

Customer reported on RC1.

Test coverage

We didn't know people were doing this (and we never considered it) so we had no coverage. I've added type mapping coverage for this kind of usage in this PR.

Regression?

Yes, from 3.1.

Risk

Low. The fix adds additional support for these cases without changing existing support.

Fixes #22569

In EF Core 3.1, it was possible to specify a SQL Server column type using square brackets. For example, "[money]" instead of "money". EF Core didn't understand this, so we treated it as an unknown decimal type, and passed it through to SQL Server as-is.

In EF Core 5.0, we added support for precision and scale specified independently of the type. We don't do this when we know the type is `money` because doing so is not valid. However, since we don't recognize "[money]" it gets precision and scale added.

The fix is to recognize SQL Server types with square brackets. Note that only type names without spaces can have square brackets.
@ajcvickers ajcvickers requested a review from a team September 18, 2020 23:19
@ajcvickers ajcvickers changed the title Handle square brackets around explicitly specified SQL Server type names [5.0 RC2] Handle square brackets around explicitly specified SQL Server type names Sep 18, 2020
@ajcvickers ajcvickers added this to the 5.0.0 milestone Sep 22, 2020
@ajcvickers ajcvickers merged commit 79ebfdd into release/5.0-rc2 Sep 22, 2020
@ajcvickers ajcvickers deleted the DontBeSquare0918 branch September 22, 2020 18:14
@ajcvickers ajcvickers removed this from the 5.0.0 milestone Nov 7, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants