LauraXia123 opened a new issue, #12337:
URL: https://github.com/apache/gravitino/issues/12337

   ## Description
   
   The `CreateTableDialog` in the Gravitino web UI needs two enhancements for 
ClickHouse table creation:
   
   ### 1. Support ClickHouse data-skipping index types with properties
   
   ClickHouse supports data-skipping indexes (`data_skipping_minmax`, 
`data_skipping_bloom_filter`, `data_skipping_set`) which have additional 
properties:
   
   - **Granularity** - applies to all data-skipping index types
   - **Set Max Values** - applies only to `data_skipping_set`
   
   Currently, the Indexes tab does not render these property fields. The table 
creation form should:
   
   - Show a **Granularity** column for data-skipping indexes (hidden for 
`primary_key`)
   - Show a **Set Max Values** column only for `data_skipping_set` index type
   - Populate these properties when editing an existing table
   - Include index properties in the submit payload
   
   ### 2. Engine-aware sort orders validation
   
   Sort orders are required for ClickHouse MergeTree family engines 
(`MergeTree`, `ReplacingMergeTree`, `SummingMergeTree`, etc.), but **not** 
required for other ClickHouse engine types (`Distributed`, `TinyLog`, `Log`, 
`StripeLog`).
   
   Currently, the sort orders validation does not adapt when the user switches 
the engine type. This causes:
   
   - Sort Orders tab always shows the required indicator (`*`) regardless of 
engine type
   - Form validation fails for non-MergeTree engines when sort orders are empty
   - Switching from a MergeTree engine to a non-MergeTree engine does not clear 
residual sort orders data or validation errors
   
   The expected behavior:
   
   - **MergeTree family engines**: Sort Orders tab shows `*` indicator, sort 
orders are required, nullable columns cannot be used in ORDER BY
   - **Non-MergeTree engines** (Distributed, TinyLog, Log, StripeLog): Sort 
Orders tab does not show `*` indicator, sort orders are optional
   - **Engine switch**: When switching from MergeTree to non-MergeTree, clear 
sort orders data and validation errors; when switching to MergeTree, show 
required validation if sort orders are empty
   
   ## Affected files
   
   - `web-v2/web/src/app/catalogs/rightContent/CreateTableDialog.js`
   - `web-v2/web/src/config/index.js` (already has `clickHouseMergeTreeEngines` 
and `indexesInfoMap` for `jdbc-clickhouse`)
   
   ## Implementation notes
   
   - Sort orders validation is moved from `Form.Item rules` (which can cache 
stale closure values) to `handleSubmit` where `form.getFieldValue('engine')` is 
called to read the current engine value in real-time
   - A `useEffect` on `isClickHouseMergeTreeEngine` handles real-time UI 
updates when the engine type changes
   - Data-skipping index properties (granularity, set_max_values) are 
conditionally rendered using `Form.Item shouldUpdate` and persisted in the 
index `properties` object


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to