Limitations¶
This section lists the limitations of the OData service:
Read-only access
The access to Denodo databases via this service is read-only.
Unavailable functions in the $filter system query option
The service does not support the operator has
.
The service does not support these functions:
fractionalseconds
,time
,totaloffsetminutes
,mindatetime
andmaxdatetime
isof
andcast
geo.distance
,geo.length
andgeo.intersects
Any requests containing these functions will return the error code:
501 Not Implemented
.
Unavailable operators in the $filter system query option
Unavailable literals in the $filter system query option
The service does not support the literal $it
in
expressions to refer to the current instance of the collection identified by
the resource path.
The service does not support the literal $root
in
expressions to refer to resources of the same service.
Navigation properties in the $select system query option
The service does not allow navigation properties as selection clauses.
Unavailable $search system query option
The $search
query parameter is not available.
Unavailable expand option $levels
The service does not support the $levels
expand option
that allows requesting recursive expands.
Unavailable Cross-Join queries
The service does not support the resource ~/crossjoin
to represent Cartesian products of entities.
Resolving references via the resource $entity
The service does not support the resource ~/$entity
that allows resolving entity references using the query option $id
.
Base views with white spaces in the name
Denodo OData Service cannot access entities with white spaces in the name. Virtual DataPort allows white space in the base view names but white spaces are not allowed in entity names according to the OData 4 specification.
White spaces in the URL
The service does not allow white spaces between function parameters and
before or after the equal sign (=
) that is used to specify query options.
Redundant keys for dependent entities
The service does not allow the omission of redundant keys when there are key properties determined by the parent in a relationship. You have to add all key properties in each level.
Order by with $expand system query option
The service does not support the $orderby
query option
inside $expand
system query option.
Order by using complex properties
The service does not support the order by clause using fields of
registers. Therefore, the $orderby
query option is not available for complex
properties.
Navigation using complex properties
When an end point of an association is a field of a register, Virtual DataPort does not allow to traverse the association from that endpoint.
Referencing expanded entities
The service does not support referencing a single entity
in a “many-to-one” relationship when the related data is requested using the
$expand
query option and the selected representation for the result is JSON.
Example of this limitation:
/denodo-odata.svc/movies/city?$expand=country/$ref
Note that this request will fail because JSON is the default format.
Admin user and Kerberos authentication
The service does not disable user access to the admin
user when
using Kerberos authentication.
Using a navigation property as a parameter of a function
The service allows the user to use a navigation property of an entity as a parameter of a query function if this property belongs to a child entity. But, if the navigation field traverses two or more roles, the query will not work.
For instance, a query like this will work:
/denodo-odata.svc/test/ADDRESS?$filter=toupper(city/city_name) eq 'CARACAS'
But a query like this one will fail because the field country_name
traverses two roles:
/denodo-odata.svc/test/address?$filter=toupper(city/country/country_name) eq 'SPAIN'
Limited support for lambda operators
This service only supports the any
lambda operator. This is in agreement
with the Intermediate Conformance Level for the OData 4.0 Specification, which
does not define any lambda operators to be supported.
Filtering navigational and regular fields inside a lambda filter
Using in the same any
lambda filter a navigational field and a regular (parent)
field is not allowed. For example, this request fails:
/denodo-odata.svc/test/country?$filter=city/any(f:f/city_id eq 1 or country eq 'Spain')
Aggregations over fields of associated entities
The groupby
and aggregate
transformations of the $apply
system query option
only work for fields of the entity that is being queried. Aggregating fields of associated
entities is not supported.
For instance, if there is a view called “Customer” that has an association with a view
called “Address”, when querying “Customer” it will not be possible to apply the groupby
/ aggregate
transformations on fields such as “address/city” or “address/country”
(fields “city” and “country” of the “Address” entity, towards which we can navigate
from “Customer” by means of Customer’s “address” property).
Querying elements with the character dot (.) in the name
In Denodo, the name of a view, column and database can have the character dot (.) but the OData specification does not allow this character. In this case, the service will replace .
with four underscore characters (____
). For example, to
query a view called customer.information
, send a request to:
/denodo-odata.svc/test/customer____information
The result will be:
{
"@odata.context": "http://localhost:9090/denodo-odata4-service/denodo-odata.svc/period/$metadata#customer____information/$entity",
"customer____id": 1,
"store_id": 1,
"first____name": "MARY",
"last_name": "SMITH",
"email": "MARY.SMITH@sakilacustomer.org",
"address_id": 5,
"active": true,
"create_date": "2006-02-14T21:04:36Z",
"last_update": "2006-02-15T03:57:20Z"
}
This situation applies to all kinds of elements of Virtual DataPort.