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

jshao pushed a commit to branch branch-0.7
in repository https://gitbox.apache.org/repos/asf/gravitino.git


The following commit(s) were added to refs/heads/branch-0.7 by this push:
     new 6f0bd5701 [#5262] feat(oceanbase-catalog): Add doc for OceanBase JDBC 
Catalog (#5332)
6f0bd5701 is described below

commit 6f0bd57012ef56fb80e21ae57ea6ebbc3ded7769
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Tue Oct 29 14:42:48 2024 +0800

    [#5262] feat(oceanbase-catalog): Add doc for OceanBase JDBC Catalog (#5332)
    
    ### What changes were proposed in this pull request?
    
    Add doc for OceanBase JDBC Catalog.
    
    ### Why are the changes needed?
    
    Fix: #5262
    
    ### Does this PR introduce _any_ user-facing change?
    No
    
    ### How was this patch tested?
    
    Co-authored-by: yuanoOo <[email protected]>
---
 docs/jdbc-oceanbase-catalog.md | 231 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 231 insertions(+)

diff --git a/docs/jdbc-oceanbase-catalog.md b/docs/jdbc-oceanbase-catalog.md
new file mode 100644
index 000000000..0d44752a8
--- /dev/null
+++ b/docs/jdbc-oceanbase-catalog.md
@@ -0,0 +1,231 @@
+---
+title: "OceanBase catalog"
+slug: /jdbc-oceanbase-catalog
+keywords:
+- jdbc
+- OceanBase
+- 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 OceanBase metadata.
+
+:::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 the OceanBase instance.
+- Supports metadata management of OceanBase (4.x).
+- Supports DDL operation for OceanBase databases and tables.
+- Supports table index.
+- Supports [column default 
value](./manage-relational-metadata-using-gravitino.md#table-column-default-value)
 and 
[auto-increment](./manage-relational-metadata-using-gravitino.md#table-column-auto-increment).
+
+### Catalog properties
+
+You can pass to a OceanBase 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-user` and `jdbc-password` to catalog properties.
+Besides the [common catalog 
properties](./gravitino-server-config.md#gravitino-catalog-properties-configuration),
 the OceanBase 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:mysql://localhost:2881` or `jdbc:oceanbase://localhost:2881`              
| (none)        | Yes      | 0.7.0-incubating |
+| `jdbc-driver`        | The driver of the JDBC connection. For example, 
`com.mysql.jdbc.Driver` or `com.mysql.cj.jdbc.Driver` or 
`com.oceanbase.jdbc.Driver`. | (none)        | Yes      | 0.7.0-incubating |
+| `jdbc-user`          | The JDBC user name.                                   
                                                                                
| (none)        | Yes      | 0.7.0-incubating |
+| `jdbc-password`      | The JDBC password.                                    
                                                                                
| (none)        | Yes      | 0.7.0-incubating |
+| `jdbc.pool.min-size` | The minimum number of connections in the pool. `2` by 
default.                                                                        
| `2`           | No       | 0.7.0-incubating |
+| `jdbc.pool.max-size` | The maximum number of connections in the pool. `10` 
by default.                                                                     
  | `10`          | No       | 0.7.0-incubating |
+
+:::caution
+Before using the OceanBase Catalog, you must download the corresponding JDBC 
driver to the `catalogs/jdbc-oceanbase/libs` directory.
+Gravitino doesn't package the JDBC driver for OceanBase due to licensing 
issues.
+:::
+
+### 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 OceanBase database.
+- Supports creating schema, but does not support setting comment.
+- Supports dropping schema.
+- Supports cascade dropping schema.
+
+### 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 OceanBase table.
+- Supports DDL operation for OceanBase tables.
+- Supports index.
+- Supports [column default 
value](./manage-relational-metadata-using-gravitino.md#table-column-default-value)
 and 
[auto-increment](./manage-relational-metadata-using-gravitino.md#table-column-auto-increment)..
+
+#### Table column types
+
+| Gravitino Type    | OceanBase Type      |
+|-------------------|---------------------|
+| `Byte`            | `Tinyint`           |
+| `Byte(false)`     | `Tinyint Unsigned`  |
+| `Short`           | `Smallint`          |
+| `Short(false)`    | `Smallint Unsigned` |
+| `Integer`         | `Int`               |
+| `Integer(false)`  | `Int Unsigned`      |
+| `Long`            | `Bigint`            |
+| `Long(false)`     | `Bigint Unsigned`   | 
+| `Float`           | `Float`             |
+| `Double`          | `Double`            |
+| `String`          | `Text`              |
+| `Date`            | `Date`              |
+| `Time`            | `Time`              |
+| `Timestamp`       | `Timestamp`         |
+| `Decimal`         | `Decimal`           |
+| `VarChar`         | `VarChar`           |
+| `FixedChar`       | `FixedChar`         |
+| `Binary`          | `Binary`            |
+
+:::info
+OceanBase doesn't support Gravitino `Boolean` `Fixed` `Struct` `List` `Map` 
`Timestamp_tz` `IntervalDay` `IntervalYear` `Union` `UUID` type.
+Meanwhile, the data types other than listed above are mapped to Gravitino 
**[External 
Type](./manage-relational-metadata-using-gravitino.md#external-type)** that 
represents an unresolvable data type since 0.6.0-incubating.
+:::
+
+#### Table column auto-increment
+
+:::note
+OceanBase setting an auto-increment column requires simultaneously setting a 
unique index; otherwise, an error will occur.
+:::
+
+<Tabs groupId='language' queryString>
+<TabItem value="json" label="Json">
+
+```json
+{
+  "columns": [
+    {
+      "name": "id",
+      "type": "integer",
+      "comment": "id column comment",
+      "nullable": false,
+      "autoIncrement": true
+    },
+    {
+      "name": "name",
+      "type": "varchar(500)",
+      "comment": "name column comment",
+      "nullable": true,
+      "autoIncrement": false
+    }
+  ],
+  "indexes": [
+    {
+      "indexType": "primary_key",
+      "name": "PRIMARY",
+      "fieldNames": [["id"]]
+    }
+  ]
+}
+```
+
+</TabItem>
+<TabItem value="java" label="Java">
+
+```java
+Column[] cols = new Column[] {
+    Column.of("id", Types.IntegerType.get(), "id column comment", false, true, 
null),
+    Column.of("name", Types.VarCharType.of(500), "Name of the user", true, 
false, null)
+};
+Index[] indexes = new Index[] {
+    Indexes.of(IndexType.PRIMARY_KEY, "PRIMARY", new String[][]{{"id"}})
+}
+```
+
+</TabItem>
+</Tabs>
+
+
+### Table indexes
+
+- Supports PRIMARY_KEY and UNIQUE_KEY.
+
+<Tabs groupId='language' queryString>
+<TabItem value="json" label="Json">
+
+```json
+{
+  "indexes": [
+    {
+      "indexType": "primary_key",
+      "name": "PRIMARY",
+      "fieldNames": [["id"]]
+    },
+    {
+      "indexType": "unique_key",
+      "name": "id_name_uk",
+      "fieldNames": [["id"] ,["name"]]
+    }
+  ]
+}
+```
+
+</TabItem>
+<TabItem value="java" label="Java">
+
+```java
+Index[] indexes = new Index[] {
+    Indexes.of(IndexType.PRIMARY_KEY, "PRIMARY", new String[][]{{"id"}}),
+    Indexes.of(IndexType.UNIQUE_KEY, "id_name_uk", new String[][]{{"id"} , 
{"name"}}),
+}
+```
+
+</TabItem>
+</Tabs>
+
+### Table operations
+
+:::note
+The OceanBase catalog does not support creating partitioned tables in the 
current version.
+:::
+
+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:
+
+- `RenameTable`
+- `UpdateComment`
+- `AddColumn`
+- `DeleteColumn`
+- `RenameColumn`
+- `UpdateColumnType`
+- `UpdateColumnPosition`
+- `UpdateColumnNullability`
+- `UpdateColumnComment`
+- `UpdateColumnDefaultValue`
+- `SetProperty`
+
+:::info
+ - You cannot submit the `RenameTable` operation at the same time as other 
operations.
+ - If you update a nullability column to non-nullability, there may be 
compatibility issues.
+:::

Reply via email to