SYMPTOM:
In Strategy 9.4.1, when running a report against Salesforce using the Strategy ODBC Driver for Salesforce, the following error appears:
out of memory
CAUSE: The root cause of this issue is due to the nature of Salesforce as a database. Salesforce does not use Standard Query Language (SQL), it uses Salesforce Object Query Language (SOQL). SOQL and Salesforce as a whole does not support many features of the SQL language Strategy uses for more complex reporting, such as temporary tables and temporary views, along with some functions of subqueries. To properly query a Salesforce database with the query generated from the Strategy Query Engine, the query is first turned into SOQL passes. These passes can be inefficient, as the SQL to SOQL conversion necessitates the simplification of the query. For instance, the call to request the data can be made separately from the call to filter on that data. This can cause the data from the entire database tables to be pulled into the database connection processes' Java Virtual Machine’s memory for local processing. This is where the out of memory error originates: the driver process itself can run out of memory when pulling large amounts of data back from the database before filtering is applied, although this does not happen in all scenarios.
ACTION:This issue can be alleviated by running the Salesforce connection in server mode. However, it is not possible to run the out-of-the-box Strategy ODBC Driver for Salesforce in server mode. Contact Strategy Technical Support for an update on this issue.
WORKAROUND: Increase the "JVM Arguments:" in the driver, as shown below.