org.apache.openjpa.jdbc.sql
Class PostgresDictionary

java.lang.Object
  extended by org.apache.openjpa.jdbc.sql.DBDictionary
      extended by org.apache.openjpa.jdbc.sql.PostgresDictionary
All Implemented Interfaces:
JoinSyntaxes, Configurable, IdentifierConfiguration, ConnectionDecorator, LoggingConnectionDecorator.SQLWarningHandler

public class PostgresDictionary
extends DBDictionary

Dictionary for PostgreSQL.


Nested Class Summary
protected static class PostgresDictionary.PostgresConnection
          Connection wrapper to work around the postgres empty result set bug.
protected static class PostgresDictionary.PostgresPreparedStatement
          Statement wrapper to work around the postgres empty result set bug.
 
Nested classes/interfaces inherited from class org.apache.openjpa.jdbc.sql.DBDictionary
DBDictionary.SerializedData
 
Field Summary
 String allSequencesFromOneSchemaSQL
          SQL statement to load schema,name pairs from a named schema.
 String allSequencesSQL
          SQL statement to load all sequence schema,name pairs from all schemas.
 String isOwnedSequenceSQL
          Statement used to determine whether a sequence is owned.
 String namedSequenceFromOneSchemaSQL
          SQL statement to load a sequence's schema,name pair from one schema.
 String namedSequencesFromAllSchemasSQL
          SQL statement to load schema,name pairs for all sequences with a certain name from all schemas.
 boolean supportsSetFetchSize
          Some Postgres drivers do not support the Statement.setFetchSize(int) method.
 
Fields inherited from class org.apache.openjpa.jdbc.sql.DBDictionary
allowsAliasInBulkClause, arrayTypeName, autoAssignClause, autoAssignTypeName, batchLimit, bigintTypeName, binaryTypeName, bitLengthFunction, bitTypeName, blobBufferSize, blobTypeName, booleanTypeName, castFunction, catalogSeparator, CENTI, characterColumnSize, charTypeName, clobBufferSize, clobTypeName, closePoolSQL, concatenateDelimiter, concatenateFunction, conf, connected, CONS_NAME_AFTER, CONS_NAME_BEFORE, CONS_NAME_MID, constraintNameMode, createPrimaryKeys, crossJoinClause, currentDateFunction, currentTimeFunction, currentTimestampFunction, datePrecision, dateTypeName, DECI, decimalTypeName, delimitedCase, distinctCountColumnSeparator, distinctTypeName, doubleTypeName, driverVendor, dropTableSQL, fixedSizeTypeNames, fixedSizeTypeNameSet, floatTypeName, forUpdateClause, getStringVal, inClauseLimit, initializationSQL, innerJoinClause, integerTypeName, invalidColumnWordSet, isJDBC3, isJDBC4, javaObjectTypeName, joinSyntax, lastGeneratedKeyQuery, leadingDelimiter, log, longVarbinaryTypeName, longVarcharTypeName, maxAutoAssignNameLength, maxColumnNameLength, maxConstraintNameLength, maxEmbeddedBlobSize, maxEmbeddedClobSize, maxIndexesPerTable, maxIndexNameLength, maxTableNameLength, MICRO, MILLI, NAME_ANY, NAME_SEQUENCE, NAME_TABLE, nameConcatenator, NANO, nativeSequenceType, nextSequenceQuery, NO_BATCH, nullTypeName, numericTypeName, otherTypeName, outerJoinClause, platform, RANGE_POST_DISTINCT, RANGE_POST_LOCK, RANGE_POST_SELECT, RANGE_PRE_DISTINCT, rangePosition, realTypeName, refTypeName, reportsSuccessNoInfoOnBatchUpdates, requiresAliasForSubselect, requiresAutoCommitForMetaData, requiresCastForComparisons, requiresCastForMathFunctions, requiresConditionForCrossJoin, requiresSearchStringEscapeForLike, requiresTargetForDelete, reservedWords, reservedWordSet, SCHEMA_CASE_LOWER, SCHEMA_CASE_PRESERVE, SCHEMA_CASE_UPPER, schemaCase, searchStringEscape, SEC, selectWords, selectWordSet, sequenceNameSQL, sequenceSchemaSQL, sequenceSQL, setStringRightTruncationOn, simulateLocking, smallintTypeName, sqlStateCodes, storageLimitationsFatal, storeCharsAsNumbers, storeLargeNumbersAsStrings, stringLengthFunction, structTypeName, substringFunctionName, supportsAlterTableWithAddColumn, supportsAlterTableWithDropColumn, supportsAutoAssign, supportsCascadeDeleteAction, supportsCascadeUpdateAction, supportsCaseConversionForLob, supportsComments, supportsCorrelatedSubselect, supportsDefaultDeleteAction, supportsDefaultUpdateAction, supportsDeferredConstraints, supportsDelimitedIdentifiers, supportsForeignKeys, supportsForeignKeysComposite, supportsGeneralCaseExpression, supportsGetGeneratedKeys, supportsHaving, supportsLockingWithDistinctClause, supportsLockingWithInnerJoin, supportsLockingWithMultipleTables, supportsLockingWithOrderClause, supportsLockingWithOuterJoin, supportsLockingWithSelectRange, supportsModOperator, supportsMultipleNontransactionalResultSets, supportsNullDeleteAction, supportsNullTableForGetColumns, supportsNullTableForGetImportedKeys, supportsNullTableForGetIndexInfo, supportsNullTableForGetPrimaryKeys, supportsNullUniqueColumn, supportsNullUpdateAction, supportsParameterInSelect, supportsQueryTimeout, supportsRestrictDeleteAction, supportsRestrictUpdateAction, supportsSchemaForGetColumns, supportsSchemaForGetTables, supportsSelectEndIndex, supportsSelectForUpdate, supportsSelectFromFinalTable, supportsSelectStartIndex, supportsSimpleCaseExpression, supportsSubselect, supportsUniqueConstraints, supportsXMLColumn, systemSchemas, systemSchemaSet, systemTables, systemTableSet, tableForUpdateClause, tableTypes, timestampTypeName, timeTypeName, tinyintTypeName, toLowerCaseFunction, toUpperCaseFunction, trailingDelimiter, trimBothFunction, trimLeadingFunction, trimSchemaName, trimTrailingFunction, typeModifierSet, UNLIMITED, useGetBestRowIdentifierForPrimaryKeys, useGetBytesForBlobs, useGetObjectForBlobs, useGetStringForClobs, useSchemaName, useSetBytesForBlobs, useSetStringForClobs, useWildCardForCount, validationSQL, varbinaryTypeName, varcharTypeName, VENDOR_DATADIRECT, VENDOR_OTHER, xmlTypeEncoding, xmlTypeName
 
Fields inherited from interface org.apache.openjpa.jdbc.sql.JoinSyntaxes
SYNTAX_DATABASE, SYNTAX_SQL92, SYNTAX_TRADITIONAL
 
Constructor Summary
PostgresDictionary()
           
 
Method Summary
protected  void appendSelectRange(SQLBuffer buf, long start, long end, boolean subselect)
          If this dictionary can select ranges, use this method to append the range SQL.
 void appendXmlComparison(SQLBuffer buf, String op, FilterValue lhs, FilterValue rhs, boolean lhsxml, boolean rhsxml)
          Append XML comparison.
 void connectedConfiguration(Connection conn)
          Determine whether XML column is supported.
 Connection decorate(Connection conn)
          Decorate the given connection if needed.
 void deleteStream(JDBCStore store, Select sel)
           
 byte getByte(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
 String[] getCreateSequenceSQL(Sequence seq)
          Return a series of SQL statements to create the given sequence.
 Date getDate(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
protected  Connection getDbcpDelegate(Connection conn)
          Get the delegated connection from the given DBCP connection.
 int getInt(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
protected  org.postgresql.largeobject.LargeObjectManager getLargeObjectManager(DelegatingConnection conn)
          Get the native PostgreSQL Large Object Manager used for LOB handling.
 InputStream getLOBStream(JDBCStore store, ResultSet rs, int column)
           
 long getLong(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
 Object getObject(ResultSet rs, int column, Map map)
          Override the getOjbect() method to handle the case where the latest Postgres JDBC driver returns a org.postgresql.util.PGobject instead of a java.sql.Timestamp
protected  org.postgresql.PGConnection getPGConnection(DelegatingConnection conn)
          Get the native PostgreSQL connection from the given connection.
 String getPlaceholderValueString(Column col)
          Return a SQL string to act as a placeholder for the given column.
protected  String getSequencesSQL(DBIdentifier schemaName, DBIdentifier sequenceName)
           
protected  String getSequencesSQL(String schemaName, String sequenceName)
          Return the SQL needed to select the list of sequences.
 short getShort(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
 void indexOf(SQLBuffer buf, FilterValue str, FilterValue find, FilterValue start)
          Invoke this database's indexOf function.
 void insertBlobForStreamingLoad(Row row, Column col, JDBCStore store, Object ob, Select sel)
           
 boolean isOwnedSequence(DBIdentifier name, DBIdentifier schema, Connection conn)
          Uses the native Postgres function pg_get_serial_sequence to determine whether a sequence is owned by the database.
 boolean isSystemIndex(DBIdentifier name, Table table)
          This method is used to filter system indexes from database metadata.
 boolean isSystemIndex(String name, Table table)
          This method is used to filter system indexes from database metadata.
 boolean isSystemSequence(DBIdentifier name, DBIdentifier schema, boolean targetSchema)
          This method is used to filter system sequences from database metadata.
 boolean isSystemSequence(DBIdentifier name, DBIdentifier schema, boolean targetSchema, Connection conn)
          This method is used to filter system sequences from database metadata.
 boolean isSystemSequence(String name, String schema, boolean targetSchema)
          This method is used to filter system sequences from database metadata.
 boolean isSystemTable(DBIdentifier name, DBIdentifier schema, boolean targetSchema)
          This method is used to filter system tables from database metadata.
 boolean isSystemTable(String name, String schema, boolean targetSchema)
          This method is used to filter system tables from database metadata.
 void setBoolean(PreparedStatement stmnt, int idx, boolean val, Column col)
          Set the given value as a parameter to the statement.
 void setClobString(PreparedStatement stmnt, int idx, String val, Column col)
          If column is an XML column, PostgreSQL requires that its value is set by using PreparedStatement.setObject(int, Object, int) with Types.OTHER as the third argument.
 void setNull(PreparedStatement stmnt, int idx, int colType, Column col)
          Handle XML and bytea/oid columns in a PostgreSQL way.
protected  boolean supportsDeferredUniqueConstraints()
          Whether or not this dictionary supports deferred unique constraints.
 void updateBlob(Select sel, JDBCStore store, InputStream is)
           
 
Methods inherited from class org.apache.openjpa.jdbc.sql.DBDictionary
addCastAsType, addErrorCode, appendCast, appendLength, appendNumericCast, appendSelect, appendSize, appendUpdates, assertSupport, calculateValue, canOuterJoin, checkNameLength, closeDataSource, combineForeignKey, comment, comparison, configureNamingRules, convertSchemaCase, convertSchemaCase, copy, copy, createIndexIfNecessary, createIndexIfNecessary, delimitAll, endConfiguration, executeQuery, fromDBName, getAddColumnSQL, getAddForeignKeySQL, getAddPrimaryKeySQL, getArray, getAsciiStream, getBatchFetchSize, getBatchLimit, getBatchUpdateCount, getBigDecimal, getBigInteger, getBinaryStream, getBlob, getBlobObject, getBoolean, getBytes, getCalendar, getCastFunction, getCastFunction, getCatalogNameForMetadata, getCatalogNameForMetadata, getChar, getCharacterStream, getClob, getClobString, getColumnDBName, getColumnIdentifier, getColumnNameForMetadata, getColumnNameForMetadata, getColumns, getColumns, getConversionKey, getCreateIndexSQL, getCreateTableSQL, getCreateTableSQL, getDate, getDeclareColumnSQL, getDefaultIdentifierRule, getDefaultSchemaName, getDeleteTableContentsSQL, getDeleteTargets, getDelimitedCase, getDelimitIdentifiers, getDouble, getDropColumnSQL, getDropForeignKeySQL, getDropIndexSQL, getDropPrimaryKeySQL, getDropSequenceSQL, getDropTableSQL, getFloat, getForeignKeyConstraintSQL, getForUpdateClause, getFrom, getFromSelect, getFullIdentifier, getFullName, getFullName, getFullName, getGeneratedKey, getGeneratedKeySequenceName, getGenKeySeqName, getIdentifierConcatenator, getIdentifierDelimiter, getIdentifierRule, getIdentifierRules, getIdentityColumnName, getImportedKeys, getImportedKeys, getImportedKeys, getImportedKeys, getIndexInfo, getIndexInfo, getInvalidColumnWordSet, getIsNotNullSQL, getIsNullSQL, getJDBCType, getJDBCType, getJDBCType, getKey, getLeadingDelimiter, getLocale, getLog, getMarkerForInsertUpdate, getNamingUtil, getNumber, getPreferredType, getPrimaryKeyConstraintSQL, getPrimaryKeys, getPrimaryKeys, getPrimaryKeysFromBestRowIdentifier, getPrimaryKeysFromBestRowIdentifier, getPrimaryKeysFromGetPrimaryKeys, getPrimaryKeysFromGetPrimaryKeys, getRef, getSchemaCase, getSchemaNameForMetadata, getSchemaNameForMetadata, getSelectOperation, getSelects, getSelectTableAliases, getSequence, getSequences, getSequences, getString, getSupportsDelimitedIdentifiers, getSupportsXMLColumn, getTableNameForMetadata, getTableNameForMetadata, getTables, getTables, getTime, getTimestamp, getTrailingDelimiter, getTrimSchemaName, getTypeName, getTypeName, getUniqueConstraintSQL, getValidColumnName, getValidColumnName, getValidColumnName, getValidColumnName, getValidForeignKeyName, getValidForeignKeyName, getValidIndexName, getValidIndexName, getValidPrimaryKeyName, getValidSequenceName, getValidSequenceName, getValidTableName, getValidTableName, getValidUniqueName, getValidUniqueName, getVersionColumn, getVersionColumn, getWhere, getXMLTypeEncoding, handleWarning, insertClobForStreamingLoad, insertSize, isFatalException, isSelect, makeNameValid, makeNameValid, makeNameValid, makeNameValid, matchErrorState, mathFunction, narrow, needsToCreateIndex, needsToCreateIndex, newColumn, newForeignKey, newIndex, newPrimaryKey, newSequence, newStoreException, newTable, prepareStatement, putBytes, putChars, putString, refSchemaComponents, serialize, setArray, setAsciiStream, setBatchLimit, setBigDecimal, setBigInteger, setBinaryStream, setBlob, setBlobObject, setByte, setBytes, setCalendar, setChar, setCharacterStream, setClob, setConfiguration, setDate, setDate, setDefaultSchemaName, setDelimitedCase, setDelimitIdentifiers, setDouble, setFloat, setInt, setJoinSyntax, setLeadingDelimiter, setLocale, setLong, setNumber, setObject, setQueryTimeout, setRef, setShort, setStatementQueryTimeout, setString, setSupportsDelimitedIdentifiers, setSupportsXMLColumn, setTime, setTimeouts, setTimeouts, setTimestamp, setTrailingDelimiter, setTrimSchemaName, setTyped, setUnknown, setXMLTypeEncoding, shorten, startConfiguration, storageWarning, substring, supportsDeferredForeignKeyConstraints, supportsDeleteAction, supportsIsolationForUpdate, supportsLocking, supportsRandomAccessResultSet, supportsUpdateAction, toBulkOperation, toDBName, toDBName, toDelete, toLong, toNativeJoin, toOperation, toOperation, toSelect, toSelect, toSelect, toSelect, toSelect, toSelectCount, toSQL92Join, toTraditionalJoin, toUpdate, updateClob, validateBatchProcess, validateDBSpecificBatchProcess
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

allSequencesSQL

public String allSequencesSQL
SQL statement to load all sequence schema,name pairs from all schemas.


namedSequencesFromAllSchemasSQL

public String namedSequencesFromAllSchemasSQL
SQL statement to load schema,name pairs for all sequences with a certain name from all schemas.


allSequencesFromOneSchemaSQL

public String allSequencesFromOneSchemaSQL
SQL statement to load schema,name pairs from a named schema.


namedSequenceFromOneSchemaSQL

public String namedSequenceFromOneSchemaSQL
SQL statement to load a sequence's schema,name pair from one schema.


supportsSetFetchSize

public boolean supportsSetFetchSize
Some Postgres drivers do not support the Statement.setFetchSize(int) method.


isOwnedSequenceSQL

public String isOwnedSequenceSQL
Statement used to determine whether a sequence is owned. Owned sequences are managed by the database and are considered system sequences. parm 1: '' parm 2: ''

Constructor Detail

PostgresDictionary

public PostgresDictionary()
Method Detail

getDate

public Date getDate(ResultSet rs,
                    int column)
             throws SQLException
Description copied from class: DBDictionary
Convert the specified column of the SQL ResultSet to the proper java type. Converts the date from a Timestamp by default.

Overrides:
getDate in class DBDictionary
Throws:
SQLException

getByte

public byte getByte(ResultSet rs,
                    int column)
             throws SQLException
Description copied from class: DBDictionary
Convert the specified column of the SQL ResultSet to the proper java type.

Overrides:
getByte in class DBDictionary
Throws:
SQLException

getShort

public short getShort(ResultSet rs,
                      int column)
               throws SQLException
Description copied from class: DBDictionary
Convert the specified column of the SQL ResultSet to the proper java type.

Overrides:
getShort in class DBDictionary
Throws:
SQLException

getInt

public int getInt(ResultSet rs,
                  int column)
           throws SQLException
Description copied from class: DBDictionary
Convert the specified column of the SQL ResultSet to the proper java type.

Overrides:
getInt in class DBDictionary
Throws:
SQLException

getLong

public long getLong(ResultSet rs,
                    int column)
             throws SQLException
Description copied from class: DBDictionary
Convert the specified column of the SQL ResultSet to the proper java type.

Overrides:
getLong in class DBDictionary
Throws:
SQLException

setBoolean

public void setBoolean(PreparedStatement stmnt,
                       int idx,
                       boolean val,
                       Column col)
                throws SQLException
Description copied from class: DBDictionary
Set the given value as a parameter to the statement.

Overrides:
setBoolean in class DBDictionary
Throws:
SQLException

setNull

public void setNull(PreparedStatement stmnt,
                    int idx,
                    int colType,
                    Column col)
             throws SQLException
Handle XML and bytea/oid columns in a PostgreSQL way.

Overrides:
setNull in class DBDictionary
Throws:
SQLException

appendSelectRange

protected void appendSelectRange(SQLBuffer buf,
                                 long start,
                                 long end,
                                 boolean subselect)
Description copied from class: DBDictionary
If this dictionary can select ranges, use this method to append the range SQL.

Overrides:
appendSelectRange in class DBDictionary

indexOf

public void indexOf(SQLBuffer buf,
                    FilterValue str,
                    FilterValue find,
                    FilterValue start)
Description copied from class: DBDictionary
Invoke this database's indexOf function.

Overrides:
indexOf in class DBDictionary
Parameters:
buf - the SQL buffer to write the indexOf invocation to
str - a query value representing the target string
find - a query value representing the search string
start - a query value representing the start index, or null to start at the beginning

getCreateSequenceSQL

public String[] getCreateSequenceSQL(Sequence seq)
Description copied from class: DBDictionary
Return a series of SQL statements to create the given sequence. Returns CREATE SEQUENCE <sequence name>[ START WITH <start>] [ INCREMENT BY <increment>] by default.

Overrides:
getCreateSequenceSQL in class DBDictionary

supportsDeferredUniqueConstraints

protected boolean supportsDeferredUniqueConstraints()
Description copied from class: DBDictionary
Whether or not this dictionary supports deferred unique constraints. This implementation returns DBDictionary.supportsUniqueConstraints.

Overrides:
supportsDeferredUniqueConstraints in class DBDictionary

getSequencesSQL

protected String getSequencesSQL(String schemaName,
                                 String sequenceName)
Description copied from class: DBDictionary
Return the SQL needed to select the list of sequences.

Overrides:
getSequencesSQL in class DBDictionary

getSequencesSQL

protected String getSequencesSQL(DBIdentifier schemaName,
                                 DBIdentifier sequenceName)
Overrides:
getSequencesSQL in class DBDictionary

isSystemSequence

public boolean isSystemSequence(String name,
                                String schema,
                                boolean targetSchema)
Description copied from class: DBDictionary
This method is used to filter system sequences from database metadata. Return true if the given sequence represents a system sequence that should not appear in the schema definition. Returns true if system schema by default.

Overrides:
isSystemSequence in class DBDictionary
Parameters:
name - the table name
schema - the table schema; may be null
targetSchema - if true, then the given schema was listed by the user as one of his schemas

isSystemSequence

public boolean isSystemSequence(DBIdentifier name,
                                DBIdentifier schema,
                                boolean targetSchema)
Description copied from class: DBDictionary
This method is used to filter system sequences from database metadata. Return true if the given sequence represents a system sequence that should not appear in the schema definition. Returns true if system schema by default.

Overrides:
isSystemSequence in class DBDictionary
Parameters:
name - the table name
schema - the table schema; may be null
targetSchema - if true, then the given schema was listed by the user as one of his schemas

isSystemSequence

public boolean isSystemSequence(DBIdentifier name,
                                DBIdentifier schema,
                                boolean targetSchema,
                                Connection conn)
Description copied from class: DBDictionary
This method is used to filter system sequences from database metadata. Return true if the given sequence represents a system sequence that should not appear in the schema definition. Returns true if system schema by default.

Overrides:
isSystemSequence in class DBDictionary
Parameters:
name - the table name
schema - the table schema; may be null
targetSchema - if true, then the given schema was listed by the user as one of his schemas
conn - connection to the database

isOwnedSequence

public boolean isOwnedSequence(DBIdentifier name,
                               DBIdentifier schema,
                               Connection conn)
Uses the native Postgres function pg_get_serial_sequence to determine whether a sequence is owned by the database. Column types such as bigserial use a system assigned sequence generator of the format: table_column_seq

See Also:
http://www.postgresql.org/docs/current/static/functions-info.html

isSystemTable

public boolean isSystemTable(String name,
                             String schema,
                             boolean targetSchema)
Description copied from class: DBDictionary
This method is used to filter system tables from database metadata. Return true if the given table name represents a system table that should not appear in the schema definition. By default, returns true only if the given table is in the internal list of system tables, or if the given schema is in the list of system schemas and is not the target schema.

Overrides:
isSystemTable in class DBDictionary
Parameters:
name - the table name
schema - the table schema; may be null
targetSchema - if true, then the given schema was listed by the user as one of his schemas

isSystemTable

public boolean isSystemTable(DBIdentifier name,
                             DBIdentifier schema,
                             boolean targetSchema)
Description copied from class: DBDictionary
This method is used to filter system tables from database metadata. Return true if the given table name represents a system table that should not appear in the schema definition. By default, returns true only if the given table is in the internal list of system tables, or if the given schema is in the list of system schemas and is not the target schema.

Overrides:
isSystemTable in class DBDictionary
Parameters:
name - the table name
schema - the table schema; may be null
targetSchema - if true, then the given schema was listed by the user as one of his schemas

isSystemIndex

public boolean isSystemIndex(String name,
                             Table table)
Description copied from class: DBDictionary
This method is used to filter system indexes from database metadata. Return true if the given index name represents a system index that should not appear in the schema definition. Returns false by default.

Overrides:
isSystemIndex in class DBDictionary
Parameters:
name - the index name
table - the index table

isSystemIndex

public boolean isSystemIndex(DBIdentifier name,
                             Table table)
Description copied from class: DBDictionary
This method is used to filter system indexes from database metadata. Return true if the given index name represents a system index that should not appear in the schema definition. Returns false by default.

Overrides:
isSystemIndex in class DBDictionary
Parameters:
name - the index name
table - the index table

decorate

public Connection decorate(Connection conn)
                    throws SQLException
Description copied from class: DBDictionary
Decorate the given connection if needed. Some databases require special handling for JDBC bugs. This implementation issues any DBDictionary.initializationSQL that has been set for the dictionary but does not decorate the connection.

Specified by:
decorate in interface ConnectionDecorator
Overrides:
decorate in class DBDictionary
Throws:
SQLException

getLOBStream

public InputStream getLOBStream(JDBCStore store,
                                ResultSet rs,
                                int column)
                         throws SQLException
Overrides:
getLOBStream in class DBDictionary
Throws:
SQLException

insertBlobForStreamingLoad

public void insertBlobForStreamingLoad(Row row,
                                       Column col,
                                       JDBCStore store,
                                       Object ob,
                                       Select sel)
                                throws SQLException
Overrides:
insertBlobForStreamingLoad in class DBDictionary
Throws:
SQLException

updateBlob

public void updateBlob(Select sel,
                       JDBCStore store,
                       InputStream is)
                throws SQLException
Overrides:
updateBlob in class DBDictionary
Throws:
SQLException

deleteStream

public void deleteStream(JDBCStore store,
                         Select sel)
                  throws SQLException
Overrides:
deleteStream in class DBDictionary
Throws:
SQLException

connectedConfiguration

public void connectedConfiguration(Connection conn)
                            throws SQLException
Determine whether XML column is supported.

Overrides:
connectedConfiguration in class DBDictionary
Throws:
SQLException

setClobString

public void setClobString(PreparedStatement stmnt,
                          int idx,
                          String val,
                          Column col)
                   throws SQLException
If column is an XML column, PostgreSQL requires that its value is set by using PreparedStatement.setObject(int, Object, int) with Types.OTHER as the third argument.

Overrides:
setClobString in class DBDictionary
Throws:
SQLException

getObject

public Object getObject(ResultSet rs,
                        int column,
                        Map map)
                 throws SQLException
Override the getOjbect() method to handle the case where the latest Postgres JDBC driver returns a org.postgresql.util.PGobject instead of a java.sql.Timestamp

Overrides:
getObject in class DBDictionary
Parameters:
rs -
column -
map -
Returns:
Throws:
SQLException

appendXmlComparison

public void appendXmlComparison(SQLBuffer buf,
                                String op,
                                FilterValue lhs,
                                FilterValue rhs,
                                boolean lhsxml,
                                boolean rhsxml)
Append XML comparison.

Overrides:
appendXmlComparison in class DBDictionary
Parameters:
buf - the SQL buffer to write the comparison
op - the comparison operation to perform
lhs - the left hand side of the comparison
rhs - the right hand side of the comparison
lhsxml - indicates whether the left operand maps to XML
rhsxml - indicates whether the right operand maps to XML

getPlaceholderValueString

public String getPlaceholderValueString(Column col)
Return a SQL string to act as a placeholder for the given column.

Overrides:
getPlaceholderValueString in class DBDictionary

getLargeObjectManager

protected org.postgresql.largeobject.LargeObjectManager getLargeObjectManager(DelegatingConnection conn)
                                                                       throws SQLException
Get the native PostgreSQL Large Object Manager used for LOB handling.

Throws:
SQLException

getPGConnection

protected org.postgresql.PGConnection getPGConnection(DelegatingConnection conn)
Get the native PostgreSQL connection from the given connection. Various attempts of unwrapping are being performed.


getDbcpDelegate

protected Connection getDbcpDelegate(Connection conn)
Get the delegated connection from the given DBCP connection.

Parameters:
conn - must be a DBCP connection
Returns:
connection the DBCP connection delegates to


Copyright © 2006-2011 Apache Software Foundation. All Rights Reserved.