Changelog
May 2023
Added
- [cds-dk@6.8.0]
cds add file-based-messaging
adds configuration for file-based messaging (Node.js). - [cds-dk@6.8.0]
cds add redis-messaging
adds configuration for Redis messaging (Node.js). - [cds-dk@6.8.0]
cds add enterprise-messaging-shared
adds configuration for Event Mesh support withkind = 'enterprise-messaging-shared'
(Node.js). - [cds-dk@6.8.0]
cds import
now supports OData V4 EDMX file containing multipleSchemas
with singleEntityContainer
. - [cds-dk@6.8.0]
cds import
now supports importing of AsyncAPI documents. - [cds-dk@6.8.0]
cds login -m <clientid>[:<key>]
now supports X.509 (mTLS) credential-type in XSUAA binding of @sap/cds-mtxs. - [vscode-cds@6.8.0] User setting
cds.typeGenerator.localInstallationOnly
has been added to allow more finely grained control for the user over the resolution of the type generation package - [vscode-cds@6.8.0] New command
Record Traces for Support Ticket
to assist creation of support tickets for CDS editor issues - [vscode-cds@6.8.0] CAP notebooks: new cell type
CDS Server
, which is also executable for CDS background processes. - [cds.java@1.34.1] Added support for replacing the
$namespace
placeholder in queue configuration values. - [cds.java@1.34.0] A new starter module
cds-starter-k8s
has been introduced which bundles useful CAP dependencies for the Kubernetes/Kyma environment. - [cds.java@1.34.0] The CDS Maven archetype now supports the
kubernetes
andk8s
values as additional option in thetargetPlatform
parameter. - [cds.java@1.34.0] Introduced hybrid IAS / XSUAA support based on
cds-feature-identity
. In hybrid mode the server accepts both IAS and XSUAA tokens. No automatic conversion between token types occurs. This mode is enabled, when both an IAS and XSUAA binding are present. - [cds.java@1.34.0] Command main methods like
Deploy
orSubscribe
no longer initialize adapters and background tasks like for example the draft GC, event subscriptions or persistent outbox processing. - [cds.java@1.34.0] The tenant upgrade triggered through
DeploymentService.upgrade
now includes the tenant upgrade for multitenant Event Mesh services. - [cds.java@1.34.0] The OData V4 adapter now supports open types.
- [cds.java@1.34.0] Writing tenant-specific audit logs to the AuditLog V2 service no longer requires the tenant subdomain to be known.
- [cds.java@1.34.0] Kafka service bindings using basic authentication are now supported.
- [cds@6.8.0] Global cds-dk version is now included in tabular output of
cds v -i
. - [cds@6.8.0] Audit logging support for OAuth2 Plan
- [cds@6.8.0] Feature flag to limit the max number of requests in a Odata batch request. The max number can be specified with a number in
cds.odata.batch_limit
. - [cds@6.8.0] Custom authentication in
enterprise-messaging
- [cds@6.8.0] Requests with lambda expressions are rejected by remote services of kind
odata-v2
- [cds@6.8.0]
cds build
ignores invalid entries inundeploy.json
- [cds@6.8.0] New
minorUnit
element insap.common.Currencies
for how many fractions the minor unit takes (e.g.0
, or2
). See https://www.npmjs.com/package/@sap/cds-common-content for matching content. - [cds@6.8.0] Support for
$user.<attr> is null
and$user.<attr> is not null
in@restrict.where
.is null
matchesnull
and[]
,is not null
matches arrays with at least one entry as well as!= null
if no array. - [cds@6.8.0] Plugins are now also fetched from
devDependencies
, unlessNODE_ENV === 'production'
- [cds@6.8.0] Plugins can now provide
cds
configurations in their package.json. - [cds@6.8.0] Support in OData entities with special letters (like ó,â,ü) in names.
- [cds-mtxs@1.8.0] Token endpoint can now handle UAA binding with X.509 (mTLS) authentication. On CLI side, this requires @sap/cds-dk@>=6.8.0.
Changed
- [cds-dk@6.8.0]
cds init
uses latest Maven Java archetype version 1.34.0 for creating Java projects. - [vscode-cds@6.8.1] CAP notebooks: improved Java cell example notebook
- [vscode-cds@6.8.0] Welcome page will be shown based on page's hash code
- [vscode-cds@6.8.0] CDS type generation will now be enabled by default
- [vscode-cds@6.8.0] Improved CAP Notebooks Welcome page (better layout, responsive icons, fixed buttons).
- [vscode-cds@6.8.0] Changing some CDS user settings required a manual restart of the IDE. This is no longer necessary
- [vscode-cds@6.8.0] Minimum VSCode version is now 1.76.0
- [cds.java@1.34.0] Removed hybrid IAS / XSUAA support based on
cds-feature-xsuaa
, which exchanged incoming IAS tokens with XSUAA tokens. This mode is deprecated by XSUAA and will be removed. - [cds.java@1.34.0] By default, undefined or empty attributes restrict expressions in where-conditions of instance-based authorization now. For instance,
$user.code = code
evaluates tofalse
if the user attributecode
is not defined or has no value. Note that XSUAA attributes withvalueRequired:true
(i.e. explicitly allowing unset attribute) might need model adaption such as$user.code = code or $user.code is null'
to support unrestricted access. - [cds.java@1.34.0] Activated the new faster serializer in OData V4 adapter by default (
cds.odatav4.serializer.enabled
set totrue
). - [cds@6.8.0] Texts for Country are changed to Country/Region in
@sap.common.Countries
- [cds@6.8.0] Resolved issue where selection strategies of destination options in multitenant applications were not working correctly, resulting in runtime errors. The fix relies on the
@sap-cloud-sdk/connectivity
npm package to be installed. - [cds@6.8.0] Precision of timestamp used in outbox message increased to 100 nanoseconds (
YYYY-MM-DD hh:mm:ss.nnnnnnn
) - [cds@6.8.0] When a draft is locked by another user, the error message now includes the username of that user
- [cap-js/graphql@0.5.0] Improved consistency of handling results of different types returned by custom handlers in CRUD resolvers:
- Wrap only objects (i.e. not primitive types or arrays) returned by custom handlers in arrays in create, read, and update resolvers
- Delete mutations return the length of an array that is returned by a
DELETE
custom handler or 1 if a single object is returned
- [cap-js/graphql@0.5.0] Don't generate fields for key elements in update input objects
- [cap-js/graphql@0.5.0] Update and delete mutations have mandatory
filter
argument - [cap-js/graphql@0.5.0] Allow services that are not instances of
cds.ApplicationService
. It is expected that the invoker provides the correct set of service providers when directly using the GraphQL protocol adpater API. - [cds-mtxs@1.8.0]
JobsService
: the job status will now remainRUNNING
until all tenant tasks have succeeded or failed, instead moving toFAILED
as soon as there's the first task failure.
Fixed
- [cds-dk@6.8.0]
cds-ts watch
now honors atsconfig.json
in the project - [cds-dk@6.8.0] launch script for
CAP projects
in VS Code fixed - [vscode-cds@6.8.1] CAP notebooks: sample notebook
Shell
now uses a cross platform example - [vscode-cds@6.8.1] CAP notebooks: shellscript syntax highlighting for
Shell
cell - [vscode-cds@6.8.1] CAP notebooks: cells
CDS
,Java
andJavascript
now show error message if needed executable is not found - [vscode-cds@6.8.1] Fix CDS Welcome Page
- [vscode-cds@6.8.0] Where-used index could be incomplete with latest OData annotation plugin
- [vscode-cds@6.8.0] Formatting of quoted identifiers enclosed in square brackets
- [vscode-cds@6.8.0] Extension will no longer crash when using unknown compiler versions, though, compatibility is not guaranteed
- [cds.java@1.34.1] Fixed a bug in instance-based authorization that caused misinterpretation of expressions with
is null
oris not null
. - [cds.java@1.34.0] Fixed a bug, causing the new OData V4 serializer to omit expanded properties in the result, which were not requested by the client.
- [cds.java@1.34.0] Fixed a bug, causing the persistent outbox to be used for the provider tenant, when the MT compatibility mode was disabled.
- [cds.java@1.34.0] Fixed a bug, causing
ClassCastException
when settingcds.errors.extended
to true. - [cds.java@1.34.0] Fixed a bug, causing warning logs, when activating the CDS actuator endpoint.
- [cds.java@1.34.0] Fixed a bug, causing
NullPointerException
when triggering tenant upgrades. - [cds4j@1.38.1] Fix Update and Delete with path expression to target entity with aliased key elements
- [cds@6.8.1] DROP statements for SQLite and PostgreSQL no longer miss a comma at the end
- [cds@6.8.0] fix exported types of the
cds
core API - [cds@6.8.0] cds build uses the correct path if no project dir is given
- [cds@6.8.0] Read after write for updates on to-one navigation
- [cds@6.8.0] Error in $orderBy in combination with @Core.MediaType property
- [cds@6.8.0] Fixes in lean-draft
- [cds@6.8.0] Fixed an issue where the combined
$search
and$expand
query and localized data was returning empty results on SAP HANA - [cds@6.8.0] Tests using
cds.test
no longer crash with a segmentation fault ifinjectGlobals: false
is set in the Jest configuration. - [cds@6.8.0] Handlers registered with
cds.on('shutdown')
are now called with anerr
argument in case the shutdown happened in response to uncaught exceptions or unhandled rejected Promises. - [cds@6.8.0] Log output on uncaught exceptions or unhandled rejected Promises now is done via
cds.log
instead ofconsole
. - [cds@6.8.0] New config option
cds.env.server.force_exit_timeout
allows to configure the timeout in ms after which we force-exit the server (default: 1111) if it didn't do so as expected after a priorserver.close()
. Valuesfalse
or0
disable force-exit. - [cap-js/graphql@0.5.0] Aligned
cds.Request
instantiation with other protocols for more consistent usage in custom handlers - [cds-mtxs@1.8.0] MTXS Migration only deploys
cds.xt.Extensions
instead of the full application model. - [odata-v2-adapter@1.10.5] Replace deprecated usage of
req.run
withcds.run
- [odata-v2-adapter@1.10.5] Update of
node-fetch
- [odata-v2-adapter@1.10.5] Remove soon deprecated
req.getUriInfo
April 2023
Added
- [cds-dk@6.7.2] Added option
--skip-verification
to commandcds migrate
. It skips the extension verification to save memory. Requires@sap/cds-mtxs@1.7.3
. - [cds-compiler@3.9.0] Variables
$valid.from
and$valid.to
have been added to the compiler. They behave the same as$at.from
and$at.to
. - [cds-compiler@3.9.0] to.edm(x):
- Add
--odata-vocabularies
to pass a dictionary{ <prefix>: { Alias, Namespace, Uri } }
into the EDM generation.<prefix>
must match the value ofAlias
. Entries are ignored if they are incomplete, malformed, redefine an official OASIS/SAP vocabulary or match the name of the current service. Annotations of the form@<prefix>.<annotation>
are added to the API without evaluation including anedm:Reference
. It is in the users responsibility to provide a URI that a client can resolve against a valid vocabulary document. - Support annotation
@open
on entity and structured type level to declare the corresponding entity/complex type to beOpenType=true
. If an open structured type is declared closed (with a falsy annotation value), the corresponding EDM type is closed as well and suffixed with_closed
(or_open
vice versa). No further checks are performed on possibly open foreign or primary key types nor on eventually bucket elements to store the additional data.
- Add
- [cds4j@1.38.0] Support list values (tuples) in comparisons
- [cds4j@1.38.0] Ignore dynamic properties of
@open
entities on insert/update - [cds4j@1.38.0] Add
CQL.copy
forCqnElementRef
andCqnStructuredTypeRef
returning a ref builder - [cds4j@1.38.0] Allow to compare list values in predicates, e.g.
(amount, currency) = (100, 'EURO')
- [cds4j@1.38.0] SQLite: use user-defined
session_context
function for localized/temporal data - [ux-cds-odata-language-server-extension@1.9.4] The Show All References option for service elements such as entities, properties, and actions displays now also the references to these elements in annotation values. You can use it before modifying a service element to understand if annotations will be affected by the change and avoid the related errors or easily fix them.
- [odata-v2-adapter@1.10.1] Bootstrapping via CDS plugin (
cds.cov2ap.plugin: true
) - [odata-v2-adapter@1.10.0] Transition to open source code
Changed
- [cds-dk@6.7.1]
cds init
uses latest Maven Java archetype version 1.33.1 for creating Java projects. - [cds-dk@6.7.1] Bump
@sap/cds
to 6.7.1 - [cds-dk@6.7.1] Bump
@sap/cds-mtxs
to 1.7.2 - [cds-compiler@3.9.0] compiler: Parameter references in filters such as
assoc[field < :Param]
are now allowed. - [cds-compiler@3.9.0] In the compiled CSN, sort the non-enumerable
$sources
property according to the reversed layered extension order. - [cds-compiler@3.9.0] Update OData vocabulary 'Common', 'ODM', 'UI'.
- [cds-compiler@3.9.0] to.cdl: If an identifier contains illegal characters (e.g. newline), we no longer produces invalid CDL, but emit an error instead.
- [cds4j@1.38.0] Make implementation of
RefSegment
,ElementRef
andStructuredTypeRef
immutable - [cds4j@1.38.0] Deprecate
Modifier:ref
methods on mutable copies and introduce new ref methods for immutable refs - [cds4j@1.38.0] Deprecate
Modifier:match
method and introduce newmatch
method that does not copy the ref - [cds4j@1.38.0] Deprecate
Modifier:inline
method and introduce newinline
method that does not copy the ref - [cds4j@1.38.0] Deprecate
Modifier:expand
method and introduce newexpand
method that does not copy the ref - [cds4j@1.38.0] Remove deprecated
Value:cast
methods, instead useValue:type
- [cds4j@1.38.0] Shortcut evaluate
lhs IS NOT NULL
toTRUE
iflhs
is not nullable - [cds@6.7.1] Calling a parameterized view without params error now results in the status code 400 with an improved error message.
Fixed
- [cds-dk@6.7.2] Swagger UI no longer fails with an error
Value of 'namespaceAndName' parameter must be in the following format: <namespace>.<name>
- [cds-dk@6.7.1] Compatibility with @sap/cds versions >= 4.5 and < 6.2: avoid runtime errors with debugging disabled.
- [cds-compiler@3.9.2] Fix crash in core compiler which occurred when CAP was used in a node environments where an enumerable property was added to
Array.prototype
. - [cds-compiler@3.9.2] to.edm(x):
- Publicly release
@open
. - No
DefaultValue
forEdm.NavigationProperty
.
- Publicly release
- [cds-compiler@3.9.0] to.edm(x):
- Fix spec requirement: "Navigation properties of complex types MUST NOT specify a partner".
- Set default target cardinality for unspecified
composition of {}
to[0..1]
. - Correct referential constraint calculation for
[0..1]
backlink associations.
- [cds-compiler@3.9.0] for.hana/for.odata: Reject final unmanaged assoc path step in ON Condition if preceded with
$self
. - [cds-compiler@3.9.0] to.cdl: Parentheses around expressions containing conditions were sometimes missing.
- [cds-compiler@3.9.0] to.sql/hdi/hdbcds:
- Detect and process calculated elements in functions like
upper
. - Better detection of calculated elements in
.expand
/.inline
. - Entities with calculated elements sometimes had incorrect types. This happened, for example, if they were marked with
@odata.draft.enabled
- Detect and process calculated elements in functions like
- [cds.java@1.33.1] Fixed a bug, causing the upgrade procedures to fail, if MTX Sidecar reported tenant status as
NON-EXISTENT
for one or more tenants. - [cds.java@1.33.1] Fixed a bug, causing the upgrade procedures to succeed, even if MTX Sidecar reported the job status as
FAILED
, when using MTXS. - [cds.java@1.33.1] Fixed a bug, causing OData V2
Edm.Time
typed values in URIs represented as durations (e.g.PT10H10M20S
) to fail request parsing. - [cds4j@1.38.0] Change return type of
Modifier:selectAll
toList
- [cds4j@1.37.1] Fix parsing of CQN containing "is not"
- [cds@6.7.2] Try to destroy nonexistant socket in case of custom streaming implementation
- [cds@6.7.2] Draft: Missing field
IsActiveEntity
in target path of error messages duringdraftActivate
- [cds@6.7.2] Minor fixes for
cds.fiori.lean_draft
- [cds@6.7.2] Error in media type check when no
Content-Type
header is found - [cds@6.7.1] cds build error CreateListFromArrayLike
- [cds@6.7.1] Disabling of arbitrary user config in mock auth config using
"users": { "*": false }
- [cds@6.7.1] Various fixes for
cds.fiori.lean_draft
- [cds@6.7.1] User attributes that look like numbers are quoted in SQL clause for
@restrict
- [cds-mtxs@1.7.2] MTXS Migration now handles multiple generated projects correctly.
- [cds-mtxs@1.7.2] Extensibility Service now contains action
add
for extension modification. - [cds-mtxs@1.7.2] Model Provider Service now offer action
getExtResources
returning the archive of the uploaded extension. - [cds-mtxs@1.7.2] CSV files provided in extensions are now correctly re-deployed again with
upgrade
. - [cds-mtxs@1.7.1] MTXS Migration now behaves more robust with regards to cds build configurations.
- [cds-mtxs@1.7.1] Re-subscribe now also re-deploys extensions again.
- [cds-mtxs@1.7.1] Stability improvements for tenant upgrades.
- [odata-v2-adapter@1.10.4] Fix start of
cds.plugin
- [odata-v2-adapter@1.10.3] Fix access to
undefined
element during data conversion - [odata-v2-adapter@1.10.2] Convert array structures
- [odata-v2-adapter@1.10.1] Update
xml2js
dependency to fix security vulnerability - [odata-v2-adapter@1.10.0] Bound entity operation result is correctly nested with entity name prefix
March 2023
Added
- [cds-dk@6.6.1]
cds compile --to openapi
now adds extension validation keywordsx-sap-precision
andx-sap-scale
for decimal values. - [vscode-cds@6.6.0] CAP notebooks: Uri handler to open notebooks coming from Capire in local VS Code workspaces.
- [vscode-cds@6.6.0] CAP notebooks: All notebook features now have a brief description with examples, available on the CAP Notebooks Welcome page.
- [vscode-cds@6.6.0] type generation now detects project root
- [cds.java@1.32.1] New POJO interfaces
SaasRegistryUnsubscriptionOptions
andSaasRegistrySubscriptionOptions
that help to access (un)subscription SaaS Registry payload in type-safe manner, e.g.SaasRegistrySubscriptionOptions options = Struct.access(subscriptionEventContext.getOptions()).as(SaasRegistrySubscriptionOptions.class);
. - [cds@6.6.1]
cds.xt.TENANT_UPDATED
event is emitted once a tenant was extended - [cds-dk@6.7.0]
cds upgrade
enables upgrading a tenant subscribed to a multitenant SaaS app to the latest base model. - [cds-compiler@3.8.0] compiler:
- Table aliases for sub-queries are no longer required.
- A time zone designator can now be used in time literals, e.g.
time'16:41:01+01:30'
ortime'16:41:01Z'
.
- [cds-compiler@3.8.0] Calculated elements ("on-read") are now enabled per default. When used in views, they are replaced by their value, for example:cdsThis allows to define calculations centrally at the entity, which can be used by other views.
entity E { one: Integer; two = one + 1; }; entity P as projection on E { two }; // P is the same as: entity P as projection on E { one + 1 as two };
entity E { one: Integer; two = one + 1; }; entity P as projection on E { two }; // P is the same as: entity P as projection on E { one + 1 as two };
- [cds-compiler@3.8.0] In CDL, a ternary operator was added as a shortcut for
CASE
expressions:a ? b : c
is a shortcut forCASE WHEN a THEN b ELSE c END
. There is no CSN representation. The ternary operator is rendered as aCASE
expression in CSN. - [cds-compiler@3.8.0] In CDL and CSN,
not null
can now also be used in type definitions. - [cds-compiler@3.8.0] In CDL (and CSN as before), elements can be defined without specifying a type.
- [cds.java@1.33.0] The
TenantProviderService
now provides, as part of theTenantInfo
class, the id of the database on which a specific tenant has been onboarded (e.g.tenantInfo.get("database_id");
). If the information is not available, the call will returnnull
. - [cds.java@1.33.0] Audit Log integration now supports writing entries on behalf of a named user when the CAP application is using IAS instead of XSUAA.
- [cds.java@1.33.0] Two new main methods
com.sap.cds.framework.spring.utils.Subscribe
andcom.sap.cds.framework.spring.utils.Unsubscribe
allow triggering subscriptions or unsubscriptions as tasks. - [cds@6.7.0] Config
cds.ql.quirks_mode
as a compatibility flag to still support behaviours which are undocumented, or even against the specifications, for example CQN:jsThe default in cds6 islet q = INSERT.into('Books') //> According to CQN spec should return: {SELECT:{from:{ref:['Books']}}} //> But today returns: {SELECT:{from:'Books'}}
let q = INSERT.into('Books') //> According to CQN spec should return: {SELECT:{from:{ref:['Books']}}} //> But today returns: {SELECT:{from:'Books'}}
true
→ to be changed tofalse
with cds7. - [cds@6.7.0]
cds build
now checks extension point restrictions defined by the SaaS app provider.cds build
fails if any restrictions are violated. - [cds@6.7.0] Typings for
cds.spawn()
- [cds@6.7.0] Typings for
entity.drafts
- [cds@6.7.0] Typings for winston logger
- [cds@6.7.0] Typings for
service.on
,service.before
, andservice.after
for actions and CRUD events - [cds@6.7.0] CLI command
cds env
now allows property paths with/
instead of.
, which allows usages like that:
sh
cds env requires/cds.xt.ModelProviderService
cds env requires/cds.xt.ModelProviderService
- [cds@6.7.0]
cds.env
now allows to statically set/add profiles viacds.profile
andcds.profiles
in package.json. - [cds@6.7.0]
cds.env
now also supports using profiles in definitions of presets, i.e., incds.requires.kinds
. - [cds@6.7.0]
cds deploy
now prints a warning when using Cloud Foundry client version less than 8. - [cds@6.7.0]
req.subject
to conveniently operate on the subjects targeted by the request. Example usage: SELECT.one.from(req.subject) //> returns single SELECT.from(req.subject) //> returns array UPDATE(req.subject) //> updates one or many DELETE(req.subject) //> deletes one or many - [cds@6.7.0]
cds-serve
as a future replacement forcds serve
in npm scripts. Applications can adopt this now to ease the transition to the next major version. - [cap-js/graphql@0.4.0] Supporting new
cds-plugin
technique for zero configuration - [cap-js/graphql@0.4.0] Support for filtering by
null
values - [cap-js/graphql@0.4.0] Allow multiple filters on the same field, with the same operator, that are logically joined by
AND
. For example, filtering for all books with titles that contain both strings, "Wuthering" and "Heights":graphql{ AdminService { Books(filter: { title: { contains: ["Wuthering", "Heights"] } }) { nodes { title } } } }
{ AdminService { Books(filter: { title: { contains: ["Wuthering", "Heights"] } }) { nodes { title } } } }
Changed
- [vscode-cds@6.6.0] extension now uses vscode-languageclient 8.x
- API consumers may need to adapt access. See changes. Especially
onReady
is no longer needed and was removed.
- API consumers may need to adapt access. See changes. Especially
- [vscode-cds@6.6.0] minimum VSCode version is now 1.74.0
- [vscode-cds@6.6.0] updated capire CDL docs - used in code completion details
- [cds.java@1.32.1] Support for OData V4 PATCH requests with deltas on entity collections has to be enabled via
@Capabilities.UpdateRestrictions.DeltaUpdateSupported:true
. - [cds.java@1.32.1] Adapted
DeploymentService.dependencies()
andDependenciesEventContext
to return and useList<Map<String, Object>>
instead ofList<String>
for dependencies. Use helper classSaasRegistryDependency
to report dependencies to SaaS Registry. - [cds-dk@6.7.0]
cds env --for
is now used to specify profiles; before it specified project paths, but never worked correctly. - [cds-dk@6.7.0]
cds add data
now uses comma as CSV separator by default instead of semicolon. This allows using GitHub tabular display. - [cds-dk@6.7.0]
cds add approuter
doesn't create entries forauthenticationMethod
andauthenticationType
any more, but uses the equivalent@sap/approuter
defaults. - [cds-dk@6.7.0]
cds add multitenancy
will now create a sidecar MTX project for Node.js as well. - [cds-dk@6.7.0]
cds subscribe
andcds unsubscribe
no longer require a username in case @sap/cds-mtxs is configured with dummy auth. - [cds-dk@6.7.0]
cds subscribe
andcds unsubscribe
now rely on @sap/cds-mtxs (version 1.7.0 or higher). - [cds-compiler@3.8.0] API: We now report an error for most backends, if the input CSN has
meta.flavor == 'xtended'
, because only client/inferred CSN is supported. - [cds-compiler@3.8.0] Update OData vocabularies 'PersonalData', 'UI'
- [cds-compiler@3.8.0] for.odata: Shortcut annotations
@label
,@title
,@description
,@readonly
are no longer removed from the OData processed CSN. - [cds-compiler@3.8.0] to.cdl:
- Annotation arrays are split into multiple lines, if a single line would be too long.
- Nested
SELECT
s are put into separate lines to make them more readable. - (Annotation) paths are quoted less often.
- [cds-compiler@3.8.0] to.sql: The list of reserved SAP HANA identifiers was updated (for smart quoting).
- [cds.java@1.33.0] If execution of a
RequestContext
is dispatched to a different thread, the correlation id of the parent thread is propagated to the new thread even if the receiving thread already has a correlation id set in its Mapped Diagnostic Context (MDC). The original correlation id will be restored once the execution of theRequestContext
is completed. Previously, this led to anErrorStatusException
. - [cds.java@1.33.0] The implicit sorting feature does not add any sort specifications to the statement anymore, if only constant literals are on the select list.
- [cds.java@1.33.0] The
DeploymentService
API no longer validates the subscription and deployment scope. The scopes are now only validated on incoming HTTP requests (e.g. SaaS Registry subscription), that trigger theDeploymentService
API internally. This enables using theDeploymentService
API without wrapping the call in a privileged userRequestContext
. In case theMtSubscriptionService
compatibility mode is used, the scopes are still enforced when using the API. - [cds.java@1.33.0] Moved properties
cds.dataSource.csv*
into a newcds.dataSource.csv.*
section. The previous properties are still supported for backwards compatibility. - [cds.java@1.33.0] Replaced
cds.multiTenancy.healthcheck.intervalMillis
with a Duration-based propertycds.multiTenancy.healthcheck.interval
. The previous property is still supported for backwards compatibility. - [cds.java@1.33.0] Removed the Instance Manager support from the codebase, as the service is deprovisioned.
- [cds4j@1.37.0] Replace IsActiveEntity on active entities with
TRUE
inWHERE
,ORDER BY
and source ref - [cds4j@1.37.0] Reflection API: Improve warning on unsupported view definitions
- [cds@6.7.0]
cds.log().trace()
now logs stack traces inDEBUG
level, before that was onTRACE
/SILLY
level only - [cds@6.7.0] Plain SQL queries now have
req.event === undefined
, formerly this had non-deterministic values. - [cds@6.7.0] Plain SQL queries don't allow to register custom handlers, other than for event
'*'
. - [cds@6.7.0] Plain SQL queries are only supported on database services, not on application services.
- [cds@6.7.0] CQN representation of
columns=*
is not allowed anymore, insteadcolumns=['*']
should be used. This also applies to expand. - [cds@6.7.0] Only draft roots can be created via direct, non-navigation OData
POST
requests. - [cds@6.7.0] Flag
cds.features.fiori_preview
changed tocds.fiori.preview
. The old flag still works as well. - [cds@6.7.0] Flag
cds.features.fiori_routes
changed tocds.fiori.routes
. The old flag still works as well. - [cds-mtxs@1.7.0] Filter duplicate linter messages based on new LinterMessage API.
- [cds-mtxs@1.7.0] cds-mtx script now logs reasons for missing MTXS environment.
- [cds-mtxs@1.7.0]
DeploymentService
plugin handlers are now registered onserving:cds.xt.DeploymentService
. - [cap-js/graphql@0.4.0] Improved handling of
null
andundefined
values in query arguments - [cap-js/graphql@0.4.0] Empty filter lists resolve to
false
and empty filter objects resolve totrue
Fixed
- [cds-dk@6.6.1]
cds add helm
fixed html5 cloud service is now read properly. - [cds-dk@6.6.1]
cds import
now flattens the@Capabilities
annotation in the CSN for OData V4 files. - [cds-dk@6.6.1]
cds import
for OData V4 files now captures theEnumTypes
information in the CSN according toUnderlyingType
. - [cds-dk@6.6.1]
cds import
now captures the@Common.Text
annotation value properly in the CSN for OData V4 files. - [cds-dk@6.6.1]
cds init --add java
now uses local Java version when creating new Java project. - [cds-dk@6.6.1]
cds watch
terminates properly in case livereload websocket clients are connected - [cds-dk@6.6.1]
cds watch
's livereload feature works again on Node.js >= 17, where local IPv6 addresses are the default (::1
instead of127.0.0.1
) - [vscode-cds@6.6.0] highlighting of the last of a number of element names in a projection
- [vscode-cds@6.6.0] formatting of query
from A:B
: removed colon padding - [vscode-cds@6.6.0] type generation stopped working after failure until next LSP restart
- [cds.java@1.32.1] Fixed a bug causing system query option
$skip
to be applied on all pages returned when server-driven pagination is used and the configuration optioncds.query.limit.reliable-paging.enabled
is set totrue
. Now the query option$skip
is applied only on the first page of the results. - [cds.java@1.32.1] Fixed a bug causing a
NullPointerException
to be thrown when theDeploy
method is executed when an application is deployed and there are no tenants available. The database upgrade will be skipped with an info message. - [cds@6.6.1]
TypeError
when using the query API with an unknown target in x4 flavor - [cds@6.6.1] The setting for
cds.requires['cds.xt.DeploymentService'].lazyT0
is now recognized in the VS Code schema validation. - [cds@6.6.1] The HDI deployment
stdout
logs are now only visible forDEBUG
level if triggered viacds-mtxs
. They are also streamed tologs/<tenant>.log
in case you need the full deployment output, even withoutDEBUG
enabled. - [cds@6.6.1]
.forUpdate
when used for etags - [cds@6.6.1] Prevent
TypeError
if an existing draft does not have admin data - [cds@6.6.1] Outbound-streaming error handling
- [cds-mtxs@1.6.3]
t0
model DDL files do not end up in application build results any more. - [cds-mtxs@1.6.3]
cds.xt.SaasProvisioningService
: fixed an error for programmatic usage when sending the callback. - [cds-mtxs@1.6.3]
cds-mtx
commands now properly exit with code != 1 when receiving an error from theDeploymentService
. - [cds-mtxs@1.6.2] Robustness of MTX Migration has been improved.
- [cds-mtxs@1.6.1] The lazily onboarded
t0
will now implicitly be created with the same onboarding parameters (e.g. database ID) as the first onboarded tenant. - [odata-v2-adapter@1.9.20] Cache invalidation for Streamlined MTX (extensibility enabled) with CDS 6.6.1
- [odata-v2-adapter@1.9.20] Use named parameters for mtxs actions to protect against incompatible changes
- [odata-v2-adapter@1.9.20] Allow status code 304 (not modified) when reading OData V4 metadata (as success)
- [cds-dk@6.7.0]
cds watch
's livereload feature may now use a local IPv6 address (::1
) instead of alwayslocalhost
. This is usually the case on Node.js 17 or higher. - [cds-dk@6.7.0] In all but
cds compile
errors where not handled correctly, especially compiler errors not displayed in human readable format. - [cds-dk@6.7.0]
cds init
creates project sample files correctly. - [cds-dk@6.7.0] CLI commands w/ unknown arguments (
cds --foo
) clearly fail again with a proper error message - [cds-dk@6.7.0] Reduce console output in case of multitenancy-related command failures.
- [cds-dk@6.6.2] Bump
sqlite3
to 5.1.6 - [cds-dk@6.6.2] Bump
@sap/cds
to 6.2.2 - [cds-dk@6.6.2]
cds init
creates project sample files correctly. - [cds-compiler@3.8.2] parser: Identifiers that are keywords were not allowed in annotation values inside arrays
- [cds-compiler@3.8.2] compiler: Compatibility against cds-lsp was restored.
- [cds-compiler@3.8.2] to.sql/hdbcds/hdi/edm(x): Fix a crash for sub-queries inside nested expressions of on-conditions of JOINs.
- [cds-compiler@3.8.0] The CSN parser now accepts bare
list
s incolumns[]
, similar to the CDL parser. - [cds-compiler@3.8.0] to.cdl:
- Delimited identifiers in filters are now surrounded by spaces if necessary, to avoid
]]
being interpreted as an escaped bracket.
- Delimited identifiers in filters are now surrounded by spaces if necessary, to avoid
- [cds-compiler@3.8.0] to.edm(x):
- Remove empty
Edm.EntityContainer
again. Removal of an empty entity container has been revoked with version 3.5.0 which was wrong. An empty container must not be rendered as it is not spec compliant. - Correctly resolve chained enum symbols.
- Fix a program abort during structured rendering in combination with
--odata-foreign-keys
and foreign keys in structured types. - Correctly render paths to nested foreign keys as primary key in structured mode with
--odata-foreign-keys
.
- Remove empty
- [cds-compiler@3.8.0] to.hdi/to.sql/to.edm(x):
- Reject unmanaged associations as ON-condition path end points.
- Fix bug in message rendering for tuple expansion.
- Correctly detect invalid @sql.append/prepend in projections.
- [cds-compiler@3.8.0] to.hdi/to.sql: The list of SAP HANA keywords was updated to the latest version.
- [cds.java@1.33.0] Fixed a bug, causing exceptions while performing Event Mesh initialization during initial onboarding of a new tenant.
- [cds.java@1.33.0] Fixed a bug, causing
@assert.target
to fail with lock exceptions when used on an association to a draft-enabled entity. - [cds.java@1.33.0] Fixed a bug, causing failed subscriptions, because no application URL was provided to SaaS Registry.
- [cds@6.7.0] Specifying a key in
SELECT.from(...)
is now typed to produce a single result, instead of an array of results - [cds@6.7.0] Proper handling of
IsActiveEntity
in error paths - [cds@6.7.0] For cloudevents using AMQP, the type is set to
application/cloudevents+json
- [cds@6.7.0] Use
message
property in typings. - [cds@6.7.0] Typings for
cds.on('bootstrap', app => {app.use(...)
- [cds@6.7.0] Return types for
User
anddelete
in typescript - [cds@6.7.0] Typings for connect options
- [cds@6.7.0] Typings for
req.error
- [cds@6.7.0] Deployment in sidecar
- [cds@6.7.0] Error with restricting an entity and request it with $apply in combination with aggregate
- [cds@6.7.0] Combined usage of
$skiptoken
and$skip
- [cds@6.7.0] Error
package.json file is missing
in mtx extension builds - [cds@6.7.0] CLI commands w/ unknown arguments (
cds --foo
) clearly fail again with a proper error message - [cds@6.6.2] Exception during
cds deploy
without mtx - [cds@6.6.2] Service name specified with
cds deploy --to hana:serviceName
takes precedence over environment variables. - [cds-mtxs@1.7.0] HANA deployment now correctly evaluates the sql mapping configuration (e. g.
cds.data.sql_mappging.quoted
) - [cap-js/graphql@0.4.1]
cds-plugin.js
was missing infiles
property ofpackage.json
- [cap-js/graphql@0.4.0] Handling of GraphQL queries that are sent via
GET
requests using thequery
URL parameter if GraphiQL is enabled - [odata-v2-adapter@1.9.21] Proxy is open source at https://github.com/cap-js-community/odata-v2-adapter
- [odata-v2-adapter@1.9.21] The new proxy library is fully compatible and can be used as drop-in replacement
- [odata-v2-adapter@1.9.21] This library is now deprecated and will no longer receive
Removed
- [cds-compiler@3.8.0] for.odata: Undocumented shortcut annotation
@important
has been removed.
February 2023
Added
- [cds-dk@6.6.0]
cds compile
added a new target formatasyncapi
to convert CDS models to AsyncAPI documents. - [cds-dk@6.6.0]
cds pull
now hints at base-model name forusing
statement. - [vscode-cds@6.5.1] The special
up_
element is now supported in navigation - [cds-compiler@3.7.0] Several
annotate
statement can append/prepend values to the same array-valued annotation without ananno-duplicate
error, even if there is nousing from
dependency between the involved sources - [cds-compiler@3.7.0] SQL methods such as
point.ST_X()
can be used in views. - [cds-compiler@3.7.0] The SQL
new
keyword can be used forST_*
types such asnew ST_POINT('Point(0.5 0.5)') )
- [cds.java@1.32.0] Introduced a new API for managing subscriptions, unsubscriptions and tenant upgrades. It is leaner and it is easier to integrate custom handlers, as the API doesn't distinguish between synchronous and asynchronous operations any more.
- [cds.java@1.32.0] The
cds
actuator endpoint now includes datasource pool statistics. - [cds.java@1.32.0] The CAP Java Maven archetype allows to choose the target JDK version with the new parameter
jdkVersion
. The default version is17
, supported values are11
and17
. - [cds.java@1.32.0] The new OData V4 serializer now supports a new mode in which it buffers the response before streaming it to the client. This can be enabled in case serialization errors after streaming to the client has already started must be avoided. To enable it set
cds.odataV4.serializer.buffered
totrue
. - [cds.java@1.32.0] OData V4 adapter now supports PATCH requests with deltas on entity collections (Beta)
- [cds4j@1.36.0] Deduplicate inline defined simple types in CDS models
- [cds4j@1.36.0]
CQL.refSegment(id, filter)
to construct segments with filters - [cds@6.6.0] Improved error handling for
cds build
if the SaaS base model is missing in an extension project. - [cds@6.6.0] Support for reliable paging using
$skiptoken
. Can be activated viacds.query.limit.reliablePaging = true
- [cds-mtxs@1.6.0]
t0
onboarding can now happen lazily before the first subscription by settingcds.requires.['cds.xt.DeploymentService'].lazyT0
. - [cds-mtxs@1.6.0] E-Tag handling for the
getCsn
API in sidecar scenarios has been introduced. - [cds-mtxs@1.5.1] Jobs are now cleaned up in the database after configurable cutoff times. The following options are possible:
jobCleanupInterval
: Frequency in milliseconds for cleaning up finished or failed jobs. Default is 1 day.jobCleanupAge
: Time in milliseconds for the minimum age of the failed or finished jobs to delete. Default is 1 day.jobCleanupIntervalStale
: Frequency in milliseconds for cleaning up queued or running jobs. Default is 7 days.jobCleanupAgeStale
: Time in milliseconds for the minimum age of the queued or running jobs to delete. Default is 7 days.
- [cds-mtxs@1.5.1] MTXS migration script now allows to cleanup @sap/mtx metadata containers.
Changed
- [cds-dk@6.6.0]
cds env
now allows inspecting entries with optionalget
command. E.g.cds env requires.db
. - [cds-dk@6.6.0]
cds add multitenancy
now uses async SaaS Provisioning Service onboarding by default. - [cds-dk@6.6.0]
cds add multitenancy
for Java will now addsqlite3
todevDependencies
in the sidecarpackage.json
. - [cds-dk@6.6.0]
cds add extensibility
now works for Java projects out-of-the-box. - [cds-dk@6.6.0]
cds import
now captures the Edm Primitive types without CDS mapping with annotation@odata.Type
and marks the type ascds.String
. - [cds-dk@6.6.0]
cds add helm
connectivity service instance is no longer created. - [cds-dk@6.6.0]
cds init
uses latest Maven Java archetype version 1.32.0 for creating Java projects. - [cds-dk@6.5.2] New versions of
@sap/cds-mtxs
and@sap/cds-compiler
- [cds-dk@6.5.2]
cds init
uses latest Maven Java archetype version 1.31.1 for creating Java projects. - [cds-dk@6.5.1]
cds init
uses latest Maven Java archetype version 1.31.0 for creating Java projects. - [eslint-plugin-cds@2.6.3] Filter rule reports using inferred models on $location.
- [eslint-plugin-cds@2.6.2] Fixed rule reports using inferred models to always receive valid file $locations.
- [vscode-cds@6.5.1]
mixin
is now mapped toLSP.SymbolKind.Operator
(was defaultString
) - [vscode-cds@6.5.1] a commit hash of the last commit is now included in release under dist/state
- [vscode-cds@6.5.1] target platform back to
es2020
- [cds-compiler@3.7.0] Update OData vocabularies 'Common', 'Core', 'Measures', 'PDF', 'UI'.
- [cds-compiler@3.7.0] to.edm(x): Empty complex types are no longer warned about as they are allowed.
- [cds.java@1.32.0] The old
MtSubscriptionService
API has been deprecated in favour of the newDeploymentService
API. Event handlers on theMtSubscriptionService
API are continued to be triggered in a compatibility mode (enabled by default). Migration to the new API is encouraged. - [cds.java@1.32.0] The HTTP-based deploy endpoints are deprecated and not supported with the new
DeploymentService
API. In case of enabled compatibility mode the HTTP-based deploy endpoints are still available. Migration to the Javamain
-task based deployment is encouraged. - [cds.java@1.32.0] Programmatic setting of the App UI URL has been deprecated. In case of enabled compatibility mode it is still possible through the old
MtSubscriptionService
-based APIs. Consider migrating to the property-based setting of the application URL. - [cds4j@1.36.0] Annotations on elements with inline-defined simple type are not repeated on the type
- [cds4j@1.36.0] Deprecate setters
RefSegment:id
andRefSegment:filter
, instead useCQL.refSegment(id, filter)
- [cds4j@1.36.0] Optimized to-many expands are now also executed by path (join/subquery) if only a single root entity is selected
- [cds@6.6.0]
cds.serve(ServiceName)
(andcds serve -s ServiceName
) now exactly serve services with the given names. Previously, all services that ended with the given name were served as well, e.g.MyServiceName
andServiceName
, which might be problematic for applications that bootstrap services one by one. - [cds@6.6.0] Optimize
@cds.persistence.journal
filtering forlast-dev
CSN file. - [cap-js/graphql@0.3.0] Replaced deprecated GraphQL HTTP server
express-graphql
withgraphql-http
- [cap-js/graphql@0.3.0] Serve GraphiQL 2 via included HTML instead of relying on the server framework (
express-graphql
included GraphiQL 1) - [cap-js/graphql@0.3.0] Bump
graphql
version to 16 - [cap-js/graphql@0.3.0] Execute query resolvers in parallel and mutation resolvers serially
- [cds-mtxs@1.5.1]
/-/cds/saas-provisioning/tenant
: consumers using themtx_status_callback
don't need a SaaS registry binding to the application any more.
Fixed
- [cds-dk@6.6.0]
cds unsubscribe --from
flag now recognized - [cds-dk@6.6.0]
cds import
now addscds.Boolean
as dummy return type ifReturnType
forFunctionImport
is missing in the OData V2 edmx. - [cds-dk@6.6.0]
cds import
resolves the$Cast
construct in the CSN for OData V4 files. - [cds-dk@6.6.0]
cds lint
now reports like ESLint in case of missing plugin@sap/eslint-plugin-cds
- [cds-dk@6.5.2]
cds migrate
no longer fails because of authorization error - [cds-dk@6.5.1]
cds deploy
no longer fails to write to apackage.json
file that has nocds
section - [vscode-cds@6.5.1] Closing a CDS file led to 'forgetting' the content in the index. This resulted in:
workspace/symbols
not showing all definitions- error messages of symbols not found
- navigation broken for 'closed' definitions
- [vscode-cds@6.5.1] formatting and highlighting of nested element and enum extensions
- [vscode-cds@6.5.1] code completion for keywords and identifiers may have used wrong compiler messages, thus not working as expected
- [cds-compiler@3.7.2] CSN parser: Structured annotations containing
=
were accidentally interpreted as expressions, even though the corresponding beta flag was not set. - [cds-compiler@3.7.0]
parse.cql
andparse.expr
no longer ignore type arguments such ascast(field as String(12))
. One argument is interpreted aslength
and two are interpreted asprecision
andscale
, similar to how custom types and their arguments are interpreted. - [cds-compiler@3.7.0] Previously, the compiler could not always find a unique redirection target if there were one direct projection on the model target and two or more projections on that projection.
- [cds-compiler@3.7.0] The performance of compiler-checks for deeply nested expressions/queries has been improved
- [cds-compiler@3.7.0] Fix various bugs in Association to Join translation:
- Recursive
$self
dereferencing - Correct resolution of table alias in non-bijective
$self
backlink associations in combination with explicit redirection.
- Recursive
- [cds-compiler@3.7.0] to.edm(x): Process value help list convenience annotations on unbound action parameters.
- [cds-compiler@3.6.2] to.hdi(.migration): Don't render
-- generated by cds-compiler version
comment at the top of the HDI-based artifacts, as this caused HDI to detect the file aschanged
and redeploy, causing way longer deployment times. Old behavior can be enabled with optiongeneratedByComment: true
. - [cds-compiler@3.6.2] to.sql/hdi/hdbcds: Correctly handle variables like
$user
inexists
filters. - [cds.java@1.32.0] Fixed a bug causing uncommitted transactions in case different PersistenceServices were used in an
@Transactional
-annotated method, outside of anyChangeSetContext
. This scenario is currently not supported and now causes an exception to be thrown. - [cds.java@1.32.0] Fixed a bug causing incorrectly handled URIs in case a combined service and entity path (e.g.
/v1/FooEntity
) was a substring of a service path (e.g./v1/Foo
). - [cds.java@1.32.0] Bumped version of the
jacaco-maven-plugin
in the integration-tests module of a newly created CAP Java project to a version that is compatible with JDK 17. - [cds.java@1.31.1] OData V4 responses with entities containing stream properties, now indicate if the stream property is set by providing the
property@odata.mediaContentType
annotation. - [cds4j@1.36.0] Virtual elements of the entity annotated with
@cds.search
or@Search.defaultSearchElement
are no longer searched - [cds4j@1.35.1] Fix
equals
andhashCode
ofCdsData
andRow
to be equal toMap:equals
/Map:hashCode
- [cds4j@1.35.1] Fix
orderBy
in optimized to-one-to-many expands - [cds4j@1.35.1] Connect multiple
or
andand
predicates with shallower tree/call stack - [cds4j@1.35.1] Prevent unique constraint violations on concurrent deep upserts with full-set payload
- [cds4j@1.35.1] null values are treated as
CqnBoolLiteral.TRUE
inConjunction
,Disjunction
andNegation
. - [cds@6.6.0]
cds deploy --to hana
no longer callscds bind
whenVCAP_SERVICES
is provided, e.g viadefault-env.json
. - [cds@6.6.0]
$search
on an entity without String elements - [cds@6.6.0] Only elements from type
cds.String
are searchable when combining$apply
and$search
- [cds@6.6.0] Error message for missing database connection in draft case
- [cds@6.6.0] Extensibility with in-memory Sqlite
- [cds@6.6.0] OData adapter error messages
- [cds@6.6.0] Columns in navigation path are now added to the SELECT.columns in new parser
- [cds@6.6.0] Application service calls on draft enabled entities using aliases
- [cds@6.6.0] Custom mtxs build tasks now use the correct default
src
folder value. - [cds@6.6.0]
cds build
adds a.hdiconfig
file when creating HANA migration tables if none is existing. - [cds@6.6.0] UPSERTs using reserved keywords
- [cds@6.6.0] Fix outbound-streaming error handling
- [cds@6.6.0] Rollback transaction if inbound streaming fails
- [cds@6.6.0] Custom database initialization in
db/init.js
now skips thet0
tenant for multitenant apps. - [cds@6.6.0] Concurrent etag calculation for UPDATE and DELETE
- [cds@6.6.0] Typings for
cds.delete()
- [cds@6.6.0] CQN for
not
operator with OData functions - [cds@6.6.0] Expand on composition of aspect for draft enabled entities
- [cds@6.6.0] Better error messages are provided for errors with HTTP status code
400
,500
and501
- [cap-js/graphql@0.3.1] Add
app
folder tofiles
property ofpackage.json
to be included for publishing tonpm
- [cds-mtxs@1.6.0] Fixed input validation for feature toggles containing
_
or-
. - [cds-mtxs@1.5.1]
cds migrate
does not crash any more when no options are supplied. - [cds-mtxs@1.5.1]
cds-mtx-migrate
command now terminates immediately when the migration is finished. - [cds-mtxs@1.5.1] Parameter
--dry
forcds migration
now also skips the creation of thet0
tenant. - [cds-mtxs@1.5.1]
ModelProviderService
: Non-repeated dots are now allowed in feature toggles, e.g.foo.bar.baz
is a valid feature toggle name. - [odata-v2-adapter@1.9.19] Provide subdomain information to logs
- [odata-v2-adapter@1.9.19] Use correct correlation-id for logging (setup CDS context correctly)
- [odata-v2-adapter@1.9.19] React to incompatible change of mtxs getEdmx, to provide (internal) model parameter
- [odata-v2-adapter@1.9.19] Enhance example app to show usage of bound/unbound OData V2 actions in SAP Fiori UI via annotation
January 2023
Added
- [cds-dk@6.5.0]
cds run/serve/migrate --resolve-bindings
now pulls required service credentials if bound viacds bind
. (beta) - [cds-dk@6.5.0]
cds add helm
now supports multitenancy. - [cds-dk@6.5.0]
cds bind
now supports binding ofuser-provided service instances
from SAP BTP's Cloud Foundry. - [cds-compiler@3.6.0] API: There are new API functions for
to.cdl
:smartId
,smartFunctionId
anddelimitedId
. - [cds-compiler@3.6.0] CDL parser: when defining a parameter for entities, actions or functions, you can use a regular identifier for its name even if that is a reserved name like
in
. - [cds-compiler@3.6.0] The first parameter of a bound action or function can be typed with
$self
ormany $self
even if no type named$self
exists. - [cds-compiler@3.6.0] If an aspect
sap.common.TextsAspect
exists in thesap.common
context, it will be included in all.texts
entities. This allows to extend.texts
entities via extending the aspect. Example:cdsentity E { key id : Integer; content: localized String; } extend sap.common.TextsAspect with { elem: String; }; // from @sap/cds common.cds aspect sap.common.TextsAspect { key locale: String; }
entity E { key id : Integer; content: localized String; } extend sap.common.TextsAspect with { elem: String; }; // from @sap/cds common.cds aspect sap.common.TextsAspect { key locale: String; }
- [cds-compiler@3.6.0] to.edm(x): Support explicit binding parameter
<id>: [many] $self
for OData V4 only. The explicit binding parameter is rendered as any other parameter and$self
is replaced with the binding type but only if no$self
definition exists in the model. This gives full control over the binding parameter including name, nullability, default value and annotations. The explicit binding parameter is ignored for OData V2 and has precedence over@cds.odata.bindingparameter
. - [cds@6.5.0] New aspect
sap.common.TextsAspect
in common.cds - [cds@6.5.0] New syntax for collection bound entities
- [cds-mtxs@1.5.0] The built-in Service Manager client now caches binding information in-memory.
- [cds-mtxs@1.5.0] The
optimise_file_upload
HDI deployment option is now supported. - [cds-mtxs@1.5.0] MTX migration script now allows to split extensions based on extension file names using regular expressions.
- [cds-mtxs@1.5.0] Now, provisioning supports SaaS applications using extensibility in combination with migration tables. Before, provisioning failed with a HDI deployment error. Note: Extending migration table artifacts is not supported.
- [vscode-cds@6.5.0] Experimental user setting
cds.typeGenerator.enabled
to trigger a globally installed cds type generator when saving a model file. - [cds4j@1.35.0] New
Update.entry(Map<String, ?> entry)
method to improve the API for single updates with key values in update data. - [cds4j@1.35.0] Added generation of builder interfaces for CDS defined events.
- [cds4j@1.35.0] New syntax defining the binding parameter for bound functions and actions is supported.
- [cds4j@1.35.0] Added
top
andskip
methods toModifier
to modify pagination settings - [cds4j@1.35.0] New interfaces
CdsBoundAction
andCdsBoundFunction
represent bound functions and actions of an entity.
Changed
- [cds-mtxs@1.4.4]
cds.xt.DeploymentService
configuration has been flattened. Instead ofjsyou can now also write"hdi": { "create": { "provisioning_parameters": { "database_id": "<ID>" }, "binding_parameters": { "key": "value" } } }
"hdi": { "create": { "provisioning_parameters": { "database_id": "<ID>" }, "binding_parameters": { "key": "value" } } }
jsThe old configuration is still supported, but you're advised to migrate to the new configuration for improved readability."hdi": { "create": { "database_id": "<ID>" }, "bind": { "key": "value" } }
"hdi": { "create": { "database_id": "<ID>" }, "bind": { "key": "value" } }
- [cds-mtxs@1.4.4]
/-/cds/jobs/pollJob
now also returns atenants
field, so tenant-specific tasks don't have to be polled individually. An example response format looks like this:js{ "status": "FAILED", "op": "upgrade", "tenants": { "non-existing-tenant": { "status": "FAILED", "error": "Tenant 'non-existing-tenant' does not exist" }, "existing-tenant": { "status": "FINISHED" } } }
{ "status": "FAILED", "op": "upgrade", "tenants": { "non-existing-tenant": { "status": "FAILED", "error": "Tenant 'non-existing-tenant' does not exist" }, "existing-tenant": { "status": "FINISHED" } } }
- [cds-dk@6.5.0]
cds push
now runs a build of the extension project to update the pushed extension archive (unless custom archive given). - [cds-dk@6.5.0]
cds init
andcds bind
no longer use a spinner when performing long running operations. - [eslint-plugin-cds@2.6.1] Fixed rule name in ESLint config:all to
@sap/cds/start-elements-lowercase
. - [eslint-plugin-cds@2.6.1] Allow expensive rules to be reported when running from ESLint Cli.
- [eslint-plugin-cds@2.6.1] In auth-valid-restrict-grant, only suggest closely related user roles.
- [eslint-plugin-cds@2.6.1] In auth-valid-restrict-to, only suggest
*
if other entries apart from*
exist. - [cds-compiler@3.6.0] Many messages concerning the CDL and CSN syntax are improved: affects message ids (
syntax-…
), message texts and the error locations. - [cds-compiler@3.6.0] Duplicate doc-comments are now errors, similar to duplicate annotations.
- [cds-compiler@3.6.0] Update OData vocabularies 'Aggregation', 'Analytics', 'Capabilities','Common', 'ODM', 'Offline', 'PDF', 'Session', 'UI'.
- [cds.java@1.30.2] The personal data annotation
@PersonalData.EntitySemantics: 'Other'
now has the same effect on entities like@PersonalData.EntitySemantics: 'DataSubjectDetails
. - [cds.java@1.30.2] Renamed the annotation
@kafka.channel
to@kafka.topic
. - [cds@6.5.0] Successive calls to
SELECT.where()
wraps existing clause in brackets if it containsor
. E.g.jsSELECT.from `X` .where `x` .or `y` .where `z` //> SELECT from X where (x or y) and z`
SELECT.from `X` .where `x` .or `y` .where `z` //> SELECT from X where (x or y) and z`
- [cds@6.5.0]
cds build
for SAP HANA now adds anengines.node
version to the generateddb/package.json
. This will help in the future when runtime environments change their default to some version higher than the one supported by@sap/hdi-deploy
. - [cds@6.5.0]
cds build
checks the consistency of built-in models for java projects. An error is logged if some model files could not successfully be resolved indicating that a required npm module might be missing. - [cds@6.5.0] Status code of draft actions are set in respective handler instead of protocol adapter
- [cds@6.5.0]
cds deploy --dry
no longer loads thesqlite3
module by mistake. This fixes a regression when building Java projects. As a side effect a file with the nameundefined
was created in the project root folder. - [cds@6.5.0] Internal representation of pseudo roles
internal-user
andsystem-user
- [vscode-cds@6.5.0] CAP notebooks: code cells (
terminal
andshell
) have now their own working directory - [vscode-cds@6.5.0] minimum VSCode version is now 1.73.0
- [cds4j@1.35.0] In SQL statements generated by the runtime CDS identifiers are now always in db-specific casing and delimited.
- [cds4j@1.35.0] Moved generation of
CDS_NAME
constant to builder interfaces of CDS events. - [cds4j@1.35.0] Annotate generated accessor and builder interfaces with
@Generated
from the packagejavax.annotation.processing
only if compiled with Java > 8. - [cds4j@1.35.0] Deprecate interface
CqnModifier
, instead useModifier
- [cap-js/graphql@0.2.0] Register
aliasFieldResolver
during schema generation instead of passing it to the GraphQL server - [cap-js/graphql@0.2.0] The filters
contains
,startswith
, andendswith
now generate CQN function calls instead of generatinglike
expressions directly
Fixed
- [cds-compiler@3.5.4] Allow window functions also with a deprecated flag being set.
- [cds-compiler@3.5.4] to.edm(x): Fix program abort due to malformed error location in EDM annotation preprocessing.
- [cds-compiler@3.5.4] to.sql/hdi/hdbcds: The option
pre2134ReferentialConstraintNames
can be used to omit the referential constraint identifier prefix "c__". - [cds-mtxs@1.4.4]
cds.xt.SaasProvisioningService
:*
is not allowed as a tenant name any more. - [cds-mtxs@1.4.4] Namespace check for new entities in extensions now also covers new root entities.
- [cds-mtxs@1.4.4] Asynchronous operations now correctly send the callbacks defined via
status_callback
ormtx_status_callback
. - [odata-v2-adapter@1.9.17] Fix special replacement pattern in $filter conversion
- [cds-dk@6.5.0]
cds import
now generates flattened value for@Common.FieldControl
annotation in the CSN for OData V4 files. - [cds-dk@6.5.0]
cds import
now treats theCollectionKind
property attribute in OData V2 similar toCollection(<data_type>)
in OData V4. - [cds-compiler@3.6.0] If an entity with parameters is auto-exposed, the generated projection now has the same formal parameters and its query forwards these parameters to the origin entity.
- [cds-compiler@3.6.0] to.hdbcds: Aliases for foreign
keys
were not quoted if necessary. - [cds-compiler@3.6.0] to.cdl:
- Aliases for
expand
and foreignkeys
were not quoted if necessary. - Query functions that are CDL keywords were not properly quoted.
- CSN
doc
properties containing*/
resulted in invalid CDL. To avoid compilation issues,*/
is escaped as*\/
.
- Aliases for
- [cds-compiler@3.6.0] to.edm(x): Respect record type hint
$Type
in EDM JSON as a fully qualified@type
URI property. - [cds-compiler@2.15.10] If an entity with parameters is auto-exposed, the generated projection now has the same formal parameters and its query forwards these parameters to the origin entity.
- [cds-compiler@2.15.10] to.edm(x): Respect record type hint
$Type
in EDM JSON as a fully qualified@type
URI property. - [cds.java@1.30.2] Fixed a bug in the
cds-maven-plugin
which caused the goalgenerate
to fail when triggered in IDEs. - [cds.java@1.30.2] Fixed a bug which caused events to be silently dropped by the logical layer if qualified names of CDS-defined events didn't match, even when using
@topic
. - [cds4j@1.34.1] Move CDS_NAME constant to generated builder interfaces of CDS events
- [cds4j@1.34.1] Fixed
hashCode
ofRow
- [cds4j@1.34.1] Fixed structure of empty results for queries w/ toOne expands that only have nested toMany expands
- [cds4j@1.34.1] Don't allow to connect a conjunction/disjunction to itself (fixed stack overflow)
- [cds4j@1.34.1] Fixed search on entities w/ virtual String elements
- [cds@6.5.0] Resolve i18n folders from the root directory
- [cds@6.5.0] Types for
cds.test
- [cds@6.5.0] Types for
srv.send
- [cds@6.5.0] Optimized Search: Search queries for localized entities will now use default values, if no localized data is found in the corresponding localized tables on SAP HANA. Corrected aliasing by search queries with navigation.
- [cds@6.5.0] Resolution of
type of
references during minify in bootstrap - [cds@6.5.0] Generation of odata-v2 URL in case of select=* in
urlify()
- [cds@6.5.0] Build resets changed
cds.env
andcds.root
when finished - [cds@6.5.0] Expand error when using infix filters
- [cds@6.5.0] CDS configuration schema validation for
@sap/cds-mtxs
- [cds@6.5.0] Typings for QL API
- [cds@6.5.0] Return types of asynchronous service API
- [cds-mtxs@1.5.0] MTX migration script now detects enabled multitenancy also for a sidecar project setup.
- [cds-mtxs@1.5.0] Improved robustness for MTX migration script, e. g. with inconsistent old metadata tenants.
- [odata-v2-adapter@1.9.18] Unicode encode messages header
- [cds-dk@6.5.0]
cds import
now generates flattened value for@Common.FieldControl
annotation in the CSN for OData V4 files. - [cds-dk@6.5.0]
cds import
now treatesCollectionKind
property attribute in OData V2 similar toCollection(<data_type>)
in OData V4. - [vscode-cds@6.5.0] workspace/symbols request didn't include definitions of a file after it was closed.
- [cds4j@1.35.0] temporal data: truncate
validFrom
andvalidTo
to precision supported by DB - [cap-js/graphql@0.2.0] Schema generation crash that occurred if an entity property is named
localized
- [cap-js/graphql@0.2.0] The field
totalCount
could not be queried on its own
Removed
- [vscode-cds@6.5.0]
@cds.doc
annotation, which was marked as deprecated for a long time, is no longer considered in requests like document/hover. Use doc comments (/** ... */
) instead. The quick fix to migrate from @cds.doc to doc comments is still in place, but is likely to be removed in near future.