Class Postgres

    • Field Detail

      • DEFAULT_SCHEMA

        public static final java.lang.String DEFAULT_SCHEMA
        postgres' default schema.
        See Also:
        Constant Field Values
      • 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
      • RESERVED_WORDS_PG

        public static final java.lang.String[] RESERVED_WORDS_PG
        array of additional reserved words.
    • Constructor Detail

      • Postgres

        public Postgres()
    • 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.
        If multiple backend implementations are provided for the same database type, only one backend should match the URL. The others must be selected via name.
        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
      • isReservedSchemaName

        public boolean isReservedSchemaName​(java.lang.String name)
        Description copied from interface: Backend
        Checks whether this is a reserved schema name for this backend.
        Specified by:
        isReservedSchemaName in interface Backend
        Overrides:
        isReservedSchemaName in class AbstractBackend
        Parameters:
        name - the schema name
        Returns:
        true if reserved by backend
      • isClobSupported

        public boolean isClobSupported()
        Description copied from interface: Backend
        Returns whether the backend support CLOB types.
        If not, it will be emulated as VARCHAR with the maximum possible size.
        Specified by:
        isClobSupported in interface Backend
        Overrides:
        isClobSupported in class AbstractBackend
        Returns:
        true if supported, false if treat as varchar
      • needTxForFetchsize

        public boolean needTxForFetchsize()
        Description copied from interface: Backend
        Checks for the (postgres) bug that fetchsize is ignored if not within a new transaction.
        Specified by:
        needTxForFetchsize in interface Backend
        Overrides:
        needTxForFetchsize in class AbstractBackend
        Returns:
        true if start tx
      • 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
      • getDefaultSize

        public int getDefaultSize​(SqlType sqlType)
        Description copied from interface: Backend
        Gets the default size if no size given in model.
        Specified by:
        getDefaultSize in interface Backend
        Overrides:
        getDefaultSize in class AbstractBackend
        Parameters:
        sqlType - the SQL-type
        Returns:
        the default size, 0 if no default size
      • getDefaultSchema

        public java.lang.String getDefaultSchema()
        Description copied from interface: Backend
        Gets the default schema name.
        Some backends store the objects in a default schema, if no explicit schema is given.
        Specified by:
        getDefaultSchema in interface Backend
        Overrides:
        getDefaultSchema in class AbstractBackend
        Returns:
        the defailt schema, null if none
      • 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
      • 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
      • sqlNextFromSequene

        public java.lang.String sqlNextFromSequene​(java.lang.String name)
        Description copied from interface: Backend
        Creates the SQL string to retrieve the next id from a sequence.
        Specified by:
        sqlNextFromSequene in interface Backend
        Overrides:
        sqlNextFromSequene in class AbstractSql92Backend
        Parameters:
        name - the name of the sequence
        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
      • 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
      • isDropIfExistsSupported

        protected boolean isDropIfExistsSupported()
        Description copied from class: AbstractBackend
        Adds "IF EXISTS" to drop clauses, if supported by the backend.
        Makes migration a little more robust in case the same SQL scripts are applied to different databases than those used to generate the migration scripts for.
        Overrides:
        isDropIfExistsSupported in class AbstractBackend
        Returns:
        true if supported