diff --git a/psl/psl-core/src/validate/datasource_loader.rs b/psl/psl-core/src/validate/datasource_loader.rs index be27ca8f4a62..9f94f2b9aacf 100644 --- a/psl/psl-core/src/validate/datasource_loader.rs +++ b/psl/psl-core/src/validate/datasource_loader.rs @@ -163,18 +163,14 @@ fn lift_datasource( None => (None, None), }; - if let (Some((shadow_url, _)), Some(direct_url), url, Some(direct_url_span), url_span) = ( - shadow_database_url.clone(), - direct_url.clone(), - url.clone(), - direct_url_span, - url_span, - ) { - if shadow_url == direct_url { - diagnostics.push_error(DatamodelError::new_shadow_database_is_same_as_direct_url_error( - source_name, - direct_url_span, - )); + if let Some((shadow_url, _)) = shadow_database_url.clone() { + if let (Some(direct_url), Some(direct_url_span)) = (direct_url.clone(), direct_url_span) { + if shadow_url == direct_url { + diagnostics.push_error(DatamodelError::new_shadow_database_is_same_as_direct_url_error( + source_name, + direct_url_span, + )); + } } if shadow_url == url { diff --git a/psl/psl/tests/validation/datasource/direct_url_same_as_shadow.prisma b/psl/psl/tests/validation/datasource/direct_url_same_as_shadow.prisma new file mode 100644 index 000000000000..08275d6035a7 --- /dev/null +++ b/psl/psl/tests/validation/datasource/direct_url_same_as_shadow.prisma @@ -0,0 +1,19 @@ +datasource testds { + provider = "mysql" + url = "mysql://testurl" + directUrl = "mysql://testurl" + shadowDatabaseUrl = "mysql://testurl" +} + +// error: shadowDatabaseUrl is the same as directUrl for datasource "testds". Please specify a different database as shadow database. +// --> schema.prisma:4 +//  |  +//  3 |  url = "mysql://testurl" +//  4 |  directUrl = "mysql://testurl" +//  |  +// error: shadowDatabaseUrl is the same as url for datasource "testds". Please specify a different database as shadow database. +// --> schema.prisma:3 +//  |  +//  2 |  provider = "mysql" +//  3 |  url = "mysql://testurl" +//  |  diff --git a/psl/psl/tests/validation/datasource/url_same_as_shadow.prisma b/psl/psl/tests/validation/datasource/url_same_as_shadow.prisma index 08275d6035a7..46ec12215c01 100644 --- a/psl/psl/tests/validation/datasource/url_same_as_shadow.prisma +++ b/psl/psl/tests/validation/datasource/url_same_as_shadow.prisma @@ -1,16 +1,9 @@ datasource testds { provider = "mysql" url = "mysql://testurl" - directUrl = "mysql://testurl" shadowDatabaseUrl = "mysql://testurl" } -// error: shadowDatabaseUrl is the same as directUrl for datasource "testds". Please specify a different database as shadow database. -// --> schema.prisma:4 -//  |  -//  3 |  url = "mysql://testurl" -//  4 |  directUrl = "mysql://testurl" -//  |  // error: shadowDatabaseUrl is the same as url for datasource "testds". Please specify a different database as shadow database. // --> schema.prisma:3 //  |