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.
        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
      • 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