Skip to content

Conversation

faddiv
Copy link

@faddiv faddiv commented Sep 30, 2025

Hi @ahmad-moussawi

As mentioned in #738, I broke the test improvements and benchmarks into two separate PR.
We used SqlKata in our project, and I’ve started exploring its internals.
I thought the compiler part could be improved significantly, both for speed and memory usage.
However, to rewrite it safely, I first wanted to improve the tests and add some benchmarks.

This PR shows what I did in this regard. Please review this PR, and let me know if you are interested in any part of my work.

Summary of Changes:

  • I broke down the tests that check the same input with multiple engines, with Theory and InlineData attributes. This way it can be seen if anything fails separately, and it is better visible if any test is missing.
  • I didn't do this breakdown everywhere since I was unsure if it was really worth it. (Base class functionality was tested.)
  • I replaced TestCompilersContainer completely. I was not sure in which direction you wanted to move these tests, but I saw somewhere that you wished to deprecate them.
  • Created separate tests for the bindings.

It was my goal to make the compiler easily replaceable in the tests and be able to test with an improved compiler. Although I don't pursue this goal anymore, I still offer this work to you. The reason is that we are slowly replacing it with an in-house built framework, which is a better fit for our needs.
Originally, my idea regarding the compiler was to instead of concatenating strings, use a string builder as output. It consumes a lot less memory and is more performant.
Another idea was to replace the reflection parts. That is also known for slower performance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant