Skip to main content
Version: 0.7.0-incubating

OceanBase catalog

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 and 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

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, the OceanBase catalog has the following properties:

Configuration itemDescriptionDefault valueRequiredSince Version
jdbc-urlJDBC URL for connecting to the database. For example, jdbc:mysql://localhost:2881 or jdbc:oceanbase://localhost:2881(none)Yes0.7.0-incubating
jdbc-driverThe driver of the JDBC connection. For example, com.mysql.jdbc.Driver or com.mysql.cj.jdbc.Driver or com.oceanbase.jdbc.Driver.(none)Yes0.7.0-incubating
jdbc-userThe JDBC user name.(none)Yes0.7.0-incubating
jdbc-passwordThe JDBC password.(none)Yes0.7.0-incubating
jdbc.pool.min-sizeThe minimum number of connections in the pool. 2 by default.2No0.7.0-incubating
jdbc.pool.max-sizeThe maximum number of connections in the pool. 10 by default.10No0.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 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 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 and auto-increment..

Table properties

  • Doesn't support table properties.

Table column types

Gravitino TypeOceanBase Type
ByteTinyint
Byte(false)Tinyint Unsigned
ShortSmallint
Short(false)Smallint Unsigned
IntegerInt
Integer(false)Int Unsigned
LongBigint
Long(false)Bigint Unsigned
FloatFloat
DoubleDouble
StringText
DateDate
TimeTime
TimestampTimestamp
DecimalDecimal
VarCharVarChar
FixedCharFixedChar
BinaryBinary
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 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.

{
"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"]]
}
]
}

Table indexes

  • Supports PRIMARY_KEY and UNIQUE_KEY.
{
"indexes": [
{
"indexType": "primary_key",
"name": "PRIMARY",
"fieldNames": [["id"]]
},
{
"indexType": "unique_key",
"name": "id_name_uk",
"fieldNames": [["id"] ,["name"]]
}
]
}

Table operations

note

The OceanBase catalog does not support creating partitioned tables in the current version.

Refer to Manage Relational Metadata Using Gravitino 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.