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 definitionA
, 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>
- All the artifacts that have localized fields get a
- [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. TheseEntityType
s do only expose their primary keys have no accompanyingEntitySet
. The added navigation targets are exposed under their namespace or if not available under namespaceroot
.odataProxies
is only available with--format=structured
. - Option
odataXServiceRefs
renders anedm: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 tocompile()
: the function can also receive a file cache and will resolve allusing
s- New API functions
parse.cql
(prefer it to deprecatedparseToCqn
) andparse.expr
(prefer it to deprecatedparseToExpr
) - 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 modesquoted
andhdbcds
. 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 commandtoCsn
, 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 commandria
adds@cds.redirection.target: false
annotate statements for all ambiguous redirection errors.
- Added
- [cds-compiler@2.1.0] Added
deprecated
options; setting any of them disables allbeta
options. - [cds@5.0.2] Ensure correlation ID and set intermediate
cds.context
in defaultserver.js
- [cds@5.0.1]
cds.load.properties
andcds.parse.properties
to load and parse content in .properties format - [cds@5.0.1]
cds.load.csv
andcds.parse.csv
to load and parse csv content - [cds@5.0.1]
CDL
,CQL
, andCXL
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 viacds.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 theMessages
interface. You can use this method to throw aServiceException
based on the error messages collected in theMessages
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
orDELETE
are now supported in OData V4, for examplePUT /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()
withcds.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 matchNULL
- Nested functions, for example,
contains(toupper(...))
$select
not filtered for duplicates, for example,$select=ID,*
->columns: ['ID', 'ID', ...]
- Falsy key path segments in navigations, for example,
- Not supported when serving to REST:
- Deep navigations, for example,
GET /Books/1/author/books
/$count
$apply
- Deep navigations, for example,
- Use during read requests when serving to REST via
- [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
tohdb
(available withhdb^18
) via environment variableHDB_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
, andedmx-v4
have moved from@sap/cds
to@sap/cds-dk
. - [cds-dk@4.0.2]
cds init
uses latestMaven Java archetype
version1.14.3
for creating Java projects. - [cds-dk@4.0.2]
npm-shrinkwrap.json
format version 2 is now used, produced bynpm
7 - [cds-dk@4.0.2]
npm-shrinkwrap.json
now contains integrity hashes - [cds-dk@4.0.0]
cds init
uses latestMaven Java archetype
version1.14.0
for creating Java projects. - [cds-dk@4.0.0]
cds watch
has dropped its fallback support fornodemon
through theCDS_USE_NODEMON
configuration. - [cds-dk@4.0.0]
cds add hana
now setshdbtable
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 replacekind: 'type', $syntax: 'aspect'
andkind: 'entity', abstract: true
(the deprecated variants are still accepted as input). - Projections are rendered via
projection
instead ofquery.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.
- CSN Version is set to
- [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 ofFoo
probably having a different full name. - Localized convenience views are no longer generated by the core compiler but added by the
for.odata
andto.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 viato.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-levelcast
.
- An assignment
- [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 anaspect
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.
- Even with
- [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 thearray of
/many
predicates. enum
type definition as service member is rendered asedm:TypeDefinition
instead ofedm: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 CollectionsCollection(Collection(...))
are illegal.- Temporal rendering:
@cds.valid.from
is notEdm.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’.
- An
- [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
).
- Reject using associations or compositions in query elements starting with
- [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.
- Downgrade message
- [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.
- Changed type mappings for
- [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 CSNnamespace
property, simply defining such a namespace and requiring the first file.
- [cds-compiler@2.1.0] API changes:
- The API functions
compile()
andcompileSync()
return a CSN and not an XSN,compactModel()
returns the first argument. - If
options
does not provide amessages
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.
- The API functions
- [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 acds.requires.multitenancy
configuration. - [cds@5.0.0]
cds deploy --to hana
no longer adds a driver for SAP HANA topackage.json
. This can be done withcds add hana
. - [cds@5.0.0]
cds deploy --to hana
no longer adds configuration for SAP HANA topackage.json
. This can be done withcds 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 toconnection.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 theTemplate
strings ofUI.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 replaceCdsService
. The benefits of the new interface will be that it avoids name clashes withCdsService
from the Reflection API and captures the intent of the interface better. In a future releaseCdsService
might be deprecated. To avoid warnings in your code, consider renaming usages ofCdsService
toCqnService
. - [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
andgenerate
of thecds-maven-plugin
adopting the naming convention for properties and add prefixcds.<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 thecds-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 incds.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 tofalse
- [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
- Deactivate during two-month grace period via compatible feature flag
- [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 shippedpackage.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 ofjoin
s. - 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.
- Add
- 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
orhdbcds
, 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 byto.hdi.migration
andfor.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 ofCHAR
for SQL-dialects other thanhana
. The resultingCHAR
has a default length of 2,000.
- SRID of SAP HANA spatial type (
- [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 asprojection
. - [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 atask.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 returnsundefined
in concurrent cases whereconnect
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 port0
as a number - [cds@5.0.0] Race conditions in
cds.serve
andcds.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-rootyaml
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()
ofApplicationService
andRemoteService
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 goalsinstall-node
,install-cdsdk
,cds
, andnpm
at once. Now, each of these goals has it’s own skip property:cds.cds.skip
,cds.install-cdsdk.skip
,cds.install-node.skip
, andcds.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 awhere
-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 withcds.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
andDraftIsProcessedByMe
properties ofDraftAdministrativeData
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. Thecds extend
command was returning(intermediate result)
isnot 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 ofDefinition:elem
- The definition of annotations is no longer allowed in
context
s andservice
s. - 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.
- With
- [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 asoptions.collectSources
. - A
CompilationError
usually does not have the propertymodel
anymore, to avoid potential memory issues. - CSN compiler messages no longer have a
location
property. Use$location
instead.
- The deprecated XSN based transformers
- [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
→ usecds.compile
instead - [cds@5.0.3]
cds.compile.to.parsed.csn
→ usecds.parse
instead - [cds@5.0.3]
cds.compile.to.xtended.csn
→ usecds.compile
instead - [cds@5.0.3]
cds.compile.to.inferred.csn
→ usecds.compile
instead - [cds@5.0.3]
cds.compile.to.hdi
→ usecds.compile.to.hdbtable
instead - [cds@5.0.3]
cds.compile.to.hana
→ usecds.compile.to.hdbcds
instead - [cds@5.0.3]
cds.compile.to.xsuaa
→ still available in CLI thrucds compile -2 xsuaa
- [cds@5.0.3]
cds.compile.to.serviceinfo
→ still available in CLI thrucds compile -2 serviceinfo
- [cds@5.0.3]
cds.compile.to['edmx-v2']
→ still available in CLI thrucds compile -2 edmx-v2
- [cds@5.0.3]
cds.compile.to['edmx-v4']
→ still available in CLI thrucds compile -2 edmx-v4
- [cds@5.0.3]
cds.compile.to['edmx-w4']
→ still available in CLI thrucds compile -2 edmx-w4
-
[cds@5.0.3]
cds.compile.to['edmx-x4']
→ still available in CLI thrucds 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
andcds.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 valuefalse
, the projection isn’t considered an implicit redirection target; with valuetrue
, 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 ofhdbmigrationtable
design-time artifacts for large volume tables allowing for schema evolution capabilities. Model entities annotated with@cds.persistence.journal
will be deployed ashdbmigrationtable
artifacts instead ofhdbtable
. - [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
tocds.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: usecds.env.odata.contextAbsoluteUrl = true
to get a service URL (default) orcds.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 variableCDS_MTX_PROVISIONING_CONTAINER
.\ Provisioning parameters that are set in the subscription request tomtx/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
andpath-parameter
with the model upgrade (mtx/v1/model/upgrade
andmtx/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 ofsqlite3
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 latestMaven Java archetype
version1.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 of3.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 throughenterprise-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 of404
- [cds-runtime@2.9.0] Instance-based
@restrict.where
clauses are ignored duringCREATE
(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 thatEADDRINUSE
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 passessql_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 withsrv-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
- Deactivate during two-month grace period via compatible feature flag
- [cds@4.5.3]
cds deploy
andbuild
now refer to the latest HDI deployer, which supports Node.js v14 - [cds@4.5.2]
cds serve --with-mocks
now also works inproduction
environment ifcds.features.mocked_bindings
is true. Previously, mocks were always disabled inproduction
. - [cds@4.5.2]
cds serve
now only fires thelistening
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
, andEdm.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 generatedindex.html
served at/
: Do that in a customserver.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 thecds.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 thecds.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 usingsubstringof
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
usinggetProvidedAuthenticationInfo
. The new API replaces the former internalAuthenticatedUserClaimProvider
. - [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 thecds-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 thecds-maven-plugin
provides a new command line argumentcds.install-cdsdk.force=true
to force a new installation of@sap/cds-dk
. - [cds.java@1.13.0] The goal
cds
of thecds-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 & overloadcreate
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 (privatecds.runtime.skipIntegrity
will be removed)
- [cds-runtime@2.8.0] Skip SAP HANA’s localization feature (
WITH PARAMETERS ('LOCALE' = '<locale>')
) viacds.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 latestMaven Java archetype
version1.12.1
for creating Java projects. - [cds-dk@3.4.0]
cds init
allows_
in project name and leaves conversion toMaven Java archetype
. - [cds-dk@3.4.0]
cds init --add notebook
andcds 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
andaxios
- [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 definitionAppliesTo=
attribute. IfAppliesTo
contains bothEntityType
andEntitySet
, the annotation was assigned to the entity type. Extending anAppliesTo=[EntitySet]
withEntityType
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
andEntityType
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
isproduction
, to avoid any runtime overhead there. You can enable it with configurationcds.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 dedicatedDraftAdministrativeData
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
, andsap-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 codes409003
(VALUE_REQUIRED
) and409006
(UNIQUE_CONSTRAINT_VIOLATED
). - [cds.java@1.13.0] Renamed
send
methods inMessagingService
toemit
to avoid confusions with function names in Node.js. - [cds.java@1.13.0] Renamed property
cds.datasource.serviceName
tocds.datasource.binding
(previous name is deprecated, but still available) - [cds.java@1.13.0] Renamed property
cds.security.xsuaa.serviceName
tocds.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 defaultaccept
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 singleDraftAdministrativeData
entity now. - [cds4j@1.18.0] Reflection API: Refactor
CdsEvent
to inheritCdsStructuredType
- [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.
orfr.
) 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 using
hdb
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
. Usecds.requires.auth
instead. - [cds-runtime@2.8.0] Default
$format
query option in case ofGET
requests to remote OData services