Add partial EF Core provider for SharpCoreDB (from Grok prompt) - #5
Merged
Merged
Conversation
CopilotAI
changed the title
[WIP] Add NoEncryption option to DatabaseConfig for bypassing encryptionAdd partial EF Core provider for SharpCoreDB (from Grok prompt)Dec 5, 2025
MPCoreDeveloper
commented
Dec 5, 2025
Owner
MPCoreDeveloper
marked this pull request as ready for review
December 5, 2025 08:50
Copilot stopped work on behalf of MPCoreDeveloper due to an error
December 5, 2025 08:51
MPCoreDeveloper
commented
Dec 5, 2025
Owner
okay |
MPCoreDeveloper
approved these changes
Dec 5, 2025
MPCoreDeveloper pushed a commit
that referenced
this pull request
Aug 30, 2026
…nt reads -18..-37% B/op) - Table.Serialization.DeserializeRowWithSimd: fresh pre-sized dict instead of the leaky _dictPool.Get() (rows are handed to callers, never returned on success). - Table.QueryHelpers.TryParseSimpleWhereClause: zero-alloc span rewrite (was ToUpperInvariant + Split + Trims per point lookup). - SqlParser.DML.ExecuteSelectQuery: remove per-query ToUpperInvariant, fromParts ToArray, and the SubqueryStartRegex Match (span scan). - SqlParser.Helpers.ExtractMainTableNameFromSql: span-based (was Substring + ToUpperInvariant per scanned position + StringBuilder per char). - Database.ExecuteQuery(+Struct): drop empty-dict 'parameters ?? []' allocations. - DatabaseExtensions (SingleFile): hoist per-call PRAGMA regex to compiled static field; case-insensitive span checks instead of sql.Trim().ToUpperInvariant(). Microbench (Release, net11): SYNC READ 2044->1684 B/op, READ-IDENTICAL 1237->911, READ-STRUCT 1336->976, SF point 3211->2293, SF point-identical 2447->1540. 1,612 tests green.
MPCoreDeveloper pushed a commit
that referenced
this pull request
Aug 30, 2026
…t reads -18..-37% B/op)
MPCoreDeveloper pushed a commit
that referenced
this pull request
Aug 30, 2026
MPCoreDeveloper pushed a commit
that referenced
this pull request
Aug 30, 2026
MPCoreDeveloper pushed a commit
that referenced
this pull request
Aug 30, 2026
MPCoreDeveloper pushed a commit
that referenced
this pull request
Aug 30, 2026
… lookups 976->471 B/op (-52%) Replace the two yield-iterator state machines on the StructRow point-lookup path with struct enumerators so foreach is genuinely allocation-free. - Table.ScanStructRowsWhere: now returns a StructRowWhereEnumerable struct (non-yield); the struct enumerator handles the hash-index and primary-key fast paths allocation-free, and delegates the numeric-SIMD/full-scan fallback to the yield-based core (ScanStructRowsWhereCore). Implements IEnumerable<StructRow> for LINQ/boxing via a small class-based enumerator. - SqlParser.ExecuteQueryStruct: eager plan setup (table lookup + WHERE build) returning a StructRowQueryEnumerable struct; the offset/limit logic now lives in the struct enumerator (removed the ExecuteSimpleSelectStruct yield iterator). - Database.ExecuteQueryStruct + IDatabase.ExecuteQueryStruct: return StructRowQueryEnumerable (struct) instead of IEnumerable<StructRow> — foreach on the result (including via IDatabase, the DatabaseFactory return type) is now allocation-free; callers that store the result as IEnumerable<StructRow> still compile (implicit conversion). Microbench (Release, net11): SYNC READ-STRUCT 976 -> 471 B/op (-52%), +13% ops/sec; dictionary ExecuteQuery path unchanged (911 B/op). 1,630 tests green; full CI solution builds.
MPCoreDeveloper pushed a commit
that referenced
this pull request
Aug 31, 2026
…lookups 976->471 B/op (-52%)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
NoEncryptModetoNoEncryptionin DatabaseConfigOriginal prompt
This pull request was created as a result of the following prompt from Copilot chat.
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.