Class MySqlDialect
- java.lang.Object
-
- org.apache.flink.connector.jdbc.dialect.AbstractDialect
-
- org.apache.flink.connector.jdbc.databases.mysql.dialect.MySqlDialect
-
- All Implemented Interfaces:
Serializable,JdbcDialect
@Internal public class MySqlDialect extends AbstractDialect
JDBC dialect for MySQL.- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.flink.connector.jdbc.dialect.AbstractDialect
AbstractDialect.Range
-
-
Constructor Summary
Constructors Constructor Description MySqlDialect()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description StringappendDefaultUrlProperties(String url)Appends default JDBC properties to url for current dialect.Optional<AbstractDialect.Range>decimalPrecisionRange()Optional<String>defaultDriverName()StringdialectName()Get the name of jdbc dialect.StringgetLimitClause(long limit)Get limit clause to limit the number of emitted row from the jdbc source.JdbcRowConvertergetRowConverter(org.apache.flink.table.types.logical.RowType rowType)Get converter that convert jdbc object and Flink internal object each other.Optional<String>getUpsertStatement(String tableName, String[] fieldNames, String[] uniqueKeyFields)Mysql upsert query use DUPLICATE KEY UPDATE.StringquoteIdentifier(String identifier)Quotes the identifier.Set<org.apache.flink.table.types.logical.LogicalTypeRoot>supportedTypes()Defines the set of supported types for the dialect.Optional<AbstractDialect.Range>timestampPrecisionRange()-
Methods inherited from class org.apache.flink.connector.jdbc.dialect.AbstractDialect
getDeleteStatement, getInsertIntoStatement, getRowExistsStatement, getSelectFromStatement, getUpdateStatement, validate
-
-
-
-
Method Detail
-
getRowConverter
public JdbcRowConverter getRowConverter(org.apache.flink.table.types.logical.RowType rowType)
Description copied from interface:JdbcDialectGet converter that convert jdbc object and Flink internal object each other.- Parameters:
rowType- the given row type- Returns:
- a row converter for the database
-
getLimitClause
public String getLimitClause(long limit)
Description copied from interface:JdbcDialectGet limit clause to limit the number of emitted row from the jdbc source.- Parameters:
limit- number of row to emit. The value of the parameter should be non-negative.- Returns:
- the limit clause.
-
defaultDriverName
public Optional<String> defaultDriverName()
- Returns:
- the default driver class name, if user has not configured the driver class name, then this one will be used.
-
quoteIdentifier
public String quoteIdentifier(String identifier)
Description copied from interface:JdbcDialectQuotes the identifier.Used to put quotes around the identifier if the column name is a reserved keyword or contains characters requiring quotes (e.g., space).
- Returns:
- the quoted identifier.
-
getUpsertStatement
public Optional<String> getUpsertStatement(String tableName, String[] fieldNames, String[] uniqueKeyFields)
Mysql upsert query use DUPLICATE KEY UPDATE.NOTE: It requires Mysql's primary key to be consistent with pkFields.
We don't use REPLACE INTO, if there are other fields, we can keep their previous values.
- Returns:
- The upsert statement if supported, otherwise None.
-
dialectName
public String dialectName()
Description copied from interface:JdbcDialectGet the name of jdbc dialect.- Returns:
- the dialect name.
-
decimalPrecisionRange
public Optional<AbstractDialect.Range> decimalPrecisionRange()
- Overrides:
decimalPrecisionRangein classAbstractDialect- Returns:
- The inclusive range [min,max] of supported precisions for
DecimalTypecolumns. None if decimal type is not supported.
-
timestampPrecisionRange
public Optional<AbstractDialect.Range> timestampPrecisionRange()
- Overrides:
timestampPrecisionRangein classAbstractDialect- Returns:
- The inclusive range [min,max] of supported precisions for
TimestampTypecolumns. None if timestamp type is not supported.
-
supportedTypes
public Set<org.apache.flink.table.types.logical.LogicalTypeRoot> supportedTypes()
Description copied from class:AbstractDialectDefines the set of supported types for the dialect. If the dialect supportsDECIMALorTIMESTAMPtypes, be sure to overrideAbstractDialect.decimalPrecisionRange()andAbstractDialect.timestampPrecisionRange()respectively.- Specified by:
supportedTypesin classAbstractDialect- Returns:
- a set of logical type roots.
-
appendDefaultUrlProperties
public String appendDefaultUrlProperties(String url)
Description copied from interface:JdbcDialectAppends default JDBC properties to url for current dialect. Some database dialects will set default JDBC properties for performance or optimization consideration, such as MySQL dialect uses 'rewriteBatchedStatements=true' to enable execute multiple MySQL statements in batch mode.- Returns:
- A JDBC url that has appended the default properties.
-
-