- All notable changes to this project are documented in this file.
- The format is based on Keep a Changelog.
- This project adheres to Semantic Versioning.
1.16.2 (2024-12-18)
1.16.1 (2024-12-16)
- handle undefined DEBUG (#942) (dd2da3a), closes #941
- only expand partial foreign key if explicitly requested (#916) (96911ad)
- quoted mode (#937) (9e62b22)
- sort property is case insensitive (#924) (2c72c87)
- wildcard expand with aggregation (#923) (bbe7be0)
1.16.0 (2024-11-25)
- foreignKeys aspect on association may not be set (#903) (732a2f3)
- insert on uuid with default value (#911) (545e489)
session_context
,current_date
,current_time
andcurrent_timestamp
are treated as SAP HANA functions and are callable in upper case (#910) (50ebd10)- wrap values in array if it is object, so it can be spreaded (#882) (11f3e8b)
1.15.1 (2024-11-18)
1.15.0 (2024-11-14)
search
: ignore invalid path expressions inside@cds.search
(#849) (250edd5)- nested exists wrapped in xpr (7e50359)
1.14.1 (2024-10-28)
- deep delete for views (#496) (82154ef)
- properly support
default
,cds.on.insert
andcds.on.update
forUPSERT
queries (#425) (338e9f5) - SELECT cds.hana.BINARY (#870) (33c3ebe)
1.14.0 (2024-10-15)
- Improved behavioral consistency between the database services (#837) (b6f7187)
- Treat assoc-like calculated elements as unmanaged assocs (#830) (cbe0df7)
1.13.0 (2024-10-01)
- deep-queries: properly return insert result (#803) (8d800e2)
- dont use virtual key for
UPDATE … where (<key>) in <subquery>
(#800) (d25af70) - reject all path expressions w/o foreign keys (#806) (cd271a8)
1.12.1 (2024-09-03)
- deep
groupby
expand queries (#768) (5423cf3) - deep: prevent false unique constraint errors and combine delete queries (#781) (01de95f)
- logging: from changes in @sap/cds (#791) (1e8bf06)
- prepend aliases to refs within function args in on conditions (#795) (9b34314), closes #779
- prevent $search queries from throwing (#772) (cdf4d37)
1.12.0 (2024-07-25)
- add placeholder for string values (#733) (8136a45)
- for aggregated
expand
always set explicit alias (#739) (53a8075), closes #708 - quotations in vals (#754) (94d8e97)
1.11.0 (2024-07-08)
1.10.3 (2024-07-05)
- rewrite assoc chains if intermediate assoc is not fk (#715) (3873f9a)
- Support expand with group by clause (#721) (90c9e6a)
1.10.2 (2024-06-25)
1.10.1 (2024-06-19)
1.10.0 (2024-05-29)
1.9.2 (2024-05-28)
1.9.1 (2024-05-16)
1.9.0 (2024-05-08)
order by
: reject non-fk traversals of own columns in order by (#599) (3288d63)- Align all quote functions with @sap/cds-compiler (#619) (42e9828)
- assign artificial alias if selecting from anonymous subquery (#608) (e1a7711)
- avoid spread operator (#630) (a39fb65)
- flat update with arbitrary where clauses (#598) (f108798)
- improved
=
and!=
with valnull
(#626) (cbcfe3b) - Improved placeholders and limit clause (#567) (d5d5dbb)
- multiple result responses (#602) (bf0bed4)
- only consider persisted columns for simple operations (#592) (6e31bda)
- require
>= sap/[email protected]
(#627) (f4d09e2)
1.8.0 (2024-04-12)
expand
: Only accept on structures, assocs or table aliases (#551) (3248512)order by
: for localized sorting, prepend table alias (#546) (a273a92)- etag with stream_compat (#562) (b0a3a41)
- exclude
cds.LargeBinary
from wildcard expansion (#577) (6661d63) - Reduce insert queries for deep update (#568) (55e5114)
- Reduced count query complexity when possible (#553) (3331f02)
1.7.0 (2024-03-22)
- also support lowercase matchespattern function (#528) (6ea574e)
- forUpdate and forShareLock (#148) (99a1170)
- hana: drop prepared statements after end of transaction (#537) (b1f864e)
- hana: Add views with parameters support (#488) (3790ec0)
- orderby: allow to disable collations with @cds.collate: false (#492) (820f971)
- cqn2sql: Smart quoting of columns inside UPSERT rows (#519) (78fe10b)
- Getting rid of quirks mode (#514) (c9aa6e8)
- issue with reused select cqns (#505) (916d175)
- joins without columns are rejected (#535) (eb9beda)
- search: dont search non string aggregations (#527) (c87900c)
- search: search on aggregated results in HAVING clause (#524) (61d348e)
1.6.4 (2024-02-28)
cqn2sql
: smart quoting also for update statements (#475) (1688f77)INSERT
with firstundefined
value (#484) (c21e3c4)- Allow SELECT.join queries again with full infer call (#469) (5329ec0)
- optimize foreign key access in a join relevant path (#481) (5e30de4), closes #479
1.6.3 (2024-02-20)
cqn4sql
: be robust against$self.<element>;
references (#471) (2921b0e)infer
: Always use srv.model (#451) (41cf4a2)- Throw 'new Error' instead of string on $search with multiple words (#472) (51be94d)
1.6.2 (2024-02-16)
- **
infer
:** unique alias for scoped subqueries (#465) (5dbaa8e) - Allow only for array of arrays as data for plain SQL (#449) (22e1c43)
- dont insert structured elements (#461) (f3f688d)
- ignore virtual keys in UPSERT(#463) (49adbf3)
- INSERT entries containing undefined values (#453) (d3aad75)
- select without columns from unknown entity (#466) (eb857de)
1.6.1 (2024-02-05)
1.6.0 (2024-02-02)
- Add fallback for @cap-js/hana for unknown entities (#403) (e7dd6de)
- SELECT returns binaries as Buffers (#416) (d4240d5)
- SELECT returns LargeBinaries as streams unless feature flag "stream_compat" is set (#251) (8165a4a)
- strict mode to validate input for
INSERT
,UPDATE
andUPSERT
(#384) (4644483) - Support Readable Streams inside INSERT.entries (#343) (f6faf89)
cqn4sql
: only transform list if necessary (#438) (8a7ec65)- always generate unique subquery aliases (#435) (c875b7d)
- consider
list
infrom.where
(#429) (3288e94) - cqn2sql: $user.locale refs (#431) (ec55276)
- cqn4sql: expand structured keys in on-conditions (#421) (b1e0677)
- Do not generate UUIDs for association keys (#398) (9970e14)
- enumeration issue with session context in @cap-js/hana (#399) (8106a20)
- make @cap-js/sqlite work with [email protected] (#422) (44c0a59)
- pass context of navigation for list within infix filter (#433) (0ca077f)
- Restore former deep upsert behavior / error (#406) (284b1e3)
- Skip virtual fields on UPSERTs (#405) (1a05dcb)
- sqlite date string compatibility parsing only for valid dates (#410) (2a8bb2d), closes #409
- UPSERT for @cap-js/hana for entities with multiple keys (#418) (9bbac6e)
1.5.1 (2023-12-20)
- cqn2sql: supporting calculated elements (#387) (2153fb9)
- do not rely on db constraints for deep delete (#390) (9623af6)
1.5.0 (2023-12-06)
- localized:
ref
s in subqueries infrom
are translated (#366) (cfe4897) - wrong odata count in filter with groupby (#352) (70690a1)
1.4.0 (2023-11-20)
UPDATE
/DELETE
: Enable path expressions for improved data manipulation (#325) (94f0776)- temporal data: add time slice key to conflict clause (#249) (67b8edf)
- use place holders for update and delete (#323) (81472b9)
- align time function behavior (#322) (c3ab40a)
- calculated elements: path expressions in
func.args
withinxpr
(#321) (cee25e3) - Disconnect db service on shutdown (#327) (8471bda)
- non-fk access in filter conditions are properly rejected (#336) (4c948fe)
- search: check calculated columns at any depth (#310) (8fd6153)
1.3.2 (2023-10-13)
1.3.1 (2023-10-10)
- Error message for
search
with multiple arguments. #265
INSERT.into(...).rows/values()
is not allowed anymore without specifying.columns(...)
. #209- Deep deletion uses correlated subqueries instead of materializing the to be deleted object before. #212
- Various fixes for calculated elements on read. #220 #223 #233
- Don't release to pool connections twice. #243
- Syntax error in
matchesPattern
function. #237 - SELECTs with more than 50 columns does not return
null
values. #238 #261
- Association expansion in infix filters. #213
- support for calculated elements on read. #113 #123
- support for managed associations with default values. #193
- introduced new operator
==
which translates toIS NOT DISTINCT FROM
. #164
- resolved a type error which occured in some cases for deeply nested
expand
s. #173 - path expression traversing non-foreign-key fields within infix filters are now properly rejected for
exists
predicates. #181 - CQL functions: In the
args
of theconcat
function anxpr
is now wrapped in parentheses. #196 - Make
UPDATE
andofarray
typed column compatible. #184 - Ensure that
INSERT
withrows
always inserts into the correct column. #193 - Allow
DateTime
columns to compare against their returned value. #206 - Deep Insert using backlink associations as key #199.
UPDATE
with path expressions do not end up in a dump anymore. Instead, a proper error message is emitted.UPDATE
is only noop if it does not include an element annotated with@cds.on.update
.SELECT
with'*'
that is not expanded creates now a clearer error when the column name is required.SELECT
with plain SQL statements will return correct result regardless of casing.- View resolving for streams.
- Paths addressing a column of the query via
$self.<column>
ingroup by
/order by
,having
orwhere
are now correctly substituted. - Mapping for OData
average
function to ANSI SQL compliantavg
function.
- Initial Release