Changelog 2023/2024
January 2024
Fixed
- [cds@7.5.2] Service-level ETag handling in legacy OData server
- [cds@7.5.2] Only provide model to ModelProvider if extensibility or feature toggles are active
- [cds@7.5.2] OData server driven paging when using feature flags
cds.env.features.odata_new_parserandcds.env.features.okra_skip_query_options - [cds-mtxs@1.14.2]
POST /-/model-provider/getEdmxcorrectly ad-hoc compiles EDMX files for extended or toggled models. - [cds-mtxs@1.14.2]
POST /-/model-provider/getEdmxre-compiles the EDMX if amodelis passed. - [cds-mtxs@1.14.2] More resilient retry handling for 'authentication failed' errors in SAP HANA deployments.
December 2023
Added
- [cds-dk@7.5.0]
cds addplugin support (beta). - [cds-dk@7.5.0]
cds compiletoopenapinow creates readonly endpoints for entities annotated with@cds.autoexpose(d). - [cds-dk@7.5.0]
cds compiletoopenapinow supports deepInsert and deepUpdate incase of entity property containing a composition. - [cds-dk@7.5.0]
cds add liquibasesupport for Java. - [vscode-cds@7.5.0] Unused imports are reported as warning and grayed out incl. quickfix to remove them
- [vscode-cds@7.5.0] Snippet proposals for artifact elements in an
annotatestatement - [vscode-cds@7.5.0] New user setting
cds.contributions.enablement.additionalAnalyticalAnnotations(default: off) to get annotation support for analytical queries (experimental) - [cds-compiler@4.5.0] parser:
annotatecan now annotate entity parameters, elements and bound actions in one statement. - [cds-compiler@4.5.0] compiler: A single
annotatestatement can now be used to annotate parameters, elements and bound actions in one statement. - [cds-compiler@4.5.0] to.edm(x): Key elements of type
cds.UUIDare annotated with@Core.ComputedDefaultValueif they are defined directly in the entity. Elements of typecds.UUIDthat are defined in a named structured type and used to define a key element are not annotated, instead a warning is raised if such elements are not annotated with@Core.ComputedDefaultValue. - [cds-compiler@4.5.0] to.sql|hdi: Add option
withHanaAssociationswhich, for sqlDialecthana, allows suppressing the generation of theWITH ASSOCIATIONS. - [cds.java@2.5.0] EDMX metadata loaded from MTXS sidecar is now localized lazily, if
cds.odata-v4.lazy-i18n.enabledis set totrue. This avoids caching different translations of the same EDMX in memory. - [cds.java@2.5.0]
CqnServicebeans, whose name match their CDS definition are now marked as primary, avoiding@Qualifierannotations when autowiring these. - [cds.java@2.5.0]
app_tidis now preferred overzoneIdwhen reading tenants from Subscription Manager Service. - [cds.java@2.5.0] The function
matchesPatternis now supported in incoming and outgoing OData V4 requests. - [cds.java@2.5.0] The
whereproperty of@restrictannotations now supports expressions as alternative to the String format. - [cds.java@2.5.0] Draft GC for a specific tenant and service now occurs asynchronously as a side effect of a draft activation.
- [cds.java@2.5.0] Feature
cds-feature-auditlog-v2now also supports the service planpremiumof the Audit Log Service and, by that, can be used by external customers. - [cds.java@2.5.0] Creation of CAP-specific spans for Open Telemetry can be controlled using a dedicated logger
com.sap.cds.otel.span. - [cds4j@2.5.0] CDS Model Reader: Support expressions in annotations
- [cds4j@2.5.0] SAP HANA JSON Document Store: support
orderByfor queries that target a document collection - [cds4j@2.5.0] New
CQL.matchesPatternfilter with regular expression support - [cds4j@2.5.0] The code generator supports annotating services with
@cds.java.nameto customize the name of the corresponding generated service interface - [cds4j@2.5.0] Beta: Support using session context variable
$tenantin view definitions - [cds4j@2.5.0] Beta: Capture transformation from OData v4's
$applyoption asCqnTransformations - [cds4j@2.5.0] Beta: Support updates with expressions via
Update::setmethod - [cds@7.5.0] Support for expressions in where clause of
@restrictannotation.- Example:
@(restrict : [{ grant : ['*'], where : (NAME = $user) }])
- Example:
- [cds@7.5.0] Function
cds.unboxed(srv)to get the non-outboxed variant of the service - [cds@7.5.0] Service implementations can now be provided in .mjs modules.
- [cds@7.5.0] Remote services: advanced configurable
CSRFtoken fetching HTTP method and the URL. For example, in the configuration of your remote services, you can now configure the HTTP method and URL as follows:json"cds": { "requires": { "API_BUSINESS_PARTNER": { "kind": "odata", "model": "srv/external/API_BUSINESS_PARTNER", "csrf": { // this configuration implies `csrf: true` "method": "get", "url": "..." } } } } - [cds@7.5.0]
cds.log's built-in JSON formatter:- Extract custom fields (
cds.env.log.als_custom_fields) and categories from args (not only error-like first objects)- Example:
LOG.info('foo', { query: 'SELECT * FROM DUMMY' }, 'bar', { categories: ['baz'] })
- Example:
cds.env.log.mask_headers = [...]allows to specify a list of matchers for which the header value shall be masked (i.e., printed as***)- Default:
['/authorization/i', '/cookie/i']
- Default:
- Extract custom fields (
- [cds@7.5.0]
cds.env.fiori.bypass_draftfeature flag, designed to enable direct modifications viaPOSTandPATCHof active instances in lean draft mode (cds.env.fiori.lean_draft=true). For example:
http
POST /Orders
{
"IsActiveEntity": true
}- [cds@7.5.0] Auth kind
ias: same SAML attr API as auth kindxsuaafor easier migration
Changed
- [cds-dk@7.5.0]
cds add application-loggingcan now be used in place ofcds add kibana.cds add kibanais deprecated. - [cds-dk@7.5.0]
cds add application-loggingnow uses thestandardservice plan in themta.yaml, instead oflite. - [cds-dk@7.5.0]
cds add application-loggingdoesn't add thecds.features.kibana_formatterflag any more. - [cds-dk@7.5.0]
cds v -iwill now insert a default placeholder ifrepositoryorrepository.urlis undefined in yourpackage.json. - [cds-dk@7.5.0] Use supported node versions in SAP HANA database modules.
- [cds-dk@7.5.0]
cds builduses console.log to correctly format log output. - [cds-dk@7.5.0] Retrofit
cds buildplugin register API. - [cds-dk@7.5.0]
cds buildlog output has been streamlined. - [cds-compiler@4.5.0] Update OData Vocabulary: 'Common'.
- [cds-compiler@4.5.0] api: Reject CSN as input in backends, if it is a CSN in flavor
parsedwith a non-emptyrequiresarray. Reason being that the model is not considered a "full" CSN, as dependencies were not resolved. - [cds.java@2.5.0] The periodic draft GC job pauses for some time after each GC execution for a tenant to reduce load on the MTXS sidecar.
- [cds.java@2.5.0] The outbox processor now checks existance of outbox entries using the base model, before processing outbox entries, to reduce load on the MTXS sidecar.
- [cds@7.5.0] Removed and integrated former
ctx-authmiddleware intocds.authmiddleware - [cds@7.5.0]
cds.log:cds.env.log.format = 'plain'|'json'allows to configure which built-in formatter is used. Defaults tojsonin production,plainotherwise.- If a built-in JSON formatter is used:
- Field
tenant_subdomainis filled if running on CF and information is available through authentication - Additional CF-related fields are filled if running on CF
- Custom fields (
cds.env.log.als_custom_fields) are filled if bound to an instance of Application Logging Service - Field
categoriesis filled if bound to an instance of Application Logging Service
- Field
- Config
cds.env.log.kibana_custom_fieldschanged tocds.env.log.als_custom_fields(ALS = Application Logging Service) with compatibility until the next major
- [cds@7.5.0] Package
passportis no longer required (ifcds.env.requires.middlewaresis not set tofalse) - [cds@7.5.0] Type definitions for the APIs of this package are now maintained in package
@cap-js/cds-types.- If you used one of the types
CSN,Definitions,entityof @sap/cds/apis/reflect, use theLinkedcounterparts instead. - If you used the type
CQNQueryof @sap/cds/apis/cqn, useSELECTor a union type instead. - This also includes various fixes to Typings for
req.subjectlikeSELECT.from(req.subject)SELECT.columns([...])cds.dbcds.utilcds.context.features
- If you used one of the types
- [cds@7.5.0] The number of files logged on
cds serveis now limited to 30 by default. You can run withDEBUG=serveto show all files. - [cds@7.5.0]
express.staticis only mounted if the target folder (cds.folders.app) exists - [cds@7.5.0]
cds.outbox.Messagesno longer uses aspectcuidto reduce model size impact in case@sap/cds/commonis not used otherwise - [cds-mtxs@1.14.1]
lazyT0now also works in a sidecar scenario withmultitenancynot explicitly set totrue. - [cds-mtxs@1.14.1] The default for
cds.requires.multitenancy.jobCleanupIntervalStaleis reduced from one week to two days. - [cds-mtxs@1.14.0] Various performance improvements for retrieving EDMX or CSN models.
- [cds-mtxs@1.14.0] Improved logging for
cds.xt.JobsServiceorcds.xt.DeploymentService. - [cds-mtxs@1.13.4] The built-in Service Manager client uses async APIs for creating or deleting service bindings by default.
Fixed
- [cds-dk@7.5.0]
cds add postgresfor Java now uses thedefaultprofile when called without the--foroption. - [cds-dk@7.5.0]
cds compiletoopenapinow addstitleanddescriptionfrom@Core.Descriptionand@Core.LongDescriptionrespectively to reduce duplicate descriptions. - [cds-dk@7.5.0]
cds build --productionnow loads cds plugins fromdevDependencies. - [cds-dk@7.5.0] Less redundant messages on request errors.
- [cds-dk@7.5.0] Avoid empty error message when
cds pushfails. - [cds-dk@7.5.0] Better type definitions for programmatic APIs provided by
cds-dk. - [cds-dk@7.5.0] Better error message if old
@sap/cdsversions <= 5 are used. - [cds-dk@7.5.0] Calls from Yeoman generator are now handled correctly.
- [cds-dk@7.5.0]
cds compiletoopenapinow adds correct schema$reffor patch operation. - [vscode-cds@7.5.0] CDS schema loading is more robust
- [vscode-cds@7.5.0] Removed failing
copyfunction for code blocks fromCAP Release Notes - [vscode-cds@7.5.0] CAP with Typescript (beta): command line for creating types now also works correctly on Windows
- [vscode-cds@7.5.0] Padding and highlighting of identifiers with Unicode characters
- [vscode-cds@7.5.0] Highlighting of
storedkeyword - [cds-compiler@4.5.0] compiler:
- Fix false positives of cyclic dependencies for calculated elements.
- Fix cardinality on source associations when publishing them with a filter (+ different cardinality) in a projection. The cardinality was incorrectly changed on the source as well.
- [cds-compiler@4.5.0] CDL parser:
- More numbers that would lose relevant digits due to precision loss are stored as strings in CSN (i.e.
{ "literal":"number", "val": "1.0000000000000001" }). - Nested table expressions and queries in the FROM clause (with surrounding parentheses) could cause some constructs such as
virtualto be not properly parsed.
- More numbers that would lose relevant digits due to precision loss are stored as strings in CSN (i.e.
- [cds-compiler@4.5.0] to.hdi.migration: Don't drop-create the primary key when only a doc-comment has changed.
- [cds-compiler@4.5.0] to.cdl: Fix edge case where
@A.![B#]was not rendered correctly. - [cds-compiler@3.9.12] compiler:
- SQL function
STDDEV(*)was not parsable. - Numbers in scientific notation
-1e1were sometimes not recognized via CSN input.
- SQL function
- [cds-compiler@3.9.12] for.odata: Fix crash when using a projection with associations as action parameter type.
- [cds-compiler@3.9.12] for.hana: Fix a bug in association to join translation, expect ON condition operand to be a function without arguments.
- [cds-compiler@3.9.12] to.edm(x):
- Omit
EntitySetattribute onEdm.FunctionImportandEdm.ActionImportthat return a singleton. - Don't render
Scale: variableforcds.Decimal(scale:0).
- Omit
- [cds-compiler@3.9.12] to.sql/hdi/hdbcds: consider
havingpredicate forexistsexpansion - [cds.java@2.5.0] Fixed a bug, causing
internal-userrole not correctly set on the system user of the provider tenant. - [cds.java@2.5.0] Fixed a bug, causing OData Serializer to return
0E-8for zero-value (0) Decimals. - [cds.java@2.5.0] Fixed a bug, causing
/$countrequests to fail on draft-enabled entities. - [cds.java@2.5.0] Fixed a bug, causing number values to be handled incorrectly for messaging queue configurations.
- [cds.java@2.4.1] Fixed a bug, causing requests to MTX Sidecar during shutdown of the application.
- [cds.java@1.34.8] Fixed a bug, causing audit log messages not being written on behalf of the named user when the persistent outbox is used.
- [cds@7.5.1] Resolving custom authentication implementation pointer
- [cds@7.5.0] Messaging: Listen to
* - [cds@7.5.0] Drafts of
@readonlyentities cannot be deleted - [cds@7.5.0] Made
srv.prepend()robust by not allowing async callbacks and hence not being an async function itself anymore - [cds@7.5.0] Formatting for stringified number-literal value
- [cds@7.5.0] Secrets are now masked with
DEBUG=cds.service.factory - [cds@7.5.0] The timestamp of cds.context is not propagated to new root contexts
- [cds@7.5.0]
cds.localizeuses less memory to create translation bundles - [cds@7.5.0]
UPSERToperation failed to fill DateTime/Timestamp fields - [cds@7.5.0] Use original logic (based on
NODE_ENV) to load cds plugins fromdevDependencies - [cds@7.5.0] Property
tenantalso available on express'reqobject with basic and mocked auth - [cds@7.5.0] Empty
req.datain beforeDELETEhandler in draft - [cds@7.5.0] Loading
cds-pluginsnow offers a hook to add a more flexible plugin loader, e.g., for corruptpackage.jsonfiles. - [cds@7.5.0] Ignore default values of associations for draft entities
- [cds@7.5.0] OData: client-side errors (4xx) logged as warnings instead of errors
- [cds@7.5.0] IAS authentication: use
tokenInfo.getClientId()instead ofpayload.azpas it implements a fallback - [cds@7.5.0] Deep updates with binary keys
- [cds@7.5.0] Allow
nullvalues incds.env(example package.json excerpt:{ "cds": { "features": { "foo": null } } }) - [cds@7.5.0] Collection-bound actions/functions called via navigation
- [cds-mtxs@1.14.1] A sidecar setup can be started for local development even with
multitenancy: false. - [cds-mtxs@1.14.1] Additional resilience measures for the new Service Manager APIs if a healthy instance exists, but no binding.
- [cds-mtxs@1.14.1]
cds.env.requires.['cds.xt.ModelProvideService'].loadSync = truecan be set to skip using worker threads when loading the application model. - [cds-mtxs@1.13.3]
PUT /-/cds/saas-provisioning/tenantcan now be used for upgrade purposes with shared deployment directories in non-extensible apps. - [cds-mtxs@1.13.3]
POST /-/cds/saas-provisioning/upgradecorrectly determines the deployment directory in non-extensible apps if just one tenant is passed in the request body. - [cds-mtxs@1.13.2] Projects with
cds.features.assert_integrity = 'db'don't generate constraints fort0any more. - [cds-mtxs@1.13.2] Deployment resources for
t0are not created in thebasedirectory any more. - [cds-mtxs@1.13.2] Fixed a race condition for the shared
basedirectory.
Removed
- [cds-compiler@4.5.0] to.edm(x): Remove option
--odata-open-typeintroduced with 4.4.0. - [cds@7.5.0] Deprecated global configuration feature flag
cds.env.features.fetch_csrf. Instead, please usecsrfandcsrfInBatchto configure your remote services. These options will allow to configure CSRF-token handling. - [cds@7.5.0] Compat for deprecated
cds.env.auth.passport. Usecds.env.requires.authinstead.
November 2023
Added
- [cds-dk@7.4.0]
cds initfor Node.js now has@cds-modelsfor@cap-js/cds-typerin its.gitignore. - [cds-dk@7.4.0]
cds add local-messagingis now supported for Node.js. - [cds-dk@7.4.0]
cds add postgresis now supported for Java. - [cds-dk@7.4.0]
cds buildnow supports the command line argument--no-clean(beta). Clients need to clean the output folder(s) manually for consistent build results. - [cds-dk@7.4.0]
cds buildnow supports the build task optionflavorLocalizedEdmxto generate localized instead of non-localized edmx files for Java apps - default isfalse. - [cds-dk@7.4.0]
cds subscribe,cds unsubscribe,cds upgradenow also support the--resolve-bindingsflag. - [cds-dk@7.4.0]
cds buildnow supports the command line argument--wsto enable tarball based packaging of npm workspace dependencies for Node.js apps. (beta) - [cds-dk@7.4.0]
cds buildnow supports SAP HANA schema evolution for draft tables. - [cds-compiler@4.4.0] compiler: International letters such as
äcan now be used in CDS identifiers without quoting. Unicode letters similar to JavaScript are allowed. - [cds-compiler@4.4.0] to.edm(x):
- Allow to render all complex types within a requested service as
OpenType=truewith option--odata-open-type. Explicit@open: falseannotations are not overwritten. - Allow to annotate the generated draft artifacts but not generated foreign keys (as with any other managed association).
- Allow to render all complex types within a requested service as
- [cds-compiler@4.4.0] to.sql|hdi|hdbcds: Allow annotating the generated
.draftstables. - [cds.java@2.4.0] Select queries on draft-enabled entities are now optimized and executed with simpler SQL statements, avoiding JOINs and subselects between active and draft persistence whenever this introduces a performance gain.
- [cds.java@2.4.0] Events for reading of active instances and draft instances of draft-enabled entities can now be handled in distinct event handlers. This enables redirection of all events on active instances to a different datasource, for example a remote S/4 system. The property
cds.drafts.persistenceshould be set tosplitin that case to ensure JOINs and subselects are avoided in all SAP Fiori UI queries. - [cds.java@2.4.0] Queries to remote OData services now support tuple comparisons and tuple IN predicates.
- [cds.java@2.4.0] EDMX metadata loaded from JAR resources is now localized lazily upon request, if unlocalized EDMX resources are generated by
cds build. This avoids caching different translations of the same EDMX in memory. - [cds.java@2.4.0] Introduced a
EdmxV4Providerinterface, allowing custom code to overwrite how EDMX metadata is loaded. - [cds.java@2.4.0] Introduced a new generic interface
CdsProvider, implemented by all specific provider interfaces, for exampleUserInfoProvider. - [cds.java@2.4.0] The
generategoal of thecds-maven-pluginnow generate typedCqnServiceinterfaces based on the CDS model definitions. These typed interfaces contain explicit methods for all actions and functions the service defines. - [cds.java@2.4.0] CqnServices registered during startup are automatically proxied with a typed interface, if available.
- [cds.java@2.4.0] The goal
install-nodeof thecds-maven-pluginsupports re-tries, if the download of the Node.js distribution fails. - [cds.java@2.4.0] The goal
install-nodeof thecds-maven-pluginsupports installing Node.js on the architectureaarch64. - [cds.java@2.4.0] A new property
cds.csdk-versioncan be set inpom.xmlfor thecds-maven-plugin. If this property is set@sap/cds-dkis referenced usingnpx --packagein thecdsgoal. This avoids installing npm modules into the project. - [cds.java@2.4.0] The
watchgoal of thecds-maven-pluginnow includes a newtestRunproperty, which helps to configure the specific goal for starting the application in thespring-boot-maven-plugin. - [cds.java@2.4.0] The goal
addof thecds-maven-pluginsupports adding PostgreSQL and Liquibase support to a CAP Java project. - [cds.java@2.4.0] Pagination is now handled when retrieving subscribed tenants from Subscription Manager Service (SMS).
- [cds.java@2.4.0] The new method
systemUserProvider()ofRequestContextRunnerallows to easily execute code as a system user on behalf of the provider tenant. - [cds.java@2.4.0] The new method
systemUser()ofRequestContextRunnerallows to easily execute code as a system user on behalf of the current tenant. - [cds.java@2.4.0] The new method
systemUser(tenantId)ofRequestContextRunnerallows to easily execute code as a system user on behalf of a specific tenant. - [cds.java@2.4.0] CSV file loader now supports files with headers and content quoted with double quotes.
- [cds.java@2.4.0] Setting the new property
cds.sql.hana.optimizationModetohexgenerates SQL specific for the SAP HANA HEX engine. - [cds4j@2.4.0] Default values for to-one managed associations to entities with one key element
- [cds4j@2.4.0] CqnAnalyzer: support in predicates, which compare list-values
- [cds4j@2.4.0] Generate SQL specific for SAP HANA HEX engine using configuration
cds.sql.hana.compatibilityMode: "hex"or statement hint"hdb.USE_HEX_PLAN" - [cds4j@2.4.0] Typed entity refs via
CQL.entity(type) - [cds4j@2.4.0] Resolved segments of analyzed refs now provide the element
- [cds@7.4.0] Any service is outboxable via
srv = cds.outboxed(srv) - [cds@7.4.0] Draft: support
HasActiveEntity eq falseby read - [cds@7.4.0] Check if OData function/action params exist for complex types
- [cds@7.4.0] Remote services: destination option
jwtset tonullinstructs that an incoming request's JWT shall not be passed to SAP Cloud SDK, e.g., when it shall use a fresh client credentials flow token- Example:json
"requires": { "API_BUSINESS_PARTNER": { [...] "destinationOptions": { "jwt": null } } }
- Example:
- [cds@7.4.0] Alpha feature flag
cds.env.fiori.wrap_multiple_errorsto toggle the following behaviour for OData errors meant to be consumed by SAP Fiori Elements: In cases where multiple errors occur and the flag is set tofalse, the first error is presented as the top-level error (replacing the generic "multiple errors" wrapper). The default value istrue, butfalsewill become the default value in cds^8. - [cds@7.4.0] On CF, the default keep alive timeout of the server is set to 91s (to exceed the 90s of CF's gorouter)
- [cds@7.4.0]
cds deploynow auto-fills theID_textsfield (which get created for entities marked with@fiori.draft.enabled) in csv and json data files with a stable UUID. This way, it does not need to be manually added to data files. Also, as the value is stable (a hash of the semantic key fieldsIDandlocale), it works withUPSERTstatements. - [cds-mtxs@1.13.1]
DEBUG=mtxwill now log all outgoing requests to Service Manager. - [cds-mtxs@1.13.1] For
multitenancy.jobs.clusterSize > 1the Service Manager request will throw an error for a corrupt tenant without credentials. - [cds-mtxs@1.13.0]
GET /-/cds/saas-provisioning/tenantnow also returnscreatedAtandmodifiedAtfields. - [ux-cds-odata-language-server-extension@1.11.5] Enhanced code completion and validation to support annotating inline composition
Changed
- [cds-dk@7.4.1]
cds pushuses the synchronous server API by default again due to stability problems. Use--asyncfor the asynchronous call. - [cds-dk@7.4.1]
cds add enterprise-messagingwill now correctly replace all_by-. - [cds-dk@7.4.0]
cds buildplugins can now require their APIs directly from@sap/cds(instead of@sap/cds-dk). - [cds-dk@7.4.0]
cds inituses latest Maven Java archetype version 2.4.0 for creating Java projects. - [vscode-cds@7.4.0] Formatting
- Projections now similar to that of views
- Markdown formatting inside doc comments is now done with
markedparser AST instead ofremark. Previously, this was enabled by default but due to slightly different formatting this feature is disabled by default, now. Thus, already formatted markdown won't be changed and thus won't lead to file changes when used in CI/CD viaformat-cdscommand. Enable it via format settingformatDocComments.
- [vscode-cds@7.4.0] Simplified trace configuration - just use
cds.trace.level - [cds-compiler@4.4.0] CDL parser: improve error recovery inside structured annotation values
- [cds-compiler@4.4.0] Update OData vocabularies: 'Aggregation', 'Common', 'Core', 'Hierarchy', 'ODM', 'UI'.
- [cds.java@2.4.0] The
cds-maven-plugininstalls Node.js 18 by default. - [cds.java@2.4.0] The archetype now supports creating projects for Java 21 and no longer for Java 20.
- [cds4j@2.4.0] To-many expand SQL: only add hidden @-prefixed key elements if not already selected
- [cds4j@2.3.1] Reduce statement-level collating on SAP HANA to order relations on String elements in where/having of Select statements
- [cds4j@2.3.1] Don't use
COLLATEin orderBy clause of SAP HANA queries with statement-level collating or if type propagation yields a non-string type - [cds4j@2.3.1] Don't use statement-wide collating in update and delete statements
- [cds4j@1.38.8] SAP HANA: Don't use statement-wide collating in update and delete statements
- [cds4j@1.38.8] SAP HANA: Reduce statement-wide collating to order relations on String elements in where/having
- [cds4j@1.38.8] SAP HANA: Don't use COLLATE in queries using statement-level collating
- [cds@7.4.0] Default outbox configuration (overridable via
cds.env.requires.outbox = { ... }):kindchanged topersistent-outbox(wasin-memory-outbox)parallelchanged totrue(i.e., messages are not emitted in sequence)
- [cds@7.4.0] Internal class
OutboxServiceis deprecated and will be removed - [cds-mtx@2.6.6] Upgraded
@sap/instance-managerto version 4. - [cds-mtxs@1.13.1] For non-extensibility projects, a shared deployment folder is used across tenants for resource extraction. For
nsimultaneous tenant upgrades, this decreases the number of extracted filesn-fold. - [cds-mtxs@1.13.0] The internal job runner now has an in-memory queuing mechanism. For non-scaled sidecar instances, this avoids tasks for the same tenant from being run at the same time.
Fixed
- [cds-dk@7.4.1]
semveris bumped to version^7to mitigate CVE-2022-25883 - [cds-dk@7.4.0]
cds deploy --to hana --drynow prints out the SAP HANA SQL files which will be deployed if--dryis not specified. - [cds-dk@7.4.0]
cds buildno longer fails if multiple service protocols are configured in object notation. - [cds-dk@7.4.0]
cds buildnow uses configured compiler options when building Node.js projects. - [cds-dk@7.4.0]
cds pullwhen amending package.json applies the original indentation - [cds-dk@7.4.0]
cds watch --profile hybridno longer produces a valuehybrid,hybridforprocess.env.CDS_ENV - [cds-dk@7.4.0]
cds.schemanow loads lazily. - [cds-dk@7.4.0]
cds initdoes not printcdhint if creating a project in current folder. - [vscode-cds@7.4.0] Formatting
- Padding of quoted identifiers
- Treat only /** (no additional asterisks) as start of doc comments
- [vscode-cds@7.4.0] Syntax highlighting of comments within braced select item lists
- [vscode-cds@7.4.0] Update of diagnostic messages could have got lost
- [cds-compiler@4.4.4] to.hdi.migration: Changes in only
doc-comments should not result in a drop-create of the primary key. - [cds-compiler@4.4.2] for.odata: Fix crash when using a projection with associations as action parameter type.
- [cds-compiler@4.4.2] to.edm(x):
Edm.AnyPropertyPathis hard toEdm.PropertyPath. As there is no dynamic path evaluation,Edm.NavigationPropertyPathmust be enforced via$edmJson.Edm.AnyPropertyPathhas been used in@Aggregation.ApplySupported.GroupablePropertiesfor the first time after vocabulary update with 4.4.0. - [cds-compiler@4.4.0] parser:
/**/was incorrectly parsed as an unterminated doc-comment, leading to parse errors.- Doc-comments consisting only of
*were not correctly parsed.
- [cds-compiler@4.4.0] compiler: do not propagate
defaults in a CSN of flavorxtended/gensrc. - [cds-compiler@4.4.0] to.hana: Fix various bugs in association to join translation. Support
$selfreferences in filter expressions. - [cds-compiler@4.4.0] to.edm(x): Omit
EntitySetattribute onEdm.FunctionImportandEdm.ActionImportthat return a singleton. - [cds-compiler@4.4.0] to.sql|hdi.migration: Improve handling of primary key changes - detect them and render corresponding drop-create.
- [cds.java@2.4.0] Fixed a bug, causing applications without
spring-boot-starter-webdependencies to fail during startup. - [cds.java@2.4.0] Fixed a bug, causing a hard to understand error message, when custom handlers don't implement
/$countqueries correctly. - [cds.java@2.4.0] Fixed a bug, causing statements with incorrect comparisons when using OData singletons.
- [cds.java@2.4.0] Fixed a bug, causing
@cds.collate: falseto be ignored on draft-enabled entities. - [cds.java@2.4.0] Fixed a bug, causing selection of too many elements in remote OData V2 and V4 queries.
- [cds.java@2.4.0] Fixed a bug, causing the annotation-based audit log handling, not to send a data modification event if a personal data attribute was deleted.
- [cds.java@2.4.0] Fixed a bug in the
addgoal of thecds-maven-plugin, causing an incomplete MTX setup for local testing. - [cds.java@2.4.0] Fixed a bug in the
resolvegoal of thecds-maven-plugin, causing CDS reuse dependencies in the same reactor build to be omitted. - [cds.java@2.4.0] Fixed a bug in goal
generateof thecds-maven-plugin, causing the POJO generation to fail in Eclipse and other IDEs. - [cds.java@2.4.0] Fixed a bug, causing HTTP requests to be rejected with status code 401 when technical user JWT tokens issued by IAS were used.
- [cds.java@2.3.1] Fixed a bug, causing audit log messages not being written on behalf of the named user when the persistent outbox is used.
- [cds4j@2.4.1] Fix exception on queries using elements of undefined type in
order byor in ordering relations in filters - [cds4j@2.4.1] Fix to-many expand for queries using where exists subqueries with paths
- [cds4j@2.4.1] Fixed a code generation issue, if there is no CDS model available and typed service interface should be generated
- [cds4j@2.4.1] Consider
cds.sql.hana.ignoreLocale: trueinORDER BYfor SAP HANA - [cds4j@2.4.1] Fixed a code generation issue, if an action or function is renamed with
@cds.java.name. - [cds4j@2.4.1] Fix HEX hint for queries using search
- [cds4j@2.4.0] Fixed a bug, causing memory leak when the methods of the accessor interfaces that return a list were called
- [cds4j@2.4.0] Values of virtual elements are no longer removed from the payload of the
Insert,UpdateandUpsertstatements and are available in theResultof these statements - [cds4j@1.38.8] SAP HANA: Render COLLATE in order by only if type propagation yields STRING
- [cds@7.4.2] Typing for
DELETE.from(<e>.drafts) - [cds@7.4.2] UUID keys must not be generated for associations
- [cds@7.4.1] Add dynamic properties to result when experimental feature
cds.env.features.okra_skip_query_optionsis active - [cds@7.4.1] Allow negative integers in new parser
- [cds@7.4.1] Allow deletion of instances outside the draft tree
- [cds@7.4.1] Tenant lookup in OData metadata requests
- [cds@7.4.1]
cds.parse.csvandcds deploycorrectly parse CSV files with Windows file endings (CRLF) and quoted values - [cds@7.4.1] Typescript Typings
- [cds@7.4.0]
req.subjectin lean-draft handlers - [cds@7.4.0]
cds.odata.batch_limitwasn't taken into account - [cds@7.4.0] Enterprise-Messaging: Only set tenant information for multitenant apps
- [cds@7.4.0] Enterprise-Messaging: Race condition in
subscribeevent - [cds@7.4.0] Draft: delete of active entity is forbidden, if draft exist
- [cds@7.4.0] Draft: sorting of draft entities in
list status: all - [cds@7.4.0] Draft: invalid delete draft request now rejects with error
- [cds@7.4.0] Draft: Enhance Draft Edit functionality with exclusive record lock
- [cds@7.4.0] Typings for
req.reject/error/info/warn - [cds@7.4.0] Deep delete with mixins on new db layer did not work
- [cds@7.4.0] Special strings like
'$now','$user'and'$uuid'expanded automatically - [cds@7.4.0] Only services that are served via OData are precompiled during startup
- [cds@7.4.0] Response status of not existing mocks returned 200 instead of 404
- [cds@7.4.0] Calculation of @Capabilities in case of complex $apply
- [cds@7.4.0]
test.data.reset()did not delete drafts - [cds@7.4.0]
resolveViewconsiderslistfor renamed columns - [cds@7.4.0]
cds.schemanow loads lazily - [cds@7.4.0]
odata_new_parser:$expand=no longer throws an error with and is simply ignored - [cds@7.4.0]
odata_new_parser: Empty custom query params likeFoo?barare ignored - [cds@7.4.0]
odata_new_parser: generated wrong CQN for queries like$filter=false or ref eq 5
Removed
- [cds-dk@7.4.0]
cds replno longer loadscds.pluginson startup to keepcdslazy. - [vscode-cds@7.4.0] Workspace validation modes
OpenEditorsAndDirectSourcesandOpenEditorsDirectSourcesAndDirectDependenciesare no longer supported. In real-world models they led to high CPU usage and slow responsiveness. Any of these user setting values are now treated asActiveEditorOnlyif supported by IDE, elseOpenEditorsOnly.
October 2023
Added
- [cds-dk@7.3.1]
cds buildsupports the optioncontentLocalizedEdmxto enable/disable the generation of localized edmx files for Java apps - default istrue. - [cds-dk@7.3.1]
cds replnow loadscds.pluginson startup. - [cds-dk@7.3.1]
cds add enterprise-messaging-sharedalso supports Kyma deployment. - [cds-dk@7.3.1]
cds add notificationsadds configurations for notifications plugin. - [cds-dk@7.3.0]
cds pushnow uses the asynchronous server API by default. Use--syncfor the synchronous one. - [cds-dk@7.3.0]
cds activateandcds pushnow support the-2shortcut for the--tooption. - [cds-dk@7.3.0] Improved error logging for failed HTTP requests.
- [cds-dk@7.3.0]
cds buildsupport for custom build plugins. - [cds-dk@7.3.0]
cds compilesupport for custom compile plugins. - [cds-dk@7.3.0]
cds buildcreates non-localized edmx files for the nodejs apps. Translations will be applied at runtime. - [cds-dk@7.3.0]
cds.schema.overlay4gets the cds default schema plus overlays from cds-dk. - [cds-dk@7.3.0]
cds buildcreates non-localized edmx files for the java apps. Translations will be applied at runtime. - [cds-dk@7.3.0]
cds importnow introduces new option--configto add custom configuration data in the package.json. - [cds-dk@7.3.0]
cds add helmnow addshtml5-apps-repo-runtimebinding forapprouterifhtml5-repois present. - [cds-dk@7.3.0] (BETA)
cds add postgresadds configuration for PostgreSQL. This requires@cap-js/postgres1.3.0. - [eslint-plugin-cds@2.6.4] New
auth-restrict-grant-servicerule that validates events on restricted services. - [vscode-cds@7.3.0] support for
cdsc.moduleLookupDirectories - [vscode-cds@7.3.0] Support for merged cds schemas returned by
cds-dk - [cds.java@2.3.0] Feature
cds-feature-identityis now supporting pure XSUAA-based scenarios. A service binding to IAS is not mandatory anymore. With this change, it is feature compatible withcds-feature-xsuaawhich eventually will be removed in a future release. - [cds.java@2.3.0]
UserInfo.isInternalUser()is now supported in case of IAS-based authentication. - [cds.java@2.3.0] The archetype now generates projects with encoding UTF-8 configured for the Java compile plugin.
- [cds.java@2.3.0] Service Bindings from
default-env.jsonare now provided through a plugin in the Service Binding Library and are therefore visible to other libraries, for example Cloud SDK. - [cds.java@2.3.0] Cloud SDK's new
ServiceBindingDestinationLoaderAPI is now used to create destinations from service bindings. - [cds.java@2.3.0] PostgreSQL SSL connections are now properly configured to validate the SSL certificate and hostname.
- [cds.java@2.3.0] CAP Java is now tested with SapMachine 21 and no longer with SapMachine 20.
- [cds.java@2.3.0] Out of the box integration with Subscription Manager Service (SMS) to offer IAS tenant lifecycle.
- [cds.java@2.3.0] The goal
addof thecds-maven-pluginmerges changes into existing profiles in application.yaml instead of replacing them. - [cds4j@2.3.0] Allow to control collating on SAP HANA per statement via hint "collating.hana"
- [cds4j@2.3.0] Config option
cds.sql.collate: "localized-strings" - [cds4j@2.3.0] Annotation
@cds.collateto disable/enable collation for specific elements - [cds4j@2.3.0] Support tuples in CDS QL
INclauses - [cds4j@2.3.0] Annotation
@cds.java.expand: {using: 'load-single'}to expand by parent keys with individual selects - [cds4j@2.3.0] Support Runtime Views annotated with
@cds.persistence.skip - [cds@7.3.0]
cds.localizednow caches i18n bundles per locale and per model to speed up repeated usages of the same bundle at runtime, for example, in repeated calls tocds.compile.for.edmx(). - [cds@7.3.0] Based on
cds.localizedwith cached bundles, a new operationcds.localized.lookup(i18n_key, locale)is provided. - [cds@7.3.0] If env variable
CDS_TEST_ENV_CHECKis set,cds.test.in()detects ifcds.envwas loaded before from a different folder. - [cds@7.3.0]
cds.test.log()allows to capture and analyze any console log output.cds.test.verbose()is now deprecated. - [cds@7.3.0] Typings for
cds.tx - [cds@7.3.0] Add method
cds.schema.default4(schemaId)to retrieve json schema based on its id - [cds@7.3.0] Support for pseudo role
internal-userwith authentication kindias - [cds@7.3.0] CSV files with multiline values, i.e. line breaks, are now supported with
cds deploy - [cap-js/graphql@0.8.0] [beta] Translate CDS error messages and include additional error properties in
GraphQLErrorextensions. Only specific allowed properties are exposed when running in production. - [cap-js/graphql@0.8.0] [beta] Option
errorFormatterthat can be pointed to a function that overwrites the default logic of how CDS errors are formatted before they are added to the GraphQL error response. Please note that this may overwrite sanitization logic that is otherwise applied to error messages in production. - [cap-js/graphql@0.8.0] [beta] Logging of errors that occur during query and mutation execution
- [cap-js/audit-logging@0.4.0] Support for Premium plan of SAP Audit Log Service
- [cap-js/audit-logging@0.4.0] Support for XSUAA credential type
x509 - [cap-js/audit-logging@0.4.0] Support for generic outbox
- [cap-js/postgres@1.3.0]
cds buildis now natively supported in@cap-js/postgres. Thus, acds buildwill automatically generate deployment artifacts for Postgres-enabled projects. - [cds-mtxs@1.12.0] Beta: Setting
cds.requires.multitenancy.humanReadableInstanceName = truewill create human-readable tenant IDs for instances created via Service Manager, instead of hashed strings. This is incompatible with existing tenants using hashed instance names. - [cds-mtxs@1.12.0] Extensions of internal entities / services starting with
cds.xt.are no longer allowed. - [cds-mtxs@1.12.0] If no extensions exist,
ModelProviderService.getEdmx()now uses edmx files prebuilt bycds build. - [cds-mtxs@1.12.0]
ModelProviderService.getEdmx()with emptylocaleparameter returns non-translated edmx. - [cds-mtxs@1.12.0]
ModelProviderService.getI18n()returns the translated texts for a givenlocaleandtenant. - [cds-mtxs@1.12.0] Migrated extension projects can now be downloaded using
cds extend <url> --download-migrated-projects.
Changed
- [cds-dk@7.3.1]
cds watch --livereloadnow reload the client w/o a server restart, so that for e.g. an.htmlfile, a reload event is sent, but the server is not restarted. Previously, the two events were coupled. - [cds-dk@7.3.1]
cds buildnow provides a programmatic plugin API instead of the former configuration based one. - [cds-dk@7.3.0]
cds loginnow eagerly detects expired token and asks for a new passcode if applicable - [cds-dk@7.3.0]
cds loginnow presents the passcode URL as early as possible - [cds-dk@7.3.0]
cds envnow requires@sap/cds>= 7.3 to resolve configuration contributed by cds plugins - [cds-dk@7.3.0]
cds add connectivitydoes not addconnectivity: trueto yourpackage.jsonany more. - [cds-dk@7.3.0]
cds watchnow ignores more files/folders:app/(webapp|dist|target),app/*/(webapp|dist|target),tsconfig.json,*.tsbuildinfo - [cds-dk@7.3.0]
cds buildnow usescompile.to.hdbtableif no migration tables exist. - [cds-dk@7.3.0] Refactoring
cds build pluginAPI - [vscode-cds@7.3.0] formatting of action and function parameters according to existing newlines
- [vscode-cds@7.3.0] Minimum VSCode version is now 1.80.0. Note: This is likely the last version that supports NodeJS 16
- [cds.java@2.3.0]
4.24.0is the new minimum required Cloud SDK version. - [cds.java@2.3.0] For event brokers that don't provide an explicit unique message ID the ID is now determined from the cloudevents
IDproperty, if available. Message IDs are no longer generated when receiving an event without any ID. - [cds.java@2.3.0] Active instances of draft-enabled entities are now locked for deletion, if a locked draft exists, that is owned by a different user. The user owning the draft can always delete the active instance and with that also delete the corresponding draft.
- [cds.java@2.3.0]
TenantProviderService.readProviderTenant()now usesapp_tidfield if present instead ofzone_uuidfield in case of IAS service bindings. - [cds4j@2.3.0] HANA: Use
COLLATEinORDER BYclause - [cds4j@2.3.0] Expand by
parent-keysis executed as a bulk operation - [cds4j@2.3.0] Reduce memory allocation of proxies for accessor interfaces
- [cds4j@2.3.0] Simplify
ISandIS NULLif neither operand is nullable - [cds4j@1.38.7] HANA: Don't enforce statement-level collating on Conjunction, Disjunction and Negation
- [cds@7.3.0] If omitted in the accept header,
ExponentialDecimalsno longer gets defaulted (totrue), which violated the OData 4.0 specification. This change can temporarily be overridden viacds.env.odata.defaultExponentialDecimals = 'true/false'. - [cds@7.3.0] Make type signature of
extend.withmore general - [cds@7.3.0]
cds.test.data.autoReset()is deprecated in favor of explicitcds.test.data.reset()call, likebeforeEach (test.data.reset). - [cds@7.3.0]
cds.utils.uuid()now usesrandomUUIDfunction of nodecryptomodule instead ofuuidpackage - [cds@7.3.0]
@Capabilitiesrestrictions defined on entity level are also applied if navigating to the entity. Restrictions defined directly on the navigation now override restrictions defined on the target entity. - [cap-js/graphql@0.8.0] Bump required
@sap/cdsversion to>=7.3 - [cap-js/graphql@0.8.0] Bump required
graphql-httpversion to^1.18.0 - [cap-js/audit-logging@0.4.0] Always use outbox (as configured in project)
- [cap-js/db-service@1.3.0]
INSERT.into(...).rows/values()is not allowed anymore without specifying.columns(...). #209 - [cap-js/db-service@1.3.0] Deep deletion uses correlated subqueries instead of materializing the to be deleted object before. #212
- [cap-js/sqlite@1.3.1] Updated minimum required version of
@cap-js/db-service. - [cds-mtxs@1.12.0] The allowlist for HDI deployment parameters (
HDI_DEPLOY_OPTIONS) is removed. Any option can now be used. - [cds-mtxs@1.12.0]
PUT /-/cds/saas-provisioning/tenantnow also allows non-UUID strings forsubscribedSubaccountId.
Fixed
- [cds-dk@7.3.1]
cdscommands will now respect theNO_COLORenvironment variable. - [cds-dk@7.3.1]
cds initno longer adds comments to file.vscode/launch.json - [cds-dk@7.3.1]
cds bindprints correct command line recommendation to start spring-boot application - [cds-dk@7.3.1]
cds compiletoopenapinow generates correct query options with$prefix. - [cds-dk@7.3.1]
cds buildno longer causesduplicate assignmentcompilation errors in some specific feature toggle scenarios. - [cds-dk@7.3.1]
cds watchnow loads missing service bindings when called from a directory other than cwd. - [cds-dk@7.3.1] Multitenant
cdscommands now have any trailing slashes removed from app URLs, fixing certain request failures. - [cds-dk@7.3.1] Multitenant
cdscommands now handle request errors more robustly. - [cds-dk@7.3.1]
cds buildno longer fails for cds services supporting multiple protocols. - [cds-dk@7.3.0]
cds loginnow prints shorter errors. (SetDEBUG=reqin env to see all details again.) - [cds-dk@7.3.0] Fixed issue when creating a CAP project in SAP Business Application Studio's template wizard.
- [cds-dk@7.3.0]
cds importnow handles name collision within a Schema for OData V4 EDMX. - [cds-dk@7.3.0]
cds buildfor mtx extension projects no longer creates CSN containing unresolved model associations. - [cds-dk@7.3.0]
cds buildno longer creates new migration versions by mistake after schema evolution changes have been manually resolved. - [cds-dk@7.3.0]
cds add approutercreates thexs-app.jsonin theappfolder again, instead of inapp/router. - [cds-dk@7.3.0]
cds watchno longer restarts itself in an endless loop (happened in some Typescript scenarios on Windows) - [eslint-plugin-cds@2.6.4] In no-join-on-draft, do not run check if there is no valid query.
- [eslint-plugin-cds@2.6.4] In auth-valid-restrict-where, do not consider when missing expression references.
- [vscode-cds@7.3.0] highlighting of identifiers, annotations, actions, functions, comments, and more
- [vscode-cds@7.3.0] highlighting of queries in entity definitions
- [vscode-cds@7.3.0] highlighting of keywords and literals in
typestatements - [vscode-cds@7.3.0] formatting of escaped names and
order byclauses - [cds-compiler@4.3.2] compiler: Fix auto-exposure of composition target entities inside anonymous composition target aspects.
- [cds-compiler@4.3.2] to.hana: Fix a bug in association to join translation, expect ON condition operand to be a function without arguments.
- [cds.java@2.3.0] Fixed a bug in
UserInfo.isSystemUser()in case of IAS-based authentication. - [cds.java@2.3.0] Fixed a bug, causing OData V4 PATCH requests setting to-one navigation properties to
nullto not have any effect. - [cds.java@2.3.0] Fixed a bug, causing incorrect key predicates in OData V4 when executing additional
Selectstatements for$selector$expandon action or function results. - [cds.java@2.3.0] Fixed a bug, causing OData V4 requests to return wrong values when calling
$valueon entity attributes of typeEdm.LargeBinarywithout@Core.MediaTypeannotation. - [cds.java@2.3.0] Fixed a bug, causing missing subscribed tenants when retrieving tenants from SaaS registry, due to missing pagination handling.
- [cds.java@2.3.0] Fixed a bug, causing generated
schema-*.sqlfiles to not be git-ignored in generated projects. - [cds.java@2.3.0] Fixed a bug in the
resolvegoal, that caused the execution to fail, if non JAR dependencies were present in the project. - [cds.java@2.3.0] Fixed a bug, causing exceptions when using the
cdsactuator endpoint with user-provided services bound to the application. - [cds.java@2.3.0] Fixed a bug, causing Select statements with search predicates with conjunctions to generate invalid remote OData queries.
- [cds.java@1.34.7] Fixed a bug, causing OData V4 requests to return wrong values when calling
$valueon entity attributes of typeEdm.LargeBinarywithout@Core.MediaTypeannotation. - [cds.java@1.34.7] Fixed a bug, causing missing subscribed tenants when retrieving tenants from SaaS registry, due to missing pagination handling.
- [cds4j@2.3.0] Fixed a bug causing compilation error after generating Java consumption interfaces, for associations annotated with
@cds.java.name - [cds4j@1.38.7] HANA: SQL syntax error with
COLLATEinORDER BYfunction - [cds@7.3.1]
cds-tsno longer fails if configured with an ESM loader. It tries loading files w/import()in this case. - [cds@7.3.1]
cds deployfor draft enabled entities - [cds@7.3.0] Draft: activate managed fields were miscalculated in some cases
- [cds@7.3.0] Error with
existspredicate in@restrict.wherewhen calling compositions - [cds@7.3.0]
IsActiveEntityin error target for lean draft - [cds@7.3.0] Remote Service: OData v2 compliant representation of Edm.Decimal, Edm.Double, and Edm.Int64 in URL
- [cds@7.3.0] In draft activate managed fields were calculated wrongly in some cases
- [cds@7.3.0] On draft save, missing entries in
req.headers - [cap-js/graphql@0.8.0] Malformed responses for convoluted queries in which parts of results are supposed to be returned multiple times, caused by formatting results in-place
- [cap-js/audit-logging@0.4.0] Avoid dangling
SELECTs to resolve data subject IDs, which resulted in "Transaction already closed" errors - [cap-js/audit-logging@0.3.2] If the request has no tenant (e.g., Unauthorized), the audit log shall be sent to the provider account
- [cap-js/db-service@1.3.2] preserve $count for result of SELECT queries
- [cap-js/db-service@1.3.1] Error message for search with multiple arguments.
- [cap-js/db-service@1.3.0] Various fixes for calculated elements on read. #220 #223 #233
- [cap-js/db-service@1.3.0] Don't release to pool connections twice. #243
- [cap-js/db-service@1.3.0] Syntax error in
matchesPatternfunction. #237 - [cap-js/db-service@1.3.0] SELECTs with more than 50 columns does not return
nullvalues. #238 #261 - [cap-js/postgres@1.3.1]
cds build-relevant files are now correctly packaged into the release. #266 - [cap-js/sqlite@1.3.0]
CURRENT_TIMESTAMPin view definition preserves the timezone. #254 - [cds-mtxs@1.12.1] More stable upgrade with extensibility enabled.
- [cds-mtxs@1.12.1] Downloaded migrated extension projects now contain correct base model references.
- [cds-mtxs@1.12.0] Synchronous call of
PUT /-/cds/saas-provisioning/tenantnow returns correctcontent-type:text/plain. - [cds-mtxs@1.12.0] Update of extensions with different tags that depend on each other does no longer result in a compilation error.
- [cds-mtxs@1.12.0] Extensions containing new entities with associations to base entities do no longer cause a compilation error.
- [cds-mtxs@1.12.0] For SAP HANA deployment, no recompilation is done any more for applications not using extensibility.
- [odata-v2-adapter@1.11.8] Automatically activate plugin, if mentioned explicitly in
cds.plugins - [odata-v2-adapter@1.11.8] Move custom server section in README under advanced section, as plugin is the preferred way to bootstrap adapter
September 2023
Added
- [cds-dk@7.2.0]
cds add h2adds H2 configuration for Java projects. - [cds-dk@7.2.0]
cds add sqlitenow has full support for Java projects. - [cds-dk@7.2.0]
cds gencreates models or data using a descriptive prompt (beta) - [cds-dk@7.2.0]
cds bindauto detects 'ias-auth' service bindings - [cds-dk@7.2.0]
cds compiletoopenapinow introduces new option--odata-versionto add the OData version functionality to generate the OpenAPI document. - [cds-dk@7.2.0]
cds addcomes with more templates/facets in the wizard of SAP Business Application Studio: approuter, XSUAA, Kibana logging, enterprise messaging, multitenancy, helm charts, and extended sample files. - [vscode-cds@7.2.0] CAP with Typescript (beta): add setting to customize type generation command
- [cds-compiler@4.3.0] compiler: it is possible to publish associations with filters in views. Managed associations become unmanaged ones. For example:cds
entity Proj as projection on Base { assoc[id = 1], }; - [cds.java@2.2.0] Added a new goal
resolveto thecds-maven-pluginwhich extracts CDS reuse models from JARs totarget/cds/. The goal is configured in newly generated projects by default and is also run when runningmvn cds:build. - [cds.java@2.2.0]
cds-starter-cloudfoundrynow bundles all dependencies required for IAS-based authentication, in particularcds-feature-identityand Spring security. - [cds4j@1.38.6] Allow to control collating on HANA per statement via hint "collating.hana"
- [cds4j@1.38.6] Config option
cds.sql.collate: "localized-strings" - [cds4j@1.38.6] Annotation
@cds.collateto disable/enable collation for specific elements - [cds@7.2.0] Typescript definition for:
- [cds@7.2.0] The
cds.exit()method. - [cds@7.2.0] The
labeloption parameter in thecds.log()API. For example:cds.log('log message', { label: 'adapter' }. - [cds@7.2.0] A variant of the
rolesproperty of thecds.Userclass.
- [cds@7.2.0] The
- [cds@7.2.0]
@restrictannotations can now prevent the creation of drafts (see documentation) - [cds@7.2.0] JSON Schema validation for
cds.requires.multitenancy.jobssettings. - [cds@7.2.0] Managed associations to-one with exactly one foreign key can now have a default value.
- [cds@7.2.0] Experimental feature flag
cds.env.features.okra_skip_query_options. This feature allows you to bypass the parsing of query options by the legacy OData V4 Server (Okra). Please note that this feature can only be utilized in conjunction with the new OData parser, which is activated by setting the feature flagcds.env.features.odata_new_parser = true. - [cds@7.2.0] Support for
@requires: 'any'to make service public, i.e., no authenticated user is required - [cds-mtx@2.6.5] Container creation now adds parameters needed for SAP HANA encryption
- [cap-js/audit-logging@0.2.0] Export class
AuditLogServicefor extending in custom implementations as follows:jsconst { AuditLogService } = require('@cap-js/audit-logging') class MyAuditLogService extends AuditLogService { async init() { [...] // call AuditLogService's init await super.init() } } module.exports = MyAuditLogService - [cap-js/db-service@1.2.0] support for calculated elements on read. #113 #123
- [cap-js/db-service@1.2.0] support for managed associations with default values. #193
- [cap-js/db-service@1.2.0] introduced new operator
==which translates toIS NOT DISTINCT FROM. #164 - [cap-js/postgres@1.2.0] Reduced the usage of
is not distinct [not] from. #157 - [cds-mtxs@1.11.0]
/-/cds/extensibility/pushnow also accepts theprefer: respond-asyncheader for asynchronous requests. - [cds-mtxs@1.11.0]
/-/cds/model-provider/getCsnuses an LRU cache for base model CSNs, limited to 5 entries by default. This cache size can be configured usingcds.requires['cds.xt.ModelProviderService'].cacheSize. - [cds-mtxs@1.11.0] The
treat_unmodified_as_modifiedparameter is now allowed for HDI deployments. - [odata-v2-adapter@1.11.7] Set CDS OData V2 protocol
Changed
- [cds-dk@7.2.0]
cds add approutercreates thexs-app.jsonin a dedicatedapp/routerfolder, instead of inapp. - [cds-dk@7.2.0]
cds add multitenancynow sets up thecds-feature-mtdependency in yourpom.xmlfor Java projects. - [cds-dk@7.2.0]
cds watchignores all frontend resources inapp/**/webapp/**. Previously, onlyapp/**/(*.js|ts)was ignored. - [vscode-cds@7.2.0] New data structures and caching to improve performance of where-used requests (e.g. Find References) and code completion
- [vscode-cds@7.2.0] Elements of
mixins now useSymbolKind.Field(was: Operator) in Outline - [cds-compiler@4.3.0] Update OData vocabularies: 'Aggregation', 'Capabilities', 'Common', 'PDF', 'PersonalData', 'UI'.
- [cds.java@2.2.0] Removed support for the annotations
@AuditLog.Operation.Read,@AuditLog.Operation.Insert,@AuditLog.Operation.Updateand@AuditLog.Operation.Delete. By default, all operations are logged into auditlog. - [cds4j@2.2.1] optimized FK filter using
infor to-many expands in queries using top/skip - [cds4j@2.2.0] Improved data access performance via getters of generated
CdsDataaccessor interfaces - [cds4j@2.2.0] Optimized queries with to-many expands returning an empty result
- [cds4j@2.2.0] SQLite: Add
COLLATE NOCASEto columns of String elements only - [cds4j@1.38.6] HANA: Use
COLLATEinORDER BYclause - [cds@7.2.0] The built-in
javaprofile setsbuild.targetto.by default - [cds@7.2.0] Decimals from query options (e.g.,
$filter) are represented as strings in CQN - [cds@7.2.0] Improve error message for unsupported transformations with
$apply - [cds@7.2.0] For database dialect H2, specialized, localized views for languages
deandfrare no longer generated. - [cds@7.2.0] Authentication kinds
jwt,xsuaa, andiasthrow an error during bootstrapping if the necessary credentials are unavailable. Previously, a warning was logged, and authentication was skipped. Seecds bind/ Hybrid Testing in CAPire for how to combine local development and cloud resources. - [cds@7.2.0] The Typescript definitions now make use of the default export.
- [cds-mtx@2.6.5] All available HDI deployment parameters can now be passed for tenant deployment.
- [cap-js/graphql@0.7.0] Omit
variablesfrom log if it is an empty object - [cap-js/audit-logging@0.3.0] Default value for
cds.requires['audit-log'].handlechanged to['READ', 'WRITE'], i.e., accessing sensitive data is now logged by default. - [cap-js/postgres@1.2.1] Bump minimum required version of
@cap-js/db-service - [cap-js/sqlite@1.2.0]
cds.Decimalandcds.Floatreturn numbers instead of strings
Fixed
- [cds-dk@7.2.0]
cds buildadds feature toggles to existing custom build task model options. - [cds-dk@7.2.0]
cds importadds thekindbased on the type of the input file while updating thepackage.json. - [vscode-cds@7.2.0] CAP notebooks: Do not restrict running of CDS Server cell
- [vscode-cds@7.2.0] Highlighting of custom types starting with built-in name
- [vscode-cds@7.2.0] Outline now only shows first non-empty line of docs when in semantic mode (see user setting
cds.outline.semantical) as VS Code does not support multi-line docs - [cds-compiler@4.3.0] parser: Chained methods without arguments such as
bina().b.c()were lost. - [cds-compiler@4.3.0] compiler:
- Type arguments in
cast()functions, whose column also has an explicit type set, were not properly checked. Now thecast()s type and type arguments are checked. - SQL function
STDDEV(*)was not parsable. - In views, published association's ON-conditions containing
$projectionare now rewritten to$selfin the CSNelementsproperty. This ensures recompilability of the CSN.
- Type arguments in
- [cds-compiler@4.2.4] OData: For compatibility with the Java runtime, don't prepend table aliases to column aliases unless necessary.
- [cds.java@2.2.0] Fixed a bug in the goal
addof thecds-maven-plugin, causing the application start to fail due to incompatible schema.sql. - [cds.java@2.2.0] Fixed a bug in the goal
addof thecds-maven-plugin, causing the creation of a wrong MTX profile in theapplication.yaml. - [cds.java@2.2.0] Fixed a bug in interfaces
SaasRegistryUnsubscriptionOptionsandSaasRegistrySubscriptionOptions, causing aClassCastExceptionwhen calling methodgetSubscriptionAppAmount. - [cds.java@2.2.0] Fixed a bug in the Kafka initialization for public cluster endpoints.
- [cds.java@2.2.0] Fixed a bug, causing an OData V4 requests to fail when the URL contained unnecessary encodings in the URL path.
- [cds.java@2.2.0] Fixed a bug, causing duplicated lambda param names in nested any/all OData v4 remote calls
- [cds.java@1.34.5] Fixed a bug, causing duplicated lambda param names in nested any/all OData v4 remote calls
- [cds.java@1.34.5] Fixed a bug in interfaces
SaasRegistryUnsubscriptionOptionsandSaasRegistrySubscriptionOptions, causing aClassCastExceptionwhen calling methodgetSubscriptionAppAmount. - [cds4j@2.2.1] OOM on to-many expands in queries with large skip size
- [cds4j@2.2.0] Postgres: Select for update (locks) now also work on localized and draft-enabled entities
- [cds4j@2.2.0] Fixed "Element does not exist" exception on write with structured data for composition of aspects in "odata" transformed csn mode
- [cds4j@2.2.0] SQLite: Fixed 'row value misused' exception on to-many expands in paginated queries with locale
- [cds4j@2.2.0] Reduce memory allocation on large bulk updates
- [cds@7.2.1] HTTP headers argument was not forwarded to remote services when using the
srv.send(...)API. - [cds@7.2.1] Not existing draft upon
SAVEhas own error code. - [cds@7.2.1] Links to documentation in Typescript definitions.
- [cds@7.2.1] Remote service won't check for
credentials.urlin case of messaging. - [cds@7.2.1] Lean draft: Implicitly added
limitin some lean draft read scenarios. - [cds@7.2.1] Lean draft: Association keys in lean draft.
- [cds@7.2.1] Remote service: Preserve namespaces in URLs that do not match the service's namespace.
- [cds@7.2.0] Trace middleware: Adapted usage of
performance.now()for Node 20. - [cds@7.2.0] Draft: Associations to non-draft enabled entities must never point to drafts
- [cds@7.2.0] Avoided type error in old db post-processing
- [cds@7.2.0]
<remote-srv>.run('/arbitrary-url')now defaults to a get request and doesn't add request body - [cds@7.2.0]
@cds.query.limitis cached per projection - [cds@7.2.0] Application crash for incorrect usage of REST-style API to run queries
- [cds@7.2.0] The
@requiresannotation on entity level didn't get applied to bound operations - [cds@7.2.0]
cds.testrun with a profile parameter such ascds.test('run', '--profile', 'integration-tests')will use the correct profile. - [cds@7.2.0]
cds.env.requires.auth.restrict_all_services = falsein combination withcds.env.requires.middlewares = true(the default) - [cap-js/audit-logging@0.3.1] Defaulting of
@PersonalData.DataSubjectRoleto entity name - [cap-js/audit-logging@0.3.1] Overriding service configuration
- [cap-js/db-service@1.2.1] Association expansion in infix filters. #213
- [cap-js/db-service@1.2.0] resolved a type error which occurred in some cases for deeply nested
expands. #173 - [cap-js/db-service@1.2.0] path expression traversing non-foreign-key fields within infix filters are now properly rejected for
existspredicates. #181 - [cap-js/db-service@1.2.0] CQL functions: In the
argsof theconcatfunction anxpris now wrapped in parentheses. #196 - [cap-js/db-service@1.2.0] Make
UPDATEandofarraytyped column compatible. #184 - [cap-js/db-service@1.2.0] Ensure that
INSERTwithrowsalways inserts into the correct column. #193 - [cap-js/db-service@1.2.0] Allow
DateTimecolumns to compare against their returned value. #206 - [cap-js/db-service@1.2.0] Deep Insert using backlink associations as key #199.
- [cap-js/postgres@1.2.0] Reserved words are now used to automatically escape reserved words which are used as identifier. #178
- [cap-js/postgres@1.2.0] Remove column count limitation. #150
- [cap-js/sqlite@1.2.1] Adapt implementation to comply with implication of SQLite version 3.43 which is included in
better-sqlite3@8.6.0. #210 - [cds-mtxs@1.11.0] The Service Manager client now returns all bindings for partial cache misses for
cds.requires.['cds.xt.SaasProvisioningService'].jobs.clusterSize > 1. - [cds-mtxs@1.11.0] The Service Manager client will now wait with exponential back-off for unexpected error codes.
- [cds-mtxs@1.11.0] The Service Manager client will now print the correct root cause for errors with a
descriptionfield. - [cds-mtxs@1.11.0] Command
cds-mtxnow terminates immediately after execution is finished. - [odata-v2-adapter@1.11.7] Fix absolute service path starting with target path parts e.g.
/odata - [odata-v2-adapter@1.11.7] Fix escaping of backslashes in search phrases
Removed
- [cds-dk@7.2.0] Undocumented facet
cds add auditlog - [vscode-cds@7.2.0] Legacy
Vanillatheme - we recommend to use the default theme e.g.Light Modernwhich is similar but covers more token classes
August 2023
Added
- [cds-compiler@4.2.0] Compiler:
- Option
moduleLookupDirectories: [ 'strings' ]can be used to specify additional module lookup directories, similar tonode_modules/. - LIMIT and OFFSET clauses can now contain expressions, including parameter references.
- Option
- [cds-compiler@4.2.0] to.edm(x):
- Detect spec violation
scale>precision.
- Detect spec violation
- [cds-compiler@4.2.0] to.sql/for.odata:
- With the new option
fewerLocalizedViews: true|false, an entity/view will not get a localized convenience view, if it only has associations to localized entities/views. Only if there is actually a localized element (e.g. new localized element or reference to one), will it get a convenience view.
- With the new option
- [cds-compiler@4.2.0] to.sql
- In a localized scenario, create foreign key constraints for the generated
.textsentities. - Casting
nullto a structure such asnull as field : StructTis now supported. For each leaf element, an additionalnull as field_namecolumn is added.
- In a localized scenario, create foreign key constraints for the generated
- [odata-v2-adapter@1.11.6] Suppress analytical conversion via entity annotation
@cov2ap.analytics.skipForKey, if all dimension key elements are requested
Changed
- [cds-dk@7.1.1]
cds inituses latest Maven Java archetype version 2.1.0 for creating Java projects. - [cds-dk@7.1.1]
cds buildcorrectly logs build messages based on their severity. - [cds-dk@7.1.1]
cds buildcreates OData EDMX for configured fiori build tasks. - [cds-compiler@4.2.0] Compiler:
- Selecting fields of structures or associations (without filters) are now candidates for ON-condition rewrites: It is no longer necessary to select the struct/association directly.
- Consistently handle the case when type elements are defined to be a
key: thekeyproperty is not only preserved withincludes, but also in other cases. Use optiondeprecated.noKeyPropagationWithExpansionsto switch to the v3 behavior. - When including aspects or entities into structured type definitions, do not add actions to the type.
- An
annotatestatement in theextensionssection of a CSN now consistently uses theelementsproperty even if theannotateis intended to be used for an enum symbol. Before v4.2, the compiler has used theenumproperty in a CSN of flavorxtended(gensrc) if it was certain that it was to be applied to an enum symbol.
- [cds-compiler@4.2.0] to.cdl: If a definition has an
actionsproperty, anactions {…}block is now always rendered, and is not ignored if empty. - [cds-compiler@4.2.0] to.sql:
- For SQL dialect "sqlite",
cds.DateTimeis now rendered asDATETIME_TEXTinstead ofTIMESTAMP_TEXT. - Casting a literal (except
null) to a structure now yields a proper error. .textsentities annotated with@cds.persistence.skip(without their original entity having that annotation) lead to deployment issues later. It is now an error.
- For SQL dialect "sqlite",
- [odata-v2-adapter@1.11.6] Switch to
better-sqlite3via@cap-js/sqlite
Fixed
- [cds-dk@7.1.1] When setting
CDS_CONFIGfrom the command line, that value is no longer overridden by other env values. SettingCDS_CONFIGfrom the command line in combination with additional command line args, like--odata, is not supported at this point. - [cds-dk@7.1.1] Installing
@sap/cds-dknow produces a shrinkwrapped layout again if used against npm registries like Artifactory that don't serve the_hasShrinkwrapoption. - [cds-dk@7.1.1]
cds importfor OData V4 EDMX importsEdm.Decimaldata type consideringPrecisionandScalefacet correctly. - [cds-dk@7.1.1]
cds importfor OData V4 EDMX importsDefaultValue="0"in CSN. - [cds-compiler@4.2.2] to.sql|hdi.migration: Fix bug that caused a migration to be rendered for the HANA CDS types that were removed from the CSN
- [cds-compiler@4.2.0] Compiler:
- Reject invalid reference in the
onofjoins already while compiling, not just when calling the (SQL) backend. - Correct the calculation of annotation assignments on the return structure of actions when both
annotate … with {…}andannotate … with returns {…}had been used on the same structure element. Ensure that it works when non-applied, too. - Do not remove or invent
actionsproperties with zero actions or functions in it. - Correct auto-redirection of direct cycle associations: if the source and target of a model association are the same entity, and the main artifact of the service association based on the model association is a suitable auto-redirection target, then use it as new target, independently from the value of
@cds.redirection.target.
- Reject invalid reference in the
- [cds-compiler@4.2.0] to.cdl: Indirectly structured types (
type T: Struct;) withincludes(extend T with T2;), are now properly rendered. - [cds-compiler@4.2.0] to.sql/hdi/hdbcds:
- Views on views with parameters did not have localized convenience views based on other localized views (missing
localized.prefix in FROM clause) - Run less checks on entities marked with
@cds.persistence.exists - Correctly render SELECT items where the column name conflicts with a table alias
- Views on views with parameters did not have localized convenience views based on other localized views (missing
- [cds-compiler@4.2.0] to.sql: Casting expressions to a structured type yields a proper error instead of strange compiler error.
- [cds-compiler@4.2.0] to.edm(x):
- Don't expand
@mandatoryif element has an annotation with prefix@Common.FieldControl.. - Fix a bug when referencing nested many structures, especially referring to a managed association via
$selfcomparison. - Improve handling of non-collection annotation values for collection-like vocabulary types.
- Don't render
Scale: variableforcds.Decimal(scale:0).
- Don't expand
- [cds-compiler@4.2.0] to.sql|hdi.migration:
- Fixed a bug that caused rendering of
ALTERstatements to abort early and not render some statements. - CSN output now only contains real
cdsbuiltins, no early remapping to HANA CDS types or similar.
- Fixed a bug that caused rendering of
- [cds-compiler@4.2.0] to.sql.migration: Don't drop-create views marked with
@cds.persistence.exists - [cds-compiler@3.9.10] to.edm(x): Error reporting for incorrect handling of "Collection()" has been improved.
- [cds-compiler@3.9.10] to.sql/hdi/hdbcds: Views on views with parameters did not have localized convenience views based on other localized views (missing
localized.prefix in FROM clause) - [cds-compiler@3.9.10] to.sql: Casting expressions to a structured type yields a proper error instead of strange compiler error.
- [cds-compiler@3.9.10] to.sql.migration: Don't drop-create views marked with
@cds.persistence.existsor@cds.persistence.skip - [cds-compiler@3.9.8] to.edm(x):
- Don't expand
@mandatoryif element has an annotation with prefix@Common.FieldControl.. - Fix a bug when referencing nested many structures, especially referring to a managed association via
$selfcomparison.
- Don't expand
- [cds-compiler@3.9.8] to.sql/hdi/hdbcds: Detect navigation into arrayed structures and raise helpful errors instead of running into internal errors.
- [cds.java@2.1.1] Fixed a bug, causing draft-related fields to be calculated after custom
@Beforehandlers onDRAFT_CREATEandDRAFT_PATCHevents. - [cds.java@2.1.1] Fixed a bug in MT lib, causing subscriptions to fail with error
class java.lang.Integer cannot be cast to class java.lang.String. - [cds4j@2.1.1] Fixed 'Literal value must not be null' exception on nested to-many expands in queries using top (pagination)
- [cds4j@2.1.1] Fixed SQL exception on paginated queries with expands of unmanaged to-many associations that only use constants in the on-condition
- [cds@7.1.2]
req.tenantis undefined when using new OData parser - [cds@7.1.2] Draft: replace some occurrences of the
arr.push(...largeArray)pattern when copying large arrays to prevent maximum call stack size exceeded errors due to large deep update processing when saving the draft - [cds@7.1.2] Do not add keys to diff as they could be renamed (which leads to SQL error)
- [cds@7.1.2] Custom bound actions for draft-enabled entities don't trigger a READ request on application service anymore
- [cds@7.1.2]
cds.connect.to('db', options): add-hoc options for SAP HANA Database Service - [cds@7.1.2] Reading key-less singleton with
$selectclause while using the new OData parsercds.env.features.odata_new_parser - [cds@7.1.2] Don't use colored logs if
process.env.NO_COLORis set or not logging to a terminal (i.e.,!process.stdout.isTTY || !process.stderr.isTTY)
July 2023
Added
- [vscode-cds@7.0.2] CAP notebooks: add support for backslash in shell and terminal cells for multiline scripts
- [vscode-cds@7.0.2] CAP notebooks: Shell-type syntax highlighting for Terminal cells
- [cds-compiler@4.1.0] Calculated elements "on-read" can now reference localized elements.
- [cds-compiler@4.1.0] Aliases for columns inside sub-queries and expressions are now optional.
- [cds-compiler@4.1.0] for.odata/to.hdi/to.sql: Specified default value on a managed association is forwarded to a foreign key if the association has exactly one foreign key.
- [cds-compiler@4.1.0] CDL: Annotation-only aspects having no
elementsandactionscan now be defined with the CDL syntax@Anno… aspect Name;. They cannot be extended with elements or actions in order to ensure that they can always be used to extend non-structures. To allow the former but not the latter, use@Anno… aspect Name {…};. - [cds-compiler@4.1.0] to.sql: Support session variables for h2.
- [cds.java@2.1.0] new module
cds-feature-postgresql, which if present auto-configures DataSource objects for PostgreSQL service bindings. - [cds.java@2.1.0] new module
cds-feature-pdfto support PDF export scenarios with OData V4. - [cds.java@2.1.0] Level of detail for the annotation
@Generatedfor generated interfaces is now configurable viacds-maven-plugin. - [cds.java@2.1.0] The property
cds.sql.supportedLocalesnow supports a YAML list value, in addition to a comma-separated String value. - [cds.java@2.1.0] Leverage session context variables on H2 for localized and temporal data.
- [cds.java@2.1.0] The
watchgoal of thecds-maven-plugioncan be executed from the root directory of the CAP Java application. - [cds.java@2.1.0] Added the goal
addto thecds-maven-plugin, which supports adding different features to the CAP Java project. Supported features aresqlite,h2andmultitenancy. - [cds.java@2.0.2] The Audit Log OAuth2 plan can now be used with the persistent outbox.
- [cds.java@2.0.2] Reflection Metadata for GraalVM Native Image is now contributed automatically, incl. for event handlers and data and query builder interfaces built and generated in applications.
- [cds.java@1.34.2] The Audit Log OAuth2 plan can now be used with the persistent outbox.
- [cds4j@2.1.0] CQL queries are able to use the alias of the select list item in an
orderByclause instead of the element name. - [cds4j@2.1.0] Introduced an option to configure the level of details for the annotation
@Generatedfor generated interfaces. - [cds4j@2.1.0] Don't enforce locale-specific comparison for equality checks
- [cds4j@2.1.0] Don't enforce locale-specific comparison non-string compares
- [cds4j@2.1.0] H2: support lock with timeout (
FOR UPDATE ... WAIT) - [cds4j@2.1.0] H2: use session context variables for localized and temporal data
- [cds@7.1.0] Support to resolve experimental
STREAMCQN queries that point to views. - [cds@7.1.0] Enable PDF export via GET to collection with accept header
appplication/pdf. Custom handler must return the following:js{ value: <instance of Readable>, $mediaContentType: <String>, // > optional, defaults to: application/pdf $mediaContentDispositionFilename: <String>, // > optional $mediaContentDispositionType: <String> // > optional, defaults to 'attachment' if $mediaContentDispositionFilename is set } - [cds@7.1.0] Schema for
cdsentry inpackage.jsonnow has a tooltip and default value. - [cds@7.1.0]
srv.endpoints: Array containing the information for all endpoints at which the service is served. Example:js[ { kind: 'odata-v4', path: '/odata/v4/browse' }, { kind: 'rest', path: '/rest/browse' } ] - [cds@7.1.0] Service level support for @restrict. Limited to grant: '*' and all filter conditions in
whereare ignored. Example:cds@(restrict: [{ grant: '*', to: ['authenticated-user'] }])
Changed
- [cds-dk@7.1.0]
cds buildnow fails if SAP HANA schema evolution changes exist that need to be manually resolved. - [cds-dk@7.1.0]
cds buildnow throws an error for Java apps using the mtx build task in combination with@sap/cds-dkversion >= 7. - [cds-dk@7.1.0]
cds importnow supports OData V4 EDMX files with empty or missingEntityContainer. - [cds-dk@7.0.3]
cds addadheres to the existing indentation style when changing JSON files. - [cds-dk@7.0.3]
cds add typerno longer addscheckJs: trueto your configuration. - [cds-dk@7.0.3]
cds inituses the latest Maven Java archetype version 2.0.2 for creating Java projects. - [cds-dk@7.0.3]
cds buildnow throws an error if the mtx sidecar and application db configuration is inconsistent. - [cds-dk@7.0.3]
cds watch --opennow delays the opening of the URL by 1s to allow the server to start up. This is needed for plugins that register routes asynchronously. - [cds-dk@7.0.2]
cds add kibana-loggingis (compatibly) renamed tocds add kibana. - [cds-compiler@4.1.0] api: Function
isInReservedNamespace(name)handles namecdsas being in a reserved namespace as well. - [cds-compiler@4.1.0]
CompilationError.messagessorting is now severity aware. Errors are listed first. - [cds-compiler@4.1.0] Compiler:
- Improve the calculation of semantic code completion candidates.
- Some checks, like those for valid
onconditions of associations, are now already done withcompileand not just the backends. - SQL
cast()s must always have atypeproperty - Type properties such as
precisionorlengthmust be accompanied by a type (possibly inferred).
- [cds-compiler@4.1.0] for.odata/to.hdi/to.sql: No longer reject unmanaged associations as foreign keys of a managed association. Instead, ignore such references during ON-condition rewriting and foreign key generation. Referring to unmanaged associations is incompatible with SAP HANA CDS naming mode 'hdbcds'.
- [cds-compiler@4.1.0] to.sql: Rework session variables for PostgreSQL.
- [cds-compiler@4.1.0] Update OData vocabularies: 'Common', 'HTML5', 'PersonalData', 'UI'.
- [cds.java@2.1.0] The transaction and lock time of the outbox collectors has been significantly reduced, by moving the wait time between failed outbox messages out of the transaction and lock. As part of this change the outbox collectors now require the outbox model from @sap/cds-dk >=6.
- [cds.java@2.1.0] Validating
TopicMessageEventContextwhen data, data map or headers map containnullvalues in invalid combinations. An exception is thrown on producer side, if neither data, data map nor headers map is set. - [cds.java@2.1.0] Use row value comparison for reliable pagination on H2, SQLite and PostgreSQL.
- [cds.java@2.1.0] Conditions for instance-based authorization will have all literal values in them sealed as constants
- [cds.java@2.1.0] Property
cds.sql.supportedLocalesdefaults to an empty list as all DBs support session context variables - [cds.java@2.1.0] The webhook handshake used in integration of Enterprise Messaging (MT) has been removed to avoid synchronization issues introduced by the Deploy main method.
- [cds.java@2.0.2] The Audit Log V2 feature now sets the user name in audit log messages explicitly instead of using
$USER. By default this is the value ofUserInfo.getName(). Settingcds.auditlog.v2.useLogonNametotrueensures to use the XSUAA principal name instead, which was used by Audit Log before. - [cds.java@1.34.4] The webhook handshake used in the integration of Enterprise Messaging (MT) has been removed to avoid synchronization issues introduced by the Deploy main method.
- [cds.java@1.34.2] The Audit Log V2 feature now sets the user name in audit log messages explicitly instead of using
$USER. By default this is the XSUAA principal, which was used by Audit Log before. Settingcds.auditlog.v2.useLogonNametofalseensures to use the value ofUserInfo.getName()instead. - [cap-js/graphql@0.6.2] Pin
graphiqlversion to^3 - [cap-js/graphql@0.6.2] Pin
@graphiql/plugin-explorerversion to~0.3 - [cap-js/graphql@0.6.1] Improved query logging:
- Don't log queries that are
undefined - Log
operationName - Log
variableswhen not in production - Sanitize arguments and their values in queries when in production
- Don't log queries that are
- [cds4j@2.1.0] Queries and expressions that are defined in the CDS model will have all literals in them sealed as the constants.
- [cds4j@2.1.0] The calculated elements (annotated with the annotation
@Core.Computed) are no longer searched by default. - [cds-mtxs@1.9.2] Remove peerDependency to
@sap/cds>=6. This caused troubles in installation scenarios where sap/cds 7 was fetched while 6 should be used.
Fixed
- [cds-dk@7.1.0] Calls from SAP Business Application Studio
New Project from Templatewizard are now handled correctly. - [cds-dk@7.1.0]
cds add cf-manifestcorrectly generates the XSUAA instance name. - [cds-dk@7.1.0]
cds buildalways uses the configured SAP Hana build task when building the mtx sidecar. - [cds-dk@7.1.0]
cds importOData V4 EDMX fix for Annotation Alias and Namespace value replacement. - [cds-dk@7.0.3]
cds deploywrites settings under the profilehybridas the default in.cdsrc-private.json - [cds-dk@7.0.3]
cds add sampleuses the default/odata/v4/service paths and data source paths in the UI5manifest.jsonfiles. - [cds-dk@7.0.3] When a request fails, shorter errors are printed and secret data is hidden. (Set
DEBUG=reqin env to see all details again.) - [cds-dk@7.0.3] Now shows all commands when a misspelled command is used along with the similarly named command.
- [cds-dk@7.0.3]
cds import --from edmxfixes rendering of nested annotations in the CSN. - [cds-dk@7.0.2]
cdscommands do not swallow error stack traces in some cases any more. - [cds-dk@7.0.2]
cds watchdoes not swallow compiler errors in some cases any more. - [cds-dk@7.0.2]
cds add samplehas modernized configuration for Fiori-related files in theappfolder. - [cds-dk@7.0.2]
cds add samplenow also contains a read-only service for browsing books. - [cds-dk@7.0.2]
cds add kibana-loggingnow also adds the logging service to the MTX sidecar and approuter, if available. - [cds-dk@7.0.2]
cds buildpreferably creates i18n bundle at default location_i18nfor custom i18n folder configurations. - [cds-dk@7.0.2]
cds watchno longer fails if@sap/cds-dkis installed as dependency along withcds-swagger-ui-express. - [cds-dk@7.0.2]
cds buildensures that@sap/cdsversion >= 6 is installed. - [vscode-cds@7.0.2] CDS Welcome Page does not show an error message if page is not reachable during start up
- [vscode-cds@7.0.2] CDS Welcome Page now starts with correct theme
- [vscode-cds@7.0.2] CAP notebooks: Only allow resolving, but not setting of env vars in Magic command cells
- [cds.java@2.0.2] Fixed a bug, causing wrong data response for complex type requests with path expressions.
- [cds-compiler@4.1.2] to.hdi.migration: Changes in constraints are not rendered as part of the .hdbmigrationtable file, as they belong in other HDI artifacts
- [cds-compiler@4.1.0] Compiler:
- ensure that annotations of elements in anonymous aspects of managed compositions are not lost.
- issue error for definitions like
entity Self as projection on Base { $self.* };instead of simply concluding that the projection has zero elements. - do not report an invalid cyclic dependency if associations between two entities are valid cycles.
- Element type references can follow associations (removed v4.0 incompatibility) again.
- [cds-compiler@4.1.0] to.sql:
$selfreferences inside a nested projection using$selfwas incorrectly resolved.- associations to entities marked with
@cds.persistence.skipwere not properly checked inside nested projections. - Select items casting
nullto an arrayed type work again, e.g.null as ManyType.
- [cds-compiler@4.1.0] to.sql/hdi/hdbcds: Raise a nice error message for
@sql.appendon managed associations/compositions, as we do for structured error messages. - [cds-compiler@4.1.0] to.cdl: Annotations with multiple qualifiers (
#) are now rendered correctly. - [cds-compiler@4.1.0] to.edm(x): Revert change introduced with 3.9.0 "Correct referential constraint calculation for
[0..1]backlink associations". - [cds-compiler@4.1.0] for.odata: Process shortcut annotations independently of sequence.
- [cds-compiler@4.1.0] to.sql.migration:
- Respect unique and referential constraints for delta calculation.
- Added a configurable error for primary key additions, as those will lead to errors if the table contains data. This could lead to inconsistent states if some deployments succeed and others fail, so by default it is an error.
- [cds-compiler@3.9.8] to.edm(x):
- Don't expand
@mandatoryif element has an annotation with prefix@Common.FieldControl.. - Fix a bug when referencing nested many structures, especially referring to a managed association via
$selfcomparison.
- Don't expand
- [cds-compiler@3.9.8] to.sql/hdi/hdbcds: Detect navigation into arrayed structures and raise helpful errors instead of running into internal errors.
- [cds-compiler@3.9.6] to.edm(x): Revert change introduced with 3.9.0 "Correct referential constraint calculation for
[0..1]backlink associations". - [cds-compiler@3.9.6] for.odata: Process shortcut annotations independently of sequence.
- [cds.java@2.1.0] Fixed a bug in the Kafka messaging service, that prohibited the retrieval of the partition key and the partition.
- [cds.java@2.1.0] Fixed a bug, causing overly restrictive key value checks in OData V4 deep updates with delta payloads
- [cds.java@2.1.0] Fixed a bug in the goal
watchof the cds-maven-plugin, causing thewatchgoal not to use the Spring-Boot Developer Tools, even if they are installed. - [cds.java@2.1.0] Fixed a bug, causing
ArrayIndexOutOfBoundsExceptionwhen updating or deleting draft-enabled entities. - [cds.java@2.1.0] Fixed a bug in the Kafka messaging service that caused an exception when creating a topic with a replication factor lower than the default.
- [cds.java@2.1.0] Fixed a bug, causing Kafka to not work with service bindings with basic authentication.
- [cds.java@2.1.0] Fixed a bug, causing
XsuaaServiceConfigurationbean to no longer be overridable by applications ifXsuaaServiceConfigurationDefaultclass is not used. - [cds.java@2.0.2] Fixed a bug, returning an incorrect data response for complex type requests with path expressions.
- [cds.java@2.0.2] Fixed a bug, that caused
NullPointerExceptionin the OData V2 protocol adapter during an error handling when a payload or the URL contains dates in a wrong format. - [cds.java@1.34.4] Fixed a bug in the Kafka messaging service that caused an exception when creating a topic with a replication factor lower than the default.
- [cds.java@1.34.3] Fixed a bug, causing Kafka to not work with service bindings with basic authentication.
- [cds.java@1.34.2] Fixed a bug, causing wrong data response for complex type requests with path expressions.
- [cds.java@1.34.2] Fixed a bug, that caused issues with generating the OData V4 nextLink URL, when the original URL had encoded
$characters in query parameter names. - [cds.java@1.34.2] Fixed a bug preventing the attributes typed as
Edm.DateTimein OData V2 to accept the date values with a fractions of a seconds or without the seconds. - [cds.java@1.34.2] Fixed a bug, that caused
NullPointerExceptionin the OData V2 protocol adapter during an error handling when a payload or the URL contains dates in a wrong format. - [cds.java@1.34.2] Fixed a bug, that caused a
ClassCastExceptionwhen making use ofSaasRegistryUnsubscriptionOptionsin unsubscription handler of DeployService. - [cds.java@1.34.2] Fixed a bug, that caused a HTTP request to the MTX Sidecar during startup, if provider tenant normalization was enabled.
- [cds4j@2.1.0] OOM when to-many expand was used with large, paginated result set.
- [cds4j@2.1.0] PostgreSQL: represent timestamps in session context variables in UTC.
- [cds4j@2.0.2] Allow to use enum constants as default values for elements with enum type
- [cds4j@2.0.2] Throw
NullPointerExceptionwhen addingnulltoSelect:columns,excluding,groupBy,orderByandExpand:items,orderBy - [cds@7.1.1] Lean draft: read actives via service on draft edit.
- [cds@7.1.1] Resolve column name for experimental
STREAMCQN queries that point to views. - [cds@7.1.1] Only log the error in case of an unhandled rejection.
- [cds@7.1.0] Multiple TypeScript improvements.
- [cds@7.1.0] Proper handling for
expand=*for OData URL to CQN parser (cds.env.features.odata_new_parser). - [cds@7.1.0] Fully qualified operation names are correctly resolved in the rest adapter.
- [cds@7.1.0] Log level for odata metadata cache was not handled correctly.
- [cds@7.1.0] Protocol paths are normalized to always have a leading slash.
- [cds@7.1.0]
@odatashortcut forodata-v4protocol with custom configuration. - [cds@7.1.0] Default protocol is
odata-v4, independent of the order incds.env.protocols. - [cds@7.1.0] Data is not logged for GET and DELETE remote requests.
- [cds@7.1.0] draft: deep updates without changes should not update the
modifiedAtfield. - [cds@7.1.0] Lean draft: do not propagate
@Capabilities.NavigationRestrictions.RestrictedProperties. - [cds@7.1.0] Commit db transaction only when the outbound streaming has ended.
- [cds@7.1.0] Lean draft: deactivate the legacy
draftsgetter. - [cds@7.1.0] Updated typings for srv.send.
- [cds@7.1.0]
$search: exclude calculated fields/expressions from the default search in the projection of projections. - [cds@7.1.0] Immutable properties are always removed from the payload during UPDATE.
- [cds@7.1.0]
serviceinfo.urlPathcontains the first endpoint of the service (cf.srv.endpoints), which is the legacy path ifcds.env.features.serve_on_root === true. - [cds@7.0.3] Compile for lean draft no longer adds a draft entity for external entities
- [cds@7.0.3] Rollback awaited in REST adapter
- [cds@7.0.3]
service.on('error')handler gets invoked only once - [cds@7.0.3]
SELECT.one.localized - [cds@7.0.3]
COPYFILE_DISABLE=1is now set for buildingtararchives by default - [cds@7.0.3] Actions of projection target are no longer accessible in the linked models
- [cds@7.0.3] Batch execute model-less mass inputs when on
@sap/hana-client - [cds@7.0.3] Requests to
/<path>/webappreturn 404 for absolute@pathspecifications - [cds@7.0.3]
cds compile --to serviceinfono longer returns paths w/ Windows\path characters - [cds@7.0.2] Glitch in
cds.deployif no change was applied - [cds@7.0.2] Detection of
.cdsrc-private.jsonduring startup - [cds@7.0.2] Respect capabilities annotation for draft events
- [cds@7.0.2]
cds compile --to serviceinforeturns correct service paths again - [cds@7.0.1] Feature toggle detection in single tenant mode
- [cds@7.0.1] Log output for OData $batch requests
- [cds@7.0.1] Avoid "catastrophic backtracking" issue in okra's tokenizer
- [cds@7.0.1] Transaction marked as committed too early
- [cap-js/graphql@0.6.2] GraphiQL Explorer Plugin initialization due to upstream implementation pattern change
- [cap-js/graphql@0.6.1] Changed GraphiQL Explorer Plugin CDN URL due to upstream renaming
- [odata-v2-adapter@1.11.4] Remove support for
serve_on_root. Define path explicitly tov2to restore previous behavior - [odata-v2-adapter@1.11.3] Fix absolute OData V4 paths for
$batchcalls - [odata-v2-adapter@1.11.2] Fix
$metadatarequest for absolute OData V4 paths - [cds-mtxs@1.9.2] The MTX migration script will not undeploy application database tables if HDI
auto_undeployis configured for thecds.xt.DeploymentService. - [cds-mtxs@1.9.2] The result verification of the MTX migration script no longer shows false errors when using
--force. - [cds-mtxs@1.9.2] When a request fails, shorter errors are logged and secret data is hidden. (Set
DEBUG=reqin env to see all details again.) - [cds-mtxs@1.9.1]
GET /-/cds/saas-provisioning/tenantnow doesn't include a duplicatetenantfield, but only provides the tenant viasubscribedTenantId. - [cds-mtxs@1.9.1] After switching from
@sap/cds-mtxto@sap/cds-mtxs, existing tenants will now be taken into account when running an upgrade for all tenants (['*']).
Removed
- [cds-compiler@4.1.0] Compiler:
- forbid wildcards in projection extensions:
extend … with columns { * ). - forbid column references such as
$user.*,$user.{id}and$user {id}.
- forbid wildcards in projection extensions:
June 2023
Added
- [cds-dk@7.0.0]
cds add connectivitynow supports MTA-based deployment. - [cds-dk@7.0.0]
cds add destinationnow supports MTA-based deployment. - [cds-dk@7.0.0]
cds add enterprise-messagingcreates scopes foremcallbackandemmanagementin thexs-security.jsonif XSUAA is enabled. - [cds-dk@7.0.0]
cds add hanaadds the new package@sap/cds-hanainstead of the directhdbdependency. - [cds-dk@7.0.0]
cds add mtawrites anevent-mesh.jsonif the Event Mesh is set up. - [cds-dk@7.0.0]
cds add typeradds type generation support for projects using the Node runtime. - [cds-dk@7.0.0]
cds add samplecreates a bookshop application incl. Fiori UI. - [cds-dk@7.0.0]
cds add samplesis deprecated. Usecds add tiny-sampleinstead. - [cds-dk@7.0.0]
cds envsupports new options--keys,--list,-json, and--raw. Seecds env ?for details. - [cds-dk@7.0.0]
cds import --from asyncapinow adds@topicannotation for specifying the channel name for the event. - [cds-dk@7.0.0]
cds import --from asyncapinow updates thepackage.jsonfor multiple services. - [cds-dk@7.0.0]
cds init --add javaprints a more specific error message when not using Java 17 in SAP Business Application Studio. - [cds-dk@7.0.0] New property
cds.cliallows reflecting on the CLI command and arguments. - [vscode-cds@7.0.1] CAP notebooks: CDS server cell reacts to regular expression
/started application/i. - [vscode-cds@7.0.0] CAP with Typescript (beta): generate TS typings from CDS model files upon save - requires
@cap-js/cds-typerto be installed in project - [vscode-cds@7.0.0] CDS language: Support highlighting, formatting and where-used for new language constructs: ternary operator,
storedelements and annotatedreturnsstatements - [cds-compiler@4.0.0] Calculated elements "on-write" are now supported, e.g.
elem = field + 1 stored;will be rendered in SQL asGENERATED ALWAYS AS. - [cds-compiler@4.0.0] compiler:
returnsof actions and functions can now be annotated, e.g.cdsaction A() returns @direct { … }; annotate A with returns { @anno val; }- It is now possible to use
*/inside doc comments by escaping it*\/. Only this exact string can be escaped. - Functions
parse.exprandparse.cqlnow supportgroup by,having,order by,limit, andoffsetin infix filters. - In expressions, you can now use function names after the
newkeyword which do not start withst_, if the name is followed by an open parenthesis.
- [cds@7.0.0] Handling of expand with multiple
*(e.g. $expand=,) in new parser. When using*in an expand the new OData parser now removes all unneeded*. - [cds@7.0.0] Tests run with
cds.test()now also loadcds-plugins - [cap-js/graphql@0.6.0] Support for
@sap/cds^7middlewares and protocols. Note: services now need to be annotated with protocol annotations such as@graphqlor@protocol: 'graphql'. - [cds-mtxs@1.9.0] MTXS Migration now checks extensibility configuration if old extensions exist.
- [cds-mtxs@1.9.0] Upgrade now checks if MTXS Migration has been done if old extensions exist and if extensibility is properly configured.
- [cds-mtxs@1.9.0]
GET /-/cds/saas-provisioning/tenantnow returns asubscribedTenantIdfield, even if the tenant was onboarded with no metadata. - [cds-mtxs@1.9.0] Token resource now accepts the POST method (can be used with @sap/cds-dk version 7).
- [odata-v2-adapter@1.11.0] CDS 7 support
- [odata-v2-adapter@1.11.0] Default route with CDS < 7 or option
middlewaresdisabled or featureserve_on_rootenabled staysv2 - [odata-v2-adapter@1.11.0] Default route with CDS >= 7 is
/odata/v2
Changed
- [cds-dk@7.0.1]
cds addhas a slightly revamped CLI UX. - [cds-dk@7.0.1]
cds initandcds add sqliteadd the new package@cap-js/sqlite, which usesbetter-sqliteinstead ofsqlite3. - [cds-dk@7.0.1]
cds add sample-tinyis (compatibly) renamed tocds add tiny-sample. - [cds-dk@7.0.0]
--productionas a global flag now setsCDS_ENVtoproductioninstead ofNODE_ENV. - [cds-dk@7.0.0]
cds add typeris now allowed to be used, even if the runtime considers the project to be of Java nature. - [cds-dk@7.0.0]
cds add typernow generates to@cds-models, which will also be.gitignored by the facet. - [cds-dk@7.0.0]
cds add typernow properly handles TypeScript projects, if possible. - [cds-dk@7.0.0]
cds add connectivitynow supports MTA-based deployment. - [cds-dk@7.0.0]
cds add data --foris dropped in favor of--data:for. - [cds-dk@7.0.0]
cds add destinationsis renamed tocds add destination. - [cds-dk@7.0.0]
cds add enterprise-messagingchanges the default for thetopicRules.publish-filterto${namespace}/*. - [cds-dk@7.0.0]
cds add enterprise-messaginguses a more unique default (default/<app-name>/1) as itsnamespace. - [cds-dk@7.0.0]
cds add hanauses a plaincds.requires.db = 'hana', also for multitenancy scenarios. - [cds-dk@7.0.0]
cds bindparameter--forreplaces--profileto specify the profile to store connection information in.cdsrc-private.json;cds bind --execstill uses--profile. - [cds-dk@7.0.0]
cds buildmoved to@sap/cds-dk. - [cds-dk@7.0.0]
cds buildno longer supports@sap/cds-mtx. Migrate to@sap/cds-mtxs, see https://cap.cloud.sap/docs/guides/multitenancy/old-mtx-migration. - [cds-dk@7.0.0]
cds buildno longer supports the classic CAP Java runtime. Migrate to the current CAP Java runtime SDK, see https://cap.cloud.sap/docs/java/migration. - [cds-dk@7.0.0]
cds deploymoved to@sap/cds-dk. - [cds-dk@7.0.0]
cds deploynow supports--forto specify the profile to store connection information in.cdsrc-private.json. - [cds-dk@7.0.0]
cds deployparameter--no-saveis default. - [cds-dk@7.0.0]
cds import --from asyncapinow takes event name from keynamein the message. - [cds-dk@7.0.0]
cds inituses latest Maven Java archetype version2.0.1for creating Java projects. This also requires Java 17 or higher. - [cds-dk@7.0.0]
cds watchandcds rundon't display stack traces any more if no models are found. - [cds-dk@7.0.0]
cds login(and other commands implicitly logging in) now use the POST method to transmit credentials to @sap/cds-mtxs. - [vscode-cds@7.0.1] Changed default output for generated types to
@cds-models - [vscode-cds@7.0.1] Minimum VS Code version is now 1.77.0
- [vscode-cds@7.0.0] CAP notebooks: Default code cell type is 'shell'
- [vscode-cds@7.0.0] Minimum VS Code version is now 1.78.0
- [cds-compiler@4.0.0] API:
messageContext()is now deprecated; usemessageStringMultiline()instead withconfig.sourceMap.messageString(err, config)has a new signature; the old one is still supported for backward compatibility.- Option
docComment: falsenow removes doc comments during compilation even for CSN. If this option is not defined, doc comments are checked, but not put into CSN.
- [cds-compiler@4.0.0] compiler:
- CSN: Specified elements of queries are now resolved and checked (previously ignored except for annotations). Type properties (
length, …) and some element properties are now taken from the specified elements instead of relying only on the elements inferred by the compiler. - CSN: Compiler accepts CSN input with CSN version
0.1.0(produced by cds-compiler version 1.10.0 and older) only if the version attribute is properly set, i.e."version": {"csn": "0.1.0"}. - CSN: Type properties (
length,precision,scale, andsrid) next toelementsoritemsin CSN input is now an error. Previously ignored. - An extension of the form
extend Def with { name = 42 };is now represented in parsed CSN as adding a calculated element. havingas the first word in an infix filter is now interpreted as keyword. Write![having]to have it parsed as identifier.- If a definition overrides elements of an included definition, it is sorted according to the included definition's element order. This is similar to how
*works in projections. It is no longer possible to overwrite a scalar element with a structure and vice versa. - Two included definitions cannot have the same element. The including entity must override the element.
- If a type with properties precision and scale is extended, the
extendstatement must extend both properties. annotate E:elem with actions {};is now a parser error and no longer a compiler error. Only relevant if you useparseCdl-style CSN.- Annotations (and other properties) are now propagated to
returnsas well, if the returned artifact is a non-entity, e.g. a type. annotate E with returns {…}is now only applied to actions/functions. Previous compiler versions autocorrected theannotatestatements to apply them to an entity's elements.- Calculated elements can't refer to localized elements.
- Table aliases can't be used in
extend Query with columns {…}any longer. Use direct element references instead. - Table alias and mixin names can no longer start with
$. Choose a different name. With this change we avoid unexpected name resolution effects in combination with built-in$-variables. - A semicolon is now required after a type definition like
type T : many {} null. - It is no longer possible to write
type of $self.‹elem›to refer to the element‹Def›.‹elem›where‹Def›is the main artifact where the type expression is embedded in. Replace bytype of <Def>:‹elem›. - Message ID
duplicate-autoexposedwas changed todef-duplicate-autoexposed.
- CSN: Specified elements of queries are now resolved and checked (previously ignored except for annotations). Type properties (
- [cds-compiler@4.0.0] Update OData vocabularies 'Common', 'UI'.
- [cds-compiler@4.0.0] to.sql:
- Change default
lengthforcds.Stringfor all SQL dialects excepthanato 255. - for the sql dialect
postgres, theON DELETE RESTRICT/ON UPDATE RESTRICTrules are omitted from the referential constraint definitions.
- Change default
- [cds-compiler@4.0.0] to.cdl:
- If associations are used inside
items, an error is emitted instead of rendering invalid CDL. itemsinsideitems, where the outer one does not have atype, is now always an error, because it can't be rendered in CDL
- If associations are used inside
- [cds@7.0.0] Result of
READevents is now always an array. Previously, it could benull/undefined(now empty array), single object (now array with one entry) or array. - [cds@7.0.0] OData:
PUT/PATCHrequests resulting in a new entity (i.e., theUPSERTeffectively was anINSERT) return status code 201 - [cds@7.0.0] Draft: Draft activate requests resulting in an
UPDATEreturn status code 200 - [cds@7.0.0] ETags are validated via
WHERE EXISTSclause attached to query onGET,PUT/PATCH, andDELETE - [cds@7.0.0] OData:
PUT/PATCHwithif-matchheader preventsUPSERT, i.e., only an existing entity can be updated by such a request - [cds@7.0.0] Runtime support for
@sap/instance-manageris removed in favor of thecds-mtxsService Manager client. - [cds@7.0.0] In multitenant mode, the HANA pool uses the
cds-mtxscredentials cache - [cds@7.0.0] Draft handlers are registered for all entities.
- [cds@7.0.0] Decimals in client input are validated in runtime's assert framework (previously OData adapter)
- [cds@7.0.0]
cds buildandcds deploy --to hanahave moved to@sap/cds-dk. Upgrade@sap/cds-dkto version 7 to continue using these commands. - [cds@7.0.0] Changed the behavior of
SELECTqueries for single entities to returnundefinedinstead ofnullwhen no record is found. - [cds@7.0.0] Fiori preview has moved to new
@sap/cds-fiorimodule. - [cds@7.0.0] Numbers are now always used as placeholders in SQL, except for
SELECT 1 From...,LIMITand the comparison of two numeric values (e.g.1 eq 1). - [cds@7.0.0] Only new major version 3 of SAP Cloud SDK is from now on supported. Please make sure to upgrade. Version 2 is not maintained anymore.
- [cds@7.0.0]
@protocolannotation can be used to serve multiple protocols per service. - [cds@7.0.0] Per default, services are served with a protocol-specific prefix (for example '/odata/v4' for a service using the OData V4 protocol). To also serve without this prefix, as it was the case in older @sap/cds versions, the flag
cds.env.features.serve_on_rootcan be set totrue. Alternatively, the@pathannotation can be used to explicitly specify an absolute path (with a leading/). - [cds@7.0.0]
cds.requires.middlewaresis enabled by default. - [cds@7.0.0] The order of csv files that
cds deploy --to sqliteuses now reflects the dependency order of cds models. This is needed ifUPSERTis used to create a logically correct deployment. - [cds@7.0.0]
cds.fiori.lean_draftis activated by default. You can still set it tofalseas fallback. - [cap-js/graphql@0.6.0] Bump required
@sap/cdsversion to>=7 - [cap-js/graphql@0.6.0]
@cap-js/graphql/index.jsnow collects individual services and mounts the adapter as a protocol middleware on thecds.on('served', ...)event - [cap-js/graphql@0.6.0] Moved the
GraphQLAdaptermodule tolib/GraphQLAdapter.jsand merged it withCDSGraphQLAdapterpreviously found inindex.jsin the root directory - [cap-js/graphql@0.6.0] Don't generate fields that represent compositions of aspects within mutation types that represent services
- [cap-js/graphql@0.6.0] Disabled conjunction on the same field for the following operators:
eq(Equal)gt(Greater Than)ge(Greater Than or Equal)le(Less Than or Equal)lt(Less Than)startswithendswith
Fixed
- [cds-dk@7.0.1]
cds import --from asyncapinow maps@topicannotation to the event key. - [cds-dk@7.0.1]
cds buildnow copies the contents of mtx sidecar subfolders to the deployment layout. - [cds-dk@7.0.1]
cds compile --to xsuaacan be used again if@sap/cds6 is installed. - [cds-dk@7.0.1]
cds envoutput is again JSON in non-interactive terminals. This restores the behavior from@sap/cds-dk6. - [cds-dk@7.0.0]
cds add mtanow correctly generates themta.yamlfollowing acds add enterprise-messaging-shared. - [cds-dk@7.0.0]
cds add typernow correctly defaults to…/cds-models, instead of…/cds-modulesas output path for generated types. - [cds-dk@7.0.0]
cds buildignores invalid entries in anundeploy.jsonfile. - [cds-dk@7.0.0]
cds buildnow correctly copies CAP Node.js service handler implementations contained in different service modules. The service handlers will now be loaded correctly in local as well as in cloud deployment scenarios. - [cds-dk@7.0.0]
cds buildnow correctly copies JavaScript files located in nested folders of a Node.js app into the deployment folder. - [cds-dk@7.0.0]
cds buildnow correctly resolves model files of complex mtx extension projects. - [cds-dk@7.0.0]
cds buildnow correctly supports shortcut options - [cds-dk@7.0.0]
cds-ts watchno longer fails with strange compilation errors if called in combination w/ts-node. - [cds-dk@7.0.0]
cds loginno longer echoes output from an npm subprocess. - [cds-dk@7.0.0]
cds buildnow creates the correct deployment layout for Node.js applications. - [cds-dk@6.8.3]
@sap/cds6.8.4 - [cds-dk@6.8.3]
@sap/cds-compiler3.9.4 - [vscode-cds@7.0.0] CAP Release Notes page: remove superfluous footer section
- [vscode-cds@7.0.0] CAP notebooks: Magic command newline issues on windows powershell
- [cds-compiler@4.0.2] to.sql.migration: When drop-creating views, also drop-create (transitively) dependent views.
- [cds-compiler@4.0.2] to.edm(x):
- Forward
@odata.singleton { nullable }annotation to parameter entity. - Annotations assigned to a parameterized entity are propagated to the parameter entity if the annotation is applicable to either an
edm.EntitySetoredm.Singleton. This especially covers all@Capabilitiesand their shortcut forms like@readonlyand@insertonly. The original annotation is not removed from the original entity. Annotations that should be rendered at the parameteredm.EntityTypecan be qualified with$parameters. Explicitly qualified annotations are removed from the original entity allowing individual assignments.
- Forward
- [cds-compiler@4.0.0] compiler:
parseCdlCSN did not include correct...entries for annotations containing... up to- Type references inside calculated elements were not always correctly resolved.
USINGempty files were incorrectly marked as "not found".- If an association was inside
items, e.g. via type chains, the compiler crashes instead of emitting proper errors.
- [cds-compiler@4.0.0] Localized convenience views for projections (not views) did not have references rewritten. This only affects CSN, the SQL result was correct.
- [cds-compiler@4.0.0] Calculated elements in composition-of-aspect lost their
valuewhen generating composition targets. - [cds-compiler@4.0.0] to.sql/to.hdi/for.odata: Foreign keys in ON-conditions were not always properly checked and flattened if explicit
keyswere provided that reference structures. - [cds-compiler@4.0.0] Extending bound actions with elements is not possible, but was not reported by the compiler and elements were silently lost.
- [cds-compiler@4.0.0] for.odata:
- Don't propagate
@odata { Type, MaxLength, Precision, Scale }from structured to flattened leaf elements. - Remove
type: nullattribute from element definitions referencing an undefined type viatype of.
- Don't propagate
- [cds-compiler@4.0.0] to.edm(x):
- Don't reject untyped properties that are API typed with a valid
@odata.Typeannotation. - Render correct
EntitySetPathand annotation target path for actions/functions with explicit binding parameter.
- Don't reject untyped properties that are API typed with a valid
- [cds-compiler@4.0.0] to.cdl: ParseCdl-style CSN containing annotations with
...were not properly rendered. - [cds-compiler@3.9.4] compiler:
USINGempty files were incorrectly marked as "not found". - [cds-compiler@3.9.4] Localized convenience views for projections (not views) did not have references rewritten. This only affects CSN, the SQL result was correct.
- [cds-compiler@3.9.4] to.edm(x): Render correct EntitySetPath and annotation target path for actions/functions with explicit binding parameter.
- [cds.java@2.0.1] Fixed a bug, that caused a
NullPointerException, if the headers map was set tonullinTopicMessageEventContext. - [cds.java@2.0.1] Fixed a bug preventing the attributes typed as
Edm.DateTimein OData V2 to accept the date values with a fractions of a seconds or without the seconds. - [cds.java@2.0.1] Fixed a bug, that caused a
ClassCastExceptionwhen making use ofSaasRegistryUnsubscriptionOptionsin unsubscription handler of DeployService. - [cds@7.0.0] UUID typed key properties are no longer automatically filled during UPSERT
- [cds@7.0.0] OData: When undefined in the payload, requests for actions with not nullable array-type parameters result in a client-side error
- [cds@7.0.0] Missing
GROUP BYin request with $apply in combination with aggregate on restricted entity - [cds@7.0.0] When
@sap/cdswas not installed underneath project root, cds-plugins where not found - [cds@7.0.0] Support for multiline texts in
propertiesfiles - [cds@7.0.0] Error when reading auth protected entities with infix filter in expand
- [cds@7.0.0] Glitch in transaction handling in case of concurrent async before handlers
- [cds@6.8.3]
cds buildno longer reports CAP Java Classic runtime usage by mistake. - [cds@6.8.3]
cds versionprints the local@sap/cdsversion, even if called from a different@sap/cdsinstallation. - [cds@6.8.3] User challenges handling in case of
cds.env.auth.restrict_all_services: false - [cds-mtxs@1.8.4] Further improvement of timeout error handling when fetching uaa tokens.
- [cds-mtxs@1.8.3] Enables passing deployment options to the
upgradeendpoint ofcds.xt.SaasProvisioningService. - [cds-mtxs@1.8.3] The Service Manager now requests the authorization token resiliently.
- [cds-mtxs@1.8.3] MTXS migration script now ignores changes caused by sap.common entities when verifying the migration result.
- [odata-v2-adapter@1.11.1] Fix compatibility for option
middlewaresdisabled or featureserve_on_rootenabled - [odata-v2-adapter@1.10.6] Fix metadata type for managed composition entities and sub-entities
Removed
- [cds-compiler@4.0.0] NodeJs 14 is no longer supported.
- [cds-compiler@4.0.0]
CompileMessageno longer has propertylocation, which was deprecated in v2.1.0, but$location, which is supported since v2.1.0 - [cds-compiler@4.0.0] "Smart type references" such as
Entity.myElementinstead ofEntity:myElementare removed, because since compiler v2,Entity.myElementcould also be a definition, creating ambiguities. - [cds-compiler@4.0.0] Element type references can no longer follow associations, i.e.
E:assoc.idis not allowed. - [cds@7.0.0] Deprecated
req.run()function, usecds.run()instead. - [cds@7.0.0] Support for inofficial feature flag
cds.env.features.bigjs - [cds@7.0.0] Support for inofficial feature flag
cds.features.parameterized_numbers - [cds@7.0.0] Deprecated referential integrity checks at runtime
- [cds@7.0.0] Support for
cds-mtx - [cds@7.0.0] Support for Node 14
- [cds@7.0.0] Internal
req.getUriInfo()andreq.getUrlObject() - [cds@7.0.0]
cds deploy --to hanais now part of@sap/cds-dk. - [cds@7.0.0] Deprecated compat mode
cds.env.features.cds_tx_protection = false - [cds@7.0.0] Beta
AuditLogServiceand out-of-the-box audit logging. Use plugin@cap-js/audit-logginginstead.
May 2023
Added
- [cds-dk@6.8.0]
cds add file-based-messagingadds configuration for file-based messaging (Node.js). - [cds-dk@6.8.0]
cds add redis-messagingadds configuration for Redis messaging (Node.js). - [cds-dk@6.8.0]
cds add enterprise-messaging-sharedadds configuration for Event Mesh support withkind = 'enterprise-messaging-shared'(Node.js). - [cds-dk@6.8.0]
cds importnow supports OData V4 EDMX file containing multipleSchemaswith singleEntityContainer. - [cds-dk@6.8.0]
cds importnow 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.2] CAP notebooks: magic command can also be written inside of line- and block-comments
- [vscode-cds@6.8.0] User setting
cds.typeGenerator.localInstallationOnlyhas 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 Ticketto 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@2.0.0] Added OpenTelemetry instrumentation for Services, RequestContexts and ChangeSetContexts.
- [cds.java@2.0.0] The OpenTelemetry Context is propagated to child threads, when propagating the RequestContext.
- [cds.java@2.0.0] Added basic support for Spring AOT required for Spring Native Images.
- [cds.java@2.0.0] The archetype now supports creating projects using Java 20.
- [cds.java@2.0.0] The OData V4 adapter now supports using
$countin$expandtogether with$topand$skip. - [cds.java@2.0.0] The property
DraftIsProcessedByMeis now calculated when requestingDraftAdministrativeData. - [cds.java@2.0.0] Added support for using
Resultas POJO argument in@Afterevent handlers of CRUD events. - [cds.java@2.0.0] Writing tenant-specific audit logs to the AuditLog V2 service no longer requires the tenant subdomain to be known.
- [cds.java@2.0.0] Added a new configuration property
structuredto the messaging service configuration. If set totrueit enforces a structured JSON Map-based representation of the message. Plain strings are transformed into a structured representation. Note that this might have an effect on the representation of the message in the broker. In addition setting this property enables handling of message headers (e.g. cloudevent headers) separately from the message itself on brokers that have a native representation for headers (e.g. Kafka). On incoming messages the flag determines the internal representation of the message either as a plain String or two Maps of message data and message headers. - [cds.java@2.0.0] The dead-letter queue set in the Event Mesh or Message Queueing queue configuration is now automatically created, if not yet existing.
- [cds.java@1.34.1] Added support for replacing the
$namespaceplaceholder in queue configuration values. - [cds.java@1.34.0] A new starter module
cds-starter-k8shas been introduced which bundles useful CAP dependencies for the Kubernetes/Kyma environment. - [cds.java@1.34.0] The CDS Maven archetype now supports the
kubernetesandk8svalues as additional option in thetargetPlatformparameter. - [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
DeployorSubscribeno 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.upgradenow 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.
- [cds4j@2.0.0] Calculated elements with a value expression with “on-read” semantics are supported
- [cds4j@2.0.0] Add constants
CQL.TRUE,CQL.FALSEandCQL.NULL - [cds4j@2.0.0] Suppress the execution of DB statements whose filter condition statically evaluates to
false - [cds4j@2.0.0] New
CqnExpand.inlineCount()method to include the count of entries in the expand - [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 buildignores invalid entries inundeploy.json - [cds@6.8.0] New
minorUnitelement insap.common.Currenciesfor 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 nulland$user.<attr> is not nullin@restrict.where.is nullmatchesnulland[],is not nullmatches arrays with at least one entry as well as!= nullif no array. - [cds@6.8.0] Plugins are now also fetched from
devDependencies, unlessNODE_ENV === 'production' - [cds@6.8.0] Plugins can now provide
cdsconfigurations 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.2]
cds compiletoopenapinow uses@Common.Labelannotation to generatex-sap-shortText. - [cds-dk@6.8.2]
cds importnow removesx-from elements in the@AsyncAPI.Extensionsannotation while importing AsyncAPI documents. - [cds-dk@6.8.2]
cds compiletoopenapinow sorts thetagsandpathsin alphabetical order. - [cds-dk@6.8.2] The livereload feature of
cds watchcan be disabled throughcds.livereload: falseinpackage.json. - [cds-dk@6.8.0]
cds inituses latest Maven Java archetype version 1.34.0 for creating Java projects. - [vscode-cds@6.8.2] Changed default output directory for generated CDS types from
@typesto anode_modulessubfolder - [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 VS Code version is now 1.76.0
- [cds.java@2.0.0] Java 17, Spring Boot 3 and Jakarta EE 10 are now required as minimum versions.
- [cds.java@2.0.0] The default value of property
cds.security.authentication.normalizeProviderTenantis changed totrue. With this change, the provider tenant is normalized and set to null in the UserInfo by default. If you have subscribed the provider tenant to your application you need to disable this feature. - [cds.java@2.0.0] The
cds-services-archetypenow generates projects, which use JUnit 5 and include thespring-boot-starter-testdependency. - [cds.java@2.0.0] Removed various deprecated classes and methods.
- [cds.java@2.0.0] Removed various deprecated configuration properties.
- [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 = codeevaluates tofalseif the user attributecodeis 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.enabledset totrue). - [cds4j@2.0.0] Make
Valuetype final. Changing the type of a value now returns a new (immutable) value or throws an exception - [cds4j@2.0.0] Changed signature and default impl of
Modifier::paramto replace immutable params - [cds4j@2.0.0] Add
nullvalues to the query result - [cds4j@2.0.0] Result rows of Updates are not cleared anymore if no entity was updated, instead check the update count
- [cds4j@2.0.0] Removed deprecated
CqnModifier - [cds4j@2.0.0] Removed deprecated
CqnLimitandLimitinterfaces - [cds4j@2.0.0] Removed deprecated
Modifiermethods:expand(ref, items, orderBy, limit)in(Value<?> value, Collection<Value<?>> list)selectListItem(Value<?> value, String alias)limit(Limit limit)
- [cds4j@2.0.0] Removed deprecated (positional) params from
CQLandCqnBuilder - [cds4j@2.0.0] Removed deprecated
Segment:acceptandCqnVisitor:visit(segment) - [cds4j@2.0.0] Removed support for deprecated annotations
@Search.cascade - [cds4j@2.0.0] Removed deprecated Upsert strategy "replace" (cascading delete + deep insert)
- [cds4j@2.0.0] Removed deprecated
RefSegment - [cds4j@2.0.0] Removed deprecated Modifier
CompatibilityDefaultsand mutable refs - [cds4j@2.0.0] Removed deprecated methods in
ResultBuilder - [cds4j@2.0.0] Removed deprecated
CqnXsert.Kind - [cds4j@2.0.0] Removed deprecated
ConstraintViolationException - [cds4j@2.0.0] Removed deprecated
Select::groupBy(Collection<CqnSelectListItem> dimensions) - [cds4j@2.0.0] Removed deprecated
CdsAssociationType::keys - [cds4j@2.0.0] Removed deprecated
Source::getRoot - [cds4j@2.0.0] Removed deprecated
CqnParameter::getName - [cds4j@2.0.0] Removed deprecated
CqnSelectList::prefix - [cds4j@2.0.0] Removed deprecated
CqnSortSpecification::item - [cds4j@2.0.0] Removed deprecated
CqnSource::isQuery,CqnSource::asQuery - [cds4j@2.0.0] Removed deprecated
JDBCDataStoreConnectorconstructors - [cds4j@2.0.0] Removed deprecated
CqnSelectListItem::displayNameandalias - [cds4j@2.0.0] Removed deprecated
CQL::literal - [cds4j@2.0.0] Removed deprecated
CdsStructuredType::isInlineDefined - [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/connectivitynpm 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
DELETEcustom 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
filterargument - [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 adapter API. - [cds-mtxs@1.8.0]
JobsService: the job status will now remainRUNNINGuntil all tenant tasks have succeeded or failed, instead moving toFAILEDas soon as there's the first task failure.
Fixed
- [cds-dk@6.8.2]
@sap/cds-dk6.8.2 - [cds-dk@6.8.2]
@sap/cds-mtxs1.8.2 - [cds-dk@6.8.2]
cds add mtaadds configurationenterprise-messaging-sharedif necessary - [cds-dk@6.8.1]
cds-ts watchno longer fails with strange compilation errors if called in combination w/ts-node - [cds-dk@6.8.0]
cds-ts watchnow honors atsconfig.jsonin the project - [cds-dk@6.8.0] launch script for
CAP projectsin VS Code fixed - [vscode-cds@6.8.2] Links on CAP Release Notes page are now pointing to correct locations in Capire.
- [vscode-cds@6.8.1] CAP notebooks: sample notebook
Shellnow uses a cross platform example - [vscode-cds@6.8.1] CAP notebooks: shellscript syntax highlighting for
Shellcell - [vscode-cds@6.8.1] CAP notebooks: cells
CDS,JavaandJavascriptnow show error message if needed executable is not found - [vscode-cds@6.8.1] Fix CAP Release Notes page
- [vscode-cds@6.8.1]
Report issuesurl now points to correct SAP Answers location - [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@2.0.0] Fixed a bug, that caused a HTTP request to the MTX Sidecar during startup, if provider tenant normalization was enabled.
- [cds.java@2.0.0] Fixed a bug, that caused issues with generating the OData V4 nextLink URL, when the original URL had encoded
$characters in query parameter names. - [cds.java@1.34.1] Fixed a bug in instance-based authorization that caused misinterpretation of expressions with
is nulloris 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
ClassCastExceptionwhen settingcds.errors.extendedto 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
NullPointerExceptionwhen triggering tenant upgrades. - [cds4j@2.0.0] The CQL clauses
search()andbyId()are supported in an EXISTS subquery - [cds4j@1.38.1] Fix Update and Delete with path expression to target entity with aliased key elements
- [cds@6.8.2] EDMX texts for extended tenants based on
@sap/cds-mtxnow appear correctly again. - [cds@6.8.2]
@assert.rangefor DateTime/Date/Time/Timestamp - [cds@6.8.2] Nested
$expandOData query to thetextscompiler-generated composition for entities with localized elements. For example, similar OData requestsEntity?$expand=items($expand=item($expand=texts))now should work as expected. - [cds@6.8.2]
req.subjectwould occasionally be incorrect when a query had been executed prior to it. - [cds@6.8.2] cds plugins are also fetched from
devDependencies - [cds@6.8.2]
cds buildnow correctly resolves complex models of mtx extension projects - [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
cdscore 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
$searchand$expandquery and localized data was returning empty results on SAP HANA - [cds@6.8.0] Tests using
cds.testno longer crash with a segmentation fault ifinjectGlobals: falseis set in the Jest configuration. - [cds@6.8.0] Handlers registered with
cds.on('shutdown')are now called with anerrargument 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.loginstead ofconsole. - [cds@6.8.0] New config option
cds.env.server.force_exit_timeoutallows 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(). Valuesfalseor0disable force-exit. - [cds@6.8.0] Require custom auth relative to project root when using pluggable middlewares
- [cap-js/graphql@0.5.0] Aligned
cds.Requestinstantiation with other protocols for more consistent usage in custom handlers - [cds-mtxs@1.8.2] Fix for asynchronous subscriptions with
lazyT0 = true. - [cds-mtxs@1.8.2] SAP HANA deployment now correctly evaluates the sql mapping configuration (e. g.
cds.data.sql_mapping.quoted) also for deployment oft0. - [cds-mtxs@1.8.1] MTXS Migration can now handle empty extension projects.
- [cds-mtxs@1.8.1] MTXS Migration can now handle extension projects with complex folder structure correctly.
- [cds-mtxs@1.8.1] The SaaS registry callback now supports X.509 authentication.
- [cds-mtxs@1.8.1] Sidecar is now using mocked authentication in development mode.
- [cds-mtxs@1.8.1] Fix for asynchronous subscriptions with
lazyT0 = true. - [cds-mtxs@1.8.0] MTXS Migration only deploys
cds.xt.Extensionsinstead of the full application model. - [odata-v2-adapter@1.10.5] Replace deprecated usage of
req.runwithcds.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-verificationto commandcds migrate. It skips the extension verification to save memory. Requires@sap/cds-mtxs@1.7.3. - [cds-compiler@3.9.0] Variables
$valid.fromand$valid.tohave been added to the compiler. They behave the same as$at.fromand$at.to. - [cds-compiler@3.9.0] to.edm(x):
- Add
--odata-vocabulariesto 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
@openon 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_openvice 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
@openentities on insert/update - [cds4j@1.38.0] Add
CQL.copyforCqnElementRefandCqnStructuredTypeRefreturning 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_contextfunction 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 inituses latest Maven Java archetype version 1.33.1 for creating Java projects. - [cds-dk@6.7.1] Bump
@sap/cdsto 6.7.1 - [cds-dk@6.7.1] Bump
@sap/cds-mtxsto 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
$sourcesproperty 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,ElementRefandStructuredTypeRefimmutable - [cds4j@1.38.0] Deprecate
Modifier:refmethods on mutable copies and introduce new ref methods for immutable refs - [cds4j@1.38.0] Deprecate
Modifier:matchmethod and introduce newmatchmethod that does not copy the ref - [cds4j@1.38.0] Deprecate
Modifier:inlinemethod and introduce newinlinemethod that does not copy the ref - [cds4j@1.38.0] Deprecate
Modifier:expandmethod and introduce newexpandmethod that does not copy the ref - [cds4j@1.38.0] Remove deprecated
Value:castmethods, instead useValue:type - [cds4j@1.38.0] Shortcut evaluate
lhs IS NOT NULLtoTRUEiflhsis 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
DefaultValueforEdm.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-EXISTENTfor 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.Timetyped values in URIs represented as durations (e.g.PT10H10M20S) to fail request parsing. - [cds4j@1.38.0] Change return type of
Modifier:selectAlltoList - [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
IsActiveEntityin 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-Typeheader 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
addfor extension modification. - [cds-mtxs@1.7.2] Model Provider Service now offer action
getExtResourcesreturning 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
undefinedelement during data conversion - [odata-v2-adapter@1.10.2] Convert array structures
- [odata-v2-adapter@1.10.1] Update
xml2jsdependency 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 openapinow adds extension validation keywordsx-sap-precisionandx-sap-scalefor 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
SaasRegistryUnsubscriptionOptionsandSaasRegistrySubscriptionOptionsthat 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_UPDATEDevent is emitted once a tenant was extended - [cds-dk@6.7.0]
cds upgradeenables 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 }; - [cds-compiler@3.8.0] In CDL, a ternary operator was added as a shortcut for
CASEexpressions:a ? b : cis a shortcut forCASE WHEN a THEN b ELSE c END. There is no CSN representation. The ternary operator is rendered as aCASEexpression in CSN. - [cds-compiler@3.8.0] In CDL and CSN,
not nullcan 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
TenantProviderServicenow provides, as part of theTenantInfoclass, 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.Subscribeandcom.sap.cds.framework.spring.utils.Unsubscribeallow triggering subscriptions or unsubscriptions as tasks. - [cds@6.7.0] Config
cds.ql.quirks_modeas 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'}}true→ to be changed tofalsewith cds7. - [cds@6.7.0]
cds buildnow checks extension point restrictions defined by the SaaS app provider.cds buildfails 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.afterfor actions and CRUD events - [cds@6.7.0] CLI command
cds envnow allows property paths with/instead of., which allows usages like that:
sh
cds env requires/cds.xt.ModelProviderService- [cds@6.7.0]
cds.envnow allows to statically set/add profiles viacds.profileandcds.profilesin package.json. - [cds@6.7.0]
cds.envnow also supports using profiles in definitions of presets, i.e., incds.requires.kinds. - [cds@6.7.0]
cds deploynow prints a warning when using Cloud Foundry client version less than 8. - [cds@6.7.0]
req.subjectto 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-serveas a future replacement forcds servein 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-plugintechnique for zero configuration - [cap-js/graphql@0.4.0] Support for filtering by
nullvalues - [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 } } } }
Changed
- [vscode-cds@6.6.0] extension now uses vscode-languageclient 8.x
- API consumers may need to adapt access. See changes. Especially
onReadyis no longer needed and was removed.
- API consumers may need to adapt access. See changes. Especially
- [vscode-cds@6.6.0] minimum VS Code 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()andDependenciesEventContextto return and useList<Map<String, Object>>instead ofList<String>for dependencies. Use helper classSaasRegistryDependencyto report dependencies to SaaS Registry. - [cds-dk@6.7.0]
cds env --foris now used to specify profiles; before it specified project paths, but never worked correctly. - [cds-dk@6.7.0]
cds add datanow uses comma as CSV separator by default instead of semicolon. This allows using GitHub tabular display. - [cds-dk@6.7.0]
cds add approuterdoesn't create entries forauthenticationMethodandauthenticationTypeany more, but uses the equivalent@sap/approuterdefaults. - [cds-dk@6.7.0]
cds add multitenancywill now create a sidecar MTX project for Node.js as well. - [cds-dk@6.7.0]
cds subscribeandcds unsubscribeno longer require a username in case @sap/cds-mtxs is configured with dummy auth. - [cds-dk@6.7.0]
cds subscribeandcds unsubscribenow 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,@readonlyare 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
SELECTs 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
RequestContextis 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 theRequestContextis 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
DeploymentServiceAPI 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 theDeploymentServiceAPI internally. This enables using theDeploymentServiceAPI without wrapping the call in a privileged userRequestContext. In case theMtSubscriptionServicecompatibility 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.intervalMilliswith 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
TRUEinWHERE,ORDER BYand 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 inDEBUGlevel, before that was onTRACE/SILLYlevel 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
POSTrequests. - [cds@6.7.0] Flag
cds.features.fiori_previewchanged tocds.fiori.preview. The old flag still works as well. - [cds@6.7.0] Flag
cds.features.fiori_routeschanged 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]
DeploymentServiceplugin handlers are now registered onserving:cds.xt.DeploymentService. - [cap-js/graphql@0.4.0] Improved handling of
nullandundefinedvalues in query arguments - [cap-js/graphql@0.4.0] Empty filter lists resolve to
falseand empty filter objects resolve totrue
Fixed
- [cds-dk@6.6.1]
cds add helmfixed html5 cloud service is now read properly. - [cds-dk@6.6.1]
cds importnow flattens the@Capabilitiesannotation in the CSN for OData V4 files. - [cds-dk@6.6.1]
cds importfor OData V4 files now captures theEnumTypesinformation in the CSN according toUnderlyingType. - [cds-dk@6.6.1]
cds importnow captures the@Common.Textannotation value properly in the CSN for OData V4 files. - [cds-dk@6.6.1]
cds init --add javanow uses local Java version when creating new Java project. - [cds-dk@6.6.1]
cds watchterminates 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 (::1instead 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
$skipto be applied on all pages returned when server-driven pagination is used and the configuration optioncds.query.limit.reliable-paging.enabledis set totrue. Now the query option$skipis applied only on the first page of the results. - [cds.java@1.32.1] Fixed a bug causing a
NullPointerExceptionto be thrown when theDeploymethod 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]
TypeErrorwhen using the query API with an unknown target in x4 flavor - [cds@6.6.1] The setting for
cds.requires['cds.xt.DeploymentService'].lazyT0is now recognized in the VS Code schema validation. - [cds@6.6.1] The HDI deployment
stdoutlogs are now only visible forDEBUGlevel if triggered viacds-mtxs. They are also streamed tologs/<tenant>.login case you need the full deployment output, even withoutDEBUGenabled. - [cds@6.6.1]
.forUpdatewhen used for etags - [cds@6.6.1] Prevent
TypeErrorif an existing draft does not have admin data - [cds@6.6.1] Outbound-streaming error handling
- [cds-mtxs@1.6.3]
t0model 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-mtxcommands 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
t0will 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 compileerrors where not handled correctly, especially compiler errors not displayed in human readable format. - [cds-dk@6.7.0]
cds initcreates 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
sqlite3to 5.1.6 - [cds-dk@6.6.2] Bump
@sap/cdsto 6.2.2 - [cds-dk@6.6.2]
cds initcreates 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
lists 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.EntityContaineragain. 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-keysand 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.targetto 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
IsActiveEntityin error paths - [cds@6.7.0] For cloudevents using AMQP, the type is set to
application/cloudevents+json - [cds@6.7.0] Use
messageproperty in typings. - [cds@6.7.0] Typings for
cds.on('bootstrap', app => {app.use(...) - [cds@6.7.0] Return types for
Useranddeletein 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
$skiptokenand$skip - [cds@6.7.0] Error
package.json file is missingin 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 deploywithout mtx - [cds@6.6.2] Service name specified with
cds deploy --to hana:serviceNametakes 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.jswas missing infilesproperty ofpackage.json - [cap-js/graphql@0.4.0] Handling of GraphQL queries that are sent via
GETrequests using thequeryURL 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
@importanthas been removed.
February 2023
Added
- [cds-dk@6.6.0]
cds compileadded a new target formatasyncapito convert CDS models to AsyncAPI documents. - [cds-dk@6.6.0]
cds pullnow hints at base-model name forusingstatement. - [vscode-cds@6.5.1] The special
up_element is now supported in navigation - [cds-compiler@3.7.0] Several
annotatestatement can append/prepend values to the same array-valued annotation without ananno-duplicateerror, even if there is nousing fromdependency 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
newkeyword 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
cdsactuator 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 are11and17. - [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.bufferedtotrue. - [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 buildif 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]
t0onboarding 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
getCsnAPI 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 envnow allows inspecting entries with optionalgetcommand. E.g.cds env requires.db. - [cds-dk@6.6.0]
cds add multitenancynow uses async SaaS Provisioning Service onboarding by default. - [cds-dk@6.6.0]
cds add multitenancyfor Java will now addsqlite3todevDependenciesin the sidecarpackage.json. - [cds-dk@6.6.0]
cds add extensibilitynow works for Java projects out of the box. - [cds-dk@6.6.0]
cds importnow captures the Edm Primitive types without CDS mapping with annotation@odata.Typeand marks the type ascds.String. - [cds-dk@6.6.0]
cds add helmconnectivity service instance is no longer created. - [cds-dk@6.6.0]
cds inituses latest Maven Java archetype version 1.32.0 for creating Java projects. - [cds-dk@6.5.2] New versions of
@sap/cds-mtxsand@sap/cds-compiler - [cds-dk@6.5.2]
cds inituses latest Maven Java archetype version 1.31.1 for creating Java projects. - [cds-dk@6.5.1]
cds inituses 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]
mixinis 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
MtSubscriptionServiceAPI has been deprecated in favour of the newDeploymentServiceAPI. Event handlers on theMtSubscriptionServiceAPI 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
DeploymentServiceAPI. 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:idandRefSegment: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.MyServiceNameandServiceName, which might be problematic for applications that bootstrap services one by one. - [cds@6.6.0] Optimize
@cds.persistence.journalfiltering forlast-devCSN file. - [cap-js/graphql@0.3.0] Replaced deprecated GraphQL HTTP server
express-graphqlwithgraphql-http - [cap-js/graphql@0.3.0] Serve GraphiQL 2 via included HTML instead of relying on the server framework (
express-graphqlincluded GraphiQL 1) - [cap-js/graphql@0.3.0] Bump
graphqlversion 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_callbackdon't need a SaaS registry binding to the application any more.
Fixed
- [cds-dk@6.6.0]
cds unsubscribe --fromflag now recognized - [cds-dk@6.6.0]
cds importnow addscds.Booleanas dummy return type ifReturnTypeforFunctionImportis missing in the OData V2 edmx. - [cds-dk@6.6.0]
cds importresolves the$Castconstruct in the CSN for OData V4 files. - [cds-dk@6.6.0]
cds lintnow reports like ESLint in case of missing plugin@sap/eslint-plugin-cds - [cds-dk@6.5.2]
cds migrateno longer fails because of authorization error - [cds-dk@6.5.1]
cds deployno longer fails to write to apackage.jsonfile that has nocdssection - [vscode-cds@6.5.1] Closing a CDS file led to 'forgetting' the content in the index. This resulted in:
workspace/symbolsnot 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.cqlandparse.exprno longer ignore type arguments such ascast(field as String(12)). One argument is interpreted aslengthand two are interpreted asprecisionandscale, 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
$selfdereferencing - Correct resolution of table alias in non-bijective
$selfbacklink 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 versioncomment at the top of the HDI-based artifacts, as this caused HDI to detect the file aschangedand 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
$userinexistsfilters. - [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-pluginin 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.mediaContentTypeannotation. - [cds4j@1.36.0] Virtual elements of the entity annotated with
@cds.searchor@Search.defaultSearchElementare no longer searched - [cds4j@1.35.1] Fix
equalsandhashCodeofCdsDataandRowto be equal toMap:equals/Map:hashCode - [cds4j@1.35.1] Fix
orderByin optimized to-one-to-many expands - [cds4j@1.35.1] Connect multiple
orandandpredicates 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.TRUEinConjunction,DisjunctionandNegation. - [cds@6.6.0]
cds deploy --to hanano longer callscds bindwhenVCAP_SERVICESis provided, e.g viadefault-env.json. - [cds@6.6.0]
$searchon an entity without String elements - [cds@6.6.0] Only elements from type
cds.Stringare searchable when combining$applyand$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
srcfolder value. - [cds@6.6.0]
cds buildadds a.hdiconfigfile 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.jsnow skips thet0tenant 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
notoperator 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,500and501 - [cap-js/graphql@0.3.1] Add
appfolder tofilesproperty ofpackage.jsonto be included for publishing tonpm - [cds-mtxs@1.6.0] Fixed input validation for feature toggles containing
_or-. - [cds-mtxs@1.5.1]
cds migratedoes not crash any more when no options are supplied. - [cds-mtxs@1.5.1]
cds-mtx-migratecommand now terminates immediately when the migration is finished. - [cds-mtxs@1.5.1] Parameter
--dryforcds migrationnow also skips the creation of thet0tenant. - [cds-mtxs@1.5.1]
ModelProviderService: Non-repeated dots are now allowed in feature toggles, e.g.foo.bar.bazis 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-bindingsnow pulls required service credentials if bound viacds bind. (beta) - [cds-dk@6.5.0]
cds add helmnow supports multitenancy. - [cds-dk@6.5.0]
cds bindnow supports binding ofuser-provided service instancesfrom SAP BTP's Cloud Foundry. - [cds-compiler@3.6.0] API: There are new API functions for
to.cdl:smartId,smartFunctionIdanddelimitedId. - [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
$selformany $selfeven if no type named$selfexists. - [cds-compiler@3.6.0] If an aspect
sap.common.TextsAspectexists in thesap.commoncontext, it will be included in all.textsentities. This allows to extend.textsentities 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; } - [cds-compiler@3.6.0] to.edm(x): Support explicit binding parameter
<id>: [many] $selffor OData V4 only. The explicit binding parameter is rendered as any other parameter and$selfis replaced with the binding type but only if no$selfdefinition 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.TextsAspectin 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_uploadHDI 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.enabledto 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
topandskipmethods toModifierto modify pagination settings - [cds4j@1.35.0] New interfaces
CdsBoundActionandCdsBoundFunctionrepresent bound functions and actions of an entity.
Changed
- [cds-mtxs@1.4.4]
cds.xt.DeploymentServiceconfiguration has been flattened. Instead ofjsyou can now also write"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" } } - [cds-mtxs@1.4.4]
/-/cds/jobs/pollJobnow also returns atenantsfield, 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" } } } - [cds-dk@6.5.0]
cds pushnow runs a build of the extension project to update the pushed extension archive (unless custom archive given). - [cds-dk@6.5.0]
cds initandcds bindno 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.channelto@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` - [cds@6.5.0]
cds buildfor SAP HANA now adds anengines.nodeversion 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 buildchecks 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 --dryno longer loads thesqlite3module by mistake. This fixes a regression when building Java projects. As a side effect a file with the nameundefinedwas created in the project root folder. - [cds@6.5.0] Internal representation of pseudo roles
internal-userandsystem-user - [vscode-cds@6.5.0] CAP notebooks: code cells (
terminalandshell) have now their own working directory - [vscode-cds@6.5.0] minimum VS Code 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_NAMEconstant to builder interfaces of CDS events. - [cds4j@1.35.0] Annotate generated accessor and builder interfaces with
@Generatedfrom the packagejavax.annotation.processingonly if compiled with Java > 8. - [cds4j@1.35.0] Deprecate interface
CqnModifier, instead useModifier - [cap-js/graphql@0.2.0] Register
aliasFieldResolverduring schema generation instead of passing it to the GraphQL server - [cap-js/graphql@0.2.0] The filters
contains,startswith, andendswithnow generate CQN function calls instead of generatinglikeexpressions 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
pre2134ReferentialConstraintNamescan 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_callbackormtx_status_callback. - [odata-v2-adapter@1.9.17] Fix special replacement pattern in $filter conversion
- [cds-dk@6.5.0]
cds importnow generates flattened value for@Common.FieldControlannotation in the CSN for OData V4 files. - [cds-dk@6.5.0]
cds importnow treats theCollectionKindproperty 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
keyswere not quoted if necessary. - [cds-compiler@3.6.0] to.cdl:
- Aliases for
expandand foreignkeyswere not quoted if necessary. - Query functions that are CDL keywords were not properly quoted.
- CSN
docproperties 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
$Typein EDM JSON as a fully qualified@typeURI 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
$Typein EDM JSON as a fully qualified@typeURI property. - [cds.java@1.30.2] Fixed a bug in the
cds-maven-pluginwhich caused the goalgenerateto 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
hashCodeofRow - [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 ofreferences 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.envandcds.rootwhen 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 importnow generates flattened value for@Common.FieldControlannotation in the CSN for OData V4 files. - [cds-dk@6.5.0]
cds importnow treatesCollectionKindproperty 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
validFromandvalidToto 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
totalCountcould not be queried on its own
Removed
- [vscode-cds@6.5.0]
@cds.docannotation, 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.