Search

Changelog 2020

June 2020

Added

  • [cap.java@1.7.0] Adding CDS Element annotation @assert.range on enum elements now validates the input against valid enum values.
  • [cap.java@1.7.0] CQN statements querying services defined in the CDS model are augmented with an order by automatically (implicit sorting). The default order by uses the key elements of the target entity and, if the target is a view, the order by definition of the view.
  • [cap.java@1.7.0] Read requests on OData singletons are now supported. Limitations are, that navigations from singletons to other entities (for example, OldestAuthor/books and CUD operations don’t work out-of-the-box yet.
  • [cap.java@1.7.0] ETag conditions on $metadata endpoints are now evaluated. OData Responses also now contain the @metadataEtag field.
  • [cap.java@1.7.0] ETag conditions on OData bound action or function requests are now evaluated.
  • [cap.java@1.7.0] ETag conditions evaluated through selection, now lock the affected row for update.
  • [cap.java@1.7.0] The OData entity response field @etag (>= 4.01) or @odata.etag (4.0) is now set when returning collections of entities or expanded entities that have an ETag.
  • [cap.java@1.7.0] OData collection requests now automatically apply implicit server-driven paging, if the amount of requested entities exceeds a maximum value of 1,000. The maximum value can be controlled through property cds.query.limit.max or annotation @cds.query.limit.max. In addition a default page size can be set through cds.query.limit.default and @cds.query.limit.default.
  • [cap.java@1.7.0] The OData system query parameters (for example, $select, $expand) are now available through the method ParameterInfo.getQueryParameters() when processing OData requests.
  • [cap.java@1.7.0] UUIDs in OData requests are now normalized by converting them to lowercase.
  • [cap.java@1.7.0] The multi-tenancy feature now supports asynchronous subscriptions.
  • [cap.java@1.7.0] New API to register event handler methods on all services or on all services of a specific type.
  • [cap.java@1.7.0] New API to register services and event handlers as additional modules loaded through ServiceLoader.
  • [cap.java@1.7.0] New API to allow creation of custom services, and to enable them to be registered as Spring beans directly.
  • [cap.java@1.7.0] Enabled running CAP applications without a JDBC datasource configuration.
  • [cap.java@1.7.0] Added support for $orderby, $top, and $skip for draft enabled entities.
  • [cap.java@1.7.0] Added several new goals to CDS Maven Plugin:
    • Install Node.js in a specified version
    • Install CDS Development Kit in a specified version
    • Perform arbitrary CDS commands on a CAP Java project
    • Generate Java classes for type safe access
    • Clean your CAP Java project from artifacts of previous build
  • [cap.java@1.7.0] Adapted cds-services-archetype to use cds-maven-plugin in generated CAP Java projects
  • [cds4j@1.11.0] Support parameterized views on SAP HANA
  • [cds4j@1.11.0] Support limit and offset in expand
  • [cds4j@1.11.0] Support modifying limit and offset of select
  • [cds4j@1.11.0] Support default $now (Instant) value on insert
  • [cds4j@1.11.0] Result Builder API
  • [odata-server@1.8.1] license file: developer-license-3.1.txt

Changed

  • [cap.java@1.7.0] Replaced the CdsRuntimeBuilder with the CdsRuntimeConfigurer, allowing the CdsRuntime to be incrementally built and configured.
  • [cds4j@1.11.0] Lock statements on SQLite are silently ignored and executed as select queries instead of throwing an exception.
  • [cds@3.34.3] Faster generation of hdbtabledata files from csv data. It no longer tries to check the existence of element or column names. Such checks are anyways done during SAP HANA deployment. This behavior is now symmetrical to SQLite deployment.

Fixed

  • [cap.java@1.7.0] Fixed a bug where exception messages of non-framework exceptions were displayed to the end user, despite non-custom error messages being disabled.
  • [cap.java@1.7.0] Fixed a bug where a null OData function argument value caused a NullPointerException.
  • [cap.java@1.7.0] Fixed a misleading error message when patching an entity in draft state with a nested JSON structure.
  • [cap.java@1.7.0] Fixed a bug where multiple Spring contexts caused the CAP spring integration to prevent the app from being started.
  • [cds4j@1.11.0] Throw UnsupportedOperationException on deep updates with more than one entry.
  • [cds4j@1.11.0] SQL missing parameter exception when using literals in orderBy.
  • [cds4j@1.11.0] Allow to modify CqnElementRefs w/o alias through CqnModifier.selectListItem.
  • [cds4j@1.11.0] Remove unused CqnModifier.expand w/o orderBy and limit.
  • [odata-server@1.8.2] added license file to “files” in package.json

May 2020

Added

  • [cds.java@1.6.0] Enhanced temporal data support: allow date only values (for example, 2020-04-24) for sap-valid-from, sap-valid-to, and sap-valid-at request parameters
  • [cds.java@1.6.0] Support OData V4 GET requests with $value URI suffix on primtive entity properties.
  • [cds.java@1.6.0] Adding CDS Element annotation @assert.format with a Regular Expression now validates string elements.
  • [cds.java@1.6.0] Adding CDS Element annotation @assert.range now validates ranges on simple data types, numbers and temporal types.
  • [cds.java@1.6.0] Grants for draft events such as draftEdit, DRAFT_CANCEL or DRAFT_NEW etc. are derived from grants of standard CQN events. For instance, granted event CREATE implies also DRAFT_NEW. Before that, draft events had to be listed in all relevant @restrict annotations in order to allow access.
  • [cds.java@1.6.0] Enhanced CSV file import with configurable file locations, more flexible header line delimiters (‘;’ or ‘,’) and more detailed error messages.
  • [cds.java@1.6.0] Added a main class to start a DB deployment in MT scenario which could be executed as task in Cloud Foundry.
  • [cds4j@1.10.0] Copy & modify CDS QL statements through CQL.copy
  • [cds4j@1.10.0] Support count in CDS QL builder through CQL.count()
  • [cds4j@1.10.0] Support case insensitive contains
  • [cds4j@1.10.0] Support collation on SAP HANA providing lexicographical comparison and sorting of strings
  • [cds4j@1.10.0] Support case-insensitive comparison and sorting of strings on SQLite
  • [cds4j@1.10.0] Streaming for LargeString and LargeBinary types annotated with @Core.MediaType
  • [cds4j@1.10.0] Support saptrc and sappsd locales and remove default en locale
  • [cds4j@1.10.0] Generate UUID values on input if no value is provided
  • [cds4j@1.10.0] Extend CqnStatement with is/as methods
  • [cds4j@1.10.0] Support CqnUpdate in CqnAnalyzer
  • [cds4j@1.10.0] Support new @cds.search annotation
  • [cds4j@1.10.0] Reflection API
    • Support reading CDS Models from CSN
    • Read parameters of views
    • Read Enum types
    • Read meta properties from CSN
  • [cds4j@1.10.0] Code Generator
    • Support Arrayed Types
    • Support Streaming of Media Types
  • [odata-server@1.8.0] support for server-driven paging and next links in expanded navigation properties
  • [odata-server@1.8.0] support for $count option in $expand
  • [odata-server@1.8.0] allow doublequotes around * in If-Match and If-None-Match headers

Changed

  • [cds.java@1.6.0] Instance-based authorization is active by default now, that means, where conditions of @restrict-annotated entities are evaluated for events READ, UPDATE and DELETE. There are still some limitations with paths in the where condition.
  • [cds4j@1.10.0] Lowercase UUID values on input
  • [cds4j@1.10.0] Deprecate usage of expressions in limit and offset
  • [cds4j@1.10.0] Remove null values from data json
  • [cds4j@1.10.0] Refactor SelectListItems
  • [cds@3.34.2] Use cds.hana.deploy-format=hdbtable instead of cds.hana.syntax to switch deployment from hdbcds to hdbtable for SAP HANA Cloud.
  • [cds@3.34.2] cds run now supports relative dataSource URLs in SAP UI5 manifests again, so that UI5 apps can be served w/o approuter. This support is only active in development mode.
  • [cds@3.34.2] cds deploy --to hana changes kind to hana only if it is not already sql
  • [cds-dk@1.8.5] cds init uses latest Maven Java archetype version 1.6.0 for creating Java projects.
  • [cds-dk@1.8.4] cds init uses latest Maven Java archetype version 1.5.2 for creating Java projects.
  • [odata-server@1.8.0] log stacktrace for server errors with level error (#107)

Fixed

  • [cds.java@1.6.0] Fixed server error on malformed OData requests with unknown actions or functions.
  • [cds.java@1.6.0] The where condition of @restrict will not apply anymore for draft entities on events READ, DELETE and UPDATE. This allows to create and edit drafts not matching the condition.
  • [cds.java@1.6.0] The default ON-handlers for AuthorizationService now have a proper default order number which allows to override them.
  • [cds.java@1.6.0] Improved the error message for unsupported star expand on draft enabled entities
  • [cds.java@1.5.2] Fixed a bug where inlineCount was not set correctly when the $count OData function was used
  • [cds.java@1.5.2] Fixed a bug where the handling of the CDS Maven Plugin version in the archetype was not correct
  • [cds.java@1.5.1] Generate missing Javadoc and Source JARs for cds-maven-plugin to enable upload to central Maven repository.
  • [cds4j@1.10.0] Fix date conversion in multithreading scenarios
  • [cds@3.34.2] The UI.Identification annotation for sap.common.CodeList got a correct value, pointing to its name element.
  • [cds@3.34.2] Configuration requires.<foo>.credentials.destination is now preserved again when running with VCAP_SERVICES. In version 3.34.1 it was cleared.
  • [cds@3.34.2] Entities annotated with @cds.persistence.skip:if-unused (like sap.common.Languages) now again are skipped when compiling to HANA output. This got broken in previous versions when using the new compiler APIs.
  • [cds@3.34.2] sql_mapping is again written to csn.json as it’s required by classic Java runtime.
  • [cds@3.34.2] default-env.json is now read even in production, which is in line with the behavior of other modules that honor this file. Real prod environments like CF will still overwrite these defaults.
  • [cds@3.34.2] cds build caused error invalid option — when passing command line options like log-level, src or for.
  • [cds-dk@1.8.2] An issue in @sap/edm-converters with missing entity sets
  • [odata-server@1.8.0] status code 200 OK instead of 304 Not Modified for GET requests without If-None-Match header (#106)
  • [odata-server@1.8.0] $expand with complex-property path

April 2020

Added

  • [cds.java@1.5.0] Draft locks now expire after a default timeout of 15 minutes. The locked entity can be reclaimed by other users after that timeout. The timeout duration is configurable via cds.drafts.cancellationTimeout
  • [cds.java@1.5.0] ETags are now supported via OData V4
  • [cds.java@1.5.0] Support for $select and $expand on actions and functions in OData V4, ensuring compatibility with SAP UI5 >= 1.76.0
  • [cds.java@1.5.0] OData V4 error messages listed in the details section of an error response now have the fields @Common.numericSeverity and optionally @Common.longtextUrl, improving SAP Fiori compatiblity
  • [cds.java@1.5.0] A Spring property metadata files is now part of our cds-framework-spring-boot JAR. This enables code completion and suggestions of cds properties in Spring configuration files, if corresponding IDE plugins are installed (see https://spring.io/tools)
  • [cds.java@1.5.0] Added localization capabilities for error messages written by the CAP Java SDK
  • [cds.java@1.5.0] Added possibility to disable non-localized error messages and only return HTTP-based status codes to clients by setting cds.errors.stackMessages.enabled: false
  • [cds.java@1.5.0] Added possibility to log enhanced error messages, indicating more information about the event that caused the error and it’s parameters, by setting cds.errors.extended: true
  • [cds.java@1.5.0] Enabled type-safe access to additional attributes specific to a authentication strategy (e.g. email attribute in JWT). These attributes can also be mocked in the mock-user scenario, using the property additional in the mock-user definition.
  • [cds.java@1.5.0] Introduced a new DRAFT_CREATE event, which is triggered both by a DRAFT_NEW and DRAFT_EDIT event. It’s ON handler by default persists the draft data in the draft table.
  • [cds.java@1.5.0] Added a new technical startup Service, which allows to register on events, triggered when the application is prepared (shortly before HTTP port is opened) or started
  • [cds.java@1.5.0] New maven plugin cds-maven-plugin, providing goals to add additional content to applications generated by the cds-services-archetype.
  • [cds.java@1.5.0] During archetype project generation, the option -DincludeIntegrationTest can be used to generate an additional integration-tests module.
  • [cds4j@1.9.0] Support inline count
  • [cds4j@1.9.0] Support where exists
  • [cds4j@1.9.0] Support default values for virtual elements
  • [cds4j@1.9.0] Support setting write locks (not supported on SQLite)
  • [cds4j@1.9.0] Support @cds.localized annotation
  • [cds4j@1.9.0] Copy & modify CqnPredicates via CQL.copy
  • [cds4j@1.9.0] Enhance expression parser
  • [cds4j@1.9.0] Enhance copying of CqnStatements: copy refs
  • [cds4j@1.9.0] Enhance CqnAnalyzer to return root info and support extracting keys from in predicates
  • [cds4j@1.9.0] Add StructuredTypeRef with modifiable segments
  • [cds4j@1.9.0] Make ElementRef.segments() return modifiable RefSegment
  • [cds4j@1.9.0] Reflection API: Support Enum Types
  • [cds4j@1.9.0] Code Generator: @cds.java.extends annotation to define super-interfaces for generated accessor interfaces
  • [cds@3.34.0] cds version option -ls prints an npm ls subtree.
  • [cds@3.34.0] cds serve / run now also accept package names as arguments, e.g. cds serve --project @capire/bookshop.
  • [cds@3.34.0] cds compile option --parse provides minimal, parsed-only CSN output.
  • [cds@3.34.0] New Node.js method cds.compile.cdl() allows compiling CDS sources in-process.
  • [cds@3.34.0] cds build now supports cds configuration requires.db.kind:"sql" which allows seamless production deployments using HANA db and development deployments using sqlite db.
  • [cds@3.34.0] Default maximum query size limit of 1000 (overridable via @cds.query.limit.max).
  • [cds@3.34.0] Improved error message during cds deploy on Windows when SAP CommonCryptoLib is missing.
  • [cds@3.34.0] cds build now checks that entity-whitelist and service-whitelist have been defined for SaaS applications - a warning is reported otherwise. cds build will fail if invalid entries exist.
  • [cds@3.34.0] Parameter --vcap-file lets cds deploy --to hana use an existing default-env.json file for the deployment credentials, instead of always creating new credentials from Cloud Foundry. Note that this is a beta feature.
  • [cds@3.34.0] cds build --log-level allows to choose which messages to see, default log level is warn.
  • [cds@3.34.0] Labels of @sap/cds/common texts are now available in many languages
  • [cds-dk@1.8.0] cds watch now also accepts package names as arguments, e.g. cds w @capire/bookshop.
  • [cds-dk@1.8.0] cds add mta now supports cds configuration requires.db.kind:"sql" which allows seamless production deployments using HANA db while keepping sqlite for local development scenario.
  • [cds-compiler@1.26.2] The client tool cdsc has got a new option --beta <list> which may be used to specify a comma separated list of experimental features to be enabled.
  • [cds-compiler@1.26.2] CSN in parse-cdl mode now has a requires property that represents usings from CDL.
  • [cds-compiler@1.26.0] The client tool cdsc has got a new command parseCdl which returns a CSN that is close to the original CDL file. It does not resolve imports and does not apply extensions.
  • [cds-compiler@1.26.0] Unmanaged associations as primary keys are now warned about.
  • [cds-compiler@1.26.0] localized in combination with key is now warned about.
  • [cds-compiler@1.26.0] Enum values are now checked to only be either numbers or a strings - a warning is raised.
  • [cds-compiler@1.26.0] Elements in mixin clauses that are not unmanaged associations now produce an error.
  • [cds-lsp@3.3.0] use global @sap/cds/common if locally not available
  • [odata-server@1.7.0] support for navigation properties in complex properties

Changed

  • [cds.java@1.5.1] Reverted behavioural changes of PATCH, introduced with 1.5.0. Responses to PATCH request default to return=representation again, if no Prefer header is explicitly set.
  • [cds.java@1.5.0] The DRAFT_EDIT event now triggers UPDATE instead of an UPSERT event on the service to activate the edited draft. Event handlers currently registered on UPSERT therefore need to be registered on the UPDATE event as well.
  • [cds.java@1.5.0] Elements annotated with @cds.on.insert or @cds.on.update (managed aspect) are fully readonly on CDS-Service level. In addition the PersistenceService only sets new values for these elements, if the key is not yet present in the data map.
  • [cds.java@1.5.0] The OData V4 query option $count=true is now handled using Select.inlineCount(). This ensures that READ event handlers are not triggered twice (once for reading the entities and once for calculating the count), in case $count=true is combined with $skip or $top.
  • [cds.java@1.5.0] Keys listed in the OData V4 URL are not propagated to the query map (context.getParameterInfo().getQueryParameter("key")) anymore, but should be accessed via the CQN Analyzer now: CqnAnalyzer.create(context.getModel()).analyze(context.getCqn().ref()).targetKeys().get("key")
  • [cds.java@1.5.0] By default an OData V4 PATCH request does not return the updated entity in the response anymore. Set the request header Prefer: return=representation to ensure the entity is returned.
  • [cds4j@1.9.0] Only return update data on row count > 0
  • [cds4j@1.9.0] Rename method to obtain lhs of CqnInPredicate to values()
  • [cds4j@1.9.0] Compare plain case-insensitively, allowing for ‘AND’ instead of ‘and’
  • [cds@3.34.0] Node.js method cds.parse() has been changed to now truely return parsed-only models, with extensions not applied yet. Note: If you’need the former (erroneous) behaviour, please use cds.compile.cdl for that from now on.
  • [cds@3.34.0] Node.js method cds.get() now returns parsed-only models; same as cds.parse().
  • [cds@3.34.0] cds serve / run / watch now reduce logging of details for the bound DB on connect, leading to less clutter.
  • [cds@3.34.0] Precision for validTo and validFrom defined in the temporal aspect in @sap/cds/common changed from DateTime to Timestamp.
  • [cds@3.34.0] Some administrative fields of SAP Fiori draft documents are now hidden on the UI. The rest got labels.
  • [cds@3.34.0] Renamed cds configuration setting features.messageLevel to log-level to be consistent with command line option, e.g. cds build --log-level.
  • [cds@3.34.0] cds extend and cds activate commands have been moved to @sap/cds-dk. cds disconnect has been moved there under a different name.
  • [cds-dk@1.8.0] Parameter verbose in cds init and cds add is now deprecated. Use environment variable DEBUG=true to obtain detailed output.
  • [cds-dk@1.8.0] cds init uses latest Java archetype version 1.4.0 for creating Java projects.
  • [cds-compiler@1.26.0] HANA/SQL:
    • Raise warnings rewrite-not-supported and rewrite-undefined-key to errors.
  • [cds-compiler@1.26.0] Compiler: Empty elements are now kept along for the propagation.
  • [cds-compiler@1.26.0] OData: Annotate all elements of DraftAdministrativeData with @Common.Label: '{i18n>"Draft_<elementName>"}' and elements ‘DraftUUID’, ‘DraftIsCreatedByMe’ and ‘DraftIsProcessedByMe’ with @UI.Hidden.
  • [cds-compiler@1.25.0] Downgrade chained array of-error to a warning
  • [cds-compiler@1.25.0] SQLite: Don’t render implicit casts
  • [cds-compiler@1.24.6] OData:
    • Improve messages for misaligned forward/backlink associations in EDM generator
    • For V2 add annotations @sap.creatable: false, @sap.updatable: false, @sap.deletable: false, @sap.pageable: false to the Parameter EntityType and @sap.creatable: false, @sap.updatable: false, @sap.deletable: false, @sap.addressable: false to the Result EntityType.
    • Update vocabularies ‘Common’ and ‘Graph’ and ‘ODM’.
  • [cds-lsp@3.3.2] remove optional odata annotation handler due to build issues
  • [cds-lsp@3.3.1] consume cds-compiler 1.26.2
  • [cds-lsp@3.3.0] consume cds-compiler 1.26.0
  • [cds-lsp@3.3.0] (alpha): diagnostics and hover support for external annotation providers
  • [cds-lsp@3.2.1] consume cds-compiler 1.24.4

Fixed

  • [cds.java@1.5.0] Fixed handling of authentication for actions and functions
  • [cds.java@1.5.0] Fixed processing of pre-defined filters sent by SAP Fiori draft UIs (e.g. “editing status” filter).
  • [cds.java@1.5.0] Fixed handling of mandatory assocations to draft-enabled entities.
  • [cds.java@1.5.0] Fixed handling of draft-enabled child entities without a backlink association.
  • [cds.java@1.5.0] Fixed issues with transaction handling for OData V4 requests not using a changeset.
  • [cds.java@1.5.0] Fixed handling of of OData V4 actions with no return parameter and no input parameters.
  • [cds.java@1.5.0] Fixed handling of OData V4 $count=true, when specified with $skip, $top and $search
  • [cds.java@1.5.0] Fixed incorrect calculations of the OData V4 context URL
  • [cds.java@1.5.0] Fixed handling of CqnUpdate statements with more than one data entry.
  • [cds.java@1.5.0] Fixed handling of batch parameters in run methods for delete and update operations
  • [cds.java@1.5.0] Fixed a startup issue that could occur, when Spring Integration was used
  • [cds.java@1.5.0] Fixed internal server errors, when @Capabilities annotations reference an entity element, instead of a simple boolean. On server-side such capabilities not checked anymore, allowing at least SAP Fiori to interpret these parameter-bound capabilities.
  • [cds.java@1.5.0] Projects generated with the archetype now by default have the property spring.test.context.cache.maxSize=1 set, which prevents issues with multiple CdsRuntime objects in different Spring application contexts.
  • [cds.java@1.5.0] Patterns in .gitignore generated by the archetype, now use **/ as glob statement prefix, to ensure compatibility with other tools interpreting the .gitignore file (e.g. npm publish)
  • [cds4j@1.9.0] Fix NPE on default $now
  • [cds4j@1.9.0] Fix serialization of CqnNull
  • [cds4j@1.9.0] Fix contains on ref not in select list
  • [cds4j@1.9.0] Improve exception on parsing instants
  • [cds4j@1.9.0] Avoid duplicates in deep search by using subqueries
  • [cds4j@1.9.0] Don’t throw SQL exception on update with empty payload
  • [cds4j@1.9.0] Improve exception on parsing instants
  • [cds4j@1.9.0] Draft: Add security constraints to SiblingEntity association
  • [cds4j@1.9.0] Fix FK field computation for $self with unmanaged backlinks
  • [cds4j@1.9.0] Fix NPE in cds4j-multitenant MetaDataAccessorSingleMode
  • [cds4j@1.9.0] Throw CdsDataException on deep updates w/o key values
  • [cds@3.34.0] cds build - improvements in the area of error handling and error reporting.
  • [cds@3.34.0] cds env and Node.js runtime now properly complete configuration like requires.db.kind.sql with VCAP_SERVICES, so that in production an SAP HANA service is bound.
  • [cds@3.34.0] cds build now localizes edmx files properly if cds.env.features.snapi is turned on.
  • [cds@3.34.0] cds deploy --to hana no longer crashes if called with NODE_ENV=production.
  • [cds-dk@1.8.0] Fixing terminology in cds init and cds add console output.
  • [cds-dk@1.8.0] cds init is logging cds env output only in debug mode.
  • [cds-dk@1.8.0] Using cds build command in generated mta.yaml file.
  • [cds-dk@1.8.0] Fixing Hana dependency during cds init --add hana for project type java.
  • [cds-dk@1.8.0] Fixing bug in cds init when cds-dk is not installed globally.
  • [cds-dk@1.8.0] Fixing bug in cds init when calling log methods.
  • [cds-dk@1.8.0] Fixing cds.envobject by attaching prototype chain.
  • [cds-compiler@1.26.2] OData:
    • Change foreign key creation order for associations to respect their dependencies.
    • Use correct path during on-condition flattening.
    • Report error when using elements without types for array of type of (element) and similar definitions.
  • [cds-compiler@1.26.2] HANA/SQL:
    • Fix references to null enum values in default clauses.
  • [cds-compiler@1.26.2] Type arguments are now properly set in CSN when using parse-cdl mode.
  • [cds-compiler@1.26.2] Avoid unjust warning if the extensions property of an input CSN contain extend statements.
  • [cds-compiler@1.26.0] Compiler: type of <unmanaged assocation> is now handled correctly by raising an error.
  • [cds-compiler@1.24.6] Various messages mention more appropriate source locations.
  • [cds-compiler@1.24.6] Improve messages for array of
  • [cds-compiler@1.24.6] OData:
    • Render array of for ReturnType correctly
    • Report error for view fields with no type information early
    • Handle associations in structures with an association as explicit key
  • [cds-lsp@3.3.0] Minor fixes and improvements
  • [odata-server@1.7.1] ETags are never required for transient entities from $apply queries
  • [odata-server@1.7.0] context URL in some edge cases with keys
  • [odata-server@1.6.1] support for JSON content in type-definition properties with underlying type Edm.Stream (#97)

Removed

  • [cds-compiler@1.24.6] The client tool cdsc does not offer the option --std-json-parser anymore, as it had no effect.

March 2020

Added

  • [cds.java@1.4.0] Operations on draft entities are now restricted to the user who created the draft
  • [cds.java@1.4.0] Support for returning entities with expanded navigation properties in actions and functions
  • [cds.java@1.4.0] @readonly can now be used at element level as well
  • [cds.java@1.4.0] Elements with default values that are also not null or @mandatory are now supported
  • [cds.java@1.4.0] CSV files are now automatically loaded from db/data or db/csv during startup of the application
  • [cds.java@1.4.0] When using Spring’s health check actuators and enabling multi-tenancy the health of each connected database is checked.
  • [cds.java@1.4.0] An actuator providing CDS related debugging information is now provided on Spring. It is active by default for JMX and can be enabled for web-exposure by adding cds to management.endpoints.web.exposure.include
  • [cds.java@1.4.0] The archetype now generates example event handler classes and an example JUnit test, if the property includeModel is set to true
  • [cds.java@1.4.0] The archetype now enables generation of EventContext interfaces for actions and functions in the CDS4J maven plugin settings
  • [cds.java@1.4.0] The archetype now automatically adds the cds-starter-cloudfoundry dependency to newly generated projects
  • [cds.java@1.4.0] SAP proprietary locales 1Q (en-US-x-saptrc) and 2Q (en-US-x-sappsd) are now handled correctly
  • [cds.java@1.4.0] Added a new configuration option cds.locales.normalization to specify the whitelist for locales
  • [cds.java@1.4.0] Added a new configuration option cds.odatav4.contextAbsoluteUrl to control if the URL in the @context field of OData V4 responses contains an absolute or a relative URL
  • [cds.java@1.4.0] Added the possibility to specify service-related configuration in a new configuration section cds.services
  • [cds.java@1.4.0] The version and commit information of the CDS Services dependency used are now printed to the logs during startup
  • [cds4j@1.8.0] Support deep updates
  • [cds4j@1.8.0] Support default values
  • [cds4j@1.8.0] Return update data on updates
  • [cds4j@1.8.0] Code Generator: Add CDS_NAME to action/function interfaces
  • [cds4j@1.8.0] Add Value.in(List) method
  • [cds4j@1.8.0] Truncate instants in insert/update data
  • [cds@3.33.0] cds version now also lists all dependencies of your local package.json and has an updated CLI commend help, documenting option --all.
  • [cds@3.33.0] cds compile option --docs preserve contents of /** ... */ doc comments in CSN output as well as in EDMX outputs (as Core.Description annotations).
  • [cds@3.33.0] cds compile option --clean tells the compiler to not add any derived information, but return a CSN which reflects only what was actually found in a .cds source.
  • [cds@3.33.0] cds serve option --watch starts the specific serve command in nodemon watch mode
  • [cds@3.33.0] Node.js: cds.env now supports camel case env variables as well as dot-notated keys in .env
  • [cds-services@1.27.0] Transaction uses one timestamp for all queries
  • [cds-services@1.27.0] Pool acquire timeout is set by default and can be configured in pool options
  • [cds-services@1.27.0] Ordered OData singletons (... as select from <entity> order by <property>)
  • [cds-dk@1.7.0] cds init --add java supports --java:mvn to add additional parameter.
  • [cds-dk@1.7.0] Improvements when logging console output during cds init.
  • [cds-dk@1.7.0] Link to Maven archetype documentation shown in cds help init.
  • [cds-compiler@1.24.2] Support function calls like count( distinct ... ) and count( all ... ).
  • [cds-compiler@1.24.2] With option --doc-comment comments of the form /**...*/ are preserved, if these comments appear at positions where annotation assignments are allowed. doc comments are propagated like annotations until an empty comment /***/ disrupts the propagation.
  • [cds-compiler@1.24.2] OData:
    • Add new OData vocabularies com.sap.vocabularies.Graph.v1 and com.sap.vocabularies.ODM.v1
    • With option --odata-containment, parent association and inferred key elements for composition of <aspect> as well as inferred keys of _texts entities are not rendered.
    • OData V4: Produce primary key paths with length limited alias names.
  • [cds-compiler@1.24.1] Add new OData vocabulary com.sap.vocabularies.odm.v1
  • [cds-compiler@1.24.0] If an entity E with localized elements has the annotation @fiori.draft.enabled, a new element ID_texts of type cds.UUID is added to E_texts as the only key and the annotation @odata.draft.enabled will not be set to false for E.texts.
  • [cds-compiler@1.24.0] A comment of the form /**…*/ at “annotation positions” is now considered a doc comment; its “cleaned-up” text is put into the CSN as value of the property doc. In the OData/EDMX, it appears as value for the annotation @Core.Description.
  • [cds-lsp@3.1.4] extend definitions are now shown in outline and workspace symbols
  • [cds-lsp@3.1.4] api (alpha) for external annotation providers
  • [cds-messaging@1.8.2] It is now possible to set the queue configuration with the queueConfig property in the credentials section https://help.sap.com/doc/75c9efd00fc14183abc4c613490c53f4/Cloud/en-US/rest-management-messaging.html#_queuep
  • [cds-sql@1.24.0] Support for different columns combinations in INSERT.entries
  • [cds-sql@1.24.0] Support for $count in SELECT CQN
  • [cds-sql@1.24.0] Support String objects in the annotation expressions
  • [cds-sql@1.24.0] .setTransactionTimestamp in BaseClient
  • [cds-sql@1.24.0] check for @cds.persistence.skip for deep operations
  • [cds-hana@1.25.0] Single timestamp per transaction
  • [cds-hana@1.25.0] default timeout 20s for acquiring client from pool
  • [cds-hana@1.24.0] Streaming from draft
  • [cds-hana@1.24.0] Timeout for update and delete statements to handle locked records (@sap/hana-client only, default: 1s)
  • [odata-server@1.6.0] limited support for JSON content in stream properties as described in OASIS issue 1177
  • [odata-server@1.5.5] If-Match and If-None-Match headers are allowed with value * on POST requests
  • [odata-server@1.5.3] If-Match and If-None-Match headers are allowed with value * on non-conditional DELETE requests

Changed

  • [cds.java@1.4.0] XSUAA user names are now normalized by converting them to lower case. This behaviour can be turned off by specifying cds.security.xsuaa.normalizeUserNames to false.
  • [cds.java@1.4.0] @mandatory annotated elements of type String now also reject any trimmed empty strings.
  • [cds.java@1.4.0] Entities that are @cds.autoexposed are now readonly (in case of additional @cds.autoexpose) or not accessible at all, if referenced as root entity in a CQN statement. This behaviour does not apply, if the entity is draft-enabled or explicitly mentioned in the service definition.
  • [cds4j@1.8.0] Move non SQL/JDBC functionality into new core module
  • [cds4j@1.8.0] Remove deprecated methods in CqnReference and deprecate segment setters
  • [cds4j@1.8.0] Traverse CqnStatements depth-first
  • [cds@3.33.0] Labels for the createdAt and changedAt in the @sap/cds/common#managed entity have been adjusted to reflect the SAP Fiori design guidelines.
  • [cds@3.33.0] cds build now delegates to the modular build system by default (known as cds build/all). The modular build system is compatible, but supports additional features, e.g. staging build, SAP HANA Cloud Edition support, populating initial data from .csv by generating .hdbtabledata files, etc. The legacy build is still available as a fallback in case of issues - use setting cds.features.build.legacy: true or ENV variable CDS_FEATURES_BUILD_LEGACY=true.
  • [cds-services@1.27.0] $count=true triggers handlers only once now
  • [cds-services@1.27.0] draftPrepare action can be called on the entity set of child nodes of the draft enabled entity
  • [cds-services@1.27.0] Normalize user.id if an email address
  • [cds-services@1.27.0] Allow functions and properties as 2nd param in contains, startswith, endswith
  • [cds-dk@1.7.0] cds add mta now activates the production profile when creating the mta.yaml, which is consistent with what the MTA build does. This way, configuration like "[production]: {"kind": "hana"} gets activated automatically.
  • [cds-compiler@1.24.4] doc comment propagation can now also be stopped by comments that only contain whitespace (including newlines) like /** */.
  • [cds-compiler@1.24.4] OData:
    • Remove redundant service name and __ prefix out of dynamically exposed substructures.
    • Update vocabularies ‘Capabilities’ and ‘Graph’.
  • [cds-compiler@1.24.1] Expressions in mixin-definitions are now validated.
  • [cds-compiler@1.24.1] OData:
    • Redirect inbound associations to entities with parameters to corresponding Parameter EntityType.
    • Update vocabulary UI
  • [cds-compiler@1.24.1] Use semver for dependencies
  • [cds-lsp@3.2.0] remove option for compiler location - LSP will always search Project->Global(via DK&CDS)->BuiltIn now
  • [cds-lsp@3.2.0] remove irrelevent formatting option (trimTrailingWhitespace)
  • [cds-lsp@3.2.0] consume cds-compiler 1.24.3
  • [cds-lsp@3.1.4] consume cds-compiler 1.24.0
  • [cds-rest@1.6.2] In case there is no credentials.destination provided the destinations environment variable is not created anymore. The connection to the remote service is handled internally.
  • [cds-sql@1.24.0] Use | | for concat (works for HANA and sqlite)

Fixed

  • [cds.java@1.4.0] Timestamps are now correctly truncated based on the type of the element in the CDS model
  • [cds.java@1.4.0] The draftActivate action now returns an expanded result, to workaround issues with Fiori versions >= 1.75.0
  • [cds.java@1.4.0] Fixed $search returning duplicate search results
  • [cds.java@1.4.0] Fixed a malformed OData response, containing an incorrect @context property instead of @odata.context
  • [cds.java@1.4.0] Fixed the finalName property generated by the archetype, which was incorrectly set to cds-services-archetype
  • [cds.java@1.4.0] Fixed handling of errors during transaction initialization: NoSuchElementException errors could occur, overrriding the original exception
  • [cds.java@1.4.0] Fixed non deterministic order in which the ChangeSetListeners were called
  • [cds4j@1.8.0] Fix package and interface names in FLUENT mode
  • [cds4j@1.8.0] Fix traversal order of StructTypeRef, Comparison & Search pred
  • [cds4j@1.8.0] cds4j-multitenant: Fix synchronize in MetaDataAccessor
  • [cds@3.33.1] cds build now correctly supports options.model definitions of type string
  • [cds@3.33.1] Details navigation in Fiori preview works again since it’s pinned to SAP UI5 1.73. Actual cause still needs to be investigated.
  • [cds@3.33.1] cds deploy now adds @sap/hana-client to package.json instead of hdb.
  • [cds@3.33.1] cds deploy adds kind sql to requires section.
  • [cds@3.33.0] cds build now correctly logs warnings returned by cds compiler. The message log level can be customized using cds configuration setting cds.features.messageLevel - default is warn.
  • [cds@3.33.0] cds.env.roots now properly picks up a changed value of cds.env.folders
  • [cds@3.33.0] hdbtabledata is no longer generated for entities that are marked with @cds.persistence.skip
  • [cds@3.32.0] An issue where all Node.js runtime sessions where disconnected when one tenant offboarded.
  • [cds@3.31.2] cds deploy does not crash if _texts.csv is provided for skipped entities
  • [cds@3.31.2] cds serve foo.cds does no longer load same model twice
  • [cds@3.31.2] cds compile --to edmx no longer creates files with csn instead of edmx content in case no language bundles are found
  • [cds@3.31.2] Both cds env and cds compile no longer write terminal escape sequences if only stdout is redirected, but not stderr.
  • [cds@3.31.2] No longer enforce Node.js version 8 in db/package.json. Cloud Foundry environment does not support it anymore, as this version is out of maintenance.
  • [cds@3.31.1] Removed npm-shrinkwrap.json
  • [cds-services@1.27.0] Entity is now correctly resolved if there are conflicting names
  • [cds-services@1.27.0] Where conditions from security annotations were appended twice when using $count=true
  • [cds-services@1.27.0] req._.req always contains the incoming request - also in $batch requests
  • [cds-services@1.27.0] Error in delete when fields are renamed in views
  • [cds-services@1.27.0] Using view by draft & localized
  • [cds-services@1.27.0] context.diff() returns changes also for PATCH of drafts
  • [cds-services@1.27.0] OData requests using /$count on navigation-to-many
  • [cds-services@1.27.0] Authentication-requirement detected if in multi tenant mode (i.e., multiTenant: true)
  • [cds-services@1.27.0] Integrity check of atomicity group
  • [cds-services@1.27.0] Where annotation in case of draft and navigations
  • [cds-services@1.27.0] /$count on parameterized views
  • [cds-services@1.27.0] Streaming from draft in case localized and where annotations
  • [cds-services@1.27.0] @mandatory: empty strings (whitespaces only = empty) are not allowed
  • [cds-services@1.25.1] update of localized text entries replies with 403 if no changes are detected
  • [cds-dk@1.6.3] Proper npm-shrinkwrap.json
  • [cds-dk@1.6.3] cds init is a bit more relaxed when checking for existing project content
  • [cds-compiler@1.24.4] OData:
    • Process correctly “type of”.
    • Process correctly elements with underscore as prefix.
  • [cds-compiler@1.24.4] Preserve parameter list in localized convenience views.
  • [cds-compiler@1.24.3] Force usage of resolve@1.8.1 instead of semver to avoid issues with file cache
  • [cds-compiler@1.24.2] When not disabled by @cds.autoexpose:false, an entity used as composition target is auto-exposed in the current service; this did not work always if the target was a query entity.
  • [cds-compiler@1.24.2] Foreign key creation in odata flat-mode when following associations.
  • [cds-compiler@1.24.2] Rename @description to @Core.Description in all cases as part of the OData transformation of a CSN.
  • [cds-compiler@1.24.2] When generating extensions from EDMX annotations, handle correctly targets from an EntityContainer.
  • [cds-compiler@1.24.2] Apply service annotations in EDMX generation.
  • [cds-compiler@1.24.1] Resolve backlink mixin association usages uniformly in association to join translation.
  • [cds-compiler@1.24.0] HANA CDS: When casting a column to an enum type, don’t render it as an enum
  • [cds-compiler@1.24.0] Ignore top-level CSN “annotations” like @sql_mapping in the CSN frontend.
  • [cds-compiler@1.24.0] OData: Key constraint checks for Draft enabled entities consider EDM exposed keys only.
  • [cds-compiler@1.24.0] Message level for draft key checks is raised to ‘warning’ again.
  • [cds-compiler@1.24.0] Action and function calls are checked for missing arguments.
  • [cds-compiler@1.24.0] All references are correctly transformed in flatten mode.
  • [cds-lsp@3.2.0] formatting failed (seen in Eclipse, VSCode works) due to off-by-one error
  • [cds-lsp@3.2.0] global npm root for Business App Studio was not found with compiler.location option ProjectThenGlobalThenBuiltIn
  • [cds-sql@1.24.0] Using view by draft & localized
  • [cds-sql@1.24.0] Quote alias in orderBy to work on HANA
  • [cds-sql@1.24.0] Expand from not draft enabled entity to draft enabled entity
  • [cds-sql@1.24.0] where and orderByclauses containing navigations in combination with expand are correctly translated to SQL
  • [odata-server@1.5.4] stricter determination of related entity set

Removed

  • [cds-services@1.25.1] npm-shrinkwrap.json
  • [cds-compiler@1.24.2] Warning ‘Service should not have more then one draft root artifact’
  • [cds-compiler@1.24.2] Experimental annotation @cds.odata.{v2|v4}.ignore
  • [cds-compiler@1.24.2] OData vocabulary com.sap.vocabularies.odm.v1 (lowercase ‘odm’)
  • [cds-compiler@1.24.2] --beta-mode from option --odata-containment.
  • [cds-messaging@1.8.2] Bound events are not supported anymore
  • [cds-rest@1.6.2] npm-shrinkwrap.json
  • [cds-hana@1.25.1] Timeout for update and delete statements (if needed: increase libuv’s threadpool size via environment variable UV_THREADPOOL_SIZE)

January & February 2020

Added

  • [cds-compiler@1.23.2] If an entity with localized elements is draft enabled, a new key element ID_texts is added to the texts entity in --beta-mode. The key property is removed from all other elements in the texts entity and the annotation assignment @cds.odata.v4.ignore as described in Version 1.20.0 is reverted. If the element ID_texts already exists, an appropriate warning is raised and no texts entity is created.
  • [cds-compiler@1.23.0] Introduce ![identifier body] in the CDL source for delimited identifiers. (The ! is inspired by ABAP’s identifier tag, [] by the delimited identifier syntax in Microsoft SQL Server and Sybase; we cannot use [] alone, because brackets are used for filter conditions.)
  • [cds-compiler@1.23.0] When generating SQL or HDBVIEW, explicit CASTs are now rendered
  • [cds-compiler@1.22.0] With redirected to, model designers can now explicitly provide the on condition / foreign keys for “consumers” of the current query (entity). This is useful for situations (usually mentioned as message) where the compiler does not calculate on/keys (automatically yet).
  • [cds-compiler@1.22.0] Add OData vocabularies: com.sap.vocabularies.CodeList.v1, Org.OData.Repeatability.V1 and com.sap.vocabularies.Session.v1
  • [cds-lsp@3.1.3] pick up compiler and env via global cds-dk if cds not (yet) in project
  • [cds-lsp@3.1.2] code formatting
    • options can now be overridden in source comments e.g. // @formatter tabSize:3
    • new option to add/remove final line break
    • new option to trim trailing whitespace
  • [cds-lsp@3.1.1] code formatting
    • option to keep original empty lines
  • [cds-lsp@3.1.1] language server protocol 3.15: implement serverInfo in onInitialize
  • [cds-lsp@3.1.0] translation support
    • now with all formats supported by runtime (.properties, .json, .csv) incl. quick fixes to create missing entries
    • now with customizations supported by runtime (filename, folder name, fallback_bundle, default_language)
      • if entries of fallback language are missing but are defined for default language the latter ones are used
      • if property files or json nodes or csv header only has default language defined (and not raw), quick fix will use default language
      • quick fix for json and csv formats now try to keep entries sorted
      • navigation from translation reference in cds source files to value supported for all formats
  • [cds-lsp@3.1.0] allow .cdsprettier.json to be located in user home dir
  • [cds-lsp@3.0.0] Official support for code formatting
  • [cds.java@1.3.0] Support setting the “target” property in OData V4 error messages to influence the way a Fiori UI displays them.
  • [cds.java@1.3.0] Support temporal data
  • [cds.java@1.3.0] Support expand for associations pointing to other draft-enabled entities
  • [cds.java@1.3.0] Support case-insensitive ordering via OData V4 query option $orderby by using tolower() or toupper() functions, e.g. $orderby=tolower(element)
  • [cds.java@1.3.0] The Maven Archetype now allows to omit local cds-dk installation by means of maven profile “cdsdk-global”
  • [cds.java@1.2.0] Support returning messages by means of the “sap-messages” header that are shown in Fiori UIs
  • [cds.java@1.2.0] Support returning multiple messages in a single response
  • [cds.java@1.2.0] Support returning localized messages
  • [cds.java@1.2.0] Support searching entities by means of the OData V4 $search query option (including search expressions AND, OR and NOT)
  • [cds.java@1.2.0] Support tolower and toupper functions in $filter expressions
  • [cds.java@1.2.0] Support the $format parameter for JSON based formats
  • [cds.java@1.2.0] Support associations between draft-enabled entities, enabling also path expressions to the inactive entity via the active entity and vice versa.
  • [cds4j@1.7.0] Introduce com.sap.cds.ql.CQL API and deprecate CqnBuilder
  • [cds4j@1.7.0] Support tree-style usage of logical connectives
  • [cds4j@1.7.0] Support postfix not
  • [cds4j@1.7.0] Support using plain expressions in select list
  • [cds4j@1.7.0] Support functions in orderBy
  • [cds4j@1.7.0] Support @Search.defaultSearchElement annotation and cascaded search via @Search.cascade
  • [cds4j@1.7.0] Support many-to-many associations via mapping entity
  • [cds4j@1.7.0] Support actions/functions in Reflection API
  • [cds4j@1.7.0] Generate accessor interfaces for actions/functions
  • [cds4j@1.7.0] CDS4j maven plugin: m2e lifecycle mapping to enable model generation within Eclipse
  • [cds@3.31.0] Generation of hdbtabledata files now reports if CSV file names don’t match entity names, and if header names don’t match element names in an entity. Watch out for such logs in case CSV files are not deployed to SAP HANA.
  • [cds@3.30.0] cds compile --log-level allows to choose which messages to see
  • [cds@3.30.0] cds deploy --dry prints DDL statements to stdout instead of executing them
  • [cds@3.30.0] cds deploy --with-mocks also adds tables for required services
  • [cds@3.30.0] cds serve --mocked allows mocking individual required services
  • [cds@3.30.0] cds.env now also loads from .env files in properties format
  • [cds@3.30.0] cds.resolve/load('*') resolves or loads all models in a project including those for required services. It is controlled and configurable through cds.env.folders and .roots. Try this in cds repl launched from your project root to see that in action:
      cds.env.folders         // = folders db, srv, app by default
      cds.env.roots           // + schema and services in cwd
      cds.resolve('*',false)  // + models in cds.env.requires
      cds.resolve('*')        // > the resolved existing files
    
  • [cds@3.30.0] Added cds.debug(<id>) as a convenient helper for debug output controlled by process.env.DEBUG. For example, use it as follows:
      const DEBUG = cds.debug('my-module')
      DEBUG && DEBUG ('my debug info:', foo, ...)
    
      > DEBUG=my-module cds run
    
  • [cds@3.30.0] Added cds.error(<msg>) as a convenient helper for throwing errors whose stack traces start from the actual point of invocation. For example, use it as follows:
      const {error} = cds
      if (...) throw error `Something's wrong with ${whatever}`
      const foo = bar || error `Bar is missing!` // short circuit exits
    
  • [cds-dk@1.6.0] cds init --add java now also works with --hana
  • [cds-dk@1.5.0] cds init adds private: true and license: "UNLICENSED" to newly generated projects.
  • [cds-dk@1.5.0] cds init adds a default .hdiconfig file when using template hana.
  • [cds-dk@1.5.0] cds init supports Java package name via --java:package parameter.
  • [cds-dk@1.5.0] cds init generates dependency entry for @sap/hana-client when using template hana.
  • [cds-dk@1.5.0] cds init uses latest Java archetype version 1.3.0 for creating Java projects.
  • [cds-dk@1.5.0] cds init now creates a .cdsrc.json file.
  • [cds-dk@1.4.0] Abort installation with a hint if @sap/cds is installed globally.
  • [cds-dk@1.4.0] New project generation using cds init. See cds help init for details.
  • [cds-dk@1.4.0] cds init --add java now creates Java projects with Spring Boot support.
  • [cds-dk@1.4.0] cds watch now also watches .properties files
  • [cds-services@1.25.0] Support for OData singletons
  • [cds-services@1.25.0] Streaming from draft
  • [cds-services@1.25.0] Navigations in aggregate expressions
  • [cds-services@1.24.1] Support draft for localized texts (to be enabled by @sap/cds and @sap/cds-compiler)
  • [cds-services@1.24.0] Support for OData singletons
  • [cds-services@1.24.0] Navigations in aggregate expressions
  • [cds-services@1.24.0] Support for OData $apply with count distinct
  • [cds-services@1.23.0] Support non-UUID field as ETags
  • [cds-services@1.23.0] Support draft and ETags
  • [cds-services@1.23.0] Support for complex where in annotations
  • [cds-services@1.23.0] Additional argument target for req.info
  • [cds-services@1.22.0] @sap/cds-ql merged into @sap/cds-services
  • [cds-services@1.22.0] Support for subselects and aliasing for remote service definitions
  • [cds-services@1.22.0] Support for @cds.persistence.table.
  • [cds-services@1.22.0] Actions/functions support $select and $expand query params in odata
  • [cds-services@1.22.0] Support cds annotation on insert and update with # (e.g @cds.on.update: #user)
  • [cds-messaging@1.6.0] Support for prefix credentials options to prefix topics
  • [cds-rest@1.4.0] Where x in (a,b,…) predicates are translated to series of (x eq a) or (x eq b) in OData $filter options
  • [cds-sql@1.23.1] Support for set and data in UPDATE CQN
  • [cds-sql@1.23.1] Support draft for localized texts
  • [cds-sql@1.23.1] Support for with and data in UPDATE CQN
  • [cds-hana@1.24.0] Streaming from draft
  • [cds-hana@1.22.0] Implement statement drop
  • [odata-server@1.5.0] support for node.js version 12
  • [odata-server@1.5.0] complete support of specified Unicode range in URI parsing of identifiers
  • [odata-server@1.5.0] URI parsing of search words according to OData 4.01 CS02
  • [odata-server@1.4.0] support for EDM singletons

Changed

  • [cds-compiler@1.23.2] Association to Join Transformation:
    • Validate paths of an expression in the projection to be compliant with the ON condition path constraints if such an expression is used in a mixin.
    • Reject recursive or non-bijective $self expressions.
  • [cds-compiler@1.23.2] Reject casting of a structured select item to a different type.
  • [cds-compiler@1.23.2] OData: Update vocabularies Capabilities, Common, UI, Validation
  • [cds-compiler@1.23.1] OData:
    • Lower message for unknown vocabulary annotations from warning to info.
    • Lower message for @Analytics.Measure expects @Aggregation.default from warning to info.
    • Remove empty EntityContainer and raise warning if Schema is empty.
  • [cds-compiler@1.23.0] Signal a warning for all uses of "identifier body" in the CDL source, as most uses of double-quotes in actual CDS models were likely meant for strings. (Yes, we do not adhere strictly to the lexical rules of the SQL Standard with this change…)
  • [cds-compiler@1.23.0] Issue a warning for an aspect definition without {…}.
  • [cds-compiler@1.23.0] In the CSN, aspect definitions have a $syntax property with value "aspect". A future incompatible change will set the kind of aspect definitions to value "aspect".
  • [cds-compiler@1.23.0] Removed old CSN frontend and the corresponding options: stdJsonParser and oldCsnFrontend.
  • [cds-compiler@1.23.0] Fix check for arguments and filters in references (might introduce new errors).
  • [cds-compiler@1.23.0] Issue an error if explicit keys are provided when redirecting unmanaged associations.
  • [cds-compiler@1.23.0] File paths given to cdsc which contain symbolic links are now resolved before being passed to the compiler.
  • [cds-compiler@1.23.0] Annotating elements with @Core.Computed now always overwrites computed value; also expressions in parentheses will now induce to set @Core.Computed to true.
  • [cds-compiler@1.23.0] Update OData vocabulary UI
  • [cds-compiler@1.23.0] Increase the length of the element locale in generated _texts entities from String(5) to String(14).
  • [cds-compiler@1.23.0] Do not overwrite annotations with generated annotations (such as shortcuts and other convenience annotations).
  • [cds-compiler@1.22.0] In the sql, hdi and hdbcds backends with SQL dialect HANA, $user.id is translated to SESSION_CONTEXT('APPLICATIONUSER'), not SESSION_CONTEXT('XS_APPLICATIONUSER') anymore. As with the SQL dialect SQLite, it can now be configured.
  • [cds-compiler@1.22.0] The client tool cdsc now prints a source excerpt for each message by default; use cdsc --no-message-context to get the previous behavior.
  • [cds-compiler@1.22.0] Increase severity to Warning of messages for a situation where the compiler cannot calculate an on condition / foreign keys automatically.
  • [cds-compiler@1.22.0] Issues warnings for annotation definitions, as their CSN representation will be moved from definitions into an new property vocabularies in a future change.
  • [cds-compiler@1.22.0] OData:
    • Update vocabularies: Analytics, Common, Communication, Core, PersonalData, UI
    • Set reference base URI for SAP Vocabularies to https://sap.github.io/odata-vocabularies/vocabularies
  • [cds-lsp@3.1.3] consume cds-compiler 1.23.2
  • [cds-lsp@3.1.2] consume cds-compiler 1.23.1
  • [cds-lsp@3.1.0] code formatting
    • improve alignment of types, values, and preceding : or = operators
  • [cds-lsp@3.1.0] consume cds-compiler 1.22.0
  • [cds-lsp@3.0.0] code completion
    • more snippet variants for extend
    • no longer differ entity suggestions between within service or outside
    • base types with parameters now suggested as simply keyword w/o params and additional suggestion as snippet (param names now enclosed in < >)
    • changed label indicator for snippets from <> to ellipsis
  • [cds-lsp@3.0.0] consume cds-compiler 1.21.1
  • [cds-lsp@3.0.0] code formatting
    • rework formatting options: add/remove options according to relevance, rename/group options for clarity, change default behavior in some cases
    • various improvements, including in case statements and bracketed conditions
  • [cds.java@1.3.0] The XSUAA service configuration is now only enabled, when an XSUAA service binding is available. With this change we do not prevent Spring from configuring it’s default security config and default user anymore.
  • [cds.java@1.3.0] The Spring Boot Plugin in applications generated by the archetype now generates the executable JAR with classifier “exec”
  • [cds.java@1.2.0] Timestamps are now written to the database in UTC instead of the timezone of the application.
  • [cds.java@1.2.0] Changed incorrect http status 400 Bad Request to 404 Not Found for requests targeting a non-existing entity
  • [cds4j@1.7.0] Store timestamps on SQLite as ISO 8601 Strings
  • [cds4j@1.7.0] Truncate Instants for DateTime and Timestamp
  • [cds@3.30.0] This version brings a major refactoring and streamlining of service runtime implementations, which stays fully compatible regarding all documented APIs but in case you used internal not documented (non-)APIs, you should know these:
    • Removed undocumented features Annotation @source from models loaded for runtime Property cds.serve.app → use cds.app instead Property source from CSN entity/view definition objects

      It’s very unlikely that you ever used these undocumented internal features at all. In case you did, this should never have been done and you should fix that asap.

  • [cds@3.30.0] Deprecated features (→ might get removed in upcoming versions)
    • Property cds.session → use cds.db instead
    • Property cds.options → use cds.db.options instead
    • Property cds.unfold → use cds.compile instead
    • Property cds.config → use cds.env instead

      These properties actually were duplicates to the mentioned alternatives.

  • [cds@3.30.0] cds run and cds watch have been re-implemented as convenience shortcuts to cds serve, which acts as the central orchestrator for bootstrapping now. (→ see cds run ? or cds watch ? to learn more)
  • [cds@3.30.0] cds serve now optionally bootstraps from project-local ./server.js or ./srv/server.js, if exist, thus giving more control while still benefitting from cds serve’s intrinsic support for options like --in-memory or --with-mocks.
  • [cds@3.30.0] cds serve now uses cds.load('*') to load a single effective model once, assigned to cds.model, and reused for db as well as all provided and required services . As that avoids loading models redundantly, it drastically improves both, bootstrapping performance as well as memory consumption.
  • [cds@3.30.0] cds deploy does not (have to) register the default models to package.json anymore. For example, unlike before, cds deploy -2 sqlite will merely add an entry: db:{kind:'sqlite'}, without an additional model property anymore.
  • [cds@3.30.0] cds deploy --to hana does not create connection.properties file any longer, but only modify existing one
  • [cds@3.30.0] modifiedAt and modifiedBy from @sap/cds/common
    • Are now mutable for OData, i.e. no longer carry the @Core.Immutable: true annotation.
    • Are set by the Node.js runtime whenever the respective row was modified, i.e. also during CREATE operations.
  • [cds@3.30.0] Support for cds init is now moved to @sap/cds-dk.
  • [cds@3.21.0] In development mode, the mock authorization strategy is automatically activated with two fake users alice and bob, which allows for out-of-the-box testing of @requires annotations. This means that, unlike before, the JWT authorization strategy needs to be activated explicitly (through {auth: { passport: { strategy: 'mock' }}}. In production, no change is required.
  • [cds@3.21.0] You might see a MODULE_NOT_FOUND error for @sap/xsenv in case you use the JWT strategy but have not bound any xsuaa service. In this case either bind such a service instance, add the @sap/xsenv dependency, or use a different strategy like mock. The trigger of this error is @sap/xssec 2.2.4 no longer requiring @sap/xsenv.
  • [cds@3.21.0] Renovated and streamlined cds init. It prints a hint now if it’s called with old-style parameters, as well as that it wants to be used from @sap/cds-dk. Check out cds help init for more.
  • [cds@3.21.0] Removed the experimental --args parameter of cds compile. This turned out to be cumbersome to use in shells. Replacement is the standard configuration mechanism, e.g. use an environment variable CDS_FOO_BAR to activate option cds.foo.bar.
  • [cds-dk@1.6.0] cds add mta now creates resources for SAP HANA with an explicit service type hana. If deploying to trial landscapes, this needs to be changed manually to hanatrial.
  • [cds-dk@1.5.0] cds init only supports new syntax. See cds init help for more info.
  • [cds-dk@1.5.0] cds init now supports adding template hana to Java projects.
  • [cds-services@1.25.0] use odata-server 1.5.2
  • [cds-services@1.24.0] use odata-server 1.5.1
  • [cds-services@1.23.0] Direct access to auto-exposed entities in draft case
  • [cds-services@1.23.0] Errors normalized based on OData v4 standard
  • [cds-services@1.23.0] Messages (i.e., header sap-messages) normalized based on Fiori standard
  • [cds-services@1.23.0] Referential integrity checks are now executed before the commit
  • [cds-services@1.23.0] Result of create and update queries is read from the data source to include computed values (update: root only, i.e., w/o compositons, etc.)
  • [cds-services@1.22.0] Improve error messages for return type validation of custom operations
  • [cds-services@1.22.0] Draft removal is handled in onDraftActivateEvent instead of onDraftActivate
  • [cds-messaging@1.7.0] Updated version number for public release
  • [cds-messaging@1.6.0] You can no longer set the namespace outside of the credentials block
  • [cds-rest@1.5.0] Updated version number for public release
  • [cds-rest@1.4.0] Version of @sap/cloud-sdk-core pinned to 1.15.1
  • [cds-rest@1.4.0] Version of @sap/cloud-sdk-util pinned to 1.15.1
  • [cds-sql@1.23.0] Convert all search queries using contains to like
  • [cds-sql@1.22.0] Managed fields are not removed anymore if they dont belong to operation (e.g. modifiedAt in INSERT, createdAt in UPDATE)
  • [cds-sql@1.22.0] null is a valid value for a managed field (e. g. if null is provided for @cds.on.insert, null will be inserted to DB)
  • [cds-hana@1.23.0] Use like instead of contains fuzzy search for $search queries
  • [cds-hana@1.22.0] SESSION_CONTEXT(‘APPLICATIONUSER’) instead of SESSION_CONTEXT(‘XS_APPLICATIONUSER’)
  • [cds-hana@1.22.0] @sap/hana-client is preferred over hdb

Fixed

  • [cds-compiler@1.23.2] Association to Join Transformation: Resolve compound ON conditions with multiple logical terms and/or references to different associations via $self.
  • [cds-compiler@1.23.2] Remove temporary property viaTransformation from published CSN.
  • [cds-compiler@1.23.2] Do not complain about unaligned $syntax attribute in CSN frontend.
  • [cds-compiler@1.23.1] Correctly calculate code completion candidates for projection items in all circumstances (regression introduced in v1.22.0).
  • [cds-compiler@1.23.1] In the Hana/Sql backend, correctly resolve forward on condition when using mixin association that backlinks to an unrelated 3rd party entity and association.
  • [cds-compiler@1.23.1] Raise a warning if the element of the forward association and the element of the query source do not not originate from the same defining entity. Raise an error if the element of the forward association cannot be found in the query source or is ambiguous.
  • [cds-compiler@1.23.1] Correctly create localization views with compiled model as input; it was wrong previously in a model with a high view hierarchy.
  • [cds-compiler@1.23.0] Automatically calculate keys also for published secondary managed associations, i.e., associations in a select column which is reached by following another association. The compiler doest not yet calculate the on condition of published secondary unmanaged associations – provide it explicitly.
  • [cds-compiler@1.23.0] Entities/Views without elements are now detected correctly.
  • [cds-compiler@1.23.0] Fix check for action/function parameters in services.
  • [cds-compiler@1.23.0] OData: Correctly apply annotations to parameters.
  • [cds-compiler@1.22.0] In the sql, hdi and hdbcds backends, correctly ignore contexts containing just actions.
  • [cds-compiler@1.22.0] In all backends, correctly handle models where an on condition of a join contains a sub query.
  • [cds-compiler@1.22.0] Avoid infloop for cyclic dependencies on select items with explicit redirections.
  • [cds-lsp@3.1.2] in some cases csn files with .json extension where not detected and thus workspace symbols were incomplete
  • [cds-lsp@3.1.1] formatting options were taken from homedir instead of preferring from project
  • [cds-lsp@3.1.0] code formatting
    • fix, improve, and allow to better adjust alignments and whitespace
    • fix alignment of annotations in annotate statement
    • fix casing of and indentation after Association and Composition
    • fix formatting of parts of select statement in case of nesting and after in
    • fix positioning of brace { after annotation if requested to be kept in previous line
    • fix bug where token starting with $ was merged
  • [cds-lsp@3.1.0] in the past file changes via watcher were automatically sent for all files in VSCode. In recent versions of VSCode this has changed to only sent files supported by language server type (cds). A fix was made to dynamically register for relevant side-files like package.json, .cdsrc.json, all supported translation file formats, ignore files to keep track of changed environment
  • [cds-lsp@3.0.0] code formatting
    • fix alignment of annotations in views
    • safely identify unreserved keywords
  • [cds.java@1.3.0] Handle more timestamp formats on SQLite-based databases: This fixes interoperability issues with cds deploy and the Node.js stack. The suggested timestamp format to be used in CSVs is ISO 8601 (2020-02-05T07:43:40Z)
  • [cds.java@1.3.0] The sap-messages header is now also written on 204 No Content responses.
  • [cds.java@1.3.0] OData V4 navigation paths are now correctly handled also on HTTP requests using the PATCH or PUT verb
  • [cds.java@1.2.0] Support compositions of second grade or higher for draft-enabled entities
  • [cds.java@1.2.0] Fixed a bug where $count could not be combined with $orderby in an OData V4 query
  • [cds.java@1.2.0] OData V4 queries with PUT verb did not work on draft-enabled entities
  • [cds.java@1.2.0] Fixed an issue where bound actions returning an entity type ran into an error when returning an entity type that was different from the one they were bound to.
  • [cds4j@1.7.0] Fix name clash with ‘filter’ in generated builder interfaces
  • [cds4j@1.7.0] Fix computation of join conditions for association keys
  • [cds@3.31.1] Removed npm-shrinkwrap.json
  • [cds@3.31.0] cds compile --to hdbtabledata no longer crashes with _texts.csv files referring to a non-localized entity
  • [cds@3.31.0] cds build/all adds app folder to the list of model folders for hana database builds. Draft tables are missing if the corresponding annotation model is missing.
  • [cds@3.30.0] There was a bug in that caused a service names FooBarV2 to erroneously be mapped to mount point /foo-barv2 instead of /foo-bar-v2 as intended and was the case before. → in case you started a project in this interims phase and had a service name with that pattern you may encounter this fix as an incompatible change, but it’s actually reverting to the former compatible way.
  • [cds@3.30.0] cds.env erroneously overrode profiled entries depending on properties order
  • [cds@3.30.0] Fiori preview now uses latest version of SAP UI5 again
  • [cds@3.30.0] cds deploy verifies returned service key to ensure target service is not of type managed.
  • [cds@3.21.3] Fiori preview no longer catches service URLs with an arbitrary prefix (e.g. /foo/browse instead of just /browse).
  • [cds@3.21.1] Fiori preview no longer crashes since it’s pinned to SAP UI5 1.72.3. Actual cause still needs to be investigated.
  • [cds@3.21.0] SELECT.one/distinct(Fool,[...]) failed when passing an array for columns as argument two
  • [cds-dk@1.6.0] cds add mta now creates valid configuration for uaa and auditlog resources.
  • [cds-dk@1.5.0] cds add mta fixes an issue in created mta.yaml for nodejs projects if used in xmake environment.
  • [cds-dk@1.5.0] cds add mta fixes an build order issue in created mta.yaml for java projects. Now service module is built before db module.
  • [cds-dk@1.5.0] cds init does not create package.json in db folder.
  • [cds-dk@1.4.0] Find locally installed modules like passport, so that cds watch and cds run behave symmetrically.
  • [cds-services@1.24.0] Column generation for SELECT.from() queries without specifying .columns()
    • HasDraftEntity was not properly calculated
    • Virtual properties were not excluded
  • [cds-services@1.25.0] Support for OData singletons
  • [cds-services@1.25.0] Streaming from draft
  • [cds-services@1.25.0] Navigations in aggregate expressions
  • [cds-services@1.24.0] Where secure annotations with localized entities
  • [cds-services@1.24.0] Handling of @cds.on.insert/update annotated properties of draft-enabled entities
  • [cds-services@1.24.0] Keys in root element were not correctly calculated for deep operations
  • [cds-services@1.24.0] @Core.MediaType could not be used in entity annotated with @cds.persistence.skip
  • [cds-services@1.23.0] Race condition when there are erros when saving draft
  • [cds-services@1.23.0] Handling of where from @restrict annotation of draft enabled entity
  • [cds-services@1.23.0] Saving a draft will not ignore readonly fields anymore
  • [cds-services@1.23.0] Not having a connection for unauthorized users will not crash the server anymore
  • [cds-services@1.23.0] In mocked authorization, users don’t need the ID property
  • [cds-services@1.23.0] Filtering using the NE operator handles null values properly
  • [cds-services@1.23.0] For insertable-only entities default values are correctly handled now
  • [cds-services@1.23.0] Immutable values are now ignored during PATCH or UPDATE requests
  • [cds-services@1.23.0] Batch input via REST
  • [cds-services@1.23.0] SELECT * by customer handlers will work also on Hana in case the columns are lowercase
  • [cds-services@1.23.0] Support “userAttributes” by Mocked Authentication, “xs.user.attributes” is deprecated and will be removed in the next releases
  • [cds-services@1.23.0] Arbitrary users are allowed if fake user ‘*’= true exist by Mocked Authentication
  • [cds-services@1.22.0] Check whether service requires authentication
  • [cds-services@1.22.0] Independent passport configs per service
  • [cds-messaging@1.6.0] Fixed bug where non-trimmed data causes problems in file-based messaging
  • [cds-sql@1.23.2] Missing alias for orderBy caused column ambiguously defined error
  • [cds-sql@1.23.0] Searching for _ or % in $search
  • [cds-sql@1.22.0] Expand with composition to one for draft enabled entity
  • [odata-server@1.5.0] ensure non-null field code in error responses
  • [odata-server@1.4.1] If-Match and If-None-Match headers are allowed with value ‘*’ on non-conditional PUT/PATCH requests (for upsert)
  • [odata-server@1.4.1] If-Match header with value ‘*’ is allowed for all GET requests
  • [odata-server@1.4.1] allow annotations @odata.type in requests if they match the types specified in the metadata
  • [odata-server@1.4.0] documentation: actions and functions are supported

Removed

  • [cds-services@1.24.0] Annotation @Search.fuzzinessThreshold
  • [odata-server@1.5.0] support for node.js version 8 due to its end of life

Changelog 2019

Changelog 2018