diff --git a/documentation/query/export-parquet.md b/documentation/query/export-parquet.md index e36ae00f1..989ed9bcc 100644 --- a/documentation/query/export-parquet.md +++ b/documentation/query/export-parquet.md @@ -274,7 +274,7 @@ penalty of keeping pages that barely compress. Individual columns can override the global encoding and compression settings. See [CREATE TABLE - Per-column Parquet encoding, compression, and bloom filters](/docs/query/sql/create-table/#per-column-parquet-encoding-compression-and-bloom-filters) for defining overrides at table creation, or -[ALTER TABLE ALTER COLUMN SET PARQUET](/docs/query/sql/alter-table-alter-column-parquet-encoding/) +[ALTER TABLE ALTER COLUMN SET PARQUET](/docs/query/sql/alter-table-alter-column-set-parquet/) for modifying existing tables. ## Bloom Filters @@ -286,7 +286,7 @@ alongside min/max statistics. Bloom filters can be enabled per-column via the `BLOOM_FILTER` keyword in [`CREATE TABLE`](/docs/query/sql/create-table/#bloom-filters) or -[`ALTER TABLE`](/docs/query/sql/alter-table-alter-column-parquet-encoding/#bloom-filter), +[`ALTER TABLE`](/docs/query/sql/alter-table-alter-column-set-parquet/#bloom-filter), or per-export via `bloom_filter_columns` in [`CONVERT PARTITION`](#bloom-filters-for-in-place-conversion), [`COPY TO`](/docs/query/sql/copy/), and the diff --git a/documentation/query/sql/alter-table-alter-column-parquet-encoding.md b/documentation/query/sql/alter-table-alter-column-set-parquet.md similarity index 59% rename from documentation/query/sql/alter-table-alter-column-parquet-encoding.md rename to documentation/query/sql/alter-table-alter-column-set-parquet.md index c7a11ec3f..de610b94d 100644 --- a/documentation/query/sql/alter-table-alter-column-parquet-encoding.md +++ b/documentation/query/sql/alter-table-alter-column-set-parquet.md @@ -1,21 +1,40 @@ --- -title: ALTER TABLE ALTER COLUMN SET PARQUET -sidebar_label: PARQUET ENCODING/COMPRESSION +title: "ALTER TABLE ALTER COLUMN SET PARQUET: encoding, compression, and bloom filter options" +sidebar_label: SET PARQUET description: ALTER TABLE ALTER COLUMN SET PARQUET SQL keyword reference documentation. --- -Sets or removes per-column Parquet encoding, compression, and -bloom filter configuration on -existing tables. These settings only affect +Sets or removes per-column Parquet encoding, compression, and bloom filter +configuration on existing tables. Encoding and compression control how column +data is stored in Parquet files, affecting file size and read performance. +Bloom filters allow QuestDB to skip row groups that do not contain matching +values, significantly speeding up equality and `IN` queries on large Parquet +partitions. + +These settings only affect [Parquet partitions](/docs/query/export-parquet/#in-place-conversion) and are ignored for native partitions. -## SET +## Syntax + +```questdb-sql +ALTER TABLE tableName ALTER COLUMN columnName + SET PARQUET ( encoding [, compression [( level )] ] [, BLOOM_FILTER] ); +``` -Override the default Parquet encoding, compression, bloom filter, or any -combination for a column. The syntax is -`SET PARQUET(encoding [, compression[(level)]] [, BLOOM_FILTER])`. Use -`default` for the encoding when specifying compression only. +Where `encoding` is `default` or a +[supported encoding](#supported-encodings-and-codecs), and `compression` is a +[supported codec](#supported-encodings-and-codecs) with an optional `level`. + +## Supported encodings and codecs + +See the [CREATE TABLE](/docs/query/sql/create-table/#supported-encodings) +reference for the full list of supported encodings, compression codecs, and +their valid column types. + +## Examples + +Use `default` for the encoding when specifying compression only. ```questdb-sql title="Set encoding only" ALTER TABLE trades ALTER COLUMN price SET PARQUET(rle_dictionary); @@ -29,7 +48,7 @@ ALTER TABLE trades ALTER COLUMN price SET PARQUET(default, zstd(3)); ALTER TABLE trades ALTER COLUMN price SET PARQUET(rle_dictionary, zstd(3)); ``` -Reset per-column overrides back to the server defaults. +Reset per-column overrides back to the server defaults: ```questdb-sql title="Reset to defaults" ALTER TABLE trades ALTER COLUMN price SET PARQUET(default); @@ -37,9 +56,8 @@ ALTER TABLE trades ALTER COLUMN price SET PARQUET(default); ### Bloom filter -The optional `BLOOM_FILTER` keyword enables bloom filter generation for the -column when partitions are converted to Parquet. It can be combined with -encoding and compression, and always appears as the last argument. +The optional `BLOOM_FILTER` keyword can be combined with encoding and +compression, and always appears as the last argument. ```questdb-sql title="Enable bloom filter with default encoding" ALTER TABLE trades ALTER COLUMN symbol SET PARQUET(default, BLOOM_FILTER); @@ -59,9 +77,3 @@ ALTER TABLE trades ALTER COLUMN symbol SET PARQUET(rle_dictionary); The bloom filter false positive probability (FPP) is a global setting and cannot be configured per column. See the [Configuration reference](/docs/configuration/overview/) for details. - -## Supported encodings and codecs - -See the [CREATE TABLE](/docs/query/sql/create-table/#supported-encodings) -reference for the full list of supported encodings, compression codecs, and -their valid column types. diff --git a/documentation/query/sql/create-table.md b/documentation/query/sql/create-table.md index b9ccb9813..45542f777 100644 --- a/documentation/query/sql/create-table.md +++ b/documentation/query/sql/create-table.md @@ -513,7 +513,7 @@ For more details on Parquet compression, see the [Apache Parquet compression documentation](https://parquet.apache.org/docs/file-format/data-pages/compression/). To modify encoding or compression on existing tables, see -[ALTER TABLE ALTER COLUMN SET PARQUET](/docs/query/sql/alter-table-alter-column-parquet-encoding/). +[ALTER TABLE ALTER COLUMN SET PARQUET](/docs/query/sql/alter-table-alter-column-set-parquet/). #### Bloom filters diff --git a/documentation/sidebars.js b/documentation/sidebars.js index 943b2489e..d3fd664eb 100644 --- a/documentation/sidebars.js +++ b/documentation/sidebars.js @@ -256,26 +256,6 @@ module.exports = { type: "category", label: "ALTER", items: [ - { - type: "category", - label: "ALTER COLUMN (TABLE)", - items: [ - "query/sql/alter-table-alter-column-add-index", - "query/sql/alter-table-alter-column-cache", - "query/sql/alter-table-change-column-type", - "query/sql/alter-table-alter-column-drop-index", - "query/sql/alter-table-alter-column-parquet-encoding", - "query/sql/alter-table-change-symbol-capacity", - ], - }, - { - type: "category", - label: "ALTER COLUMN (MAT VIEW)", - items: [ - "query/sql/alter-mat-view-alter-column-add-index", - "query/sql/alter-mat-view-alter-column-drop-index", - ], - }, { id: "query/sql/acl/alter-service-account", type: "doc", @@ -285,6 +265,18 @@ module.exports = { label: "ALTER TABLE", items: [ "query/sql/alter-table-add-column", + { + type: "category", + label: "ALTER COLUMN", + items: [ + "query/sql/alter-table-alter-column-add-index", + "query/sql/alter-table-alter-column-cache", + "query/sql/alter-table-change-column-type", + "query/sql/alter-table-alter-column-drop-index", + "query/sql/alter-table-alter-column-set-parquet", + "query/sql/alter-table-change-symbol-capacity", + ], + }, "query/sql/alter-table-attach-partition", "query/sql/alter-table-change-column-type", "query/sql/alter-table-enable-deduplication", @@ -305,6 +297,14 @@ module.exports = { type: "category", label: "ALTER MATERIALIZED VIEW", items: [ + { + type: "category", + label: "ALTER COLUMN", + items: [ + "query/sql/alter-mat-view-alter-column-add-index", + "query/sql/alter-mat-view-alter-column-drop-index", + ], + }, "query/sql/alter-mat-view-resume-wal", "query/sql/alter-mat-view-set-refresh", "query/sql/alter-mat-view-set-refresh-limit",