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 6647775c43 [#10075] feat(web): Add frontend support for Hologres JDBC 
catalog (#10070)
6647775c43 is described below

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

    [#10075] feat(web): Add frontend support for Hologres JDBC catalog (#10070)
    
    ### What changes were proposed in this pull request?
    
    Add Hologres catalog support to v2 Web UIs:
    
    **Web v2 (`web-v2/`):**
    - Corresponding icon, provider config, column type mapping, and table
    property info files
    
    ### Why are the changes needed?
    
    Enables users to browse and manage Hologres catalogs through the
    Gravitino Web UI.
    
    Fix: https://github.com/apache/gravitino/issues/10075
    
    ### Does this PR introduce _any_ user-facing change?
    
    Yes. Hologres catalogs are now visible and manageable in the Gravitino
    Web UI.
    
    ### How was this patch tested?
    
    Manual UI verification.
---
 docs/manage-relational-metadata-using-gravitino.md |  6 +++
 web-v2/web/src/app/catalogs/TreeComponent.js       | 16 ++++++++
 .../catalogs/rightContent/CreateCatalogDialog.js   |  2 +
 .../entitiesContent/CatalogDetailsPage.js          |  2 +
 web-v2/web/src/components/Icons.js                 | 20 ++++++++++
 web-v2/web/src/config/catalog.js                   | 46 ++++++++++++++++++++++
 web-v2/web/src/lib/icons/svg/hologres.svg          |  1 +
 7 files changed, 93 insertions(+)

diff --git a/docs/manage-relational-metadata-using-gravitino.md 
b/docs/manage-relational-metadata-using-gravitino.md
index bc68a4db57..e62d914dac 100644
--- a/docs/manage-relational-metadata-using-gravitino.md
+++ b/docs/manage-relational-metadata-using-gravitino.md
@@ -24,6 +24,7 @@ For more details, please refer to the related doc.
 - [**Apache Doris**](./jdbc-doris-catalog.md)
 - [**StarRocks**](./jdbc-starrocks-catalog.md)
 - [**OceanBase**](./jdbc-oceanbase-catalog.md)
+- [**Hologres**](./jdbc-hologres-catalog.md)
 - [**ClickHouse**](./jdbc-clickhouse-catalog.md)
 - [**Hologres**](./jdbc-hologres-catalog.md)
 - [**Apache Iceberg**](./lakehouse-iceberg-catalog.md)
@@ -129,6 +130,7 @@ Currently, Gravitino supports the following catalog 
providers:
 | `jdbc-postgresql`   | [PostgreSQL catalog 
property](./jdbc-postgresql-catalog.md#catalog-properties)          |
 | `jdbc-doris`        | [Doris catalog 
property](./jdbc-doris-catalog.md#catalog-properties)                    |
 | `jdbc-oceanbase`    | [OceanBase catalog 
property](./jdbc-oceanbase-catalog.md#catalog-properties)            |
+| `jdbc-hologres`     | [Hologres catalog 
property](./jdbc-hologres-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-hologres`     | [Hologres catalog 
property](./jdbc-hologres-catalog.md#catalog-properties)              |
@@ -516,6 +518,7 @@ Currently, Gravitino supports the following schema property:
 | `jdbc-postgresql`   | [PostgreSQL schema 
property](./jdbc-postgresql-catalog.md#schema-properties)          |
 | `jdbc-doris`        | [Doris schema 
property](./jdbc-doris-catalog.md#schema-properties)                    |
 | `jdbc-oceanbase`    | [OceanBase schema 
property](./jdbc-oceanbase-catalog.md#schema-properties)            |
+| `jdbc-hologres`     | [Hologres schema 
property](./jdbc-hologres-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)              |
@@ -998,6 +1001,7 @@ The following is a table of the column default value that 
Gravitino supports for
 | `jdbc-postgresql`    | &#10004;                |
 | `jdbc-doris`         | &#10004;                |
 | `jdbc-oceanbase`     | &#10004;                |
+| `jdbc-hologres`      | &#10004;                |
 | `jdbc-starrocks`     | &#10004;                |
 | `jdbc-clickhouse`    | &#10004;                |
 | `jdbc-hologres`      | &#10004;                |
@@ -1018,6 +1022,7 @@ The following table shows the column auto-increment that 
Gravitino supports for
 | `jdbc-postgresql`   | &#10004;                                               
                          |
 | `jdbc-doris`        | &#10008;                                               
                          |
 | `jdbc-oceanbase`    | 
&#10004;([limitations](./jdbc-oceanbase-catalog.md#table-column-auto-increment))
 |
+| `jdbc-hologres`     | &#10008;                                               
                          |
 | `jdbc-starrocks`    | &#10004;                                               
                          |
 | `jdbc-clickhouse`   | &#10008;                                               
                          |
 | `jdbc-hologres`     | &#10008;                                               
                          |
@@ -1037,6 +1042,7 @@ The following is the table property that Gravitino 
supports:
 | `jdbc-postgresql`   | [PostgreSQL table 
property](./jdbc-postgresql-catalog.md#table-properties)                        
                                                                                
                                         | [PostgreSQL type 
mapping](./jdbc-postgresql-catalog.md#table-column-types)                       
                                                           |
 | `jdbc-doris`        | [Doris table 
property](./jdbc-doris-catalog.md#table-properties)                             
                                                                                
                                              | [Doris type 
mapping](./jdbc-doris-catalog.md#table-column-types)                            
                                                                |
 | `jdbc-oceanbase`    | [OceanBase table 
property](./jdbc-oceanbase-catalog.md#table-properties)                         
                                                                                
                                          | [OceanBase type 
mapping](./jdbc-oceanbase-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)                         
                                                             |
 | `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)                         
                                                             |
diff --git a/web-v2/web/src/app/catalogs/TreeComponent.js 
b/web-v2/web/src/app/catalogs/TreeComponent.js
index c023f5d3ef..ab7ed1e12b 100644
--- a/web-v2/web/src/app/catalogs/TreeComponent.js
+++ b/web-v2/web/src/app/catalogs/TreeComponent.js
@@ -151,6 +151,22 @@ export const TreeComponent = forwardRef(function 
TreeComponent(props, ref) {
               )}
             </span>
           )
+        case 'custom-icons-hologres':
+          return (
+            <span
+              role='img'
+              className='anticon'
+              onMouseEnter={e => onMouseEnter(e, catalog)}
+              onMouseLeave={e => onMouseLeave(e, catalog)}
+              onClick={e => handleClickIcon(e, catalog)}
+            >
+              {isHover !== key ? (
+                <Icons.hologres className='size-4'></Icons.hologres>
+              ) : (
+                <Icons.RotateCw className='h-4 w-3'></Icons.RotateCw>
+              )}
+            </span>
+          )
         case 'custom-icons-oceanbase':
           return (
             <span
diff --git a/web-v2/web/src/app/catalogs/rightContent/CreateCatalogDialog.js 
b/web-v2/web/src/app/catalogs/rightContent/CreateCatalogDialog.js
index b1dab97d56..b76b936024 100644
--- a/web-v2/web/src/app/catalogs/rightContent/CreateCatalogDialog.js
+++ b/web-v2/web/src/app/catalogs/rightContent/CreateCatalogDialog.js
@@ -343,6 +343,8 @@ export default function CreateCatalogDialog({ ...props }) {
           return <Icons.paimon className={small ? 'size-6' : 
'size-12'}></Icons.paimon>
         case 'custom-icons-hudi':
           return <Icons.hudi className={small ? 'size-6' : 
'size-12'}></Icons.hudi>
+        case 'custom-icons-hologres':
+          return <Icons.hologres className={small ? 'size-6' : 
'size-12'}></Icons.hologres>
         case 'custom-icons-oceanbase':
           return <Icons.oceanbase className={small ? 'size-6' : 
'size-12'}></Icons.oceanbase>
         case 'custom-icons-starrocks':
diff --git 
a/web-v2/web/src/app/catalogs/rightContent/entitiesContent/CatalogDetailsPage.js
 
b/web-v2/web/src/app/catalogs/rightContent/entitiesContent/CatalogDetailsPage.js
index ca1dd8d71b..4314c6e73b 100644
--- 
a/web-v2/web/src/app/catalogs/rightContent/entitiesContent/CatalogDetailsPage.js
+++ 
b/web-v2/web/src/app/catalogs/rightContent/entitiesContent/CatalogDetailsPage.js
@@ -81,6 +81,8 @@ const renderIcon = catalog => {
         return <Icons.paimon className='size-8'></Icons.paimon>
       case 'custom-icons-hudi':
         return <Icons.hudi className='size-8'></Icons.hudi>
+      case 'custom-icons-hologres':
+        return <Icons.hologres className='size-8'></Icons.hologres>
       case 'custom-icons-oceanbase':
         return <Icons.oceanbase className='size-8'></Icons.oceanbase>
       case 'custom-icons-starrocks':
diff --git a/web-v2/web/src/components/Icons.js 
b/web-v2/web/src/components/Icons.js
index e4c2c423a8..0995f2e1b0 100644
--- a/web-v2/web/src/components/Icons.js
+++ b/web-v2/web/src/components/Icons.js
@@ -369,6 +369,26 @@ const Icons = {
       </g>
     </svg>
   ),
+  hologres: props => (
+    <svg
+      t='1770608544870'
+      className='icon'
+      viewBox='0 0 1024 1024'
+      version='1.1'
+      xmlns='http://www.w3.org/2000/svg'
+      p-id='1571'
+      xmlnsXlink='http://www.w3.org/1999/xlink'
+      width='200'
+      height='200'
+      {...props}
+    >
+      <path
+        d='M768.384 742.5536l10.9056 1.8176c81.8176 10.9056 112.7168 29.0816 
125.44 41.8048 7.2704 7.296 7.2704 12.7488 7.2704 16.384 0 23.6288-32.7168 
41.8048-94.5408 54.528h-9.088c-61.824 10.9312-152.7296 16.384-285.44 
18.176v-143.616h19.968c94.5664 0 167.296 3.6352 225.4848 10.9056z m-505.472 
0v125.44h-3.6352c-50.8928-9.088-116.352-25.4464-140.0064-50.8928-5.4528-5.4528-7.2704-10.9056-7.2704-14.5408
 0-3.6352 1.8176-7.2704 7.2704-12.7488l1.8176-1.792c10.9312-9.1136 
27.2896-16.384 40.01 [...]
+        fill='#FF6A00'
+        p-id='1572'
+      ></path>
+    </svg>
+  ),
   starrocks: props => (
     <svg version='1.1' width='100' height='100' viewBox='0 0 100 100' 
xmlns='http://www.w3.org/2000/svg' {...props}>
       <g id='starrocks'>
diff --git a/web-v2/web/src/config/catalog.js b/web-v2/web/src/config/catalog.js
index e70a9a8e35..14baaf8976 100644
--- a/web-v2/web/src/config/catalog.js
+++ b/web-v2/web/src/config/catalog.js
@@ -35,6 +35,8 @@ export const checkCatalogIcon = ({ type, provider }) => {
           return 'custom-icons-paimon'
         case 'lakehouse-hudi':
           return 'custom-icons-hudi'
+        case 'jdbc-hologres':
+          return 'custom-icons-hologres'
         case 'jdbc-oceanbase':
           return 'custom-icons-oceanbase'
         case 'jdbc-starrocks':
@@ -640,6 +642,45 @@ export const providerBase = {
       }
     ]
   },
+  'jdbc-hologres': {
+    label: 'Hologres',
+    defaultProps: [
+      {
+        label: 'JDBC Driver',
+        key: 'jdbc-driver',
+        value: 'org.postgresql.Driver',
+        required: true,
+        description: 'e.g. org.postgresql.Driver'
+      },
+      {
+        label: 'JDBC URL',
+        key: 'jdbc-url',
+        value: '',
+        required: true,
+        description: 'e.g. jdbc:postgresql://{ENDPOINT}:{PORT}/{DATABASE}'
+      },
+      {
+        label: 'JDBC User',
+        key: 'jdbc-user',
+        value: '',
+        required: true,
+        description: 'Alibaba Cloud AccessKey ID'
+      },
+      {
+        label: 'JDBC Password',
+        key: 'jdbc-password',
+        value: '',
+        required: true,
+        description: 'Alibaba Cloud AccessKey Secret'
+      },
+      {
+        label: 'JDBC Database',
+        key: 'jdbc-database',
+        value: '',
+        required: true
+      }
+    ]
+  },
   'jdbc-oceanbase': {
     label: 'OceanBase',
     defaultProps: [
@@ -750,6 +791,11 @@ export const relationalProviders = [
     value: 'jdbc-mysql',
     description: 'A fully managed database service'
   },
+  {
+    label: 'Hologres',
+    value: 'jdbc-hologres',
+    description: 'Real-time Data Warehouse'
+  },
   {
     label: 'OceanBase',
     value: 'jdbc-oceanbase',
diff --git a/web-v2/web/src/lib/icons/svg/hologres.svg 
b/web-v2/web/src/lib/icons/svg/hologres.svg
new file mode 100644
index 0000000000..8fdce95305
--- /dev/null
+++ b/web-v2/web/src/lib/icons/svg/hologres.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 
1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd";><svg 
t="1770608544870" class="icon" viewBox="0 0 1024 1024" version="1.1" 
xmlns="http://www.w3.org/2000/svg"; p-id="1571" 
xmlns:xlink="http://www.w3.org/1999/xlink"; width="200" height="200"><path 
d="M768.384 742.5536l10.9056 1.8176c81.8176 10.9056 112.7168 29.0816 125.44 
41.8048 7.2704 7.296 7.2704 12.7488 7.2704 16.384 0 23.6288-32.7168 
41.8048-94.5408 54 [...]
\ No newline at end of file

Reply via email to