DapperAOT icon indicating copy to clipboard operation
DapperAOT copied to clipboard

Npgsql parameter rewrite

Open mgravell opened this issue 9 months ago • 1 comments

There are two parameter models in Npgsql - ordinal and nominal; we use nominal, but the ordinal API is much more efficient; we could ingest nominal const sql and rewrite it as ordinal

this should include splitting semi-colon multi-statements into DbBatch when possible

tasks:

  • [x] basic generalized SQL parser
  • [x] SQL syntax tests for postgresql peculiarities
  • [x] basic exploration of batch concept
  • [x] "real" batch concept (UnifiedBatch, should work with/without DbBatch API)
  • [ ] codegen (including turn-off-and-onable)
  • [x] benchmark:
    • [ ] vanilla Dapper, parameterized single batch (Npgsql param rewrite)
    • [ ] vanilla Dapper, parameterized multi-batch (Npgsql param rewrite+split)
    • [ ] AOT Dapper, rewrite enabled, parameterized single batch, DbBatch disabled
    • [ ] AOT Dapper, rewrite enabled, parameterized multi batch, DbBatch disabled
    • [ ] AOT Dapper, rewrite enabled, parameterized single batch, DbBatch enabled
    • [ ] AOT Dapper, rewrite enabled, parameterized multi batch, DbBatch enabled
  • [ ] use parser in place of the regex in the regular code path? as an option with fallback?
  • [ ] docs
  • [ ] performance tuning of parser (I have a plan, don't ask; kind of a rewrite of the parser) (note this is not critical path)

mgravell avatar Nov 16 '23 07:11 mgravell