10000 Bug#36701652 [EFCore test failing due to misconfiguration] · mysql/mysql-connector-net@7456bd1 · GitHub
[go: up one dir, main page]

Skip to content

Commit 7456bd1

Browse files
committed
Bug#36701652 [EFCore test failing due to misconfiguration]
Change-Id: I91b60bf0aea34a8ee368532b5827e337b219c4e1
1 parent baf1ce9 commit 7456bd1

File tree

3 files changed

+81
-122
lines changed

3 files changed

+81
-122
lines changed

CHANGES

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
- Fixed bug IIS Website is crashing after upgrading MySQL.Data package to 8.3.0 (Oracle Bug #36483069).
99
- Updated Wix Toolset to 4.0.5 (Oracle Bug #36627858).
1010
- Fixed bug disabling of mysql_native_password in server causes errors in testsuite (Oracle Bug #36529814).
11+
- Fixed bug EFCore test failing due to misconfiguration (Oracle Bug #36701652).
1112

1213

1314
8.4.0

EFCore/src/Metadata/Conventions/MySQLConventionSetBuilder.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,9 @@ public override ConventionSet CreateConventionSet()
6767

6868
conventionSet.PropertyAddedConventions.Add(new MySqlCharsetAttributeConvention(Dependencies));
6969
conventionSet.PropertyAddedConventions.Add(new MySqlCollationAttributeConvention(Dependencies));
70-
#if !NET8_0
7170
conventionSet.EntityTypeAddedConventions.Add(new MySqlEntityCharsetAttributeConvention(Dependencies));
7271
conventionSet.EntityTypeAddedConventions.Add(new MySqlEntityCollationAttributeConvention(Dependencies));
73-
#endif
72+
7473
ValueGenerationConvention valueGeneratorConvention = new MySQLValueGenerationConvention(Dependencies, RelationalDependencies);
7574
ReplaceConvention(conventionSet.EntityTypeBaseTypeChangedConventions, valueGeneratorConvention);
7675
ReplaceConvention(conventionSet.EntityTypePrimaryKeyChangedConventions, valueGeneratorConvention);

EFCore/src/Metadata/Internal/MySQLAnnotationProvider.cs

Lines changed: 79 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -70,29 +70,23 @@ public override IEnumerable<IAnnotation> For(ITable table, bool designTime)
7070
{
7171
yield break;
7272
}
73-
#if !NET8_0
74-
var entityType = table.EntityTypeMappings.First().EntityType;
75-
76-
if (GetActualEntityTypeCharSet(entityType) is string charSet)
73+
#if NET8_0
74+
var entityType = table.EntityTypeMappings.First().TypeBase;
75+
if (GetActualTypeBaseCharSet(entityType) is string charSet)
7776
yield return new Annotation(MySQLAnnotationNames.Charset, charSet);
7877

79-
if (GetActualEntityTypeCollation(entityType) is string collation)
78+
if (GetActualTypeBaseCollation(entityType) is string collation)
8079
yield return new Annotation(RelationalAnnotationNames.Collation, collation);
81-
82-
foreach (var annotation in entityType.GetAnnotations().Where(a => a.Name is MySQLAnnotationNames.StoreOptions))
83-
yield return annotation;
8480
#else
85-
var typeBase = table.EntityTypeMappings.First().TypeBase;
86-
87-
if (GetActualTypeBaseCharSet(typeBase) is string charSet)
81+
var entityType = table.EntityTypeMappings.First().EntityType;
82+
if (GetActualEntityTypeCharSet(entityType) is string charSet)
8883
yield return new Annotation(MySQLAnnotationNames.Charset, charSet);
8984

90-
if (GetActualTypeBaseCollation(typeBase) is string collation)
85+
if (GetActualEntityTypeCollation(entityType) is string collation)
9186
yield return new Annotation(RelationalAnnotationNames.Collation, collation);
92-
93-
foreach (var annotation in typeBase.GetAnnotations().Where(a => a.Name is MySQLAnnotationNames.StoreOptions))
94-
yield return annotation;
9587
#endif
88+
foreach (var annotation in entityType.GetAnnotations().Where(a => a.Name is MySQLAnnotationNames.StoreOptions))
89+
yield return annotation;
9690
}
9791

9892
public override IEnumerable<IAnnotation> For(IUniqueConstraint constraint, bool designTime)
@@ -131,57 +125,32 @@ public override IEnumerable<IAnnotation> For(ITableIndex index, bool designTime)
131125
yield return new Annotation(MySQLAnnotationNames.SpatialIndex, isSpatial.Value);
132126
}
133127

134-
#if NET6_0
135128
public override IEnumerable<IAnnotation> For(IColumn column, bool designTime)
136129
{
137130
if (!designTime)
138131
yield break;
139132

140133
var table = StoreObjectIdentifier.Table(column.Table.Name, column.Table.Schema);
141134
var properties = column.PropertyMappings.Select(m => m.Property).ToArray();
142-
143-
if (column.PropertyMappings.Where(
144-
m => m.TableMapping.IsSharedTablePrincipal && m.TableMapping.EntityType == m.Property.DeclaringEntityType)
145-
.Select(m => m.Property)
146-
.FirstOrDefault(p => p.GetValueGenerationStrategy(table) == MySQLValueGenerationStrategy.IdentityColumn) is IProperty identityProperty)
147-
{
148-
var valueGenerationStrategy = identityProperty.GetValueGenerationStrategy(table);
149-
yield return new Annotation(MySQLAnnotationNames.ValueGenerationStrategy, valueGenerationStrategy);
150-
}
151-
else if (properties.FirstOrDefault
152-
(p => p.GetValueGenerationStrategy(table) == MySQLValueGenerationStrategy.ComputedColumn) is IProperty computedProperty)
153-
{
154-
var valueGenerationStrategy = computedProperty.GetValueGenerationStrategy(table);
155-
yield return new Annotation(MySQLAnnotationNames.ValueGenerationStrategy, valueGenerationStrategy);
156-
}
157-
}
158-
#elif NET8_0
159-
160-
public override IEnumerable<IAnnotation> For(IColumn column, bool designTime< 10000 /span>)
161-
{
162-
if (!designTime)
163-
yield break;
164-
165-
var table = StoreObjectIdentifier.Table(column.Table.Name, column.Table.Schema);
166-
var properties = column.PropertyMappings.Select(m => m.Property).ToArray();
167-
168-
if (column.PropertyMappings.Where(m => m.TableMapping.IsSharedTablePrincipal ?? true
169-
&& m.TableMapping.TypeBase == m.Property.DeclaringEntityType)
170-
.Select(m => m.Property)
171-
.FirstOrDefault(p => p.GetValueGenerationStrategy(table) == MySQLValueGenerationStrategy.IdentityColumn) is IProperty identityProperty)
135+
#if NET8_0
136+
if (column.PropertyMappings.Where(m => m.TableMapping.IsSharedTablePrincipal ?? true && m.TableMapping.TypeBase == m.Property.DeclaringType)
137+
.Select(m => m.Property)
138+
.FirstOrDefault(p => p.GetValueGenerationStrategy(table) == MySQLValueGenerationStrategy.IdentityColumn) is IProperty identityProperty)
139+
#else
140+
if (column.PropertyMappings.Where(m => m.TableMapping.IsSharedTablePrincipal && m.TableMapping.EntityType == m.Property.DeclaringEntityType)
141+
.Select(m => m.Property)
142+
.FirstOrDefault(p => p.GetValueGenerationStrategy(table) == MySQLValueGenerationStrategy.IdentityColumn) is IProperty identityProperty)
143+
#endif
172144
{
173145
var valueGenerationStrategy = identityProperty.GetValueGenerationStrategy(table);
174146
yield return new Annotation(MySQLAnnotationNames.ValueGenerationStrategy, valueGenerationStrategy);
175147
}
176-
else if (properties.FirstOrDefault
177-
(p => p.GetValueGenerationStrategy(table) == MySQLValueGenerationStrategy.ComputedColumn) is IProperty computedProperty)
148+
else if (properties.FirstOrDefault(p => p.GetValueGenerationStrategy(table) == MySQLValueGenerationStrategy.ComputedColumn) is IProperty computedProperty)
178149
{
179150
var valueGenerationStrategy = computedProperty.GetValueGenerationStrategy(table);
180151
yield return new Annotation(MySQLAnnotationNames.ValueGenerationStrategy, valueGenerationStrategy);
181152
}
182153
}
183-
#endif
184-
185154

186155
protected virtual string GetActualModelCharSet(IModel model)
187156
{
@@ -193,148 +162,138 @@ protected virtual string GetActualModelCollation(IModel model)
193162
return model.GetCollation()!;
194163
}
195164

196-
197-
#if !NET8_0
198-
protected virtual string? GetActualEntityTypeCharSet(IEntityType entityType)
165+
#if NET8_0
166+
protected virtual string? GetActualTypeBaseCharSet(ITypeBase typeBase)
199167
{
200-
var entityTypeCharSet = entityType.GetCharSet();
168+
var typeBaseCharSet = typeBase.GetCharSet();
201169

202-
if (entityTypeCharSet is not null)
203-
return entityTypeCharSet;
170+
if (typeBaseCharSet is not null)
171+
return typeBaseCharSet;
204172

205-
if (entityTypeCharSet is null)
173+
if (typeBaseCharSet is null)
206174
{
207-
var entityTypeCollation = entityType.GetCollation();
208-
var actualModelCharSet = GetActualModelCharSet(entityType.Model);
175+
var typeBaseCollation = typeBase.GetCollation();
176+
var actualModelCharSet = GetActualModelCharSet(typeBase.Model);
209177

210-
if (entityTypeCollation is not null)
178+
if (typeBaseCollation is not null)
211179
{
212-
return actualModelCharSet is not null && entityTypeCollation.StartsWith(actualModelCharSet, StringComparison.OrdinalIgnoreCase)
180+
return actualModelCharSet is not null && typeBaseCollation.StartsWith(actualModelCharSet, StringComparison.OrdinalIgnoreCase)
213181
? actualModelCharSet : null;
214182
}
215183

216-
var actualModelCollation = GetActualModelCollation(entityType.Model);
184+
var actualModelCollation = GetActualModelCollation(typeBase.Model);
217185

218186
if (actualModelCollation is not null)
219187
{
220188
return actualModelCharSet is not null && actualModelCollation.StartsWith(actualModelCharSet, StringComparison.OrdinalIgnoreCase)
221189
? actualModelCharSet : null;
222190
}
223-
224191
return actualModelCharSet;
225192
}
226-
227193
return null;
228194
}
229195

230-
protected virtual string? GetActualEntityTypeCollation(IEntityType entityType)
196+
protected virtual string? GetActualTypeBaseCollation(ITypeBase typeBase)
231197
{
232-
var entityTypeCollation = entityType.GetCollation();
198+
var typeBaseCollation = typeBase.GetCollation();
233199

234-
if (entityTypeCollation is not null)
235-
return entityTypeCollation;
200+
if (typeBaseCollation is not null)
201+
return typeBaseCollation;
236202

237-
if (entityTypeCollation is null)
203+
if (typeBaseCollation is null)
238204
{
239-
var entityTypeCharSet = entityType.GetCharSet();
240-
var actualModelCollation = GetActualModelCollation(entityType.Model);
205+
var typeBaseCharSet = typeBase.GetCharSet();
206+
var actualModelCollation = GetActualModelCollation(typeBase.Model);
241207

242-
if (entityTypeCharSet is not null)
208+
if (typeBaseCharSet is not null)
243209
{
244-
return actualModelCollation is not null && actualModelCollation.StartsWith(entityTypeCharSet, StringComparison.OrdinalIgnoreCase)
210+
return actualModelCollation is not null && actualModelCollation.StartsWith(typeBaseCharSet, StringComparison.OrdinalIgnoreCase)
245211
? actualModelCollation : null;
246212
}
247-
248213
return actualModelCollation;
249214
}
250-
251215
return null;
252216
}
253-
254-
protected virtual string? GetActualPropertyCharSet(IProperty[] properties)
255-
{
256-
return properties.Select(p => p.GetCharSet()).FirstOrDefault(s => s is not null) ??
257-
properties.Select(
258-
p => p.FindTypeMapping() is MySQLStringTypeMapping
259-
? GetActualEntityTypeCharSet(p.DeclaringEntityType) is string charSet &&
260-
(p.GetCollation() is not string collation ||
261-
collation.StartsWith(charSet, StringComparison.OrdinalIgnoreCase))
262-
? charSet
263-
: null
264-
: null)
265-
.FirstOrDefault(s => s is not null);
266-
}
267217
#else
268-
protected virtual string? GetActualTypeBaseCharSet(ITypeBase typeBase)
218+
protected virtual string? GetActualEntityTypeCharSet(IEntityType entityType)
269219
{
270-
var typeBaseCharSet = typeBase.GetCharSet();
220+
var entityTypeCharSet = entityType.GetCharSet();
271221

272-
if (typeBaseCharSet is not null)
273-
return typeBaseCharSet;
222+
if (entityTypeCharSet is not null)
223+
return entityTypeCharSet;
274224

275-
if (typeBaseCharSet is null)
225+
if (entityTypeCharSet is null)
276226
{
277-
var typeBaseCollation = typeBase.GetCollation();
278-
var actualModelCharSet = GetActualModelCharSet(typeBase.Model);
227+
var entityTypeCollation = entityType.GetCollation();
228+
var actualModelCharSet = GetActualModelCharSet(entityType.Model);
279229

280-
if (typeBaseCollation is not null)
230+
if (entityTypeCollation is not null)
281231
{
282-
return actualModelCharSet is not null && typeBaseCollation.StartsWith(actualModelCharSet, StringComparison.OrdinalIgnoreCase)
232+
return actualModelCharSet is not null && entityTypeCollation.StartsWith(actualModelCharSet, StringComparison.OrdinalIgnoreCase)
283233
? actualModelCharSet : null;
284234
}
285235

286-
var actualModelCollation = GetActualModelCollation(typeBase.Model);
236+
var actualModelCollation = GetActualModelCollation(entityType.Model);
287237

288238
if (actualModelCollation is not null)
289239
{
290240
return actualModelCharSet is not null && actualModelCollation.StartsWith(actualModelCharSet, StringComparison.OrdinalIgnoreCase)
291241
? actualModelCharSet : null;
292242
}
293-
294243
return actualModelCharSet;
295244
}
296-
297245
return null;
298246
}
299247

300-
protected virtual string? GetActualTypeBaseCollation(ITypeBase typeBase)
248+
protected virtual string? GetActualEntityTypeCollation(IEntityType entityType)
301249
{
302-
var typeBaseCollation = typeBase.GetCollation();
250+
var entityTypeCollation = entityType.GetCollation();
303251

304-
if (typeBaseCollation is not null)
305-
return typeBaseCollation;
252+
if (entityTypeCollation is not null)
253+
return entityTypeCollation;
306254

307-
if (typeBaseCollation is null)
255+
if (entityTypeCollation is null)
308256
{
309-
var typeBaseCharSet = typeBase.GetCharSet();
310-
var actualModelCollation = GetActualModelCollation(typeBase.Model);
257+
var entityTypeCharSet = entityType.GetCharSet();
258+
var actualModelCollation = GetActualModelCollation(entityType.Model);
311259

312-
if (typeBaseCharSet is not null)
260+
if (entityTypeCharSet is not null)
313261
{
314-
return actualModelCollation is not null && actualModelCollation.StartsWith(typeBaseCharSet, StringComparison.OrdinalIgnoreCase)
262+
return actualModelCollation is not null && actualModelCollation.StartsWith(entityTypeCharSet, StringComparison.OrdinalIgnoreCase)
315263
? actualModelCollation : null;
316264
}
317-
318265
return actualModelCollation;
319266
}
320-
321267
return null;
322268
}
269+
#endif
323270

324271
protected virtual string? GetActualPropertyCharSet(IProperty[] properties)
325272
{
273+
#if NET8_0
274+
return properties.Select(p => p.GetCharSet()).FirstOrDefault(s => s is not null) ??
275+
properties.Select(
276+
p => p.FindTypeMapping() is MySQLStringTypeMapping
277+
? GetActualTypeBaseCharSet(p.DeclaringType) is string charSet &&
278+
(p.GetCollation() is not string collation ||
279+
collation.StartsWith(charSet, StringComparison.OrdinalIgnoreCase))
280+
? charSet
281+
: null
282+
: null)
283+
.FirstOrDefault(s => s is not null);
284+
}
285+
#else
326286
return properties.Select(p => p.GetCharSet()).FirstOrDefault(s => s is not null) ??
327287
properties.Select(
328-
p => p.FindTypeMapping() is MySQLStringTypeMapping
329-
? GetActualTypeBaseCharSet(p.DeclaringType) is string charSet &&
330-
(p.GetCollation() is not string collation ||
331-
collation.StartsWith(charSet, StringComparison.OrdinalIgnoreCase))
332-
? charSet
333-
: null
334-
: null)
288+
p => p.FindTypeMapping() is MySQLStringTypeMapping
289+
? GetActualEntityTypeCharSet(p.DeclaringEntityType) is string charSet &&
290+
(p.GetCollation() is not string collation ||
291+
collation.StartsWith(charSet, StringComparison.OrdinalIgnoreCase))
292+
? charSet
293+
: null
294+
: null)
335295
.FirstOrDefault(s => s is not null);
336296
}
337297
#endif
338-
339298
}
340299
}

0 commit comments

Comments
 (0)
0