Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
3d20fee
LibRed: continue the AutoNumber counter past the int32 wrap
ChrisJollyAU Aug 21, 2026
2a14814
Add JetParseTranslator for .NET Parse method support
ChrisJollyAU Aug 21, 2026
e3dacd8
LibRed: test-suite sweep, reader/writer page scope, and per-test cleanup
ChrisJollyAU Aug 22, 2026
50ee96d
LibRed: the General (v1) text collation, and the complex-column syste…
ChrisJollyAU Aug 23, 2026
8e133cd
LibRed: the collation field is a 32-bit LCID, and what the v0 letter …
ChrisJollyAU Aug 23, 2026
f7b9ab1
LibRed: implement the locale sort orders, including contraction
ChrisJollyAU Aug 23, 2026
1dbab5f
LibRed: extend General Legacy across the blocks, and identify its pro…
ChrisJollyAU Aug 23, 2026
ddb499f
LibRed: fix reading an index where many rows share a key
ChrisJollyAU Aug 23, 2026
8f27344
LibRed: General Legacy covers the whole Basic Multilingual Plane
ChrisJollyAU Aug 23, 2026
81fa756
LibRed: General covers the whole Basic Multilingual Plane
ChrisJollyAU Aug 23, 2026
30dd693
LibRed: the 510-byte index entry limit, and collation above the BMP
ChrisJollyAU Aug 23, 2026
067a50f
LibRed: the inline word-sort position is a 16-bit field, not a marker…
ChrisJollyAU Aug 23, 2026
988e62c
LibRed: reproduce ACE's truncation checksum instead of refusing long …
ChrisJollyAU Aug 23, 2026
4a3555a
LibRed: implement the French sort order - a reversed diacritic section
ChrisJollyAU Aug 23, 2026
da9ff13
LibRed: name the collation constants from [MS-UCODEREF]
ChrisJollyAU Aug 23, 2026
e14432e
LibRed: Bosnian, Croatian and Serbian - the first version-1 tailorings
ChrisJollyAU Aug 23, 2026
0e4130f
LibRed: a weight with no primary folds into the one before it (versio…
ChrisJollyAU Aug 23, 2026
21bb630
LibRed: implement Thai - a contraction, not a reordering
ChrisJollyAU Aug 23, 2026
87268c0
Split the ACE engine tests out of the cross-platform suite
ChrisJollyAU Aug 23, 2026
3dd2275
LibRed: prove creation honours every collation it claims to encode
ChrisJollyAU Aug 23, 2026
14ece02
LibRed: the multiple-record append query, INSERT INTO ... SELECT
ChrisJollyAU Aug 23, 2026
24c7566
LibRed: the make-table query, SELECT ... INTO
ChrisJollyAU Aug 23, 2026
d4745f1
Fix the migrations-lock hang in JetHistoryRepository
ChrisJollyAU Aug 23, 2026
dd1b6bb
Run statementless SQL as a no-op instead of a parse error
ChrisJollyAU Aug 23, 2026
0098809
Update tests
ChrisJollyAU Aug 23, 2026
62af6ae
Take the relocation pointer from the slot's first 4 bytes, not its width
ChrisJollyAU Aug 23, 2026
e82a21e
Use modified DateOnly to make sure that the year is over year 100
ChrisJollyAU Aug 23, 2026
d2264a0
Write an empty byte[] as '' - a bare 0x is T-SQL and ACE rejects it
ChrisJollyAU Aug 24, 2026
4b8f535
Read a binary column as UTF-16 text in the functions that see it as text
ChrisJollyAU Aug 24, 2026
37df3d8
Translate byte[].Any() as LENB(x) > 0
ChrisJollyAU Aug 24, 2026
210e776
Match SqlServerByteArrayMethodTranslator's shape
ChrisJollyAU Aug 24, 2026
84530ee
Assert the refusal for byte-array Length/Index/First, as GearsOfWar does
ChrisJollyAU Aug 24, 2026
a5aed06
LibRed: NULLIF, which ACE does not have
ChrisJollyAU Aug 24, 2026
0529e1c
Emit NULLIF as IIF, which is what Jet actually has
ChrisJollyAU Aug 24, 2026
30d3c84
Millisecond DATEPART/DATEDIFF, spelled "ms" like every other interval
ChrisJollyAU Aug 24, 2026
550f4f6
LibRed: carry milliseconds through the temporal path
ChrisJollyAU Aug 24, 2026
21cb6d7
LibRed: FULL [OUTER] JOIN, which ACE has no syntax for
ChrisJollyAU Aug 24, 2026
f37c354
Bring the ad-hoc query tests up to upstream's override coverage
ChrisJollyAU Aug 25, 2026
27fca49
Replace two stale base expectations with what upstream actually asserts
ChrisJollyAU Aug 25, 2026
48f7de1
LibRed: make a connection observe two ADO.NET contracts it was ignoring
ChrisJollyAU Aug 25, 2026
9b99441
Move the Ado temporal tests onto the millisecond boundary
ChrisJollyAU Aug 25, 2026
b918d1b
LibRed: DATETIME2 end to end - write, index, create, upgrade
ChrisJollyAU Aug 26, 2026
c423c16
LibRed: BIGINT - index keys, the variable-length fix, and the 0x05 up…
ChrisJollyAU Aug 26, 2026
cd9e340
LibRed: decode the page-0 user commit slots - they are a write counter
ChrisJollyAU Aug 26, 2026
3e3ade2
Update SQL tests for Jet date/time literal compliance
ChrisJollyAU Aug 26, 2026
c7bd9e8
Skip the new-format type tests on an ACE that predates the type
ChrisJollyAU Aug 26, 2026
834cd1c
Run LibRed.Engine.AccessTests on push, as it already does on pull_req…
ChrisJollyAU Aug 26, 2026
c717da6
Add settings.json to restrict shell command usage
ChrisJollyAU Aug 26, 2026
a8d7956
Remove sysname column mapping test and references
ChrisJollyAU Aug 26, 2026
1271e33
Bring CLAUDE.md and AGENTS.md back in line with the repo
ChrisJollyAU Aug 27, 2026
f3611dc
Remove EnableMillisecondsSupport and related code
ChrisJollyAU Sep 1, 2026
a44c289
Extract EntityFrameworkCore.Jet.Common and decouple LibRed.EFCore fro…
ChrisJollyAU Sep 2, 2026
5243a8d
Publish the Common and LibRed packages, and stop gating the push on t…
ChrisJollyAU Sep 2, 2026
d4f9ebd
Add LibRedSqlMode and give LibRed its own copies of the mode-dependen…
ChrisJollyAU Sep 3, 2026
fa01fe3
Add the extended-mode LibRed functional test suite
ChrisJollyAU Sep 3, 2026
8b5d3c1
Emit NULLIF in extended mode, and drop the stray LibRed green-test lists
ChrisJollyAU Sep 3, 2026
99b10a1
Give LibRed its own parameter-based SQL processor, gated on SqlMode
ChrisJollyAU Sep 3, 2026
59f6f7a
Rebaseline the extended suite for the dropped Jet workarounds
ChrisJollyAU Sep 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
42 changes: 42 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{
"permissions": {
"allow": [
"Bash(dotnet test *)",
"Bash(dotnet build *)",
"Bash(dotnet restore *)",
"Bash(dotnet nuget list source)",
"Bash(dotnet --info)",
"Bash(dotnet --version)",
"Bash(dotnet --list-sdks)",
"Bash(dotnet --list-runtimes)",
"PowerShell(dotnet test *)",
"PowerShell(dotnet build *)",
"PowerShell(dotnet restore *)",
"Bash(git status*)",
"Bash(git diff*)",
"Bash(git log*)",
"Bash(git show*)",
"Bash(git branch*)",
"Bash(git commit*)",
"Bash(git push*)",
"PowerShell"
]
},
"hooks": {
"PreToolUse": [
{
"matcher": "Bash|PowerShell",
"hooks": [
{
"type": "command",
"command": "grep -qE '(^|[;&|(\")])[[:space:]]*(python[0-9.]*|pythonw|py)([[:space:]]|\")|sed[[:space:]]+-[a-zA-Z]*i|sed[[:space:]]+--in-place|>[[:space:]]*[^[:space:];&|]*\\.(cs|md|csproj|props|targets|sln|json|ps1|g4)|tee[[:space:]][^;&|]*\\.(cs|md|csproj|props|targets|sln|json|ps1|g4)' && echo '{\"hookSpecificOutput\":{\"hookEventName\":\"PreToolUse\",\"permissionDecision\":\"deny\",\"permissionDecisionReason\":\"Shell edits to source files (and Python) are disallowed: they bypass file checkpointing, so /rewind cannot undo them. Use Edit or Write instead. Writing logs to the scratchpad is fine.\"}}' || true"
},
{
"type": "command",
"command": "in=$(cat); if printf '%s' \"$in\" | grep -qE '(^|[;&(\")]|\\\\n)[[:space:]]*(grep|egrep|fgrep|rg|cat|head|tail|ls|dir|find|fd|fdfind|Get-Content|gc|Get-ChildItem|gci|Select-String|sls)([[:space:]]|\")' && ! printf '%s' \"$in\" | grep -qE '(scratchpad|\\.log|\\$log|/tmp/)'; then echo '{\"hookSpecificOutput\":{\"hookEventName\":\"PreToolUse\",\"permissionDecision\":\"deny\",\"permissionDecisionReason\":\"Reading files through the shell costs a permission prompt and bypasses the dedicated tools. Use Grep for content, Glob for filenames, Read for file contents. Shell text tools stay allowed on scratchpad logs (paths containing scratchpad, .log or $log).\"}}'; fi; true"
}
]
}
]
}
}
14 changes: 9 additions & 5 deletions .github/workflows/pull_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ jobs:
- *shared
- 'src/Shared/**'
- 'src/EFCore.Jet/**'
- 'src/EFCore.Jet.Common/**'
- 'src/EFCore.Jet.Data/**'
- 'src/EFCore.Jet.Odbc/**'
- 'src/EFCore.Jet.OleDb/**'
Expand All @@ -104,12 +105,9 @@ jobs:
- 'test/LibRed.Core.Tests/**'
- 'test/LibRed.EFCore.Tests/**'
- 'test/LibRed.Engine.Tests/**'
- 'test/LibRed.Engine.AccessTests/**'
- 'test/EFCore.LibRed.FunctionalTests/**'
# LibRed.Ado references EFCore.Jet.Data and LibRed.EFCore references EFCore.Jet, so a
# change on the Jet side has to re-run LibRed. The reverse is not true: nothing under
# src/LibRed is referenced by the Jet provider.
- 'src/EFCore.Jet/**'
- 'src/EFCore.Jet.Data/**'
- 'src/EFCore.Jet.Common/**'
# Northwind.accdb lives here and every LibRed suite links to it as its fixture.
- 'test/JetProviderExceptionTests/**'
- name: 'Decide What To Run'
Expand Down Expand Up @@ -678,6 +676,12 @@ jobs:
if: env.skipTests != 'true'
shell: pwsh
run: dotnet test .\test\LibRed.Core.Tests --configuration '${{ env.buildConfiguration }}' -p:FixedTestOrder=${{ env.deterministicTests }} --blame-hang-timeout 5m
# The engine tests that cross-check against ACE. They belong here rather than in the cross-platform
# LibRed job above, which runs on five platforms precisely to prove LibRed needs no ACE at all.
- name: 'Run Tests: LibRed.Engine.AccessTests'
if: always() && env.skipTests != 'true'
shell: pwsh
run: dotnet test .\test\LibRed.Engine.AccessTests --configuration '${{ env.buildConfiguration }}' -p:FixedTestOrder=${{ env.deterministicTests }} --blame-hang-timeout 5m
- name: 'Run Tests: LibRed.Ado.Tests'
if: always() && env.skipTests != 'true'
shell: pwsh
Expand Down
19 changes: 10 additions & 9 deletions .github/workflows/push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ jobs:
- *shared
- 'src/Shared/**'
- 'src/EFCore.Jet/**'
- 'src/EFCore.Jet.Common/**'
- 'src/EFCore.Jet.Data/**'
- 'src/EFCore.Jet.Odbc/**'
- 'src/EFCore.Jet.OleDb/**'
Expand All @@ -112,12 +113,9 @@ jobs:
- 'test/LibRed.Core.Tests/**'
- 'test/LibRed.EFCore.Tests/**'
- 'test/LibRed.Engine.Tests/**'
- 'test/LibRed.Engine.AccessTests/**'
- 'test/EFCore.LibRed.FunctionalTests/**'
# LibRed.Ado references EFCore.Jet.Data and LibRed.EFCore references EFCore.Jet, so a
# change on the Jet side has to re-run LibRed. The reverse is not true: nothing under
# src/LibRed is referenced by the Jet provider.
- 'src/EFCore.Jet/**'
- 'src/EFCore.Jet.Data/**'
- 'src/EFCore.Jet.Common/**'
# Northwind.accdb lives here and every LibRed suite links to it as its fixture.
- 'test/JetProviderExceptionTests/**'
- name: 'Decide What To Run'
Expand Down Expand Up @@ -686,6 +684,12 @@ jobs:
if: env.skipTests != 'true'
shell: pwsh
run: dotnet test .\test\LibRed.Core.Tests --configuration '${{ env.buildConfiguration }}' -p:FixedTestOrder=${{ env.deterministicTests }} --blame-hang-timeout 5m
# The engine tests that cross-check against ACE. They belong here rather than in the cross-platform
# LibRed job above, which runs on five platforms precisely to prove LibRed needs no ACE at all.
- name: 'Run Tests: LibRed.Engine.AccessTests'
if: always() && env.skipTests != 'true'
shell: pwsh
run: dotnet test .\test\LibRed.Engine.AccessTests --configuration '${{ env.buildConfiguration }}' -p:FixedTestOrder=${{ env.deterministicTests }} --blame-hang-timeout 5m
- name: 'Run Tests: LibRed.Ado.Tests'
if: always() && env.skipTests != 'true'
shell: pwsh
Expand Down Expand Up @@ -798,10 +802,7 @@ jobs:
pattern: green-tests_*
delete-merged: true
NuGet:
needs:
- BuildAndTest
- MergeArtifacts
if: always() && (needs.BuildAndTest.result == 'success' || needs.BuildAndTest.result == 'skipped') && (github.event_name == 'push' || github.event_name == 'release') && needs.MergeArtifacts.result == 'success' && github.repository == 'CirrusRedOrg/EntityFrameworkCore.Jet'
if: (github.event_name == 'push' || github.event_name == 'release') && github.repository == 'CirrusRedOrg/EntityFrameworkCore.Jet'
runs-on: ubuntu-latest
steps:
- name: Checkout
Expand Down
Loading
Loading