# Class PostgresAdapter

java.lang.Object
org.apache.cayenne.dba.JdbcAdapter
org.apache.cayenne.dba.postgres.PostgresAdapter

All Implemented Interfaces:
  `DbAdapter`

public class PostgresAdapter extends JdbcAdapter
DbAdapter implementation for PostgreSQL RDBMS

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `BYTEA`

  ### Fields inherited from class JdbcAdapter

  `caseInsensitiveCollations, defaultCharColumnLength, ejbqlTranslator, extendedTypes, logger, nativeColumnTypes, quotingStrategy, supportsBatchUpdates, supportsGeneratedKeys, supportsUniqueConstraints`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `PostgresAdapter(RuntimeProperties runtimeProperties, List<ExtendedType> defaultExtendedTypes, List<ExtendedType> userExtendedTypes, List<ExtendedTypeFactory> extendedTypeFactories, ValueObjectTypeRegistry valueObjectTypeRegistry)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `DbAttribute`
  `buildAttribute(String name, String typeName, int type, int maxLength, int scale, boolean allowNulls)`
  Creates and returns a DbAttribute based on supplied parameters (usually obtained from database metadata).
  `protected void`
  `configureExtendedTypes(ExtendedTypeMap map)`
  Installs appropriate ExtendedTypes as converters for passing values between JDBC and Java layers.
  `protected NativeColumnType[]`
  `createNativeTypes()`
  Returns the database-native types supported by this adapter.
  `PkGenerator`
  `createPkGenerator()`
  Returns a `PostgresPkGenerator`.
  `String`
  `createTable(DbEntity ent)`
  Customizes table creating procedure for PostgreSQL.
  `Collection<String>`
  `dropTableStatements(DbEntity table)`
  Adds the CASCADE option to the DROP TABLE clause.
  `SQLAction`
  `getAction(Query query, DataNode node)`
  Uses PostgresActionBuilder to create the right action.
  `ProcedureTranslator`
  `getProcedureTranslator(ProcedureQuery query, EntityResolver entityResolver)`
  Returns the `ProcedureTranslator` for the given query.
  `SQLTreeProcessor`
  `getSqlTreeProcessor()`
  `List<String>`
  `getSystemSchemas()`
  `int`
  `preferredBindingType(int jdbcType)`
  Returns the JDBC type that this adapter prefers to bind for a given mapped JDBC type.
  `boolean`
  `supportsCatalogsOnReverseEngineering()`
  Returns true.
  `boolean`
  `typeSupportsLength(int type)`
  Returns true if supplied type can have a length attribute as a part of column definition

  ### Methods inherited from class JdbcAdapter

  `bind, bindParameter, bindParameter, createEJBQLTranslator, createFkConstraint, createQuotingStrategy, createTableAppendColumn, createTableAppendPKClause, createUniqueConstraint, defaultCharColumnLength, externalTypesForJdbcType, getBatchTerminator, getEjbqlTranslator, getExtendedTypes, getQuotingStrategy, getQuotingStrategy, getSelectTranslator, getSQLLogger, getSystemCatalogs, getType, initExtendedTypes, nativeColumnTypes, setEjbqlTranslator, setEjbqlTranslatorFactory, setSupportsBatchUpdates, setSupportsGeneratedKeys, setSupportsUniqueConstraints, sizeAndPrecision, sizeAndScale, supportsBatchUpdates, supportsGeneratedKeys, supportsUniqueConstraints, tableTypeForTable, tableTypeForView, typeSupportsScale, unwrap`

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface DbAdapter

  `getEjbqlTranslatorFactory, preferredNativeColumnType, supportsGeneratedKeysForBatchInserts`

- ## Field Details

  - ### BYTEA

    public static final String BYTEA
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### PostgresAdapter

    public PostgresAdapter(RuntimeProperties runtimeProperties, List<ExtendedType> defaultExtendedTypes, List<ExtendedType> userExtendedTypes, List<ExtendedTypeFactory> extendedTypeFactories, ValueObjectTypeRegistry valueObjectTypeRegistry)

- ## Method Details

  - ### createNativeTypes

    protected NativeColumnType[] createNativeTypes()
    Description copied from class: `JdbcAdapter`
    Returns the database-native types supported by this adapter.
    Overrides:
      `createNativeTypes` in class `JdbcAdapter`

  - ### createPkGenerator

    public PkGenerator createPkGenerator()
    Returns a `PostgresPkGenerator`.
    Specified by:
      `createPkGenerator` in interface `DbAdapter`
    Overrides:
      `createPkGenerator` in class `JdbcAdapter`

  - ### getSqlTreeProcessor

    public SQLTreeProcessor getSqlTreeProcessor()
    Specified by:
      `getSqlTreeProcessor` in interface `DbAdapter`
    Overrides:
      `getSqlTreeProcessor` in class `JdbcAdapter`
    Returns:
      `SQLTreeProcessor` that can adjust SQL tree to specific database flavour
    Since:
      4.2

  - ### getAction

    public SQLAction getAction(Query query, DataNode node)
    Uses PostgresActionBuilder to create the right action.
    Specified by:
      `getAction` in interface `DbAdapter`
    Overrides:
      `getAction` in class `JdbcAdapter`
    Since:
      1.2

  - ### getProcedureTranslator

    public ProcedureTranslator getProcedureTranslator(ProcedureQuery query, EntityResolver entityResolver)
    Description copied from interface: `DbAdapter`
    Returns the `ProcedureTranslator` for the given query. The default implementation ignores the query, but the parameter is retained so adapters can pick a translator based on it.
    Specified by:
      `getProcedureTranslator` in interface `DbAdapter`
    Overrides:
      `getProcedureTranslator` in class `JdbcAdapter`
    Since:
      5.0

  - ### configureExtendedTypes

    protected void configureExtendedTypes(ExtendedTypeMap map)
    Installs appropriate ExtendedTypes as converters for passing values between JDBC and Java layers.
    Overrides:
      `configureExtendedTypes` in class `JdbcAdapter`

  - ### buildAttribute

    public DbAttribute buildAttribute(String name, String typeName, int type, int maxLength, int scale, boolean allowNulls)
    Description copied from interface: `DbAdapter`
    Creates and returns a DbAttribute based on supplied parameters (usually obtained from database metadata).
    Specified by:
      `buildAttribute` in interface `DbAdapter`
    Overrides:
      `buildAttribute` in class `JdbcAdapter`
    Parameters:
      `name` - database column name
      `typeName` - database specific type name, may be used as a hint to determine the right JDBC type.
      `type` - JDBC column type
      `maxLength` - database column size (ignored if less than zero)
      `scale` - database column scale, i.e. the number of decimal digits (ignored if less than zero)
      `allowNulls` - database column nullable parameter

  - ### preferredBindingType

    public int preferredBindingType(int jdbcType)
    Description copied from interface: `DbAdapter`
    Returns the JDBC type that this adapter prefers to bind for a given mapped JDBC type. The default implementation is an identity function; adapters whose drivers require a different type (e.g. remapping the `N*` character types to their non-national counterparts) override this. The returned type is resolved into the `PSParameter` at binding creation time, so it matches the type actually sent to the PreparedStatement.

  - ### createTable

    public String createTable(DbEntity ent)
    Customizes table creating procedure for PostgreSQL. One difference with generic implementation is that "bytea" type has no explicit length unlike similar binary types in other databases.
    Specified by:
      `createTable` in interface `DbAdapter`
    Overrides:
      `createTable` in class `JdbcAdapter`
    Since:
      1.0.2

  - ### typeSupportsLength

    public boolean typeSupportsLength(int type)
    Description copied from class: `JdbcAdapter`
    Returns true if supplied type can have a length attribute as a part of column definition
    Specified by:
      `typeSupportsLength` in interface `DbAdapter`
    Overrides:
      `typeSupportsLength` in class `JdbcAdapter`

  - ### dropTableStatements

    public Collection<String> dropTableStatements(DbEntity table)
    Adds the CASCADE option to the DROP TABLE clause.
    Specified by:
      `dropTableStatements` in interface `DbAdapter`
    Overrides:
      `dropTableStatements` in class `JdbcAdapter`

  - ### supportsCatalogsOnReverseEngineering

    public boolean supportsCatalogsOnReverseEngineering()
    Description copied from class: `JdbcAdapter`
    Returns true.
    Specified by:
      `supportsCatalogsOnReverseEngineering` in interface `DbAdapter`
    Overrides:
      `supportsCatalogsOnReverseEngineering` in class `JdbcAdapter`

  - ### getSystemSchemas

    public List<String> getSystemSchemas()
    Specified by:
      `getSystemSchemas` in interface `DbAdapter`
    Overrides:
      `getSystemSchemas` in class `JdbcAdapter`
    Returns:
      list of system schemas