java.lang.Object
org.nuxeo.ecm.core.storage.sql.jdbc.dialect.Dialect
org.nuxeo.ecm.core.storage.sql.jdbc.dialect.DialectDB2

public class DialectDB2 extends Dialect
DB2-specific dialect.
  • Field Details

    • fulltextParameters

      protected final String fulltextParameters
    • usersSeparator

      protected String usersSeparator
  • Constructor Details

  • Method Details

    • getCascadeDropConstraintsString

      public String getCascadeDropConstraintsString()
      Overrides:
      getCascadeDropConstraintsString in class Dialect
    • getJDBCTypeAndString

      public Dialect.JDBCInfo getJDBCTypeAndString(ColumnType type)
      Description copied from class: Dialect
      Gets the JDBC type and string from Nuxeo's type abstraction.
      Specified by:
      getJDBCTypeAndString in class Dialect
    • isAllowedConversion

      public boolean isAllowedConversion(int expected, int actual, String actualName, int actualSize)
      Description copied from class: Dialect
      Check mismatches between expected and actual JDBC types read from database introspection.
      Overrides:
      isAllowedConversion in class Dialect
    • setToPreparedStatement

      public void setToPreparedStatement(PreparedStatement ps, int index, Serializable value, Column column) throws SQLException
      Specified by:
      setToPreparedStatement in class Dialect
      Throws:
      SQLException
    • getFromResultSet

      public Serializable getFromResultSet(ResultSet rs, int index, Column column) throws SQLException
      Specified by:
      getFromResultSet in class Dialect
      Throws:
      SQLException
    • getMaxNameSize

      protected int getMaxNameSize()
      Overrides:
      getMaxNameSize in class Dialect
    • supportsReadAcl

      public boolean supportsReadAcl()
      Description copied from class: Dialect
      Does the dialect support an optimized read security checks
      Overrides:
      supportsReadAcl in class Dialect
    • isClusteringSupported

      public boolean isClusteringSupported()
      Description copied from class: Dialect
      Checks that clustering is supported.
      Overrides:
      isClusteringSupported in class Dialect
    • supportsPaging

      public boolean supportsPaging()
      Description copied from class: Dialect
      Indicates if dialect supports paging
      Overrides:
      supportsPaging in class Dialect
      Returns:
      true if the dialect supports paging
    • addPagingClause

      public String addPagingClause(String sql, long limit, long offset)
      Description copied from class: Dialect
      Returns the SQL query with a paging clause
      Overrides:
      addPagingClause in class Dialect
    • getSQLStatementsFilename

      public String getSQLStatementsFilename()
      Description copied from class: Dialect
      Gets the name of the file containing the SQL statements.
      Specified by:
      getSQLStatementsFilename in class Dialect
    • getTestSQLStatementsFilename

      public String getTestSQLStatementsFilename()
      Specified by:
      getTestSQLStatementsFilename in class Dialect
    • getSQLStatementsProperties

      public Map<String,Serializable> getSQLStatementsProperties(Model model, Database database)
      Description copied from class: Dialect
      Gets the properties to use with the SQL statements.
      Specified by:
      getSQLStatementsProperties in class Dialect
    • getValidationQuery

      public String getValidationQuery()
      Description copied from class: Dialect
      A query that, when executed, will make at least a round-trip to the server to check that the connection is alive.

      The query should throw an error if the connection is dead.

      Overrides:
      getValidationQuery in class Dialect
    • getUsersSeparator

      public String getUsersSeparator()
    • getFulltextIndexedColumns

      public int getFulltextIndexedColumns()
      Description copied from class: Dialect
      Specifies what columns of the fulltext table have to be indexed.
      Specified by:
      getFulltextIndexedColumns in class Dialect
      Returns:
      0 for none, 1 for the synthetic one, 2 for the individual ones
    • getMaterializeFulltextSyntheticColumn

      public boolean getMaterializeFulltextSyntheticColumn()
      Description copied from class: Dialect
      Does the fulltext synthetic column have to be materialized.
      Specified by:
      getMaterializeFulltextSyntheticColumn in class Dialect
    • getCreateFulltextIndexSql

      public String getCreateFulltextIndexSql(String indexName, String quotedIndexName, Table table, List<Column> columns, Model model)
      Description copied from class: Dialect
      Gets a CREATE INDEX statement for a fulltext index.
      Specified by:
      getCreateFulltextIndexSql in class Dialect
    • getDialectFulltextQuery

      public String getDialectFulltextQuery(String query)
      Description copied from class: Dialect
      Get the dialect-specific version of a fulltext query.
      Specified by:
      getDialectFulltextQuery in class Dialect
      Parameters:
      query - the CMIS-syntax-based fulltext query string
      Returns:
      the dialect native fulltext query string
    • getFulltextScoredMatchInfo

      public Dialect.FulltextMatchInfo getFulltextScoredMatchInfo(String fulltextQuery, String indexName, int nthMatch, Column mainColumn, Model model, Database database)
      Description copied from class: Dialect
      Gets the SQL information needed to do a a fulltext match, either with a direct expression in the WHERE clause, or using a join with an additional table.
      Specified by:
      getFulltextScoredMatchInfo in class Dialect
    • supportsUpdateFrom

      public boolean supportsUpdateFrom()
      Description copied from class: Dialect
      Does the dialect support UPDATE t SET ... FROM t, u WHERE ... ?
      Specified by:
      supportsUpdateFrom in class Dialect
    • doesUpdateFromRepeatSelf

      public boolean doesUpdateFromRepeatSelf()
      Description copied from class: Dialect
      When doing an UPDATE t SET ... FROM t, u WHERE ..., does the FROM clause need to repeate the updated table (t).
      Specified by:
      doesUpdateFromRepeatSelf in class Dialect
    • getSecurityCheckSql

      public String getSecurityCheckSql(String idColumnName)
      Description copied from class: Dialect
      Gets the expression to use to check security.
      Specified by:
      getSecurityCheckSql in class Dialect
      Parameters:
      idColumnName - the quoted name of the id column to use
      Returns:
      an SQL expression with two parameters (principals and permissions) that is true if access is allowed
    • getInTreeSql

      public String getInTreeSql(String idColumnName, String id)
      Description copied from class: Dialect
      Gets the expression to use to check tree membership.
      Specified by:
      getInTreeSql in class Dialect
      Parameters:
      idColumnName - the quoted name of the id column to use
      id - the id, to check syntax with respect to specialized id column types
      Returns:
      an SQL expression with one parameters for the based id that is true if the document is under base id, or null if the query cannot match
    • getUpsertSql

      public String getUpsertSql(List<Column> columns, List<Serializable> values, List<Column> outColumns, List<Serializable> outValues)
      Description copied from class: Dialect
      Gets the SQL string for an UPSERT expression.
      Specified by:
      getUpsertSql in class Dialect
      Parameters:
      columns - the columns to upsert (first one being the key column)
      values - the values to upsert (first one being the key value)
      outColumns - the columns to use in the prepared statement
      outValues - the values to use in the prepared statement
    • checkStoredProcedure

      public List<String> checkStoredProcedure(String procName, String procCreate, String ddlMode, Connection connection, JDBCLogger logger, Map<String,Serializable> properties) throws SQLException
      Description copied from class: Dialect
      Checks if a given stored procedure exists and is identical to the passed creation SQL.

      There are 3 cases to deal with, and actions to perform:

      • the stored procedure doesn't exist, and must be created (create the stored procedure);
      • the stored procedure exists but is not up to date (drop the old stored procedure and re-create it);
      • the stored procedure exists and is up to date (nothing to do).

      When there is nothing to do, null is returned. Otherwise the returned value is a list of SQL statements to execute. Note that the SQL statements will include also INSERT statements to be executed to remember the creation SQL itself.

      Specified by:
      checkStoredProcedure in class Dialect
      Parameters:
      procName - the stored procedure name
      procCreate - the creation SQL for the stored procedure
      ddlMode - the DDL mode
      connection - the connection
      logger - the logger
      properties - the statement execution properties
      Returns:
      a list of SQL statements
      Throws:
      SQLException