Skip to content

Commit

Permalink
Hyper API January 2025 Release (#141)
Browse files Browse the repository at this point in the history
Adapt release notes and version config.

---------

Co-authored-by: Dimitri Vorona <[email protected]>
Co-authored-by: Maximilian Osenberg <[email protected]>
Co-authored-by: Dimitri Vorona <[email protected]>
Co-authored-by: littlegrasscao <[email protected]>
Co-authored-by: Adrian Vogelsgesang <[email protected]>
  • Loading branch information
6 people authored Jan 17, 2025
1 parent a9ddb41 commit 5ccd7e2
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 2 deletions.
7 changes: 7 additions & 0 deletions website/docs/releases.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,13 @@ In case you are wondering why all our releases start with `0.0`, read [this FAQ

:::

### 0.0.21200 [Jan 17 2025]

* Support for Microsoft Azure Blob Storage using [`azure_location`](./sql/external/location.md#microsoft-azure-blob-storage) was added.
* Documented [`starts_with`](./sql/scalar_func/string.md) and [`ends_with`](./sql/scalar_func/string.md), as well as negative field positions for [`split_part`](./sql/scalar_func/string.md).
* Fixed double free bug in Java Hyper API (reported in GitHub Issue [#133](https://github.com/tableau/hyper-db/issues/133)).
* Improved performance of distinct aggregates (e.g., `SELECT COUNT(DISTINCT a) from t`).

### 0.0.20746 [Nov 7 2024]

* Support for `array_contains`, `array_position` and `array_positions` was added
Expand Down
28 changes: 28 additions & 0 deletions website/docs/sql/external/location.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ s3_location('amazon_s3_uri'
[, access_key_id => 'text', secret_access_key => 'text' [, session_token => 'text'] ]
[, region => 'text']
)
azure_location('azure_blob_storage_uri'
[, sas_token => 'sas_token']
)
ARRAY[ <source_location> [, ...] ]
```

Expand Down Expand Up @@ -54,6 +57,31 @@ techniques such as concurrent requests, request hedging and
prefetching). For maximum performance, ensure a high network bandwidth
to Amazon S3, e.g., by running HyperAPI directly on an AWS EC2 instance.

## Microsoft Azure Blob Storage

```
SELECT * FROM external(
azure_location(
'abfss://[email protected]/products.parquet', sas_token => 'secret-sas-token'
)
)
```

To access data stored on Microsoft Azure Blob Storage, you can use the
`azure_location` syntax. Hyper supports the `DFS` and `BLOB` endpoints and
recognizes all of the following Azure URL formats:
* `abfss://[email protected]/...`
* `https://account.dfs.core.windows.net/container/...`
* `https://account.blob.core.windows.net/container/...`

Hyper also allows you to enter the non-SSL version of the URLs (`http://` and `abfs://`),
however it will always establish SSL encrypted connections.

Hyper's Azure support is highly optimized by using techniques such as concurrent
requests, request hedging and prefetching. For maximum performance, ensure that you
have a high network bandwidth to Azure Blob Storage, e.g. by running HyperAPI directly
on Microsoft Azure compute.

## Multiple files

```
Expand Down
4 changes: 3 additions & 1 deletion website/docs/sql/scalar_func/string.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ Function|Return Type|Description|Example
`concat(str "any" [, str "any" [, ...] ])`|`text`|Concatenate the text representations of all the arguments. NULL arguments are ignored, in contrast to <code>&#124;&#124;</code>.|`concat('abcde', 2, NULL, 22)``abcde222`
`decode(string text, format text)`|`bytea`|Decode binary data from textual representation in `string`. Options for `format` are same as in `encode`.|`decode('MTIzAAE=', 'base64')``\x3132330001`
`encode(data bytea, format text)`|`text`|Encode binary data into a textual representation. Supported formats are: `base64`, `hex`, `escape`. `escape` converts zero bytes and high-bit-set bytes to octal sequences (`\``<nnn>`) and doubles backslashes.|`encode('123\000\001', 'base64')``MTIzAAE=`
`ends_with(string text, suffix text)`|`boolean`|Return true if `string` ends with `suffix`.|`ends_with('alphabet', 'bet')``t`
`initcap(string)`|`text`|Convert the first letter of each word to upper case and the rest to lower case. Words are sequences of alphanumeric characters separated by non-alphanumeric characters.|`initcap('hi THOMAS')``'Hi Thomas'`
`left(str text, n int)`|`text`|Return first `<n>` characters in the string. When `<n>` is negative, return all but last <code>&#124;&#60;n&#62;&#124;</code> characters.|`left('abcde', 2)``'ab'`
`length(string)`|`int`|Number of characters in `string`|`length('jose')``4`
Expand All @@ -49,7 +50,8 @@ Function|Return Type|Description|Example
`right(str text, n int)`|`text`|Return last `<n>` characters in the string. When `<n>` is negative, return all but first <code>&#124;&#60;n&#62;&#124;</code> characters.|`right('abcde', 2)``'de'`
`rpad(string text, length int , fill text)`|`text`|Fill up the `string` to length `length` by appending the characters `fill` (a space by default). If the `string` is already longer than `length` then it is truncated.|`rpad('hi', 5, 'xy')``'hixyx'`
`rtrim(string text , characters text)`|`text`|Remove the longest string containing only characters from `characters` (a space by default) from the end of `string`.|`rtrim('testxxzx', 'xyz')``'test'`
`split_part(string text, delimiter text, field int)`|`text`|Split `string` on `delimiter` and return the given field (counting from one).|`split_part('abc~@~def~@~ghi', '~@~', 2)``'def'`
`split_part(string text, delimiter text, field int)`|`text`|Split `string` on `delimiter` and return the given field (counting from one). When `n` is negative, returns the `|n|`-th-from-last field. |`split_part('abc~@~def~@~ghi', '~@~', 2)``'def'`
`starts_with(string text, prefix text)`|`boolean`|Return true if `string` starts with `prefix`.|`starts_with('alphabet', 'alph')``t`
`strpos(string, substring)`|`int`|Location of specified substring (same as `position(substring in string)`, but note the reversed argument order).|`strpos('high', 'ig')``2`
`substr(string, from , count)`|`text`|Extract substring (same as `substring(string from from for count)`).|`substr('alphabet', 3, 2)``'ph'`
`to_hex(number int or bigint)`|`text`|Convert `number` to its equivalent hexadecimal representation.|`to_hex(2147483647)``'7fffffff'`
2 changes: 1 addition & 1 deletion website/src/config.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const version_long = '0.0.20746.reac9bd2d';
const version_long = '0.0.21200.re11c8cb9';
const version_short = version_long.substr(0, version_long.lastIndexOf('.'));

const downloadBaseUrl = 'https://downloads.tableau.com/tssoftware/';
Expand Down

0 comments on commit 5ccd7e2

Please sign in to comment.