Class PostgreSQLDialect

java.lang.Object
nablarch.core.db.dialect.DefaultDialect
nablarch.core.db.dialect.PostgreSQLDialect
All Implemented Interfaces:
Dialect

@Published(tag="architect") public class PostgreSQLDialect extends DefaultDialect
PostgreSQL用のSQL方言クラス。
Author:
tani takanori
  • Constructor Details

    • PostgreSQLDialect

      public PostgreSQLDialect()
  • Method Details

    • supportsIdentity

      public boolean supportsIdentity()
      IDENTITY(オートインクリメントカラム)が使用できるか否か。

      PostgreSQLでは、IDENTITYカラム(serial)を使用できるため、 trueを返す。

      Specified by:
      supportsIdentity in interface Dialect
      Overrides:
      supportsIdentity in class DefaultDialect
      Returns:
      falseを返す。
    • supportsIdentityWithBatchInsert

      public boolean supportsIdentityWithBatchInsert()
      batch insert時にIDENTITY(オートインクリメントカラム)が使用できるか否か。

      PostgreSQLでは、batch insertでIDENTITYカラムが使用できるため、trueを返す。

      Specified by:
      supportsIdentityWithBatchInsert in interface Dialect
      Overrides:
      supportsIdentityWithBatchInsert in class DefaultDialect
      Returns:
      falseを返す。
    • supportsSequence

      public boolean supportsSequence()
      SEQUENCEが使用できるか否か。

      PostgreSQLでは、シーケンスオブジェクトが使用できるので、 trueを返す。

      Specified by:
      supportsSequence in interface Dialect
      Overrides:
      supportsSequence in class DefaultDialect
      Returns:
      falseを返す。
    • supportsOffset

      public boolean supportsOffset()
      SQL文でのオフセット指定が使用できるか否か

      PostgreSQLでは、offsetがサポートされるのでtrueを返す。

      Specified by:
      supportsOffset in interface Dialect
      Overrides:
      supportsOffset in class DefaultDialect
      Returns:
      falseを返す。
    • isDuplicateException

      public boolean isDuplicateException(SQLException sqlException)
      SQL例外が一意制約違反による例外か否か。

      SQLException.getSQLState()が23505(unique_violation:一意制約違反)の場合、一意制約違反とする。

      Specified by:
      isDuplicateException in interface Dialect
      Overrides:
      isDuplicateException in class DefaultDialect
      Parameters:
      sqlException - SQL例外
      Returns:
      falseを返す。
    • isTransactionTimeoutError

      public boolean isTransactionTimeoutError(SQLException sqlException)
      SQL例外がトランザクションタイムアウトと判断すべき例外か否か。

      PostgreSQLの場合、以下例外の場合タイムアウト対象の例外として扱う。

      • SQLState:57014(query_canceled:クエリタイムアウト時に送出される例外)
      Specified by:
      isTransactionTimeoutError in interface Dialect
      Overrides:
      isTransactionTimeoutError in class DefaultDialect
      Parameters:
      sqlException - SQL例外
      Returns:
      falseを返す。
    • buildSequenceGeneratorSql

      public String buildSequenceGeneratorSql(String sequenceName)
      シーケンスオブジェクトの次の値を取得するSQL文を構築する。

      シーケンス採番はサポートしない。

      nextval関数を使用して、次の順序を取得するSQL文を構築する。

      Specified by:
      buildSequenceGeneratorSql in interface Dialect
      Overrides:
      buildSequenceGeneratorSql in class DefaultDialect
      Parameters:
      sequenceName - シーケンス名
      Returns:
      シーケンスオブジェクトの次の値を取得するSQL文
    • convertPaginationSql

      public String convertPaginationSql(String sql, SelectOption selectOption)
      SQL文を変換せずに返す。

      offsetlimitを使用したSQL文に変換する。

      Specified by:
      convertPaginationSql in interface Dialect
      Overrides:
      convertPaginationSql in class DefaultDialect
      Parameters:
      sql - SQL文
      selectOption - 検索時のオプション
      Returns:
      変換したSQL文
    • getPingSql

      public String getPingSql()
      Description copied from class: DefaultDialect
      ping用のSQL文を返す。

      データベースへの死活チェックを行うための、ping用SQL文を生成する。 デフォルト実装では、本メソッドはサポートしない。

      Specified by:
      getPingSql in interface Dialect
      Overrides:
      getPingSql in class DefaultDialect
      Returns:
      ping用のSQL文