From 25dabdbd43f8612954986c80044d0bb74a4531b0 Mon Sep 17 00:00:00 2001 From: Stefan Steiner Date: Mon, 8 Sep 2025 10:13:28 -0700 Subject: [PATCH 1/7] Add placeholder for upcoming release --- website/docs/releases.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/docs/releases.md b/website/docs/releases.md index 91e8bdf..3fa04b7 100644 --- a/website/docs/releases.md +++ b/website/docs/releases.md @@ -24,6 +24,8 @@ In case you are wondering why all our releases start with `0.0`, read [this FAQ ::: +### Upcoming Release + ### 0.0.23135 [August 28 2025] * This release adds three new regular expression functions: * `regexp_substr` to extract substrings From 5b6d776412b6060888464ef2c9a560f2ea04db69 Mon Sep 17 00:00:00 2001 From: Florian Scheibner Date: Tue, 23 Sep 2025 15:34:10 +0200 Subject: [PATCH 2/7] @W-19712857: Document new default database version 2 (#168) --- website/docs/hyper-api/hyper_process.md | 2 +- website/docs/releases.md | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/website/docs/hyper-api/hyper_process.md b/website/docs/hyper-api/hyper_process.md index 1f67ee6..b293bf8 100644 --- a/website/docs/hyper-api/hyper_process.md +++ b/website/docs/hyper-api/hyper_process.md @@ -174,7 +174,7 @@ create new database files. Every version builds on the improvements of the previous version(s) and adds some new functionality, like new data types. -Default value: `0` +Default value: `2` Accepted values: `0`, `1` (writing this version is deprecated in favor of version 2 and will be removed in a future Hyper API release), `2`, `3`, and `4`. diff --git a/website/docs/releases.md b/website/docs/releases.md index 3fa04b7..477c0f6 100644 --- a/website/docs/releases.md +++ b/website/docs/releases.md @@ -25,6 +25,9 @@ In case you are wondering why all our releases start with `0.0`, read [this FAQ ::: ### Upcoming Release +* The default_database_version is upgraded to version 2 + * This version better supports UPDATE and DELETE on extracts + * All supported Tableau versions can read these files ### 0.0.23135 [August 28 2025] * This release adds three new regular expression functions: From 4e2e394668ace5df7f8e16ee95e21b4d2e03fe5e Mon Sep 17 00:00:00 2001 From: Florian Scheibner Date: Wed, 8 Oct 2025 12:49:38 +0200 Subject: [PATCH 3/7] Update releases with OpenSSL upgrade (#169) --- website/docs/releases.md | 1 + 1 file changed, 1 insertion(+) diff --git a/website/docs/releases.md b/website/docs/releases.md index 477c0f6..cf4df13 100644 --- a/website/docs/releases.md +++ b/website/docs/releases.md @@ -28,6 +28,7 @@ In case you are wondering why all our releases start with `0.0`, read [this FAQ * The default_database_version is upgraded to version 2 * This version better supports UPDATE and DELETE on extracts * All supported Tableau versions can read these files +* Updated OpenSSL version from 3.4.1 to 3.4.3 ### 0.0.23135 [August 28 2025] * This release adds three new regular expression functions: From dcae8520e89b5e29aaf5c1731d1978e573d6ebd8 Mon Sep 17 00:00:00 2001 From: "Stefan R. Steiner" Date: Mon, 13 Oct 2025 17:36:45 -0700 Subject: [PATCH 4/7] Document simpler method to update the file version Text provided by Chris Lambacher. --- website/docs/guides/hyper_file/optimize.md | 44 ++++++++++++++++++---- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/website/docs/guides/hyper_file/optimize.md b/website/docs/guides/hyper_file/optimize.md index 0931b12..78b186d 100644 --- a/website/docs/guides/hyper_file/optimize.md +++ b/website/docs/guides/hyper_file/optimize.md @@ -17,13 +17,43 @@ To use a specific database file format version, you'll need to use the `default_ Using the latest available database file format version should lessen the need to manually defragment or otherwise optimize your file for size or performance. However, for extremely fragmented files you might still benefit from manually optimizing your file. -## Rewrite your Hyper file in an optimized format {#rewrite-your-hyper-file-in-an-optimized-format} - -If you have a Hyper file that has become fragmented or is still using an older file version, one simple solution is to create a new file and copy all the data into it. -There is a [script that does just that](https://github.com/tableau/hyper-api-samples/tree/main/Community-Supported/convert-hyper-file) available on Github. - -The Python script uses the Hyper API to copy all the schemas and tables in an existing `.hyper` file and writes them into a new file in a continuous sequence, eliminating any fragmentation that might have occurred. -By creating the new `.hyper` file with the intended new file format version, you can upgrade / downgrade between the various Hyper file versions. +## Rewrite your Hyper file in an optimized format + +If you have a Hyper file that has become fragmented or is still using an older file version where you want to take advantage of new version features, you can +update your existing Hyper databases by checking the version and updating the version prior to performing other operations on them. For instance the Python script +below does this while maintaining a backup of the old Hyper file. + +```python +import os +from tableauhyperapi import HyperProcess, Connection, Telemetry, CreateMode + +TARGET_DATABASE_VERSION = "2" + +with HyperProcess(Telemetry.SEND_USAGE_DATA_TO_TABLEAU, + parameters = {"default_database_version": TARGET_DATABASE_VERSION}) as hyper: + should_update_version = False + with Connection(hyper.endpoint, 'existing.hyper', CreateMode.CREATE_IF_NOT_EXISTS) as connection: + # check the current version of the extract + + version = connection.execute_scalar_query("SELECT database_version from pg_catalog.hyper_database") + if version < TARGET_DATABASE_VERSION: + print(f'found version {version}, upgrading to version {TARGET_DATABASE_VERSION}') + should_update_version = True + + if should_update_version: + with Connection(hyper.endpoint) as connection: + connection.execute_command(f""" + CREATE DATABASE "updatedversion.hyper" WITH VERSION {TARGET_DATABASE_VERSION} FROM "existing.hyper" + """) + # make a backup of the existing hyper file - will overwrite any existing file + os.replace("existing.hyper", "existing.bak.hyper") + + # rename the new file to match old database name + os.replace("updatedversion.hyper", "existing.hyper") + with Connection(hyper.endpoint, 'existing.hyper', CreateMode.CREATE_IF_NOT_EXISTS) as connection: + # perform normal operations on connection + ... +``` ## Guidelines for avoid fragmentation From bf2770e92c7b9c3f8dca3e5ce818ae57c705e25b Mon Sep 17 00:00:00 2001 From: "Stefan R. Steiner" Date: Tue, 14 Oct 2025 10:33:15 -0700 Subject: [PATCH 5/7] Update for Oct 16th 2025 0.0.23509 release --- website/docs/releases.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/releases.md b/website/docs/releases.md index cf4df13..8340a1d 100644 --- a/website/docs/releases.md +++ b/website/docs/releases.md @@ -24,7 +24,7 @@ In case you are wondering why all our releases start with `0.0`, read [this FAQ ::: -### Upcoming Release +### 0.0.23509 [October 16 2025] * The default_database_version is upgraded to version 2 * This version better supports UPDATE and DELETE on extracts * All supported Tableau versions can read these files From 7dee0d8726e78b725899a71686839a43ef198af7 Mon Sep 17 00:00:00 2001 From: "Stefan R. Steiner" Date: Tue, 14 Oct 2025 10:47:56 -0700 Subject: [PATCH 6/7] Update config.ts --- website/src/config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/src/config.ts b/website/src/config.ts index 86b2a3e..1ecc24f 100644 --- a/website/src/config.ts +++ b/website/src/config.ts @@ -1,4 +1,4 @@ -const version_long = '0.0.23135.r60daa2a5'; +const version_long = '0.0.23509.ra90f6b7b'; const version_short = version_long.substr(0, version_long.lastIndexOf('.')); const downloadBaseUrl = 'https://downloads.tableau.com/tssoftware/'; From ffa8e48b289240cd9c30d01cbaf9192e035fd089 Mon Sep 17 00:00:00 2001 From: Stefan Steiner Date: Wed, 15 Oct 2025 14:43:33 -0700 Subject: [PATCH 7/7] Switched to 0.0.23576.r0633e4a4 build --- website/docs/guides/hyper_file/optimize.md | 2 +- website/docs/releases.md | 2 +- website/src/config.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/website/docs/guides/hyper_file/optimize.md b/website/docs/guides/hyper_file/optimize.md index 78b186d..e65403b 100644 --- a/website/docs/guides/hyper_file/optimize.md +++ b/website/docs/guides/hyper_file/optimize.md @@ -55,7 +55,7 @@ with HyperProcess(Telemetry.SEND_USAGE_DATA_TO_TABLEAU, ... ``` -## Guidelines for avoid fragmentation +## Guidelines for avoiding fragmentation The level of file compression in a `.hyper` file depends both on the characteristics of the contained data but also on the insertion/deletion patterns that you use. If you expect to repeatedly delete, insert, or update rows of data, there are patterns that are more likely to achieve optimal file compression, and others that are more likely to result in file fragmentation. diff --git a/website/docs/releases.md b/website/docs/releases.md index 8340a1d..f2edfda 100644 --- a/website/docs/releases.md +++ b/website/docs/releases.md @@ -24,7 +24,7 @@ In case you are wondering why all our releases start with `0.0`, read [this FAQ ::: -### 0.0.23509 [October 16 2025] +### 0.0.23576 [October 16 2025] * The default_database_version is upgraded to version 2 * This version better supports UPDATE and DELETE on extracts * All supported Tableau versions can read these files diff --git a/website/src/config.ts b/website/src/config.ts index 1ecc24f..54deba4 100644 --- a/website/src/config.ts +++ b/website/src/config.ts @@ -1,4 +1,4 @@ -const version_long = '0.0.23509.ra90f6b7b'; +const version_long = '0.0.23576.r0633e4a4'; const version_short = version_long.substr(0, version_long.lastIndexOf('.')); const downloadBaseUrl = 'https://downloads.tableau.com/tssoftware/';