Pre-release build and test steps are improved and thus tables of hisqry program and unit test program for each architecture are prepared as below.
The source code is available for download.
Each architecture status, hisqry.pm - the database program, and
test.pm - unit-test program.
hisqry.pm | Single Build(Optimized) | BSD Make | CMake |
---|---|---|---|
FreeBSD 12.2/13.0 | Passed on i386 and amd64 | Passed on i386 and amd64 | Passed on i386 and amd64 |
NetBSD 9.1 | Passed on i386 | Gcc runs out of memory on i386 | Gcc runs out of memory on i386 |
Ubuntu 21.04 | Passed on amd64 | Not supported | Passed on amd64 |
test.pm | Single Build | BSD Make | CMake |
---|---|---|---|
FreeBSD 12.2/13.0 | Passed on i386 and amd64 | Passed on i386 and amd64 | Passed on i386 and amd64 |
NetBSD 9.1 | GCC compiler fails due to missing filesystem header file since C++17 | GCC compiler fails due to missing filesystem header file since C++17 | GCC compiler fails due to missing filesystem header file since C++17 |
Ubuntu 21.04 | Passed on amd64 | Not supported | GNU linker fails to link library of test cases. |
I started the project to experiment and learn both C++ and relational database. STL and containers came to C++98 and C++03, looked appealing such that many SQL operations could be well implemented and reused. Boost Spirit allowed writing a parser in C++.
The project had a long hibernation period.
After woken up, many things were forgotten. It was a good opportunity to introduce easy to test program and Test Driven Development. Meanwhile, C++14 and C++17 introduced further more powerful features, such as variant, visiter, and others.
Basic SQL operations such as simple CREATE TABLE and INSERT INTO operations have been implemented. Many of SELECT operations have been also implemented including LEFT and RIGHT JOINs. GROUP BY aggregation functions are implemented but HAVING closure is not implemented. TRANSACTION and SNAPSHOTs are implemented but will need more test cases. been implemented.
Please refer to the details for SQL syntax diagram, README.txt for instructions, QUICK-START.txt for quick start for a try, and BUILD.txt for more depth in code hierarchy and building.