-
Notifications
You must be signed in to change notification settings - Fork 2.1k
SQL Server Introspection crashes on multi-line (deprecated) defaults #24275
Copy link
Copy link
Closed
prisma/prisma-engines
#4884Labels
bug/2-confirmedBug has been reproduced and confirmed.Bug has been reproduced and confirmed.kind/bugA reported bug.A reported bug.topic: CREATE DEFAULT ... AS ...topic: defaulttopic: prisma db pullCLI: prisma db pullCLI: prisma db pulltopic: sql serverMicrosoft SQL ServerMicrosoft SQL Servertopic: unwrap error
Milestone
Description
With this SQL:
/* This is a comment */
CREATE DEFAULT [dbo].[valueZero] AS 0;
CREATE TABLE [dbo].[A] (
id INT IDENTITY,
val INT NOT NULL
);
sp_bindefault '[dbo].[valueZero]', '[dbo].[A].[val]'(Make sure that the comment in line 1 is included when you create the default, in DBeaver for example by selecting both lines before executing the statement.)
db pull will crash on Introspection:
✖ Introspecting based on datasource defined in prisma\schema.prisma
Oops, an unexpected error occurred!
Error in Schema engine.
Reason: [schema-engine\sql-schema-describer\src\mssql.rs:348:30] called `Result::unwrap()` on an `Err` value: "Couldn't parse default value: `/* This is a comment */\r\nCREATE DEFAULT [dbo].[valueZero] AS 0;\r\n`"
The underlying Introspection query is this one:
https://github.com/prisma/prisma-engines/blob/b4fe3e61b0e65aba302a47e5e94bf961f6ef2fc2/schema-engine/sql-schema-describer/src/mssql.rs#L268C13-L290C81
The gist of it is this simplified query:
SELECT OBJECT_DEFINITION(c.default_object_id)
FROM sys.columns c
INNER JOIN sys.objects obj ON c.object_id = obj.object_id
WHERE obj.is_ms_shipped = 0The result:

(Note the line breaks in the string.)
Seems this case of the result being a multi-line string crashes our default parsing logic:
https://github.com/prisma/prisma-engines/blob/b4fe3e61b0e65aba302a47e5e94bf961f6ef2fc2/schema-engine/sql-schema-describer/src/mssql.rs#L340C1-L348C39
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bug/2-confirmedBug has been reproduced and confirmed.Bug has been reproduced and confirmed.kind/bugA reported bug.A reported bug.topic: CREATE DEFAULT ... AS ...topic: defaulttopic: prisma db pullCLI: prisma db pullCLI: prisma db pulltopic: sql serverMicrosoft SQL ServerMicrosoft SQL Servertopic: unwrap error