Easysoft Blog

Tue, 12 July 2017

A workaround for: "Cursors are not supported on a table which has a clustered columnstore index"

In version 1.7.16, the Easysoft SQL Server ODBC driver changed from using a client cursor to a server cursor when an application's behaviour suggested that it only needed a subset of the data in a query result. With a client cursor, the database sends the complete result set in a single response to the driver when responding to a query. The 1.7.16+ behaviour also mimics how Microsoft's SQL Native Client behaves in this regard.

An override for this behaviour was added in version 1.8.10 because if the application actually does want the entire result set, using a server cursor has performance implications, as server cursors are slower. Another consequence of the change in version 1.7.16 is an issue that was reported to us by a customer who was using Cognos on Linux with SQL Server. When attempting to query a table with clustered columnstore indexes, the customer got the error:

"Cursors are not supported on a table which has a clustered columnstore index"

as server cursors are not supported when using this feature. The workaround was to revert to the previous behaviour for cursors by adding this line to the ODBC data source in /etc/odbc.ini:

[SQLSERVER_SAMPLE]
.
.
.
OVERRIDE=65536