Open jimmybugraiser opened 3 months ago
Can you provide an example of the unintended predicates and unexpected GraphQL response?
Hi Sean, thanks for the fast followup. Greatly appreciated. Here is the predicate (best attempt with obfuscation to match the above)
WHERE ([table0].[columnB] != @param1 AND [table0].[columnC] = @param2) AND (([table0].[columnA] < @param3) OR ([table0].[columnA] = @param4 AND [table0].[id] > @param5))
ORDER BY [table0].[columnA] DESC, [table0].[id] ASC
FOR JSON PATH, INCLUDE_NULL_VALUES
When supplying a pagination token (i.e. after: someBase64EncodedPagingToken==), it adds the predicate on columnA to assist in paging. However, this paging appears to only return values where columnA is null for ASC sort and non-null values for column A when columnA is DESC.
With no sorting applied, it returns all values (i.e. null and non-null). There are no JOINs on columnA in the GraphQL query issued.
What happened?
We've noticed a potential issue with the SQL generation within the Data API Builder, specifically when handling GraphQL queries that include pagination and sorting. The SQL output appears to introduce unintended predicates affecting the sorting column. These predicates seem to cause records with null values in the sorting column to be excluded from the results, varying with the sort order (ascending showing null values and with descending excluding null values).
Version
1.1.7
What database are you using?
Azure SQL
What hosting model are you using?
AppService
Which API approach are you accessing DAB through?
GraphQL
Relevant log output
Code of Conduct