Release Note 20141216

Table of Contents

Features & Improvements

This is a summary of the new features and improvements introduced in this release:

Console: Deletion of Saved Result Exports

We added the capability to delete a Saved Result Export that a user owns. This can be done from within the result export modal in the query editor page.

Alternatively the CLI’s ‘td result:delete’ command can be used.

Console: Deletion of Saved Result Exports

Backend: Upgraded Prestogres to v0.6

Some security concerns were identified in Prestogres v0.4. We upgraded to version 0.6.
Beside security, the following improvements/fixes are also included:

  • added support for Cursor/Fetch:
    In precedence, the results of a query had to be entirely loaded in the Gateway’s memory before being sent to the connected client. With cursor support, the client can fetch the query result in a streaming fashion and this, beside improving query response latency, also benefits the internal resource’s usage, thus overall performance.
  • query cancellation:
    In the previous version cancellation of a Presto query through Prestogres did not work. It’s not working as expected.

Backend: MySQL Output Support for UTF-8 Surrogate Pairs

Improved the MySQL Result Export to handle UTF-8 Surrogate Pairs.

SDKs: Released iOS SDK v0.1.6

  • Added support for Session tracking through Session IDs. Session info are automatically added to each event if the user calls the startSession method. The endSession method stops the automatic tracking of sessions.
  • Implemented a retrying mechanism to handle failures in uploading locally buffered events (enableRetryUploading/disableRetryUploading to enable/disable).
  • Added the capability to automatically log useful information:
    • embedding device’s model information if enabled through the enableAutoAppendModelInformation API (disableAutoAppendModelInformation to disable).
    • unique ID if enabled through the enableAutoAppendUniqueId API (disableAutoAppendUniqueId to disable).
  • Added support for iOS8.
  • Improved error checking to avoid uploading events when they are empty.

SDKs: Released Android SDK v0.1.6

  • Added support for Session tracking through Session IDs. Session info are automatically added to each event if the user calls the startSession method. The endSession method stops the automatic tracking of sessions.
  • Implemented a retrying mechanism to handle failures in uploading locally buffered events (enableRetryUploading/disableRetryUploading to enable/disable).
  • Added the capability to automatically log useful information:
    • embedding device’s model information if enabled through the enableAutoAppendModelInformation API (disableAutoAppendModelInformation to disable).
    • unique ID if enabled through the enableAutoAppendUniqueId API (disableAutoAppendUniqueId to disable).
  • Improved the APIs to:
    • allow creation of a shared TreasureData instance to be used across the various Activities the application is made out of.
    • handling any IOException in the constructor to avoid having to require the user to handle it.

Bug Fixes

These are the most important Bug Fixes made in this release:

APIs: Better Error Handling

  • [Problem]
    An attempt to retrieve a user’s API key fails with a 500 error if the user’s name is not provided.
    [Solution]
    There is no error checking when the lookup of a user fails and the user’s API key is requested.
    We added error checking and if the user cannot be found: if the user’s name is not provided a 422 error code is returned. If the user cannot be found, a 404 error code is returned instead.
  • [Problem]
    Getting the job history of a query which contains unscheduled job runs, fails.
    [Solution]
    The APIs attempts to retrieve the job’s ‘scheduled_at’ field and render it in the JSON response but for unscheduled jobs, the field is empty.
    We modified the API response to not render the ‘schedule_at’ field in the JSON response if the job run was unscheduled.

APIs: Bulk Import In An Import-Only Database

  • [Problem]
    When using the ‘td import:auto’ command to bulk import data into a database the users has import-only permissions for, the import command fails during the ‘perform’ phase.
    [Solution]
    Bulk Imports consists of the ‘perform’ phase, which gets executed as a job. When a job is executed against an import-only database, the status of the job cannot be retrieved by the user. The ‘td import:auto’ command monitors the job status to determine when the execution of the next bulk import task can begin; the command fails because it’s unable to retrieve the bulk import perform job’s status.
    We modified the API’s permissions to allow every user to retrieve job’s status for any job it created. This allows the ‘td import:auto’ command to complete successfully even when importing data into an import-only database.

Console: Database Links in the Queries Index Page

  • [Problem]
    Links to the databases each query is associated to are broken in the query index page.
    [Solution]
    The links were pointing to the reference database using the wrong ID: the query ID instead of the database ID.
    We modified the query index page template to use the database ID to create the link to the query’s reference database.

Backend: Tableau Result Export

  • [Problem]
    When the result of a job is outputted to Tableau in a Tableau Data Extract (TDE) format, if the destination Datasource does not exist, the output fails.
    [Solution]
    Tableau (server or online) responds with a ‘Not Exist’ error if the destination Datasource does not exist and will not create it.
    We improved the retrying mechanism to retry the upload of the Datasource if the destination Tableau responded with ‘Not Exist’. This allows the query result to be successfully uploaded on the 2nd attempt.
  • [Problem]
    Tableau result export of a job result fails when using HTTP (when the ssl=false is specified, ssl=true being the default).
    [Solution]
    This issue is caused by a failure when checking the connectivity with the Tableau server using HTTP. The connectivity check works when using HTTPS instead.
    We removed the connectivity check and improved the retrying mechanism as replacement since this mechanism is also required for other limitations we found.

Backend: MySQL Result Export

  • [Problem]
    MySQL result export fails when the result of a job contains NaN or Infinite or -Infinite values.
    [Solution]
    While Treasure Data job results can contain NaN or Infinite or -Infinite values as a result of query processing, MySQL can’t store these values. When those values are written, the result exports failing when writing into the MySQL destination server.
    We modified the MySQL result export to translate the NaN or Infinite or -Infinite values into NULL. This allows the result export to carry on and complete successfully even when the job result contains these values.

Last modified: Dec 21 2014 20:40:42 UTC

If this article is incorrect or outdated, or omits critical information, please let us know. For all other issues, please see our support channels.