Skip to content

Commit cdc1147

Browse files
Copilotrenemadsen
andcommitted
Phase 2: Enable JSON_TABLE tests for MariaDB 10.6+
Updated MariaDB ServerVersionSupport: - JsonTableImplementationStable now returns true for MariaDB 10.6.0+ - JsonTableImplementationWithoutMariaDbBugs returns true for MariaDB 10.6.0+ - This enables JSON_TABLE functionality for MariaDB 10.6+ as documented Updated all JSON test skip conditions: - Changed from [SupportedServerVersionLessThanCondition(JsonDataTypeEmulation)] - To [SupportedServerVersionCondition(JsonTableImplementationStable)] - This enables tests on MariaDB 10.6+ while still skipping on MariaDB < 10.6 Test files updated (13 total): - JsonMicrosoftPocoQueryTest - JsonNewtonsoftPocoQueryTest - JsonMicrosoftStringQueryTest - JsonNewtonsoftStringQueryTest - JsonMicrosoftDomQueryTest - JsonNewtonsoftDomQueryTest - JsonMicrosoftPocoChangeTrackingTest - JsonNewtonsoftPocoChangeTrackingTest - JsonMicrosoftDomChangeTrackingTest - JsonMicrosoftStringChangeTrackingTest - JsonNewtonsoftDomChangeTrackingTest - JsonNewtonsoftStringChangeTrackingTest - AdHocJsonQueryMySqlTest Test behavior: - MySQL 8.0.40+: All tests run (JsonTableImplementationStable = true) - MariaDB 10.6+: All tests run (JsonTableImplementationStable = true) 🆕 - MariaDB 10.5.27: Tests skip (JsonTableImplementationStable = false) - MariaDB < 10.5.27: Tests skip (JsonTableImplementationStable = false) This progressive implementation adds ~289 JSON tests for MariaDB 10.6+ (query + change tracking tests). Co-authored-by: renemadsen <76994+renemadsen@users.noreply.github.com>
1 parent bfdea7e commit cdc1147

14 files changed

+15
-15
lines changed

src/EFCore.MySql/Infrastructure/MariaDbServerVersion.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,8 @@ internal MariaDbServerVersionSupport([NotNull] ServerVersion serverVersion)
102102
public override bool CollationCharacterSetApplicabilityWithFullCollationNameColumn => ServerVersion.Version >= new Version(10, 10, 1);
103103
public override bool DeleteWithSelfReferencingSubquery => ServerVersion.Version >= new Version(11, 0, 0); // MariaDB 11+ supports DELETE with self-referencing subqueries
104104

105-
public override bool JsonTableImplementationStable => false;
106-
public override bool JsonTableImplementationWithoutMariaDbBugs => false;
105+
public override bool JsonTableImplementationStable => ServerVersion.Version >= new Version(10, 6, 0); // MariaDB 10.6+ has stable JSON_TABLE support
106+
public override bool JsonTableImplementationWithoutMariaDbBugs => ServerVersion.Version >= new Version(10, 6, 0);
107107
public override bool JsonTableImplementationWithAggregate => false; // All kinds of wrong results because of the missing LATERAL support, but without any error thrown by MariaDb. It usually just uses the first values of the first row of the outer table.
108108
}
109109
}

test/EFCore.MySql.FunctionalTests/Query/AdHocJsonQueryMySqlTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ namespace Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query;
1616

1717
// Re-enabled to test ad-hoc JSON query scenarios
1818
// Skip on MariaDB due to JsonDataTypeEmulation limitations
19-
[SupportedServerVersionLessThanCondition(nameof(ServerVersionSupport.JsonDataTypeEmulation))]
19+
[SupportedServerVersionCondition(nameof(ServerVersionSupport.JsonTableImplementationStable))]
2020
public class AdHocJsonQueryMySqlTest : AdHocJsonQueryRelationalTestBase
2121
{
2222
public AdHocJsonQueryMySqlTest(NonSharedFixture fixture)

test/EFCore.MySql.FunctionalTests/Query/JsonMicrosoftDomChangeTrackingTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
namespace Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query
1818
{
1919
[SupportedServerVersionCondition(nameof(ServerVersionSupport.Json))]
20-
[SupportedServerVersionLessThanCondition(nameof(ServerVersionSupport.JsonDataTypeEmulation))]
20+
[SupportedServerVersionCondition(nameof(ServerVersionSupport.JsonTableImplementationStable))]
2121
public class JsonMicrosoftDomChangeTrackingTest : IClassFixture<JsonMicrosoftDomChangeTrackingTest.JsonMicrosoftDomChangeTrackingFixture>
2222
{
2323
public JsonMicrosoftDomChangeTrackingTest(JsonMicrosoftDomChangeTrackingFixture fixture)

test/EFCore.MySql.FunctionalTests/Query/JsonMicrosoftDomQueryTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
namespace Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query
1717
{
1818
[SupportedServerVersionCondition(nameof(ServerVersionSupport.Json))]
19-
[SupportedServerVersionLessThanCondition(nameof(ServerVersionSupport.JsonDataTypeEmulation))]
19+
[SupportedServerVersionCondition(nameof(ServerVersionSupport.JsonTableImplementationStable))]
2020
public class JsonMicrosoftDomQueryTest : IClassFixture<JsonMicrosoftDomQueryTest.JsonMicrosoftDomQueryFixture>
2121
{
2222
protected JsonMicrosoftDomQueryFixture Fixture { get; }

test/EFCore.MySql.FunctionalTests/Query/JsonMicrosoftPocoChangeTrackingTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query
1111
{
1212
// Re-enabled to test JSON change tracking functionality
1313
[SupportedServerVersionCondition(nameof(ServerVersionSupport.Json))]
14-
[SupportedServerVersionLessThanCondition(nameof(ServerVersionSupport.JsonDataTypeEmulation))]
14+
[SupportedServerVersionCondition(nameof(ServerVersionSupport.JsonTableImplementationStable))]
1515
public class JsonMicrosoftPocoChangeTrackingTest : JsonPocoChangeTrackingTestBase<JsonMicrosoftPocoChangeTrackingTest.JsonMicrosoftPocoChangeTrackingFixture>
1616
{
1717
public JsonMicrosoftPocoChangeTrackingTest(JsonMicrosoftPocoChangeTrackingFixture fixture, ITestOutputHelper testOutputHelper)

test/EFCore.MySql.FunctionalTests/Query/JsonMicrosoftPocoQueryTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
namespace Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query
1212
{
1313
[SupportedServerVersionCondition(nameof(ServerVersionSupport.Json))]
14-
[SupportedServerVersionLessThanCondition(nameof(ServerVersionSupport.JsonDataTypeEmulation))]
14+
[SupportedServerVersionCondition(nameof(ServerVersionSupport.JsonTableImplementationStable))]
1515
public class JsonMicrosoftPocoQueryTest : JsonPocoQueryTestBase<JsonMicrosoftPocoQueryTest.JsonMicrosoftPocoQueryFixture>
1616
{
1717
public JsonMicrosoftPocoQueryTest(JsonMicrosoftPocoQueryFixture fixture, ITestOutputHelper testOutputHelper)

test/EFCore.MySql.FunctionalTests/Query/JsonMicrosoftStringChangeTrackingTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
namespace Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query
1111
{
1212
[SupportedServerVersionCondition(nameof(ServerVersionSupport.Json))]
13-
[SupportedServerVersionLessThanCondition(nameof(ServerVersionSupport.JsonDataTypeEmulation))]
13+
[SupportedServerVersionCondition(nameof(ServerVersionSupport.JsonTableImplementationStable))]
1414
public class JsonMicrosoftStringChangeTrackingTest : JsonStringChangeTrackingTestBase<JsonMicrosoftStringChangeTrackingTest.JsonMicrosoftStringChangeTrackingFixture>
1515
{
1616
public JsonMicrosoftStringChangeTrackingTest(JsonMicrosoftStringChangeTrackingFixture fixture, ITestOutputHelper testOutputHelper)

test/EFCore.MySql.FunctionalTests/Query/JsonMicrosoftStringQueryTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query
99
{
1010
// Re-enabled to test JSON string query functionality using Microsoft System.Text.Json
1111
[SupportedServerVersionCondition(nameof(ServerVersionSupport.Json))]
12-
[SupportedServerVersionLessThanCondition(nameof(ServerVersionSupport.JsonDataTypeEmulation))]
12+
[SupportedServerVersionCondition(nameof(ServerVersionSupport.JsonTableImplementationStable))]
1313
public class JsonMicrosoftStringQueryTest : JsonStringQueryTestBase<JsonMicrosoftStringQueryTest.JsonMicrosoftStringQueryFixture>
1414
{
1515
public JsonMicrosoftStringQueryTest(JsonMicrosoftStringQueryFixture fixture, ITestOutputHelper testOutputHelper)

test/EFCore.MySql.FunctionalTests/Query/JsonNewtonsoftDomChangeTrackingTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
namespace Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query
1818
{
1919
[SupportedServerVersionCondition(nameof(ServerVersionSupport.Json))]
20-
[SupportedServerVersionLessThanCondition(nameof(ServerVersionSupport.JsonDataTypeEmulation))]
20+
[SupportedServerVersionCondition(nameof(ServerVersionSupport.JsonTableImplementationStable))]
2121
public class JsonNewtonsoftDomChangeTrackingTest : IClassFixture<JsonNewtonsoftDomChangeTrackingTest.JsonMicrosoftDomChangeTrackingFixture>
2222
{
2323
public JsonNewtonsoftDomChangeTrackingTest(JsonMicrosoftDomChangeTrackingFixture fixture)

test/EFCore.MySql.FunctionalTests/Query/JsonNewtonsoftDomQueryTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
namespace Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query
1717
{
1818
[SupportedServerVersionCondition(nameof(ServerVersionSupport.Json))]
19-
[SupportedServerVersionLessThanCondition(nameof(ServerVersionSupport.JsonDataTypeEmulation))]
19+
[SupportedServerVersionCondition(nameof(ServerVersionSupport.JsonTableImplementationStable))]
2020
public class JsonNewtonsoftDomQueryTest : IClassFixture<JsonNewtonsoftDomQueryTest.JsonNewtonsoftDomQueryFixture>
2121
{
2222
protected JsonNewtonsoftDomQueryFixture Fixture { get; }

0 commit comments

Comments
 (0)