Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
fff8b41
Break each DBMS implementation into its own package, add a .Legacy pa…
jas88 Jul 23, 2025
dfdb4a9
Update project refs
jas88 Jul 23, 2025
3b62f9d
Fix Oracle driver exception inconsistency in TestKeywords_Invalid (#4)
jas88 Oct 16, 2025
b033ff3
Remove HIC prefix from all package IDs and references (#5)
jas88 Oct 17, 2025
e79369a
Bump dotnet-sdk from 9.0.200 to 9.0.306
dependabot[bot] Oct 17, 2025
9a73cbb
Bump actions/checkout from 4 to 5
dependabot[bot] Oct 17, 2025
cc07bae
Bump Microsoft.Data.SqlClient from 6.0.1 to 6.1.2
dependabot[bot] Oct 17, 2025
ea561ab
Bump Npgsql from 9.0.2 to 9.0.4
dependabot[bot] Oct 17, 2025
7bfa954
Bump NUnit from 4.3.2 to 4.4.0
dependabot[bot] Oct 17, 2025
622ccdf
Bump NUnit3TestAdapter from 5.0.0 to 5.2.0
dependabot[bot] Oct 17, 2025
2c3ad65
Bump Oracle.ManagedDataAccess.Core from 23.7.0 to 23.26.0
dependabot[bot] Oct 17, 2025
f1fc3b5
Bump System.Linq.Async from 6.0.1 to 6.0.3
dependabot[bot] Oct 17, 2025
359f621
Bump github/codeql-action from 3 to 4
dependabot[bot] Oct 17, 2025
8a5b696
Bump NUnit.Analyzers from 4.6.0 to 4.10.0
dependabot[bot] Oct 17, 2025
bf25dc5
Bump actions/setup-dotnet from 4 to 5
dependabot[bot] Oct 17, 2025
5ee2cd4
Bump Microsoft.NET.Test.Sdk from 17.13.0 to 18.0.0
dependabot[bot] Oct 17, 2025
9df9a8c
Bump System.Linq.Async from 6.0.1 to 6.0.3
dependabot[bot] Oct 17, 2025
f705293
Bump Npgsql from 9.0.2 to 9.0.4
dependabot[bot] Oct 17, 2025
df64625
Bump Microsoft.Data.SqlClient from 6.0.1 to 6.1.2
dependabot[bot] Oct 17, 2025
15f4a8a
Fix CodeQL alerts: Add missing XML documentation summaries
jas88 Oct 17, 2025
dee4128
Add local settings file
jas88 Oct 17, 2025
bb2a28b
Apply Copilot/CodeQL code style suggestions
jas88 Oct 17, 2025
e03db56
Bump Oracle.ManagedDataAccess.Core from 23.7.0 to 23.26.0
dependabot[bot] Oct 17, 2025
f46e7e6
Modernize aggregate helpers and implement pivot support
jas88 Oct 20, 2025
4ee20fc
Exclude .claude/ and CLAUDE.md from version control
jas88 Oct 20, 2025
85879a4
Fix MySQL aggregation issues: SET SESSION conflicts and pivot orderin…
jas88 Oct 20, 2025
ccf9fd6
Bump actions/setup-dotnet from 4 to 5
dependabot[bot] Oct 20, 2025
aa7b555
Bump actions/checkout from 4 to 5
dependabot[bot] Oct 20, 2025
480f592
Release v0.1.0: Modular packages and connection pooling (#27)
jas88 Oct 21, 2025
ea6b29c
Release v3.3.0: Thread-local connection pooling (#28)
jas88 Oct 21, 2025
579688c
Prepare v3.3.1 release (#29)
jas88 Oct 22, 2025
95835e0
Fix connection pooling dangling transaction detection (#30) (#31)
jas88 Oct 22, 2025
02186cf
Performance optimizations and connection pooling improvements (#33)
jas88 Oct 24, 2025
f64646f
Add proof-of-concept for parallel test execution
jas88 Oct 20, 2025
fdb6a71
Add MySQL, Oracle, and PostgreSQL parallel test fixtures
jas88 Oct 21, 2025
3cfcf8d
Fix GetTestScratchDatabaseName to not connect to database
jas88 Oct 21, 2025
2a4004f
Add CHANGELOG entry for parallel testing infrastructure
jas88 Oct 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 0 additions & 58 deletions .github/workflows/codeql.yml

This file was deleted.

276 changes: 205 additions & 71 deletions .github/workflows/dotnet-core.yml
Original file line number Diff line number Diff line change
@@ -1,71 +1,205 @@
name: Build and test

on:
push

env:
MSSQL_SA_PASSWORD: "YourStrong!Passw0rd"
ACCEPT_EULA: "Y"
MSSQL_PID: "developer"

jobs:
build:

runs-on: ubuntu-22.04
services:
oracle:
image: konnecteam/docker-oracle-12c:sequelize
env:
DB_MEMORY: 128m
ports:
- 1521:1521
postgres:
image: postgres:latest
env:
POSTGRES_PASSWORD: pgpass4291
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432

steps:
- name: Disable write flush for CI runs
run: sudo apt-get install -y libeatmydata1 apt-transport-https curl
- uses: actions/checkout@v4
- name: Setup .NET Core
uses: actions/setup-dotnet@v4
- name: Install Sql Server
run: |
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list)"
sudo apt-get install -y --no-install-recommends postgresql mssql-tools mssql-server
sudo -E /opt/mssql/bin/mssql-conf -n setup accept-eula
- name: MySQL
run: |
mv Tests/FAnsiTests/TestDatabases{-github,}.xml
sudo systemctl start mysql.service
- name: Test
run: dotnet test --logger "console;verbosity=minimal" --nologo
- name: Pack
run: |
dotnet pack -c Release -p:DebugType=full -p:SymbolPackageFormat=snupkg --include-symbols --nologo -p:Version=$(fgrep AssemblyInformationalVersion SharedAssemblyInfo.cs|cut -d'"' -f2) -o .
- name: Nuget push
if: contains(github.ref,'refs/tags/')
run: dotnet nuget push HIC.FAnsiSql.*.nupkg -s https://api.nuget.org/v3/index.json -k ${{ secrets.NUGET_KEY }} --skip-duplicate
- name: Store created nupkg files
uses: actions/upload-artifact@v4
with:
path: '*.nupkg'
retention-days: 1
- name: Upload release binaries
if: contains(github.ref,'refs/tags/')
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref }}
file: '*.nupkg'
file_glob: true
overwrite: true
name: Build, test, security, and AOT

on:
push

env:
MSSQL_SA_PASSWORD: "YourStrong!Passw0rd"
ACCEPT_EULA: "Y"
MSSQL_PID: "developer"
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
DOTNET_CLI_TELEMETRY_OPTOUT: 1

jobs:
build:
runs-on: ubuntu-22.04
permissions:
actions: read
contents: write
security-events: write
services:
oracle:
image: konnecteam/docker-oracle-12c:sequelize
env:
DB_MEMORY: 128m
ports:
- 1521:1521
postgres:
image: postgres:latest
env:
POSTGRES_PASSWORD: pgpass4291
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432

steps:
- name: Disable write flush for CI runs
run: sudo apt-get install -y libeatmydata1 apt-transport-https curl
- uses: actions/checkout@v5
- name: Setup .NET Core
uses: actions/setup-dotnet@v5

- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: csharp
queries: +security-and-quality

- name: Install Sql Server
run: |
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list)"
sudo apt-get install -y --no-install-recommends postgresql mssql-tools mssql-server
sudo -E /opt/mssql/bin/mssql-conf -n setup accept-eula
- name: MySQL
run: |
mv Tests/FAnsiTests/TestDatabases{-github,}.xml
sudo systemctl start mysql.service
- name: Test
run: dotnet test --logger "console;verbosity=minimal" --nologo

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
with:
category: "/language:csharp"
upload: False
output: sarif-results

- name: filter-sarif
uses: advanced-security/filter-sarif@v1
with:
patterns: |
+**/*
-**/*.g.cs
-**/Tests/**
input: sarif-results/csharp.sarif
output: sarif-results/csharp.sarif

- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v4
with:
sarif_file: sarif-results/csharp.sarif

# AOT Compatibility Tests (reuses same databases)
- name: Test SQL Server AOT Compatibility
run: |
echo "=== Building SQL Server AOT Test ==="
dotnet publish Tests/AotCompatibility/SqlServer.AotTest/SqlServer.AotTest.csproj \
-c Release \
-r linux-x64 \
-o ./aot-output/sqlserver \
--self-contained

echo "=== Running SQL Server AOT Test ==="
./aot-output/sqlserver/SqlServer.AotTest || true
continue-on-error: true

- name: Test MySQL AOT Compatibility
run: |
echo "=== Building MySQL AOT Test ==="
dotnet publish Tests/AotCompatibility/MySql.AotTest/MySql.AotTest.csproj \
-c Release \
-r linux-x64 \
-o ./aot-output/mysql \
--self-contained

echo "=== Running MySQL AOT Test ==="
./aot-output/mysql/MySql.AotTest || true
continue-on-error: true

- name: Test PostgreSQL AOT Compatibility
run: |
echo "=== Building PostgreSQL AOT Test ==="
dotnet publish Tests/AotCompatibility/PostgreSql.AotTest/PostgreSql.AotTest.csproj \
-c Release \
-r linux-x64 \
-o ./aot-output/postgresql \
--self-contained

echo "=== Running PostgreSQL AOT Test ==="
./aot-output/postgresql/PostgreSql.AotTest || true
continue-on-error: true

- name: Test Oracle AOT Compatibility
run: |
echo "=== Building Oracle AOT Test ==="
dotnet publish Tests/AotCompatibility/Oracle.AotTest/Oracle.AotTest.csproj \
-c Release \
-r linux-x64 \
-o ./aot-output/oracle \
--self-contained

echo "=== Running Oracle AOT Test ==="
./aot-output/oracle/Oracle.AotTest || true
continue-on-error: true

- name: Build Comprehensive AOT Test
run: |
echo "=== Building Comprehensive FAnsiSql AOT Test ==="
dotnet publish Tests/AotCompatibility/FAnsi.AotTest/FAnsi.AotTest.csproj \
-c Release \
-r linux-x64 \
-o ./aot-output/comprehensive \
--self-contained \
-p:PublishTrimmed=true \
-p:PublishSingleFile=false

echo ""
echo "=== AOT Build Summary ==="
ls -lh ./aot-output/comprehensive/FAnsi.AotTest
file ./aot-output/comprehensive/FAnsi.AotTest

- name: Run Comprehensive AOT Test
run: |
echo "=== Running Comprehensive FAnsiSql AOT Test ==="
./aot-output/comprehensive/FAnsi.AotTest || true
echo ""
echo "Note: AOT tests now have proper resource namespace configuration."
continue-on-error: true

- name: Check for AOT warnings
run: |
echo "=== Checking for AOT Analysis Warnings ==="
dotnet build Tests/AotCompatibility/FAnsi.AotTest/FAnsi.AotTest.csproj \
-c Release \
-p:PublishAot=true \
-v detailed 2>&1 | tee build.log

if grep -i "warning IL" build.log; then
echo "⚠️ Found AOT/Trim warnings - review required"
else
echo "✅ No AOT/Trim warnings found"
fi

- name: Upload AOT binaries
uses: actions/upload-artifact@v4
if: always()
with:
name: aot-test-binaries
path: ./aot-output/
retention-days: 7

- name: Pack
run: |
dotnet pack -c Release -p:DebugType=full -p:SymbolPackageFormat=snupkg --include-symbols --nologo -p:Version=$(fgrep AssemblyInformationalVersion SharedAssemblyInfo.cs|cut -d'"' -f2) -o .
- name: Nuget push
if: contains(github.ref,'refs/tags/')
run: dotnet nuget push FAnsi*.nupkg -s https://api.nuget.org/v3/index.json -k ${{ secrets.NUGET_API_KEY }} --skip-duplicate
- name: Store created nupkg files
uses: actions/upload-artifact@v4
with:
path: '*.nupkg'
retention-days: 1
- name: Upload release binaries
if: contains(github.ref,'refs/tags/')
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref }}
file: '*.nupkg'
file_glob: true
overwrite: true
15 changes: 15 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -288,3 +288,18 @@ __pycache__/
*.xsd.cs
Visual Studio 2013/
Visual Studio 2017/

# Claude Code - ignore all Claude-related files and directories
.claude/
.claude-flow/
.claude.json
CLAUDE.md
claude.md
.clauderc
claude-*.json
**/claude_*
**/.claude/
**/.claude-flow/
**/.claude.*
**/CLAUDE.*
**/claude.*
Loading