Class MySQLDialect

Object
org.apache.spark.sql.jdbc.JdbcDialect
org.apache.spark.sql.jdbc.MySQLDialect
All Implemented Interfaces:
Serializable, org.apache.spark.internal.Logging, org.apache.spark.sql.catalyst.SQLConfHelper, NoLegacyJDBCError, scala.Equals, scala.Product

public class MySQLDialect extends JdbcDialect implements org.apache.spark.sql.catalyst.SQLConfHelper, NoLegacyJDBCError, scala.Product, Serializable
See Also:
  • Constructor Details

    • MySQLDialect

      public MySQLDialect()
  • Method Details

    • apply

      public abstract static R apply()
    • toString

      public static String toString()
    • canHandle

      public boolean canHandle(String url)
      Description copied from class: JdbcDialect
      Check if this dialect instance can handle a certain jdbc url.
      Specified by:
      canHandle in class JdbcDialect
      Parameters:
      url - the jdbc url.
      Returns:
      True if the dialect can be applied on the given jdbc url.
    • isSupportedFunction

      public boolean isSupportedFunction(String funcName)
      Description copied from class: JdbcDialect
      Returns whether the database supports function.
      Overrides:
      isSupportedFunction in class JdbcDialect
      Parameters:
      funcName - Upper-cased function name
      Returns:
      True if the database supports function.
    • compileExpression

      public scala.Option<String> compileExpression(Expression expr)
      Description copied from class: JdbcDialect
      Converts V2 expression to String representing a SQL expression.
      Overrides:
      compileExpression in class JdbcDialect
      Parameters:
      expr - The V2 expression to be converted.
      Returns:
      Converted value.
    • getCatalystType

      public scala.Option<DataType> getCatalystType(int sqlType, String typeName, int size, MetadataBuilder md)
      Description copied from class: JdbcDialect
      Get the custom datatype mapping for the given jdbc meta information.

      Guidelines for mapping database defined timestamps to Spark SQL timestamps:

      • TIMESTAMP WITHOUT TIME ZONE if preferTimestampNTZ -> TimestampNTZType
      • TIMESTAMP WITHOUT TIME ZONE if !preferTimestampNTZ -> TimestampType(LTZ)
      • TIMESTAMP WITH TIME ZONE -> TimestampType(LTZ)
      • TIMESTAMP WITH LOCAL TIME ZONE -> TimestampType(LTZ)
      • If the TIMESTAMP cannot be distinguished by sqlType and typeName, preferTimestampNTZ is respected for now, but we may need to add another option in the future if necessary.

      Overrides:
      getCatalystType in class JdbcDialect
      Parameters:
      sqlType - Refers to Types constants, or other constants defined by the target database, e.g. -101 is Oracle's TIMESTAMP WITH TIME ZONE type. This value is returned by ResultSetMetaData.getColumnType(int).
      typeName - The column type name used by the database (e.g. "BIGINT UNSIGNED"). This is sometimes used to determine the target data type when sqlType is not sufficient if multiple database types are conflated into a single id. This value is returned by ResultSetMetaData.getColumnTypeName(int).
      size - The size of the type, e.g. the maximum precision for numeric types, length for character string, etc. This value is returned by ResultSetMetaData.getPrecision(int).
      md - Result metadata associated with this type. This contains additional information from ResultSetMetaData or user specified options.
      Returns:
      An option the actual DataType (subclasses of DataType) or None if the default type mapping should be used.
    • quoteIdentifier

      public String quoteIdentifier(String colName)
      Description copied from class: JdbcDialect
      Quotes the identifier. This is used to put quotes around the identifier in case the column name is a reserved keyword, or in case it contains characters that require quotes (e.g. space).
      Overrides:
      quoteIdentifier in class JdbcDialect
      Parameters:
      colName - (undocumented)
      Returns:
      (undocumented)
    • schemasExists

      public boolean schemasExists(Connection conn, org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions options, String schema)
      Description copied from class: JdbcDialect
      Check schema exists or not.
      Overrides:
      schemasExists in class JdbcDialect
      Parameters:
      conn - (undocumented)
      options - (undocumented)
      schema - (undocumented)
      Returns:
      (undocumented)
    • listSchemas

      public String[][] listSchemas(Connection conn, org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions options)
      Description copied from class: JdbcDialect
      Lists all the schemas in this table.
      Overrides:
      listSchemas in class JdbcDialect
      Parameters:
      conn - (undocumented)
      options - (undocumented)
      Returns:
      (undocumented)
    • isCascadingTruncateTable

      public scala.Option<Object> isCascadingTruncateTable()
      Description copied from class: JdbcDialect
      Return Some[true] iff TRUNCATE TABLE causes cascading default. Some[true] : TRUNCATE TABLE causes cascading. Some[false] : TRUNCATE TABLE does not cause cascading. None: The behavior of TRUNCATE TABLE is unknown (default).
      Overrides:
      isCascadingTruncateTable in class JdbcDialect
      Returns:
      (undocumented)
    • getUpdateColumnTypeQuery

      public String getUpdateColumnTypeQuery(String tableName, String columnName, String newDataType)
      Overrides:
      getUpdateColumnTypeQuery in class JdbcDialect
    • getRenameColumnQuery

      public String getRenameColumnQuery(String tableName, String columnName, String newName, int dbMajorVersion)
      Overrides:
      getRenameColumnQuery in class JdbcDialect
    • getUpdateColumnNullabilityQuery

      public String getUpdateColumnNullabilityQuery(String tableName, String columnName, boolean isNullable)
      Overrides:
      getUpdateColumnNullabilityQuery in class JdbcDialect
    • getTableCommentQuery

      public String getTableCommentQuery(String table, String comment)
      Overrides:
      getTableCommentQuery in class JdbcDialect
    • getJDBCType

      public scala.Option<JdbcType> getJDBCType(DataType dt)
      Description copied from class: JdbcDialect
      Retrieve the jdbc / sql type for a given datatype.
      Overrides:
      getJDBCType in class JdbcDialect
      Parameters:
      dt - The datatype (e.g. StringType)
      Returns:
      The new JdbcType if there is an override for this DataType
    • getSchemaCommentQuery

      public String getSchemaCommentQuery(String schema, String comment)
      Overrides:
      getSchemaCommentQuery in class JdbcDialect
    • removeSchemaCommentQuery

      public String removeSchemaCommentQuery(String schema)
      Overrides:
      removeSchemaCommentQuery in class JdbcDialect
    • createIndex

      public String createIndex(String indexName, Identifier tableIdent, NamedReference[] columns, Map<NamedReference,Map<String,String>> columnsProperties, Map<String,String> properties)
      Description copied from class: JdbcDialect
      Build a create index SQL statement.

      Overrides:
      createIndex in class JdbcDialect
      Parameters:
      indexName - the name of the index to be created
      tableIdent - the table on which index to be created
      columns - the columns on which index to be created
      columnsProperties - the properties of the columns on which index to be created
      properties - the properties of the index to be created
      Returns:
      the SQL statement to use for creating the index.
    • indexExists

      public boolean indexExists(Connection conn, String indexName, Identifier tableIdent, org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions options)
      Description copied from class: JdbcDialect
      Checks whether an index exists

      Overrides:
      indexExists in class JdbcDialect
      Parameters:
      conn - (undocumented)
      indexName - the name of the index
      tableIdent - the table on which index to be checked
      options - JDBCOptions of the table
      Returns:
      true if the index with indexName exists in the table with tableName, false otherwise
    • dropIndex

      public String dropIndex(String indexName, Identifier tableIdent)
      Description copied from class: JdbcDialect
      Build a drop index SQL statement.

      Overrides:
      dropIndex in class JdbcDialect
      Parameters:
      indexName - the name of the index to be dropped.
      tableIdent - the table on which index to be dropped.
      Returns:
      the SQL statement to use for dropping the index.
    • listIndexes

      public TableIndex[] listIndexes(Connection conn, Identifier tableIdent, org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions options)
      Description copied from class: JdbcDialect
      Lists all the indexes in this table.
      Overrides:
      listIndexes in class JdbcDialect
      Parameters:
      conn - (undocumented)
      tableIdent - (undocumented)
      options - (undocumented)
      Returns:
      (undocumented)
    • classifyException

      public AnalysisException classifyException(Throwable e, String errorClass, scala.collection.immutable.Map<String,String> messageParameters, String description)
      Description copied from class: JdbcDialect
      Gets a dialect exception, classifies it and wraps it by AnalysisException.
      Specified by:
      classifyException in interface NoLegacyJDBCError
      Overrides:
      classifyException in class JdbcDialect
      Parameters:
      e - The dialect specific exception.
      errorClass - The error class assigned in the case of an unclassified e
      messageParameters - The message parameters of errorClass
      description - The error description
      Returns:
      AnalysisException or its sub-class.
    • dropSchema

      public String dropSchema(String schema, boolean cascade)
      Overrides:
      dropSchema in class JdbcDialect
    • getJdbcSQLQueryBuilder

      public JdbcSQLQueryBuilder getJdbcSQLQueryBuilder(org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions options)
      Description copied from class: JdbcDialect
      Returns the SQL builder for the SELECT statement.
      Overrides:
      getJdbcSQLQueryBuilder in class JdbcDialect
      Parameters:
      options - (undocumented)
      Returns:
      (undocumented)
    • supportsLimit

      public boolean supportsLimit()
      Description copied from class: JdbcDialect
      Returns ture if dialect supports LIMIT clause.

      Note: Some build-in dialect supports LIMIT clause with some trick, please see: OracleDialect.OracleSQLQueryBuilder and MsSqlServerDialect.MsSqlServerSQLQueryBuilder.

      Overrides:
      supportsLimit in class JdbcDialect
      Returns:
      (undocumented)
    • supportsOffset

      public boolean supportsOffset()
      Description copied from class: JdbcDialect
      Returns ture if dialect supports OFFSET clause.

      Note: Some build-in dialect supports OFFSET clause with some trick, please see: OracleDialect.OracleSQLQueryBuilder and MySQLDialect.MySQLSQLQueryBuilder.

      Overrides:
      supportsOffset in class JdbcDialect
      Returns:
      (undocumented)