If you want to help with the development of the library, you might want to consider one of these items:
The documentation in the Wiki is incomplete and outdated. It is also not part of source control, which makes it a bit harder to contribute. It might make sense to write a couple of markdown files here.
Throw in chapters of how to add features and how to write connector libraries.
Many of the current tests were born when the library was in infant state. Often they test implementation details. And they often just print stuff, instead of checking said stuff.
Having all connector libraries in place, makes maintenance considerably simpler, see #174. It would also reduce the cognitive overhead for newcomers.
There are a couple of connector libraries already. Here are some that have been requested in the past
- Sybase
- Oracle
- SQL Server
- Google Spanner
GROUP CONCAT or JSON support for mysql, for instance INSERT OR UPDATE for postgresl and mysql INSERT INTO ... SELECT ... for postgresql CREATE TABLE for all of them, including PPGEN
Exception types that carry more specific error information, e.g. the native error code, see #227
Find a way to handle column names that are keywords in the vendor's dialect, see #199
Handle specific data types, including JSON for the connectors.
More test cases for DDL files.
Multi-line insert in prepared statements, see #68
Instead of sqlpp::value_or_null, std::optional would be nice, see #238
Assuming that you have converter functions from struct to sqlpp11 and back, we could have something like this:
struct Person;
insert_into(tab).set(Person{});
update(tab).set(Person{});
for (const auto& person : db(select(Person{}).from(tab).unconditionally()))
{
// ...
}
In order to support high load scenarios,
- connection pools (to avoid creating and destroying connections)
- caching (hash the query and answer it from the cache for some time), see #86
Obtain results in an asynchronous fashion, see #35, for instance.
See Seventeenification talk. Some of the simplifications can be ported back easily.
Some compilers tend to export all the generated symbols, which is a bit annoying in case of template-heavy libraries like sqlpp11 (leads to larger files and longer compile/link/startup times, I believe). There are ways to suppress this in most compilers, afaik.