Class MySQLDictionary

java.lang.Object
org.apache.openjpa.jdbc.sql.DBDictionary
org.apache.openjpa.jdbc.sql.MySQLDictionary
All Implemented Interfaces:
JoinSyntaxes, Configurable, IdentifierConfiguration, ConnectionDecorator, LoggingConnectionDecorator.SQLWarningHandler

public class MySQLDictionary extends DBDictionary
Dictionary for MySQL.
  • Field Details

    • SELECT_HINT

      public static final String SELECT_HINT
      See Also:
    • DELIMITER_BACK_TICK

      public static final String DELIMITER_BACK_TICK
      See Also:
    • tableType

      public String tableType
      The MySQL table type to use when creating tables; defaults to innodb.
    • useClobs

      public boolean useClobs
      Whether to use clobs; defaults to true. Set this to false if you have an old version of MySQL which does not handle clobs properly.
    • driverDeserializesBlobs

      public boolean driverDeserializesBlobs
      Whether the driver automatically deserializes blobs.
    • optimizeMultiTableDeletes

      public boolean optimizeMultiTableDeletes
      Whether to inline multi-table bulk-delete operations into MySQL's combined DELETE FROM foo, bar, baz syntax. Defaults to false, since this may fail in the presence of InnoDB tables with foreign keys.
    • tinyBlobTypeName

      public static final String tinyBlobTypeName
      See Also:
    • mediumBlobTypeName

      public static final String mediumBlobTypeName
      See Also:
    • longBlobTypeName

      public static final String longBlobTypeName
      See Also:
    • tinyTextTypeName

      public static final String tinyTextTypeName
      See Also:
    • mediumTextTypeName

      public static final String mediumTextTypeName
      See Also:
    • longTextTypeName

      public static final String longTextTypeName
      See Also:
  • Constructor Details

    • MySQLDictionary

      public MySQLDictionary()
  • Method Details

    • connectedConfiguration

      public void connectedConfiguration(Connection conn) throws SQLException
      Description copied from class: DBDictionary
      This method is called when the dictionary first sees any connection. It is used to initialize dictionary metadata if needed. If you override this method, be sure to call super.connectedConfiguration.
      Overrides:
      connectedConfiguration in class DBDictionary
      Throws:
      SQLException
    • decorate

      public Connection decorate(Connection conn) throws SQLException
      Description copied from class: DBDictionary
      Decorate the given connection if needed. Some databases require special handling for JDBC bugs. This implementation issues any DBDictionary.initializationSQL that has been set for the dictionary but does not decorate the connection.
      Specified by:
      decorate in interface ConnectionDecorator
      Overrides:
      decorate in class DBDictionary
      Throws:
      SQLException
    • getCreateTableSQL

      public String[] getCreateTableSQL(Table table)
      Description copied from class: DBDictionary
      Return a series of SQL statements to create the given table, complete with columns. Indexes and constraints will be created separately.
      Overrides:
      getCreateTableSQL in class DBDictionary
    • getDropIndexSQL

      public String[] getDropIndexSQL(Index index)
      Description copied from class: DBDictionary
      Return a series of SQL statements to drop the given index. Returns DROP INDEX <index name> by default.
      Overrides:
      getDropIndexSQL in class DBDictionary
    • getDropPrimaryKeySQL

      public String[] getDropPrimaryKeySQL(PrimaryKey pk)
      Return ALTER TABLE <table name> DROP PRIMARY KEY.
      Overrides:
      getDropPrimaryKeySQL in class DBDictionary
    • getDropForeignKeySQL

      public String[] getDropForeignKeySQL(ForeignKey fk, Connection conn)
      Return ALTER TABLE <table name> DROP FOREIGN KEY <fk name>.
      Overrides:
      getDropForeignKeySQL in class DBDictionary
    • getAddPrimaryKeySQL

      public String[] getAddPrimaryKeySQL(PrimaryKey pk)
      Description copied from class: DBDictionary
      Return a series of SQL statements to add the given primary key to its table. Return an empty array if operation not supported. Returns ALTER TABLE <table name> ADD <pk cons sql > by default.
      Overrides:
      getAddPrimaryKeySQL in class DBDictionary
    • getDeleteTableContentsSQL

      public String[] getDeleteTableContentsSQL(Table[] tables, Connection conn)
      Description copied from class: DBDictionary
      Create SQL to delete the contents of the specified tables. The default implementation drops all non-deferred RESTRICT foreign key constraints involving the specified tables, issues DELETE statements against the tables, and then adds the dropped constraints back in. Databases with more optimal ways of deleting the contents of several tables should override this method.
      Overrides:
      getDeleteTableContentsSQL in class DBDictionary
    • appendSelectRange

      protected void appendSelectRange(SQLBuffer buf, long start, long end, boolean subselect)
      Description copied from class: DBDictionary
      If this dictionary can select ranges, use this method to append the range SQL.
      Overrides:
      appendSelectRange in class DBDictionary
    • newColumn

      protected Column newColumn(ResultSet colMeta) throws SQLException
      Description copied from class: DBDictionary
      Create a new column from the information in the schema metadata.
      Overrides:
      newColumn in class DBDictionary
      Throws:
      SQLException
    • getBlobObject

      public Object getBlobObject(ResultSet rs, int column, JDBCStore store) throws SQLException
      Description copied from class: DBDictionary
      Convert the specified column of the SQL ResultSet to the proper java type.
      Overrides:
      getBlobObject in class DBDictionary
      Throws:
      SQLException
    • getPreferredType

      public int getPreferredType(int type)
      Description copied from class: DBDictionary
      Return the preferred Types type for the given one. Returns the given type by default.
      Overrides:
      getPreferredType in class DBDictionary
    • appendXmlComparison

      public void appendXmlComparison(SQLBuffer buf, String op, FilterValue lhs, FilterValue rhs, boolean lhsxml, boolean rhsxml)
      Append XML comparison.
      Overrides:
      appendXmlComparison in class DBDictionary
      Parameters:
      buf - the SQL buffer to write the comparison
      op - the comparison operation to perform
      lhs - the left hand side of the comparison
      rhs - the right hand side of the comparison
      lhsxml - indicates whether the left operand maps to XML
      rhsxml - indicates whether the right operand maps to XML
    • getBatchFetchSize

      public int getBatchFetchSize(int batchFetchSize)
      Overrides:
      getBatchFetchSize in class DBDictionary
    • getSelectOperation

      public String getSelectOperation(JDBCFetchConfiguration fetch)
      Check to see if we have set the SELECT_HINT in the fetch configuration, and if so, append the MySQL hint after the "SELECT" part of the query.
      Overrides:
      getSelectOperation in class DBDictionary
    • getSelectTableAliases

      protected Collection<String> getSelectTableAliases(Select sel)
      Overrides:
      getSelectTableAliases in class DBDictionary
    • matchErrorState

      protected int matchErrorState(Map<Integer,Set<String>> errorStates, SQLException ex)
      Description copied from class: DBDictionary
      Determine the more appropriate type of store exception by matching the SQL Error State of the the given SQLException to the given Error States categorized by error types. Dictionary subclass can override this method and extract SQLException data to figure out if the exception is recoverable.
      Overrides:
      matchErrorState in class DBDictionary
      Parameters:
      errorStates - classification of SQL error states by their specific nature. The keys of the map represent one of the constants defined in StoreException. The value corresponding to a key represent the set of SQL Error States representing specific category of database error. This supplied map is sourced from sql-error-state-codes.xml and filtered the error states for the current database.
      ex - original SQL Exception as raised by the database driver.
      Returns:
      A constant indicating the category of error as defined in StoreException.
    • isFatalException

      public boolean isFatalException(int subtype, SQLException ex)
      Description copied from class: DBDictionary
      Determine if the given SQL Exception is fatal or recoverable (such as a timeout). This implementation always returns true (i.e. all exceptions are fatal). The current dictionary implementation can overwrite this method to mark certain exception conditions as recoverable error.
      Overrides:
      isFatalException in class DBDictionary
      Parameters:
      subtype - A constant indicating the category of error as defined in StoreException.
      ex - original SQL Exception as raised by the database driver.
      Returns:
      false if the error is fatal.
    • getTypeName

      public String getTypeName(Column col)
      OPENJPA-740 Special case for MySql special column types, like LONGTEXT, LONGBLOG etc..
      Overrides:
      getTypeName in class DBDictionary
      See Also:
    • indexOf

      public void indexOf(SQLBuffer buf, FilterValue str, FilterValue find, FilterValue start)
      Description copied from class: DBDictionary
      Invoke this database's indexOf function.
      Overrides:
      indexOf in class DBDictionary
      Parameters:
      buf - the SQL buffer to write the indexOf invocation to
      str - a query value representing the target string
      find - a query value representing the search string
      start - a query value representing the start index, or null to start at the beginning