0
0
mirror of https://github.com/rbock/sqlpp11.git synced 2024-11-16 12:51:13 +08:00
Commit Graph

518 Commits

Author SHA1 Message Date
Roland Bock
b9987ccf4d Continued migration 2024-08-10 15:54:32 +02:00
Roland Bock
e17e9aebde serialize -> to_sql_string 2024-08-10 15:35:58 +02:00
Roland Bock
3faecf6c01 Remove duplicate tests 2024-08-10 11:48:16 +02:00
Roland Bock
1339cbd0e6 Fix parentheses for aggregate functions 2024-08-10 09:30:20 +02:00
Roland Bock
7a900b147c Fixed tests 2024-08-10 09:13:28 +02:00
Roland Bock
069fcf79b5 Cleanup name tags in sqlpp17 style
Using a macro in the generated table specs (this is much nicer now).
Using string_view to represent names.
2024-08-06 06:57:47 +02:00
Roland Bock
cec1eaa768 More tests 2024-08-05 20:26:54 +02:00
Roland Bock
ed0d10b58b More tests 2024-08-04 15:57:57 +02:00
Roland Bock
8e688f3c34 More tests 2024-08-03 21:08:27 +02:00
Roland Bock
e3f95a8e69 Added placeholders for operator serialize tests
Added SQLPP_COMPARE helper function
2024-08-03 12:14:00 +02:00
Roland Bock
dfa9924288 More tests and changed parentheses handling in operators 2024-08-03 11:41:32 +02:00
Roland Bock
4a9f9c384c Remove option to compile tests with different standard
The library is header only. It makes no sense to distinuish
between the standard the library is compiled with and the
standard the tests are compiled with. The library does not
get compiled on its own.
2024-08-03 10:29:20 +02:00
Roland Bock
a7ee6e5d3b More tests 2024-08-03 10:08:47 +02:00
Roland Bock
42d1b61279 More tests 2024-08-02 07:23:24 +02:00
Roland Bock
98a4ff9cb2 Add more tests 2024-07-31 07:48:21 +02:00
Roland Bock
68a3265fdc More moves 2024-07-30 07:32:30 +02:00
Roland Bock
79da114c00 Move stuff out of compat namespace
It is too much cognitive overhead
2024-07-29 20:49:45 +02:00
Roland Bock
3f73115356 Move stuff into core 2024-07-29 20:38:10 +02:00
Roland Bock
91af6aa385 Still more moves 2024-07-29 07:08:37 +02:00
Roland Bock
715839e18f More moves 2024-07-28 21:04:26 +02:00
Roland Bock
44ce033845 Move more stuff 2024-07-28 20:56:27 +02:00
Roland Bock
df8e2b6c81 Move clauses into sub directory 2024-07-28 20:24:05 +02:00
Roland Bock
6a92f139b7 More tests fixed
Make as_expression usable in select only
2024-07-28 15:04:22 +02:00
Roland Bock
2b7b568c49 Continue fixing tests 2024-07-27 13:15:56 +02:00
Roland Bock
6a11df89ec Change table represenation
Move columns out of table template parameters
2024-07-26 12:11:38 +02:00
Roland Bock
5578cce232 Rewrite select_as and add type tests 2024-07-25 08:05:18 +02:00
Roland Bock
4630bf7f0c More type tests 2024-07-21 19:33:33 +02:00
Roland Bock
25faf6c4bb More tests 2024-07-21 13:04:17 +02:00
Roland Bock
d3daa90e0b custom_query tests 2024-07-21 12:01:37 +02:00
Roland Bock
01c1e69eb3 More tests 2024-07-21 10:43:27 +02:00
Roland Bock
d2cb720746 Reactivate more tests 2024-07-21 09:24:41 +02:00
Roland Bock
4e75cf349b Start reactivating tests 2024-07-21 07:57:01 +02:00
Roland Bock
0f4d3b1451 Reduce error messages for serialize, add first serialize test for dynamic AND 2024-07-18 20:49:16 +02:00
Roland Bock
7cc4e45abd Add dynamic to AND and OR 2024-07-18 20:17:57 +02:00
Roland Bock
700c263f90 Introduce dynamic
This allows to select columns dynamically
2024-07-18 07:38:45 +02:00
Roland Bock
25200ba4cb (Only) allow comparison with ANY and introduce BETWEEN 2024-07-17 07:44:21 +02:00
Roland Bock
937dd31a13 Migrate column_t::as to using operator::as 2024-07-16 07:37:03 +02:00
Roland Bock
2d2f08007a Single column select has a value type 2024-07-15 07:44:29 +02:00
Roland Bock
6c1d59ffc4 Remove data type wrappers (with compile failuers) 2024-07-14 19:57:55 +02:00
Roland Bock
61030742b3 Removing more instances of wrap_operand 2024-07-14 12:42:02 +02:00
Roland Bock
87f4c348e9 Added more tests and cleaned up type traits a bit 2024-07-13 21:04:06 +02:00
Roland Bock
c2c5f15690 Add basic serialize functions and start documenting differences 2024-07-13 13:39:36 +02:00
Roland Bock
2b7e0ee6a5 Give operators a value 2024-07-11 20:46:30 +02:00
Roland Bock
08f643460c No more type traits in generated code 2024-07-09 08:08:53 +02:00
Roland Bock
4baede7434 Started to remove operand wrapping 2024-07-08 21:08:16 +02:00
Roland Bock
6eb791430a More testing 2024-06-30 10:31:41 +02:00
Roland Bock
c70ceaceb0 Introduce optional select columns
Basic functionality seems to work, more tests needed.
2024-06-25 07:33:53 +02:00
Roland Bock
b869cbe5b2 Synchronize sql and generated code for connector tests 2024-06-22 16:27:10 +02:00
Roland Bock
d7c54c949f Replace test column names with clearer names 2024-06-14 22:01:30 +02:00
Roland Bock
0eac55c377 Move optional, string_view, and span into sqlpp::compat 2024-06-12 21:31:18 +02:00
Roland Bock
8d0f3b3739 Clean up superfluous classes and functions
And remove some remaining dynamic parts which were overlooked before.
2024-06-12 20:33:35 +02:00
Roland Bock
c347b5d11c Remove dynamic query components 2024-06-12 20:31:06 +02:00
Roland Bock
bda77c620b Introduce optional, string_view, and span
sqlpp::optional is an alias for std::optional for C++17 and beyond.
Otherwise, it is a simple and incomplete backport.
For older versions of C++, the library offers simple back

Similar for string_view and span.
2024-06-12 20:29:10 +02:00
MeanSquaredError
3497e5891d Improve the tests for invalid data types. 2024-06-12 07:25:19 +02:00
Roland Bock
ac9d0b4417 Update the documentation for NULL #568 2024-04-13 08:56:57 +02:00
Roland Bock
eb2e569c2b Add time of day paramter for mysql #565 2024-04-05 07:35:13 +02:00
Roland Bock
ce13f2a783 Add time of day support for mysql connector #563 2024-03-29 10:55:56 +01:00
Roland Bock
fdbe08946b Add size() function to mysql::char_result_t #562 2024-03-24 09:20:54 +01:00
Roland Bock
93ab3fef86 Throw exception for multi-statements in sqlite3 execute #558
Before this change, sqlite3::connection::execute silently
ignores statements after the first one (separated by semicolon).

After this change, trailing statements are detected and an
sqlpp::exception is thrown.

This change also adds documentation to other connectors indicating
that execute is supposed to be used with single statements only,
even though it is possible to do otherwise.
2024-03-09 10:54:16 +01:00
MeanSquaredError
9b49afa306
Add is_transaction_active() to all connectors (#550)
* Document the connector API method is_transaction_active()
* Move mysql::connection_base::is_transaction_active() to the other transaction-handling methods.
* Add more tests for mysql::connection::is_transaction_active()
* Add postgresql::connection_base::is_transaction_active()
* Add tests for postgresql::connection_base::is_transaction_active()
* Change the type of the SQLite3 transaction status from transaction_status_type to a boolean flag.
* Add sqlite3::connection_base::is_transaction_active()
* Add tests for sqlite3::connection_base::is_transaction_active()
* When closing a transaction do it in the following order: report (if any), execute SQL command, set transaction active flag to false.
2024-01-05 08:59:42 +01:00
Roland Bock
6cc2067ef5 Allow alias of single-column select to be used as select column (#542) 2023-11-19 12:57:54 +01:00
Roland Bock
c1992535de Demonstrate insert with select (#539) 2023-11-03 07:23:34 +01:00
Roland Bock
451e337979 Introduce postgresql::remove_from with optional returning clause (#538) 2023-11-02 07:02:07 +01:00
Roland Bock
96fb4d7894 Add comparison operator serialization tests 2023-10-14 09:03:46 +02:00
Roland Bock
a2d884dab6 Maybe fix compile error on AppVeyor 2023-10-01 20:11:57 +02:00
Roland Bock
a0a4f19c4b (Maybe) fix test compilation error on AppVeyor 2023-10-01 19:56:28 +02:00
Roland Bock
1d4641ff05 Fix use-after-scope-exit in connection pool tests
A lambda catch-all caught a temporary variable that went out of
scope before the lambda. This was detected by an address sanitizer.
2023-10-01 19:31:19 +02:00
Roland Bock
ea9bd9ee32 Add tests for circular buffer 2023-10-01 15:09:53 +02:00
MeanSquaredError
623b5154d0
Add connection methods is_connected() and ping_server() (#528)
* Replace connection handle method check_connection() with is_connected() and ping_server()

* When a connections is fetched from a pool perform a validity check which can be one of none, passive or ping.

* Add the methods is_connected() and ping_server() to the connection template class.

* Remove unused #include and add mising #include.

* Add tests for the connection methods is_connected() and ping_server().
2023-09-20 06:38:16 +02:00
MeanSquaredError
8d92e7bb81
Add sqlpp::compat::make_unique (#527)
* Add sqlpp::compat::make_unique which calls std::make_unique in C++14 or newer and falls back to a custom implementation in C++11 mode.

* Add tests for sqlpp::compat::make_unique
2023-09-16 09:21:05 +02:00
MeanSquaredError
8dde3bbfcc Replace std::decay_t -> std::decay::type. Do not use lambda capture initializers. 2023-09-15 04:45:05 +00:00
MeanSquaredError
c65e660435
Fix handling of "-DSQLPP11_TESTS_CXX_STD=..." in tests/core/serialize/CMakeLists.txt (#525) 2023-09-15 06:41:58 +02:00
MeanSquaredError
25bca54ba7
Replace regex-based date/time parsing with manual parser (#520)
* Replace regex-based date/time string parsing with manually written parsing code.

* Add date/time parser tests.
2023-09-07 06:23:44 +02:00
MeanSquaredError
e7b50dadd4 Fix a false test failure in the sqlpp11.mysql.usage.DateTime caused by rounding down a timepoint. 2023-08-26 07:17:03 +00:00
MeanSquaredError
c550dca89e
Cleanup SQLite3 connector code (#514)
* Move the code for sqlpp::sqlite3::detail::prepared_statement_handle_t to include/sqlpp11/sqlite3/detail/prepared_statement_handle.h

* Whitespace

* Move the code for sqlpp::sqlite3::detail::connection_handle to include/sqlpp11/sqlite3/detail/connection_handle.h

* Rename sqlpp::sqlite3::serializer_t -> sqlpp::sqlite3::context_t

* Add const qualifiers to sqlpp::mysql::context_t::escape() and its parameter.

* Change method argument types "const std::string" -> "const std::string&"

* Remove a superfluous function that forwards the call to sqlite3_close().

* Move initialization of sqlpp::sqlite3::detail::prepared_statement_handle_t data members from the constructor into the member initialization list.

* Rename method parameter from CamelCase to snake_case.
2023-08-17 07:26:54 +02:00
MeanSquaredError
490259ee69
Cleanup the code of the MySQL connector (#509)
* Move the code for sqlpp::mysql::detail::connection_handle_t to include/sqlpp11/mysql/detail/connection_handle.h
* Move the code for sqlpp::mysql::detail::prepared_statement_handle_t to include/sqlpp11/mysql/detail/prepared_statement_handle.h
* Move the code for sqlpp::mysql::detail::result_handle to include/sqlpp11/mysql/detail/result_handle.h
* Rename sqlpp::mysql::detail::connection_handle_t -> sqlpp::mysql::detail::connection_handle
* Rename sqlpp::mysql::serializer_t -> sqlpp::mysql::context_t
* Add const qualifiers to sqlpp::mysql::context_t::escape() and its parameter.
* Rename class/struct types, variables and functions from CamelCase to snake_case.
* Remove a superfluous function that forwards the call to mysql_close().
2023-08-05 09:18:51 +02:00
MeanSquaredError
a085d730c9
Replace include guards with "#pragma once" in all header files and in the database model generator scripts. (#506) 2023-07-25 07:00:05 +02:00
MeanSquaredError
4295c29e9a
Fix serialization of PostgreSQL time data types (#504)
* Use a non-UTC timezone when testing the PostgreSQL timezone support.
* Fix serialization of time of day values for PostgreSQL
* Fix serialization of PostgreSQL values for "timestamp with time zone" and "time with time zone" fields.
2023-07-24 06:40:18 +02:00
MeanSquaredError
dff8c23b22
Connection pools (#499)
Add support for connection pooling

* Add support for connection pooling to the core code.
* Add support for PostgreSQL connection pooling with tests.
* Add support for SQLite3 connection pooling with tests.
* Add support for MySQL connection pooling with tests.
2023-07-17 06:14:23 +02:00
MeanSquaredError
26280d2678
gcc warnings (#496)
* Enable std::move() by using std::string instead of const std::string&

* Fix dangling references.
2023-06-28 06:32:39 +02:00
Carel
babd420ecb
ddl2cpp command line argument for custom types (#491)
* ddl2cpp command line argument for custom types

- Updated the ddl2cpp script to allow custom/extended types through external csv file
- Had to re-order the script to allow the command line to be parsed before setting up the parser
- Updated README

* Test for the command line argument

- Script test only for now

* Test the custom type argument

- Firs a negative test
- Last a positive test and compile test against the generated output

* Expand the test

- Ensure built in types still work
- Check capitilisation
- Ensure more than one custom works
- Check type with spaces

---------

Co-authored-by: Carel Combrink <carel.combrink@vastech.co.za>
2023-06-22 07:06:00 +02:00
Carel
eac9a6e5e3
Const connection config (#494)
- The postgres connection does not change the connection_config thus passing it as const.
- Implies 'thread safety' when using the same config for multiple connections

Co-authored-by: Carel Combrink <carel.combrink@vastech.co.za>
2023-06-20 06:28:22 +02:00
MeanSquaredError
a72b172a52
Treat PostgreSQL time values as being in UTC time zone (#487)
* When inserting values into "timestamp with time zone" fields treat the value as being in the UTC time zone.

* Simplify parsing of PostgreSQL date/time responses by using regular expressions. Always convert response times with time zone to UTC.

* Add tests which check if timestamp and date fields are treated as having a UTC time zone.

* Clarify the test comments.
2023-06-16 06:57:19 +02:00
Matthijs Möhlmann
38aba217d4 std::string_view should also be assignable in prepared statements 2023-04-03 06:16:57 +02:00
Bernd Lörwald
9412851408
#471 serializers: ensure float precision (#472)
* value: add missing includes
* mysql, sqlite3: use explicitly *out* stringstreams for serialization
* postgresql: fix: use max_digits10 instead of digits10
* detail: add float_safe_ostringstream, ensuring floats are serialized with enough precision
* mysql, postgresql, sqlite3, tests: fix: set float-precision for all streams
* run clang-format on changed files
* inline remove_cvref.h
* replace unspecific "wrapper" with concrete type name
* tests: split connector specific tests out of serialize/Float
2023-02-18 08:10:50 +01:00
Roland Bock
64d16bfee0 Cleanup parens for ANY and SOME 2023-02-05 09:31:30 +01:00
Roland Bock
0731a8597d Cleanup parens for EXISTS 2023-02-04 10:21:54 +01:00
Roland Bock
2d3967a0b3 Cleanup braces for IS_NULL and IS NOT NULL 2023-02-04 10:12:55 +01:00
Roland Bock
1c4f1f61c8 Allow TRIM to be used with sub selects 2023-02-04 09:05:04 +01:00
Roland Bock
3fba3e721e Add UPPER and LOWER
This is replacing and extending #456.
2023-02-04 08:57:17 +01:00
Roland Bock
82758a2046 Add missing braces to aggregatedfunctions with sub select #469
Also allow MIN and MAX to be used with DISTINCT.
2023-01-29 14:39:07 +01:00
Roland Bock
673b07361b Add missing braces to SUM with sub select #469 2023-01-29 12:57:02 +01:00
hwhsu1231
2aa9797117 style: Align CMake files with 4 spaces indent 2022-11-26 08:32:46 +01:00
Roland Bock
4be8b9f654 Add example for #448 2022-06-20 06:58:51 +02:00
Jürgen Hunold
892e680a73 Add parser self-test to auto test suite 2022-06-08 06:35:39 +02:00
Roland Bock
57077cd32b Add standalone insert_columns function (#76)
This allows for multi-row INSERT OR IGNORE
2022-06-06 10:15:28 +02:00
Roland Bock
256429730a Fix CMake warnings (CMP0115) 2022-06-06 10:14:01 +02:00
Roland Bock
f5be4095ae Allow parameter in having clause, see #443
Disallow mixing aggregate and non-aggregate columns in select, too.
2022-05-22 15:05:58 +02:00
Carlitxxx86
1e7f4b98c7 Added OR REPLACE clause 2022-04-25 06:37:40 +02:00
Carlitxxx86
92fa9d365d Added sample table definitions for System-Versioning
Both with implicit and explicit column definition.
2022-04-22 06:21:24 +02:00