amysql implements both the text protocol and the binary protocol
amysql implements async connection pool(amysql/async_pool) and a threaded pool(amysql/db_pool).
Test passed: platform: Linux and OSX
mysql: 5.7 8.0
mariadb: 10
Todo: Finish caching_sha2_password_auth.
Testing ssl mode ,unix socket mode.
maybe use a constant size buffer to store data.
I've developing this for months, basically it fit my needs, I hope more people involved, helping me find bugs, testing performance, request new features, improve my codes.
This is cool. When I wrote https://github.com/philip-wernersbach/influx-mysql, I had to introduce a lot of scaffolding code to use Qt's synchronous C++ MySQL library, as there was no better MySQL library available in Nim.
I'm tempted to resurrect https://github.com/philip-wernersbach/influx-mysql, and update it to use this library, since it would be a non-trivial real use case. How is this library different from the other Nim MySQL libraries mentioned in the readme, like https://github.com/wiml/nim-asyncmysql and https://github.com/tulayang/asyncmysql ?
good question! I add history section to project's readme, also paste here. When I starting this project, I have wiml/nim-asyncmysql and asyncmysql for inspiration, the initial goal is provide basic asynchronous apis compare to Nim std library db_mysql's synchronous apis, asyncmysql provide mutiple results feature and callback style apis by design, he map mysql protocol flags to exact to c types, wiml/nim-asyncmysql provide asynchronous apis and map flags to enum type and the project design is very obvious to me, so I choose base on wiml/nim-asyncmysql.
When this project ready to use, it provide single statement and single results, I starting considering provide compression api, at that time data recevie as string and passing around procs, I starting store data to seq[char] as I dont want decompress data and passing around procs, and it also help me move next step, implements multiple results feature. Compare to asyncmysql ,`asyncmysql` use a constant size array buffer to store data, I may change as it so in the future.
Above declaration may not explain "Why this project exists ?", here's some key points.
When I starting this project asyncmysql and wiml/nim-asyncmysql have no commits activities for years. wiml/nim-asyncmysql even can't compile for current Nim version.