Changelog
May 2022
Added
- [vscode-cds@4.5.6] file icon for CDS files
- [vscode-cds@4.5.5] support syntax highlighting for escape sequences in template strings
- [cds.java@1.24.0] Full support for the Spring Boot Developer Tools allowing much easier and faster development. This includes instant code replacement in test applications deployed to the cloud.
- [cds.java@1.24.0] The goal
watch
of thecds-maven-plugin
supports the Spring-Boot Developer Tools for a quicker application restart after changes in the CDS model. - [cds.java@1.24.0] Added a new event
ApplicationStopped
to theApplicationLifecycleService
, which can be used to stop background tasks. Note, that this event is not guaranteed to be emitted, when the application terminates. It is first and foremost intended to stop background tasks when Spring closes its ApplicationContext. - [cds.java@1.24.0]
UserInfo.getAdditionalAttributes()
now contains all token claims such asemail
oraud
in case of IAS authentication. - [cds.java@1.24.0] Spring’s
@Order
annotation on event handler classes is now respected and event handlers are registered in that order. - [cds.java@1.24.0] Enhanced annotations
@cds.on.insert
and@cds.on.update
with following features:- Static values can be assigned
- Arbitrary user context variables can be assigned, e.g.
@cds.on.insert: $user.given_name
. The context variables must be mapped from the exposed SAML assertion attributes.
Changed
- [cds-dk@4.9.4] Include
@sap/cds
5.9.4 - [cds-dk@4.9.4] Bump
axios
to latest (CVE-2022-1214) - [vscode-cds@4.5.6] updated included cpaire docs
- [cds.java@1.24.0] The CDS model is no longer reloaded every time when opening a new Request Context. Only the outmost Request Context initially loads the CDS model and propagates it to all inner Request Contexts. The only scenario where the model is still reloaded is when the new Request Context uses a different tenant. This scenario also requires a new ChangeSet Context to be opened in addition.
- [cds.java@1.24.0] If a ChangeSet Context is opened without an existing Request Context the latter is opened implicitly as well.
- [cds.java@1.24.0] The
$metadata
endpoints now stream the original EDMX directly, without serializing the internal Olingo EDMX representation. Beside much better performance this allows to make use of OData dynamic expressions now. - [cds.java@1.24.0] HTTP Headers from the
$batch
request are now propagated to the inner requests, if they do not yet exist there. This means those headers are now available through thecontext.getParameterInfo().getHeaders()
method, when processing a request defined in a$batch
request. - [cds.java@1.24.0]
UserInfo.getName()
now returns the subject of the token (propertysub
) in case of IAS authentication. - [cds.java@1.24.0] When a new request context is opened with a modified
ParameterInfo
, null values and empty strings as correlation id in theParameterInfo
object are not interpreted as an intention to overwrite an existing correlation id in the MDC, anymore, and therefore are silently ignored
Fixed
- [vscode-cds@4.5.5] find references could have shown wrong entries from localized context
- [cds.java@1.24.0] Fixed a bug, causing the audit log service to send a message without a tenant, instead of properly using the provider tenant.
- [cds.java@1.24.0] Fixed a bug, causing issues with OData V4 URLs, which contained the service path also in other parts of the URL (e.g. the domain).
- [cds.java@1.24.0] Fixed a bug, causing issues with OData V4 URLs, which contained filters on properties that have reserved identifiers as prefix such as
INF
. - [cds.java@1.24.0] Fixed a bug introduced with version
1.23.0
, causing connection issues with MTX sidecar in context of DwC. - [cds.java@1.24.0] Key elements of type
String
that are annotated with@cds.on.insert: $uuid
now get a string representation of a UUID assigned. - [cds@5.9.5]
HDB_TCP_KEEP_ALIVE_IDLE
config - [cds@5.9.5] A combination of
!=
operator andor
inwhere
clauses of@restrict
annotations or when adjustingreq.query
in custom handlers (OData services only) - [cds@5.9.5] Programmatic calls to bound actions/functions do have keys in
req.data
again if compat flagcds.env.features.keys_in_data_compat
is set - [cds@5.9.4] Error messages are improved if no
passport
module was found or if noxsuaa
service binding is available - [cds@5.9.4] Issue fixed for
srv.get()
. It was returningTypeError
in plain REST usage for external services, e.g.srv.get('/some/arbitrary/path/111')
- [cds@5.9.4] Allow unrestricted services to run unauthenticated, removing the
Unable to require required package/file "passport"
error. Totally not recommended in production. Note that though this restores pre 5.9.0 behavior, this will come again starting in 6.0. - [cds@5.9.4] Audit logging of sensitive data in a composition child if its parent is annotated with
@PersonalData.EntitySemantics: 'Other'
and has no data privacy annotations other than@PersonalData.FieldSemantics: 'DataSubjectID'
annotating a corresponding composition, for example:annotate Customers with @PersonalData : { DataSubjectRole : 'Address', EntitySemantics : 'Other' } { addresses @PersonalData.FieldSemantics: 'DataSubjectID'; } annotate CustomerPostalAddress with @PersonalData : { DataSubjectRole : 'Address', EntitySemantics : 'DataSubject' } { ID @PersonalData.FieldSemantics : 'DataSubjectID'; street @PersonalData.IsPotentiallyPersonal; town @PersonalData.IsPotentiallySensitive; }
April 2022
Changed
- [cds-dk@4.9.3]
cds init
uses latest0 Maven Java archetype version 1.23.1 for creating Java projects. - [cds-dk@4.9.3] Include
@sap/cds
5.9.3 - [cds-dk@4.9.2] Include
moment
2.29.2, fixing CVE-2022-24785 - [cds-dk@4.9.2] Include
@sap/cds
5.9.2 - [cds-dk@4.9.2] Include
@sap/eslint-plugin
2.3.5 - [cds-dk@4.9.1]
cds init
uses latest Maven Java archetype version 1.23.0 for creating Java projects. - [cds-dk@4.9.1] Include
@sap/cds
5.9.1 - [cds-dk@4.9.1] Include
@sap/cds-compiler
2.13.8 - [cds-dk@4.9.1] Include
@sap/eslint-plugin
2.3.4 - [eslint-plugin-cds@2.3.5] Catch root model compilation errors and do not try again on every file (-> long lint times for broken models)
- [eslint-plugin-cds@2.3.5] Add to lint reports with rules marked with ‘!’
- [eslint-plugin-cds@2.3.4] Only deduplicate model error messages when working within VS Code Editor
- [eslint-plugin-cds@2.3.4] Hide
no-dollar-prefixed-names
compiler warning message in VS Code Editor (already passed by lsp) - [vscode-cds@4.5.4]
CAP Release Notes
page now persists its state - [vscode-cds@4.5.3] consume
package.json
and.cdsrc.json
schemas from@sap/cds-lsp
- [vscode-cds@4.5.3] better error message in case
cds preview
could not compile a source file - [cds-mtx@2.5.5] Improved logging in the context of requesting tokens.
- [cds-mtx@2.5.4] If enabled via
cds.env.mtx.security.metadata-scope-checks
, the v2 CSN and EDMX APIs, as well as all metadata APIs are now scope-checked formtdeployment
. - [cds-mtx@2.5.4] Tokens sent to the command-line client are now reduced in scope for security reasons.
Fixed
- [cds-dk@4.9.3]
cds add cf-manifest
now uses the correctapplication
plan for thexsuaa
service - [cds-dk@4.9.3]
cds login
,cds activate
: correctly include response in auth errors - [cds-dk@4.9.3] The SAP HANA and MTA options in the project wizard in BAS now work again
- [vscode-cds@4.5.4] syntax highlighting in Business Application Studio
- [vscode-cds@4.5.3] no loner set NODE_ENV to production which resulted in
npm i
only installing prod dependencies - [cds-compiler@2.13.8] to.hdbcds/hdi/sql: Correctly handle
localized
in conjunction with@cds.persistence.exists
and@cds.persistence.skip
- [cds.java@1.23.1] The
cds-feature-auditlog-v2
now sends audit logs to the audit server in the context of the provider tenant if the tenant inUserInfo
isnull
. - [cds.java@1.23.1] The runtime now returns a server error with a meaningful error message when a transaction unexpectedly fails to open.
- [cds@5.9.3] Since 5.8.2
req.target
for requests likesrv.put('/MyService.entity')
is defined, butreq.query
undefined (beforereq.target
was also undefined). This was leading to accessing undefined, which has been fixed. - [cds@5.9.3] Custom actions with names conflicting with methods from service base classes, e.g.
run()
, could lead to hard-to-detect errors. This is now detected and avoided with a warning. - [cds@5.9.3] Typed methods for custom actions were erroneously applied to
cds.db
service, which led to server crashes, e.g. when the action was nameddeploy()
. - [cds@5.9.3] Invalid batch requests were further processed after error response was already sent to client, leading to an InternalServerError
- [cds@5.9.3] Full support of
SELECT
queries with operator expressions (xpr
) - [cds@5.9.2] i18n translation for errors did not work correctly in some cases
- [cds@5.9.2] Normalization in custom
getRestrictions
- [cds@5.9.2] Throw exception by
INSERT
into HANA queries if number of provided rows deviates from number of affected rows returned by hdb to prevent data losses - [cds@5.9.2] Handler detection for extended services
- [cds@5.9.2] Speed-up in localization handling
- [cds@5.9.2] Draft: navigation via an association to many from a non-draft enabled entity to a draft-enabled entity
- [cds@5.9.2] Limited support of
SELECT
queries with operator expressions (xpr
) - [cds@5.9.1] Function arguments might be escaped too often
- [cds@5.9.1] URL encoding for remote services for CQN queries
- [cds@5.9.1]
cds serve
during development again redirects URLs for UI apps in a folder with the same name as a service, so/foo/webapp
would redirect to/foo
again. This got broken in 5.8.3. - [cds@5.9.1] Endless loop in localization handling
- [cds@5.9.1] Ensure service impl while extending entity from the service
- [cds@5.9.1] Post-processing of custom draft queries
- [cds@5.9.1]
cds build
no longer omits unused CDS type definitions, leading to Java compiler errors - [cds-mtx@2.5.4]
MT_LIB_TENANT-
-prefixed tenants used by the Java runtime are now correctly ignored by thecds-mtx
sidecar. - [cds-odata-v2-adapter-proxy@1.8.16] Fix if elements are annotated with
@cds.api.ignore
- [cds-odata-v2-adapter-proxy@1.8.16] Abort file upload when limit is reached
- [cds-odata-v2-adapter-proxy@1.8.15] Remove internal repository reference
- [cds-odata-v2-adapter-proxy@1.8.15] Document that Singletons are not available in OData V2
- [cds-odata-v2-adapter-proxy@1.8.15] Ignore omitted elements annotated with0
@cds.api.ignore
- [cds-odata-v2-adapter-proxy@1.8.15] Support validated for absolute context urls via
cds.odata.contextAbsoluteUrl
. - [cds-odata-v2-adapter-proxy@1.8.15] Skip aggregation for measures with aggregation
#NONE
and#NOP
- [cds-odata-v2-adapter-proxy@1.8.15] Support
$count
aggregations for measures with aggregation#$COUNT
- [cds-odata-v2-adapter-proxy@1.8.15] Changed OData type mapping for
Edm.Byte
tocds.Integer
- [cds-odata-v2-adapter-proxy@1.8.14] Upgrade @sap/logging to fix vulnerability
- [cds-odata-v2-adapter-proxy@1.8.13] Remove peer dependency to prevent workspace failures
- [cds-odata-v2-adapter-proxy@1.8.12] Refactorings to support universal CSN
- [cds-odata-v2-adapter-proxy@1.8.12] Refactorings to support metadata prototype layering
- [cds-odata-v2-adapter-proxy@1.8.12] Include
search
in$apply
aggregations
March 2022
Added
- [cds-dk@4.9.0]
cds parse
as convenient shortcut tocds compile --flavor parsed
. - [cds-dk@4.9.0]
cds compile --to openapi
uses value of annotation@Common.Label
on entities, actions, and functions for operation tags, diagram includes non-primitive action and function import parameters. - [cds-dk@4.9.0]
cds add
now accepts--for <profile>
argument to create Node,js project configuration for a given profile - [cds-dk@4.9.0]
cds add approuter
allows for serving your application’s UI using SAP approuter. - [cds-dk@4.9.0]
cds add kibana-logging
adds Kibana-friendly logging in a more convenient way than having to manually alter the package.json. - [eslint-plugin-cds@2.3.3] Added new rule
no-dollar-prefixed-names
- [eslint-plugin-cds@2.3.3] Lint reports with rules marked with ‘!’ notify of rule compile errors
- [eslint-plugin-cds@2.3.3] Lint reports of any thrown errors can be exposed by
--debug
(includes stack) - [vscode-cds@4.5.2] new code-formatting options for
action
s andfunction
s:alignActionNames
(aligns names)alignActionReturns
(alignsreturns
keywords)
- [cds-compiler@2.13.0] CDL syntax:
- Allow to
extend E:elem
andannotate E:elem
instead of having to write deeply nested statements. - Enable
default
values as part of scalar type definitions. - The following
extend
syntax variants are now possible:extend … with elements { … } extend … with definitions { … } extend … with columns { … } extend … with enum { … } extend … with actions { … }
This syntax expresses how an artifact is extended instead of what is extended.
- Using
ORDER BY
in generic functions such as SAP HANA’sfirst_value
is now possible.
- Allow to
- [cds-compiler@2.13.0] Make API function
compileSources
accept CSN objects as file content - [cds-compiler@2.13.0] to.edm(x): Annotate view parameters with
@sap.parameter: mandatory
(V2) and@Common.FieldControl: #Mandatory
(V4). - [cds-compiler@2.13.0] to.sql/hdi/hdbcds: Introduce the annotations
@sql.prepend
and@sql.append
that allow inserting user-written SQL snippets into the compiler generated content. Changes in annotations@sql.prepend
and@sql.append
are now reflected in the output ofto.hdi.migration
. This enables CDS Build to produce.hdbmigrationtable
files translating such model changes into schema changes. - [cds-compiler@2.13.0] API: Lists of keywords for various backends are available as
to.<backend>[.<config>].keywords
, e.g.to.sql.sqlite.keywords
. - [cds-compiler@2.13.0] for.odata/to.edm(x): The draft composition hull is now also taking into account compositions in subelements.
- [cds.java@1.23.0]
@Core.ContentID
is now present on OData V4 error responses, allowing to correspond OData ChangeSet error messages with the request causing the error. - [cds.java@1.23.0] Improved the
AuthenticationInfo
API to grant easier access to raw authentication information such as JWT tokens. - [cds.java@1.23.0] The
AuthenticationInfo
can now be accessed from theRequestContext
andEventContext
and is provided as a Spring bean. It is also propagated to child threads when propagating theRequestContext
. - [cds.java@1.23.0] Introduced new pseudo-role
internal-user
which allows authorization for clients that share the same authentication secret as the server (e.g. same XSUAA instance). - [cds.java@1.23.0] Added default set of mock users reflecting the pseudo roles. They are named
authenticated
,system
,internal
andprivileged
and can be used with an empty password. - [cds.java@1.23.0] Added integration with Cloud SDK’s
RequestHeaderFacade
ensuring HTTP headers are propagated to Cloud SDK. - [cds.java@1.23.0] The goal
install-cdsdk
of thecds-maven-plugin
provides the new parameterarguments
to pass additional arguments to the command line. - [cds.java@1.23.0] Added properties
cds.auditlog.outbox
andcds.messaging.<service>.outbox
that control the usage of the (persistent) Outbox in Auditlog resp. Messaging services. - [cds.java@1.23.0] Added mTLS (x509 certificates) authentication support for XSUAA-based platform services: Service Manager, Enterprise Messaging, SaaS Provisioning and Auditlog.
- [cds.java@1.23.0] When using SAP HANA Cloud you can now enable a shared connection pool using property
cds.multiTenancy.dataSource.combinePools.enabled
without having to specify all database instances using propertycds.multiTenancy.dataSource.hanaDatabaseIds
. - [cds4j@1.27.0] Allow to explicitly turn off draft-enabled associations
- [cds4j@1.27.0] Support on condition resolution with Effective CSN
- [cds4j@1.27.0] Collectors to connect a stream of predicates with AND or OR
- [cds4j@1.27.0] Support new values for managed data (
@cds.on.insert
and@cds.on.update
)- [cds4j@1.27.0]
$user.locale
and$user.tenant
to set data from the user info - [cds4j@1.27.0]
$uuid
to automatically generate UUID values
- [cds4j@1.27.0]
- [cds@5.9.0] Enable custom audit logging implementation by subclassing or prepending
cds.AuditLogService
- [cds@5.9.0] Log authentication/authorization traces, for example, authentication strategy, and access control decisions to facilitate troubleshooting in debug mode.
- [cds@5.9.0] Bound functions and actions calls with odata-v2 from remote service
- [cds@5.9.0] Beta support for procedure calls with table output data (SAP HANA only)
- Both hdb and
@sap/hana-client
currently do not support parameter metadata for table output. To provide the functionality anyways, CAP must fetch the metadata itself. As this is not CAP’s expertise, the feature is only beta. - All parameters must be named or unnamed, that is
CALL EXAMPLE_PROC(PARAM_1 => ?,PARAM_2 => ?)
orCALL EXAMPLE_PROC(?,?)
- Both hdb and
- [cds@5.9.0] Alpha
cds.ApplicationService.getRestrictions(definition, event, user)
, which returns the applicable restrictions for the current request as follows:null
: unrestricted access[]
: no applicable restrictions -> no access[{ grant: '...', to: ['...'], where: '...' }, ...]
: applicable restrictions with grant normalized to strings- That is,
grant: ['CREATE', 'UPDATE']
in model becomes[{ grant: 'CREATE' }, { grant: 'UPDATE' }]
- That is,
- Promise resolving to any of the above (needed for CAS override)
- [cds@5.9.0] Internal model provider service can be used for obtaining dynamic csn including features and key user extensions
- [cds@5.9.0] Support insert of SQL snippets for HANA migration tables using @sql.append and @sql.prepend annotations.
- [cds@5.9.0] Support for the
@odata.draft.enclosed
annotation on associations targeted via navigation — previously only supported for$expand
- [cds@5.9.0] Pseudo role
internal-user
for technical user tokens acquired from own XSUAA instance - [cds@5.9.0] Include globally-installed cds-dk version in output of
cds version
. - [cds@5.9.0] Include version of cds-mtx in output of
cds version
, if available. - [cds@5.9.0] Feature toggle support in
cds build
for cloud deployments. Create language bundles and parsed CSN for all features.
Changed
- [cds-dk@4.9.0]
cds init
does not createVS Code
file exclusions anymore, so that.vscode/
and.gitignore
are visible by default, allowing easier editing of these files. - [cds-dk@4.9.0]
cds init
reports Maven archetype version in console if called with--add java
. - [cds-dk@4.9.0]
cds init
uses latest Maven Java archetype version 1.22.2 for creating Java projects. - [cds-dk@4.9.0]
cds import
modified documentation for namespace option. - [cds-dk@4.9.0]
cds import
does not create bound function imports key parameters in CSN for OData V2. - [cds-dk@4.9.0]
cds import
now when--keep-namespace
option is not given validates the file name and then converts it to complier supported format as service name . - [cds-dk@4.9.0] add new methods from
FsUtil
to typescript interface. - [cds-dk@4.8.2]
cds init
uses latest Maven Java archetype version 1.22.1 for creating Java projects. - [vscode-cds@4.5.2] removed obsolete code-formatting option
alignAsInElements
(calculated fields use=
now) - [cds-compiler@2.13.0] In query entities inside services, only auto-redirect associations and compositions in the main query of the entity.
- [cds-compiler@2.13.0] An element now inherits the property
notNull
from its query source (as before) or its type (like it does for most other properties);notNull
is then not further propagated to its sub elements anymore. - [cds-compiler@2.13.0] A structure element inherits the property
virtual
from its query source (as before), but does not further propagatevirtual
to its sub elements (semantically of course, but the CSN is not cluttered with it); there is a new warning if a previouslyvirtual
query entity element is now considered to be non-virtual. - [cds-compiler@2.13.0] Do not propagate annotation value
null
. The valuenull
of an annotation (anddoc
) is used to stop the inheritance of an annotation value. This means than other than that, a valuenull
should not be handled differently to not having set that annotation. - [cds-compiler@2.13.0] In the effective CSN, the structure type is only expanded if something has changed
for associations: the
target
(keys
does not change if thetarget
does not change) unmanaged associations as sub elements are not supported anyway. - [cds-compiler@2.13.0] In the effective CSN, “simple” type properties like
length
,precision
,scale
andsrid
are propagated even for a propagation via type. - [cds-compiler@2.13.0] Update OData Vocabularies: ‘Capabilities’, ‘Common’, ‘Core’, ‘UI’.
- [cds-compiler@2.13.0] to.sql:
- For SQL dialect
hana
referential constraints are now appended asALTER TABLE ADD CONSTRAINT
clause to the end ofschema.sql
. With optionconstraintsInCreateTable
constraints are rendered into theCREATE TABLE
statement. - Referential constraint names are now prefixed with
c__
.
- For SQL dialect
- [cds.java@1.23.0] Removed
RequestContextRunner.recalculateFeatureToggles()
without substitution.RequestContextRunner.featureToggles(FeatureTogglesInfo)
is only allowed when creating the initialRequestContext
of a request. The method throws an exception otherwise. - [cds4j@1.27.0] If the data of deep Insert or deep Update contains values of an associated entity but the (forward mapped) association does not cascade the Insert/Update operation, the relationship is established instead of throwing an exception
- [cds@5.9.0] Cleaned up
cds.env.requires
towards a consistent usage:- Moved all entries of
cds.requires
tocds.requires.kinds
→cds.requires
is empty now by default, but hascds.requires.kinds
as prototype, so e.g.cds.requires.sql
will still return a match. - Added support for db-specific
cds.requires.db.deploy-format
→ deprecatingcds.hana.deploy-format
(which is still supported for compatibility) - Introduced
cds.requires.kinds.hana-cloud
as{kind:hana, deploy-format:hdbtable}
→ to be used by default for production - Changed
cds.requires.audit-log
to be consistent to all other; also got moved tocds.requires.kinds.audit-log
, so it is no longer activated by default. - Added support for
cds.requires.foo: true
withfoo
being a preset/prototype entry incds.requires.kinds
→ allows to more easily switch on pre-configured services.
- Moved all entries of
- [cds@5.9.0] Update-managed properties (
@cds.on.update
) are always updated- Example:
UPDATE('Books').set({}).where({ ID: 1 })
leads to new modifiedAt and modifiedBy - Does not apply to nested entities that are only preserved by specifying their primary keys in the data
- Deactivate during two month grace period via compact feature flag
cds.env.features.update_managed_properties = false
- Example:
- [cds@5.9.0] Response no longer contains keys neither technical draft properties (e.g.
HasDraftEntity
orInProcessByUser
) in expanded data if they were not requested explicitly when usingcds.Service
API- Example:
> await srv.read('Authors', a => { a.name, a.books(b => { b.title }) }).where({ ID: 1 }) // -> "old behaviour" result [{ name: 'Emily Brontë', books: [{ title: 'Wuthering Heights', ID: 201 }] }] // -> "new behaviour" result [{ name: 'Emily Brontë', books: [{ title: 'Wuthering Heights' }] }]
- Technical draft properties are not automatically fetched also on a root level
- Deactivate during two month grace period via compat feature flag
cds.env.features.auto_fetch_expand_keys = true
- Example:
- [cds@5.9.0] Access control is checked in generic handlers (rather than handlers materialized on app startup)
- [cds@5.9.0] Expand restriction check moved to pre-before phase
- [cds@5.9.0] The active state of an entity is read instead of the draft state when navigating from a draft entity to a draft-enabled entity via an association.
- [cds@5.9.0] Authentication middleware is always mounted (used to be only for restricted services)
- [cds@5.9.0] Fiori preview now uses the Horizon theme
- [cds@5.9.0] ‘Preview’ links in generic index.html page no longer get the word preview appended automatically, allowing for more flexible naming. Link providers should make sure to add the preview word if necessary.
- [cds@5.9.0] Don’t throw error in GraphQL adapter if update mutation filter does not match any entries (to be consistent with delete mutations)
- [cds@5.9.0] Remote call of unbound action/function returns octet-stream instead of string by default
- [cds@5.9.0] Default pool’s behaviour has been changed from
FIFO
(queue) toLIFO
(stack). Can be changed in pool configuration. - [cds@5.9.0]
cds run/serve
now gracefully shuts down the HTTP server before exiting. Custom handlers for signals likeSIGTERM
orSIGINT
can now be processed. - [cds@5.9.0]
cds build
no longer createsCOMMENT
statements for HANA if doc comments are present in CDS models. The statements caused superfluous table migrations during HANA deployments.
Fixed
- [cds-dk@4.9.0]
cds compile --to openapi
now correctly treatsnull
and the empty string as function parameters. - [cds-dk@4.9.0]
cds bind --exec
no command output (STDOUT) displayed on Windows. - [cds-dk@4.9.0]
cds watch
now gracefully shuts down the live reload server before exiting - [cds-dk@4.9.0]
cds import
now generates correct csn for both OData V2 and V4 EDMX files where the EntityType has a BaseType entry. - [cds-dk@4.9.0]
cds import
now throws an error in case of missing Association Sets. - [cds-dk@4.9.0]
cds import
bug fixed for--force
flag. Now overwrites the correct file content. - [cds-dk@4.9.0]
cds import
fix will no longer capture unwanted annotations in the CSN for OData V4. - [cds-dk@4.9.0]
cds import
now support annotations for properties of typeType Definition
- [cds-dk@4.9.0]
cds import
fix for supporting valid datatypes in unbounded function imports for OData V4. - [cds-dk@4.9.0]
cds import
bug fixed for missing data imports for parameters with entity type not mapped to an entity set. - [cds-dk@4.9.0]
cds import
now supports properties with complex type for OData V4. - [cds-dk@4.9.0]
cds import
fix will now throw error if the key property of an entity is of typeCollection
for both OData V2 and V4 edmx. - [cds-dk@4.9.0]
cds bind --to hana
provides more comprehensive error message in case Cloud Foundryorg
orspace
are not set. - [cds-dk@4.8.2]
cds import
can now capture the data for any givenEntityContainer Name
for OData V4. Earlier it only worked when the name wasEntityContainer
. - [vscode-cds@4.5.2] saving a
cds
file now automatically refreshes all open previews for this file - [vscode-cds@4.5.2] Show Formatting Options Configuration
- showed empty samples editor
- editor no longer switches to typescript
- no longer ‘save changes’ popup when closing samples editor
- when not opened on existing file (CDS source or .cdsprettier.json) and workspace has multiple workspace folders, user has now to pick the workspace folder
- [vscode-cds@4.5.2] code formatting:
- separate post-annotation with blank
- remove erroneous newlines around cardinality and filter in
select
- separate projection items with newlines
- [vscode-cds@4.5.2] code completion for annotations now correctly handle e.g: @aaa.| entity
- [cds-compiler@2.13.6] to.hdbcds/hdi/sql: Correctly handle
localized
in conjunction with@cds.persistence.exists
- [cds-compiler@2.13.0] Properly resolve references inside anonymous aspects:
- references starting with
$self.
made the compiler dump. - a simple
$self
did not always work as expected (it represents the entity created via the anonymous aspect). - other references inside deeply nested anonymous aspects induced a compilation error.
- references starting with
- [cds-compiler@2.13.0] compiler:
()
insideORDER BY
clause was not correctly set. - [cds-compiler@2.13.0] parse.cdl: References in
ORDER BY
and filters are now correctly resolved. - [cds-compiler@2.13.0] Issue error when trying to introduce managed compositions of aspects in
mixin
s - [cds-compiler@2.13.0] Issue error in all cases for type references to unmanaged associations.
- [cds-compiler@2.13.0] Avoid dump when extending an illegal definition with a name starting with
cds.
. - [cds-compiler@2.13.0] to.sql/to.cdl/to.hdbcds/to.hdi: Render
cast()
insideORDER BY
,GROUP BY
andHAVING
properly. - [cds-compiler@2.13.0] to.sql/hdi/hdbcds:
$self
was incorrectly treated as a structured path step.- Correctly handle table alias in on-condition of mixin in
exists
expansion. - Correctly handle table
$self
references to aliased fields in on-condition of mixin association duringexists
expansion.
- [cds-compiler@2.13.0] to.edm: Don’t escape
&
as&
. - [cds-compiler@2.13.0] to.edmx: Escaping compliant to XML specification:
&
and<
are always escaped.>
is not escaped, unless it appears in text values as]]>
."
is escaped in attribute values only.- Control characters are always escaped.
- [cds-compiler@2.13.0] Ellipsis (
...
) in annotations in different layers but without base annotation now produces an error. The old but incorrect behavior can be re-enabled with optionanno-unexpected-ellipsis-layers
. - [cds.java@1.23.0] Fixed a NPE in Auditlog v2 handler in case of single tenant scenario (ST) and OAuth2 plan.
- [cds.java@1.22.2] Fixed a bug causing changes on draft entities to be incorrectly handled when performed over a to-one navigation property.
- [cds4j@1.27.0] Fix classloader issue with generated interfaces when using
spring-boot-devtools
- [cds4j@1.27.0] Code generator: Fix use of ‘$’ in doc comments
- [cds4j@1.27.0] Fix ClassCastException when selecting arrayed elements via static CDS QL builder
- [cds4j@1.26.2] HANA Search: In case a search operates on elements that are only supported with LIKE the search falls back to LIKE only for those elements and not for the whole statement. This can improve the scalability of a search operations significantly.
- [cds4j@1.26.2] HANA Search: Resolve search over elements in views with UNION to LIKE instead of CONTAINS.
- [cds4j@1.26.2] HANA Search: Resolve search over elements typed with LargeString (NClob) with LIKE instead of CONTAINS.
- [cds4j@1.26.2] HANA Search: Resolve search over elements in views annotated with @cds.persistence.exists: true with LIKE instead of CONTAINS.
- [cds@5.9.0] Logging of failed requests to remote services was incompatible to Elasticsearch
- [cds@5.9.0]
cds serve --project <dir>
didn’t serve static web resources from<dir>
- [cds@5.9.0]
cds serve -p <dir>
was meant to be a shortcut forcds serve --project <dir>
- [cds@5.9.0] Messaging: Use correct kind for logging
- [cds@5.9.0] Incorrect return values for update-managed properties (
@cds.on.update
) of child entities that were not changed in request - [cds@5.9.0]
$filter
with navigation to-one eq null - [cds@5.9.0] Calculation of
DraftIsProcessedByMe
when navigating toDraftAdministrativeData
- [cds@5.9.0] Inbound streaming with media type annotated as
@Core.Computed
- [cds@5.9.0] Pass column expression into
SELECT()
(example:SELECT('SUBSTRING(locale,0,2) as loc').from(<entity>)
) - [cds@5.9.0] Annotation
@cds.api.ignore
ignores key in new parser - [cds@5.9.0] Inconsistencies in actions and functions API
- [cds@5.9.0] Opening root transaction in
srv.run
if none exists - [cds@5.9.0] Glitches in handling of
req.user.tenant
andreq.user.locale
- [cds@5.9.0] Flattened keys in URL are resolved correctly if they are unique in new REST adapter
- [cds@5.9.0] Actions and functions in REST adapter
- [cds@5.9.0] Empty string as key does not work in new parser
- [cds@5.9.0] Requesting property of an entity caused error in new parser
- [cds@5.9.0] The SQLite CSV import now imports
"true"
and"false"
as strings instead of Booleans - [cds@5.9.0] Fixed loading mechanism for custom build task handlers
- [cds@5.9.0]
req.diff()
forUPDATE
on a view with renamed property inorderBy
- [cds@5.9.0]
$user.<attr>
for managed properties (@cds.on.insert
/@cds.on.update
) - [cds@5.9.0] GraphQL
__typename
meta field if it is the only selected field of an association/composition - [cds@5.9.0] Command shortcuts like
cds c
are now handled properly if executed in an NPM script - [cds@5.9.0] ETag is not included in expanded entities using
$select
, for example:Books(1)?$expand=author($select=ID)
- [cds@5.9.0]
cds.compile.to...
no longer crashes if called with a CSN that has a dangling ref - [cds@5.9.0] Requests to remote services via navigation path without explicit
$select
, but having$expand
query option - [cds@5.9.0]
cds.compile
correctly supports reserved namespaces likecds.foundation
. - [cds@5.9.0]
cds.compile.to.serviceinfo
now uses the correct configuration for the base URL paths for Java services - [cds@5.9.0]
cds deploy --to sqlite
correctly localizes texts in deployed views. Before not all localized texts have been correctly resolved. - [cds@5.9.0]
cds deploy --to hana
reports missing org or space info with better message. - [cds@5.8.4]
UPDATE
singleton entity does not require to provide singleton keys in a payload - [cds@5.8.4] CQN queries with operator expressions (
xpr
) in ON-conditions of unmanaged associations and compositions - [cds@5.8.3]
queries
property for application defined destinations of remote services - [cds@5.8.3]
cds serve --watch
no longer fails if@sap/cds-dk
is installed only globally - [cds@5.8.3]
cds serve
during development longer redirects URLs with similar path segments from different services, like/service/one
and/service
- [cds@5.8.3]
cds deploy --to sqlite
now ignores a_texts.csv
file again if there is a language-specific file like_texts_en.csv
present - [cds@5.8.3] Using logical blocks (surrounded with
(
and)
) in ON-conditions of unmanaged associations and compositions - [cds@5.8.3] Skip “with parameters” clause if no order by clause or all columns in the order by clause are not strings when using parametrized views on hana
- [cds@5.8.3] Limited support for binary data in OData
- Using of
base64
string values inWHERE IN
on hana base64url
values in@odata.context
annotation
- Using of
- [cds@5.8.3]
cds.context
is set in GraphQL adapter - [cds@5.8.3] Using payloads with
@odata.type
annotating primitive properties no longer crashes the application.#
in type value may be ommitted. Example:{ "ID": 201, "title@odata.type": "#String", "title": "Wuthering Heights", "stock@odata.type": "Int32", "stock": 12 }
- [cds@5.8.3] Unicode support for i18n bundles
- [cds-mtx@2.5.3] Provisioning parameters for the container creation can now also be set exclusively for the
__META__
container via cds environmentmtx.provisioning.metadatacontainer
or environment variableCDS_MTX_PROVISIONING_METADATACONTAINER
. Tenant containers are not affected by that cds environment. - [cds-mtx@2.5.3] Configuration parameters for the
@sap/instance-manager
module can now be passes using cds environmentmtx.provisioning.instancemanageroptions
or environment variableCDS_MTX_PROVISIONING_INSTANCEMANAGEROPTIONS
. See also @sap/instance-manager. - [cds-mtx@2.5.3] Upgrade calls for non-existing tenants do no longer create orphan HDI containers
- [cds-mtx@2.5.3] More robust handling of inconsistent HDI container having no tenant id (error “TypeError: Cannot read property ‘toLowerCase’ of undefined”)
- [cds-odata-v2-adapter-proxy@1.8.11] Fix for
falsy
values during data type conversion for functions and actions - [cds-odata-v2-adapter-proxy@1.8.11] Add OData V2 links via link providers to HTML index page
- [cds-odata-v2-adapter-proxy@1.8.10] Refactor locale determination from CDS
- [cds-odata-v2-adapter-proxy@1.8.10] Serialize body to string in case of type
object
before calculating content length - [cds-odata-v2-adapter-proxy@1.8.10] Support
AnalyticalContext
annotations in addition to deprecatedAnalytics
annotations
Removed
- [cds@5.9.0] Redundant locale implementation
February 2022
Added
- [cds.java@1.22.0] Added a local in-memory
MessagingService
implementation with kindlocal-messaging
that can be used in JUnit tests. Its event publishing is synchronous to the event listeners, which frees test code from having to wait on the asynchronous execution of the listeners. - [cds.java@1.22.0] The multitenancy library is now configured with a default resilience config, that attempts up to three retries with a wait time of 500ms in between in case requests to the MTX sidecar fail with unexpected errors.
- [cds.java@1.22.1] The
cds-feature-auditlog-v2
automatically provides the dependency to the AuditLog v2 services during MT subscription, if it’s using anoauth2
plan. - [cds.java@1.22.0] The OData V2 adapter now handles
@Aggregation.default: #COUNT
. - [cds.java@1.22.0] The audit logging implementation now handles
@PersonalData.EntitySemantics: 'Other'
. - [cds.java@1.22.0]
IN
predicates with user attributes are now supported in instance-based authorization conditions, for example,country in $user.countries
. - [cds.java@1.22.0] To support deferred foreign key constraints in SQLite during the CSV data import, all CSV files can be imported in a single changeset. This behavior can be enabled by setting the new property
cds.dataSource.csvSingleChangeset
totrue
. - [cds4j@1.26.0] Support nulls first|last in orderBy
- [cds4j@1.26.0] JavaDocs for CqnVisitor
Changed
- [cds-dk@4.8.1]
cds init
does not createVS Code
file exclusions anymore, so that .vscode/ and .gitignore and visible by default, allowing easier editing of these files. - [cds-dk@4.8.1]
cds import
modified documentation for namespace option. - [cds.java@1.22.0] Potentially sensitive values are now excluded from logged CQN statements by default. To enable logging of sensitive values again, you can set
cds.security.logPotentiallySensitive
totrue
- [cds4j@1.26.0] CqnStructuredTypeRef does not traverse the segments any longer
- [cds4j@1.26.0] visiting ref segments is deprecated:
- CqnReference.Segement.accept(CqnVisitor)
- CqnVisitor.visit(Segment) are deprecated
Fixed
- [cds-dk@4.8.1]
cds import
now throws an error in case of missing Association Sets. - [cds-dk@4.8.1]
cds import
can now capture the data for any givenEntityContainer Name
for OData V4. Earlier it only worked when the name wasEntityContainer
. - [cds@5.8.2] Crash if error does not have a stack in kibana logging
- [cds@5.8.2] Allow short names for bound operations in odata-server
- [cds@5.8.2] Performance issue during deep operations
- [cds@5.8.2] Resolving views with parameters
- [cds@5.8.2] Expanding association-to-many within draft union scenario
- [cds@5.8.2] Erroneous invalidation of deep
INSERT|UPDATE|DELETE
operations if root entity has managed to-one association to non-writable view - [cds@5.8.2] Handling of falsy results when sending requests to remote services
- [cds@5.8.2] Resolving foreign key propagations for views with union
- [cds@5.8.1] Use single transaction for update mutations in GraphQL adapter
- [cds@5.8.1] ODATA to CQN parser returned not selected keys in
@odata.context
- [cds@5.8.1] Draft:
$expand
with special draft columns in$orderBy
for active entities - [cds@5.8.1] Reading distinct values of draft enabled entity
- [cds@5.8.1] Handling of LOB data on HANA
- [cds@5.8.1] Fix streaming draft by navigation
- [cds@5.8.1] Empty to-many arrays are not removed from req.data for inserts
- [cds@5.8.1]
$filter
query option in structured mode (OData flavorsw4
andx4
)- Using JSON-stringified objects no longer occasionally crashes an application
- Filtering on a structured element with
ne null
condition also selects data having somenull
properties within
- [cds.java@1.22.1] The
cds-feature-auditlog-v2
doesn’t support planoauth2
in combination with persistent Outbox and the startup of the CAP Java application now fails with a corresponding error. If persistent Outbox is enabled, the planstandard
of the Auditlog v2 service has to be used. - [cds.java@1.22.0] Fixed a bug, that caused
NullPointerException
s when elements were present in aResult
provided to the OData V2 adapter that were not part of the EDMX definition. - [cds4j@1.26.1] Fix potential hash collisions in deep updates
- [cds4j@1.26.1] Don’t normalize values for UUID elements annotated w/ @odata.Type:
Edm.String
- [cds4j@1.26.0] Fix to-many expands using
or
in on condition - [cds4j@1.26.0] Code generator: Allow expand and to select subelements of structured elements in builder interfaces
- [cds4j@1.26.0] Fix CqnValidation to avoid StackOverflowError
- [cds-odata-v2-adapter-proxy@1.8.9] Stabilization fixes
- [cds-odata-v2-adapter-proxy@1.8.8] Proxy option
calcContentDisposition
to calculatecontent-disposition
header even if already available - [cds-odata-v2-adapter-proxy@1.8.7] Proxy option
fixDraftRequests
to convert unsupported draft request to a working version (default: false) - [cds-odata-v2-adapter-proxy@1.8.6] Fix README for combined custom backend bootstrap
- [cds-odata-v2-adapter-proxy@1.8.6] Allow annotation
@odata.type
in lower case format - [cds-odata-v2-adapter-proxy@1.8.6] Allow type prefix
datetime
in addition todatetimeoffset
- [cds-odata-v2-adapter-proxy@1.8.6] Add peer dependency @types/express
January 2022
Added
- [cds-dk@4.8.0]
cds import
now reflects the entity set and entity container level annotations in the csn. - [cds-dk@4.8.0]
cds activate --sync
allows to use the synchronous server API for extension upload. - [cds-compiler@2.12.0] CDL parser: You can now use multiline string literals and text blocks.
Use backticks (`) for string literals that can span multiple lines and can use JavaScript-like escape
sequences such as
\u{0020}
. You can also use three backticks (```) for strings (a.k.a. text blocks) which are automatically indentation-stripped and can have an optional language identifier that is used for syntax highlighting, similar to markdown. In difference to the former, text blocks require the opening and closing backticks to be on separate lines. Example: @annotation:Multi line\u{0020}strings
@textblock:xml <summary> <detail>The root tag has no indentation in this example</detail> </summary>
… - [cds-compiler@2.12.0] Enhance the ellipsis operator
...
for array annotations by anup to ‹val›
: only values in the array of the base annotation up to (including) the first match of the specified‹val›
are included at the specified place in the final array value. An array annotation can have more than on... up to ‹val›
items and must also have a pure...
item after them. A structured‹val›
matches if the array item is also a structure and all property values in‹val›
are equal to the corresponding property value in the array value; it is not necessary to specify all properties of the array value items in‹val›
. Example @Anno: [{name: one, val: 1}, {name: two, val: 2}, {name: four, val: 4}] type T: Integer; @Anno: [{name: zero, val: 0}, … up to {name: two}, {name: three, val: 3}, …] annotate T; - [cds-compiler@2.12.0] for.odata: Support
@cds.on {update|insert}
as replacement for deprecated@odata.on { update|insert }
to set@Core.Computed
. - [cds@5.8.0] Custom
server.js
don’t have to exportcds.server
anymore -> we use that by default now. - [cds@5.8.0] In
cds.requires
: Support to replace primitive values with objects - [cds@5.8.0] Support filter functions on renamed properties from external service
- [cds@5.8.0] Results of database queries use
big.js
for values of typecds.Decimal
andcds.Integer64
if enabled viacds.env.features.bigjs
- [cds@5.8.0] Support lambda in
$filter
in$expand
- [cds@5.8.0] Support for
GET
requests on service root in REST adapter (old and new) - [cds@5.8.0] Support for
HEAD
requests in REST adapter (old and new) - [cds@5.8.0] New hook
req.before('commit')
- [cds@5.8.0] Draft (Access control for bound actions): Only the user that is the owner of the draft can execute its bound actions.
- [cds@5.8.0] Check that all keys are provided in REST adapter
- [cds@5.8.0] Restrict access to all services via
cds.env.requires.auth.restrict_all_services = true
- That is, all unrestricted services (i.e., w/o own
@requires
) are treated as having@requires: 'authenticated-user'
- That is, all unrestricted services (i.e., w/o own
- [cds@5.8.0] Threshold for automatically sending GET requests as
$batch
(beta, cf. @sap/cds@5.6.0) can be configured per remote service viacds.env.requires.<srv>.max_get_url_length
(if not configured on service, the global config applies) - [cds@5.8.0] Alpha out-of-the-box support for DwC
- Authentication based on headers set by Jupiter router via
cds.env.requires.auth.kind = 'dwc-auth'
- All DwC headers are forwarded to remote service via
cds.env.requires.<srv>.forward_dwc_headers = true
- Authentication based on headers set by Jupiter router via
- [cds@5.8.0] Limited support for binary data in OData
- In payloads, the binary data must be a base64 encoded string
- In URLs, the binary data must have the following format:
binary'<url-safe base64 encoded>'
, for example,$filter=ID eq binary'Q0FQIE5vZGUuanM='
- The use of binary data in some advanced constructs like
$apply
and/any()
may be limited - On SQLite, the base64 encoded string is stored to the database
- It is strongly discouraged to use binary data as keys. See “Primary Keys — Best Practices” in documentation.
- [cds@5.8.0] Support for OData annotation
@Core.ContentDisposition.Type
withattachment
as the default value - [cds@5.8.0] Support for returning custom stream objects in custom handlers (beta):
- Example:
return { value: instanceof Readable || null, $mediaContentType = 'image/jpeg', $mediaContentDispositionFilename = 'foo.bar', // > optional $mediaContentDispositionType = 'inline' // > optional }
- Example:
- [cds-mtx@2.5.2] It is now checked if CDS annotations
@sql.append
and@sql.prepend
are used in extensions. Using these annotations in extensions is currently not allowed.
Changed
- [cds-dk@4.8.0] The forked package
@mendix/sqlite3
is now used instead ofsqlite3
to overcome CVE-2021-32804. No code changes in applications are needed, as the new package installed bynpm
with the same namesqlite3
. - [cds-dk@4.8.0] [beta] The templating for
cds init
andcds add
has been rewritten from scratch. This will allow for some new, more complex commands, such ascds add mtx
orcds add xsuaa
. - [cds-dk@4.7.3] Bump
follow-redirects
package to 1.14.7 (CVE-2022-0155) - [eslint-plugin-cds@2.3.2] Rule
require-2many-oncond
now also detect navigations of aspects for flavor ‘parsed’ - [eslint-plugin-cds@2.3.2] Removed duplicates from rule results of category ‘Environment’
- [cds-compiler@2.12.0] Update OData Vocabularies ‘Aggregation’, ‘Capabilities’, ‘Common’, ‘Core’, PersonalData, ‘Session’, ‘UI’
- [cds@5.8.0]
cds deploy --to hana
now usescf curl
instead ofcf
command natively - [cds@5.8.0] Event Mesh: In multitenancy mode, messaging artifacts are also deployed for provider accounts (unless the service option
deployForProvider
is set tofalse
) - [cds@5.8.0] Status code in case of multiple errors (rules apply in order):
- If all errors have the same status code, that status code is used
- If there is at least one 5xx status code, the resulting status code is 500
- If there is at least one 4xx status code, the resulting status code is 400
- If none of the rules apply, the resulting status code is 500
- [cds@5.8.0] Ignore the
If-Match
HTTP request header forUPDATE
/DELETE
requests whose target entities are not annotated with the@odata.etag
annotation. - [cds@5.8.0] I18n template strings now are replaced in EDMX documents such that they can occur multiple times. For example, the
{i18n>key1} - {i18n>key2}
template results invalue1 - value2
, while previously only the first string was replaced, leading tovalue1 - {i18n>key2}
. This is helpful for theTemplate
strings ofUI.ConnectedFields
.
Fixed
- [cds-dk@4.8.0]
cds import
now omits function imports withput/delete
kind. - [cds-dk@4.8.0]
cds import
has fixed the entity type to entity set mapping in OData V2. - [cds-dk@4.8.0]
cds import
now supports collection type. - [cds-dk@4.8.0]
cds watch
now picks a free livereload port if the standard port 35729 is already bound - [cds-dk@4.8.0]
cds extend
,cds activate
,cds login
, andcds logout
now prioritize command line options over saved settings - [cds-dk@4.8.0] MTX client now logs fewer characters of secrets in debug output
- [cds-dk@4.8.0] MTX client now handles incomplete error responses better
- [cds-compiler@2.12.0] to.sql/hdi/hdbcds: With
exists
, ensure that the precedence of the existing association-on-conditions and where-conditions is kept by adding braces. - [cds-compiler@2.12.0] to.sql/hdi: Window function suffixes are now properly rendered.
- [cds-compiler@2.12.0] to.sql:
$self
comparisons inside aspects are not checked and won’t result in an error anymore. - [cds-compiler@2.12.0] to.hdbcds:
- Correctly apply the “.”-to-“_“-translation algorithm to artifacts that are marked with
@cds.persistence.exists
. - Message with ID
anno-hidden-exists
(formeranno-unstable-hdbcds
) is now only issued if the compiler generates a SAP HANA CDS artifact which would hide a native database object from being resolved in a SAP HANA CDSusing … as …
.
- Correctly apply the “.”-to-“_“-translation algorithm to artifacts that are marked with
- [cds-compiler@2.12.0] to.cdl: Annotation paths containing special characters such as spaces or
@
are now quoted, for example,@![some@annotation]
. - [cds-compiler@2.12.0] compiler: A warning is emitted for elements of views with localized keys as the localized property is ignored for them.
- [cds-compiler@2.11.4] CDL parser: in many situations, improve message when people use reserved keywords as identifier
- [cds-compiler@2.11.4] Improve error text and error location for ambiguous auto-redirection target
- [cds-compiler@2.11.4] to.sql/hdi/hdbcds:
- Correctly detect
exists
in projections - Correctly handle elements starting with
$
in the on-condition of associations - Correctly handle sub queries in an entity defined with
projection on
- Correctly handle associations in sub queries in a
from
of a sub query - foreign key constraints: respect @assert.integrity: false for compositions
- Correctly detect
- [cds-compiler@2.11.4] to.hdbcds: Correctly quote elements named
$self
and$projection
- [cds-compiler@2.11.4] to.cdl:
when
was added to the keyword list for smart quoting - [cds-compiler@2.11.4] Compiler support for code completion for
$user
and$session
now respect user provided variables inoptions.variableReplacements
. - [cds-compiler@2.11.4] API:
deduplicateMessages()
no longer removes messages forduplicate
artifact/annotation errors. Prior to this version, only one of the duplicated artifacts had a message, leaving the user to guess where the other duplicates were. - [cds@5.8.0] Enterprise Messaging: The user is now privileged for AMQP
- [cds@5.8.0]
cds.spawn
also works with synchronous functions - [cds@5.8.0] Foreign keys in parent are set to
null
when deleting composition of one - [cds@5.8.0]
cds version
now always prints the version of@sap/cds-dk
, especially ifcds version
was called from within an npm script, i.e. not fromcds-dk
’s CLI. - [cds@5.8.0] Better error message in case destination of Remote Service is not found
- [cds@5.8.0] Differentiate between draft already exists and entity locked
- [cds@5.8.0] OData adapter: rollback transaction before rethrowing standard error in case of atomicty group
- [cds@5.8.0] Results of actions/functions do not ignore custom data when using
$expand
query option - [cds@5.8.0]
req.data
is available in custom error handler in case of deserialization error thrown by legacy odata server - [cds@5.8.0] Joining entities with renamed foreign keys (limited to single-level projections)
- [cds@5.8.0] Requests with draft and
$expand=*
caused problems in some cases - [cds@5.8.0]
cds serve
during development longer redirects URLs with similar path segments like/browse/123/browse/
to, for example/browse/
- [cds@5.8.0] Post processing for renamed column in expand
- [cds@5.8.0] Deploy to HANA: passing of options to
hdi-deploy
viaHDI_DEPLOY_OPTIONS
now possible - [cds@5.8.0] Keys as path segments in beta OData to CQN parser
- [cds@5.8.0] OData V2 Remote Service (
"kind": "odata-v2"
):- Request data properties of types
cds.Date
,cds.DateTime
andcds.Timestamp
are converted accordingly to OData V2 specification - Response data properties of types
cds.Decimal
,cds.DecimalFloat
(deprecated) andcds.Integer64
are handled properly when usingAccept
header withIEEE754Compatible=true/false
andExponentialDecimals=true/false
format parameters
- Request data properties of types
- [cds@5.7.5] Instance-based restriction for activation of draft-enabled entities using
or
in restriction - [cds@5.7.5] Messaging: Duplicate handler execution if application service registered events twice
- [cds@5.7.5] Post of a deeply nested sub-entity with structured parent keys
- [cds@5.7.5] Negating lambda expressions in OData using the
not
operator - [cds@5.7.5] Event Mesh: Redelivery count when using AMQP
- [cds@5.7.5] OData requests using lambda expressions on localized data
- [cds@5.7.5]
cds.db.exists
wrongly generated aSELECT * FROM ...
for odata flavor x4 - [cds@5.7.5] Return localized texts on draft activate
- [cds@5.7.5] Unicode characters in unquoted search terms in beta OData to CQN parser
- [cds@5.7.4] Complex
@restrict.where: 'exists [...] or (... or ...) or ...'
in draft union scenario no longer crashes the application - [cds@5.7.4] Sanitization of null values for
cds.RemoteService
- [cds@5.7.4] Handling of boolean values in draft union scenario with
$expand
query option - [cds@5.7.4]
_4odata
flag in CQN stays non-enumerable when forwarding to another application service - [cds@5.7.4] Handling of type references on properties of associations in
cds.minify
- [cds@5.7.3] Message Queuing now accepts
amqp
options - [cds@5.7.3] OData requests using lambda expressions with
contains
function - [cds@5.7.3] Result of OData query option
$count=true
when using$apply
- [cds@5.7.3]
$filter
with navigation to-one equals value crashes - [cds@5.7.3]
$skiptoken
query option allows to use arbitrary symbols except of&
with beta OData URL to CQN parser (cds.env.features.odata_new_parser
). In this non-integer value case the value will not be parsed into CQN. - [cds@5.7.3] Function names in
$filter
can now be case insensitive (as per OData 4.01) - [cds@5.7.3]
$count
in$expand
caused server to crash - [cds-mtx@2.5.2] API
/mtx/v1/provisioning/tenant
does no longer return duplicate tenants in case of concurrent API calls. - [cds-mtx@2.5.2] Dependencies to
VCAP_SERVICES
environment have been removed. Service dependencies can now be fully defined viacds.env
, except for databases shared between tenants. - [cds@5.7.5] Complex
@restrict.where: 'exists [...] or (... or ...) or ...'
in draft union scenario no longer crashes the application - [cds@5.7.5] Sanitization of null values for
cds.RemoteService
- [cds@5.7.5] Handling of boolean values in draft union scenario with
$expand
query option - [cds@5.7.5]
_4odata
flag in CQN stays non-enumerable when forwarding to another application service - [cds@5.7.5] Handling of type references on properties of associations in
cds.minify
- [cds-odata-v2-adapter-proxy@1.8.5] Prevent additional call to fill
content-disposition
, in case header is already provided with stream ç Support OData V2binary
media upload via POST for entities with element of typeBinary
and without@Core.MediaType
annotations - [cds-odata-v2-adapter-proxy@1.8.5] Return server error as response, if OData V4 server does not support media upload without
@Core.MediaType
annotation, for example,No payload deserializer available for resource kind 'PRIMITIVE' and mime type 'image/png'