Skip to content

Commit

Permalink
fix: do OBJECT_ID lookup for column constraint instead of name in mss…
Browse files Browse the repository at this point in the history
…ql (#7916)

this allows us to properly do lookups even when multiple schemas
are in use
  • Loading branch information
imnotjames committed Jul 16, 2021
1 parent 7e8687c commit fa8c1b0
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions src/driver/sqlserver/SqlServerQueryRunner.ts
Expand Up @@ -1607,12 +1607,14 @@ export class SqlServerQueryRunner extends BaseQueryRunner implements QueryRunner

return `SELECT "columnUsages".*, "tableConstraints"."CONSTRAINT_TYPE", "chk"."definition" ` +
`FROM "${TABLE_CATALOG}"."INFORMATION_SCHEMA"."CONSTRAINT_COLUMN_USAGE" "columnUsages" ` +
`INNER JOIN "${TABLE_CATALOG}"."INFORMATION_SCHEMA"."TABLE_CONSTRAINTS" "tableConstraints"
ON
"tableConstraints"."CONSTRAINT_NAME" = "columnUsages"."CONSTRAINT_NAME" AND
"tableConstraints"."TABLE_SCHEMA" = "columnUsages"."TABLE_SCHEMA" AND
"tableConstraints"."TABLE_NAME" = "columnUsages"."TABLE_NAME"` +
`LEFT JOIN "${TABLE_CATALOG}"."sys"."check_constraints" "chk" ON "chk"."name" = "columnUsages"."CONSTRAINT_NAME" ` +
`INNER JOIN "${TABLE_CATALOG}"."INFORMATION_SCHEMA"."TABLE_CONSTRAINTS" "tableConstraints" ` +
`ON ` +
`"tableConstraints"."CONSTRAINT_NAME" = "columnUsages"."CONSTRAINT_NAME" AND ` +
`"tableConstraints"."TABLE_SCHEMA" = "columnUsages"."TABLE_SCHEMA" AND ` +
`"tableConstraints"."TABLE_NAME" = "columnUsages"."TABLE_NAME" ` +
`LEFT JOIN "${TABLE_CATALOG}"."sys"."check_constraints" "chk" ` +
`ON ` +
`"chk"."object_id" = OBJECT_ID("columnUsages"."TABLE_CATALOG" + '.' + "columnUsages"."TABLE_SCHEMA" + '.' + "columnUsages"."CONSTRAINT_NAME") ` +
`WHERE ` +
`(${conditions}) AND ` +
`"tableConstraints"."CONSTRAINT_TYPE" IN ('PRIMARY KEY', 'UNIQUE', 'CHECK')`;
Expand Down

0 comments on commit fa8c1b0

Please sign in to comment.