Search

    Changelog

    March 2021

    Added

    • [cds-dk@4.0.0] cds watch is now a live reload server, allowing for automatic page refreshes in browsers whenever a file has changed.
    • [vscode-cds@4.0.0] semantic highlighting - to be enabled via user setting cds.semanticHighlighting.enabled
    • [vscode-cds@4.0.0] new API for annotation handler to support semantic highlighting
    • [vscode-cds@3.4.0] preliminary support for cds-compiler 2.x
    • [cds-compiler@2.1.0] Inferred sub elements of a referred structure type can be individually annotated.
    • [cds-compiler@2.1.0] All primitive types except for binary are now allowed as enum value types.
    • [cds-compiler@2.1.0] Allow users to define A.B even if there is a definition A, which is not a context or service.
    • [cds-compiler@2.1.0] You can now provide almost all annotation assignments without delimited identifiers: the use of ., @, and # is fine for annotation names, property names of structures, and in references used as annotation values.
    • [cds-compiler@2.1.0] for.odata:
      • All the artifacts that have localized fields get a $localized: true property.
      • Allow the user to define draft actions for annotation purposes
        • draftPrepare(SideEffectsQualifier: String) returns <ET>,
        • draftActivate() returns <ET>,
        • draftEdit(PreserveChanges: Boolean) returns <ET>
    • [cds-compiler@2.1.0] to.edm(x):
      • Warn about nonapplicable annotations.
      • Render property default values (only OData V4).
      • Option odataProxies exposes association targets outside of the current service. These EntityTypes do only expose their primary keys have no accompanying EntitySet. The added navigation targets are exposed under their namespace or if not available under namespace root. odataProxies is only available with --format=structured.
      • Option odataXServiceRefs renders an edm:Reference to the service for those navigation targets that are defined in another service. odataXServiceRefs is only available with --format=structured.
      • Duplicate EntityContainer entries with same name will raise an error.
      • array of elements are now allowed for OData V2, too.
    • [cds-compiler@2.1.0] to.sql/hdi/hdbcds: Explicitly render the implicit alias for functions without arguments, e.g. current_date.
    • [cds-compiler@2.1.0] to.sql:
      • Sort the SQL statements according to the deployment order.
      • New sql dialect plain, which now is the default. synchronously.
    • [cds-compiler@2.1.0] API:
      • compileSync() is now compatible to compile(): the function can also receive a file cache and will resolve all usings
      • New API functions parse.cql (prefer it to deprecated parseToCqn) and parse.expr (prefer it to deprecated parseToExpr)
      • function getArtifactCdsPersistenceName now accepts a CSN as a third parameter (used to be a namespace). With a CSN provided, the name can be correctly constructed for naming modes quoted and hdbcds. Without a CSN, the name is possibly wrong if it contains dots. If the CSN is not provided or the third parameter is not a CSN, the old, deprecated, implementation is used.
    • [cds-compiler@2.1.0] cdsc and other client tools:
      • Added --with-localized to the command toCsn, which adds convenience views for localized entities to the output.
      • A script bin/cds_update_identifiers.js was added. You can use it to update the delimited identifier style in your CDS sources.
      • A script bin/cdscv2m.js was added. It’s command ria adds @cds.redirection.target: false annotate statements for all ambiguous redirection errors.
    • [cds-compiler@2.1.0] Added deprecated options; setting any of them disables all beta options.
    • [cds@5.0.2] Ensure correlation ID and set intermediate cds.context in default server.js
    • [cds@5.0.1] cds.load.properties and cds.parse.properties to load and parse content in .properties format
    • [cds@5.0.1] cds.load.csv and cds.parse.csv to load and parse csv content
    • [cds@5.0.1] CDL, CQL, and CXL as new global methods for tagged template strings generating CSN, CQN, or CXN objects
    • [cds@5.0.1] Fluent API classes provided through cds.ql also support tagged template strings now in these methods: SELECT, SELECT.from, SELECT.where, UPDATE, UPDATE.with, UPDATE.where, INSERT.into, DELETE.from, DELETE.where Example:
      let Authors = SELECT `ID` .from `Authors` .where `name like ${'%Brontë%'}`
      let Books = SELECT `ID,title` .from `Books` .where `author_ID in ${Authors}`
      await
      
    • [cds@5.0.0] MTX APIs are now automatically served when cds.requires.multitenancy exists. This renders an application-level server start script for multitenancy unnecessary.
    • [cds@5.0.0] Auto-connect to a live reload server started by cds watch.
    • [cds@5.0.0] cds.parse now offers tagged template strings. For example, const {CDL,CQL,CXL} = cds.parse; CQLSELECT from Books where stock > 111.
    • [cds@5.0.0] cds.log now supports config options for Loggers and log levels via cds.env.log.
    • [cds@5.0.0] cds.entity.draft as a stable way to read from draft data
    • [cds@5.0.0] cds.linked now correctly links, events, action params and results, which were not linked before
    • [cds@5.0.0] cds.env.features.skip_unused = 'all' removes all definitions from CSN, which are not reachable by defined services. Especially, when using comprehensive reuse models, like One Domain Model, this significantly reduces both, memory consumption as well as excess tables and views in databases.
    • [cds.java@1.15.0] The method throwIfError() has been added to the Messages interface. You can use this method to throw a ServiceException based on the error messages collected in the Messages container. With this API, you can avoid duplicating errors or to define a general top-level error message.
    • [cds.java@1.15.0] OData V2 and V4 adapters now support entity names that contain a dot in their CDS definition, for example Books.texts.
    • [cds.java@1.15.0] Direct modifications on primitive properties using PUT or DELETE are now supported in OData V4, for example PUT /Books(4711)/title.
    • [cds.java@1.15.0] CQN Select queries on remote OData services now support excluding.
    • [cds.java@1.15.0] Simple projections reducing the select list (without aliases) can now be used with queries on remote OData services.
    • [cds.java@1.15.0] The TenantProviderService is now capable of retrieving subscribed tenants from the SaaS registry, if a corresponding service binding is available. If not, it still falls back to retrieving subscribed tenants from the service manager.
    • [cds.java@1.15.0] Added sending of event messages to multitenant-aware SAP Event Mesh services.
    • [cds4j@1.19.0] Reflection API:
      • Support aspects with compositions of aspects
      • Support dots in events, aspects, structured types, actions, and functions
    • [cds4j@1.19.0] Generator:
      • Support dots in entity names, events, structured types, aspects, actions, and functions
      • Support composition of aspects
    • [cds-runtime@3.0.3] Support for application/*+json when parsing events through webhooks
    • [cds-runtime@3.0.2] Support for {xpr:...} as argument of a function in SQL Builder
    • [cds-runtime@3.0.2] Aliased parameters of a function call using an OData inline parameter syntax are provided as a request payload in req.data.
    • [cds-runtime@3.0.2] Skip conversion to UTC on SAP HANA during insert via .rows(), .values(), or .as() with cds.env.features.preserve_timestamps = true.
    • [cds-runtime@3.0.2] Beta version of new URL to CQN parser
      • Use during read requests when serving to REST via cds.env.features.rest_new_parser
      • Known limitations:
        • Falsy key path segments in navigations, for example, GET /Books/0/author
        • ne operator in $filter does not match NULL
        • Nested functions, for example, contains(toupper(...))
        • $select not filtered for duplicates, for example, $select=ID,* -> columns: ['ID', 'ID', ...]
      • Not supported when serving to REST:
        • Deep navigations, for example, GET /Books/1/author/books
        • /$count
        • $apply
    • [cds-runtime@3.0.1] PUT primitive properties via OData
    • [cds-runtime@3.0.1] Optimistic concurrency control for primitive properties
    • [cds-runtime@3.0.1] Data for virtual properties filtered out on write to draft tables
    • [cds-runtime@3.0.1] Annotation @odata.draft.enclosed
    • [cds-runtime@3.0.0] SAP Event Mesh: Webhook support
    • [cds-runtime@3.0.0] SAP Event Mesh: Webhook support in multitenancy
    • [cds-runtime@3.0.0] Messaging: Remove obsolete topics on queue creation
    • [cds-runtime@3.0.0] Additional convenience look-ups of messages.properties files next to models
    • [cds-runtime@3.0.0] Support for the @cds.search annotation to allow a different set of searchable elements in the $search OData query option and to extend the search to associated entities (currently not supported)
    • [cds-runtime@3.0.0] Additional credentials look-up with label service-manager in SAP HANA pool
    • [cds-runtime@3.0.0] Support for new “Locked by Another User” request of draft choreography
    • [cds-runtime@2.9.8] Database pool teardown in case of failed db connection attempt
    • [cds-runtime@2.9.6] Pass tcpKeepAliveIdle to hdb (available with hdb^18) via environment variable HDB_TCP_KEEP_ALIVE_IDLE
    • [cds-runtime@2.9.6] Database pool teardown in case of credentials become invalid scenario extended by unreachable database
    • [cds-mtx@1.2.0] Multitenant applications now support extensions of entities using schema evolution based on .hdbmigrationtable files.
    • [cds-mtx@1.2.0] It is now possible to specify limits for the number of extension fields per entity. If no limit is specified, the number of extension fields is not limited.
      If this list exists, only entities and services contained in this list can be extended.
      "mtx" : {
      "extension-allowlist": [
        {
            'for': ['my.bookshop.Authors', 'my.bookshop.Books'],
            'new-fields': 2
        },
        {
            'for': ['CatalogService']
        }
      ]
      }
      
    • [cds-sidecar-client@1.1.14] Compatibility with CDS Compiler v2.
    • [cds-odata-annotations@1.1.7] Go To References /Peek References / Show All References for the aggregated properties defined with the @Analytics.AggregatedProperties annotation. You can now navigate to the place where the aggregated property is referenced.
    • [cds-odata-annotations@1.1.5] Code completion, diagnostics, and quick info for applying selected client-side OData functions:
      • odata.concat
      • odata.fillUriTemplate
      • odata.uriEncode
    • [cds-odata-annotations@1.1.5] Peek References/ Go To References for annotations referenced in other annotations. You can now see if and where the annotation is referenced. Limitation: references in propagated annotations might be not included.

    Changed

    • [cds-dk@4.0.3] cds compile --to xsuaa, edmx-v2, and edmx-v4 have moved from @sap/cds to @sap/cds-dk.
    • [cds-dk@4.0.2] cds init uses latest Maven Java archetype version 1.14.3 for creating Java projects.
    • [cds-dk@4.0.2] npm-shrinkwrap.json format version 2 is now used, produced by npm 7
    • [cds-dk@4.0.2] npm-shrinkwrap.json now contains integrity hashes
    • [cds-dk@4.0.0] cds init uses latest Maven Java archetype version 1.14.0 for creating Java projects.
    • [cds-dk@4.0.0] cds watch has dropped its fallback support for nodemon through the CDS_USE_NODEMON configuration.
    • [cds-dk@4.0.0] cds add hana now sets hdbtable as deployment format for SAP HANA
    • [cds-dk@3.5.1] Bump version of @sap/cds to 4.6.5
    • [vscode-cds@4.0.0] consume cds-compiler 2.1.4
    • [vscode-cds@3.4.0] now requires Visual Studio Code >=1.53
    • [vscode-cds@3.4.0] uses @sap/cds-lsp@4.4.1
    • [vscode-cds@3.4.0] uses @sap/cds-compiler@1.50.0
    • [cds-compiler@2.1.0] CSN representation:
      • CSN Version is set to 2.0
      • CSN definitions are not sorted anymore
      • $syntax is non-enumerable
      • increase the use of JS numbers in the CSN for numbers in CDL, especially noticeable in annotation values
      • Annotation definitions are to be found in the top-level property vocabularies.
      • Introduce kind: 'aspect' to replace kind: 'type', $syntax: 'aspect' and kind: 'entity', abstract: true (the deprecated variants are still accepted as input).
      • Projections are rendered via projection instead of query.SELECT.
      • Parentheses are represented structurally and unnecessary parentheses are omitted.
      • Use . instead of _ for the name suffix of generated texts entities and the calculated entity for managed compositions.
      • The CSN returned by compile() does not include localized convenience views anymore.
    • [cds-compiler@2.1.0] Core engine (function compile):
      • An assignment @Foo.Bar is always @Foo.Bar, we do not try to search anymore for a local definition of Foo probably having a different full name.
      • Localized convenience views are no longer generated by the core compiler but added by the for.odata and to.sql/hdi/hdbcds processing on demand.
      • Minimize name clashes when calculating names for autoexposed entities, extends the v1 option dependentAutoexposed to sub artifacts of entities (see “Added”).
      • Ambiguities when redirecting associations now always lead to compile errors; you might want to use the new annotation @cds.redirection.target to solve them.
      • The association up_ in the calculated entity for managed compositions is now managed.
        Limitation: Nested managed compositions are not activatable via to.hdbcds --names=hdbcds.
      • Bound actions and functions are no longer propagated from the main query source to the resulting view or projection.
      • Remove annotation @cds.autoexpose from generated .texts entity
      • Require order by references to start with a table alias when referring to source elements.
      • Infer the type of a select item from the type of a top-level cast.
    • [cds-compiler@2.1.0] Localized convenience views now also contain masked elements of the original artifact.
    • [cds-compiler@2.1.0] for.odata:
      • Even with --format: structured, (flat) foreign keys for managed associations are generated.
      • An entity or an aspect defined outside the current service cannot be used as action parameter or return types.
      • Structured elements are expanded in-place.
      • Foreign keys for managed associations are created in-place.
    • [cds-compiler@2.1.0] to.edm(x):
      • An Edm.TypeDefinition is rendered for a derived scalar type and used as type reference instead of rendering the final scalar type, including the array of/many predicates.
      • enum type definition as service member is rendered as edm:TypeDefinition instead of edm:EnumType.
      • Set default source cardinality of compositions to exact one. This is observable in V2 EDM only.
      • Key must not be nullable=true, this includes all sub elements of used structured types.
      • Default values are no longer propagated from the principal to the generated foreign key element.
      • array of array is rejected, nested Collections Collection(Collection(...)) are illegal.
      • Temporal rendering:
        • @cds.valid.from is not Edm.KeyRef anymore.
        • @cds.valid.key is rendered as @Core.AlternateKeys.
      • Downgrade message “<Term> is not applied” from warning to info.
      • Update Vocabularies ‘Aggregation’, ‘Capabilities’, ‘Core’, ‘Validation’.
    • [cds-compiler@2.1.0] to.sql/to.hdi/to.hdbcds:
      • Reject using associations or compositions in query elements starting with $self or $projection.
      • Virtual elements are not rendered.
      • Structured elements are expanded in-place.
      • Foreign keys for managed associations are created in-place.
      • Implicit/CDL-style casts are not rendered as SQL CASTs.
      • All association usages in queries are always translated into JOIN expressions (except for to.hdbcds --names=hdbcds).
    • [cds-compiler@2.1.0] to.sql/to.hdi:
      • Downgrade message to-many-no-on from error to warning.
      • Default values are no longer propagated from the principal to the generated foreign key element.
    • [cds-compiler@2.1.0] to.sql:
      • Changed type mappings for --dialect=sqlite:
        • cds.Date –› DATE_TEXT
        • cds.Time –› TIME_TEXT
        • cds.Timestamp –› TIMESTAMP_TEXT
        • cds.DateTime –› TIMESTAMP_TEXT
        • cds.Binary –› BINARY_BLOB
        • cds.hana.Binary –› BINARY_BLOB
      • Don’t check missing type facets.
    • [cds-compiler@2.1.0] to.hdbcds:
      • References to derived, primitive types are replaced by their final type. The derived type definitions are not rendered anymore for hdbcds naming mode.
      • Don’t check missing type facets in views.
    • [cds-compiler@2.1.0] to.cdl:
      • Render maximum cardinality as ‘to one’ or ‘to many’.
      • Return at most two files. The first one (named model.cds) contains all definitions, rendered in order, without namespaces or using. Contexts and services are NOT nested. The second file (named <namespace>.cds) represents the CSN namespace property, simply defining such a namespace and requiring the first file.
    • [cds-compiler@2.1.0] API changes:
      • The API functions compile() and compileSync() return a CSN and not an XSN, compactModel() returns the first argument.
      • If options does not provide a messages property, all messages are printed to standard error.
      • The options.messages is kept throughout the compiler and contains all messages from the compiler and all backends.
      • Messages are not sorted anymore; use the API function sortMessages to have it sorted.
    • [cds@5.0.1] Minimum required Node.js version is now 12. Support for Node.js v10 is dropped.
    • [cds@5.0.0] Upgraded major version of dependency @sap/cds-compiler
    • [cds@5.0.0] cds.requires.db.multiTenant is deprecated. Multitenancy can now be enabled by adding a cds.requires.multitenancy configuration.
    • [cds@5.0.0] cds deploy --to hana no longer adds a driver for SAP HANA to package.json. This can be done with cds add hana.
    • [cds@5.0.0] cds deploy --to hana no longer adds configuration for SAP HANA to package.json. This can be done with cds add hana.
    • [cds@5.0.0] cds deploy --to hana drops support for the classic CAP Java runtime, that means, longer writes credentials for SAP HANA to connection.properties.
    • [cds@5.0.0] Fiori preview now loads and shows data initially in its list page
    • [cds@5.0.0] i18n template strings now are replaced in EDMX documents such that they retain their surrounding string. For example, the "{i18n>key1} - {i18n>key2}" template results in "value1 - value2", while previously the first match replaced the entire string, leading to "value1". This is helpful for the Template strings of UI.ConnectedFields.
    • [cds@5.0.0] CDS drops compiler v2 support for classic CAP Java runtime projects. cds build returns an error if compiler version 2 is used. For further details regarding migration to CAP Java SDK runtime, see https://cap.cloud.sap/docs/java/migration.
    • [cds@5.0.0] req.timestamp is a Date object now; was a UNIX epoch integer before, i.e., Date.now()
    • [cds.java@1.15.0] Added the new interface CqnService, which will gradually replace CdsService. The benefits of the new interface will be that it avoids name clashes with CdsService from the Reflection API and captures the intent of the interface better. In a future release CdsService might be deprecated. To avoid warnings in your code, consider renaming usages of CdsService to CqnService.
    • [cds.java@1.15.0] When switching to the privileged user in a new Request Context using privilegedUser(), the current tenant context is automatically propagated to the privileged user.
    • [cds.java@1.15.0] Unknown topic events are no longer auto-completed in Messaging Services.
    • [cds.java@1.15.0] The goals clean and generate of the cds-maven-plugin adopting the naming convention for properties and add prefix cds.<goalname> to all their properties.
    • [cds.java@1.15.0] The cds-services-archetype doesn’t set a Node.js version in pom.xml anymore, which means that the default version provided by the cds-maven-plugin is used. If required it is still possible to set the Node.js version property in a project.
    • [cds-runtime@3.0.2] Minimum required Node.js version is now 12. Support for Node.js v10 is dropped.
    • [cds-runtime@3.0.2] Draft handlers registered via cds.ApplicationService.registerFioriHandlers(), which gets called in cds.ApplicationService.init()
    • [cds-runtime@3.0.2] OData validation is skipped by default. It can be explicitly turned on by setting cds.odata.skipValidation config to false
    • [cds-runtime@3.0.1] Grants of @restrict in draft are derived from the CRUD vocabulary
    • [cds-runtime@3.0.1] Unnecessary @restrict checks for actions on drafts are skipped (“in process by user” check remains)
    • [cds-runtime@3.0.1] Drafts are deleted after the active version was created/ updated
    • [cds-runtime@3.0.1] Skip “with parameters” clause if no order by clause or all columns in the order by clause are not strings
    • [cds-runtime@3.0.0] By default, only elements typed as string are searchable via the $search OData query option to improve performance
    • [cds-runtime@3.0.0] Deprecate @Search.defaultSearchElement annotation in favor of the @cds.search annotation
    • [cds-runtime@3.0.0] Ignore not null annotation on nested structured types in OData x4 flavor (cds.env.odata.flavor = x4) if its parent structure is optional
    • [cds-runtime@3.0.0] Smart quoting based on database-specific keywords exported by @sap/cds-compiler
      • Deactivate during two-month grace period via compatible feature flag cds.env.features.compiler_keywords = false
    • [cds-odata-annotations@1.1.7] Vocabulary description and long description for restricted String values are now displayed in Quick Info window of the completion lists.

    Fixed

    • [cds-dk@4.0.3] cds init now works if started in file paths with spaces
    • [cds-dk@4.0.2] Allow blanks in cds-dk installation path when running cds init.
    • [cds-dk@4.0.1] Many things in linter
    • [cds-dk@4.0.0] cds watch no longer runs in an endless restart loop if started in the user’s home dir.
    • [cds-compiler@2.1.4] The postinstall step now never fails with an exit code != 0. As the postinstall step is optional, it should not break any npm install steps.
    • [cds-compiler@2.1.2] ensure postinstall script is part of the shipped package.json
    • [cds-compiler@2.1.0] Core engine (function compile):
      • Managed compositions in sub elements are now properly redirected, even if the sub structure comes from a referred type.
      • Do not dump with sub queries in the on condition of joins.
      • Properly report that managed aspect composition inside types and as sub elements are not supported yet.
      • Make sure that including elements with managed aspect compositions only use the provided target aspect, but not the generated target entity.
      • Properly handle the extra keywords in the third argument of the SAP HANA SQL function round.
    • [cds-compiler@2.1.0] to.edm(x):
      • Return all warnings to the user.
      • Don’t render references and annotations for unexposed associations.
      • Rendering of @Validation.AllowedValue for elements of type enum annotated with @assert.range:
        • Add @Core.Description, if the enum symbol has a @Core.Description, @description or document comments.
      • Primary key aliases are now the path base names, colliding aliases are numbered.
      • Fix a bug in constraint calculation if principal has no primary keys.
      • Illegal OData identifiers, which are not exposed in the generated edmx schema are not causing errors anymore.
      • Improve non-enum value handling on term definitions based on an enum type by raising a warning and rendering the value with appropriate scalar EDM type.
      • Render annotation qualifier in JSON format.
    • [cds-compiler@2.1.0] to.sql/hdi/hdbcds:
      • Reject structured view parameters for SAP HANA.
      • Types are not rendered anymore for SAP HANA in quoted mode.
      • Structured elements in subqueries are now properly expanded.
      • Actions, functions, annotations, and events do not have database specific checks run on them, as they will not be part of the resulting artifacts anyways
      • With --names=quoted or hdbcds, some . in artifact names are turned into _. In general, this happens when part of the name prefix is “shadowed” by a non-context/service; any . after that point is turned into _. This change also affects the filenames and the @cds.persistence.name annotation in the CSN returned by to.hdi.migration and for.odata.
    • [cds-compiler@2.1.0] to.sql/hdi:
      • Fixed a bug, which led to an exception if elements were referenced as types.
      • For the SQLite dialect, date, time, and timestamp are rendered as simple string literals instead of function calls.
      • For naming mode “plain”, date, time, and timestamps are rendered as SQL-compliant literals.
    • [cds-compiler@2.1.0] to.sql/hdbcds: Fix issue, which led to wrong ON conditions for naming mode hdbcds.
    • [cds-compiler@2.1.0] to.sql:
      • SRID of SAP HANA spatial type (ST_POINT & ST_GEOMETRY) is not rendered as the length of CHAR for SQL-dialects other than hana. The resulting CHAR has a default length of 2,000.
    • [cds-compiler@2.1.0] to.hdbcds:
      • Nullability constraints on view parameters are not rendered anymore.
      • CDS and SAP HANA CDS types inside cast expressions are mapped to their SQL-counterparts, as the CDS types can’t be used in a cast.
    • [cds-compiler@2.1.0] to.cdl: Correctly render event typed as projection.
    • [cds-compiler@2.1.0] to.hdi.migration: Don’t generate ALTER for type change from association to composition or vice versa (if the rest stays the same), as the resulting SQL is identical.
    • [cds-compiler@1.50.4] to.hdbcds: CDS and SAP HANA CDS types inside cast expressions are mapped to their SQL-counterparts, as the CDS types can’t be used in a cast.
    • [cds-compiler@1.50.2] Correct calculation of dependent autoexposed entity name (fixing a potential regression with v1.50.0)
    • [cds-compiler@1.50.2] to.hdi.migration: Correctly handle “temporal” and other cases when rendering expressions
    • [cds-compiler@1.50.2] to.edm(x):
      • Improve non-enum value handling on Oasis enum term definitions by raising a warning and rendering the value with appropriate scalar EDM type.
      • Render annotation qualifier in JSON format.
    • [cds-compiler@1.50.2] Update OData vocabularies ‘Aggregation’, ‘Analytics’, ‘Capabilities’, ‘CodeList’, ‘Common’, ‘Communication’, ‘Core’, ‘Graph’, ‘HTML5’, ‘ODM’, ‘PersonalData’, ‘Session’, ‘UI’
    • [cds@5.0.4] cds build no longer fails with a task.apply is not a function error when used in an npm script.
    • [cds@5.0.3] cds.compile got thoroughly cleaned up and enhanced as the single API to compile models
    • [cds@5.0.3] cds.compile.to.cdl was missing in 5.0.2
    • [cds@5.0.3] cds build no longer uses reflected CSN which caused odata and EDMX transformation to fail. As a consequence language specific EDMX files were missing.
    • [cds@5.0.2] cds build no longer aborts for CAP Java SDK based projects with compiler v2 not supported message.
    • [cds@5.0.1] Fixed race conditions in cds.serve leading to broken services
    • [cds@5.0.1] Fixed typos in API type definitions
    • [cds@5.0.1] Fixed cds.reflect.forall for CSN extensions
    • [cds@5.0.1] Fixed orphaned _texts proxies, causing init from CSV to fail with “no such table” errors
    • [cds@5.0.0] cds.connect.to no longer returns undefined in concurrent cases where connect is called again while a datasource is about to be connected.
    • [cds@5.0.0] cds.log formerly wrote log and debug output to stderr, now writes that to stdout
    • [cds@5.0.0] cds.server now accepts port 0 as a number
    • [cds@5.0.0] Race conditions in cds.serve and cds.connect lead to wrong Service instances to lost handler registrations
    • [cds@4.6.5] cds build now correctly parses .hdbtablemigration files on Windows
    • [cds@4.6.5] compile --to serviceinfo no longer crashes for Spring configuration in multi-root yaml files
    • [cds.java@1.15.0] Fixed a bug, that could create a mismatch between the tenant in the Request Context and the tenant used by the database transaction. This bug could only occur, when explicitly changing the tenant context in the Request Context after already starting a database transaction. This situation is now detected with an exception and dedicated database transactions or ChangeSet Contexts must be opened for each tenant.
    • [cds.java@1.15.0] Fixed a bug that caused issues with associations as keys in draft-enabled entities.
    • [cds.java@1.15.0] Fixed a bug that caused the creation date instead of the last changed date of a draft entity to be considered during the draft garbage collection.
    • [cds.java@1.15.0] Fixed a bug that caused getDefinition() of ApplicationService and RemoteService to return the service definition from the tenant-independent model.
    • [cds.java@1.15.0] Fixed a bug that caused serialization issues in OData V4 when directly reading a Edm.Decimal property (for example, /browse/Books(4711)/price).
    • [cds.java@1.15.0] Fixed a bug that caused invalid OData V4 EDMX files to be loaded due to external references defined in the EDMX.
    • [cds.java@1.15.0] Fixed a bug that caused message targets to miss on the OData V2 error response.
    • [cds.java@1.15.0] Fixed a bug that caused guid keys in message targets to be rendered incorrectly in OData V2.
    • [cds.java@1.15.0] Fixed a bug that rejected requests (HTTP return code 403 Forbidden) to public actions and functions, which accept parameters.
    • [cds.java@1.15.0] Fixed a bug that caused an incorrect authentication auto-configuration in case the base path of an adapter was configured to /.
    • [cds.java@1.15.0] Fixed a bug, that caused no CSV data to be initialized during startup, in case an error was present in one of the CSVs. Every CSV file is now inserted in a dedicated transaction.
    • [cds.java@1.15.0] Fixed a bug in cds-maven-plugin, where using command line argument -Dskip=true skips the goals install-node, install-cdsdk, cds, and npm at once. Now, each of these goals has it’s own skip property: cds.cds.skip, cds.install-cdsdk.skip, cds.install-node.skip, and cds.npm.skip.
    • [cds.java@1.14.1] Fixed a bug that prevented authorized users to read draft metadata or texts of a draft entity (for example, /<draft-entity>/DraftAdministrativeData or /<draft-entity>/texts). The requests were rejected with HTTP response code 403 (Forbidden) in case the entity is protected with a @restrict-clause that has a where-condition.
    • [cds.java@1.13.2] Fixed a bug that prevented mock user configuration in case there was an XSUAA-binding in default-env.json but XSUAA-configuration has been turned off explicitly.
    • [cds.java@1.13.2] Fixed a bug that caused the field length validation to fail on arrayed string elements (for example, many String(10)).
    • [cds4j@1.19.0] Fix bulk upsert with empty list
    • [cds4j@1.19.0] Support inline/anonymous defined type as return type for actions/functions
    • [cds4j@1.19.0] Fix cascading delete fallback for path with infix filters
    • [cds4j@1.18.1] Fix bulk upsert with empty list
    • [cds4j@1.18.1] Fix cascading delete fallback for path with infix filters
    • [cds4j@1.18.1] Render all LIMIT clauses as literal values
    • [cds.java@1.13.2] Updated CDS4j to 1.17.2
    • [cds-runtime@3.0.5] Side effects on @sap/hana-client’s streaming extension
    • [cds-runtime@3.0.4] Empty inserts for nested composition of one
    • [cds-runtime@3.0.4] Preserve children if multiple compositions to same target
    • [cds-runtime@3.0.3] Navigation properties in $select inside of $expand query option
    • [cds-runtime@3.0.2] Accept header matching during media stream
    • [cds-runtime@3.0.2] Time delta for Date type in temporals
    • [cds-runtime@3.0.2] Function calls using an OData inline parameter syntax with aliased parameters of primitive types
    • [cds-runtime@3.0.2] Path navigation in $orderby expressions when using SAP HANA functions
    • [cds-runtime@3.0.1] Reading SiblingEntity via navigation of a draft enabled entity
    • [cds-runtime@3.0.1] Inline defined return types of custom actions/functions in REST
    • [cds-runtime@3.0.1] Multiple integrity errors in one changeset
    • [cds-runtime@3.0.1] @Capabilities.NavigationRestrictions considers “deep” navigation paths
    • [cds-runtime@3.0.1] Add ETags to result based on @odata.etag in CSN alone
    • [cds-runtime@3.0.1] Reading media stream with accept header
    • [cds-runtime@3.0.0] Using path navigations in $filter for SAP HANA-based services configured with cds.odata.flavor = x4
    • [cds-runtime@3.0.0] Only messaging will deal with domain-level events
    • [cds-runtime@3.0.0] Read access using nondraft enabled projections on draft children
    • [cds-runtime@3.0.0] Debug message when metadata size exceeds cache limit
    • [cds-runtime@3.0.0] Order by using functions in combination with group by
    • [cds-runtime@3.0.0] Streaming by navigation
    • [cds-runtime@3.0.0] Alignment of temporal data with compiler v2 format
    • [cds-runtime@3.0.0] Calculate DraftIsCreatedByMe and DraftIsProcessedByMe properties of DraftAdministrativeData by reading drafts
    • [cds-runtime@2.9.7] Reserved keywords for smart quoting
    • [cds-runtime@2.9.7] Datetime conversion for SAP HANA in case of INSERT...as(SELECT...)
    • [cds-runtime@2.9.5] Relative error target on draft activation for SAP Fiori Elements with OData V2
    • [cds-runtime@2.9.4] Support for version 2 of the @sap/xssec package, as it is deprecated. Now, only version 3 of the package is supported.
    • [cds-runtime@2.9.3] Check whether current request is a bound action
    • [cds-runtime@2.9.2] Result payload by expand of grandchild entity, when the child data that is null
    • [cds-runtime@2.9.2] Delete composition of one via navigation
    • [cds-runtime@2.9.2] Use extended model in structured processing
    • [cds-mtx@1.1.5] Connection handling has been improved. Errors of type TimeoutError: Acquiring client from pool timed out are reduced.
    • [cds-mtx@1.1.5] The extension API /mtx/v1/content now returns a correct JSON if a collection is requested with any version of @sap/cds used by the application. The cds extend command was returning (intermediate result) is not iterable because of an incorrect server response.
    • [cds-mtx@1.1.3] mtx/v1/model/status now returns the job status again
    • [cds-odata-v2-adapter-proxy@1.6.0] Final CDS v5 compatibility version
    • [cds-odata-v2-adapter-proxy@1.5.11] CDS 5 compatibility (>= 1.6.0 needed for CDS v5)
    • [cds-odata-v2-adapter-proxy@1.5.11] Support ‘content-disposition’ header in media entity upload
    • [cds-odata-v2-adapter-proxy@1.5.11] Introduction of element annotation @cov2ap.headerDecode to decode header values
    • [cds-odata-v2-adapter-proxy@1.5.10] Fix crash for bound action without return type
    • [cds-odata-v2-adapter-proxy@1.5.10] Consider bound action binding parameter for messages targets

    Removed

    • [cds-compiler@2.1.0] Core engine (function compile):
      • Referential integrity issues now always lead to compile errors.
      • The type of operator (without : in the reference) cannot be used for parameters and inside queries anymore.
      • Using "…" for delimited identifiers leads to a compile error.
      • Issue an error for “smart artifact references”, that means, when using Definition.elem instead of Definition:elem
      • The definition of annotations is no longer allowed in contexts and services.
      • Providing an alias name without as leads to a compile error or warning.
      • Providing unexpected kind of definitions for type or other references lead to a compile error.
      • The ancient CSN 0.1.0 format generation has been removed.
      • The compiler does no longer look for modules whose file extension is .csn.json, both .csn and .json is still checked.
    • [cds-compiler@2.1.0] for.odata:
      • With --format: structured, the property $generatedFieldName in keys of managed associations has been removed.
      • Artificially exposed types that are required to make a service self contained are removed from the OData processed CSN.
      • Localized convenience views are no longer part of the OData CSN.
    • [cds-compiler@2.1.0] API changes:
      • The deprecated XSN based transformers forHana, forOdata, toSwagger, toSql, toCsn, toCdl have now been removed from the code base.
      • Remove collectSources() as well as options.collectSources.
      • A CompilationError usually does not have the property model anymore, to avoid potential memory issues.
      • CSN compiler messages no longer have a location property. Use $location instead.
    • [cds-compiler@2.1.0] The following cdsc options have been removed:
      • --old-transformers.
      • --hana-flavor with all corresponding rudimentarily implemented language constructs.
      • --new-resolve (the new resolver is now the default).

    The following undocumented, internal functions have been removed. In case you spotted and used them, please replace as given below.

    • [cds@5.0.3] cds.compile.cdl → use cds.compile instead
    • [cds@5.0.3] cds.compile.to.parsed.csn → use cds.parse instead
    • [cds@5.0.3] cds.compile.to.xtended.csn → use cds.compile instead
    • [cds@5.0.3] cds.compile.to.inferred.csn → use cds.compile instead
    • [cds@5.0.3] cds.compile.to.hdi → use cds.compile.to.hdbtable instead
    • [cds@5.0.3] cds.compile.to.hana → use cds.compile.to.hdbcds instead
    • [cds@5.0.3] cds.compile.to.xsuaa → still available in CLI thru cds compile -2 xsuaa
    • [cds@5.0.3] cds.compile.to.serviceinfo → still available in CLI thru cds compile -2 serviceinfo
    • [cds@5.0.3] cds.compile.to['edmx-v2'] → still available in CLI thru cds compile -2 edmx-v2
    • [cds@5.0.3] cds.compile.to['edmx-v4'] → still available in CLI thru cds compile -2 edmx-v4
    • [cds@5.0.3] cds.compile.to['edmx-w4'] → still available in CLI thru cds compile -2 edmx-w4
    • [cds@5.0.3] cds.compile.to['edmx-x4'] → still available in CLI thru cds compile -2 edmx-x4

    • [cds@5.0.0] Compiler non-snapi support → see cds.env.features.snapi option
    • [cds@5.0.0] In recent releases we added methods cds.compile.to.hdbtabledata and cds.compile.to.hdbmigration, intentionally undocumented, as they were meant to be private. Nobody should ever have used these methods, hence nobody should be affected by their removal.
    • [cds-runtime@3.0.2] Blind path-level logs by odata-server
    • [cds-runtime@3.0.0] Support for version 2 of the @sap/xssec package, as it is deprecated. Now, only version 3 of the package is supported.

    February 2021

    Added

    • [cds-compiler@1.50.0] Introduce annotation @cds.redirection.target. With value false, the projection isn’t considered an implicit redirection target; with value true, is considered a “preferred” redirection target.
    • [cds@4.6.3] [beta] cds build for SAP HANA now provides schema evolution support for multitenant application extensions.
    • [cds@4.6.1] [beta] cds build for SAP HANA now supports the generation of hdbmigrationtable design-time artifacts for large volume tables allowing for schema evolution capabilities. Model entities annotated with @cds.persistence.journal will be deployed as hdbmigrationtable artifacts instead of hdbtable.
    • [cds.java@1.14.0] Enhanced the index page to list both OData V4 and OData V2 endpoints, in case one or both adapters are present. As part of this change the properties to configure the index page were moved from cds.odataV4.indexPage to cds.indexPage.
    • [cds.java@1.14.0] OData V4 $expand now supports using inner $top and $skip query options.
    • [cds.java@1.14.0] Improved the changeset and error handling in the OData V2 adapter to align the behaviour more closely to OData V4.
    • [cds.java@1.14.0] The privileged user is now allowed to read the drafts of all entities and users.
    • [cds.java@1.14.0] Action and function calls returning a structured type can now be executed on remote OData services.
    • [cds4j@1.18.0] CQL.matching to build a Query-by-Example style predicate
    • [cds4j@1.18.0] Support path expressions in Update and Delete
    • [cds4j@1.18.0] Introduce a global switch to disable WITH PARAMETERS in SQL statements on SAP HANA
    • [cds4j@1.18.0] Support removing values in CDS data through CdsDataProcessor converters
    • [cds4j@1.18.0] Reflection API:
      • Support composition of Aspects
      • Support dots in entity names
    • [cds-runtime@2.9.0] Support for cds.LargeString in queries for remote services
    • [cds-runtime@2.9.0] Support for tenant-aware emit in AMQP messaging
    • [cds-runtime@2.9.0] Metadata (for example, __count or @odata.count for OData V2 and OData V4, correspondingly) of an external service result are uniformly normalized (for example, to $count) and propagated with the result by the rest-client
    • [cds-runtime@2.9.0] Improved support for managed composition of one
    • [cds-runtime@2.9.0] Support for cascade DELETE for composition of one
    • [cds-runtime@2.9.0] Smart quoting in SQL statements
    • [cds-runtime@2.9.0] Improved memory consumption of integrity checks
    • [cds-runtime@2.9.0] Result payload includes ETag values of composition targets
    • [cds-runtime@2.9.0] Custom metadata in OData result (alpha)
    • [cds-runtime@2.9.0] Support for canonical URL to $metadata in @odata.context of a response: use cds.env.odata.contextAbsoluteUrl = true to get a service URL (default) or cds.env.odata.contextAbsoluteUrl = 'http://example.com/yourService/' to set your own URL
    • [cds-runtime@2.8.4] Database pool teardown in case credentials becomes invalid
    • [cds-runtime@2.8.4] Idle timeout added to default database pool configuration
    • [cds-mtx@1.1.2] Multitenant applications without tenant-specific extensions now support schema evolution based on .hdbmigrationtable files.
    • [cds-mtx@1.1.2] Provisioning parameters for the container creation can now also be set through cds environment mtx.provisioning.container or environment variable CDS_MTX_PROVISIONING_CONTAINER.\ Provisioning parameters that are set in the subscription request to mtx/v1/provisioning/tenant override the values from the environment.
    • [cds-mtx@1.1.2] Dedicated hdi deployment options can now be set through environment variable HDI_DEPLOY_OPTIONS, for example, HDI_DEPLOY_OPTIONS="{\"trace\": true }". See section Deployment Options in HDI for more details.
    • [cds-mtx@1.0.28] It’s now possible to pass hdi deployment parameters undeploy and path-parameter with the model upgrade (mtx/v1/model/upgrade and mtx/v1/model/asyncUpgrade)
    • [cds-sidecar-client@1.1.13] Include original server error message in case of HTTP errors.

    Changed

    • [cds-dk@3.5.0] cds init creates projects with latest version of sqlite3 again.
    • [cds-dk@3.5.0] cds add mta now creates a mta.yaml file that correctly handles spring boot .jar and .war archives.
    • [cds-dk@3.4.2] cds init uses latest Maven Java archetype version 1.13.1 for creating Java projects.
    • [cds-dk@3.4.2] Bump version of @sap/cds to 4.5.3
    • [cds-dk@3.4.1] Bump version of @sap/cds to 4.5.2
    • [cds-dk@3.4.1] Bump version of @sap/cds-runtime to 2.8.6
    • [cds-dk@3.4.1] Bump version of @sap/cds-compiler to 1.49.2
    • [cds.java@1.14.0] The cds-maven-plugin now enforces a minimum @sap/cds-dk version of 3.0.0.
    • [cds.java@1.14.0] Service entity DraftAdministrativeData is read-only now. Direct requests are rejected (for example, /Service/DraftAdministrativeData). Read requests via navigation to this entity (for example, /Service/Entity(id)/DraftAdministrativeData) are allowed for authorized users.
    • [cds.java@1.14.0] In case property cds.security.openUnrestrictedEndpoints isn’t configured explicitly, the Spring security configuration in the runtime authenticates all endpoints in multitenant scenario. In single tenant mode, the endpoints are still authenticated according to the restrictions in the CDS model.
    • [cds.java@1.14.0] The signature of the error messages 400002, 400012, 400015, 400018, 400019, 409006 and 428002 was changed to not expose request data in error messages.
    • [cds4j@1.18.0] Elements with type UUID are not searched by default any longer
    • [cds4j@1.18.0] Improve Performance of cascading delete for acyclic delete graphs
    • [cds4j@1.18.0] Use batch delete in upserts
    • [cds4j@1.18.0] Suppress WITH PARAMETERS for simple CQL statements on SAP HANA
    • [cds-runtime@2.9.0] The default implementation of SAP Event Mesh (enterprise-messaging) is now multitenant aware. Currently only emit is implemented. The old, shared variant is available through enterprise-messaging-shared.
    • [cds-runtime@2.9.0] Skip localization on pure count queries
    • [cds-runtime@2.9.0] Managed properties of base entity are updated if any composition target is updated
    • [cds-runtime@2.9.0] Deactivate during two-month grace period via compatible feature flag cds.env.features.update_header_item = false
    • [cds-runtime@2.9.0] Default text templates for element assertions don’t contain an element name as a parameter anymore
    • [cds-runtime@2.9.0] Custom authorization header can now be set in service consumption
    • [cds-runtime@2.9.0] Managed associations-to-one aren’t expanded in the result of a POST request in case of cds.odata.flavor = v4
    • [cds-runtime@2.9.0] Deactivate during two-month grace period via compatible feature flag cds.env.features.skip_expand_assoc = false
    • [cds-runtime@2.9.0] Implicit auto exposed entities inherit authorization restrictions from parent
    • [cds-runtime@2.9.0] Modifying an entity without authorization results in HTTP code 403 instead of 404
    • [cds-runtime@2.9.0] Instance-based @restrict.where clauses are ignored during CREATE (instead of rejecting the request)
    • [cds-runtime@2.9.0] Deactivate during two-month grace period through compatible feature flag cds.env.features.skip_restrict_where = false

    Fixed

    • [cds-dk@3.5.0] cds env does not longer fail with an exception for unknown commands
    • [cds-dk@3.4.2] cds init now refers to the latest HDI deployer, which supports Node.js v14
    • [cds-dk@3.4.1] cds watch now shuts down its child process properly, so that EADDRINUSE errors in SAP Business Application Studio are gone
    • [cds-compiler@1.50.0] to.edm(x): Illegal OData identifiers, which aren’t exposed in the generated edmx schema aren’t causing errors anymore.
    • [cds-compiler@1.50.0] to.cdl: Annotations are now rendered with the new delimited Identifier syntax
    • [cds-compiler@1.50.0] to.sql/hdi:
      • Fixed a bug, which led to an exception if elements were referenced as types.
      • For the SQLite dialect, date, time, and timestamp are rendered as simple string literals instead of function calls.
      • For naming mode “plain”, date, time, and timestamps are rendered as SQL-compliant literals.
    • [cds@4.6.4] Fix call to to.hdi.migration compiler API
    • [cds@4.6.4] cds build for SAP HANA now correctly passes sql_mapping options to new hdimigration compiler API.
    • [cds@4.6.3] cds compile --to serviceinfo returns better results for Java projects
    • [cds@4.6.3] cds.connect.to('srv-missing') called twice with srv-missing not configured, would have failed with an error on the first call, but got stuck in the Promise chain for all subsequent calls.
    • [cds@4.6.3] .after handlers are called with result based on request, e.g., array for collection and object for entity, instead of always array
      • Deactivate during two-month grace period via compatible feature flag cds.env.features.arrayed_after = true
    • [cds@4.5.3] cds deploy and build now refer to the latest HDI deployer, which supports Node.js v14
    • [cds@4.5.2] cds serve --with-mocks now also works in production environment if cds.features.mocked_bindings is true. Previously, mocks were always disabled in production.
    • [cds@4.5.2] cds serve now only fires the listening event once
    • [cds@4.5.2] cds build redacts cds configuration data in log messages
    • [cds.java@1.14.0] Fixed a bug that caused null values to miss in expanded entities in OData V2 responses.
    • [cds.java@1.14.0] Fixed a bug that caused null values in remote OData V2 function parameters to be handled incorrectly.
    • [cds.java@1.14.0] Fixed a bug that caused results of remote OData V2 actions or functions calls returning a single entity response to be handled incorrectly.
    • [cds.java@1.14.0] Fixed a bug that caused the cds-maven-plugin to try to use an invalid Node.js installation.
    • [cds.java@1.14.0] Fixed a bug that caused the cds-maven-plugin to omit the execution of cds commands.
    • [cds.java@1.14.0] Fixed a bug that prevented mock user configuration in case there was an XSUAA-binding in default-env.json but XSUAA-configuration has been turned off explicitly.
    • [cds4j@1.18.0] Support handling null as a default value
    • [cds4j@1.18.0] Fix search in draft entities on SAP HANA
    • [cds4j@1.18.0] Fix return types in FLUENT style EventContext interfaces
    • [cds4j@1.18.0] Fix SQL exception on SAP HANA when using FALSE as predicate
    • [cds4j@1.18.0] Draft: Remove cascade annotations from draft entities
    • [cds-runtime@2.9.1] Namespace lookup in EDM for OData configuration
    • [cds-runtime@2.9.1] Find previous entity for inherited authorization restrictions
    • [cds-runtime@2.9.1] Use extended model in generic CRUD post-processing
    • [cds-runtime@2.9.1] Clone headers before sanitizing for logs
    • [cds-runtime@2.9.0] req.diff for deep hierarchies
    • [cds-runtime@2.9.0] DateTime conversion for INSERT statements using .columns and .values/.rows on SAP HANA
    • [cds-runtime@2.9.0] OData V4 error response target for bound actions
    • [cds-runtime@2.9.0] Requests using $search query option on draft enabled active entities
    • [cds-runtime@2.9.0] Path navigations in $filter aren’t considered as aggregated away when used in combination with $apply
    • [cds-runtime@2.9.0] Draft: Entities with expired draft can now be deleted
    • [cds-runtime@2.9.0] Edm.Time, Edm.DateTime, and Edm.DateTimeOffset serialization issues when using external OData V2 service
    • [cds-runtime@2.9.0] Primitive property access of Singletons via URL like /Singleton/name
    • [cds-runtime@2.9.0] Path navigation in $orderby expressions for draft-enabled services on SAP HANA
    • [cds-runtime@2.8.6] Handling of OData query option $skiptoken when URL is encoded (that is, %24skiptoken)
    • [cds-runtime@2.8.5] Handling of OData query option $skiptoken
    • [cds-runtime@2.8.4] Crash on bad remote service credentials
    • [cds-runtime@2.8.4] Wrong case order during query generation in service consumption
    • [cds-mtx@1.1.2] Fix job-status handling.
    • [cds-mtx@1.1.2] Persist job errors, so they can be revealed even after MTX restart.
    • [cds-odata-v2-adapter-proxy@1.5.9] Improve TypeScript typings
    • [cds-odata-v2-adapter-proxy@1.5.8] Update @sap/logging dependency
    • [cds-odata-v2-adapter-proxy@1.5.7] Restore backwards compatibility with CDS 3
    • [cds-odata-v2-adapter-proxy@1.5.6] Convert response message targets

    Removed

    • [cds-runtime@2.9.0] Redundant key generation

    January 2021

    Added

    • [cds-lsp@4.3.0] asynchronous initialization for annotation plugins
    • [cds-lsp@4.3.0] find references for annotation plugins
    • [cds-lsp@4.3.0] revalidates workspace after an initial annotation plugin installation
    • [cds-compiler@1.49.0] to.hdi/sql:
      • Updated the list of reserved keywords for SAP HANA and SQLite
      • Use “smart quoting” for naming mode “plain” - automatically quote reserved keywords
    • [cds-compiler@1.49.0] to.hdi.migration:
      • Supports various kinds of entity changes: entity addition/deletion/change (the latter including element additions/deletions/type changes).
      • Provides option to render any element type change as ALTER TABLE DROP to prevent deployment issues due to incompatible data (default for length reductions or association/composition changes).
    • [cds-compiler@1.49.0] to.cdl: Smart artifact references are now rendered explicitly via : notation
    • [cds@4.5.0] cds.server provides an option to switch off automatically generated index.html served at /: Do that in a custom server.js:
      const cds = require('@sap/cds')
      // ...
      module.exports = (o) => cds.server({ ...o, index:false })
      
    • [cds@4.5.0] The default index.html now honors the system’s setting for dark mode.
    • [cds@4.5.0] Former package @sap/cds-reflect is now embedded in @sap/cds
    • [cds.java@1.13.0] The serve configuration of application services now allows to explicitly configure which services are served by which protocol and even allows to use different service paths for different protocols. This is enabled by the new annotations @protocols and @endpoints, which adds to the already existing @path annotation. The same can now also be configured in configuration files in the cds.application.services.<key>.serve section.
    • [cds.java@1.13.0] Added a new artifact cds-feature-k8s, which implements service binding support for Kubernetes & Kyma. By default service bindings are expected as secrets under /etc/secrets/sapcp/<service name>/<service instance name>, using key-value based secrets files. Additional service bindings with arbitrary secrets paths can be specified under the cds.environment.k8s.serviceBindings property.
    • [cds.java@1.13.0] OData V2/V4 PATCH or PUT requests now put key values from the URL into the data map. This ensures that keys are immutable and makes key values available directly in POJO arguments of event handlers.
    • [cds.java@1.13.0] OData V2 now provides __deferred links for unexpanded navigation properties.
    • [cds.java@1.13.0] OData V2 now supports reading parameterized views.
    • [cds.java@1.13.0] Added the possibility to create and configure remote services. Going forward, these services are used to represent local CQN-based service clients to remote OData APIs. They can be configured by using the property cds.remote.services.
    • [cds.java@1.13.0] CQN Selects on remote OData services now support inline count.
    • [cds.java@1.13.0] Pseudo variables like $user.locale are now handled in CQN statements to remote OData services.
    • [cds.java@1.13.0] CQN statements using byId() can now be executed on remote OData services.
    • [cds.java@1.13.0] CQN statements using contains are now using substringof when executing them against remote OData V2 services.
    • [cds.java@1.13.0] CQN statements using parameters can now be executed on remote OData services.
    • [cds.java@1.13.0] CQN statements using batched updates or batched deletes can now be executed on remote OData services.
    • [cds.java@1.13.0] Batched or parameterized CQN statements that result in multiple OData requests are now executed as a $batch request on remote OData services. All those requests are combined into a single changeset to ensure atomicity.
    • [cds.java@1.13.0] Action and function calls can now be executed on remote OData services.
    • [cds.java@1.13.0] Added a first draft of an Outbox Service API.
    • [cds.java@1.13.0] Simplified the $batch access log line to omit host, port and service path, which is the same in every request of the batch.
    • [cds.java@1.13.0] Added a new API to retrieve authentication information, for example the JWT token of the current user. It can be accessed from the CdsRuntime using getProvidedAuthenticationInfo. The new API replaces the former internal AuthenticatedUserClaimProvider.
    • [cds.java@1.13.0] The cds-services-archetype now supports the creation of new CAP Java projects with OData V2 support. Add command line argument -DodataVersion=v2 to choose OData V2 support.
    • [cds.java@1.13.0] The goal addIntegrationTest of the cds-maven-plugin automatically detects the OData version of the CAP Java project and adds the corresponding integration test class.
    • [cds.java@1.13.0] The goal install-cdsdk of the cds-maven-plugin provides a new command line argument cds.install-cdsdk.force=true to force a new installation of @sap/cds-dk.
    • [cds.java@1.13.0] The goal cds of the cds-maven-plugin validates the version of the installed @sap/cds-dk against a minimum required version. If the required version isn’t fulfilled the build fails.
    • [cds4j@1.18.0] Add CDS Data Processor API (beta) to validate, convert, and generate CDS data
    • [cds4j@1.18.0] Add Indexed parameters as replacement for deprecated positional parameters
    • [cds4j@1.18.0] Add @cds.java.name annotation to define custom names for elements when generating Java interfaces
    • [cds4j@1.18.0] Add UniqueConstraintException
    • [cds4j@1.18.0] Add NotNullConstraintException
    • [cds4j@1.18.0] Reflection API: Support for Events referencing other Events, Entities, and Structured Types
    • [cds4j@1.18.0] Reflection API: Support for Aspects
    • [cds4j@1.18.0] Reflection API: Add setCqn method in the generated EventContext Interface & overload create method
    • [cds-runtime@2.8.0] Support for OData proxies (beta)
    • [cds-runtime@2.8.0] Support for OData cross-service references (beta)
    • [cds-runtime@2.8.0] Support upsert for to-one containment with foreign key in parent
    • [cds-runtime@2.8.0] Support for case-insensitive bearer prefix when forwarding token in service consumption
    • [cds-runtime@2.8.0] Support for filter on null values in service consumption
    • [cds-runtime@2.8.0] Server-side pagination for REST services
    • [cds-runtime@2.8.0] Input validation for typed parameters of actions/functions
    • [cds-runtime@2.8.0] Format assertion exception for UUIDs in MTX’s ProvisioningService.tenant (old SAP Cloud Platform subaccount IDs aren’t UUIDs)
    • [cds-runtime@2.8.0] Draft scenario all active is extended
    • [cds-runtime@2.8.0] Skip integrity checks via:
      • @assert.integrity: false on entity and service level (was only on association level)
      • cds.env.features.assert_integrity = false as global config (private cds.runtime.skipIntegrity will be removed)
    • [cds-runtime@2.8.0] Skip SAP HANA’s localization feature (WITH PARAMETERS ('LOCALE' = '<locale>')) via cds.env.features.with_parameters = false
    • [cds-runtime@2.8.0] Deprecation warning for req.run
    • [vscode-cds@3.3.0] finds references for annotations

      Changed

    • [cds-dk@3.4.0] cds init uses latest Maven Java archetype version 1.12.1 for creating Java projects.
    • [cds-dk@3.4.0] cds init allows _ in project name and leaves conversion to Maven Java archetype.
    • [cds-dk@3.4.0] cds init --add notebook and cds add notebook now use a Python venv and offer a default Jupyter Notebook viewer.
    • [cds-dk@3.4.0] Multitarget Node.js applications can now be initialized with multitenancy support by running cds init --add mta,mtx. (beta)
    • [cds-dk@3.3.5] Bump versions of @sap/cds
    • [cds-dk@3.3.4] Bump versions of @sap/cds and axios
    • [vscode-cds@3.3.0] extension is now called SAP CDS language support
    • [vscode-cds@3.3.0] uses axios@0.21.1
    • [vscode-cds@3.3.0] uses @sap/cds-lsp@4.3.0 (see corresponding changelog for details)
    • [vscode-cds@3.3.0] uses @sap/cds-compiler@1.49.0
    • [vscode-cds@3.3.0] new user options for where-used requests
      until now this functionality was enabled by default and now needs to be enabled via user options:
      • generic annotations - where a certain annotation ‘class’ or ‘namespace’ is used
      • strings literals - where same string literals are used
    • [cds-lsp@4.3.0] new user options for where-used request
      until now this functionality was enabled by default and now needs to be enabled via user options
      • generic annotations - where a certain annotation ‘class’ or ‘namespace’ is used
      • strings literals - where same string literals are used
    • [cds-lsp@4.3.0] consumes cds-compiler 1.49.0
    • [cds-lsp@4.3.0] compatibility with early versions of cds-compiler 2.x
    • [cds-lsp@4.3.0] simplified consumption of CDS textmate grammar for Jetbrain IDEs
    • [cds-compiler@1.49.0] OData/EDMX: Change the EntityType precedence of the OData term definition AppliesTo= attribute. If AppliesTo contains both EntityType and EntitySet, the annotation was assigned to the entity type. Extending an AppliesTo=[EntitySet] with EntityType would be OData compliant but incompatible for clients, which still expect the annotation at the set and don’t perform the full lookup. With this change, EntitySet and EntityType are treated individually, effectively annotating the type and (if available) the set. This fixes both extendability and client behavior.
    • [cds-compiler@1.49.0] to.hdbcds/hdi/sql: Reject using associations or compositions in query elements starting with $self or $projection.
    • [cds-compiler@1.49.0] OData: Update vocabularies ‘Common’, ‘PersonalData’, ‘UI’.
    • [cds-compiler@1.49.0] Update vocabularies ‘Aggregation’, ‘Common’
    • [cds@4.5.0] SAP Fiori preview is now disabled if NODE_ENV is production, to avoid any runtime overhead there. You can enable it with configuration cds.features.fiori_preview: true.
    • [cds@4.4.10] cds build for SAP HANA now only filters CSV files if it’s needed, for example, if they contain comment lines.
    • [cds.java@1.13.0] Entities annotated with @cds.autoexpose are now read-only, if they’re auto-exposed by the CDS compiler (@cds.autoexposed), regardless if they’re accessed directly or through a path navigation. Composition children of such entities inherit the read-only attributes of their parents now. This ensures that auto-exposed value helps (and, for example, their localized texts) are protected from write operations.
    • [cds.java@1.13.0] Composition child entities (@cds.autoexposed, but not @cds.autoexpose) are now forbidden as the root of a path, regardless if they’re also the target of the path or not. They should always be accessed through a path navigation starting from their parent entity. Draft-enabled entities continue to be an exception to this rule.
    • [cds.java@1.13.0] The DraftAdministrativeData structure is only created once for a single draft document (root draft entity with all of its composition children). Earlier a dedicated DraftAdministrativeData structure was created for each entity in the draft document. This fixes issues where the user, who changed the draft last, or the last changed timestamp weren’t consistent across the draft document.
    • [cds.java@1.13.0] Temporal timestamps from sap-valid-at, sap-valid-from, and sap-valid-to query parameters are now truncated to microseconds, as this is the general granularity of timestamps in CDS.
    • [cds.java@1.13.0] The error messages for Constraint Violation errors have been improved, by distinguishing not null constraint violations from unique constraint violations. With that the previous general error code 409001 (CONSTRAINT_VIOLATED) has been deprecated and is replaced by the more specific error codes 409003 (VALUE_REQUIRED) and 409006 (UNIQUE_CONSTRAINT_VIOLATED).
    • [cds.java@1.13.0] Renamed send methods in MessagingService to emit to avoid confusions with function names in Node.js.
    • [cds.java@1.13.0] Renamed property cds.datasource.serviceName to cds.datasource.binding (previous name is deprecated, but still available)
    • [cds.java@1.13.0] Renamed property cds.security.xsuaa.serviceName to cds.security.xsuaa.binding (previous name is deprecated, but still available)
    • [cds4j@1.18.0] Fix projection resolvement of aliased to-many associations
    • [cds4j@1.18.0] Fix SQL exception on updates having only key values as data
    • [cds4j@1.18.0] Fix NoSuchElementException when using binary elements in where condition
    • [cds-reflect@2.13.5] Sunset. Code is now in @sap/cds package.
    • [cds-runtime@2.8.0] ETag added for expanded entities
    • [cds-runtime@2.8.0] Use cds.log() throughout (incl. odata-server)
    • [cds-runtime@2.8.0] Replace text keys with default text (that is, w/o locale) before logging error
    • [cds-runtime@2.8.0] Read after write on draft activate doesn’t read deep
    • [cds-runtime@2.8.0] On http error (status >= 400) during remote service consumption: log details and throw gateway error
    • [cds-runtime@2.8.0] accept=application/json,text/plain is used as default accept header for remote service calls
    • [cds-runtime@2.8.0] Improved custom error message in case acquiring a client from the pool timed out
    • [cds-runtime@2.8.0] Metadata endpoints are protected by default if respective service is protected. Deactivate metadata endpoint protection via cds.env.odata.protectMetadata = false.
    • [cds-runtime@2.8.0] Streamlined module names used in logging

    Fixed

    • [vscode-cds@3.3.0] temporary folder for CDS Preview commands is no longer part of project to avoid files being checked in
    • [vscode-cds@3.3.0] revalidates workspace after an initial annotation plugin installation to show annotation errors w/o the need of manual code edit
    • [cds-lsp@4.3.0] dependency analysis for compilation: if a changed file has dependencies to the roots, but the root models don’t cover it, no longer it will compile multiple times
    • [cds-lsp@4.3.0] translation code action wasn’t shown in the context of annotations
    • [cds-lsp@4.3.0] code completion for annotations had a trailing @
    • [cds-lsp@4.3.0] annotation assignment spanned beyond semantical end
    • [cds-lsp@4.3.0] code formatting of brackets enclosing multiple elements in annotations had wrong indentation
    • [cds-lsp@4.3.0] indexing of on condition for elements was broken
    • [cds-lsp@4.3.0] update regex to highlight one and many keywords properly
    • [cds-compiler@1.49.0] Structured foreign key and forward association reference paths used in ON condition definitions are now translatable into the correct short form ON condition paths in Association to Join translation.
    • [cds-compiler@1.49.0] to.hdbcds: Aliased mixin-associations are now handled correctly
    • [cds-compiler@1.49.0] Using a hex literal like x'D028' (in a CSN input) could lead to an error.
    • [cds-compiler@1.49.0] for.odata:
      • Fix a bug in constraint calculation if principal has no primary keys.
      • Don’t overwrite user-defined @Core.Computed annotation.
    • [cds-compiler@1.49.0] to.hdi/sql/hdbcds: Fixed a bug during processing of skipped/otherwise not db-relevant artifacts.
    • [cds-compiler@1.49.0] to.hdbcds/hdi/sql:
      • Types aren’t rendered anymore for SAP HANA in quoted mode.
      • Aliases are now respected when resolving $self
      • Association clones are now prepended with three underscores (_) instead of two to prevent shadowing of context names or usages
    • [cds@4.5.1] Update @sap/cds-runtime dependency
    • [cds@4.5.0] cds build now correctly supports multitenant applications defining multiple database modules, for example, one database for tenant-related data and one for shared data.
    • [cds@4.5.0] cds deploy --to hana does no longer fail with an invalid service name error if ‘.’ is used in the MTA ID.
    • [cds@4.4.9] cds build for SAP HANA no longer fails sporadically with ENOENT when writing CSV files.
    • [cds@4.4.8] Add missing setter for user.locale.
    • [cds.java@1.13.0] Fixed a bug that caused OData V4 to handle results of min functions on date elements incorrectly.
    • [cds.java@1.13.0] Fixed a bug that caused properties mapped to null to miss in JSON responses to OData V4 requests using $apply
    • [cds.java@1.13.0] Fixed a bug that caused multiple OData V2 expands with common navigation properties to be handled incorrectly.
    • [cds.java@1.13.0] Fixed a bug that caused OData V2 function imports returning empty result sets to fail with an error.
    • [cds.java@1.13.0] Fixed a bug that prevented element values to be changed to null, when saving an edited draft.
    • [cds.java@1.13.0] Fixed a bug that could cause inconsistent states after a draft GC. The draft GC is now only triggered on the root entity of a draft-document, which ensures that either the whole document or nothing is garbage-collected. This aligns with the change around DraftAdministrativeData.
    • [cds.java@1.13.0] Improved the logged error message in case deletion of a draft during the draft GC failed.
    • [cds.java@1.13.0] Fixed a bug that caused frequent Missing type information warnings in the log, when accessing draft-enabled entities.
    • [cds.java@1.13.0] Fixed a bug that caused immutable fields of draft-enabled entities to be handled incorrectly when new child entities are created.
    • [cds.java@1.13.0] Fixed a bug that caused errors, when Microsoft JavaScript Dates with offsets (for example, /Date(1601359314168-0100)/) were returned from a remote OData V2 API.
    • [cds.java@1.13.0] Fixed a bug that caused incorrect result structures when a remote OData V2 API returned __deferred links.
    • [cds.java@1.13.0] Fixed a bug that caused 404 errors received from requests on remote OData collection endpoints to be silently ignored.
    • [cds.java@1.13.0] Fixed a bug that caused precision loss in floating point numbers returned from remote OData services.
    • [cds.java@1.13.0] Fixed a bug that caused the DataSource pool to be initialized multiple times in case the DataSource is configured based on service bindings.
    • [cds.java@1.13.0] Removed the misleading term “secondary” from log lines, indicating which database services have been auto-configured.
    • [cds.java@1.13.0] Fixed a bug that caused project URLs in the pom.xml to be invalid.
    • [cds.java@1.13.0] Fixed a bug that caused issues with loading EDMX files in Maven test executions on Windows.
    • [cds.java@1.12.1] Fixed a bug that caused the ETag header to miss in a OData V4 response, when the request header Prefer: return=minimal was set.
    • [cds.java@1.12.1] Fixed a bug that caused tenant-specific extensions (MTX) to be ignored in the OData V2 adapter.
    • [cds.java@1.12.1] Fixed a bug that caused the asynchronous tenant unsubscription to be incomplete, if the tenant HDI container was explicitly not deleted.
    • [cds4j@1.18.0] Deprecate positional parameters in favor of indexed and named parameters
    • [cds4j@1.18.0] Draft: Deletion isn’t cascaded anymore to the DraftAdministrativeData of a non-root draft entity, because one deep draft document shares a single DraftAdministrativeData entity now.
    • [cds4j@1.18.0] Reflection API: Refactor CdsEvent to inherit CdsStructuredType
    • [cds4j@1.18.0] Deprecate ConstraintViolationException
    • [cds4j@1.18.0] Improve performance of Deep Update: execute update statements in batches
    • [cds4j@1.18.0] Search: The SQL rendering for search on SQL backends has been changed for localized elements: besides in the user’s language texts are now additionally searched in the default language. On SAP HANA the performance of search over large data sets has been improved. This optimization is requires the association localized to the texts entity.
    • [cds-runtime@2.8.3] No pagination while reading single entity
    • [cds-runtime@2.8.3] SELECT.limit.offset.val should be a number
    • [cds-runtime@2.8.2] @mandatory annotation of typed parameters of actions/functions
    • [cds-runtime@2.8.1] Skip input validation for arrayed types as parameter of actions/functions
    • [cds-runtime@2.8.1] Log error stack when serving to REST
    • [cds-runtime@2.8.1] @assert.range doesn’t imply @mandatory
    • [cds-runtime@2.8.0] Aggregated-away properties in $select, $expand, and $filter now behave correctly
    • [cds-runtime@2.8.0] Exception when accessing texts for a renamed localized draft entity
    • [cds-runtime@2.8.0] Deep Update wrongly tried to create entries in case of nested to-one compositions
    • [cds-runtime@2.8.0] Navigation on singleton
    • [cds-runtime@2.8.0] Localized error messages if no authentication used
    • [cds-runtime@2.8.0] Fix draft with expand when ordering by draft-specific columns
    • [cds-runtime@2.8.0] Incorrect content type in batch response if no Accept header is provided
    • [cds-runtime@2.8.0] Input validation for enums using falsy values
    • [cds-runtime@2.8.0] Insert via navigation throws an error if the root of navigation doesn’t exist
    • [cds-runtime@2.8.0] Filter virtual fields from columns and expand by READ
    • [cds-runtime@2.8.0] auto-expand of generated foreign keys when functions/actions return entities
    • [cds-runtime@2.8.0] Custom headers are normalized to lower case
    • [cds-runtime@2.8.0] Post-processing of arrayed elements in Database Service
    • [cds-runtime@2.8.0] Duplicated key condition in DELETE CQN
    • [cds-runtime@2.8.0] To be checked data for DELETE integrity checks in actions was wrong
    • [cds-runtime@2.8.0] Fixed missing != comparator for query generation of remote services
    • [cds-runtime@2.8.0] CSN modification during resolve view
    • [cds-runtime@2.8.0] Clash of language-code-like namespaces (e.g. de. or fr.) with localized entities
    • [cds-runtime@2.8.0] hdb’s error event invalidates client
    • [cds-runtime@2.7.10] Downport of fix “CSN modification during resolve view”.
    • [cds-runtime@2.7.9] Don’t crash if release called without client.
    • [cds-runtime@2.6.11] Downport of fix “CSN modification during resolve view”.
    • [cds-mtx@1.0.27] Extensions via extend projection are now checked correctly by the linter.
    • [cds-mtx@1.0.27] Cross HDI container access is now supported properly. See section Deployment Options in HDI in SAP HANA Platform documentation for more details.
    • [cds-mtx@1.0.27] When usinghdb as driver for the database, the tenant updates are now logged properly
    • [cds-odata-v2-adapter-proxy@1.5.5] Align determination of locale including sub tags (for example, zh-TW)
    • [cds-odata-v2-adapter-proxy@1.5.4] Support action/function array parameter types
    • [cds-odata-v2-adapter-proxy@1.5.4] Introduce proxy option for body parser size limit
    • [cds-odata-v2-adapter-proxy@1.5.3] Improve TypeScript typings
    • [cds-odata-v2-adapter-proxy@1.5.2] Add TypeScript typings for proxy constructor
    • [cds-odata-v2-adapter-proxy@1.5.1] Normalize service root path in service root xml to include trailing slash
    • [cds-odata-v2-adapter-proxy@1.5.0] Update minor version
    • [cds-odata-v2-adapter-proxy@1.4.63] Fix that file upload error message doesn’t return with 500 status code
    • [cds-odata-v2-adapter-proxy@1.4.61] Fix accept header for binary data retrieval to include ‘application/json’
    • [cds-odata-v2-adapter-proxy@1.4.60] Respect offset for Edm.DateTimeOffset, and default to UTC offset (+0000)
    • [cds-odata-v2-adapter-proxy@1.4.60] Fix ticks and offset calculation for type DateTimeOffset to handle offset as minutes
    • [cds-odata-v2-adapter-proxy@1.4.60] Update README for custom bootstrap to give proxy() priority over cds.serve (as with cds run)
    • [cds-odata-v2-adapter-proxy@1.4.60] Make authorization header parsing more robust
    • [cds-odata-v2-adapter-proxy@1.4.60] Provide __metadata type information for function/action result
    • [cds-odata-v2-adapter-proxy@1.4.60] Data format of type cds.Time (Edm.Time) is switchable to ISO 8601 with proxy option ‘isoTime’ or entity annotation ‘@cov2ap.isoTime’
    • [cds-odata-v2-adapter-proxy@1.4.60] Data format of type cds.Date (Edm.DateTime) is switchable to ISO 8601 with proxy option ‘isoDate’ or entity annotation ‘@cov2ap.isoDate’
    • [cds-odata-v2-adapter-proxy@1.4.60] Data format of type cds.DateTime / Edm.DateTimeOffset is switchable to ISO 8601 with proxy option ‘isoDateTime’ or entity annotation ‘@cov2ap.isoDateTime’
    • [cds-odata-v2-adapter-proxy@1.4.60] Data format of type cds.Timestamp / Edm.DateTimeOffset is switchable to ISO 8601 with proxy option ‘isoTimestamp’ or entity annotation ‘@cov2ap.isoTimestamp’
    • [cds-odata-v2-adapter-proxy@1.4.60] Process DateTimeOffset always as UTC information (with ‘Z’)

    Removed

    • [cds-runtime@2.8.1] Reconnect for hdb
    • [cds-runtime@2.8.0] Usage of deprecated req.run
    • [cds-runtime@2.8.0] Support for deprecated config cds.auth.passport. Use cds.requires.auth instead.
    • [cds-runtime@2.8.0] Default $format query option in case of GET requests to remote OData services

    Changelog 2020

    Changelog 2019

    Changelog 2018

    Show/Hide Beta Features