Standards and specifications (reference)
Which standards and vendor specifications the driver is based on, what each of them requires, how the driver implements it, and where its limits are. You need this page if you assess whether the driver works with a service or an application, or if you verify the origin of a requirement.
Kinds of sources
None of the sources is legally binding for the operator. They differ in how much interoperability depends on them:
| Kind | Significance for the driver |
|---|---|
| Protocol standard (OASIS Standard, Standards Track RFC) | If the driver deviates, a compliant service doesn't understand it. Binding for interoperability |
| Vendor specification (ODBC from Microsoft) | ODBC applications and the Windows Driver Manager rely on it. Binding for interoperability |
| Informational RFC, IETF draft | Describes a common method without standards status; the driver follows it, a service doesn't have to |
Own extension (vocabulary Wkl.Store.V1, headers X-Wkl-…) | Design decision of this product; a third-party service doesn't know it, and the driver works without it |
Sources and their implementation
| Source | Kind | What it specifies, as far as the driver is affected | Implementation in the driver | Limits |
|---|---|---|---|---|
| ODBC Programmer's Reference, ODBC 3.x | Vendor specification | functions, handles, diagnostic records, SQLSTATE per function; the form of the connection string; IM… only for the Driver Manager | reports SQL_DRIVER_ODBC_VER 03.51 and interface conformance level 1 (SQL_ODBC_API_CONFORMANCE); functions in the Unicode form (…W), the Driver Manager translates the ANSI form; forward-only cursor; SQLSTATE 08001/28000 instead of IM002 | output parameters, multiple result sets, and descriptor fields aren't supported (see Limits) |
| ODBC Escape Sequences | Vendor specification | vendor-neutral literals, functions, joins, and procedure calls in braces | {d}, {t}, {ts}, {guid}, {escape}, {call} translated | {fn}, {oj} not translated |
| OData Version 4.01 Part 1: Protocol | OASIS Standard | requests, responses, error format, @odata.nextLink, @odata.etag/If-Match, adding/changing/deleting; version negotiation through OData-Version | sends OData-Version: 4.0 and OData-MaxVersion: 4.0; follows nextLink; PATCH/DELETE with If-Match, 412 as a write conflict | $expand, $search, $batch, delta, asynchronous requests not used |
| Part 2: URL Conventions | OASIS Standard | query options, literals, addressing by key | $select, $filter, $orderby, $top, $skip, $count; literals without type names; POST …/$query (only since 4.01) only if an address would be too long | functions in $filter other than contains, startswith, endswith |
| CSDL XML 4.01 | OASIS Standard | structure of $metadata: sets, types, facets, keys, annotations | catalog functions and type mapping from $metadata | CSDL in JSON not read |
| OData JSON Format 4.01 | OASIS Standard | representation of values and errors in JSON | reads and writes only JSON | Atom/XML not |
| OData Extension for Data Aggregation 4.0 | OASIS Committee Specification, not an OASIS Standard | $apply with filter, compute, groupby, aggregate; announcement through ApplySupported | uses $apply only when announced | COUNT(Spalte) only through the own method Wkl.Store.V1.count |
| RFC 9110 HTTP Semantics | RFC, Internet Standard | conditional requests (If-Match, 412), 401 with WWW-Authenticate, redirects (3xx) | write conflict through If-Match; challenges answered; the driver itself follows redirects, only when reading and only at the same origin | a redirect to another origin isn't followed, even if the service means it that way (intended) |
| RFC 7617 Basic | Standards Track RFC | name and password, separated by a colon, UTF-8 character set recommended | UTF-8; a name with a colon is rejected (28000) | – |
| RFC 4559 Negotiate | Informational RFC | Kerberos or NTLM over HTTP | Windows sign-in of the process with Kerberos or NTLM, only on challenge | – |
| RFC 6238 TOTP | Informational RFC | time-based one-time codes | only passes the code on; the service checks it | – |
| Idempotency-Key HTTP Header Field | IETF draft, not a standard | a key makes retrying a change harmless if the service honors it | sends it with every change | a third-party service doesn't have to know it (see Commitments per kind of service) |
| TLS through the Windows Schannel interface | Operating system | protocol versions, cipher suites, and certificate validation | leaves version and cipher suites to Windows; validates the certificate against the certificate stores | revocation lists and OCSP not queried; no pinning |
| CREDENTIALW (Credential Manager) | Vendor specification | generic credential per user, persistence | stores per service root and name, persistence „local machine“ | protection only against other Windows accounts, not against programs of the same account |
See also
- Requirements for an OData service – what a service must offer
en/wiki/data-conectivity/odata-odbc/reference/standards.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille