Bij het incrementeel ophalen van AccountsBulk
treedt een foutmelding op:
itgenoda061:
Filtering on these fields is not supported: Created.
Dit ophalen gebeurt met de OData URL:
wat vertaald wordt in het SQL-statement:
select t.*
from ExactOnlineREST.CRM.AccountsBulk@eol t
where (([Created] >= :w1) and ([Created] < :w2))
met de volgende bindparameterwaarden:
- w1 = 9/15/2020 2:07:49 AM (datetime)
- w2 = 9/15/2021 2:07:49 AM (datetime)
De reden van de foutmelding lijkt te zijn de “mandatory filtering” die Exact Online heeft ingevoerd. Alhoewel Created
een efficiënte manier is om het API-calls sterk te verminderen - los van een eventueel ontbrekende index op de Exact Online database - lijkt het er op dat ook hier niet meer op gefilterd kan worden.
Het is niet duidelijk of dit een design- of implementatiebug in de Exact Online implementatie van mandatory filtering is of een keuze om het gebruik van AccountsIncremental
op basis van de Sync API te verhogen.
In de Invantive SQL engine zal in ieder geval de foutmelding itgenoda061
verbijzonderd worden naar een Exact Online-specifieke code.
Daarnaast overwegen we een optimalisatie die de volgende constructie:
column >= CONSTANT and column < CONSTANT
herschrijft naar false
, zodat er helemaal geen API-aanroep gedaan wordt.
Voor het specifieke probleem hebben we nog geen idee hoe dit gerealiseerd moet worden anders dan afstappen van deze aanpak of brute force alle pagina’s in alle administraties op te halen.