This is an automated email from the ASF dual-hosted git repository.

yuqi4733 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git


The following commit(s) were added to refs/heads/main by this push:
     new d6cb41d1f3 [#10074] docs(catalog-jdbc-hologres): Add Hologres JDBC 
catalog documentation (#10069)
d6cb41d1f3 is described below

commit d6cb41d1f32af7dce7db224b7c3caa446d4dc848
Author: Ye Ding <[email protected]>
AuthorDate: Wed Mar 11 09:19:37 2026 +0800

    [#10074] docs(catalog-jdbc-hologres): Add Hologres JDBC catalog 
documentation (#10069)
    
    ### What changes were proposed in this pull request?
    
    Add documentation for the Hologres JDBC catalog:
    - `docs/jdbc-hologres-catalog.md`: Full documentation covering
    requirements, catalog properties, schema operations, table operations,
    column types, and table properties
    - Updated `docs/index.md`: Added Hologres catalog entry to the
    documentation index
    - Updated `docs/manage-relational-metadata-using-gravitino.md`: Added
    Hologres to the supported catalogs list
    
    ### Why are the changes needed?
    
    Users need documentation to understand how to configure and use the
    Hologres JDBC catalog.
    
    Fix: https://github.com/apache/gravitino/issues/10074
    
    ### Does this PR introduce _any_ user-facing change?
    
    Yes. Adds new user-facing documentation for the Hologres JDBC catalog.
    
    ### How was this patch tested?
    
    Documentation review. No code changes.
---
 docs/index.md                                      |   2 +
 docs/jdbc-hologres-catalog.md                      | 274 +++++++++++++++++++++
 docs/manage-relational-metadata-using-gravitino.md |  10 +-
 docs/webui.md                                      |  14 +-
 4 files changed, 297 insertions(+), 3 deletions(-)

diff --git a/docs/index.md b/docs/index.md
index d07e892512..d0c02e174a 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -79,6 +79,7 @@ Gravitino currently supports the following catalogs:
 **Relational catalogs:**
 
 * [**Doris catalog**](./jdbc-doris-catalog.md)
+* [**Hologres catalog**](./jdbc-hologres-catalog.md)
 * [**Hudi catalog**](./lakehouse-hudi-catalog.md)
 * [**Hive catalog**](./apache-hive-catalog.md)
 * [**Iceberg catalog**](./lakehouse-iceberg-catalog.md)
@@ -132,6 +133,7 @@ complete environment. To experience all the features, see
 Gravitino supports different catalogs to manage the metadata in different 
sources. Please see:
 
 * [Doris catalog](./jdbc-doris-catalog.md): a complete guide to using 
Gravitino to manage Doris data.
+* [Hologres catalog](./jdbc-hologres-catalog.md): a complete guide to using 
Gravitino to manage Hologres data.
 * [StarRocks catalog](./jdbc-starrocks-catalog.md): a complete guide to using 
Gravitino to manage StarRocks data.
 * [Fileset catalog](./fileset-catalog.md): a complete guide to using Gravitino 
to manage fileset
   using Hadoop Compatible File System (HCFS).
diff --git a/docs/jdbc-hologres-catalog.md b/docs/jdbc-hologres-catalog.md
new file mode 100644
index 0000000000..5124bd648d
--- /dev/null
+++ b/docs/jdbc-hologres-catalog.md
@@ -0,0 +1,274 @@
+---
+title: "Hologres catalog"
+slug: /jdbc-hologres-catalog
+keywords:
+- jdbc
+- Hologres
+- metadata
+license: "This software is licensed under the Apache License version 2."
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+## Introduction
+
+Apache Gravitino provides the ability to manage 
[Hologres](https://help.aliyun.com/zh/hologres) metadata.
+
+Hologres is a real-time data warehouse service provided by Alibaba Cloud, 
designed for high-concurrency and low-latency online analytical processing 
(OLAP). Hologres is fully compatible with the PostgreSQL protocol and uses the 
PostgreSQL JDBC Driver for connections.
+
+:::caution
+Gravitino saves some system information in schema and table comment, like 
`(From Gravitino, DO NOT EDIT: gravitino.v1.uid1078334182909406185)`, please 
don't change or remove this message.
+:::
+
+## Catalog
+
+### Catalog capabilities
+
+- Gravitino catalog corresponds to a Hologres database instance.
+- Supports metadata management of Hologres.
+- Supports DDL operation for Hologres schemas and tables.
+- Supports table index (PRIMARY KEY in CREATE TABLE).
+- Supports [column default 
value](./manage-relational-metadata-using-gravitino.md#table-column-default-value).
+- Supports LIST partitioning (physical and logical partition tables).
+- Supports Hologres-specific table properties via `WITH` clause (orientation, 
clustering_key, distribution_key, etc.).
+- Does not support 
[auto-increment](./manage-relational-metadata-using-gravitino.md#table-column-auto-increment).
+
+### Catalog properties
+
+You can pass to a Hologres data source any property that isn't defined by 
Gravitino by adding `gravitino.bypass.` prefix as a catalog property. For 
example, catalog property `gravitino.bypass.maxWaitMillis` will pass 
`maxWaitMillis` to the data source property.
+
+Check the relevant data source configuration in [data source 
properties](https://commons.apache.org/proper/commons-dbcp/configuration.html)
+
+If you use a JDBC catalog, you must provide `jdbc-url`, `jdbc-driver`, 
`jdbc-database`, `jdbc-user` and `jdbc-password` to catalog properties.
+Besides the [common catalog 
properties](./gravitino-server-config.md#apache-gravitino-catalog-properties-configuration),
 the Hologres catalog has the following properties:
+
+| Configuration item      | Description                                        
                                                                                
                                   | Default value | Required | Since Version   
 |
+|-------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------|----------|------------------|
+| `jdbc-url`              | JDBC URL for connecting to the database. For 
example, 
`jdbc:postgresql://hgprecn-cn-xxx.hologres.aliyuncs.com:80/my_database`         
                               | (none)        | Yes      | 1.3.0 |
+| `jdbc-driver`           | The driver of the JDBC connection. Must be 
`org.postgresql.Driver`.                                                        
                                           | (none)        | Yes      | 1.3.0 |
+| `jdbc-database`         | The database name. This is mandatory for Hologres. 
                                                                                
                                   | (none)        | Yes      | 1.3.0 |
+| `jdbc-user`             | The JDBC user name (AccessKey ID or database 
username).                                                                      
                                         | (none)        | Yes      | 1.3.0 |
+| `jdbc-password`         | The JDBC password (AccessKey Secret or database 
password).                                                                      
                                      | (none)        | Yes      | 1.3.0 |
+| `jdbc.pool.min-size`    | The minimum number of connections in the pool. `2` 
by default.                                                                     
                                   | `2`           | No       | 1.3.0 |
+| `jdbc.pool.max-size`    | The maximum number of connections in the pool. 
`10` by default.                                                                
                                       | `10`          | No       | 1.3.0 |
+
+:::caution
+Hologres uses the PostgreSQL JDBC Driver (version 42.3.2 or later 
recommended). You need to download the PostgreSQL JDBC Driver and place it in 
the `catalogs/jdbc-hologres/libs` directory under the Gravitino distribution 
(e.g., `distribution/package/catalogs/jdbc-hologres/libs` or 
`distribution/package-all/catalogs/jdbc-hologres/libs`).
+:::
+
+### Catalog operations
+
+Refer to [Manage Relational Metadata Using 
Gravitino](./manage-relational-metadata-using-gravitino.md#catalog-operations) 
for more details.
+
+## Schema
+
+### Schema capabilities
+
+- Gravitino's schema concept corresponds to the Hologres (PostgreSQL) schema.
+- Supports creating schema with comment.
+- Supports dropping schema.
+- System schemas are automatically filtered: `pg_toast`, `pg_catalog`, 
`information_schema`, `hologres`, `hg_internal`, `hg_recyclebin`, 
`hologres_object_table`, `hologres_sample`, `hologres_streaming_mv`, 
`hologres_statistic`.
+
+### Schema properties
+
+- Doesn't support any schema property settings.
+
+### Schema operations
+
+Refer to [Manage Relational Metadata Using 
Gravitino](./manage-relational-metadata-using-gravitino.md#schema-operations) 
for more details.
+
+## Table
+
+### Table capabilities
+
+- Gravitino's table concept corresponds to the Hologres table.
+- Supports DDL operation for Hologres tables.
+- Supports PRIMARY KEY index in CREATE TABLE.
+- Supports [column default 
value](./manage-relational-metadata-using-gravitino.md#table-column-default-value).
+- Supports expression columns via DEFAULT expressions (note: Gravitino maps 
these as column default values, not as true generated/computed columns in the 
Hologres sense).
+- Supports LIST partitioning (physical and logical).
+- Does not support 
[auto-increment](./manage-relational-metadata-using-gravitino.md#table-column-auto-increment).
 Creating auto-increment columns is rejected in both CREATE TABLE and ALTER 
TABLE.
+
+### Table properties
+
+Hologres-specific table properties are set via the `WITH` clause during CREATE 
TABLE and read from the `hologres.hg_table_properties` system table. The 
following user-relevant properties are supported:
+
+| Property Key                        | Description                       | 
Example Value                  |
+|-------------------------------------|-----------------------------------|--------------------------------|
+| `orientation`                       | Storage format                    | 
`column`, `row`, `row,column`  |
+| `clustering_key`                    | Clustering key columns            | 
`id:asc`                       |
+| `segment_key`                       | Event time column (segment key)   | 
`create_time`                  |
+| `bitmap_columns`                    | Bitmap index columns              | 
`status,category`              |
+| `dictionary_encoding_columns`       | Dictionary encoding columns       | 
`city,province`                |
+| `time_to_live_in_seconds`           | Data TTL setting                  | 
`2592000`                      |
+| `table_group`                       | Table group name                  | 
`my_table_group`               |
+| `storage_format`                    | Internal storage format           | 
`orc`, `sst`                   |
+| `binlog_level`                      | Binlog level                      | 
`replica`, `none`              |
+| `binlog_ttl`                        | Binlog TTL                        | 
`86400`                        |
+
+:::info
+- Modifying table properties via ALTER TABLE `SetProperty` / `RemoveProperty` 
is not yet supported by Gravitino (Hologres natively supports property 
modification via the `CALL HG_UPDATE_TABLE_PROPERTY` or rebuild commands, but 
this is not yet implemented in Gravitino).
+- The properties `distribution_key`, `is_logical_partitioned_table`, and 
`primary_key` are managed via their dedicated parameters (Distribution, 
Partitioning, Indexes) and should not be set directly in table properties.
+:::
+
+### Table column types
+
+| Gravitino Type              | Hologres Type              | Notes             
                                 |
+|-----------------------------|----------------------------|----------------------------------------------------|
+| `Boolean`                   | `bool`                     |                   
                                 |
+| `Short`                     | `int2` (SMALLINT)          |                   
                                 |
+| `Integer`                   | `int4` (INTEGER)           |                   
                                 |
+| `Long`                      | `int8` (BIGINT)            |                   
                                 |
+| `Float`                     | `float4` (REAL)            |                   
                                 |
+| `Double`                    | `float8` (DOUBLE PRECISION)|                   
                                 |
+| `Decimal(p,s)`              | `numeric(p,s)`             |                   
                                 |
+| `VarChar(n)`                | `varchar(n)`               | `varchar` without 
length maps to `String`          |
+| `FixedChar(n)`              | `bpchar(n)` (CHAR)         |                   
                                 |
+| `String`                    | `text`                     |                   
                                 |
+| `Binary`                    | `bytea`                    |                   
                                 |
+| `Date`                      | `date`                     |                   
                                 |
+| `Time`                      | `time`                     | With optional 
precision                            |
+| `Timestamp`                 | `timestamp`                | Always emitted 
without precision suffix             |
+| `Timestamp_tz`              | `timestamptz`              | Always emitted 
without precision suffix             |
+| `List(IntegerType, false)`  | `int4[]` (`_int4`)         | Array types via 
`_` prefix                          |
+| `List(LongType, false)`     | `int8[]` (`_int8`)         |                   
                                 |
+| `List(FloatType, false)`    | `float4[]` (`_float4`)     |                   
                                 |
+| `List(DoubleType, false)`   | `float8[]` (`_float8`)     |                   
                                 |
+| `List(BooleanType, false)`  | `bool[]` (`_bool`)         |                   
                                 |
+| `List(StringType, false)`   | `text[]` (`_text`)         |                   
                                 |
+
+:::info
+- Hologres does not support precision syntax for `TIMESTAMP`/`TIMESTAMPTZ` 
(e.g., `timestamptz(6)` is invalid), so the type converter always emits the 
base type without precision.
+- Array element types must be non-nullable (Hologres limitation). 
Multidimensional arrays are not supported.
+- Types like `json`, `jsonb`, `uuid`, `inet`, `money`, `roaringbitmap` are 
mapped to Gravitino **[External 
Type](./manage-relational-metadata-using-gravitino.md#external-type)** with the 
original type name preserved.
+:::
+
+### Table distribution
+
+Hologres supports HASH distribution via the `distribution_key` property in the 
`WITH` clause.
+
+<Tabs groupId='language' queryString>
+<TabItem value="json" label="Json">
+
+```json
+{
+  "distribution": {
+    "strategy": "hash",
+    "number": 0,
+    "funcArgs": [
+      {
+        "type": "field",
+        "fieldName": ["id"]
+      }
+    ]
+  }
+}
+```
+
+</TabItem>
+<TabItem value="java" label="Java">
+
+```java
+Distribution distribution = Distributions.hash(0, NamedReference.field("id"));
+```
+
+</TabItem>
+</Tabs>
+
+### Table partitioning
+
+Hologres supports LIST partitioning with two variants:
+
+- **Physical partition tables**: `PARTITION BY LIST(column)` — supports 
exactly 1 partition column.
+- **Logical partition tables** (Hologres V3.1+): `LOGICAL PARTITION BY 
LIST(col1[, col2])` — supports 1–2 partition columns. Enabled by setting 
property `is_logical_partitioned_table` to `true`.
+
+<Tabs groupId='language' queryString>
+<TabItem value="json" label="Json">
+
+```json
+{
+  "partitioning": [
+    {
+      "strategy": "list",
+      "fieldNames": [["ds"]]
+    }
+  ]
+}
+```
+
+</TabItem>
+<TabItem value="java" label="Java">
+
+```java
+Transform[] partitioning = new Transform[] {
+    Transforms.list(new String[][] {{"ds"}})
+};
+```
+
+</TabItem>
+</Tabs>
+
+:::note
+Creating partition child tables (e.g., `CREATE TABLE child PARTITION OF parent 
FOR VALUES IN ('value')`) is not yet supported through Gravitino.
+:::
+
+### Table indexes
+
+- Supports PRIMARY_KEY in CREATE TABLE.
+- Adding or deleting indexes via ALTER TABLE is not yet supported by Gravitino 
(Hologres natively supports index modification via rebuild commands, but this 
is not yet implemented in Gravitino).
+
+<Tabs groupId='language' queryString>
+<TabItem value="json" label="Json">
+
+```json
+{
+  "indexes": [
+    {
+      "indexType": "primary_key",
+      "name": "pk_id",
+      "fieldNames": [["id"]]
+    }
+  ]
+}
+```
+
+</TabItem>
+<TabItem value="java" label="Java">
+
+```java
+Index[] indexes = new Index[] {
+    Indexes.of(IndexType.PRIMARY_KEY, "pk_id", new String[][]{{"id"}}),
+};
+```
+
+</TabItem>
+</Tabs>
+
+### Table operations
+
+Refer to [Manage Relational Metadata Using 
Gravitino](./manage-relational-metadata-using-gravitino.md#table-operations) 
for more details.
+
+#### Alter table operations
+
+Gravitino supports these table alteration operations for Hologres:
+
+- `RenameTable`
+- `UpdateComment`
+- `AddColumn` (type and comment only; NOT NULL, default value, and 
auto-increment are not supported)
+- `DeleteColumn`
+- `RenameColumn`
+- `UpdateColumnComment`
+
+:::info
+The following ALTER TABLE operations are **not supported** and will throw 
`IllegalArgumentException`:
+- `UpdateColumnType`
+- `UpdateColumnDefaultValue`
+- `UpdateColumnNullability`
+- `UpdateColumnPosition`
+- `UpdateColumnAutoIncrement`
+- `AddIndex`
+- `DeleteIndex`
+- `SetProperty`
+- `RemoveProperty`
+:::
diff --git a/docs/manage-relational-metadata-using-gravitino.md 
b/docs/manage-relational-metadata-using-gravitino.md
index 3c5888197e..bc68a4db57 100644
--- a/docs/manage-relational-metadata-using-gravitino.md
+++ b/docs/manage-relational-metadata-using-gravitino.md
@@ -25,6 +25,7 @@ For more details, please refer to the related doc.
 - [**StarRocks**](./jdbc-starrocks-catalog.md)
 - [**OceanBase**](./jdbc-oceanbase-catalog.md)
 - [**ClickHouse**](./jdbc-clickhouse-catalog.md)
+- [**Hologres**](./jdbc-hologres-catalog.md)
 - [**Apache Iceberg**](./lakehouse-iceberg-catalog.md)
 - [**Apache Paimon**](./lakehouse-paimon-catalog.md)
 - [**Apache Hudi**](./lakehouse-hudi-catalog.md)
@@ -129,7 +130,8 @@ Currently, Gravitino supports the following catalog 
providers:
 | `jdbc-doris`        | [Doris catalog 
property](./jdbc-doris-catalog.md#catalog-properties)                    |
 | `jdbc-oceanbase`    | [OceanBase catalog 
property](./jdbc-oceanbase-catalog.md#catalog-properties)            |
 | `jdbc-starrocks`    | [StarRocks catalog 
property](./jdbc-starrocks-catalog.md#catalog-properties)            |
-| `jdbc-clickhouse`   | [ClickHouse catalog 
property](./jdbc-clickhouse-catalog.md#catalog-properties)          | 
+| `jdbc-clickhouse`   | [ClickHouse catalog 
property](./jdbc-clickhouse-catalog.md#catalog-properties)          |
+| `jdbc-hologres`     | [Hologres catalog 
property](./jdbc-hologres-catalog.md#catalog-properties)              |
 | `lakehouse-generic` | [Lakehouse generic catalog 
property](./lakehouse-generic-catalog.md#catalog-properties) |
 
 ### Load a catalog
@@ -516,6 +518,7 @@ Currently, Gravitino supports the following schema property:
 | `jdbc-oceanbase`    | [OceanBase schema 
property](./jdbc-oceanbase-catalog.md#schema-properties)            |
 | `jdbc-starrocks`    | [StarRocks schema 
property](./jdbc-starrocks-catalog.md#schema-properties)            |
 | `jdbc-clickhouse`   | [ClickHouse schema 
property](./jdbc-clickhouse-catalog.md#schema-properties)          |
+| `jdbc-hologres`     | [Hologres schema 
property](./jdbc-hologres-catalog.md#schema-properties)              |
 | `lakehouse-generic` | [Lakehouse generic schema 
property](./lakehouse-generic-catalog.md#schema-properties) |
 
 ### Load a schema
@@ -997,6 +1000,7 @@ The following is a table of the column default value that 
Gravitino supports for
 | `jdbc-oceanbase`     | &#10004;                |
 | `jdbc-starrocks`     | &#10004;                |
 | `jdbc-clickhouse`    | &#10004;                |
+| `jdbc-hologres`      | &#10004;                |
 | `lakehouse-generic`  | &#10008;                |
 
 #### Table column auto-increment
@@ -1015,7 +1019,8 @@ The following table shows the column auto-increment that 
Gravitino supports for
 | `jdbc-doris`        | &#10008;                                               
                          |
 | `jdbc-oceanbase`    | 
&#10004;([limitations](./jdbc-oceanbase-catalog.md#table-column-auto-increment))
 |
 | `jdbc-starrocks`    | &#10004;                                               
                          |
-| `jdbc-clickhouse`   | &#10008;                                               
                          | 
+| `jdbc-clickhouse`   | &#10008;                                               
                          |
+| `jdbc-hologres`     | &#10008;                                               
                          |
 | `lakehouse-generic` | &#10008;                                               
                          |
 
 #### Table property and type mapping
@@ -1034,6 +1039,7 @@ The following is the table property that Gravitino 
supports:
 | `jdbc-oceanbase`    | [OceanBase table 
property](./jdbc-oceanbase-catalog.md#table-properties)                         
                                                                                
                                          | [OceanBase type 
mapping](./jdbc-oceanbase-catalog.md#table-column-types)                        
                                                            |
 | `jdbc-starrocks`    | [StarRocks table 
property](./jdbc-starrocks-catalog.md#table-properties)                         
                                                                                
                                          | [StarRocks type 
mapping](./jdbc-starrocks-catalog.md#table-column-types)                        
                                                            |
 | `jdbc-clickhouse`   | [ClickHouse table 
property](./jdbc-clickhouse-catalog.md#table-properties)                        
                                                                                
                                         | [ClickHouse type 
mapping](./jdbc-clickhouse-catalog.md#table-column-types)                       
                                                           |
+| `jdbc-hologres`     | [Hologres table 
property](./jdbc-hologres-catalog.md#table-properties)                          
                                                                                
                                           | [Hologres type 
mapping](./jdbc-hologres-catalog.md#table-column-types)                         
                                                             |
 | `lakehouse-generic` | Lakehouse generic table property depends on specific 
table implementation, for Lance table, please refer to 
[doc](./lakehouse-generic-lance-table.md#table-properties), other table format, 
please refer to related docs.  | Lakehouse generic type mapping. Similar to 
table properties, for Lance table, please refer to 
[docs](./lakehouse-generic-lance-table.md#data-type-mappings) |
 
 #### Table partitioning, distribution, sort ordering and indexes
diff --git a/docs/webui.md b/docs/webui.md
index 88d6a0f498..c0960d792b 100644
--- a/docs/webui.md
+++ b/docs/webui.md
@@ -162,7 +162,7 @@ Creating a catalog requires these fields:
 1. **Catalog name**(**_required_**): the name of the catalog
 2. **Type**(**_required_**): `relational`/`fileset`/`messaging`/`model`, the 
default value is `relational`
 3. **Provider**(**_required_**):
-    1. Type `relational` - 
`hive`/`iceberg`/`mysql`/`postgresql`/`doris`/`paimon`/`hudi`/`oceanbase`
+    1. Type `relational` - 
`hive`/`iceberg`/`mysql`/`postgresql`/`doris`/`paimon`/`hudi`/`oceanbase`/`hologres`
     2. Type `fileset` has no provider
     3. Type `messaging` - `kafka`
     4. Type `model` has no provider
@@ -349,6 +349,18 @@ Creating a catalog requires these fields:
     |jdbc-password|The JDBC password                                           
                       |
 
   </TabItem>
+  <TabItem value='Hologres' label='Hologres'>
+    Follow the [jdbc-hologres-catalog](./jdbc-hologres-catalog.md) document.
+
+    |Key          |Description                                                 
                                      |
+    
|-------------|--------------------------------------------------------------------------------------------------|
+    |jdbc-driver  |e.g. `org.postgresql.Driver`                                
                                      |
+    |jdbc-url     |e.g. 
`jdbc:postgresql://hgprecn-cn-xxx.hologres.aliyuncs.com:80/my_database`         
             |
+    |jdbc-user    |The JDBC user name (AccessKey ID or database username)      
                                      |
+    |jdbc-password|The JDBC password (AccessKey Secret or database password)   
                                      |
+    |jdbc-database|e.g. `my_database`                                          
                                      |
+
+  </TabItem>
 </Tabs>
 
 ###### 2. Type `fileset`

Reply via email to