Class MySql

    • Field Detail

      • SQL_LIMIT

        public static final java.lang.String SQL_LIMIT
        LIMIT string.
        See Also:
        Constant Field Values
      • SQL_OFFSET

        public static final java.lang.String SQL_OFFSET
        OFFSET string.
        See Also:
        Constant Field Values
      • SQL_LIMIT_PAR

        public static final java.lang.String SQL_LIMIT_PAR
        LIMIT ? string.
        See Also:
        Constant Field Values
      • SQL_OFFSET_PAR

        public static final java.lang.String SQL_OFFSET_PAR
        OFFSET ? string.
        See Also:
        Constant Field Values
    • Constructor Detail

      • MySql

        public MySql()
    • Method Detail

      • isMatchingUrl

        public boolean isMatchingUrl​(java.lang.String url)
        Description copied from interface: Backend
        Checks whether the backend belongs to the given jdbc url.
        Parameters:
        url - the jdbc url
        Returns:
        true if matches
      • getName

        public java.lang.String getName()
        Description copied from interface: Backend
        Gets the name of the backend.
        Returns:
        the name
      • getDriverClassName

        public java.lang.String getDriverClassName()
        Description copied from interface: Backend
        Gets the JDBC driver class name.
        Returns:
        the class name
      • getBackendId

        public java.lang.String getBackendId​(java.sql.Connection connection)
        Description copied from interface: Backend
        Determines the unique id or name used by the backend for a given connection.

        Useful to figure out the corresponding ManagedConnection from the backend's logfiles.

        Parameters:
        connection - the jdbc connection
        Returns:
        the backend id, null if none
      • isReleaseSavepointSupported

        public boolean isReleaseSavepointSupported()
        Description copied from interface: Backend
        Returns whether the backend supports releasing savepoints explicitly. If not, the savepoints are released when the transaction finishs.
        Specified by:
        isReleaseSavepointSupported in interface Backend
        Overrides:
        isReleaseSavepointSupported in class AbstractBackend
        Returns:
        true if release is supported, else false
      • buildSelectSql

        public void buildSelectSql​(java.lang.StringBuilder sqlBuilder,
                                   boolean writeLock,
                                   int limit,
                                   int offset)
        Description copied from interface: Backend
        Creates a select statement string from an inner sql string.

        sqlBuilder is anything as FROM... WHERE... ORDER BY....
        It is decorated with a leading SELECT plus optional clauses like for the given parameters.

        Specified by:
        buildSelectSql in interface Backend
        Overrides:
        buildSelectSql in class AbstractSql92Backend
        Parameters:
        sqlBuilder - the sql builder, initially containing the inner sql without leading SELECT.
        writeLock - true select should write lock
        limit - the limit value, ≤ 0 if no limit clause
        offset - the offset value, ≤ 0 if no offset clause
      • setLeadingSelectParameters

        public int setLeadingSelectParameters​(BackendPreparedStatement stmt,
                                              int limit,
                                              int offset)
        Description copied from interface: Backend
        Sets optional parameters before applying the original parameters.
        Specified by:
        setLeadingSelectParameters in interface Backend
        Overrides:
        setLeadingSelectParameters in class AbstractSql92Backend
        Parameters:
        stmt - the prepared statement
        limit - the limit value, ≤ 0 if no limit clause
        offset - the offset value, ≤ 0 if no offset clause
        Returns:
        the next parameter index
      • setTrailingSelectParameters

        public int setTrailingSelectParameters​(BackendPreparedStatement stmt,
                                               int index,
                                               int limit,
                                               int offset)
        Description copied from interface: Backend
        Sets optional parameters after applying the original parameters.
        Specified by:
        setTrailingSelectParameters in interface Backend
        Overrides:
        setTrailingSelectParameters in class AbstractSql92Backend
        Parameters:
        stmt - the prepared statement
        index - the first parameter index
        limit - the limit value, ≤ 0 if no limit clause
        offset - the offset value, ≤ 0 if no offset clause
        Returns:
        the next parameter index
      • getMaxSize

        public int getMaxSize​(SqlType sqlType)
        Description copied from interface: Backend
        Returns the maximum size for a given SQL-type.
        Specified by:
        getMaxSize in interface Backend
        Overrides:
        getMaxSize in class AbstractBackend
        Parameters:
        sqlType - the SQL-type
        Returns:
        the maximum size, 0 if unlimited, -1 if type without size
      • sqlTypeToString

        public java.lang.String sqlTypeToString​(SqlType sqlType,
                                                int size)
        Description copied from interface: Backend
        Converts the java SQL-type to the database type name.
        Specified by:
        sqlTypeToString in interface Backend
        Overrides:
        sqlTypeToString in class AbstractBackend
        Parameters:
        sqlType - the java sql type
        size - the column's size
        Returns:
        the corresponding type string
      • jdbcTypeToSqlType

        public SqlType[] jdbcTypeToSqlType​(int jdbcType,
                                           int size,
                                           int scale)
        Description copied from interface: Backend
        Converts the JDBC data type integer to a tentackle backend SqlTypes.

        There may be more than one sqltype returned!

        Specified by:
        jdbcTypeToSqlType in interface Backend
        Overrides:
        jdbcTypeToSqlType in class AbstractBackend
        Parameters:
        jdbcType - the jdbc data type
        size - the column size
        scale - the column's scale
        Returns:
        the SqlTypes, empty array if no mapping available or no exact match (not generated by TT)
        See Also:
        Types
      • sqlCreateTableClosing

        public java.lang.String sqlCreateTableClosing​(java.lang.String tableName,
                                                      java.lang.String comment)
        Description copied from interface: Backend
        Generates the last line of a CREATE TABLE statement.
        Specified by:
        sqlCreateTableClosing in interface Backend
        Overrides:
        sqlCreateTableClosing in class AbstractBackend
        Parameters:
        tableName - the tablename with optional schema separated by a dot
        comment - optional comment, null if none
        Returns:
        the SQL code including the closing bracket
      • getMetaData

        public java.sql.DatabaseMetaData[] getMetaData​(BackendInfo backendInfo)
                                                throws java.sql.SQLException
        Description copied from interface: Backend
        Gets the metadata from the backend.

        Important: the connection of the metadata is open!

        Specified by:
        getMetaData in interface Backend
        Overrides:
        getMetaData in class AbstractBackend
        Parameters:
        backendInfo - the backend info
        Returns:
        the metadata, may be more than one if schemas set in backendInfo
        Throws:
        java.sql.SQLException - if failed
      • sqlCreateColumn

        public java.lang.String sqlCreateColumn​(java.lang.String columnName,
                                                java.lang.String comment,
                                                SqlType sqlType,
                                                int size,
                                                int scale,
                                                boolean nullable,
                                                java.lang.Object defaultValue,
                                                boolean primaryKey,
                                                boolean withTrailingComma)
        Description copied from interface: Backend
        Generates the attribute definition of a CREATE TABLE statement.
        Specified by:
        sqlCreateColumn in interface Backend
        Overrides:
        sqlCreateColumn in class AbstractBackend
        Parameters:
        columnName - the database column name
        comment - optional comment, null if none
        sqlType - the JDBC sql type
        size - the optional size
        scale - the optional scale
        nullable - true if NULL, else NOT NULL
        defaultValue - the optional default value
        primaryKey - true if this is a primary key
        withTrailingComma - true if append a comma
        Returns:
        the SQL code
      • sqlAddColumn

        public java.lang.String sqlAddColumn​(java.lang.String tableName,
                                             java.lang.String columnName,
                                             java.lang.String comment,
                                             SqlType sqlType,
                                             int size,
                                             int scale,
                                             boolean nullable,
                                             java.lang.Object defaultValue)
        Description copied from interface: Backend
        Generates sql code to add a column.
        Specified by:
        sqlAddColumn in interface Backend
        Overrides:
        sqlAddColumn in class AbstractBackend
        Parameters:
        tableName - the tablename
        columnName - the new column name
        comment - optional comment, null if none
        sqlType - the JDBC sql type
        size - the optional size
        scale - the optional scale
        nullable - true if NULL, else NOT NULL
        defaultValue - the optional default value
        Returns:
        the SQL code
      • sqlRenameColumn

        public java.lang.String sqlRenameColumn​(java.lang.String tableName,
                                                java.lang.String oldColumnName,
                                                java.lang.String newColumnName)
        Description copied from interface: Backend
        Generates sql code to rename a column.
        Specified by:
        sqlRenameColumn in interface Backend
        Overrides:
        sqlRenameColumn in class AbstractBackend
        Parameters:
        tableName - the tablename
        oldColumnName - the old column name
        newColumnName - the new column name
        Returns:
        the SQL code, null if need full spec sqlRenameAndAlterColumnType below
      • sqlRenameAndAlterColumnType

        public java.lang.String sqlRenameAndAlterColumnType​(java.lang.String tableName,
                                                            java.lang.String oldColumnName,
                                                            java.lang.String newColumnName,
                                                            java.lang.String comment,
                                                            SqlType sqlType,
                                                            int size,
                                                            int scale,
                                                            boolean nullable,
                                                            java.lang.Object defaultValue)
        Description copied from interface: Backend
        Generates sql code to rename a column.
        Specified by:
        sqlRenameAndAlterColumnType in interface Backend
        Overrides:
        sqlRenameAndAlterColumnType in class AbstractBackend
        Parameters:
        tableName - the tablename
        oldColumnName - the old column name
        newColumnName - the new column name
        comment - optional comment, null if none
        sqlType - the JDBC sql type
        size - the optional size
        scale - the optional scale
        nullable - true if NULL, else NOT NULL
        defaultValue - the optional default value
        Returns:
        the SQL code
      • sqlAlterColumnType

        public java.lang.String sqlAlterColumnType​(java.lang.String tableName,
                                                   java.lang.String columnName,
                                                   java.lang.String comment,
                                                   SqlType sqlType,
                                                   int size,
                                                   int scale,
                                                   boolean nullable,
                                                   java.lang.Object defaultValue)
        Description copied from interface: Backend
        Generates sql code to change the datatype of a column.
        Specified by:
        sqlAlterColumnType in interface Backend
        Overrides:
        sqlAlterColumnType in class AbstractBackend
        Parameters:
        tableName - the tablename
        columnName - the new column name
        comment - optional comment, null if none
        sqlType - the JDBC sql type
        size - the optional size
        scale - the optional scale
        nullable - true if NULL, else NOT NULL
        defaultValue - the optional default value
        Returns:
        the SQL code
      • sqlDropIndex

        public java.lang.String sqlDropIndex​(java.lang.String schemaName,
                                             java.lang.String tableNameWithoutSchema,
                                             java.lang.String indexName)
        Description copied from interface: Backend
        Generates the DROP INDEX statement.
        Specified by:
        sqlDropIndex in interface Backend
        Overrides:
        sqlDropIndex in class AbstractBackend
        Parameters:
        schemaName - the optional schema, null if none
        tableNameWithoutSchema - the table name without the schema
        indexName - the name of the index
        Returns:
        the SQL code
      • getMigrationStrategy

        public MigrationStrategy[] getMigrationStrategy​(ColumnMetaData column,
                                                        java.lang.String columnName,
                                                        java.lang.String comment,
                                                        SqlType sqlType,
                                                        int size,
                                                        int scale,
                                                        boolean nullable,
                                                        java.lang.Object defaultValue)
        Description copied from interface: Backend
        Determines the best migration strategy.
        Specified by:
        getMigrationStrategy in interface Backend
        Overrides:
        getMigrationStrategy in class AbstractBackend
        Parameters:
        column - old column meta data
        columnName - new column name
        comment - new comment
        sqlType - new sql type
        size - new size
        scale - new scale
        nullable - new nullable
        defaultValue - new default
        Returns:
        the strategies in order to achieve the migration
      • extractWhereClause

        protected java.lang.String extractWhereClause​(java.lang.String sql,
                                                      int whereOffset)
        Description copied from class: AbstractBackend
        Extracts the where clause from a given sql.
        Overrides:
        extractWhereClause in class AbstractBackend
        Parameters:
        sql - the sql statement
        whereOffset - the location of WHERE in sql
        Returns:
        the where clause without the keyword WHERE