Skip to content

Tags: rbock/sqlpp23

Tags

0.70

Toggle 0.70's commit message
Major release

Breaking changes:

- sqlpp23-ddl2cpp changes:
  - merged `--path-to-custom-types` and `--path-to-cpp-types` into `--path-to-custom-type-mapping`\
    This can now map SQL types and columns to C++ types, see [custom type mapping](/docs/custom_type_mapping.md), #130, #115
  - renamed `--postgresql-schema` to `--strip-sql-schema`, #117

Other changes:

- add `.nulls_first()` and `.nulls_last()` support to sort expressions, #91
- add factory function to construct `dynamic_t` from a value, #112
- add constructor to construct `dynamic_t` from `std::nullopt`, #112
- remove factory functiom to construct dynamic from an optional (this was never used in tests and I suspect it was never used in user code). If you used it, please use `condition ? dynamic(value) : std::nullopt` instead.
- sqlpp23-ddl2cpp:
  - major cleanup of annotation parsing code
  - unit tests extracted into separate file, #119
  - more idiomatic code, e.g. by using logging and unittest modules, #120
  - much better parsing error messsage (at least for the cases I tested :-)), #129
  - added `--path-to-custom-template` in case you need to deviate from the default templates for headers or modules, #131

0.69

Toggle 0.69's commit message
Maintenance release

Fix compilation error in gcc-15 and higher, #111

0.68

Toggle 0.68's commit message
Major release

Highlight:

Straight-forward support for mapping columns to custom stypes is huge
for type safety, see [docs](/docs/recipes/custom_types.md), #106

Breaking changes:

- Add log_category parameter to log function, #86
- verbatim_clause replaces verbatim if used as a clause in a custom query
- insert_into(t).columns() does not support dynamic columns any more.
  - Instead, add_values supports dynamic assignments which fall back to DEFAULT assignment if the dynamic condition is false.
- sqlpp23-ddl2cpp changes:
  - command-line option `--path-to-datatype-file` was renamed to `--path-to-custom-types`
  - renamed some base types in custom types file to match the corresponding sqlpp23 data types:
    - integer -> integral
    - date_time -> timestamp
- forbid order_by, limit, offset, and for_update in union arguments (while mysql and postgresql would allow order_by, limit, and offset if the arguments and enclosed in parentheses, these clauses are not allowed in sqlite3 and parentheses aren't allowed either), #83
  - add order_by, limit, and offset to union expressions, e.g. `lhs.union(rhs).order_by(t.id).limit(10).offset(10)`, #83
- forbid expressions that require tables in limit and offset, e.g. `limit(t.id)`

Other changes:

- add user-defined literal to allow to create a nametag provider from a string literal, e.g. used like this `foo.as("left"_alias);`, #107
- add .as<"my_name">() overload (requires C++26 with reflection), #99
- deprecate result_row_t::as_tuple
- new as_tuple(const result_row_t&)
- new get_sql_name_tuple(const result_row_t&), #72
- sqlpp23-ddl2cpp changes:
  - if an error is found in the custom types file, the program exits with error code 30
  - base types in the custom types file should use `snake_case`, although the old `CamelCase` is still supported for backwards compatibility
  - documented the format of the custom types file
  - recognize and process "ALTER TABLE...ALTER COLUMN...SET DEFAULT" commands, which improves processing of pg_dump output scripts.

0.67

Toggle 0.67's commit message
Module support

- Basic support for modules, see [docs](/docs/modules.md), #30
- `core/name/create_name_tag.h` is now a stand-alone header, #30
- Revamped commandline switches for `sqlpp23-ddl2cpp`, see [docs](/docs/ddl2cpp.md)
- Instead of `cte(sqlpp::alias::a)`, you now have to call `sqlpp::cte(sqlpp::alias::a)`
- Support comparison member functions for comparison expressions, e.g. you can now order by comparison results, #39
- order_by allows duplicate expressions, #39
- Install modules into `<prefix>/modules/sqlpp23`, #58

0.66

Toggle 0.66's commit message
First release of sqlpp23

It is tagged 0.66 as it is a continuation from sqlpp11-0.65.

Major differences for library users are documented in
docs/differences_to_sqlpp11.md

Beyond that, the switch to C++23 makes the library easier to maintain,
easier to extend, and (I think) easier to read. One of the nicest
features of C++23 in this regard is "Deducing this" (P0847R7) as it
makes CRTP significantly simpler to write and reason about.

See for instance

- statement_t: include/sqlpp23/core/query/statement.h
- all clauses: include/sqlpp23/core/clause/*.h

0.64

Toggle 0.64's commit message
Connection Pool and cleanup

Connection Pool:
- Connection pools (#499)
- Connection pools documentation and example (#533)

Smaller features:
- Add connection methods is_connected() and ping_server() (#528)
- Add sqlpp::compat::make_unique (#527)

Cleanup:
- Multiple code cleanups, in particular date/time code (e.g. #509, #511, #514, #517, #520)
- Replace include guards with "#pragma once" (#506)

0.63

Toggle 0.63's commit message
Fix brace initialization, #498

0.62

Toggle 0.62's commit message
Bugfixes and cleanups

Many fixes, including

Core & Connectors:
   - Added `OR REPLACE` clause.
   - Be stricter about not mixing aggregate and non-aggregate expressions
   - Parameters for `HAVING`
   - Multi-row `INSERT OR IGNORE`
   - Corrected parenthesis for several functions
   - Allow `DISTINCT` in `MIN` and `MAX`
   - Added `UPPER` and `LOWER`
   - #471 serializers: ensure float precision (#472)

ddl2ccp
  - Partial rewrite of ddl2cpp including some unit tests
  - Support for MariaDB GENERATED and PERIOD

Documentation
  - multiple updates

0.61

Toggle 0.61's commit message
Massive refactor and cleanup release

The changes below require git/build rules to be changed.
I am expecting the result to be considerably simpler, though.
It will also be much simpler to make changes to the library or
individual connectors now (most of the misc changes below would
have been much harder to do with the former multiple repos).

Some of the misc changes below might break existing code in very
rare cases (I am aware of exactly one).
Happy to help fixing those :-)

Connector libraries
 - Moved connector libraries for mysql/postgresql/sqlite3 into the sqlpp11 repository
 - Made connector libraries header-only
 - Added `USE_SYSTEM_DATE` cmake option (#372)

Documentation:
 - Created docs directory (#364)
 - Removed wiki pages
 - Document multi_insert for time_point columns (#367)

Fixes:
 - Several DateTime fixes for mysql
 - Add order_by and limit for mysql remove and update
 - Added shift left and shift right operators.
 - Added blob support for postgresql
 - Support MySQL connect timeout option

Misc:
 - Replace serializer_t
 - Remove multi_column.
 - Remove tvin
 - Remove rhs_wrap
 - Remove _is_trivial from *_operand
 - Add is_equal_or_null(col, some_value_or_null)
 - Remove variations of serialization from interpretable
 - Remove null_is_trivial_value
 - Remove table::ref (see #345).
 - Remove same-name check for result columns

0.60

Toggle 0.60's commit message
Release 0.60

* Add date as a dependency, make fetch friendly
* Update travis
* fixed #342: ambiguous comparison operators (c++20)
* Add support for parameterized_verbatim
* Add some MYSQL types to the ddl2cpp script