Class DerbyAdapter

  • All Implemented Interfaces:
    DatastoreAdapter

    public class DerbyAdapter
    extends BaseDatastoreAdapter
    Provides methods for adapting SQL language elements to the Apache Derby database.
    • Field Detail

      • DERBY_RESERVED_WORDS

        private static final java.lang.String DERBY_RESERVED_WORDS
        Derby (Cloudscape) 10.0 beta reserved words, includes SQL92 reserved words
        See Also:
        Constant Field Values
    • Constructor Detail

      • DerbyAdapter

        public DerbyAdapter​(java.sql.DatabaseMetaData metadata)
        Constructs an Apache Derby adapter based on the given JDBC metadata.
        Parameters:
        metadata - the database metadata.
    • Method Detail

      • getSchemaName

        public java.lang.String getSchemaName​(java.sql.Connection conn)
                                       throws java.sql.SQLException
        Accessor for the schema name.
        Specified by:
        getSchemaName in interface DatastoreAdapter
        Overrides:
        getSchemaName in class BaseDatastoreAdapter
        Parameters:
        conn - The Connection to use
        Returns:
        The schema name used by this connection
        Throws:
        java.sql.SQLException - if an error occurs
      • getCatalogName

        public java.lang.String getCatalogName​(java.sql.Connection conn)
                                        throws java.sql.SQLException
        Accessor for the catalog name.
        Specified by:
        getCatalogName in interface DatastoreAdapter
        Overrides:
        getCatalogName in class BaseDatastoreAdapter
        Parameters:
        conn - The Connection to use
        Returns:
        The catalog name used by this connection
        Throws:
        java.sql.SQLException - if an error occurs
      • newSQLTypeInfo

        public SQLTypeInfo newSQLTypeInfo​(java.sql.ResultSet rs)
        Description copied from interface: DatastoreAdapter
        Create a new SQL type info from the current row of the passed ResultSet. Allows an adapter to override particular types where the JDBC driver is known to be buggy.
        Specified by:
        newSQLTypeInfo in interface DatastoreAdapter
        Overrides:
        newSQLTypeInfo in class BaseDatastoreAdapter
        Parameters:
        rs - ResultSet
        Returns:
        The SQL type info
      • getDropDatabaseStatement

        public java.lang.String getDropDatabaseStatement​(java.lang.String catalogName,
                                                         java.lang.String schemaName)
        Description copied from interface: DatastoreAdapter
        Method to return the statement necessary to drop a database with this RDBMS. Note that some RDBMS don't support this.
        Specified by:
        getDropDatabaseStatement in interface DatastoreAdapter
        Overrides:
        getDropDatabaseStatement in class BaseDatastoreAdapter
        Parameters:
        catalogName - Name of the catalog
        schemaName - Name of the schema
        Returns:
        The DDL statement
      • getIdentityLastValueStmt

        public java.lang.String getIdentityLastValueStmt​(Table table,
                                                         java.lang.String columnName)
        Accessor for the auto-increment SQL statement for this datastore.
        Specified by:
        getIdentityLastValueStmt in interface DatastoreAdapter
        Overrides:
        getIdentityLastValueStmt in class BaseDatastoreAdapter
        Parameters:
        table - Name of the table that the autoincrement is for
        columnName - Name of the column that the autoincrement is for
        Returns:
        The statement for getting the latest auto-increment key
      • getIdentityKeyword

        public java.lang.String getIdentityKeyword​(org.datanucleus.store.StoreManager storeMgr)
        Accessor for the auto-increment keyword for generating DDLs (CREATE TABLEs...).
        Specified by:
        getIdentityKeyword in interface DatastoreAdapter
        Overrides:
        getIdentityKeyword in class BaseDatastoreAdapter
        Parameters:
        storeMgr - The Store Manager
        Returns:
        The keyword for a column using auto-increment
      • isIdentityFieldDataType

        public boolean isIdentityFieldDataType​(java.lang.String columnDef)
        Verifies if the given columnDef is auto incremented by the datastore.
        Specified by:
        isIdentityFieldDataType in interface DatastoreAdapter
        Overrides:
        isIdentityFieldDataType in class BaseDatastoreAdapter
        Parameters:
        columnDef - the datastore type name
        Returns:
        true when the columnDef has values auto incremented by the datastore
      • getInsertStatementForNoColumns

        public java.lang.String getInsertStatementForNoColumns​(Table table)
        Method to return the INSERT statement to use when inserting into a table that has no columns specified. This is the case when we have a single column in the table and that column is autoincrement/identity (and so is assigned automatically in the datastore).
        Specified by:
        getInsertStatementForNoColumns in interface DatastoreAdapter
        Overrides:
        getInsertStatementForNoColumns in class BaseDatastoreAdapter
        Parameters:
        table - The table
        Returns:
        The INSERT statement
      • getSelectForUpdateText

        public java.lang.String getSelectForUpdateText()
        Method returning the text to append to the end of the SELECT to perform the equivalent of "SELECT ... FOR UPDATE" (on some RDBMS). Derby doesn't support "FOR UPDATE" in all situations and has a similar one "WITH RR", see https://issues.apache.org/jira/browse/DERBY-3900
        Specified by:
        getSelectForUpdateText in interface DatastoreAdapter
        Overrides:
        getSelectForUpdateText in class BaseDatastoreAdapter
        Returns:
        The "FOR UPDATE" style text
      • validToSelectMappingInStatement

        public boolean validToSelectMappingInStatement​(SelectStatement stmt,
                                                       JavaTypeMapping m)
        Method to return if it is valid to select the specified mapping for the specified statement for this datastore adapter. Sometimes, dependent on the type of the column(s), and what other components are present in the statement, it may be invalid to select the mapping. This implementation returns true, so override in database-specific subclass as required.
        Specified by:
        validToSelectMappingInStatement in interface DatastoreAdapter
        Overrides:
        validToSelectMappingInStatement in class BaseDatastoreAdapter
        Parameters:
        stmt - The statement
        m - The mapping that we want to select
        Returns:
        Whether it is valid
      • getRangeByLimitEndOfStatementClause

        public java.lang.String getRangeByLimitEndOfStatementClause​(long offset,
                                                                    long count,
                                                                    boolean hasOrdering)
        Method to return the SQL to append to the WHERE clause of a SELECT statement to handle restriction of ranges using the OFFSET/FETCH keywords.
        Specified by:
        getRangeByLimitEndOfStatementClause in interface DatastoreAdapter
        Overrides:
        getRangeByLimitEndOfStatementClause in class BaseDatastoreAdapter
        Parameters:
        offset - The offset to return from
        count - The number of items to return
        hasOrdering - Whether there is ordering present
        Returns:
        The SQL to append to allow for ranges using OFFSET/FETCH.
      • getSequenceCreateStmt

        public java.lang.String getSequenceCreateStmt​(java.lang.String sequenceName,
                                                      java.lang.Integer min,
                                                      java.lang.Integer max,
                                                      java.lang.Integer start,
                                                      java.lang.Integer increment,
                                                      java.lang.Integer cacheSize)
        Accessor for the sequence statement to create the sequence.
        Specified by:
        getSequenceCreateStmt in interface DatastoreAdapter
        Overrides:
        getSequenceCreateStmt in class BaseDatastoreAdapter
        Parameters:
        sequenceName - Name of the sequence
        min - Minimum value for the sequence
        max - Maximum value for the sequence
        start - Start value for the sequence
        increment - Increment value for the sequence
        cacheSize - Cache size for the sequence
        Returns:
        The statement for getting the next id from the sequence
      • getSequenceNextStmt

        public java.lang.String getSequenceNextStmt​(java.lang.String sequenceName)
        Accessor for the statement for getting the next id from the sequence for this datastore.
        Specified by:
        getSequenceNextStmt in interface DatastoreAdapter
        Overrides:
        getSequenceNextStmt in class BaseDatastoreAdapter
        Parameters:
        sequenceName - Name of the sequence
        Returns:
        The statement for getting the next id for the sequence
      • getSQLMethodClass

        public java.lang.Class<? extends SQLMethod> getSQLMethodClass​(java.lang.String className,
                                                                      java.lang.String methodName,
                                                                      org.datanucleus.ClassLoaderResolver clr)
        Description copied from interface: DatastoreAdapter
        Accessor for the SQLMethod class for the query invocation of specified class + method name (if available for this datastore).
        Specified by:
        getSQLMethodClass in interface DatastoreAdapter
        Overrides:
        getSQLMethodClass in class BaseDatastoreAdapter
        Parameters:
        className - Name of the class (or null if this is a STATIC method)
        methodName - Method name
        clr - ClassLoader resolver, in case className is a subclass of a supported type
        Returns:
        The SQLMethod class (or null if not defined for this datastore).
      • loadColumnMappings

        protected void loadColumnMappings​(org.datanucleus.plugin.PluginManager mgr,
                                          org.datanucleus.ClassLoaderResolver clr)
        Load all datastore mappings for this RDBMS database.
        Overrides:
        loadColumnMappings in class BaseDatastoreAdapter
        Parameters:
        mgr - the PluginManager
        clr - the ClassLoaderResolver