0
0
mirror of https://github.com/rbock/sqlpp11.git synced 2025-01-14 01:37:58 +08:00

1517 Commits

Author SHA1 Message Date
vaijns
1046bde423 Add SQL standard functions CURRENT_DATE, CURRENT_TIME and CURRENT_TIMESTAMP 2024-12-07 14:00:16 +01:00
vaijns
b445f24b24 Remove unnecessary floor() when binding time_of_day parameter 2024-12-07 13:15:33 +01:00
vaijns
e3f676079b Add tests for binding time_of_day parameters and results with SQLite3 2024-12-07 13:15:33 +01:00
vaijns
d0cdaae972 Support binding time_of_day parameters with SQLite3 2024-12-07 13:15:33 +01:00
vaijns
542f091f2f Support binding a result of type time_of_day with SQLite3 2024-12-07 13:15:33 +01:00
Roland Bock
f18f595a48 Update README.md
Co-authored-by: Kai Pastor <dg0yt@darc.de>
2024-09-25 08:12:58 +00:00
Kai Pastor
fd5e612cda Update vcpkg section of README.md
Don't advertise the connector ports. (Legacy.)
Indicate that a database feature must be selected.
2024-09-25 08:12:58 +00:00
Kai Pastor
30042c075f Fix find_package_handle_standard_args 2024-09-24 04:50:40 +00:00
margaretselzer
e99f50d803 SQLite3: Add test for execute() running a prepared_statement 2024-09-18 06:16:56 +00:00
Marcell Egyed
b99e1b0e7d SQLite3: Enable execute() to run prepared_statements
Limit execute to run only non-select statements.
(Note: Does not apply to raw sql string select queries).
2024-09-18 06:16:56 +00:00
Marcell Egyed
fc23782369 Add argumentless overload for get_sql_name()
Comes handy with template metaprogramming.
2024-09-11 09:55:48 +00:00
MeanSquaredError
a710e8bd89 Rename macro CXX_STD_VER -> SQLPP_CXX_STD 2024-09-04 04:39:49 +00:00
MeanSquaredError
f56564d632 Replace -__cplusplus with CXX_STD_VER, because the latter works correctly with MSVC. 2024-09-04 04:39:49 +00:00
MeanSquaredError
b100ede72e Move the CXX_STD_VER macro to a separate header file. 2024-09-04 04:39:49 +00:00
MeanSquaredError
633710aa93 When building for C++20 or newer, result_t::iterator is an std::input_iterator. Otherwise (C++17 or older) it is a LegacyInputIterator. 2024-09-03 04:42:08 +00:00
MeanSquaredError
f983abcfc0 Remove structure sqlpp::iterator_category. 2024-09-03 04:42:08 +00:00
MeanSquaredError
28dac3a3d3 Make result_t::iterator default-constructible. 2024-09-03 04:42:08 +00:00
MeanSquaredError
5224d6a733 Replace reference wrapper with pointer in result_t::iterator, preparing for support for default initialization. 2024-09-03 04:42:08 +00:00
MeanSquaredError
0a2765d588 Make the result_t::iterator::operator++(int) return void in order to fix a bug and preserve compatibility with C++20 ranges. 2024-09-03 04:42:08 +00:00
Roland Bock
5564584799 Provide code sample for #587 2024-08-13 07:04:36 +02:00
Roland Bock
46cffc8398 Ignore trailing spaces in sqlite3 statements, #585 2024-07-26 14:13:11 +02:00
Roland Bock
09a98736d7 Fix CRTP for parameterized_verbatim, #584 2024-07-24 06:19:59 +02:00
Roland Bock
505adb546a Fix incorrect for_update function, #583 2024-07-23 20:58:25 +02:00
Roland Bock
d6f5e498b9 Fix incorrect expressions for paramterized_verbatim, #584 2024-07-23 20:47:31 +02:00
Roland Bock
166b01a32f Fix missing includes, #578 2024-06-21 21:54:19 +02:00
Andrey Egorov
e6bd90c489
MySQL SSL & read_timeout options, and bind blob result bugfix (#577) 2024-06-19 18:32:17 +00:00
MeanSquaredError
f6cb4d311a ddl2cpp: Add tests for the column isPrimaryKey property. 2024-06-12 20:22:06 +02:00
MeanSquaredError
ffd6618e58 Treat "PRIMARY KEY" columns as not nullable. 2024-06-12 20:22:06 +02:00
MeanSquaredError
3497e5891d Improve the tests for invalid data types. 2024-06-12 07:25:19 +02:00
MeanSquaredError
43fa5c445c ddl2cpp: Require word breaks when parsing SQL keywords. 2024-06-12 07:25:19 +02:00
MeanSquaredError
8797dfd79e Recognize serial2, serial4 and serial8 types when parsing SQL definitions in the ddl2cpp script. 2024-06-11 06:36:13 +02:00
Roland Bock
b92a9a7656 Fix require_insert generation in sqlite2cpp.py #569 2024-04-25 06:58:57 +02:00
Roland Bock
ac9d0b4417 Update the documentation for NULL #568 2024-04-13 08:56:57 +02:00
JoyBinY
637afd05ae Update FindMariaDB.cmake
Users can use -DCMAKE_LIBRARY_PATH=${INSTALL}/lib without needing to specify mariadb separately like -DCMAKE_LIBRARY_PATH=${INSTALL}/lib/mariadb
2024-04-10 06:27:41 +02:00
Roland Bock
75ce4f7b35
Update Select.md
Added missing where conditions and documented `.unconditionally`
2024-04-07 10:10:05 +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
dccf3438d3
Add a missing break to the switch case that handles PostgreSQL errors 40XXX. (#552) 2024-01-06 08:41:48 +01:00
MeanSquaredError
0cc45bd790
PostgreSQL exceptions for serialization_failure and deadlock_detected (#551)
* Add the exception sqlpp::postgresql::serialization_failure
* Add the exception sqlpp::postgresql::deadlock_detected
2024-01-05 09:02:32 +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
3474a4fa5d Add missing includes, #548 2023-12-26 08:30:24 +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
5c673603c3 Showcase alias of column name in sub-select, see #542 2023-11-18 12:46:13 +01:00
MeanSquaredError
a1baba0ab7 Fix warnings in Python regexes by adding missing backslashes. 2023-11-17 08:52:00 +00:00
fed
7a21ab63ee Fix build on x86 2023-11-16 17:41:39 +00: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
9e19911ada Fix compile issue for VS2015.3 (#536) 2023-10-21 09:20:07 +02:00
Roland Bock
96fb4d7894 Add comparison operator serialization tests 2023-10-14 09:03:46 +02:00
Stanislav Korolev
7b755b68ad Fix warning for greater_equal operator. 2023-10-14 07:02:10 +00:00
Roland Bock
50aa733fec [mysql] Remove (auto-)reconnect
MySQL 8.0.34 deprecates `MYSQL_OPT_RECONNECT`. As discussed in #530,
this commit is removing library support for (auto-)reconnect.

It is of course still possible to reconnect directly using the native
handle.
2023-10-08 11:34:59 +02:00
MeanSquaredError
7f04435576
Connection pools documentation and example (#533)
* Add an example of using a connection pool.

* Add documentation about the connection pools. Expand the documentation about multi-threading issues.
0.64
2023-10-03 09:45:21 +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
0bddd3c739 Rename head/tail to back/front
_head used to represent the position of the next push_back()
and _tail used to represent the position of front().

This CL renames them to avoid confusion.
2023-10-01 18:35:08 +02:00
Roland Bock
4616450af1 Simplify logic for circular_buffer<T>::set_capacity 2023-10-01 15:10:15 +02:00
Roland Bock
ea9bd9ee32 Add tests for circular buffer 2023-10-01 15:09:53 +02:00
Roland Bock
1b074b7f62 clang-format circular_buffer.h 2023-10-01 10:00:29 +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
1cd47c77dd
Move method definitions inside corresponding classes (#521)
* Move the method definitions of sqlpp::normal_connection inside the class.
* Move the method definitions of sqlpp::pooled_connection inside the class.
* clang-format include/sqlpp11/connection.h
* clang-format include/sqlpp11/connection_pool.h
2023-09-01 06:19:04 +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
348511d078
A couple of minor cleanups in the PostgreSQL connector (#518)
* Replace ()-init with {}-init

* Move the method definitions for sqlpp::postgresql::detail::connection_handle inside the class.
2023-08-23 07:19:06 +02:00
MeanSquaredError
d0dc081625
Unify date/time value parsing in connectors (#517)
* Move the PostgreSQL date/time parsing code to common functions in sqlpp::detail

* Use the common date/time-parsing functions to parse the MySQL date/time results.

* Use regular expressions to parse date/time strings in the SQLite3 connector
2023-08-20 10:39:53 +02:00
MeanSquaredError
fdbfbc345e Replace ()-initialization with {}-initialization in the SQLite3 connector code. 2023-08-19 07:30:13 +00:00
MeanSquaredError
f7ad116ced Change method parameter type "const std::string" -> "const std::string&" 2023-08-17 05:28:16 +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
4a9da95fda
Use brace-style initialization wherever possible. (#512)
Applied to the PostgreSQL connector.
2023-08-10 15:02:12 +00:00
MeanSquaredError
d800f4d6fa
Cleanup the code of the MySQL connector (#511)
* Move the method definitions for sqlpp::postgresql::detail::statement_handle_t inside the class.

* Move the method definitions for sqlpp::postgresql::detail::prepared_statement_handle_t inside the class.

* Move the method definitions for sqlpp::postgresql::prepared_statement_t inside the class.

* Move the method definitions for sqlpp::postgresql::::Result inside the class.

* Remove superfluous inline specifier from the in-class method definitions of sqlpp::postgresql::Result.

* Remove unused method declaration sqlpp::postgresql::Result::hasError()

* Move the method definitions for sqlpp::postgresql::bind_result_t inside the class.

* Move the method definitions for sqlpp::postgresql::connection_base inside the class.

* Add a comment explaining why sqlpp::postgresql::context_t::escape() is defined out-of-class.

* Remove incorrect comment about forward declaration

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

* Replace "std::string" parameters with "const std::string&".

* Remove superfluous detail:: namespace qualification.

* Rename class/struct types, variables and functions from CamelCase to snake_case.
2023-08-07 17:37:59 +00:00
MeanSquaredError
c03ac660ee
Use brace-style initialization wherever possible. (#510) 2023-08-07 07:37:29 +02:00
Roland Bock
37739bd2d7 Add missing template parameter
This fixes a compiler error for C++11/14
2023-08-06 10:18:59 +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
3c598cd0b2
Fix building with sqlcipher (#508)
* Move cmake/Find*.cmake -> cmake/modules/Find*.cmake
* Add cmake/modules/FindSQLCipher.cmake from sqlpp17
2023-07-30 10:12:59 +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
Orange Cheers
b548cdc72d
Fix typo. (#505) 2023-07-25 06:51:33 +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
4a1ed2c02e
Fix serialization of time points for MySQL. (#503) 2023-07-23 10:40:27 +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
Roland Bock
a50d719364 Fix brace initialization, #498 0.63 2023-06-30 06:39:46 +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 0.62 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
Bernd Lörwald
dfa297f069 ci: enable ctest output on failure 2023-02-11 09:04:45 +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
Bernd Lörwald
7379e0001f ddl2cpp: allow inline column constraints ("PRIMARY KEY") but don't break auto-id 2023-01-31 06:32:00 +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