Skip to content

Fix get_columns_in_relation datatypes for UNICODE datatypes#329

Open
tkirschke wants to merge 1 commit intomicrosoft:mainfrom
tkirschke:patch-2
Open

Fix get_columns_in_relation datatypes for UNICODE datatypes#329
tkirschke wants to merge 1 commit intomicrosoft:mainfrom
tkirschke:patch-2

Conversation

@tkirschke
Copy link

Issue

UNICODE datatypes (nvarchar, nchar, sysname) need two bytes per character.
If a source column has the datatype nvarchar(4000), the sys.columns shows max_length = 8000, because it reflects the number of bytes required to store this value, see docs (here)[https://learn.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-columns-transact-sql?view=sql-server-ver17].

Since this is used to return the datatypes, the wrong datatype nvarchar(8000) is returned, which would actually cause errors, at least in MSSQL.

What's changed

Instead of just forwarding sys.columns.max_length, I have added a CASE WHEN that checks for the datatype. If the datatype is a UNICODE datatype (nvarchar, nchar, sysname), the max_length is divided by 2, unless max_length is set to -1, because that value is used to indicate MAX.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant