Test on UniversalSQL-editor
Through direct access on the UniversalSQL-editor on Invantive Cloud, the measurements were:
| Value |
Count |
| 0 |
10 |
| 1 |
84 |
| 2 |
95 |
| 3 |
117 |
| 4 |
171 |
| 5 |
241 |
using the statement:
select count(*)
from v2.invoices@tlr
where invoice_date >= trunc(sysdateutc) - VALUE
This number range seems logical.
The API-calls executed seem correct:
| Parameter |
| invoice_date_after = 02-09-2023 00:00:00 (datetime) |
| invoice_date_after = 01-09-2023 00:00:00 (datetime) |
| invoice_date_after = 31-08-2023 00:00:00 (datetime) |
| invoice_date_after = 30-08-2023 00:00:00 (datetime) |
| invoice_date_after = 29-08-2023 00:00:00 (datetime) |
| invoice_date_after = 28-08-2023 00:00:00 (datetime) |
as determined by
select distinct parameter_list
from sessionios@datadictionary
where url like '%invoices.list'
Bridge Online-driver
As a next step, the access has been tested using the Invantive Bridge Online-driver as shown in the original report, using Invantive Query Tool 22.0.
The results are intriguingly different:
| Value |
Count |
| 0 |
10 |
| 1 |
84 |
| 2 |
11 |
| 3 |
33 |
| 4 |
87 |
| 5 |
157 |
The OData4-queries were:
- PATH/Teamleader.V2.Invoices@tlr?$filter=invoice_date%20ge%202023-09-02T00:00:00Z
- PATH/Teamleader.V2.Invoices@tlr?$filter=invoice_date%20ge%202023-09-01T00:00:00Z
- PATH/Teamleader.V2.Invoices@tlr?$filter=invoice_date%20ge%202023-08-31T00:00:00Z
- PATH/Teamleader.V2.Invoices@tlr?$filter=invoice_date%20ge%202023-08-30T00:00:00Z
- PATH/Teamleader.V2.Invoices@tlr?$filter=invoice_date%20ge%202023-08-29T00:00:00Z
- PATH/Teamleader.V2.Invoices@tlr?$filter=invoice_date%20ge%202023-08-28T00:00:00Z
which by itself seem correct.
Invantive Bridge Online rewrites this into:
select t.*
from Teamleader.V2.Invoices@tlr t
where ([invoice_date] >= :w1)
with :w1 binding to values such as 28-08-2023 00:00:00 (datetime).
Bridge Online then returns the the number of rows expected from the first query:
These results are then filtered client-side where necessary, in which process more rows are removed by the Bridge Online driver.
Analysis
The rows are compared from both approaches, replacing count(*) by:
select invoice_number invoice_number
, to_char(invoice_date, 'YYYYMMDD') invoicedate
from ...
On Invantive Cloud, the invoicedate is displayed as a text like 20230829, but on Invantive Query Tool it displays as 08/29/2023 00:00:00 +00:00, which signals a difference. The original value on Query Tool is 29-8-2023 00:00:00 +00:00.
The problem seems to be that invoice_date is handled differently.
The table columns gives a hint:
Conforming to OData4-protocol, some datatypes can be altered. In this case, the date has become datetimeoffset. And even worse, some operations implemented in the Bridge Online driver seem to incorrectly handle this datatype in filtering client side. Additionally, the to_char gives an incorrect result.
For a future release, improvements will be applied.
The downloads from Bridge Online without using the Query Tool are correct.