Skip to content

Commit 992167d

Browse files
committed
Cleanup expression handling parsing. Be more strict in places to allow more expressions overall.
1 parent 8f5340c commit 992167d

82 files changed

Lines changed: 1412 additions & 1449 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.editorconfig

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,9 @@ dotnet_diagnostic.IDE0011.severity = silent
9292

9393
# IDE0058: Expression value is never used
9494
dotnet_diagnostic.IDE0058.severity = silent
95+
96+
# IDE0061: Use block body for local function
97+
dotnet_diagnostic.IDE0061.severity = none
98+
99+
# IDE0090: Use 'new(...)'
100+
dotnet_diagnostic.IDE0090.severity = silent

.github/workflows/build.yml

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,26 @@ jobs:
7171
9.0.x
7272
10.0.x
7373
74+
- name: Add coverage support
75+
run: |
76+
dotnet tool install -g dotnet-coverage
77+
dotnet tool install -g dotnet-reportgenerator-globaltool
78+
79+
- name: restore
80+
run: dotnet restore
81+
7482
- name: build
75-
run: dotnet build -c Release
83+
run: dotnet build -c Release --no-restore
7684

77-
- name: Run tests for .Net 10.0
78-
run: dotnet test -c Release -f net10.0 --no-build --report-github --report-github-summary-include-passed=false
85+
- name: Run tests for .NET 10.0 with coverage
86+
run: |
87+
dotnet-coverage collect \
88+
--settings src/coverage.runsettings \
89+
--output-format cobertura \
90+
-o coverage.xml \
91+
-- \
92+
dotnet test -c Release -f net10.0 --no-build \
93+
--report-github --report-github-summary-include-passed=false
7994
8095
- name: Set version variables
8196
id: version
@@ -92,3 +107,14 @@ jobs:
92107
with:
93108
name: release
94109
path: release/*nupkg
110+
111+
- name: Generate coverage report
112+
run: |
113+
reportgenerator \
114+
-reports:coverage.xml \
115+
-targetdir:coverage-report \
116+
-reporttypes:MarkdownSummaryGithub
117+
118+
- name: Add HTML summary to GitHub Action output
119+
run: |
120+
cat coverage-report/SummaryGithub.md >> $GITHUB_STEP_SUMMARY

Directory.Build.props

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
<TestTargetOutputType>Exe</TestTargetOutputType>
2727
<TestingPlatformDotnetTestRunner>true</TestingPlatformDotnetTestRunner>
2828
<GenerateDocumentationFile Condition="$([System.String]::Copy('$(MSBuildProjectName)').ToLower().Contains('test')) == 'false'">true</GenerateDocumentationFile>
29+
<!-- We don't have resources ourselves, and we don't need any during testing... Others will flow through nuget -->
30+
<SatelliteResourceLanguages>en;en-US</SatelliteResourceLanguages>
2931
</PropertyGroup>
3032
<PropertyGroup>
3133
<!-- Reduce tests while running inside VS -->

Directory.Packages.props

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
<PackageVersion Include="Microsoft.Bcl.HashCode" Version="6.0.0" />
2020
<PackageVersion Include="Microsoft.CodeAnalysis.Analyzers" Version="4.14.0" />
2121
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.14.0" />
22-
<PackageVersion Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" Version="5.0.0-1.25277.114" />
2322
<PackageVersion Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="8.0.0" />
24-
<PackageVersion Include="Microsoft.Data.SqlClient" Version="6.1.4" />
23+
<PackageVersion Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" Version="5.0.0-1.25277.114" />
24+
<PackageVersion Include="Microsoft.Data.SqlClient" Version="7.0.0" />
2525
<PackageVersion Include="Microsoft.Data.Sqlite" Version="10.0.5" />
2626
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="8.0.18" />
2727
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.18" />
@@ -33,13 +33,15 @@
3333
<PackageVersion Include="MySql.Data" Version="9.6.0" />
3434
<PackageVersion Include="MySqlConnector" Version="2.5.0" />
3535
<PackageVersion Include="NHibernate" Version="5.6.0" />
36-
<PackageVersion Include="Npgsql" Version="8.0.8" />
36+
<PackageVersion Include="Npgsql" Version="8.0.9" />
3737
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.11" />
38+
<PackageVersion Include="Npgsql.NodaTime" Version="8.0.9" />
3839
<PackageVersion Include="Oracle.ManagedDataAccess" Version="23.26.100" />
3940
<PackageVersion Include="Oracle.ManagedDataAccess.Core" Version="23.26.100" />
4041
<PackageVersion Include="Pgvector" Version="0.3.2" />
4142
<PackageVersion Include="System.ComponentModel.Annotations" Version="5.0.0" />
4243
<PackageVersion Include="System.Data.Common" Version="4.3.0" />
44+
<PackageVersion Include="System.Data.SqlClient" Version="4.9.1" />
4345
<PackageVersion Include="System.Data.SQLite.Core" Version="1.0.119" />
4446
<PackageVersion Include="System.Dynamic.Runtime" Version="4.3.0" />
4547
<PackageVersion Include="System.Memory" Version="4.6.3" />

RepoDb.slnx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
<Project Path="src/RepoDb.Oracle.IntegrationTests/RepoDb.Oracle.IntegrationTests.csproj" />
2424
<Project Path="src/RepoDb.Oracle.UnitTests/RepoDb.Oracle.UnitTests.csproj" Id="eb776225-d1da-4b38-98fa-98e154db2f3a" />
2525
<Project Path="src/RepoDb.PostgreSql.BulkOperations.IntegrationTests/RepoDb.PostgreSql.BulkOperations.IntegrationTests.csproj" />
26+
<Project Path="src/RepoDb.PostgreSql.DependencyIntegrationTests/RepoDb.PostgreSql.DependencyIntegrationTests.csproj" />
2627
<Project Path="src/RepoDb.PostgreSql.IntegrationTests/RepoDb.PostgreSql.IntegrationTests.csproj" />
2728
<Project Path="src/RepoDb.PostgreSql.UnitTests/RepoDb.PostgreSql.UnitTests.csproj" />
2829
<Project Path="src/RepoDb.Sqlite.Microsoft.IntegrationTests/RepoDb.Sqlite.Microsoft.IntegrationTests.csproj" />
@@ -31,6 +32,7 @@
3132
<Project Path="src/RepoDb.SQLite.System.UnitTests/RepoDb.SQLite.System.UnitTests.csproj" />
3233
<Project Path="src/RepoDb.SqlServer.BulkOperations.IntegrationTests/RepoDb.SqlServer.BulkOperations.IntegrationTests.csproj" />
3334
<Project Path="src/RepoDb.SqlServer.IntegrationTests/RepoDb.SqlServer.IntegrationTests.csproj" />
35+
<Project Path="src/RepoDb.SqlServer.SystemData.IntegrationTests/RepoDb.SqlServer.SystemData.IntegrationTests.csproj" />
3436
<Project Path="src/RepoDb.SqlServer.UnitTests/RepoDb.SqlServer.UnitTests.csproj" />
3537
<Project Path="src/RepoDb.TestCore/RepoDb.TestCore.csproj" />
3638
</Folder>

src/RepoDb.MySql/DbSettings/MySqlDbSetting.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using MySql.Data.MySqlClient;
2+
using RepoDb.Extensions.QueryFields;
23

34
namespace RepoDb.DbSettings;
45

@@ -26,4 +27,12 @@ public MySqlDbSetting()
2627
// MaxParameterCount = base.MaxParameterCount;
2728
// MaxQueriesInBatchCount = base.MaxQueriesInBatchCount;
2829
}
30+
31+
/// <inheritdoc/>
32+
protected override string TranslateFunctionalFormat(string format)
33+
=> format switch
34+
{
35+
DateTimePartQueryField.MillisecondFormat => "(MICROSECOND({0}) DIV 1000)",
36+
_ => base.TranslateFunctionalFormat(format)
37+
};
2938
}

src/RepoDb.MySqlConnector/DbSettings/MySqlConnectorDbSetting.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using MySqlConnector;
2+
using RepoDb.Extensions.QueryFields;
23

34
namespace RepoDb.DbSettings;
45

@@ -26,4 +27,12 @@ public MySqlConnectorDbSetting()
2627
MaxParameterCount = 8096;
2728
// MaxQueriesInBatchCount = base.MaxQueriesInBatchCount;
2829
}
30+
31+
/// <inheritdoc/>
32+
protected override string TranslateFunctionalFormat(string format)
33+
=> format switch
34+
{
35+
DateTimePartQueryField.MillisecondFormat => "(MICROSECOND({0}) DIV 1000)",
36+
_ => base.TranslateFunctionalFormat(format)
37+
};
2938
}

src/RepoDb.Oracle/DbHelpers/OracleDbHelper.cs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,6 @@ public OracleDbHelper(IDbSetting dbSetting)
2929
/// <inheritdoc />
3030
public IDbSetting DbSetting { get; }
3131

32-
/// <inheritdoc />
33-
public override void DynamicHandler<TEventInstance>(TEventInstance instance, string key)
34-
{
35-
if (key == "RepoDb.Internal.Compiler.Events[AfterCreateDbParameter]" && instance is OracleParameter op)
36-
{
37-
HandleDbParameterPostCreation(op);
38-
}
39-
}
40-
4132
/// <inheritdoc />
4233
public override Expression? GetParameterPostCreationExpression(ParameterExpression dbParameterExpression, ParameterExpression? propertyExpression, DbField dbField)
4334
{

src/RepoDb.Oracle/DbSettings/OracleDbSetting.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,18 @@ protected override string TranslateFunctionalFormat(string format)
4949
else if (format.StartsWith("RIGHT({0}, "))
5050
return "SUBSTR({0}, -" + format.Substring("RIGHT({0}, ".Length);
5151

52-
return base.TranslateFunctionalFormat(format);
52+
return format switch
53+
{
54+
DateTimePartQueryField.DateFormat => "TRUNC({0})",
55+
DateTimePartQueryField.YearFormat => "EXTRACT(YEAR FROM {0})",
56+
DateTimePartQueryField.MonthFormat => "EXTRACT(MONTH FROM {0})",
57+
DateTimePartQueryField.DayFormat => "EXTRACT(DAY FROM {0})",
58+
DateTimePartQueryField.HourFormat => "EXTRACT(HOUR FROM {0})",
59+
DateTimePartQueryField.MinuteFormat => "EXTRACT(MINUTE FROM {0})",
60+
DateTimePartQueryField.SecondFormat => "TRUNC(EXTRACT(SECOND FROM {0}))",
61+
DateTimePartQueryField.MillisecondFormat => "MOD(EXTRACT(SECOND FROM {0}) * 1000, 1000)",
62+
63+
_ => base.TranslateFunctionalFormat(format)
64+
};
5365
}
5466
}

src/RepoDb.PostgreSql.BulkOperations/Extensions/NpgsqlText.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ private static string GetInsertCommandText(string sourceTableName,
4848

4949
// INSERT INTO
5050
builder
51-
.Clear()
5251
.Insert()
5352
.Into()
5453
.TableNameFrom(destinationTableName, dbSetting)
@@ -207,7 +206,6 @@ private static string GetMergeCommandTextViaOnConflictDoUpdate(string sourceTabl
207206

208207
// Insert
209208
builder
210-
.Clear()
211209
.Insert()
212210
.Into()
213211
.TableNameFrom(destinationTableName, dbSetting)

0 commit comments

Comments
 (0)