Skip to content

Commit 5fb154d

Browse files
authored
Merge pull request #299 from DataObjects-NET/6.0-pgsql-schema-extraction-fix
PostgreSql: Dedicated exception when schema info can't be extracted
2 parents f781af3 + dcc0dde commit 5fb154d

File tree

5 files changed

+35
-5
lines changed

5 files changed

+35
-5
lines changed

ChangeLog/6.0.11_dev.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[postgresql] Dedicated exception when an extracting schema doesn't exist or it belongs to another user

Orm/Xtensive.Orm.PostgreSql/Sql.Drivers.PostgreSql/Resources/Strings.Designer.cs

Lines changed: 10 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Orm/Xtensive.Orm.PostgreSql/Sql.Drivers.PostgreSql/Resources/Strings.resx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,10 @@
112112
<value>2.0</value>
113113
</resheader>
114114
<resheader name="reader">
115-
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
115+
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116116
</resheader>
117117
<resheader name="writer">
118-
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
118+
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119119
</resheader>
120120
<data name="ExPostgreSqlBelow83IsNotSupported" xml:space="preserve">
121121
<value>PostgreSQL below 8.3 is not supported.</value>
@@ -132,4 +132,7 @@
132132
<data name="ExTheTypeOfGivenParameterCannotBeTreatedAsOffsetForDateTimeOffsetConstruction" xml:space="preserve">
133133
<value>The type of given parameter cannot be treated as offset for DateTimeOffset construction.</value>
134134
</data>
135+
<data name="ExSchemaXDoesNotExistOrBelongsToAnotherUser" xml:space="preserve">
136+
<value>Schema '{0}' either does not exist or belongs to another user.</value>
137+
</data>
135138
</root>

Orm/Xtensive.Orm.PostgreSql/Sql.Drivers.PostgreSql/v8_0/Extractor.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -441,7 +441,12 @@ protected virtual void ExtractSchemaContents(ExtractionContext context)
441441
&& SqlDml.In(relationsTable["relkind"], SqlDml.Row('r', 'v', 'S'));
442442

443443
if (targetSchemes!=null && targetSchemes.Count > 0) {
444-
var schemesIndexes = catalog.Schemas.Where(sch => targetSchemes.ContainsKey(sch.Name)).Select(sch => context.ReversedSchemaMap[sch]);
444+
var schemesIndexes = catalog.Schemas.Where(sch => targetSchemes.ContainsKey(sch.Name))
445+
.Select(sch =>
446+
context.ReversedSchemaMap.TryGetValue(sch, out var oid)
447+
? oid
448+
: throw new InvalidOperationException(string.Format(Resources.Strings.ExSchemaXDoesNotExistOrBelongsToAnotherUser, sch.Name))
449+
);
445450
select.Where &= SqlDml.In(relationsTable["relnamespace"], CreateOidRow(schemesIndexes));
446451
}
447452
select.Columns.Add(relationsTable["oid"], "reloid");

Orm/Xtensive.Orm.PostgreSql/Xtensive.Orm.PostgreSql.csproj

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
33
<IsPackable>true</IsPackable>
44
<DocumentationFile>$(OutputPath)$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>
@@ -32,4 +32,16 @@
3232
<Link>Properties\Visibility.cs</Link>
3333
</Compile>
3434
</ItemGroup>
35+
<ItemGroup>
36+
<None Include="Sql.Drivers.PostgreSql\Resources\Strings.resx">
37+
<Generator>ResXFileCodeGenerator</Generator>
38+
<SubType>Designer</SubType>
39+
<LastGenOutput>Strings.Designer.cs</LastGenOutput>
40+
</None>
41+
<Compile Update="Sql.Drivers.PostgreSql\Resources\Strings.Designer.cs">
42+
<DesignTime>True</DesignTime>
43+
<AutoGen>True</AutoGen>
44+
<DependentUpon>Strings.resx</DependentUpon>
45+
</Compile>
46+
</ItemGroup>
3547
</Project>

0 commit comments

Comments
 (0)