Skip to main content
Version: 0.4.0

MySQL catalog

Introduction

Gravitino provides the ability to manage MySQL 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 MySQL instance.
  • Supports metadata management of MySQL (5.7, 8.0).
  • Supports DDL operation for MySQL databases and tables.
  • Supports table index.
  • Supports column default value and auto-increment.
  • Supports managing MySQL table features though table properties, like using engine to set MySQL storage engine.

Catalog properties

Any property that isn't defined by Gravitino can pass to MySQL data source by adding gravitino.bypass prefix as a catalog property. For example, catalog property gravitino.bypass.maxWaitMillis will pass maxWaitMillis to the data source property. You can check the relevant data source configuration in data source properties

If you use JDBC catalog, you must provide jdbc-url, jdbc-driver, jdbc-user and jdbc-password to catalog properties.

Configuration itemDescriptionDefault valueRequiredSince Version
jdbc-urlJDBC URL for connecting to the database. For example jdbc:mysql://localhost:3306(none)Yes0.3.0
jdbc-driverThe driver of the JDBC connection. For example com.mysql.jdbc.Driver or com.mysql.cj.jdbc.Driver.(none)Yes0.3.0
jdbc-userThe JDBC user name.(none)Yes0.3.0
jdbc-passwordThe JDBC password.(none)Yes0.3.0
jdbc.pool.min-sizeThe minimum number of connections in the pool. 2 by default.2No0.3.0
jdbc.pool.max-sizeThe maximum number of connections in the pool. 10 by default.10No0.3.0
caution

You must download the corresponding JDBC driver to the catalogs/jdbc-mysql/libs directory.

Catalog operations

Please refer to Manage Metadata Using Gravitino for more details.

Schema

Schema capabilities

  • Gravitino schema corresponds to the MySQL database.
  • Supports creating schema, but does not support setting comment.
  • Supports dropping schema.
  • Doesn't support cascade dropping schema.

Schema properties

  • Doesn't support any schema property settings.

Schema operations

Please refer to Manage Metadata Using Gravitino for more details.

Table

Table capabilities

  • Gravitino table corresponds to the MySQL table.
  • Supports DDL operation for MySQL tables.
  • Supports index.
  • Supports column default value and auto-increment..
  • Supports managing MySQL table features though table properties, like using engine to set MySQL storage engine.

Table column types

Gravitino TypeMySQL Type
ByteTinyint
ShortSmallint
IntegerInt
LongBigint
FloatFloat
DoubleDouble
StringText
DateDate
TimeTime
TimestampTimestamp
DecimalDecimal
VarCharVarChar
FixedCharFixedChar
BinaryBinary
info

MySQL doesn't support Gravitino Boolean Fixed Struct List Map Timestamp_tz IntervalDay IntervalYear Union UUID type.

Table column auto-increment

note

MySQL 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 properties

Although MySQL itself does not support table properties, Gravitino offers table property management for MySQL tables through the jdbc-mysql catalog, enabling control over table features. The supported properties are listed as follows:

Property NameDescriptionRequiredSince version
engineThe engine used by the table. The default value is InnoDB. For example MyISAM, MEMORY, CSV, ARCHIVE, BLACKHOLE, FEDERATED, ndbinfo, MRG_MYISAM, PERFORMANCE_SCHEMA.No0.4.0
auto-increment-offsetUsed to specify the starting value of the auto-increment field.No0.4.0
  • Doesn't support remove table properties. You can only modify values, not delete properties.

Table indexes

  • Supports PRIMARY_KEY and UNIQUE_KEY.
note

The index name of the PRIMARY_KEY must be PRIMARY Create table index

{
"indexes": [
{
"indexType": "primary_key",
"name": "PRIMARY",
"fieldNames": [["id"]]
},
{
"indexType": "unique_key",
"name": "id_name_uk",
"fieldNames": [["id"] ,["name"]]
}
]
}

Table operations

Please refer to Manage Metadata Using Gravitino for more details.

Alter table operations

Supports operations:

  • RenameTable
  • UpdateComment
  • AddColumn
  • DeleteColumn
  • RenameColumn
  • UpdateColumnType
  • UpdateColumnPosition
  • UpdateColumnNullability
  • UpdateColumnComment
  • SetProperty
info

You cannot submit the RenameTable operation at the same time as other operations.

caution

If you update a nullability column to non nullability, there may be compatibility issues.